From 3ba2cd9e73e0d64526ba196fe25a0ba1ea5125d5 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Wed, 26 May 2021 16:50:01 +0200 Subject: [PATCH] [MIRROR] Fixes check plumbing admin verb (#5969) * Fixes check plumbing admin verb (#59263) * - fixes check plumbing admin verb * oof Co-authored-by: norill <4> * Fixes check plumbing admin verb Co-authored-by: norill --- code/modules/admin/verbs/atmosdebug.dm | 15 ++++---- .../machinery/pipes/layermanifold.dm | 35 ++++++++----------- 2 files changed, 24 insertions(+), 26 deletions(-) diff --git a/code/modules/admin/verbs/atmosdebug.dm b/code/modules/admin/verbs/atmosdebug.dm index 4bf3267321a..c0d290e0f67 100644 --- a/code/modules/admin/verbs/atmosdebug.dm +++ b/code/modules/admin/verbs/atmosdebug.dm @@ -11,15 +11,18 @@ if(pipe.z && (!pipe.nodes || !pipe.nodes.len || (null in pipe.nodes))) to_chat(usr, "Unconnected [pipe.name] located at [ADMIN_VERBOSEJMP(pipe)]", confidential = TRUE) - //Manifolds - for(var/obj/machinery/atmospherics/pipe/smart/manifold4w/pipe in GLOB.machines) + //Pipes + for(var/obj/machinery/atmospherics/pipe/pipe in GLOB.machines) + if(istype(pipe, /obj/machinery/atmospherics/pipe/smart) || istype(pipe, /obj/machinery/atmospherics/pipe/layer_manifold)) + continue if(pipe.z && (!pipe.nodes || !pipe.nodes.len || (null in pipe.nodes))) to_chat(usr, "Unconnected [pipe.name] located at [ADMIN_VERBOSEJMP(pipe)]", confidential = TRUE) - //Pipes - for(var/obj/machinery/atmospherics/pipe/smart/manifold4w/pipe in GLOB.machines) - if(pipe.z && (!pipe.nodes || !pipe.nodes.len || (null in pipe.nodes))) - to_chat(usr, "Unconnected [pipe.name] located at [ADMIN_VERBOSEJMP(pipe)]", confidential = TRUE) + //Nodes + for(var/obj/machinery/atmospherics/node1 in GLOB.machines) + for(var/obj/machinery/atmospherics/node2 in node1.nodes) + if(!(node1 in node2.nodes)) + to_chat(usr, "One-way connection in [node1.name] located at [ADMIN_VERBOSEJMP(node1)]", confidential = TRUE) /client/proc/powerdebug() set category = "Mapping" diff --git a/code/modules/atmospherics/machinery/pipes/layermanifold.dm b/code/modules/atmospherics/machinery/pipes/layermanifold.dm index 33051388ee2..bd7530a93e0 100644 --- a/code/modules/atmospherics/machinery/pipes/layermanifold.dm +++ b/code/modules/atmospherics/machinery/pipes/layermanifold.dm @@ -27,16 +27,12 @@ return ..() /obj/machinery/atmospherics/pipe/layer_manifold/proc/nullifyAllNodes() - var/list/obj/machinery/atmospherics/needs_nullifying = get_all_connected_nodes() + for(var/obj/machinery/atmospherics/A in nodes) + A.disconnect(src) + SSair.add_to_rebuild_queue(A) front_nodes = null back_nodes = null nodes = list() - for(var/obj/machinery/atmospherics/A in needs_nullifying) - A.disconnect(src) - SSair.add_to_rebuild_queue(A) - -/obj/machinery/atmospherics/pipe/layer_manifold/proc/get_all_connected_nodes() - return front_nodes + back_nodes + nodes /obj/machinery/atmospherics/pipe/layer_manifold/update_layer() layer = initial(layer) + (PIPING_LAYER_MAX * PIPING_LAYER_LCHANGE) //This is above everything else. @@ -77,18 +73,18 @@ /obj/machinery/atmospherics/pipe/layer_manifold/proc/findAllConnections() front_nodes = list() back_nodes = list() - var/list/new_nodes = list() + nodes = list() for(var/iter in PIPING_LAYER_MIN to PIPING_LAYER_MAX) var/obj/machinery/atmospherics/foundfront = findConnecting(dir, iter) var/obj/machinery/atmospherics/foundback = findConnecting(turn(dir, 180), iter) front_nodes += foundfront back_nodes += foundback if(foundfront && !QDELETED(foundfront)) - new_nodes += foundfront + nodes += foundfront if(foundback && !QDELETED(foundback)) - new_nodes += foundback + nodes += foundback update_appearance() - return new_nodes + return nodes /obj/machinery/atmospherics/pipe/layer_manifold/atmosinit() normalize_cardinal_directions() @@ -98,21 +94,20 @@ piping_layer = PIPING_LAYER_DEFAULT /obj/machinery/atmospherics/pipe/layer_manifold/pipeline_expansion() - return get_all_connected_nodes() + return nodes /obj/machinery/atmospherics/pipe/layer_manifold/disconnect(obj/machinery/atmospherics/reference) if(istype(reference, /obj/machinery/atmospherics/pipe)) var/obj/machinery/atmospherics/pipe/P = reference P.destroy_network() - while(reference in get_all_connected_nodes()) - if(reference in nodes) - var/i = nodes.Find(reference) - nodes[i] = null - if(reference in front_nodes) - var/i = front_nodes.Find(reference) + while(reference in nodes) + var/i = nodes.Find(reference) + nodes[i] = null + i = front_nodes.Find(reference) + if(i) front_nodes[i] = null - if(reference in back_nodes) - var/i = back_nodes.Find(reference) + i = back_nodes.Find(reference) + if(i) back_nodes[i] = null update_appearance()