diff --git a/code/ATMOSPHERICS/pipes/manifold.dm b/code/ATMOSPHERICS/pipes/manifold.dm index 8ba5db9fbd5..085c721ec38 100644 --- a/code/ATMOSPHERICS/pipes/manifold.dm +++ b/code/ATMOSPHERICS/pipes/manifold.dm @@ -62,7 +62,6 @@ /obj/machinery/atmospherics/pipe/manifold/hide(var/i) if(level == 1 && istype(loc, /turf/simulated)) invisibility = i ? 101 : 0 - update_icon() /obj/machinery/atmospherics/pipe/manifold/pipeline_expansion() return list(node1, node2, node3) @@ -121,14 +120,8 @@ alpha = 255 - if(!node1 && !node2 && !node3) - var/turf/T = get_turf(src) - new /obj/item/pipe(loc, make_from=src) - for (var/obj/machinery/meter/meter in T) - if (meter.target == src) - new /obj/item/pipe_meter(T) - qdel(meter) - qdel(src) + if(!check_nodes_exist()) + return else overlays.Cut() overlays += icon_manager.get_atmos_icon("manifold", , pipe_color, "core" + icon_connect_type) @@ -155,6 +148,14 @@ ..() update_icon() +// A check to make sure both nodes exist - self-delete if they aren't present +/obj/machinery/atmospherics/pipe/manifold/check_nodes_exist() + if(!node1 && !node2 && !node3) + Deconstruct() + return 0 // 0: No nodes exist + // 1: 1-3 nodes exist, we continue existing + return 1 + /obj/machinery/atmospherics/pipe/manifold/visible icon_state = "map" level = 2 diff --git a/code/ATMOSPHERICS/pipes/pipe.dm b/code/ATMOSPHERICS/pipes/pipe.dm index 488f4d65c6a..f319e563835 100644 --- a/code/ATMOSPHERICS/pipes/pipe.dm +++ b/code/ATMOSPHERICS/pipes/pipe.dm @@ -85,3 +85,7 @@ return node.pipe_color else return pipe_color + +// A check to make sure both nodes exist - self-delete if they aren't present +/obj/machinery/atmospherics/pipe/proc/check_nodes_exist() + return diff --git a/code/ATMOSPHERICS/pipes/simple/pipe_simple.dm b/code/ATMOSPHERICS/pipes/simple/pipe_simple.dm index fbd5f85b6c5..1daa8e4dcaa 100644 --- a/code/ATMOSPHERICS/pipes/simple/pipe_simple.dm +++ b/code/ATMOSPHERICS/pipes/simple/pipe_simple.dm @@ -66,6 +66,7 @@ connected_to = c node2 = target break + var/turf/T = loc // hide if turf is not intact hide(T.intact) update_icon() @@ -141,23 +142,24 @@ overlays.Cut() - if(!node1 && !node2) - var/turf/T = get_turf(src) - new /obj/item/pipe(loc, make_from=src) - for (var/obj/machinery/meter/meter in T) - if (meter.target == src) - new /obj/item/pipe_meter(T) - qdel(meter) - qdel(src) - else if(node1 && node2) + if(!check_nodes_exist()) // such a stupid place for a self-deletion check + return + if(node1 && node2) overlays += icon_manager.get_atmos_icon("pipe", , pipe_color, pipe_icon + "intact" + icon_connect_type) else overlays += icon_manager.get_atmos_icon("pipe", , pipe_color, pipe_icon + "exposed[node1?1:0][node2?1:0]" + icon_connect_type) +// A check to make sure both nodes exist - self-delete if they aren't present +/obj/machinery/atmospherics/pipe/simple/check_nodes_exist() + if(!node1 && !node2) + Deconstruct() + return 0 // 0: No nodes exist + // 1: 1-2 nodes exist, we continue existing + return 1 + /obj/machinery/atmospherics/pipe/simple/update_underlays() return /obj/machinery/atmospherics/pipe/simple/hide(var/i) if(level == 1 && istype(loc, /turf/simulated)) invisibility = i ? 101 : 0 - update_icon() diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 74df6ac7b17..3e8bd44f127 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -174,9 +174,6 @@ if(!defer_change) W.AfterChange() - if(istype(W, /turf/simulated)) - W:Assimilate_Air() - W.RemoveLattice() W.blueprint_data = old_blueprint_data for(var/turf/space/S in range(W,1))