From c4648c9a82b4ac984d58052bed431cafcb805d01 Mon Sep 17 00:00:00 2001 From: nicbn Date: Fri, 30 Nov 2018 19:44:34 -0200 Subject: [PATCH 1/4] Make pipe layers better, also some cleanups (#41664) * Layered pipes no longer stick out of their tile, also vents and other machines will always be in the middle of the tile. * Layer manifold now looks like an adaptor. * Some pipe mapping helpers were made into macros so maintianing things is easier. * Some unused icons were removed. * A lot of icons were added, so that pipe layering looks better. * Layer manifold renamed to layer adaptor and resprited to look more like an adaptor. --- code/__DEFINES/atmospherics.dm | 12 + code/game/machinery/pipe/construction.dm | 6 +- .../atmospherics/machinery/atmosmachinery.dm | 72 ++-- .../binary_devices/binary_devices.dm | 18 +- .../components/binary_devices/dp_vent_pump.dm | 152 ++++--- .../components/binary_devices/passive_gate.dm | 32 +- .../components/binary_devices/pump.dm | 78 ++-- .../components/binary_devices/valve.dm | 126 +++--- .../components/binary_devices/volume_pump.dm | 79 ++-- .../machinery/components/components_base.dm | 50 ++- .../components/trinary_devices/filter.dm | 194 +++++---- .../components/trinary_devices/mixer.dm | 136 +++--- .../unary_devices/heat_exchanger.dm | 18 +- .../unary_devices/outlet_injector.dm | 135 +++--- .../unary_devices/portables_connector.dm | 70 +-- .../components/unary_devices/tank.dm | 37 +- .../components/unary_devices/thermomachine.dm | 14 +- .../components/unary_devices/vent_pump.dm | 309 +++++++------ .../components/unary_devices/vent_scrubber.dm | 50 ++- .../atmospherics/machinery/other/meter.dm | 5 +- .../machinery/pipes/heat_exchange/he_pipes.dm | 1 - .../machinery/pipes/heat_exchange/junction.dm | 34 +- .../machinery/pipes/heat_exchange/manifold.dm | 82 +--- .../pipes/heat_exchange/manifold4w.dm | 48 +++ .../machinery/pipes/heat_exchange/simple.dm | 45 +- .../machinery/pipes/layermanifold.dm | 54 ++- .../atmospherics/machinery/pipes/manifold.dm | 408 +----------------- .../machinery/pipes/manifold4w.dm | 397 +---------------- .../atmospherics/machinery/pipes/mapping.dm | 64 +++ .../atmospherics/machinery/pipes/pipes.dm | 15 +- .../atmospherics/machinery/pipes/simple.dm | 391 +---------------- .../components/binary_devices.dmi | Bin 37683 -> 41056 bytes .../atmospherics/components/relief_valve.dmi | Bin 1916 -> 0 bytes .../components/trinary_devices.dmi | Bin 40611 -> 42943 bytes .../atmospherics/components/unary_devices.dmi | Bin 69425 -> 77244 bytes icons/obj/atmospherics/pipes/he-junction.dmi | Bin 0 -> 1878 bytes icons/obj/atmospherics/pipes/he-manifold.dmi | Bin 0 -> 1440 bytes icons/obj/atmospherics/pipes/he-simple.dmi | Bin 0 -> 3844 bytes icons/obj/atmospherics/pipes/heat.dmi | Bin 10819 -> 0 bytes icons/obj/atmospherics/pipes/junction.dmi | Bin 3276 -> 0 bytes icons/obj/atmospherics/pipes/manifold.dmi | Bin 14484 -> 2721 bytes icons/obj/atmospherics/pipes/meter.dmi | Bin 886 -> 716 bytes icons/obj/atmospherics/pipes/pipe_item.dmi | Bin 27237 -> 25343 bytes .../obj/atmospherics/pipes/pressure_tank.dmi | Bin 8611 -> 14599 bytes icons/obj/atmospherics/pipes/simple.dmi | Bin 16600 -> 6021 bytes tgstation.dme | 2 + 46 files changed, 1066 insertions(+), 2068 deletions(-) create mode 100644 code/modules/atmospherics/machinery/pipes/heat_exchange/manifold4w.dm create mode 100644 code/modules/atmospherics/machinery/pipes/mapping.dm delete mode 100644 icons/obj/atmospherics/components/relief_valve.dmi create mode 100644 icons/obj/atmospherics/pipes/he-junction.dmi create mode 100644 icons/obj/atmospherics/pipes/he-manifold.dmi create mode 100644 icons/obj/atmospherics/pipes/he-simple.dmi delete mode 100644 icons/obj/atmospherics/pipes/heat.dmi delete mode 100644 icons/obj/atmospherics/pipes/junction.dmi diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm index 645dcc3cc089..ff0700a63599 100644 --- a/code/__DEFINES/atmospherics.dm +++ b/code/__DEFINES/atmospherics.dm @@ -242,6 +242,18 @@ #define PIPING_CARDINAL_AUTONORMALIZE (1<<3) //north/south east/west doesn't matter, auto normalize on build. //HELPERS +#define PIPING_LAYER_SHIFT(T, PipingLayer) \ + if(T.dir & NORTH || T.dir & SOUTH) { \ + T.pixel_x = (PipingLayer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_X;\ + } \ + if(T.dir & WEST || T.dir & EAST) { \ + T.pixel_y = (PipingLayer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_Y;\ + } + +#define PIPING_LAYER_DOUBLE_SHIFT(T, PipingLayer) \ + T.pixel_x = (PipingLayer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_X;\ + T.pixel_y = (PipingLayer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_Y; + #define THERMAL_ENERGY(gas) (gas.temperature * gas.heat_capacity()) #define ADD_GAS(gas_id, out_list)\ diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index 22b6fe900bc8..dc2fd919ac8a 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -75,8 +75,7 @@ Buildable meters new_layer = PIPING_LAYER_DEFAULT piping_layer = new_layer - pixel_x += (piping_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_X - pixel_y += (piping_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_Y + PIPING_LAYER_SHIFT(src, piping_layer) layer = initial(layer) + ((piping_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_LCHANGE) /obj/item/pipe/proc/update() @@ -232,5 +231,4 @@ Buildable meters /obj/item/pipe_meter/proc/setAttachLayer(new_layer = PIPING_LAYER_DEFAULT) piping_layer = new_layer - pixel_x = (new_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_X - pixel_y = (new_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_Y + PIPING_LAYER_DOUBLE_SHIFT(src, piping_layer) diff --git a/code/modules/atmospherics/machinery/atmosmachinery.dm b/code/modules/atmospherics/machinery/atmosmachinery.dm index 192b74b7b6ff..b57b76bdf4ca 100644 --- a/code/modules/atmospherics/machinery/atmosmachinery.dm +++ b/code/modules/atmospherics/machinery/atmosmachinery.dm @@ -1,14 +1,12 @@ -/* -Quick overview: +// Quick overview: +// +// Pipes combine to form pipelines +// Pipelines and other atmospheric objects combine to form pipe_networks +// Note: A single pipe_network represents a completely open space +// +// Pipes -> Pipelines +// Pipelines + Other Objects -> Pipe network -Pipes combine to form pipelines -Pipelines and other atmospheric objects combine to form pipe_networks - Note: A single pipe_network represents a completely open space - -Pipes -> Pipelines -Pipelines + Other Objects -> Pipe network - -*/ #define PIPE_VISIBLE_LEVEL 2 #define PIPE_HIDDEN_LEVEL 1 @@ -101,13 +99,14 @@ Pipelines + Other Objects -> Pipe network return node_connects /obj/machinery/atmospherics/proc/normalize_cardinal_directions() - if(dir==SOUTH) - setDir(NORTH) - else if(dir==WEST) - setDir(EAST) + switch(dir) + if(SOUTH) + setDir(NORTH) + if(WEST) + setDir(EAST) //this is called just after the air controller sets up turfs -/obj/machinery/atmospherics/proc/atmosinit(var/list/node_connects) +/obj/machinery/atmospherics/proc/atmosinit(list/node_connects) if(!node_connects) //for pipes where order of nodes doesn't matter node_connects = getNodeConnects() @@ -119,12 +118,8 @@ Pipelines + Other Objects -> Pipe network update_icon() /obj/machinery/atmospherics/proc/setPipingLayer(new_layer) - if(pipe_flags & PIPING_DEFAULT_LAYER_ONLY) - new_layer = PIPING_LAYER_DEFAULT - piping_layer = new_layer - pixel_x = (piping_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_X - pixel_y = (piping_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_Y - layer = initial(layer) + ((piping_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_LCHANGE) + piping_layer = (pipe_flags & PIPING_DEFAULT_LAYER_ONLY) ? PIPING_LAYER_DEFAULT : new_layer + update_icon() /obj/machinery/atmospherics/proc/can_be_node(obj/machinery/atmospherics/target, iteration) return connection_check(target, piping_layer) @@ -176,9 +171,6 @@ Pipelines + Other Objects -> Pipe network nodes[nodes.Find(reference)] = null update_icon() -/obj/machinery/atmospherics/update_icon() - return - /obj/machinery/atmospherics/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/pipe)) //lets you autodrop var/obj/item/pipe/pipe = W @@ -235,15 +227,13 @@ Pipelines + Other Objects -> Pipe network var/datum/gas_mixture/env_air = loc.return_air() pressures = int_air.return_pressure() - env_air.return_pressure() - var/fuck_you_dir = get_dir(src, user) // Because fuck you... - if(!fuck_you_dir) - fuck_you_dir = pick(GLOB.cardinals) - var/turf/target = get_edge_target_turf(user, fuck_you_dir) - var/range = pressures/250 - var/speed = range/5 - user.visible_message("[user] is sent flying by pressure!","The pressure sends you flying!") - user.throw_at(target, range, speed) + + // if get_dir(src, user) is not 0, target is the edge_target_turf on that dir + // otherwise, edge_target_turf uses a random cardinal direction + // range is pressures / 250 + // speed is pressures / 1250 + user.throw_at(get_edge_target_turf(user, get_dir(src, user) || pick(GLOB.cardinals)), pressures / 250, pressures / 1250) /obj/machinery/atmospherics/deconstruct(disassembled = TRUE) if(!(flags_1 & NODECONSTRUCT_1)) @@ -269,17 +259,6 @@ Pipelines + Other Objects -> Pipe network pipe_overlay = . = pipeimages[identifier] = image(iconset, iconstate, dir = direction) pipe_overlay.color = col -/obj/machinery/atmospherics/proc/icon_addintact(var/obj/machinery/atmospherics/node) - var/image/img = getpipeimage('icons/obj/atmospherics/components/binary_devices.dmi', "pipe_intact", get_dir(src,node), node.pipe_color) - underlays += img - return img.dir - -/obj/machinery/atmospherics/proc/icon_addbroken(var/connected = FALSE) - var/unconnected = (~connected) & initialize_directions - for(var/direction in GLOB.cardinals) - if(unconnected & direction) - underlays += getpipeimage('icons/obj/atmospherics/components/binary_devices.dmi', "pipe_exposed", direction) - /obj/machinery/atmospherics/on_construction(obj_color, set_layer) if(can_unwrench) add_atom_colour(obj_color, FIXED_COLOUR_PRIORITY) @@ -320,7 +299,7 @@ Pipelines + Other Objects -> Pipe network if(target_move.can_crawl_through()) if(is_type_in_typecache(target_move, GLOB.ventcrawl_machinery)) user.forceMove(target_move.loc) //handle entering and so on. - user.visible_message("You hear something squeezing through the ducts...","You climb out the ventilation system.") + user.visible_message("You hear something squeezing through the ducts...", "You climb out the ventilation system.") else var/list/pipenetdiff = returnPipenets() ^ target_move.returnPipenets() if(pipenetdiff.len) @@ -332,7 +311,7 @@ Pipelines + Other Objects -> Pipe network playsound(src, 'sound/machines/ventcrawl.ogg', 50, 1, -3) else if(is_type_in_typecache(src, GLOB.ventcrawl_machinery) && can_crawl_through()) //if we move in a way the pipe can connect, but doesn't - or we're in a vent user.forceMove(loc) - user.visible_message("You hear something squeezing through the ducts...","You climb out the ventilation system.") + user.visible_message("You hear something squeezing through the ducts...", "You climb out the ventilation system.") //PLACEHOLDER COMMENT FOR ME TO READD THE 1 (?) DS DELAY THAT WAS IMPLEMENTED WITH A... TIMER? @@ -355,3 +334,6 @@ Pipelines + Other Objects -> Pipe network //Used for certain children of obj/machinery/atmospherics to not show pipe vision when mob is inside it. /obj/machinery/atmospherics/proc/can_see_pipes() return TRUE + +/obj/machinery/atmospherics/proc/update_layer() + layer = initial(layer) + (piping_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_LCHANGE diff --git a/code/modules/atmospherics/machinery/components/binary_devices/binary_devices.dm b/code/modules/atmospherics/machinery/components/binary_devices/binary_devices.dm index 421b141f05e3..6167d7ea015a 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/binary_devices.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/binary_devices.dm @@ -8,24 +8,14 @@ /obj/machinery/atmospherics/components/binary/SetInitDirections() switch(dir) - if(NORTH) + if(NORTH, SOUTH) initialize_directions = NORTH|SOUTH - if(SOUTH) - initialize_directions = NORTH|SOUTH - if(EAST) + if(EAST, WEST) initialize_directions = EAST|WEST - if(WEST) - initialize_directions = EAST|WEST -/* -Iconnery -*/ + /obj/machinery/atmospherics/components/binary/hide(intact) update_icon() - - ..(intact) -/* -Housekeeping and pipe network stuff -*/ + ..() /obj/machinery/atmospherics/components/binary/getNodeConnects() return list(turn(dir, 180), dir) diff --git a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm index 879668e4d783..767640ab8c8a 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm @@ -1,13 +1,12 @@ -/* -Acts like a normal vent, but has an input AND output. -*/ +//Acts like a normal vent, but has an input AND output. + #define EXT_BOUND 1 #define INPUT_MIN 2 #define OUTPUT_MAX 4 /obj/machinery/atmospherics/components/binary/dp_vent_pump icon = 'icons/obj/atmospherics/components/unary_devices.dmi' //We reuse the normal vent icons! - icon_state = "dpvent_map" + icon_state = "dpvent_map-2" //node2 is output port //node1 is input port @@ -27,97 +26,26 @@ Acts like a normal vent, but has an input AND output. var/output_pressure_max = 0 var/pressure_checks = EXT_BOUND + //EXT_BOUND: Do not pass external_pressure_bound //INPUT_MIN: Do not pass input_pressure_min //OUTPUT_MAX: Do not pass output_pressure_max -/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/on - on = TRUE - icon_state = "dpvent_map_on" - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/on/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/on/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - /obj/machinery/atmospherics/components/binary/dp_vent_pump/Destroy() SSradio.remove_object(src, frequency) return ..() -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume - name = "large dual-port air vent" - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_toxmix - id = INCINERATOR_TOXMIX_DP_VENTPUMP - frequency = FREQ_AIRLOCK_CONTROL - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos - id = INCINERATOR_ATMOS_DP_VENTPUMP - frequency = FREQ_AIRLOCK_CONTROL - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_syndicatelava - id = INCINERATOR_SYNDICATELAVA_DP_VENTPUMP - frequency = FREQ_AIRLOCK_CONTROL - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/on - on = TRUE - icon_state = "dpvent_map_on" - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/on/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/on/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/New() - ..() - var/datum/gas_mixture/air1 = airs[1] - var/datum/gas_mixture/air2 = airs[2] - air1.volume = 1000 - air2.volume = 1000 - /obj/machinery/atmospherics/components/binary/dp_vent_pump/update_icon_nopipes() cut_overlays() if(showpipe) - add_overlay(getpipeimage('icons/obj/atmospherics/components/unary_devices.dmi', "dpvent_cap")) + var/image/cap = getpipeimage(icon, "dpvent_cap", dir) + PIPING_LAYER_SHIFT(cap, piping_layer) + add_overlay(cap) if(!on || !is_operational()) icon_state = "vent_off" - return - - if(pump_direction) - icon_state = "vent_out" else - icon_state = "vent_in" + icon_state = pump_direction ? "vent_out" : "vent_in" /obj/machinery/atmospherics/components/binary/dp_vent_pump/process_atmos() ..() @@ -248,6 +176,70 @@ Acts like a normal vent, but has an input AND output. broadcast_status() update_icon() +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume + name = "large dual-port air vent" + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/New() + ..() + var/datum/gas_mixture/air1 = airs[1] + var/datum/gas_mixture/air2 = airs[2] + air1.volume = 1000 + air2.volume = 1000 + +// Mapping + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer1 + piping_layer = 1 + icon_state = "dpvent_map-1" + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer3 + piping_layer = 3 + icon_state = "dpvent_map-3" + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/on + on = TRUE + icon_state = "dpvent_map_on-2" + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/on/layer1 + piping_layer = 1 + icon_state = "dpvent_map_on-1" + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/on/layer3 + piping_layer = 3 + icon_state = "dpvent_map_on-3" + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_toxmix + id = INCINERATOR_TOXMIX_DP_VENTPUMP + frequency = FREQ_AIRLOCK_CONTROL + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos + id = INCINERATOR_ATMOS_DP_VENTPUMP + frequency = FREQ_AIRLOCK_CONTROL + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_syndicatelava + id = INCINERATOR_SYNDICATELAVA_DP_VENTPUMP + frequency = FREQ_AIRLOCK_CONTROL + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer1 + piping_layer = 1 + icon_state = "dpvent_map-1" + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer3 + piping_layer = 3 + icon_state = "dpvent_map-3" + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/on + on = TRUE + icon_state = "dpvent_map_on-2" + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/on/layer1 + piping_layer = 1 + icon_state = "dpvent_map_on-1" + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/on/layer3 + piping_layer = 3 + icon_state = "dpvent_map_on-3" + #undef EXT_BOUND #undef INPUT_MIN #undef OUTPUT_MAX diff --git a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm index 06875f7b35f7..43afc5a0265f 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm @@ -7,12 +7,13 @@ Passive gate is similar to the regular pump except: */ /obj/machinery/atmospherics/components/binary/passive_gate - icon_state = "passgate_map" + icon_state = "passgate_map-2" name = "passive gate" desc = "A one-way air valve that does not require power." can_unwrench = TRUE + shift_underlay_only = FALSE interaction_flags_machine = INTERACT_MACHINE_OFFLINE | INTERACT_MACHINE_WIRES_IF_OPEN | INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OPEN_SILICON | INTERACT_MACHINE_SET_MACHINE @@ -25,27 +26,15 @@ Passive gate is similar to the regular pump except: construction_type = /obj/item/pipe/directional pipe_state = "passivegate" -/obj/machinery/atmospherics/components/binary/passive_gate/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/binary/passive_gate/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - /obj/machinery/atmospherics/components/binary/passive_gate/Destroy() SSradio.remove_object(src,frequency) return ..() /obj/machinery/atmospherics/components/binary/passive_gate/update_icon_nopipes() - if(!on) - icon_state = "passgate_off" - cut_overlays() - return - - add_overlay(getpipeimage('icons/obj/atmospherics/components/binary_devices.dmi', "passgate_on")) + cut_overlays() + icon_state = "passgate_off" + if(on) + add_overlay(getpipeimage(icon, "passgate_on")) /obj/machinery/atmospherics/components/binary/passive_gate/process_atmos() ..() @@ -179,3 +168,12 @@ Passive gate is similar to the regular pump except: if(. && on) to_chat(user, "You cannot unwrench [src], turn it off first!") return FALSE + + +/obj/machinery/atmospherics/components/binary/passive_gate/layer1 + piping_layer = 1 + icon_state = "passgate_map-1" + +/obj/machinery/atmospherics/components/binary/passive_gate/layer3 + piping_layer = 3 + icon_state = "passgate_map-3" diff --git a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm index 16fcb6bd9b3e..454661d4fb5d 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm @@ -1,23 +1,22 @@ -/* -Every cycle, the pump uses the air in air_in to try and make air_out the perfect pressure. - -node1, air1, network1 correspond to input -node2, air2, network2 correspond to output - -Thus, the two variables affect pump operation are set in New(): - air1.volume - This is the volume of gas available to the pump that may be transfered to the output - air2.volume - Higher quantities of this cause more air to be perfected later - but overall network volume is also increased as this increases... -*/ +// Every cycle, the pump uses the air in air_in to try and make air_out the perfect pressure. +// +// node1, air1, network1 correspond to input +// node2, air2, network2 correspond to output +// +// Thus, the two variables affect pump operation are set in New(): +// air1.volume +// This is the volume of gas available to the pump that may be transfered to the output +// air2.volume +// Higher quantities of this cause more air to be perfected later +// but overall network volume is also increased as this increases... /obj/machinery/atmospherics/components/binary/pump - icon_state = "pump_map" + icon_state = "pump_map-2" name = "gas pump" desc = "A pump that moves gas by pressure." can_unwrench = TRUE + shift_underlay_only = FALSE var/target_pressure = ONE_ATMOSPHERE @@ -28,30 +27,6 @@ Thus, the two variables affect pump operation are set in New(): construction_type = /obj/item/pipe/directional pipe_state = "pump" -/obj/machinery/atmospherics/components/binary/pump/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/binary/pump/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/binary/pump/on - on = TRUE - icon_state = "pump_on_map" - -/obj/machinery/atmospherics/components/binary/pump/on/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/binary/pump/on/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - /obj/machinery/atmospherics/components/binary/pump/Destroy() SSradio.remove_object(src,frequency) if(radio_connection) @@ -59,11 +34,7 @@ Thus, the two variables affect pump operation are set in New(): return ..() /obj/machinery/atmospherics/components/binary/pump/update_icon_nopipes() - if(!is_operational()) - icon_state = "pump_off" - return - - icon_state = "pump_[on?"on":"off"]" + icon_state = (on && is_operational()) ? "pump_on" : "pump_off" /obj/machinery/atmospherics/components/binary/pump/process_atmos() // ..() @@ -191,3 +162,24 @@ Thus, the two variables affect pump operation are set in New(): if(. && on && is_operational()) to_chat(user, "You cannot unwrench [src], turn it off first!") return FALSE + + +/obj/machinery/atmospherics/components/binary/pump/layer1 + piping_layer = 1 + icon_state= "pump_map-1" + +/obj/machinery/atmospherics/components/binary/pump/layer3 + piping_layer = 3 + icon_state= "pump_map-3" + +/obj/machinery/atmospherics/components/binary/pump/on + on = TRUE + icon_state = "pump_on_map-2" + +/obj/machinery/atmospherics/components/binary/pump/on/layer1 + piping_layer = 1 + icon_state= "pump_on_map-1" + +/obj/machinery/atmospherics/components/binary/pump/on/layer3 + piping_layer = 3 + icon_state= "pump_on_map-3" diff --git a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm index 28cd63cfdd54..6e30e5fec4a2 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm @@ -3,12 +3,16 @@ It's like a regular ol' straight pipe, but you can turn it on and off. */ /obj/machinery/atmospherics/components/binary/valve - icon_state = "mvalve_map" + icon_state = "mvalve_map-2" + name = "manual valve" desc = "A pipe with a valve that can be used to disable flow of gas through it." can_unwrench = TRUE - interaction_flags_machine = INTERACT_MACHINE_OFFLINE | INTERACT_MACHINE_OPEN //Intentionally no allow_silicon flag + shift_underlay_only = FALSE + + interaction_flags_machine = INTERACT_MACHINE_OFFLINE | INTERACT_MACHINE_OPEN //Intentionally no allow_silicon flag + pipe_flags = PIPING_CARDINAL_AUTONORMALIZE var/frequency = 0 var/id = null @@ -20,35 +24,13 @@ It's like a regular ol' straight pipe, but you can turn it on and off. var/switching = FALSE -/obj/machinery/atmospherics/components/binary/valve/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/binary/valve/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/binary/valve/on - on = TRUE - -/obj/machinery/atmospherics/components/binary/valve/on/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/binary/valve/on/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/binary/valve/update_icon_nopipes(animation = 0) - normalize_dir() +/obj/machinery/atmospherics/components/binary/valve/update_icon_nopipes(animation = FALSE) + normalize_cardinal_directions() if(animation) - flick("[valve_type]valve_[on][!on]",src) - icon_state = "[valve_type]valve_[on?"on":"off"]" + flick("[valve_type]valve_[on][!on]", src) + icon_state = "[valve_type]valve_[on ? "on" : "off"]" +<<<<<<< HEAD /obj/machinery/atmospherics/components/binary/valve/proc/open() on = TRUE update_icon_nopipes() @@ -69,54 +51,86 @@ It's like a regular ol' straight pipe, but you can turn it on and off. setDir(NORTH) else if(dir==WEST) setDir(EAST) +======= +/obj/machinery/atmospherics/components/binary/valve/proc/toggle() + if(on) + on = FALSE + update_icon_nopipes() + investigate_log("was closed by [usr ? key_name(usr) : "a remote signal"]", INVESTIGATE_ATMOS) + else + on = TRUE + update_icon_nopipes() + update_parents() + var/datum/pipeline/parent1 = parents[1] + parent1.reconcile_air() + investigate_log("was opened by [usr ? key_name(usr) : "a remote signal"]", INVESTIGATE_ATMOS) +>>>>>>> f7955352e4... Make pipe layers better, also some cleanups (#41664) /obj/machinery/atmospherics/components/binary/valve/interact(mob/user) add_fingerprint(usr) - update_icon_nopipes(1) if(switching) return + update_icon_nopipes(TRUE) switching = TRUE - sleep(10) - if(on) - close() - else - open() + addtimer(CALLBACK(src, .proc/finish_interact), 10) + +/obj/machinery/atmospherics/components/binary/valve/proc/finish_interact() + toggle() switching = FALSE -/obj/machinery/atmospherics/components/binary/valve/digital // can be controlled by AI + +/obj/machinery/atmospherics/components/binary/valve/digital // can be controlled by AI + icon_state = "dvalve_map-2" + name = "digital valve" desc = "A digitally controlled valve." - icon_state = "dvalve_map" valve_type = "d" pipe_state = "dvalve" + interaction_flags_machine = INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OFFLINE | INTERACT_MACHINE_OPEN | INTERACT_MACHINE_OPEN_SILICON +/obj/machinery/atmospherics/components/binary/valve/digital/update_icon_nopipes(animation) + if(!is_operational()) + normalize_cardinal_directions() + icon_state = "dvalve_nopower" + return + ..() + + +/obj/machinery/atmospherics/components/binary/valve/layer1 + piping_layer = 1 + icon_state = "mvalve_map-1" + +/obj/machinery/atmospherics/components/binary/valve/layer3 + piping_layer = 3 + icon_state = "mvalve_map-3" + +/obj/machinery/atmospherics/components/binary/valve/on + on = TRUE + +/obj/machinery/atmospherics/components/binary/valve/on/layer1 + piping_layer = 1 + icon_state = "mvalve_map-1" + +/obj/machinery/atmospherics/components/binary/valve/on/layer3 + piping_layer = 3 + icon_state = "mvalve_map-3" + /obj/machinery/atmospherics/components/binary/valve/digital/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y + piping_layer = 1 + icon_state = "dvalve_map-1" /obj/machinery/atmospherics/components/binary/valve/digital/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y + piping_layer = 3 + icon_state = "dvalve_map-3" /obj/machinery/atmospherics/components/binary/valve/digital/on on = TRUE /obj/machinery/atmospherics/components/binary/valve/digital/on/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y + piping_layer = 1 + icon_state = "dvalve_map-1" /obj/machinery/atmospherics/components/binary/valve/digital/on/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/binary/valve/digital/update_icon_nopipes(animation) - if(!is_operational()) - normalize_dir() - icon_state = "dvalve_nopower" - return - ..() + piping_layer = 3 + icon_state = "dvalve_map-3" diff --git a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm index 1324bcdc61c8..5cfeb86ddfc1 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm @@ -1,23 +1,22 @@ -/* -Every cycle, the pump uses the air in air_in to try and make air_out the perfect pressure. - -node1, air1, network1 correspond to input -node2, air2, network2 correspond to output - -Thus, the two variables affect pump operation are set in New(): - air1.volume - This is the volume of gas available to the pump that may be transfered to the output - air2.volume - Higher quantities of this cause more air to be perfected later - but overall network volume is also increased as this increases... -*/ +// Every cycle, the pump uses the air in air_in to try and make air_out the perfect pressure. +// +// node1, air1, network1 correspond to input +// node2, air2, network2 correspond to output +// +// Thus, the two variables affect pump operation are set in New(): +// air1.volume +// This is the volume of gas available to the pump that may be transfered to the output +// air2.volume +// Higher quantities of this cause more air to be perfected later +// but overall network volume is also increased as this increases... /obj/machinery/atmospherics/components/binary/volume_pump - icon_state = "volpump_map" + icon_state = "volpump_map-2" name = "volumetric gas pump" desc = "A pump that moves gas by volume." can_unwrench = TRUE + shift_underlay_only = FALSE var/transfer_rate = MAX_TRANSFER_RATE @@ -28,40 +27,12 @@ Thus, the two variables affect pump operation are set in New(): construction_type = /obj/item/pipe/directional pipe_state = "volumepump" -/obj/machinery/atmospherics/components/binary/volume_pump/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/binary/volume_pump/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - /obj/machinery/atmospherics/components/binary/volume_pump/Destroy() SSradio.remove_object(src,frequency) return ..() -/obj/machinery/atmospherics/components/binary/volume_pump/on - on = TRUE - icon_state = "volpump_on_map" - -/obj/machinery/atmospherics/components/binary/volume_pump/on/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/binary/volume_pump/on/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - /obj/machinery/atmospherics/components/binary/volume_pump/update_icon_nopipes() - if(!is_operational()) - icon_state = "volpump_off" - return - - icon_state = "volpump_[on?"on":"off"]" + icon_state = on && is_operational() ? "volpump_on" : "volpump_off" /obj/machinery/atmospherics/components/binary/volume_pump/process_atmos() // ..() @@ -188,3 +159,25 @@ Thus, the two variables affect pump operation are set in New(): if(. && on && is_operational()) to_chat(user, "You cannot unwrench [src], turn it off first!") return FALSE + +// mapping + +/obj/machinery/atmospherics/components/binary/volume_pump/layer1 + piping_layer = 1 + icon_state = "volpump_map-1" + +/obj/machinery/atmospherics/components/binary/volume_pump/layer3 + piping_layer = 3 + icon_state = "volpump_map-3" + +/obj/machinery/atmospherics/components/binary/volume_pump/on + on = TRUE + icon_state = "volpump_on_map" + +/obj/machinery/atmospherics/components/binary/volume_pump/on/layer1 + piping_layer = 1 + icon_state = "volpump_map-1" + +/obj/machinery/atmospherics/components/binary/volume_pump/on/layer3 + piping_layer = 3 + icon_state = "volpump_map-3" diff --git a/code/modules/atmospherics/machinery/components/components_base.dm b/code/modules/atmospherics/machinery/components/components_base.dm index e31d96a0c292..41e1f3490fd5 100644 --- a/code/modules/atmospherics/machinery/components/components_base.dm +++ b/code/modules/atmospherics/machinery/components/components_base.dm @@ -1,11 +1,10 @@ -/* -So much of atmospherics.dm was used solely by components, so separating this makes things all a lot cleaner. -On top of that, now people can add component-speciic procs/vars if they want! -*/ +// So much of atmospherics.dm was used solely by components, so separating this makes things all a lot cleaner. +// On top of that, now people can add component-speciic procs/vars if they want! /obj/machinery/atmospherics/components var/welded = FALSE //Used on pumps and scrubbers var/showpipe = FALSE + var/shift_underlay_only = TRUE //Layering only shifts underlay? var/list/datum/pipeline/parents var/list/datum/gas_mixture/airs @@ -13,15 +12,15 @@ On top of that, now people can add component-speciic procs/vars if they want! /obj/machinery/atmospherics/components/New() parents = new(device_type) airs = new(device_type) + ..() for(var/i in 1 to device_type) var/datum/gas_mixture/A = new A.volume = 200 airs[i] = A -/* -Iconnery -*/ + +// Iconnery /obj/machinery/atmospherics/components/proc/update_icon_nopipes() return @@ -46,14 +45,29 @@ Iconnery for(var/i in 1 to device_type) //adds intact pieces if(nodes[i]) - connected |= icon_addintact(nodes[i]) + var/obj/machinery/atmospherics/node = nodes[i] + var/image/img = get_pipe_underlay("pipe_intact", get_dir(src, node), node.pipe_color) + underlays += img + connected |= img.dir - icon_addbroken(connected) //adds broken pieces + for(var/direction in GLOB.cardinals) + if((initialize_directions & direction) && !(connected & direction)) + underlays += get_pipe_underlay("pipe_exposed", direction) + if(!shift_underlay_only) + PIPING_LAYER_SHIFT(src, piping_layer) -/* -Pipenet stuff; housekeeping -*/ +/obj/machinery/atmospherics/components/proc/get_pipe_underlay(state, dir, color = null) + if(color) + . = getpipeimage('icons/obj/atmospherics/components/binary_devices.dmi', state, dir, color) + else + . = getpipeimage('icons/obj/atmospherics/components/binary_devices.dmi', state, dir) + + if(shift_underlay_only) + var/image/I = . + PIPING_LAYER_SHIFT(I, piping_layer) + +// Pipenet stuff; housekeeping /obj/machinery/atmospherics/components/nullifyNode(i) if(nodes[i]) @@ -129,9 +143,7 @@ Pipenet stuff; housekeeping return new_value return default_set -/* -Helpers -*/ +// Helpers /obj/machinery/atmospherics/components/proc/update_parents() for(var/i in 1 to device_type) @@ -146,9 +158,7 @@ Helpers for(var/i in 1 to device_type) . += returnPipenet(nodes[i]) -/* -UI Stuff -*/ +// UI Stuff /obj/machinery/atmospherics/components/ui_status(mob/user) if(allowed(user)) @@ -156,9 +166,7 @@ UI Stuff to_chat(user, "Access denied.") return UI_CLOSE -/* -Tool acts -*/ +// Tool acts /obj/machinery/atmospherics/components/analyzer_act(mob/living/user, obj/item/I) atmosanalyzer_scan(airs, user, src) \ No newline at end of file diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm index 300fd5c43df5..9aa41193a05d 100644 --- a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm +++ b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm @@ -1,9 +1,12 @@ /obj/machinery/atmospherics/components/trinary/filter - name = "gas filter" icon_state = "filter_off" - desc = "Very useful for filtering gasses." density = FALSE + + name = "gas filter" + desc = "Very useful for filtering gasses." + can_unwrench = TRUE + var/target_pressure = ONE_ATMOSPHERE var/filter_type = null var/frequency = 0 @@ -12,38 +15,6 @@ construction_type = /obj/item/pipe/trinary/flippable pipe_state = "filter" -/obj/machinery/atmospherics/components/trinary/filter/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/trinary/filter/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/trinary/filter/flipped - icon_state = "filter_off_f" - flipped = TRUE - -/obj/machinery/atmospherics/components/trinary/filter/flipped/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/trinary/filter/flipped/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -// These two filter types have critical_machine flagged to on and thus causes the area they are in to be exempt from the Grid Check event. - -/obj/machinery/atmospherics/components/trinary/filter/critical - critical_machine = TRUE - -/obj/machinery/atmospherics/components/trinary/filter/flipped/critical - critical_machine = TRUE - /obj/machinery/atmospherics/components/trinary/filter/proc/set_frequency(new_frequency) SSradio.remove_object(src, frequency) frequency = new_frequency @@ -54,62 +25,27 @@ SSradio.remove_object(src,frequency) return ..() -/obj/machinery/atmospherics/components/trinary/filter/atmos //Used for atmos waste loops - on = TRUE - icon_state = "filter_on" - -/obj/machinery/atmospherics/components/trinary/filter/atmos/n2 - name = "nitrogen filter" - filter_type = "n2" -/obj/machinery/atmospherics/components/trinary/filter/atmos/o2 - name = "oxygen filter" - filter_type = "o2" -/obj/machinery/atmospherics/components/trinary/filter/atmos/co2 - name = "carbon dioxide filter" - filter_type = "co2" -/obj/machinery/atmospherics/components/trinary/filter/atmos/n2o - name = "nitrous oxide filter" - filter_type = "n2o" -/obj/machinery/atmospherics/components/trinary/filter/atmos/plasma - name = "plasma filter" - filter_type = "plasma" - -/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped //This feels wrong, I know - icon_state = "filter_on_f" - flipped = TRUE - -/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/n2 - name = "nitrogen filter" - filter_type = "n2" -/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/o2 - name = "oxygen filter" - filter_type = "o2" -/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/co2 - name = "carbon dioxide filter" - filter_type = "co2" -/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/n2o - name = "nitrous oxide filter" - filter_type = "n2o" -/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/plasma - name = "plasma filter" - filter_type = "plasma" - /obj/machinery/atmospherics/components/trinary/filter/update_icon() cut_overlays() for(var/direction in GLOB.cardinals) - if(direction & initialize_directions) - var/obj/machinery/atmospherics/node = findConnecting(direction) - if(node) - add_overlay(getpipeimage('icons/obj/atmospherics/components/trinary_devices.dmi', "cap", direction, node.pipe_color)) - continue - add_overlay(getpipeimage('icons/obj/atmospherics/components/trinary_devices.dmi', "cap", direction)) - ..() + if(!(direction & initialize_directions)) + continue + var/obj/machinery/atmospherics/node = findConnecting(direction) + + var/image/cap + if(node) + cap = getpipeimage(icon, "cap", direction, node.pipe_color) + else + cap = getpipeimage(icon, "cap", direction) + + PIPING_LAYER_SHIFT(cap, piping_layer) + add_overlay(cap) + + return ..() /obj/machinery/atmospherics/components/trinary/filter/update_icon_nopipes() - if(on && nodes[1] && nodes[2] && nodes[3] && is_operational()) - icon_state = "filter_on[flipped?"_f":""]" - return - icon_state = "filter_off[flipped?"_f":""]" + var/on_state = on && nodes[1] && nodes[2] && nodes[3] && is_operational() + icon_state = "filter_[on_state ? "on" : "off"][flipped ? "_f" : ""]" /obj/machinery/atmospherics/components/trinary/filter/power_change() var/old_stat = stat @@ -240,3 +176,91 @@ if(. && on && is_operational()) to_chat(user, "You cannot unwrench [src], turn it off first!") return FALSE + +// mapping + +/obj/machinery/atmospherics/components/trinary/filter/layer1 + piping_layer = 1 + icon_state = "filter_off_map-1" +/obj/machinery/atmospherics/components/trinary/filter/layer3 + piping_layer = 3 + icon_state = "filter_off_map-3" + +/obj/machinery/atmospherics/components/trinary/filter/on + on = TRUE + icon_state = "filter_on" + +/obj/machinery/atmospherics/components/trinary/filter/on/layer1 + piping_layer = 1 + icon_state = "filter_on_map-1" +/obj/machinery/atmospherics/components/trinary/filter/on/layer3 + piping_layer = 3 + icon_state = "filter_on_map-3" + +/obj/machinery/atmospherics/components/trinary/filter/flipped + icon_state = "filter_off_f" + flipped = TRUE + +/obj/machinery/atmospherics/components/trinary/filter/flipped/layer1 + piping_layer = 1 + icon_state = "filter_off_f_map-1" +/obj/machinery/atmospherics/components/trinary/filter/flipped/layer3 + piping_layer = 3 + icon_state = "filter_off_f_map-3" + +/obj/machinery/atmospherics/components/trinary/filter/flipped/on + on = TRUE + icon_state = "filter_on_f" + +/obj/machinery/atmospherics/components/trinary/filter/flipped/on/layer1 + piping_layer = 1 + icon_state = "filter_on_f_map-1" +/obj/machinery/atmospherics/components/trinary/filter/flipped/on/layer3 + piping_layer = 3 + icon_state = "filter_on_f_map-3" + +/obj/machinery/atmospherics/components/trinary/filter/atmos //Used for atmos waste loops + on = TRUE + icon_state = "filter_on" +/obj/machinery/atmospherics/components/trinary/filter/atmos/n2 + name = "nitrogen filter" + filter_type = "n2" +/obj/machinery/atmospherics/components/trinary/filter/atmos/o2 + name = "oxygen filter" + filter_type = "o2" +/obj/machinery/atmospherics/components/trinary/filter/atmos/co2 + name = "carbon dioxide filter" + filter_type = "co2" +/obj/machinery/atmospherics/components/trinary/filter/atmos/n2o + name = "nitrous oxide filter" + filter_type = "n2o" +/obj/machinery/atmospherics/components/trinary/filter/atmos/plasma + name = "plasma filter" + filter_type = "plasma" + +/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped //This feels wrong, I know + icon_state = "filter_on_f" + flipped = TRUE +/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/n2 + name = "nitrogen filter" + filter_type = "n2" +/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/o2 + name = "oxygen filter" + filter_type = "o2" +/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/co2 + name = "carbon dioxide filter" + filter_type = "co2" +/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/n2o + name = "nitrous oxide filter" + filter_type = "n2o" +/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/plasma + name = "plasma filter" + filter_type = "plasma" + +// These two filter types have critical_machine flagged to on and thus causes the area they are in to be exempt from the Grid Check event. + +/obj/machinery/atmospherics/components/trinary/filter/critical + critical_machine = TRUE + +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical + critical_machine = TRUE diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm index cc0cec5c0260..67080fc2749c 100644 --- a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm +++ b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm @@ -3,9 +3,10 @@ density = FALSE name = "gas mixer" - can_unwrench = TRUE desc = "Very useful for mixing gasses." + can_unwrench = TRUE + var/target_pressure = ONE_ATMOSPHERE var/node1_concentration = 0.5 var/node2_concentration = 0.5 @@ -15,66 +16,27 @@ //node 3 is the outlet, nodes 1 & 2 are intakes -/obj/machinery/atmospherics/components/trinary/mixer/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/trinary/mixer/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/trinary/mixer/flipped - icon_state = "mixer_off_f" - flipped = TRUE - -/obj/machinery/atmospherics/components/trinary/mixer/flipped/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/trinary/mixer/flipped/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/trinary/mixer/airmix //For standard airmix to distro - name = "air mixer" - icon_state = "mixer_on" - node1_concentration = N2STANDARD - node2_concentration = O2STANDARD - on = TRUE - target_pressure = MAX_OUTPUT_PRESSURE - -/obj/machinery/atmospherics/components/trinary/mixer/airmix/inverse - node1_concentration = O2STANDARD - node2_concentration = N2STANDARD - -/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped - icon_state = "mixer_on_f" - flipped = TRUE - -/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped/inverse - node1_concentration = O2STANDARD - node2_concentration = N2STANDARD - /obj/machinery/atmospherics/components/trinary/mixer/update_icon() cut_overlays() for(var/direction in GLOB.cardinals) - if(direction & initialize_directions) - var/obj/machinery/atmospherics/node = findConnecting(direction) - if(node) - add_overlay(getpipeimage('icons/obj/atmospherics/components/trinary_devices.dmi', "cap", direction, node.pipe_color)) - continue - add_overlay(getpipeimage('icons/obj/atmospherics/components/trinary_devices.dmi', "cap", direction)) + if(!(direction & initialize_directions)) + continue + var/obj/machinery/atmospherics/node = findConnecting(direction) + + var/image/cap + if(node) + cap = getpipeimage(icon, "cap", direction, node.pipe_color) + else + cap = getpipeimage(icon, "cap", direction) + + PIPING_LAYER_SHIFT(cap, piping_layer) + add_overlay(cap) + return ..() /obj/machinery/atmospherics/components/trinary/mixer/update_icon_nopipes() - if(on && nodes[1] && nodes[2] && nodes[3] && is_operational()) - icon_state = "mixer_on[flipped?"_f":""]" - return - icon_state = "mixer_off[flipped?"_f":""]" + var/on_state = on && nodes[1] && nodes[2] && nodes[3] && is_operational() + icon_state = "mixer_[on_state ? "on" : "off"][flipped ? "_f" : ""]" /obj/machinery/atmospherics/components/trinary/mixer/power_change() var/old_stat = stat @@ -202,8 +164,70 @@ update_icon() -/obj/machinery/atmospherics/components/trinary/filter/can_unwrench(mob/user) +/obj/machinery/atmospherics/components/trinary/mixer/can_unwrench(mob/user) . = ..() if(. && on && is_operational()) to_chat(user, "You cannot unwrench [src], turn it off first!") return FALSE + +// mapping + +/obj/machinery/atmospherics/components/trinary/mixer/layer1 + piping_layer = 1 + icon_state = "mixer_off_map-1" +/obj/machinery/atmospherics/components/trinary/mixer/layer3 + piping_layer = 3 + icon_state = "mixer_off_map-3" + +/obj/machinery/atmospherics/components/trinary/mixer/on + on = TRUE + icon_state = "mixer_on" + +/obj/machinery/atmospherics/components/trinary/mixer/on/layer1 + piping_layer = 1 + icon_state = "mixer_on_map-1" +/obj/machinery/atmospherics/components/trinary/mixer/on/layer3 + piping_layer = 3 + icon_state = "mixer_on_map-3" + +/obj/machinery/atmospherics/components/trinary/mixer/flipped + icon_state = "mixer_off_f" + flipped = TRUE + +/obj/machinery/atmospherics/components/trinary/mixer/flipped/layer1 + piping_layer = 1 + icon_state = "mixer_off_f_map-1" +/obj/machinery/atmospherics/components/trinary/mixer/flipped/layer3 + piping_layer = 3 + icon_state = "mixer_off_f_map-3" + +/obj/machinery/atmospherics/components/trinary/mixer/flipped/on + on = TRUE + icon_state = "mixer_on_f" + +/obj/machinery/atmospherics/components/trinary/mixer/flipped/on/layer1 + piping_layer = 1 + icon_state = "mixer_on_f_map-1" +/obj/machinery/atmospherics/components/trinary/mixer/flipped/on/layer3 + piping_layer = 3 + icon_state = "mixer_on_f_map-3" + +/obj/machinery/atmospherics/components/trinary/mixer/airmix //For standard airmix to distro + name = "air mixer" + icon_state = "mixer_on" + node1_concentration = N2STANDARD + node2_concentration = O2STANDARD + target_pressure = MAX_OUTPUT_PRESSURE + on = TRUE + +/obj/machinery/atmospherics/components/trinary/mixer/airmix/inverse + node1_concentration = O2STANDARD + node2_concentration = N2STANDARD + +/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped + icon_state = "mixer_on_f" + flipped = TRUE + +/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped/inverse + node1_concentration = O2STANDARD + node2_concentration = N2STANDARD diff --git a/code/modules/atmospherics/machinery/components/unary_devices/heat_exchanger.dm b/code/modules/atmospherics/machinery/components/unary_devices/heat_exchanger.dm index 66f9668bbfc5..df5f802548e3 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/heat_exchanger.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/heat_exchanger.dm @@ -1,11 +1,12 @@ /obj/machinery/atmospherics/components/unary/heat_exchanger - icon_state = "he_intact" + icon_state = "he1" name = "heat exchanger" desc = "Exchanges heat between two input gases. Set up for fast heat transfer." can_unwrench = TRUE + shift_underlay_only = FALSE // not really used layer = LOW_OBJ_LAYER @@ -15,22 +16,21 @@ pipe_state = "heunary" /obj/machinery/atmospherics/components/unary/heat_exchanger/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y + piping_layer = 1 + icon_state = "he_map-1" /obj/machinery/atmospherics/components/unary/heat_exchanger/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y + piping_layer = 3 + icon_state = "he_map-3" /obj/machinery/atmospherics/components/unary/heat_exchanger/update_icon() if(nodes[1]) - icon_state = "he_intact" + icon_state = "he1" var/obj/machinery/atmospherics/node = nodes[1] add_atom_colour(node.color, FIXED_COLOUR_PRIORITY) else - icon_state = "he_exposed" + icon_state = "he0" + PIPING_LAYER_SHIFT(src, piping_layer) /obj/machinery/atmospherics/components/unary/heat_exchanger/atmosinit() if(!partner) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm index b4c37a2140f8..33665532507d 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm @@ -1,9 +1,13 @@ /obj/machinery/atmospherics/components/unary/outlet_injector + icon_state = "inje_map-2" + name = "air injector" desc = "Has a valve and pump attached to it." - icon_state = "inje_map" + use_power = IDLE_POWER_USE can_unwrench = TRUE + shift_underlay_only = FALSE + resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF //really helpful in building gas chambers for xenomorphs var/injecting = 0 @@ -19,82 +23,20 @@ pipe_state = "injector" -/obj/machinery/atmospherics/components/unary/outlet_injector/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/outlet_injector/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - /obj/machinery/atmospherics/components/unary/outlet_injector/Destroy() SSradio.remove_object(src,frequency) return ..() -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos - frequency = FREQ_ATMOS_STORAGE - on = TRUE - volume_rate = 200 - -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/atmos_waste - name = "atmos waste outlet injector" - id = ATMOS_GAS_MONITOR_WASTE_ATMOS -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/engine_waste - name = "engine outlet injector" - id = ATMOS_GAS_MONITOR_WASTE_ENGINE -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxin_input - name = "plasma tank input injector" - id = ATMOS_GAS_MONITOR_INPUT_TOX -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/oxygen_input - name = "oxygen tank input injector" - id = ATMOS_GAS_MONITOR_INPUT_O2 -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrogen_input - name = "nitrogen tank input injector" - id = ATMOS_GAS_MONITOR_INPUT_N2 -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/mix_input - name = "mix tank input injector" - id = ATMOS_GAS_MONITOR_INPUT_MIX -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrous_input - name = "nitrous oxide tank input injector" - id = ATMOS_GAS_MONITOR_INPUT_N2O -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/air_input - name = "air mix tank input injector" - id = ATMOS_GAS_MONITOR_INPUT_AIR -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/carbon_input - name = "carbon dioxide tank input injector" - id = ATMOS_GAS_MONITOR_INPUT_CO2 -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/incinerator_input - name = "incinerator chamber input injector" - id = ATMOS_GAS_MONITOR_INPUT_INCINERATOR -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxins_mixing_input - name = "toxins mixing input injector" - id = ATMOS_GAS_MONITOR_INPUT_TOXINS_LAB - -/obj/machinery/atmospherics/components/unary/outlet_injector/on - on = TRUE - -/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - /obj/machinery/atmospherics/components/unary/outlet_injector/update_icon_nopipes() cut_overlays() if(showpipe) + // everything is already shifted so don't shift the cap add_overlay(getpipeimage(icon, "inje_cap", initialize_directions)) if(!nodes[1] || !on || !is_operational()) icon_state = "inje_off" - return - - icon_state = "inje_on" + else + icon_state = "inje_on" /obj/machinery/atmospherics/components/unary/outlet_injector/power_change() var/old_stat = stat @@ -102,7 +44,6 @@ if(old_stat != stat) update_icon() - /obj/machinery/atmospherics/components/unary/outlet_injector/process_atmos() ..() @@ -243,3 +184,63 @@ if(. && on && is_operational()) to_chat(user, "You cannot unwrench [src], turn it off first!") return FALSE + +// mapping + +/obj/machinery/atmospherics/components/unary/outlet_injector/layer1 + piping_layer = 1 + icon_state = "inje_map-1" + +/obj/machinery/atmospherics/components/unary/outlet_injector/layer3 + piping_layer = 2 + icon_state = "inje_map-2" + +/obj/machinery/atmospherics/components/unary/outlet_injector/on + on = TRUE + +/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer1 + piping_layer = 1 + icon_state = "inje_map-1" + +/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer3 + piping_layer = 2 + icon_state = "inje_map-2" + +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos + frequency = FREQ_ATMOS_STORAGE + on = TRUE + volume_rate = 200 + +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/atmos_waste + name = "atmos waste outlet injector" + id = ATMOS_GAS_MONITOR_WASTE_ATMOS +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/engine_waste + name = "engine outlet injector" + id = ATMOS_GAS_MONITOR_WASTE_ENGINE +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxin_input + name = "plasma tank input injector" + id = ATMOS_GAS_MONITOR_INPUT_TOX +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/oxygen_input + name = "oxygen tank input injector" + id = ATMOS_GAS_MONITOR_INPUT_O2 +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrogen_input + name = "nitrogen tank input injector" + id = ATMOS_GAS_MONITOR_INPUT_N2 +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/mix_input + name = "mix tank input injector" + id = ATMOS_GAS_MONITOR_INPUT_MIX +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrous_input + name = "nitrous oxide tank input injector" + id = ATMOS_GAS_MONITOR_INPUT_N2O +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/air_input + name = "air mix tank input injector" + id = ATMOS_GAS_MONITOR_INPUT_AIR +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/carbon_input + name = "carbon dioxide tank input injector" + id = ATMOS_GAS_MONITOR_INPUT_CO2 +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/incinerator_input + name = "incinerator chamber input injector" + id = ATMOS_GAS_MONITOR_INPUT_INCINERATOR +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxins_mixing_input + name = "toxins mixing input injector" + id = ATMOS_GAS_MONITOR_INPUT_TOXINS_LAB diff --git a/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm b/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm index c0e69a0c7dcc..b65caaa759cc 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm @@ -1,55 +1,42 @@ /obj/machinery/atmospherics/components/unary/portables_connector + icon_state = "connector_map-2" + name = "connector port" desc = "For connecting portables devices related to atmospherics control." - icon = 'icons/obj/atmospherics/components/unary_devices.dmi' - icon_state = "connector_map" //Only for mapping purposes, so mappers can see direction + can_unwrench = TRUE - var/obj/machinery/portable_atmospherics/connected_device + use_power = NO_POWER_USE level = 0 layer = GAS_FILTER_LAYER + pipe_flags = PIPING_ONE_PER_TURF pipe_state = "connector" - -/obj/machinery/atmospherics/components/unary/portables_connector/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y -/obj/machinery/atmospherics/components/unary/portables_connector/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y + var/obj/machinery/portable_atmospherics/connected_device /obj/machinery/atmospherics/components/unary/portables_connector/New() ..() var/datum/gas_mixture/air_contents = airs[1] - air_contents.volume = 0 -/obj/machinery/atmospherics/components/unary/portables_connector/visible - level = 2 - -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/portables_connector/process_atmos() - if(!connected_device) - return - update_parents() - /obj/machinery/atmospherics/components/unary/portables_connector/Destroy() if(connected_device) connected_device.disconnect() return ..() +/obj/machinery/atmospherics/components/unary/portables_connector/update_icon_nopipes() + icon_state = "connector" + if(showpipe) + var/image/cap = getpipeimage(icon, "connector_cap", initialize_directions) + PIPING_LAYER_SHIFT(cap, piping_layer) + add_overlay(cap) + +/obj/machinery/atmospherics/components/unary/portables_connector/process_atmos() + if(!connected_device) + return + update_parents() + /obj/machinery/atmospherics/components/unary/portables_connector/can_unwrench(mob/user) . = ..() if(. && connected_device) @@ -60,3 +47,24 @@ return connected_device.portableConnectorReturnAir() /obj/proc/portableConnectorReturnAir() + return + + +/obj/machinery/atmospherics/components/unary/portables_connector/layer1 + piping_layer = 1 + icon_state = "connector_map-1" + +/obj/machinery/atmospherics/components/unary/portables_connector/layer3 + piping_layer = 3 + icon_state = "connector_map-3" + +/obj/machinery/atmospherics/components/unary/portables_connector/visible + level = 2 + +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer1 + piping_layer = 1 + icon_state = "connector_map-1" + +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer3 + piping_layer = 3 + icon_state = "connector_map-3" diff --git a/code/modules/atmospherics/machinery/components/unary_devices/tank.dm b/code/modules/atmospherics/machinery/components/unary_devices/tank.dm index 031e425c8dbd..a6224f2b3584 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/tank.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/tank.dm @@ -2,15 +2,18 @@ /obj/machinery/atmospherics/components/unary/tank icon = 'icons/obj/atmospherics/pipes/pressure_tank.dmi' icon_state = "generic" + name = "pressure tank" desc = "A large vessel containing pressurized gas." + max_integrity = 800 - var/volume = 10000 //in liters, 1 meters by 1 meters by 2 meters density = TRUE - var/gas_type = 0 layer = ABOVE_WINDOW_LAYER pipe_flags = PIPING_ONE_PER_TURF + var/volume = 10000 //in liters + var/gas_type = 0 + /obj/machinery/atmospherics/components/unary/tank/New() ..() var/datum/gas_mixture/air_contents = airs[1] @@ -22,21 +25,6 @@ name = "[name] ([air_contents.gases[gas_type][GAS_META][META_GAS_NAME]])" setPipingLayer(piping_layer) -/obj/machinery/atmospherics/components/unary/tank/carbon_dioxide - gas_type = /datum/gas/carbon_dioxide - -/obj/machinery/atmospherics/components/unary/tank/toxins - icon_state = "orange" - gas_type = /datum/gas/plasma - - -/obj/machinery/atmospherics/components/unary/tank/oxygen - icon_state = "blue" - gas_type = /datum/gas/oxygen - -/obj/machinery/atmospherics/components/unary/tank/nitrogen - icon_state = "red" - gas_type = /datum/gas/nitrogen /obj/machinery/atmospherics/components/unary/tank/air icon_state = "grey" @@ -48,3 +36,18 @@ air_contents.assert_gases(/datum/gas/oxygen, /datum/gas/nitrogen) air_contents.gases[/datum/gas/oxygen][MOLES] = AIR_CONTENTS * 0.2 air_contents.gases[/datum/gas/nitrogen][MOLES] = AIR_CONTENTS * 0.8 + +/obj/machinery/atmospherics/components/unary/tank/carbon_dioxide + gas_type = /datum/gas/carbon_dioxide + +/obj/machinery/atmospherics/components/unary/tank/toxins + icon_state = "orange" + gas_type = /datum/gas/plasma + +/obj/machinery/atmospherics/components/unary/tank/oxygen + icon_state = "blue" + gas_type = /datum/gas/oxygen + +/obj/machinery/atmospherics/components/unary/tank/nitrogen + icon_state = "red" + gas_type = /datum/gas/nitrogen diff --git a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm index 8a1bae5e68d9..76afa14e6b7c 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm @@ -1,18 +1,22 @@ /obj/machinery/atmospherics/components/unary/thermomachine - name = "thermomachine" - desc = "Heats or cools gas in connected pipes." icon = 'icons/obj/atmospherics/components/thermomachine.dmi' icon_state = "freezer" - var/icon_state_off = "freezer" - var/icon_state_on = "freezer_1" - var/icon_state_open = "freezer-o" + + name = "thermomachine" + desc = "Heats or cools gas in connected pipes." + density = TRUE max_integrity = 300 armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 100, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 30) layer = OBJ_LAYER circuit = /obj/item/circuitboard/machine/thermomachine + pipe_flags = PIPING_ONE_PER_TURF | PIPING_DEFAULT_LAYER_ONLY + var/icon_state_off = "freezer" + var/icon_state_on = "freezer_1" + var/icon_state_open = "freezer-o" + var/min_temperature = 0 var/max_temperature = 0 var/target_temperature = T20C diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm index 5b37242c78fb..8343c5d0e154 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm @@ -6,9 +6,11 @@ #define RELEASING 1 /obj/machinery/atmospherics/components/unary/vent_pump + icon_state = "vent_map-2" + name = "air vent" desc = "Has a valve and pump attached to it." - icon_state = "vent_map" + use_power = IDLE_POWER_USE can_unwrench = TRUE welded = FALSE @@ -32,92 +34,6 @@ pipe_state = "uvent" -/obj/machinery/atmospherics/components/unary/vent_pump/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_pump/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_pump/on - on = TRUE - icon_state = "vent_map_on" - -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_pump/siphon - pump_direction = SIPHONING - pressure_checks = INT_BOUND - internal_pressure_bound = 4000 - external_pressure_bound = 0 - -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on - on = TRUE - icon_state = "vent_map_siphon_on" - -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos - frequency = FREQ_ATMOS_STORAGE - on = TRUE - icon_state = "vent_map_siphon_on" - -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxin_output - name = "plasma tank output inlet" - id_tag = ATMOS_GAS_MONITOR_OUTPUT_TOX -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/oxygen_output - name = "oxygen tank output inlet" - id_tag = ATMOS_GAS_MONITOR_OUTPUT_O2 -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrogen_output - name = "nitrogen tank output inlet" - id_tag = ATMOS_GAS_MONITOR_OUTPUT_N2 -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/mix_output - name = "mix tank output inlet" - id_tag = ATMOS_GAS_MONITOR_OUTPUT_MIX -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrous_output - name = "nitrous oxide tank output inlet" - id_tag = ATMOS_GAS_MONITOR_OUTPUT_N2O -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/carbon_output - name = "carbon dioxide tank output inlet" - id_tag = ATMOS_GAS_MONITOR_OUTPUT_CO2 -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/incinerator_output - name = "incinerator chamber output inlet" - id_tag = ATMOS_GAS_MONITOR_OUTPUT_INCINERATOR - frequency = FREQ_ATMOS_CONTROL -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxins_mixing_output - name = "toxins mixing output inlet" - id_tag = ATMOS_GAS_MONITOR_OUTPUT_TOXINS_LAB - frequency = FREQ_ATMOS_CONTROL - /obj/machinery/atmospherics/components/unary/vent_pump/New() ..() if(!id_tag) @@ -133,82 +49,12 @@ radio_connection = null return ..() -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume - name = "large air vent" - power_channel = EQUIP - -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/on - on = TRUE - icon_state = "vent_map_on" - -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/on/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/on/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon - pump_direction = SIPHONING - pressure_checks = INT_BOUND - internal_pressure_bound = 2000 - external_pressure_bound = 0 - -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/on - on = TRUE - icon_state = "vent_map_siphon_on" - -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/on/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/on/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/atmos - frequency = FREQ_ATMOS_STORAGE - on = TRUE - icon_state = "vent_map_siphon_on" - -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/atmos/air_output - name = "air mix tank output inlet" - id_tag = ATMOS_GAS_MONITOR_OUTPUT_AIR - -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/New() - ..() - var/datum/gas_mixture/air_contents = airs[1] - air_contents.volume = 1000 - /obj/machinery/atmospherics/components/unary/vent_pump/update_icon_nopipes() cut_overlays() if(showpipe) - add_overlay(getpipeimage(icon, "vent_cap", initialize_directions)) + var/image/cap = getpipeimage(icon, "vent_cap", initialize_directions) + PIPING_LAYER_SHIFT(cap, piping_layer) + add_overlay(cap) if(welded) icon_state = "vent_welded" @@ -445,6 +291,149 @@ pipe_vision_img.plane = ABOVE_HUD_PLANE playsound(loc, 'sound/weapons/bladeslice.ogg', 100, 1) +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume + name = "large air vent" + power_channel = EQUIP + +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/New() + ..() + var/datum/gas_mixture/air_contents = airs[1] + air_contents.volume = 1000 + +// mapping + +/obj/machinery/atmospherics/components/unary/vent_pump/layer1 + piping_layer = 1 + icon_state = "vent_map-1" + +/obj/machinery/atmospherics/components/unary/vent_pump/layer3 + piping_layer = 3 + icon_state = "vent_map-3" + +/obj/machinery/atmospherics/components/unary/vent_pump/on + on = TRUE + icon_state = "vent_map_on-2" + +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer1 + piping_layer = 1 + icon_state = "vent_map_on-1" + +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer3 + piping_layer = 3 + icon_state = "vent_map_on-3" + +/obj/machinery/atmospherics/components/unary/vent_pump/siphon + pump_direction = SIPHONING + pressure_checks = INT_BOUND + internal_pressure_bound = 4000 + external_pressure_bound = 0 + +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/layer1 + piping_layer = 1 + icon_state = "vent_map-1" + +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/layer3 + piping_layer = 3 + icon_state = "vent_map-3" + +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on + on = TRUE + icon_state = "vent_map_siphon_on-2" + +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on/layer1 + piping_layer = 1 + icon_state = "vent_map_siphon_on-1" + +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on/layer3 + piping_layer = 3 + icon_state = "vent_map_siphon_on-3" + +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos + frequency = FREQ_ATMOS_STORAGE + on = TRUE + icon_state = "vent_map_siphon_on-2" + +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxin_output + name = "plasma tank output inlet" + id_tag = ATMOS_GAS_MONITOR_OUTPUT_TOX +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/oxygen_output + name = "oxygen tank output inlet" + id_tag = ATMOS_GAS_MONITOR_OUTPUT_O2 +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrogen_output + name = "nitrogen tank output inlet" + id_tag = ATMOS_GAS_MONITOR_OUTPUT_N2 +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/mix_output + name = "mix tank output inlet" + id_tag = ATMOS_GAS_MONITOR_OUTPUT_MIX +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrous_output + name = "nitrous oxide tank output inlet" + id_tag = ATMOS_GAS_MONITOR_OUTPUT_N2O +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/carbon_output + name = "carbon dioxide tank output inlet" + id_tag = ATMOS_GAS_MONITOR_OUTPUT_CO2 +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/incinerator_output + name = "incinerator chamber output inlet" + id_tag = ATMOS_GAS_MONITOR_OUTPUT_INCINERATOR + frequency = FREQ_ATMOS_CONTROL +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxins_mixing_output + name = "toxins mixing output inlet" + id_tag = ATMOS_GAS_MONITOR_OUTPUT_TOXINS_LAB + frequency = FREQ_ATMOS_CONTROL + +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/layer1 + piping_layer = 1 + icon_state = "vent_map-1" + +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/layer3 + piping_layer = 3 + icon_state = "map_vent-3" + +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/on + on = TRUE + icon_state = "vent_map_on-2" + +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/on/layer1 + piping_layer = 1 + icon_state = "vent_map_on-1" + +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/on/layer3 + piping_layer = 3 + icon_state = "map_vent_on-3" + +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon + pump_direction = SIPHONING + pressure_checks = INT_BOUND + internal_pressure_bound = 2000 + external_pressure_bound = 0 + +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/layer1 + piping_layer = 1 + icon_state = "vent_map-1" + +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/layer3 + piping_layer = 3 + icon_state = "map_vent-3" + +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/on + on = TRUE + icon_state = "vent_map_siphon_on-2" + +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/on/layer1 + piping_layer = 1 + icon_state = "vent_map_siphon_on-1" + +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/on/layer3 + piping_layer = 3 + icon_state = "vent_map_siphon_on-3" + +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/atmos + frequency = FREQ_ATMOS_STORAGE + on = TRUE + icon_state = "vent_map_siphon_on-2" + +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/atmos/air_output + name = "air mix tank output inlet" + id_tag = ATMOS_GAS_MONITOR_OUTPUT_AIR #undef INT_BOUND #undef EXT_BOUND diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm index ee819d4f74c4..14be89f373af 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm @@ -2,9 +2,10 @@ #define SCRUBBING 1 /obj/machinery/atmospherics/components/unary/vent_scrubber + icon_state = "scrub_map-2" + name = "air scrubber" desc = "Has a valve and pump attached to it." - icon_state = "scrub_map" use_power = IDLE_POWER_USE idle_power_usage = 10 active_power_usage = 60 @@ -28,16 +29,6 @@ pipe_state = "scrubber" -/obj/machinery/atmospherics/components/unary/vent_scrubber/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_scrubber/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - /obj/machinery/atmospherics/components/unary/vent_scrubber/New() ..() if(!id_tag) @@ -48,20 +39,6 @@ filter_types -= f filter_types += gas_id2path(f) -/obj/machinery/atmospherics/components/unary/vent_scrubber/on - on = TRUE - icon_state = "scrub_map_on" - -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - /obj/machinery/atmospherics/components/unary/vent_scrubber/Destroy() var/area/A = get_area(src) if (A) @@ -92,7 +69,9 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/update_icon_nopipes() cut_overlays() if(showpipe) - add_overlay(getpipeimage(icon, "scrub_cap", initialize_directions)) + var/image/cap = getpipeimage(icon, "scrub_cap", initialize_directions) + PIPING_LAYER_SHIFT(cap, piping_layer) + add_overlay(cap) if(welded) icon_state = "scrub_welded" @@ -325,6 +304,25 @@ playsound(loc, 'sound/weapons/bladeslice.ogg', 100, 1) +/obj/machinery/atmospherics/components/unary/vent_scrubber/layer1 + piping_layer = 1 + icon_state = "scrub_map-1" + +/obj/machinery/atmospherics/components/unary/vent_scrubber/layer3 + piping_layer = 3 + icon_state = "scrub_map-3" + +/obj/machinery/atmospherics/components/unary/vent_scrubber/on + on = TRUE + icon_state = "scrub_map_on-2" + +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1 + piping_layer = 1 + icon_state = "scrub_map_on-1" + +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3 + piping_layer = 3 + icon_state = "scrub_map_on-3" #undef SIPHONING #undef SCRUBBING diff --git a/code/modules/atmospherics/machinery/other/meter.dm b/code/modules/atmospherics/machinery/other/meter.dm index b10ff85ba0e9..4d66f9d81770 100644 --- a/code/modules/atmospherics/machinery/other/meter.dm +++ b/code/modules/atmospherics/machinery/other/meter.dm @@ -50,10 +50,9 @@ target = candidate setAttachLayer(candidate.piping_layer) -/obj/machinery/meter/proc/setAttachLayer(var/new_layer) +/obj/machinery/meter/proc/setAttachLayer(new_layer) target_layer = new_layer - pixel_x = (new_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_X - pixel_y = (new_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_Y + PIPING_LAYER_DOUBLE_SHIFT(src, target_layer) /obj/machinery/meter/process_atmos() if(!target) diff --git a/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm index b087859a47ca..4da053d3c814 100644 --- a/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm +++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm @@ -1,5 +1,4 @@ /obj/machinery/atmospherics/pipe/heat_exchanging - icon = 'icons/obj/atmospherics/pipes/heat.dmi' level = 2 var/minimum_temperature_difference = 20 var/thermal_conductivity = WINDOW_HEAT_TRANSFER_COEFFICIENT diff --git a/code/modules/atmospherics/machinery/pipes/heat_exchange/junction.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/junction.dm index 606693dddaae..ad5f65f9d3da 100644 --- a/code/modules/atmospherics/machinery/pipes/heat_exchange/junction.dm +++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/junction.dm @@ -1,6 +1,6 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/junction - icon = 'icons/obj/atmospherics/pipes/junction.dmi' - icon_state = "intact" + icon = 'icons/obj/atmospherics/pipes/he-junction.dmi' + icon_state = "pipe11-2" name = "junction" desc = "A one meter junction that connects regular and heat-exchanging pipe." @@ -15,21 +15,11 @@ construction_type = /obj/item/pipe/directional pipe_state = "junction" -/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - /obj/machinery/atmospherics/pipe/heat_exchanging/junction/SetInitDirections() switch(dir) - if(NORTH,SOUTH) + if(NORTH, SOUTH) initialize_directions = SOUTH|NORTH - if(EAST,WEST) + if(EAST, WEST) initialize_directions = WEST|EAST /obj/machinery/atmospherics/pipe/heat_exchanging/junction/getNodeConnects() @@ -37,5 +27,19 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/junction/isConnectable(obj/machinery/atmospherics/target, given_layer, he_type_check) if(dir == get_dir(target, src)) - return ..(target, given_layer, FALSE) //we want a normal pipe instead + return ..(target, given_layer, FALSE) //we want a normal pipe instead return ..(target, given_layer, TRUE) + +/obj/machinery/atmospherics/pipe/heat_exchanging/junction/update_icon() + icon_state = "pipe[nodes[1] ? "1" : "0"][nodes[2] ? "1" : "0"]-[piping_layer]" + update_layer() + update_alpha() + + +/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer1 + piping_layer = 1 + icon_state = "pipe11-1" + +/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer3 + piping_layer = 3 + icon_state = "pipe11-3" diff --git a/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold.dm index 6689905cf7e1..4d99c80bd6a9 100644 --- a/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold.dm +++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold.dm @@ -1,6 +1,8 @@ -//3-way manifold +//3-Way Manifold + /obj/machinery/atmospherics/pipe/heat_exchanging/manifold - icon_state = "manifold" + icon = 'icons/obj/atmospherics/pipes/he-manifold.dmi' + icon_state = "manifold-2" name = "pipe manifold" desc = "A manifold composed of regular pipes." @@ -13,74 +15,36 @@ construction_type = /obj/item/pipe/trinary pipe_state = "he_manifold" -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y + var/mutable_appearance/center -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y +/obj/machinery/atmospherics/pipe/manifold/Initialize() + icon_state = "" + center = mutable_appearance(icon, "manifold_center") + return ..() /obj/machinery/atmospherics/pipe/heat_exchanging/manifold/SetInitDirections() - switch(dir) - if(NORTH) - initialize_directions = EAST|SOUTH|WEST - if(SOUTH) - initialize_directions = WEST|NORTH|EAST - if(EAST) - initialize_directions = SOUTH|WEST|NORTH - if(WEST) - initialize_directions = NORTH|EAST|SOUTH + initialize_directions = NORTH|SOUTH|EAST|WEST + initialize_directions &= ~dir /obj/machinery/atmospherics/pipe/heat_exchanging/manifold/update_icon() - var/invis = invisibility ? "-f" : "" - - icon_state = "manifold_center[invis]" - cut_overlays() + PIPING_LAYER_DOUBLE_SHIFT(center, piping_layer) + add_overlay(center) + //Add non-broken pieces for(var/i in 1 to device_type) if(nodes[i]) - add_overlay(getpipeimage('icons/obj/atmospherics/pipes/heat.dmi', "manifold_intact[invis]", get_dir(src, nodes[i]))) + add_overlay( getpipeimage(icon, "pipe-[piping_layer]", get_dir(src, nodes[i])) ) -//4-way manifold -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w - icon_state = "manifold4w" + update_layer() + update_alpha() - name = "4-way pipe manifold" - desc = "A manifold composed of heat-exchanging pipes." - initialize_directions = NORTH|SOUTH|EAST|WEST +/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer1 + piping_layer = 1 + icon_state = "manifold-1" - device_type = QUATERNARY - - construction_type = /obj/item/pipe/quaternary - pipe_state = "he_manifold4w" - -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/SetInitDirections() - initialize_directions = initial(initialize_directions) - -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/update_icon() - var/invis = invisibility ? "-f" : "" - - icon_state = "manifold4w_center[invis]" - - cut_overlays() - - //Add non-broken pieces - for(var/i in 1 to device_type) - if(nodes[i]) - add_overlay(getpipeimage('icons/obj/atmospherics/pipes/heat.dmi', "manifold_intact[invis]", get_dir(src, nodes[i]))) +/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer3 + piping_layer = 3 + icon_state = "manifold-3" diff --git a/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold4w.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold4w.dm new file mode 100644 index 000000000000..516de3491a12 --- /dev/null +++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold4w.dm @@ -0,0 +1,48 @@ +//4-Way Manifold + +/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w + icon = 'icons/obj/atmospherics/pipes/he-manifold.dmi' + icon_state = "manifold4w" + + name = "4-way pipe manifold" + desc = "A manifold composed of heat-exchanging pipes." + + initialize_directions = NORTH|SOUTH|EAST|WEST + + device_type = QUATERNARY + + construction_type = /obj/item/pipe/quaternary + pipe_state = "he_manifold4w" + + var/mutable_appearance/center + +/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/Initialize() + icon_state = "" + center = mutable_appearance(icon, "manifold4w_center") + return ..() + +/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/SetInitDirections() + initialize_directions = initial(initialize_directions) + +/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/update_icon() + cut_overlays() + + PIPING_LAYER_DOUBLE_SHIFT(center, piping_layer) + add_overlay(center) + + //Add non-broken pieces + for(var/i in 1 to device_type) + if(nodes[i]) + add_overlay( getpipeimage(icon, "pipe-[piping_layer]", get_dir(src, nodes[i])) ) + + update_layer() + update_alpha() + + +/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/layer1 + piping_layer = 1 + icon_state = "manifold4w-1" + +/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/layer3 + piping_layer = 3 + icon_state = "manifold4w-3" diff --git a/code/modules/atmospherics/machinery/pipes/heat_exchange/simple.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/simple.dm index ad137a227d34..e3ed1a6c37af 100644 --- a/code/modules/atmospherics/machinery/pipes/heat_exchange/simple.dm +++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/simple.dm @@ -1,46 +1,39 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/simple - icon_state = "intact" + icon = 'icons/obj/atmospherics/pipes/he-simple.dmi' + icon_state = "pipe11-2" name = "pipe" desc = "A one meter section of heat-exchanging pipe." dir = SOUTH initialize_directions = SOUTH|NORTH + pipe_flags = PIPING_CARDINAL_AUTONORMALIZE device_type = BINARY construction_type = /obj/item/pipe/binary/bendable pipe_state = "he" -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - /obj/machinery/atmospherics/pipe/heat_exchanging/simple/SetInitDirections() if(dir in GLOB.diagonals) initialize_directions = dir + return switch(dir) - if(NORTH,SOUTH) + if(NORTH, SOUTH) initialize_directions = SOUTH|NORTH - if(EAST,WEST) - initialize_directions = WEST|EAST - -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/proc/normalize_dir() - if(dir==SOUTH) - setDir(NORTH) - else if(dir==WEST) - setDir(EAST) - -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/atmosinit() - normalize_dir() - ..() + if(EAST, WEST) + initialize_directions = EAST|WEST /obj/machinery/atmospherics/pipe/heat_exchanging/simple/update_icon() - normalize_dir() - ..() + icon_state = "pipe[nodes[1] ? "1" : "0"][nodes[2] ? "1" : "0"]-[piping_layer]" + update_layer() + update_alpha() + + +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer1 + piping_layer = 1 + icon_state = "pipe11-1" + +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer3 + piping_layer = 3 + icon_state = "pipe11-3" diff --git a/code/modules/atmospherics/machinery/pipes/layermanifold.dm b/code/modules/atmospherics/machinery/pipes/layermanifold.dm index b193a7a8bc59..68e796f8f536 100644 --- a/code/modules/atmospherics/machinery/pipes/layermanifold.dm +++ b/code/modules/atmospherics/machinery/pipes/layermanifold.dm @@ -1,5 +1,5 @@ /obj/machinery/atmospherics/pipe/layer_manifold - name = "pipe-layer manifold" + name = "layer adaptor" icon = 'icons/obj/atmospherics/pipes/manifold.dmi' icon_state = "manifoldlayer" desc = "A special pipe to bridge pipe layers with." @@ -9,14 +9,16 @@ piping_layer = PIPING_LAYER_DEFAULT device_type = 0 volume = 260 + construction_type = /obj/item/pipe/binary + pipe_state = "manifoldlayer" + var/list/front_nodes var/list/back_nodes - construction_type = /obj/item/pipe/binary - pipe_state = "layer_manifold" /obj/machinery/atmospherics/pipe/layer_manifold/Initialize() front_nodes = list() back_nodes = list() + icon_state = "manifoldlayer_center" return ..() /obj/machinery/atmospherics/pipe/layer_manifold/Destroy() @@ -36,30 +38,36 @@ return front_nodes + back_nodes + nodes /obj/machinery/atmospherics/pipe/layer_manifold/update_icon() //HEAVILY WIP FOR UPDATE ICONS!! - layer = (initial(layer) + (PIPING_LAYER_MAX * PIPING_LAYER_LCHANGE)) //This is above everything else. - var/invis = invisibility ? "-f" : "" - icon_state = "[initial(icon_state)][invis]" cut_overlays() - for(var/obj/machinery/atmospherics/A in front_nodes) - add_attached_image(A) - for(var/obj/machinery/atmospherics/A in back_nodes) - add_attached_image(A) + layer = initial(layer) + (PIPING_LAYER_MAX * PIPING_LAYER_LCHANGE) //This is above everything else. -/obj/machinery/atmospherics/pipe/layer_manifold/proc/add_attached_image(obj/machinery/atmospherics/A) - var/invis = A.invisibility ? "-f" : "" + for(var/node in front_nodes) + add_attached_images(node) + for(var/node in back_nodes) + add_attached_images(node) + + update_alpha() + +/obj/machinery/atmospherics/pipe/layer_manifold/proc/add_attached_images(obj/machinery/atmospherics/A) + if(!A) + return if(istype(A, /obj/machinery/atmospherics/pipe/layer_manifold)) - for(var/i = PIPING_LAYER_MIN, i <= PIPING_LAYER_MAX, i++) - var/image/I = getpipeimage('icons/obj/atmospherics/pipes/manifold.dmi', "manifold_full_layer_long[invis]", get_dir(src, A), A.pipe_color) - I.pixel_x = (i - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_X - I.pixel_y = (i - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_Y - I.layer = layer - 0.01 - add_overlay(I) + for(var/i in PIPING_LAYER_MIN to PIPING_LAYER_MAX) + add_attached_image(get_dir(src, A), i) + return + add_attached_image(get_dir(src, A), A.piping_layer, A.pipe_color) + +/obj/machinery/atmospherics/pipe/layer_manifold/proc/add_attached_image(p_dir, p_layer, p_color = null) + var/image/I + + if(p_color) + I = getpipeimage(icon, "pipe", p_dir, p_color) else - var/image/I = getpipeimage('icons/obj/atmospherics/pipes/manifold.dmi', "manifold_full_layer_long[invis]", get_dir(src, A), A.pipe_color) - I.pixel_x = A.pixel_x - I.pixel_y = A.pixel_y - I.layer = layer - 0.01 - add_overlay(I) + I = getpipeimage(icon, "pipe", p_dir) + + I.layer = layer - 0.01 + PIPING_LAYER_SHIFT(I, p_layer) + add_overlay(I) /obj/machinery/atmospherics/pipe/layer_manifold/SetInitDirections() switch(dir) diff --git a/code/modules/atmospherics/machinery/pipes/manifold.dm b/code/modules/atmospherics/machinery/pipes/manifold.dm index b089ebfa0a01..edbd1504e69b 100644 --- a/code/modules/atmospherics/machinery/pipes/manifold.dm +++ b/code/modules/atmospherics/machinery/pipes/manifold.dm @@ -1,9 +1,8 @@ -/* -3-Way Manifold -*/ +//3-Way Manifold + /obj/machinery/atmospherics/pipe/manifold icon = 'icons/obj/atmospherics/pipes/manifold.dmi' - icon_state = "manifold" + icon_state = "manifold-2" name = "pipe manifold" desc = "A manifold composed of regular pipes." @@ -16,399 +15,26 @@ construction_type = /obj/item/pipe/trinary pipe_state = "manifold" + var/mutable_appearance/center + +/obj/machinery/atmospherics/pipe/manifold/Initialize() + icon_state = "" + center = mutable_appearance(icon, "manifold_center") + return ..() + /obj/machinery/atmospherics/pipe/manifold/SetInitDirections() - switch(dir) - if(NORTH) - initialize_directions = EAST|SOUTH|WEST - if(SOUTH) - initialize_directions = WEST|NORTH|EAST - if(EAST) - initialize_directions = SOUTH|WEST|NORTH - if(WEST) - initialize_directions = NORTH|EAST|SOUTH + initialize_directions = NORTH|SOUTH|EAST|WEST + initialize_directions &= ~dir /obj/machinery/atmospherics/pipe/manifold/update_icon() - var/invis = invisibility ? "-f" : "" - - icon_state = "manifold_center[invis]" - cut_overlays() + PIPING_LAYER_DOUBLE_SHIFT(center, piping_layer) + add_overlay(center) //Add non-broken pieces for(var/i in 1 to device_type) if(nodes[i]) - add_overlay(getpipeimage('icons/obj/atmospherics/pipes/manifold.dmi', "manifold_full[invis]", get_dir(src, nodes[i]))) + add_overlay( getpipeimage(icon, "pipe-[piping_layer]", get_dir(src, nodes[i])) ) -//Colored pipes, use these for mapping -/obj/machinery/atmospherics/pipe/manifold/general - -/obj/machinery/atmospherics/pipe/manifold/general/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold/general/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/general/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/general/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold/general/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/general/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/scrubbers - name="scrubbers pipe" - pipe_color=rgb(255,0,0) - color=rgb(255,0,0) - -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/supply - name="air supply pipe" - pipe_color=rgb(0,0,255) - color=rgb(0,0,255) - -/obj/machinery/atmospherics/pipe/manifold/supply/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/supply/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/supplymain - name="main air supply pipe" - pipe_color=rgb(130,43,255) - color=rgb(130,43,255) - -/obj/machinery/atmospherics/pipe/manifold/supplymain/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold/supplymain/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/supplymain/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/yellow - pipe_color=rgb(255,198,0) - color=rgb(255,198,0) - -/obj/machinery/atmospherics/pipe/manifold/yellow/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold/yellow/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/yellow/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/yellow/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold/yellow/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/yellow/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/cyan - pipe_color=rgb(0,255,249) - color=rgb(0,255,249) - -/obj/machinery/atmospherics/pipe/manifold/cyan/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold/cyan/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/cyan/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/cyan/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold/cyan/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/cyan/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/green - pipe_color=rgb(30,255,0) - color=rgb(30,255,0) - -/obj/machinery/atmospherics/pipe/manifold/green/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold/green/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/green/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/green/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold/green/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/green/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/orange - pipe_color=rgb(255,129,25) - color=rgb(255,129,25) - -/obj/machinery/atmospherics/pipe/manifold/orange/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold/orange/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/orange/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/orange/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold/orange/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/orange/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/purple - pipe_color=rgb(128,0,182) - color=rgb(128,0,182) - -/obj/machinery/atmospherics/pipe/manifold/purple/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold/purple/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/purple/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/purple/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold/purple/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/purple/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/dark - pipe_color=rgb(69,69,69) - color=rgb(69,69,69) - -/obj/machinery/atmospherics/pipe/manifold/dark/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold/dark/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/dark/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/dark/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold/dark/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/dark/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/violet - pipe_color=rgb(64,0,128) - color=rgb(64,0,128) - -/obj/machinery/atmospherics/pipe/manifold/violet/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold/violet/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/violet/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/violet/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold/violet/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/violet/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/brown - pipe_color=rgb(178,100,56) - color=rgb(178,100,56) - -/obj/machinery/atmospherics/pipe/manifold/brown/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold/brown/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/brown/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/brown/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold/brown/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold/brown/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y + update_layer() + update_alpha() diff --git a/code/modules/atmospherics/machinery/pipes/manifold4w.dm b/code/modules/atmospherics/machinery/pipes/manifold4w.dm index 5dc68f160905..f96c7534c7e4 100644 --- a/code/modules/atmospherics/machinery/pipes/manifold4w.dm +++ b/code/modules/atmospherics/machinery/pipes/manifold4w.dm @@ -1,9 +1,8 @@ -/* -4-way manifold -*/ +//4-Way Manifold + /obj/machinery/atmospherics/pipe/manifold4w icon = 'icons/obj/atmospherics/pipes/manifold.dmi' - icon_state = "manifold4w" + icon_state = "manifold4w-2" name = "4-way pipe manifold" desc = "A manifold composed of regular pipes." @@ -15,391 +14,25 @@ construction_type = /obj/item/pipe/quaternary pipe_state = "manifold4w" + var/mutable_appearance/center + +/obj/machinery/atmospherics/pipe/manifold4w/Initialize() + icon_state = "" + center = mutable_appearance(icon, "manifold4w_center") + return ..() + /obj/machinery/atmospherics/pipe/manifold4w/SetInitDirections() initialize_directions = initial(initialize_directions) /obj/machinery/atmospherics/pipe/manifold4w/update_icon() - var/invis = invisibility ? "-f" : "" - - icon_state = "manifold4w_center[invis]" - cut_overlays() + PIPING_LAYER_DOUBLE_SHIFT(center, piping_layer) + add_overlay(center) //Add non-broken pieces for(var/i in 1 to device_type) if(nodes[i]) - add_overlay(getpipeimage('icons/obj/atmospherics/pipes/manifold.dmi', "manifold_full[invis]", get_dir(src, nodes[i]))) + add_overlay( getpipeimage(icon, "pipe-[piping_layer]", get_dir(src, nodes[i])) ) -//Colored pipes, use these for mapping -/obj/machinery/atmospherics/pipe/manifold4w/general - -/obj/machinery/atmospherics/pipe/manifold4w/general/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold4w/general/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/general/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/general/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold4w/general/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/general/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers - name="scrubbers pipe" - pipe_color=rgb(255,0,0) - color=rgb(255,0,0) - -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/supply - name="air supply pipe" - pipe_color=rgb(0,0,255) - color=rgb(0,0,255) - -/obj/machinery/atmospherics/pipe/manifold4w/supply/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold4w/supply/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/supply/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/supplymain - name="main air supply pipe" - pipe_color=rgb(130,43,255) - color=rgb(130,43,255) - -/obj/machinery/atmospherics/pipe/manifold4w/supplymain/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold4w/supplymain/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/supplymain/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/supplymain/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold4w/supplymain/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/supplymain/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/yellow - pipe_color=rgb(255,198,0) - color=rgb(255,198,0) - -/obj/machinery/atmospherics/pipe/manifold4w/yellow/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold4w/yellow/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/yellow/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/yellow/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold4w/yellow/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/yellow/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/cyan - pipe_color=rgb(0,255,249) - color=rgb(0,255,249) - -/obj/machinery/atmospherics/pipe/manifold4w/cyan/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold4w/cyan/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/cyan/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/cyan/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold4w/cyan/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/cyan/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/green - pipe_color=rgb(30,255,0) - color=rgb(30,255,0) - -/obj/machinery/atmospherics/pipe/manifold4w/green/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold4w/green/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/green/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/green/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold4w/green/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/green/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/orange - pipe_color=rgb(255,129,25) - color=rgb(255,129,25) - -/obj/machinery/atmospherics/pipe/manifold4w/orange/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold4w/orange/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/orange/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/orange/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold4w/orange/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/orange/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/purple - pipe_color=rgb(128,0,182) - color=rgb(128,0,182) - -/obj/machinery/atmospherics/pipe/manifold4w/purple/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold4w/purple/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/purple/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/purple/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold4w/purple/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/purple/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/dark - pipe_color=rgb(69,69,69) - color=rgb(69,69,69) - -/obj/machinery/atmospherics/pipe/manifold4w/dark/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold4w/dark/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/dark/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/dark/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold4w/dark/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/dark/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/violet - pipe_color=rgb(64,0,128) - color=rgb(64,0,128) - -/obj/machinery/atmospherics/pipe/manifold4w/violet/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold4w/violet/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/violet/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/violet/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold4w/violet/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/violet/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/brown - pipe_color=rgb(178,100,56) - color=rgb(178,100,56) - -/obj/machinery/atmospherics/pipe/manifold4w/brown/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/manifold4w/brown/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/brown/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/brown/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/manifold4w/brown/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/manifold4w/brown/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y + update_layer() + update_alpha() diff --git a/code/modules/atmospherics/machinery/pipes/mapping.dm b/code/modules/atmospherics/machinery/pipes/mapping.dm new file mode 100644 index 000000000000..ef6f20fb3566 --- /dev/null +++ b/code/modules/atmospherics/machinery/pipes/mapping.dm @@ -0,0 +1,64 @@ +//Colored pipes, use these for mapping + +#define HELPER_PARTIAL(Fulltype, Iconbase, Color) \ + ##Fulltype { \ + pipe_color = Color; \ + color = Color; \ + } \ + ##Fulltype/visible { \ + level = PIPE_VISIBLE_LEVEL; \ + layer = GAS_PIPE_VISIBLE_LAYER; \ + } \ + ##Fulltype/visible/layer1 { \ + piping_layer = 1; \ + icon_state = Iconbase + "-1"; \ + } \ + ##Fulltype/visible/layer3 { \ + piping_layer = 3; \ + icon_state = Iconbase + "-3"; \ + } \ + ##Fulltype/hidden { \ + level = PIPE_HIDDEN_LEVEL; \ + } \ + ##Fulltype/hidden/layer1 { \ + piping_layer = 1; \ + icon_state = Iconbase + "-1"; \ + } \ + ##Fulltype/hidden/layer3 { \ + piping_layer = 3; \ + icon_state = Iconbase + "-3"; \ + } + +#define HELPER_PARTIAL_NAMED(Fulltype, Iconbase, Name, Color) \ + HELPER_PARTIAL(Fulltype, Iconbase, Color) \ + ##Fulltype { \ + name = Name; \ + } + +#define HELPER(Type, Color) \ + HELPER_PARTIAL(/obj/machinery/atmospherics/pipe/simple/##Type, "pipe11", Color) \ + HELPER_PARTIAL(/obj/machinery/atmospherics/pipe/manifold/##Type, "manifold", Color) \ + HELPER_PARTIAL(/obj/machinery/atmospherics/pipe/manifold4w/##Type, "manifold4w", Color) + +#define HELPER_NAMED(Type, Name, Color) \ + HELPER_PARTIAL_NAMED(/obj/machinery/atmospherics/pipe/simple/##Type, "pipe11", Name, Color) \ + HELPER_PARTIAL_NAMED(/obj/machinery/atmospherics/pipe/manifold/##Type, "manifold", Name, Color) \ + HELPER_PARTIAL_NAMED(/obj/machinery/atmospherics/pipe/manifold4w/##Type, "manifold4w", Name, Color) + +HELPER(general, null) +HELPER(yellow, rgb(255, 198, 0)) +HELPER(cyan, rgb(0, 255, 249)) +HELPER(green, rgb(30, 255, 0)) +HELPER(orange, rgb(255, 129, 25)) +HELPER(purple, rgb(128, 0, 182)) +HELPER(dark, rgb(69, 69, 69)) +HELPER(brown, rgb(64, 0, 128)) + +HELPER_NAMED(scrubbers, "scrubbers pipe", rgb(255, 0, 0)) +HELPER_NAMED(supply, "air supply pipe", rgb(0, 0, 255)) +HELPER_NAMED(supplymain, "main air supply pipe", rgb(130, 43, 255)) + +#undef HELPER_NAMED +#undef HELPER +#undef HELPER_PARTIAL_NAMED +#undef HELPER_PARTIAL diff --git a/code/modules/atmospherics/machinery/pipes/pipes.dm b/code/modules/atmospherics/machinery/pipes/pipes.dm index 0879b30b13c8..1e513b846c50 100644 --- a/code/modules/atmospherics/machinery/pipes/pipes.dm +++ b/code/modules/atmospherics/machinery/pipes/pipes.dm @@ -32,14 +32,6 @@ parent = new parent.build_pipeline(src) -/obj/machinery/atmospherics/pipe/update_icon() //overridden by manifolds - if(nodes[1] && nodes[2]) - icon_state = "intact[invisibility ? "-f" : "" ]" - else - var/have_node1 = nodes[1] ? TRUE : FALSE - var/have_node2 = nodes[2] ? TRUE : FALSE - icon_state = "exposed[have_node1][have_node2][invisibility ? "-f" : "" ]" - /obj/machinery/atmospherics/pipe/atmosinit() var/turf/T = loc // hide if turf is not intact hide(T.intact) @@ -93,6 +85,13 @@ qdel(meter) . = ..() +/obj/machinery/atmospherics/pipe/update_icon() + . = ..() + update_alpha() + +/obj/machinery/atmospherics/pipe/proc/update_alpha() + alpha = invisibility ? 64 : 255 + /obj/machinery/atmospherics/pipe/proc/update_node_icon() for(var/i in 1 to device_type) if(nodes[i]) diff --git a/code/modules/atmospherics/machinery/pipes/simple.dm b/code/modules/atmospherics/machinery/pipes/simple.dm index dbe67a159460..40afb39ec1b3 100644 --- a/code/modules/atmospherics/machinery/pipes/simple.dm +++ b/code/modules/atmospherics/machinery/pipes/simple.dm @@ -1,11 +1,9 @@ -/* -Simple Pipe -The regular pipe you see everywhere, including bent ones. -*/ +// Simple Pipe +// The regular pipe you see everywhere, including bent ones. /obj/machinery/atmospherics/pipe/simple icon = 'icons/obj/atmospherics/pipes/simple.dmi' - icon_state = "intact" + icon_state = "pipe11-2" name = "pipe" desc = "A one meter section of regular pipe." @@ -20,385 +18,16 @@ The regular pipe you see everywhere, including bent ones. pipe_state = "simple" /obj/machinery/atmospherics/pipe/simple/SetInitDirections() - normalize_cardinal_directions() if(dir in GLOB.diagonals) initialize_directions = dir + return switch(dir) - if(NORTH,SOUTH) + if(NORTH, SOUTH) initialize_directions = SOUTH|NORTH - if(EAST,WEST) + if(EAST, WEST) initialize_directions = EAST|WEST -//Colored pipes, use these for mapping -/obj/machinery/atmospherics/pipe/simple/general - -/obj/machinery/atmospherics/pipe/simple/general/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/general/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/general/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/general/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/general/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/general/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/scrubbers - name="scrubbers pipe" - pipe_color=rgb(255,0,0) - color=rgb(255,0,0) - -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/supply - name="air supply pipe" - pipe_color=rgb(0,0,255) - color=rgb(0,0,255) - -/obj/machinery/atmospherics/pipe/simple/supply/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/supply/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/supply/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/supply/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/supplymain - name="main air supply pipe" - pipe_color=rgb(130,43,255) - color=rgb(130,43,255) - -/obj/machinery/atmospherics/pipe/simple/supplymain/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/supplymain/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/supplymain/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/supplymain/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/supplymain/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/supplymain/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/yellow - pipe_color=rgb(255,198,0) - color=rgb(255,198,0) - -/obj/machinery/atmospherics/pipe/simple/yellow/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/yellow/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/yellow/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/yellow/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/yellow/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/yellow/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/cyan - pipe_color=rgb(0,255,249) - color=rgb(0,255,249) - -/obj/machinery/atmospherics/pipe/simple/cyan/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/cyan/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/cyan/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/cyan/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/green - pipe_color=rgb(30,255,0) - color=rgb(30,255,0) - -/obj/machinery/atmospherics/pipe/simple/green/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/green/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/green/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/green/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/green/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/green/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/orange - pipe_color=rgb(255,129,25) - color=rgb(255,129,25) - -/obj/machinery/atmospherics/pipe/simple/orange/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/orange/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/orange/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/orange/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/orange/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/orange/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/purple - pipe_color=rgb(128,0,182) - color=rgb(128,0,182) - -/obj/machinery/atmospherics/pipe/simple/purple/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/purple/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/purple/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/purple/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/dark - pipe_color=rgb(69,69,69) - color=rgb(69,69,69) - -/obj/machinery/atmospherics/pipe/simple/dark/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/dark/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/dark/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/dark/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/violet - pipe_color=rgb(64,0,128) - color=rgb(64,0,128) - -/obj/machinery/atmospherics/pipe/simple/violet/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/violet/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/violet/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/violet/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/violet/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/violet/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/brown - pipe_color=rgb(178,100,56) - color=rgb(178,100,56) - -/obj/machinery/atmospherics/pipe/simple/brown/visible - level = PIPE_VISIBLE_LEVEL - layer = GAS_PIPE_VISIBLE_LAYER - -/obj/machinery/atmospherics/pipe/simple/brown/visible/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/brown/visible/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/brown/hidden - level = PIPE_HIDDEN_LEVEL - -/obj/machinery/atmospherics/pipe/simple/brown/hidden/layer1 - piping_layer = PIPING_LAYER_MIN - pixel_x = -PIPING_LAYER_P_X - pixel_y = -PIPING_LAYER_P_Y - -/obj/machinery/atmospherics/pipe/simple/brown/hidden/layer3 - piping_layer = PIPING_LAYER_MAX - pixel_x = PIPING_LAYER_P_X - pixel_y = PIPING_LAYER_P_Y +/obj/machinery/atmospherics/pipe/simple/update_icon() + icon_state = "pipe[nodes[1] ? "1" : "0"][nodes[2] ? "1" : "0"]-[piping_layer]" + update_layer() + update_alpha() diff --git a/icons/obj/atmospherics/components/binary_devices.dmi b/icons/obj/atmospherics/components/binary_devices.dmi index 9c6a1b6a1f0886b2acc4758e1e35700ce4908171..3b47dddffcfedf35b7c432a2daef2b7d842bc4f3 100644 GIT binary patch literal 41056 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 literal 37683 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%0AHz^0d=f8e!2@!l@jhmvA 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 literal 40611 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 D0o6wbNF0=;Om5-N_aO&Xhc*)^NWY&lre~) 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 diff --git a/icons/obj/atmospherics/components/unary_devices.dmi b/icons/obj/atmospherics/components/unary_devices.dmi index e54f6034e463e45194076dd92a5206cc9e3c7c86..c888f25c05546d8a4cb920d3381a73b1df88f072 100644 GIT binary patch literal 77244 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