diff --git a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm index 95822a4c2e5..a3485917896 100644 --- a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm +++ b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm @@ -26,13 +26,33 @@ var/broadcast_status_next_process = FALSE +/obj/machinery/atmospherics/binary/passive_gate/scrubbers + name = "scrubbers pressure regulator" + desc = "A one-way air valve that can be used to regulate input or output pressure, and flow rate. This is one is for scrubber pipes." + icon_state = "map-scrubbers" + connect_types = CONNECT_TYPE_SCRUBBER + icon_connect_type = "-scrubbers" + + unlocked = TRUE + target_pressure = 200 + +/obj/machinery/atmospherics/binary/passive_gate/supply + name = "supply pressure regulator" + desc = "A one-way air valve that can be used to regulate input or output pressure, and flow rate. This is one is for supply pipes." + icon_state = "map-supply" + connect_types = CONNECT_TYPE_SUPPLY + icon_connect_type = "-supply" + + unlocked = TRUE + target_pressure = 200 + /obj/machinery/atmospherics/binary/passive_gate/Initialize() . = ..() air1.volume = ATMOS_DEFAULT_VOLUME_PUMP * 2.5 air2.volume = ATMOS_DEFAULT_VOLUME_PUMP * 2.5 /obj/machinery/atmospherics/binary/passive_gate/update_icon() - icon_state = (unlocked && flowing)? "on" : "off" + icon_state = (unlocked && flowing)? "on" + icon_connect_type : "off" + icon_connect_type /obj/machinery/atmospherics/binary/passive_gate/update_underlays() if(..()) @@ -40,8 +60,8 @@ var/turf/T = get_turf(src) if(!istype(T)) return - add_underlay(T, node1, turn(dir, 180)) - add_underlay(T, node2, dir) + add_underlay(T, node1, turn(dir, 180), node1.icon_connect_type) + add_underlay(T, node2, dir, node2.icon_connect_type) /obj/machinery/atmospherics/binary/passive_gate/hide(var/i) update_underlays() diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index f4c86b9461f..82ba7411c29 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -51,6 +51,9 @@ Buildable meters ///// Mirrored T-valve ~ because I couldn't be bothered re-sorting all of the defines #define PIPE_MTVALVEM 43 +#define PIPE_PASSIVE_GATE_SCRUBBER 44 +#define PIPE_PASSIVE_GATE_SUPPLY 45 + /obj/item/pipe name = "pipe" desc = "A pipe" @@ -131,6 +134,10 @@ Buildable meters src.pipe_type = PIPE_GAS_MIXER else if(istype(make_from, /obj/machinery/atmospherics/unary/vent_scrubber)) src.pipe_type = PIPE_SCRUBBER + else if(istype(make_from, /obj/machinery/atmospherics/binary/passive_gate/scrubbers)) + src.pipe_type = PIPE_PASSIVE_GATE_SCRUBBER + else if(istype(make_from, /obj/machinery/atmospherics/binary/passive_gate/supply)) + src.pipe_type = PIPE_PASSIVE_GATE_SUPPLY else if(istype(make_from, /obj/machinery/atmospherics/binary/passive_gate)) src.pipe_type = PIPE_PASSIVE_GATE else if(istype(make_from, /obj/machinery/atmospherics/unary/heat_exchanger)) @@ -254,7 +261,9 @@ Buildable meters "scrubbers pipe down", "supply pipe cap", "scrubbers pipe cap", - "t-valve m" + "t-valve m", + "scrubbers pressure regulator", + "supply pressure regulator" ) name = nlist[pipe_type+1] + " fitting" var/list/islist = list( @@ -304,7 +313,9 @@ Buildable meters "cap", "cap", "cap", - "mtvalvem" + "mtvalvem", + "passivegate-scrubbers", + "passivegate-supply" ) icon_state = islist[pipe_type + 1] @@ -360,6 +371,8 @@ Buildable meters PIPE_PUMP , PIPE_VOLUME_PUMP , PIPE_PASSIVE_GATE , + PIPE_PASSIVE_GATE_SCRUBBER , + PIPE_PASSIVE_GATE_SUPPLY , PIPE_MVALVE, PIPE_SUPPLY_STRAIGHT, PIPE_SCRUBBERS_STRAIGHT, @@ -1033,6 +1046,40 @@ Buildable meters P.node2.atmos_init() P.node2.build_network() + if(PIPE_PASSIVE_GATE_SCRUBBER) + var/obj/machinery/atmospherics/binary/passive_gate/scrubbers/P = new(src.loc) + P.set_dir(dir) + P.initialize_directions = pipe_dir + if (pipename) + P.name = pipename + var/turf/T = P.loc + P.level = !T.is_plating() ? 2 : 1 + P.atmos_init() + P.build_network() + if (P.node1) + P.node1.atmos_init() + P.node1.build_network() + if (P.node2) + P.node2.atmos_init() + P.node2.build_network() + + if(PIPE_PASSIVE_GATE_SUPPLY) + var/obj/machinery/atmospherics/binary/passive_gate/supply/P = new(src.loc) + P.set_dir(dir) + P.initialize_directions = pipe_dir + if (pipename) + P.name = pipename + var/turf/T = P.loc + P.level = !T.is_plating() ? 2 : 1 + P.atmos_init() + P.build_network() + if (P.node1) + P.node1.atmos_init() + P.node1.build_network() + if (P.node2) + P.node2.atmos_init() + P.node2.build_network() + if(PIPE_VOLUME_PUMP) //volume pump var/obj/machinery/atmospherics/binary/pump/high_power/P = new(src.loc) P.set_dir(dir) @@ -1238,4 +1285,6 @@ Buildable meters #undef PIPE_SUPPLY_MANIFOLD #undef PIPE_SCRUBBERS_MANIFOLD #undef PIPE_UNIVERSAL +#undef PIPE_PASSIVE_GATE_SCRUBBER +#undef PIPE_PASSIVE_GATE_SUPPLY //#undef PIPE_MANIFOLD4W diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm index c424cd344c7..9bbf5afec02 100644 --- a/code/game/machinery/pipe/pipe_dispenser.dm +++ b/code/game/machinery/pipe/pipe_dispenser.dm @@ -47,6 +47,8 @@ Unary Vent
Gas Pump
Pressure Regulator
+Scrubbers Pressure Regulator
+Supply Pressure Regulator
High Power Gas Pump
Scrubber
Meter
diff --git a/html/changelogs/Ferner-210228-coding_regulators.yml b/html/changelogs/Ferner-210228-coding_regulators.yml new file mode 100644 index 00000000000..aad22e091d2 --- /dev/null +++ b/html/changelogs/Ferner-210228-coding_regulators.yml @@ -0,0 +1,4 @@ +author: Ferner +delete-after: True +changes: + - rscadd: "Added supply/scrubber specific pressure regulators." \ No newline at end of file diff --git a/icons/atmos/passive_gate.dmi b/icons/atmos/passive_gate.dmi index df8c3897861..ff8cf2419ab 100644 Binary files a/icons/atmos/passive_gate.dmi and b/icons/atmos/passive_gate.dmi differ diff --git a/icons/obj/pipe-item.dmi b/icons/obj/pipe-item.dmi index 1ad833316d1..763a616353d 100644 Binary files a/icons/obj/pipe-item.dmi and b/icons/obj/pipe-item.dmi differ