mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 02:16:05 +00:00
Fixes pipelines and their gas_mixtures hard deleting (#27551)
* WIP * Now it works, I think
This commit is contained in:
@@ -17,13 +17,28 @@
|
||||
..()
|
||||
|
||||
/datum/pipe_network/Destroy()
|
||||
for(var/datum/pipeline/pipeline in line_members) //This will remove the pipeline references for us
|
||||
pipeline.network = null
|
||||
line_members = null
|
||||
for(var/obj/machinery/atmospherics/objects in normal_members) //Procs for the different bases will remove the references
|
||||
objects.unassign_network(src)
|
||||
normal_members = null
|
||||
if(line_members)
|
||||
for(var/datum/pipeline/pipeline in line_members) //This will remove the pipeline references for us
|
||||
pipeline.network = null
|
||||
line_members = null
|
||||
|
||||
if(normal_members)
|
||||
for(var/obj/machinery/atmospherics/objects in normal_members) //Procs for the different bases will remove the references
|
||||
objects.unassign_network(src)
|
||||
normal_members = null
|
||||
|
||||
pipe_networks -= src
|
||||
|
||||
if(air_transient)
|
||||
qdel(air_transient)
|
||||
air_transient = null
|
||||
|
||||
if(radiate)
|
||||
qdel(radiate)
|
||||
radiate = null
|
||||
|
||||
gases = null
|
||||
|
||||
..()
|
||||
|
||||
/datum/pipe_network/proc/process()
|
||||
@@ -73,6 +88,9 @@
|
||||
for(var/datum/pipeline/line_member in giver.line_members)
|
||||
line_member.network = src
|
||||
|
||||
giver.line_members = null
|
||||
giver.normal_members = null
|
||||
qdel(giver)
|
||||
|
||||
update_network_gases()
|
||||
return 1
|
||||
|
||||
@@ -15,8 +15,9 @@
|
||||
if(network) //For the pipenet rebuild
|
||||
qdel(network)
|
||||
network = null
|
||||
if(air && air.volume) //For the pipeline rebuild next tick
|
||||
temporarily_store_air()
|
||||
if(air) //For the pipeline rebuild next tick
|
||||
if(air.total_moles)
|
||||
temporarily_store_air()
|
||||
qdel(air)
|
||||
air = null
|
||||
//Null the fuck out of all these references
|
||||
@@ -101,9 +102,12 @@
|
||||
/datum/pipeline/proc/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference)
|
||||
|
||||
|
||||
if(new_network.line_members.Find(src))
|
||||
if(src in new_network.line_members)
|
||||
return 0
|
||||
|
||||
if(network && (network != new_network))
|
||||
return new_network.merge(network)
|
||||
|
||||
new_network.line_members += src
|
||||
|
||||
network = new_network
|
||||
|
||||
Reference in New Issue
Block a user