Merge pull request #3100 from VOREStation/vplk-atmos-trinary-tvalves

Eliminated more duplicate code in trinary components: Rondo of T-Valves
This commit is contained in:
Aronai Sieyes
2018-02-22 23:08:54 -05:00
committed by GitHub
9 changed files with 107 additions and 225 deletions
@@ -59,7 +59,7 @@
. = ..()
/obj/machinery/atmospherics/trinary/atmos_filter/update_icon()
if(istype(src, /obj/machinery/atmospherics/trinary/atmos_filter/m_filter))
if(mirrored)
icon_state = "m"
else
icon_state = ""
@@ -108,24 +108,6 @@
if(frequency)
set_frequency(frequency)
/obj/machinery/atmospherics/trinary/atmos_filter/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
if (!istype(W, /obj/item/weapon/wrench))
return ..()
if(!can_unwrench())
to_chat(user, "<span class='warning'>You cannot unwrench \the [src], it too exerted due to internal pressure.</span>")
add_fingerprint(user)
return 1
playsound(src, W.usesound, 50, 1)
to_chat(user, "<span class='notice'>You begin to unfasten \the [src]...</span>")
if (do_after(user, 40 * W.toolspeed))
user.visible_message( \
"<span class='notice'>\The [user] unfastens \the [src].</span>", \
"<span class='notice'>You have unfastened \the [src].</span>", \
"You hear a ratchet.")
new /obj/item/pipe(loc, make_from=src)
qdel(src)
/obj/machinery/atmospherics/trinary/atmos_filter/attack_hand(user as mob) // -- TLE
if(..())
return
@@ -210,25 +192,11 @@
*/
return
//
// Mirrored Orientation - Flips the output dir to opposite side from normal.
//
/obj/machinery/atmospherics/trinary/atmos_filter/m_filter
icon_state = "mmap"
dir = SOUTH
initialize_directions = SOUTH|NORTH|EAST
/obj/machinery/atmospherics/trinary/atmos_filter/m_filter/init_dir()
switch(dir)
if(NORTH)
initialize_directions = WEST|NORTH|SOUTH
if(SOUTH)
initialize_directions = SOUTH|EAST|NORTH
if(EAST)
initialize_directions = EAST|WEST|NORTH
if(WEST)
initialize_directions = WEST|SOUTH|EAST
/obj/machinery/atmospherics/trinary/atmos_filter/m_filter/get_node_connect_dirs()
var/node1_connect = turn(dir, -180)
var/node2_connect = turn(dir, 90)
var/node3_connect = dir
return list(node1_connect, node2_connect, node3_connect)
mirrored = TRUE
@@ -20,10 +20,10 @@
//node 3 is the outlet, nodes 1 & 2 are intakes
/obj/machinery/atmospherics/trinary/mixer/update_icon(var/safety = 0)
if(istype(src, /obj/machinery/atmospherics/trinary/mixer/m_mixer))
icon_state = "m"
else if(istype(src, /obj/machinery/atmospherics/trinary/mixer/t_mixer))
if(tee)
icon_state = "t"
else if(mirrored)
icon_state = "m"
else
icon_state = ""
@@ -75,23 +75,6 @@
return 1
/obj/machinery/atmospherics/trinary/mixer/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
if (!istype(W, /obj/item/weapon/wrench))
return ..()
if(!can_unwrench())
to_chat(user, "<span class='warning'>You cannot unwrench \the [src], it too exerted due to internal pressure.</span>")
add_fingerprint(user)
return 1
playsound(src, W.usesound, 50, 1)
to_chat(user, "<span class='notice'>You begin to unfasten \the [src]...</span>")
if (do_after(user, 40 * W.toolspeed))
user.visible_message( \
"<span class='notice'>\The [user] unfastens \the [src].</span>", \
"<span class='notice'>You have unfastened \the [src].</span>", \
"You hear ratchet.")
new /obj/item/pipe(loc, make_from=src)
qdel(src)
/obj/machinery/atmospherics/trinary/mixer/attack_hand(user as mob)
if(..())
return
@@ -150,53 +133,15 @@
//
obj/machinery/atmospherics/trinary/mixer/t_mixer
icon_state = "tmap"
dir = SOUTH
initialize_directions = SOUTH|EAST|WEST
//node 3 is the outlet, nodes 1 & 2 are intakes
/obj/machinery/atmospherics/trinary/mixer/t_mixer/init_dir()
switch(dir)
if(NORTH)
initialize_directions = EAST|NORTH|WEST
if(SOUTH)
initialize_directions = SOUTH|WEST|EAST
if(EAST)
initialize_directions = EAST|NORTH|SOUTH
if(WEST)
initialize_directions = WEST|NORTH|SOUTH
/obj/machinery/atmospherics/trinary/mixer/t_mixer/get_node_connect_dirs()
var/node1_connect = turn(dir, -90)
var/node2_connect = turn(dir, 90)
var/node3_connect = dir
return list(node1_connect, node2_connect, node3_connect)
tee = TRUE
//
// Mirrored Orientation - Flips the output dir to opposite side from normal.
//
/obj/machinery/atmospherics/trinary/mixer/m_mixer
icon_state = "mmap"
dir = SOUTH
initialize_directions = SOUTH|NORTH|EAST
//node 3 is the outlet, nodes 1 & 2 are intakes
/obj/machinery/atmospherics/trinary/mixer/m_mixer/init_dir()
switch(dir)
if(NORTH)
initialize_directions = WEST|NORTH|SOUTH
if(SOUTH)
initialize_directions = SOUTH|EAST|NORTH
if(EAST)
initialize_directions = EAST|WEST|NORTH
if(WEST)
initialize_directions = WEST|SOUTH|EAST
/obj/machinery/atmospherics/trinary/mixer/m_mixer/get_node_connect_dirs()
var/node1_connect = turn(dir, -180)
var/node2_connect = turn(dir, 90)
var/node3_connect = dir
return list(node1_connect, node2_connect, node3_connect)
mirrored = TRUE
@@ -3,6 +3,9 @@
initialize_directions = SOUTH|NORTH|WEST
use_power = 0
var/mirrored = FALSE
var/tee = FALSE
var/datum/gas_mixture/air1
var/datum/gas_mixture/air2
var/datum/gas_mixture/air3
@@ -25,15 +28,7 @@
air3.volume = 200
/obj/machinery/atmospherics/trinary/init_dir()
switch(dir)
if(NORTH)
initialize_directions = EAST|NORTH|SOUTH
if(SOUTH)
initialize_directions = SOUTH|WEST|NORTH
if(EAST)
initialize_directions = EAST|WEST|SOUTH
if(WEST)
initialize_directions = WEST|NORTH|EAST
initialize_directions = get_initialize_directions_trinary(dir, mirrored, tee)
/obj/machinery/atmospherics/trinary/update_underlays()
if(..())
@@ -55,6 +50,23 @@
if(old_stat != stat)
update_icon()
/obj/machinery/atmospherics/trinary/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
if (!istype(W, /obj/item/weapon/wrench))
return ..()
if(!can_unwrench())
to_chat(user, "<span class='warning'>You cannot unwrench \the [src], it too exerted due to internal pressure.</span>")
add_fingerprint(user)
return 1
playsound(src, W.usesound, 50, 1)
to_chat(user, "<span class='notice'>You begin to unfasten \the [src]...</span>")
if (do_after(user, 40 * W.toolspeed))
user.visible_message( \
"<span class='notice'>\The [user] unfastens \the [src].</span>", \
"<span class='notice'>You have unfastened \the [src].</span>", \
"You hear a ratchet.")
new /obj/item/pipe(loc, make_from=src)
qdel(src)
// Housekeeping and pipe network stuff below
/obj/machinery/atmospherics/trinary/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference)
if(reference == node1)
@@ -93,10 +105,7 @@
// Get the direction each node is facing to connect.
// It now returns as a list so it can be fetched nicely, each entry corresponds to node of same number.
/obj/machinery/atmospherics/trinary/get_node_connect_dirs()
var/node1_connect = turn(dir, 180)
var/node2_connect = turn(dir, -90)
var/node3_connect = dir
return list(node1_connect, node2_connect, node3_connect)
return get_node_connect_dirs_trinary(dir, mirrored, tee)
/obj/machinery/atmospherics/trinary/atmos_init()
if(node1 && node2 && node3)
@@ -191,4 +200,58 @@
update_underlays()
return null
return null
// Trinary init_dir() logic in a separate proc so it can be referenced from "trinary-ish" places like T-Valves
// TODO - Someday refactor those places under atmospherics/trinary
/proc/get_initialize_directions_trinary(var/dir, var/mirrored = FALSE, var/tee = FALSE)
if(tee)
switch(dir)
if(NORTH)
return EAST|NORTH|WEST
if(SOUTH)
return SOUTH|WEST|EAST
if(EAST)
return EAST|NORTH|SOUTH
if(WEST)
return WEST|NORTH|SOUTH
else if(mirrored)
switch(dir)
if(NORTH)
return WEST|NORTH|SOUTH
if(SOUTH)
return SOUTH|EAST|NORTH
if(EAST)
return EAST|WEST|NORTH
if(WEST)
return WEST|SOUTH|EAST
else
switch(dir)
if(NORTH)
return EAST|NORTH|SOUTH
if(SOUTH)
return SOUTH|WEST|NORTH
if(EAST)
return EAST|WEST|SOUTH
if(WEST)
return WEST|NORTH|EAST
// Trinary get_node_connect_dirs() logic in a separate proc so it can be referenced from "trinary-ish" places like T-Valves
/proc/get_node_connect_dirs_trinary(var/dir, var/mirrored = FALSE, var/tee = FALSE)
var/node1_connect
var/node2_connect
var/node3_connect
if(tee)
node1_connect = turn(dir, -90)
node2_connect = turn(dir, 90)
node3_connect = dir
else if(mirrored)
node1_connect = turn(dir, 180)
node2_connect = turn(dir, 90)
node3_connect = dir
else
node1_connect = turn(dir, 180)
node2_connect = turn(dir, -90)
node3_connect = dir
return list(node1_connect, node2_connect, node3_connect)
+12 -106
View File
@@ -11,6 +11,8 @@
var/state = 0 // 0 = go straight, 1 = go to side
var/mirrored = FALSE
// like a trinary component, node1 is input, node2 is side output, node3 is straight output
var/obj/machinery/atmospherics/node3
@@ -24,9 +26,9 @@
/obj/machinery/atmospherics/tvalve/update_icon(animation)
if(animation)
flick("tvalve[src.state][!src.state]",src)
flick("tvalve[mirrored ? "m" : ""][src.state][!src.state]",src)
else
icon_state = "tvalve[state]"
icon_state = "tvalve[mirrored ? "m" : ""][state]"
/obj/machinery/atmospherics/tvalve/update_underlays()
if(..())
@@ -43,15 +45,7 @@
update_underlays()
/obj/machinery/atmospherics/tvalve/init_dir()
switch(dir)
if(NORTH)
initialize_directions = SOUTH|NORTH|EAST
if(SOUTH)
initialize_directions = NORTH|SOUTH|WEST
if(EAST)
initialize_directions = WEST|EAST|SOUTH
if(WEST)
initialize_directions = EAST|WEST|NORTH
initialize_directions = get_initialize_directions_trinary(dir, mirrored)
/obj/machinery/atmospherics/tvalve/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference)
if(reference == node1)
@@ -176,10 +170,7 @@
return
/obj/machinery/atmospherics/tvalve/get_node_connect_dirs()
var/node1_connect = turn(dir, 180)
var/node2_connect = turn(dir, -90)
var/node3_connect = dir
return list(node1_connect, node2_connect, node3_connect)
return get_node_connect_dirs_trinary(dir, mirrored)
/obj/machinery/atmospherics/tvalve/atmos_init()
if(node1 && node2 && node3)
@@ -293,7 +284,7 @@
/obj/machinery/atmospherics/tvalve/digital/update_icon()
..()
if(!powered())
icon_state = "tvalvenopower"
icon_state = "tvalve[mirrored ? "m" : ""]nopower"
/obj/machinery/atmospherics/tvalve/digital/attack_ai(mob/user as mob)
return src.attack_hand(user)
@@ -362,101 +353,16 @@
/obj/machinery/atmospherics/tvalve/mirrored
icon_state = "map_tvalvem0"
mirrored = TRUE
/obj/machinery/atmospherics/tvalve/mirrored/bypass
icon_state = "map_tvalvem1"
state = 1
/obj/machinery/atmospherics/tvalve/mirrored/init_dir()
switch(dir)
if(NORTH)
initialize_directions = SOUTH|NORTH|WEST
if(SOUTH)
initialize_directions = NORTH|SOUTH|EAST
if(EAST)
initialize_directions = WEST|EAST|NORTH
if(WEST)
initialize_directions = EAST|WEST|SOUTH
/obj/machinery/atmospherics/tvalve/digital/mirrored
icon_state = "map_tvalvem0"
mirrored = TRUE
/obj/machinery/atmospherics/tvalve/mirrored/get_node_connect_dirs()
var/node1_connect = turn(dir, 180)
var/node2_connect = turn(dir, 90)
var/node3_connect = dir
return list(node1_connect, node2_connect, node3_connect)
/obj/machinery/atmospherics/tvalve/mirrored/update_icon(animation)
if(animation)
flick("tvalvem[src.state][!src.state]",src)
else
icon_state = "tvalvem[state]"
/obj/machinery/atmospherics/tvalve/mirrored/digital // can be controlled by AI
name = "digital switching valve"
desc = "A digitally controlled valve."
icon = 'icons/atmos/digital_tvalve.dmi'
var/frequency = 0
var/id = null
var/datum/radio_frequency/radio_connection
/obj/machinery/atmospherics/tvalve/mirrored/digital/Destroy()
unregister_radio(src, frequency)
. = ..()
/obj/machinery/atmospherics/tvalve/mirrored/digital/bypass
/obj/machinery/atmospherics/tvalve/digital/mirrored/bypass
icon_state = "map_tvalvem1"
state = 1
/obj/machinery/atmospherics/tvalve/mirrored/digital/power_change()
var/old_stat = stat
..()
if(old_stat != stat)
update_icon()
/obj/machinery/atmospherics/tvalve/mirrored/digital/update_icon()
..()
if(!powered())
icon_state = "tvalvemnopower"
/obj/machinery/atmospherics/tvalve/mirrored/digital/attack_ai(mob/user as mob)
return src.attack_hand(user)
/obj/machinery/atmospherics/tvalve/mirrored/digital/attack_hand(mob/user as mob)
if(!powered())
return
if(!src.allowed(user))
to_chat(user, "<span class='warning'>Access denied.</span>")
return
..()
//Radio remote control -eh?
/obj/machinery/atmospherics/tvalve/mirrored/digital/proc/set_frequency(new_frequency)
radio_controller.remove_object(src, frequency)
frequency = new_frequency
if(frequency)
radio_connection = radio_controller.add_object(src, frequency, RADIO_ATMOSIA)
/obj/machinery/atmospherics/tvalve/mirrored/digital/initialize()
. = ..()
if(frequency)
set_frequency(frequency)
/obj/machinery/atmospherics/tvalve/mirrored/digital/receive_signal(datum/signal/signal)
if(!signal.data["tag"] || (signal.data["tag"] != id))
return 0
switch(signal.data["command"])
if("valve_open")
if(!state)
go_to_side()
if("valve_close")
if(state)
go_straight()
if("valve_toggle")
if(state)
go_straight()
else
go_to_side()
+2 -2
View File
@@ -145,7 +145,7 @@ Buildable meters
src.pipe_type = PIPE_PASSIVE_GATE
else if(istype(make_from, /obj/machinery/atmospherics/unary/heat_exchanger))
src.pipe_type = PIPE_HEAT_EXCHANGE
else if(istype(make_from, /obj/machinery/atmospherics/tvalve/mirrored/digital))
else if(istype(make_from, /obj/machinery/atmospherics/tvalve/digital/mirrored))
src.pipe_type = PIPE_DTVALVEM
else if(istype(make_from, /obj/machinery/atmospherics/tvalve/mirrored))
src.pipe_type = PIPE_MTVALVEM
@@ -1105,7 +1105,7 @@ Buildable meters
V.node3.build_network()
if(PIPE_DTVALVEM) //mirrored digital t-valve
var/obj/machinery/atmospherics/tvalve/mirrored/digital/V = new(src.loc)
var/obj/machinery/atmospherics/tvalve/digital/mirrored/V = new(src.loc)
if(src.req_access)
V.req_access = src.req_access
if(src.req_one_access)
+2 -2
View File
@@ -2643,7 +2643,7 @@
"aYQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/plating,/area/maintenance/engineering/pumpstation)
"aYR" = (/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/tiled,/area/maintenance/engineering/pumpstation)
"aYS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/tiled,/area/maintenance/engineering/pumpstation)
"aYT" = (/obj/machinery/atmospherics/tvalve/mirrored/digital/bypass{dir = 4},/obj/machinery/camera/network/engineering{c_tag = "ENG - Pump Station"; dir = 1},/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/turf/simulated/floor/tiled,/area/maintenance/engineering/pumpstation)
"aYT" = (/obj/machinery/atmospherics/tvalve/digital/mirrored/bypass{dir = 4},/obj/machinery/camera/network/engineering{c_tag = "ENG - Pump Station"; dir = 1},/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/turf/simulated/floor/tiled,/area/maintenance/engineering/pumpstation)
"aYU" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/turf/simulated/floor/tiled,/area/maintenance/engineering/pumpstation)
"aYV" = (/obj/machinery/atmospherics/pipe/manifold/visible/red,/turf/simulated/floor/tiled,/area/maintenance/engineering/pumpstation)
"aYW" = (/obj/random/maintenance/research,/obj/random/maintenance/research,/obj/random/junk,/turf/simulated/floor,/area/maintenance/research_shuttle)
@@ -8600,7 +8600,7 @@
"djt" = (/obj/machinery/atmospherics/pipe/manifold/visible/green{dir = 8},/turf/simulated/floor/tiled,/area/engineering/atmos)
"dju" = (/obj/machinery/atmospherics/pipe/simple/visible/red,/obj/machinery/atmospherics/binary/pump{dir = 4; name = "N2 to Mixing"},/turf/simulated/floor/tiled,/area/engineering/atmos)
"djv" = (/obj/machinery/atmospherics/pipe/manifold/visible/green{tag = "icon-map (EAST)"; icon_state = "map"; dir = 4},/turf/simulated/floor/tiled,/area/engineering/atmos)
"djw" = (/obj/machinery/atmospherics/tvalve/mirrored/digital{name = "Waste to Space"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/engineering/atmos)
"djw" = (/obj/machinery/atmospherics/tvalve/digital/mirrored{name = "Waste to Space"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/engineering/atmos)
"djx" = (/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/obj/machinery/meter,/turf/simulated/floor/tiled,/area/engineering/atmos)
"djy" = (/obj/machinery/atmospherics/pipe/simple/visible/red,/turf/simulated/floor/tiled,/area/engineering/atmos)
"djz" = (/obj/machinery/atmospherics/valve/digital,/turf/simulated/floor/tiled,/area/engineering/atmos)
+1 -1
View File
@@ -16022,7 +16022,7 @@
/turf/simulated/floor/tiled,
/area/hallway/lower/third_south)
"BZ" = (
/obj/machinery/atmospherics/tvalve/mirrored/digital/bypass{
/obj/machinery/atmospherics/tvalve/digital/mirrored/bypass{
dir = 8
},
/turf/simulated/floor/plating,
+1 -1
View File
@@ -3858,7 +3858,7 @@
/turf/simulated/floor,
/area/rnd/outpost/atmos)
"hf" = (
/obj/machinery/atmospherics/tvalve/mirrored/digital{
/obj/machinery/atmospherics/tvalve/digital/mirrored{
name = "Filter Bypass"
},
/turf/simulated/floor,
+2 -2
View File
@@ -2641,7 +2641,7 @@
"aYO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/plating,/area/maintenance/engineering/pumpstation)
"aYP" = (/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/tiled,/area/maintenance/engineering/pumpstation)
"aYQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/tiled,/area/maintenance/engineering/pumpstation)
"aYR" = (/obj/machinery/atmospherics/tvalve/mirrored/digital/bypass{dir = 4},/obj/machinery/camera/network/engineering{c_tag = "ENG - Pump Station"; dir = 1},/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/turf/simulated/floor/tiled,/area/maintenance/engineering/pumpstation)
"aYR" = (/obj/machinery/atmospherics/tvalve/digital/mirrored/bypass{dir = 4},/obj/machinery/camera/network/engineering{c_tag = "ENG - Pump Station"; dir = 1},/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/turf/simulated/floor/tiled,/area/maintenance/engineering/pumpstation)
"aYS" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/turf/simulated/floor/tiled,/area/maintenance/engineering/pumpstation)
"aYT" = (/obj/machinery/atmospherics/pipe/manifold/visible/red,/turf/simulated/floor/tiled,/area/maintenance/engineering/pumpstation)
"aYU" = (/obj/random/maintenance/research,/obj/random/maintenance/research,/obj/random/junk,/turf/simulated/floor,/area/maintenance/research_shuttle)
@@ -8551,7 +8551,7 @@
"diw" = (/obj/machinery/atmospherics/pipe/manifold/visible/green{dir = 8},/turf/simulated/floor/tiled,/area/engineering/atmos)
"dix" = (/obj/machinery/atmospherics/pipe/simple/visible/red,/obj/machinery/atmospherics/binary/pump{dir = 4; name = "N2 to Mixing"},/turf/simulated/floor/tiled,/area/engineering/atmos)
"diy" = (/obj/machinery/atmospherics/pipe/manifold/visible/green{tag = "icon-map (EAST)"; icon_state = "map"; dir = 4},/turf/simulated/floor/tiled,/area/engineering/atmos)
"diz" = (/obj/machinery/atmospherics/tvalve/mirrored/digital{name = "Waste to Space"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/engineering/atmos)
"diz" = (/obj/machinery/atmospherics/tvalve/digital/mirrored{name = "Waste to Space"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/engineering/atmos)
"diA" = (/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/obj/machinery/meter,/turf/simulated/floor/tiled,/area/engineering/atmos)
"diB" = (/obj/machinery/atmospherics/pipe/simple/visible/red,/turf/simulated/floor/tiled,/area/engineering/atmos)
"diC" = (/obj/machinery/atmospherics/valve/digital,/turf/simulated/floor/tiled,/area/engineering/atmos)