mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +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()
|
/datum/pipe_network/Destroy()
|
||||||
for(var/datum/pipeline/pipeline in line_members) //This will remove the pipeline references for us
|
if(line_members)
|
||||||
pipeline.network = null
|
for(var/datum/pipeline/pipeline in line_members) //This will remove the pipeline references for us
|
||||||
line_members = null
|
pipeline.network = null
|
||||||
for(var/obj/machinery/atmospherics/objects in normal_members) //Procs for the different bases will remove the references
|
line_members = null
|
||||||
objects.unassign_network(src)
|
|
||||||
normal_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
|
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
|
||||||
|
|||||||
@@ -15,8 +15,9 @@
|
|||||||
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
|
||||||
temporarily_store_air()
|
if(air.total_moles)
|
||||||
|
temporarily_store_air()
|
||||||
qdel(air)
|
qdel(air)
|
||||||
air = null
|
air = null
|
||||||
//Null the fuck out of all these references
|
//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)
|
/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
|
||||||
|
|||||||
Reference in New Issue
Block a user