Fixes pipelines and their gas_mixtures hard deleting (#27551)

* WIP

* Now it works, I think
This commit is contained in:
Exxion
2020-08-14 10:49:17 -04:00
committed by GitHub
parent 182668857e
commit d8eb32575b
2 changed files with 31 additions and 9 deletions

View File

@@ -17,13 +17,28 @@
..() ..()
/datum/pipe_network/Destroy() /datum/pipe_network/Destroy()
if(line_members)
for(var/datum/pipeline/pipeline in line_members) //This will remove the pipeline references for us for(var/datum/pipeline/pipeline in line_members) //This will remove the pipeline references for us
pipeline.network = null pipeline.network = null
line_members = 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 for(var/obj/machinery/atmospherics/objects in normal_members) //Procs for the different bases will remove the references
objects.unassign_network(src) objects.unassign_network(src)
normal_members = null normal_members = null
pipe_networks -= src 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() /datum/pipe_network/proc/process()
@@ -73,6 +88,9 @@
for(var/datum/pipeline/line_member in giver.line_members) for(var/datum/pipeline/line_member in giver.line_members)
line_member.network = src line_member.network = src
giver.line_members = null
giver.normal_members = null
qdel(giver)
update_network_gases() update_network_gases()
return 1 return 1

View File

@@ -15,7 +15,8 @@
if(network) //For the pipenet rebuild if(network) //For the pipenet rebuild
qdel(network) qdel(network)
network = null network = null
if(air && air.volume) //For the pipeline rebuild next tick if(air) //For the pipeline rebuild next tick
if(air.total_moles)
temporarily_store_air() temporarily_store_air()
qdel(air) qdel(air)
air = null air = null
@@ -101,9 +102,12 @@
/datum/pipeline/proc/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) /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 return 0
if(network && (network != new_network))
return new_network.merge(network)
new_network.line_members += src new_network.line_members += src
network = new_network network = new_network