From 27e868a3da518cec9b2c50a68ca237b62b762d60 Mon Sep 17 00:00:00 2001 From: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Date: Wed, 10 Sep 2025 13:36:36 +0530 Subject: [PATCH] Refactors how air sensors & atmos monitors connect (#92849) ## About The Pull Request **1. Qol** - Air sensors(maploaded & hand crafted) now auto connect to any input ports & output valves that are within a 4 tile radius from it meaning there is no need for these ports to have unique IDs attached to them & you don't need a multitool to link them together if you first placed those ports & then placed the air sensor close to them - Atmos control monitors now finds all air sensors that are closest to it within the same z level meaning you can have/place multiple air sensors of the same type on the same z level & the monitor will locate them correctly without any ambiguity **2. Refactor** - Removed var `chamber_id` from both injectors & vents meaning you don't need to have unique ids assigned to them. As long as mappers/players put them within 4 tile radius from the air sensor it will auto connect to them - Removed var `GLOB.map_loaded_sensors` ## Changelog :cl: qol: hand crafted air sensors now auto connect to input & output ports if they are located within a 4 tile radius from it qol: atmos control monitors now locate all air sensors nearest to in on that same z level meaning you can have multiple air sensors of the same type on the same map refactor: refactored how air sensors & atmos monitors connect to each other. Please report any atmos computers that have missing input valves/output ports on their connected air sensors or those that don't list any air sensors at all on github /:cl: --------- Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> --- .../icemoon_underground_syndielab.dmm | 3 +- .../LavaRuins/lavaland_surface_gas.dmm | 15 +-- .../lavaland_surface_syndicate_base1.dmm | 20 +--- .../SpaceRuins/dangerous_research.dmm | 2 - _maps/RandomRuins/SpaceRuins/deepstorage.dmm | 20 +--- _maps/RandomRuins/SpaceRuins/interdyne.dmm | 1 - .../SpaceRuins/mrow_thats_right.dmm | 13 +-- _maps/RandomRuins/SpaceRuins/oldstation.dmm | 12 +- .../SpaceRuins/russian_derelict.dmm | 16 +-- .../RandomRuins/SpaceRuins/thelizardsgas.dmm | 5 +- _maps/RandomZLevels/snowdin.dmm | 7 -- _maps/RandomZLevels/undergroundoutpost45.dmm | 14 +-- _maps/map_files/tramstation/tramstation.dmm | 6 +- _maps/shuttles/emergency_humpback.dmm | 3 +- _maps/templates/lazy_templates/nukie_base.dmm | 1 - .../computer/atmos_computers/__identifiers.dm | 8 -- .../computer/atmos_computers/_air_sensor.dm | 110 +++++++++++------- .../atmos_computers/_atmos_control.dm | 105 +++++++++-------- .../computer/atmos_computers/inlets.dm | 31 ----- .../computer/atmos_computers/meters.dm | 4 +- .../computer/atmos_computers/outlets.dm | 27 ----- .../machinery/air_alarm/_air_alarm.dm | 6 +- .../components/unary_devices/vent_pump.dm | 3 - .../92849_atmos_monitor_sensor_connect.txt | 3 + 24 files changed, 160 insertions(+), 275 deletions(-) create mode 100644 tools/UpdatePaths/Scripts/92849_atmos_monitor_sensor_connect.txt diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_syndielab.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_syndielab.dmm index 831f52b70da..0ce6fd74481 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_syndielab.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_syndielab.dmm @@ -672,8 +672,7 @@ }, /obj/structure/flora/bush, /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/oxygen_output{ - dir = 1; - chamber_id = "syndielab_biodome" + dir = 1 }, /turf/open/floor/grass{ initial_gas_mix = "o2=1000;n2=1100;TEMP=280" diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_gas.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_gas.dmm index ae743175f17..d03c2800eea 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_gas.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_gas.dmm @@ -70,8 +70,7 @@ "dC" = ( /obj/structure/sign/warning/fire/directional/north, /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/plasma_input{ - dir = 4; - chamber_id = "lizardgaslava" + dir = 4 }, /turf/open/floor/engine/plasma{ initial_gas_mix = "plasma=30000;TEMP=293.15" @@ -134,8 +133,7 @@ /area/ruin/thelizardsgas_lavaland) "fO" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/plasma_output{ - dir = 8; - chamber_id = "lizardgaslava" + dir = 8 }, /turf/open/floor/engine/plasma{ initial_gas_mix = "plasma=30000;TEMP=293.15" @@ -401,8 +399,7 @@ "rv" = ( /obj/structure/sign/warning/fire/directional/north, /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/plasma_output{ - dir = 8; - chamber_id = "lizardgaslava" + dir = 8 }, /turf/open/floor/engine/plasma{ initial_gas_mix = "plasma=30000;TEMP=293.15" @@ -649,8 +646,7 @@ /area/ruin/thelizardsgas_lavaland) "BU" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/plasma_input{ - dir = 4; - chamber_id = "lizardgaslava" + dir = 4 }, /turf/open/floor/engine/plasma{ initial_gas_mix = "plasma=30000;TEMP=293.15" @@ -882,8 +878,7 @@ /area/ruin/thelizardsgas_lavaland) "JK" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/plasma_output{ - dir = 8; - chamber_id = "lizardgaslava" + dir = 8 }, /obj/item/toy/plush/lizard_plushie/space/green{ desc = "A famous lizard, in plushy form."; diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm index bbc09f38f59..bd903799d9f 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm @@ -1515,8 +1515,7 @@ /area/ruin/syndicate_lava_base/medbay) "lP" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - dir = 8; - chamber_id = "lavalandsyndieo2" + dir = 8 }, /turf/open/floor/engine/o2, /area/ruin/syndicate_lava_base/engineering) @@ -1774,8 +1773,7 @@ /area/ruin/syndicate_lava_base/engineering) "nR" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - dir = 8; - chamber_id = "lavalandsyndieplasma" + dir = 8 }, /turf/open/floor/engine/plasma, /area/ruin/syndicate_lava_base/engineering) @@ -1881,7 +1879,6 @@ /area/ruin/syndicate_lava_base/engineering) "oM" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "lavalandsyndien2"; dir = 8 }, /turf/open/floor/engine/n2, @@ -2664,8 +2661,7 @@ /area/ruin/syndicate_lava_base/engineering) "zU" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - dir = 8; - chamber_id = "lavalandsyndien2" + dir = 8 }, /turf/open/floor/engine/n2, /area/ruin/syndicate_lava_base/engineering) @@ -2678,7 +2674,6 @@ /area/ruin/syndicate_lava_base/bar) "Ab" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "lavalandsyndieo2"; dir = 8 }, /turf/open/floor/engine/o2, @@ -3382,9 +3377,7 @@ /turf/open/floor/carpet/red, /area/ruin/syndicate_lava_base/dormitories) "JV" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "lavalandsyndieco2" - }, +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored, /turf/open/floor/engine/co2, /area/ruin/syndicate_lava_base/engineering) "Ks" = ( @@ -3868,7 +3861,6 @@ /area/ruin/syndicate_lava_base/main) "Ry" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "lavalandsyndieplasma"; dir = 8 }, /turf/open/floor/engine/plasma, @@ -4104,9 +4096,7 @@ /turf/open/floor/iron/dark, /area/ruin/syndicate_lava_base/main) "Uw" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "lavalandsyndieco2" - }, +/obj/machinery/atmospherics/components/unary/outlet_injector/monitored, /turf/open/floor/engine/co2, /area/ruin/syndicate_lava_base/engineering) "Uz" = ( diff --git a/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm b/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm index 9f702e2fc05..10fde28bef9 100644 --- a/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm +++ b/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm @@ -1375,7 +1375,6 @@ /area/ruin/space/has_grav/dangerous_research/lab) "rA" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "asrc_b"; dir = 8 }, /turf/open/floor/engine/air, @@ -3719,7 +3718,6 @@ /area/ruin/space/has_grav/dangerous_research) "Xb" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "asrc_a"; dir = 8 }, /turf/open/floor/engine/airless, diff --git a/_maps/RandomRuins/SpaceRuins/deepstorage.dmm b/_maps/RandomRuins/SpaceRuins/deepstorage.dmm index f9235a874b0..9f560335da0 100644 --- a/_maps/RandomRuins/SpaceRuins/deepstorage.dmm +++ b/_maps/RandomRuins/SpaceRuins/deepstorage.dmm @@ -1048,7 +1048,6 @@ /area/ruin/space/has_grav/deepstorage/power) "fC" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "deepo2"; dir = 8 }, /turf/open/floor/plating/airless, @@ -1196,13 +1195,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/ruin/space/has_grav/deepstorage/power) -"gv" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "deepn2"; - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/deepstorage/power) "gw" = ( /obj/machinery/sleeper{ dir = 4 @@ -1286,7 +1278,6 @@ /area/ruin/space/has_grav/deepstorage/power) "gP" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "deepn2"; dir = 8 }, /turf/open/floor/plating/airless, @@ -1581,13 +1572,6 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron/cafeteria, /area/ruin/space/has_grav/deepstorage/kitchen) -"qm" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "deepo2"; - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/deepstorage/power) "qq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 1 @@ -4507,9 +4491,9 @@ fb fp fC fL -qm +gP fp -gv +fC gD gP fp diff --git a/_maps/RandomRuins/SpaceRuins/interdyne.dmm b/_maps/RandomRuins/SpaceRuins/interdyne.dmm index 6df9519ce8f..ae2a3578e2f 100644 --- a/_maps/RandomRuins/SpaceRuins/interdyne.dmm +++ b/_maps/RandomRuins/SpaceRuins/interdyne.dmm @@ -464,7 +464,6 @@ /area/ruin/space/has_grav/interdyne) "tm" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "interdyne_atmos"; dir = 1; pipe_color = "#0000FF" }, diff --git a/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm b/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm index 729e9ddf044..0d2dc322660 100644 --- a/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm +++ b/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm @@ -135,7 +135,6 @@ /obj/effect/decal/cleanable/blood/old, /obj/machinery/light/small/directional/north, /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "catstation1"; dir = 1 }, /turf/open/floor/plating, @@ -151,7 +150,6 @@ "aB" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "catstation2"; dir = 1 }, /turf/open/floor/plating, @@ -351,7 +349,6 @@ "bk" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "catstation3"; dir = 4 }, /turf/open/floor/plating, @@ -477,7 +474,6 @@ /obj/effect/decal/cleanable/blood/old, /obj/machinery/light/small/directional/south, /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "catstation4"; dir = 4 }, /turf/open/floor/plating, @@ -538,9 +534,7 @@ "bP" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/old, -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "catstation6" - }, +/obj/machinery/atmospherics/components/unary/outlet_injector/monitored, /turf/open/floor/plating, /area/ruin/space/has_grav/powered/cat_man) "bQ" = ( @@ -678,7 +672,6 @@ /area/ruin/space/has_grav/powered/cat_man) "cl" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "catstationsupply"; dir = 8 }, /turf/open/floor/plating/airless, @@ -801,9 +794,7 @@ /area/ruin/space/has_grav/powered/cat_man) "jc" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "catstation5" - }, +/obj/machinery/atmospherics/components/unary/outlet_injector/monitored, /turf/open/floor/plating, /area/ruin/space/has_grav/powered/cat_man) "lQ" = ( diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm index 6dfeb3dd0ef..acfff23fc4d 100644 --- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm @@ -6411,8 +6411,7 @@ /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/window/reinforced/spawner/directional/south, /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - dir = 8; - chamber_id = "beta-o2" + dir = 8 }, /turf/open/floor/engine/o2, /area/ruin/space/ancientstation/beta/atmos) @@ -7845,8 +7844,7 @@ "TB" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - dir = 8; - chamber_id = "beta-o2" + dir = 8 }, /obj/machinery/light/small/directional/north, /turf/open/floor/engine/o2, @@ -8233,8 +8231,7 @@ /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/window/reinforced/spawner/directional/north, /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - dir = 8; - chamber_id = "beta-n2" + dir = 8 }, /turf/open/floor/engine/n2, /area/ruin/space/ancientstation/beta/atmos) @@ -8326,8 +8323,7 @@ "XA" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - dir = 8; - chamber_id = "beta-n2" + dir = 8 }, /obj/machinery/light/small/directional/south, /turf/open/floor/engine/n2, diff --git a/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm b/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm index 82da41ac206..98831dd9d2b 100644 --- a/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm +++ b/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm @@ -1806,9 +1806,7 @@ /turf/open/floor/plating/airless, /area/ruin/space/ks13/science/ordnance_hall) "rN" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "ks13" - }, +/obj/machinery/atmospherics/components/unary/outlet_injector/monitored, /turf/open/floor/engine/air{ initial_gas_mix = "o2=20000;n2=80000;TEMP=293.15" }, @@ -4914,9 +4912,7 @@ /turf/open/floor/plating/airless, /area/ruin/space/ks13/science/genetics) "HU" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "ks13-2" - }, +/obj/machinery/atmospherics/components/unary/outlet_injector/monitored, /turf/open/floor/engine/airless, /area/ruin/space/ks13/engineering/atmos) "HV" = ( @@ -5860,9 +5856,7 @@ /turf/open/floor/plating/airless, /area/space/nearstation) "Nf" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "ks13" - }, +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored, /turf/open/floor/engine/air{ initial_gas_mix = "o2=20000;n2=80000;TEMP=293.15" }, @@ -6505,9 +6499,7 @@ /turf/open/floor/iron/airless, /area/ruin/space/ks13/service/cafe) "Qq" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "ks13-2" - }, +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored, /turf/open/floor/engine/airless, /area/ruin/space/ks13/engineering/atmos) "Qr" = ( diff --git a/_maps/RandomRuins/SpaceRuins/thelizardsgas.dmm b/_maps/RandomRuins/SpaceRuins/thelizardsgas.dmm index b07e336ac44..05d7ab995c5 100644 --- a/_maps/RandomRuins/SpaceRuins/thelizardsgas.dmm +++ b/_maps/RandomRuins/SpaceRuins/thelizardsgas.dmm @@ -126,9 +126,7 @@ /turf/open/floor/iron/white/side, /area/ruin/space/has_grav/thelizardsgas) "kS" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "lizardgas" - }, +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored, /turf/open/floor/engine/plasma{ initial_gas_mix = "plasma=35000;TEMP=293.15" }, @@ -478,7 +476,6 @@ /area/ruin/space/has_grav/thelizardsgas) "Uh" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "lizardgas"; dir = 4 }, /turf/open/floor/engine/plasma{ diff --git a/_maps/RandomZLevels/snowdin.dmm b/_maps/RandomZLevels/snowdin.dmm index fb7d88dc7bf..4921760709f 100644 --- a/_maps/RandomZLevels/snowdin.dmm +++ b/_maps/RandomZLevels/snowdin.dmm @@ -4905,42 +4905,36 @@ /area/awaymission/snowdin/cave/cavern) "rM" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "snowdinmix"; dir = 1 }, /turf/open/floor/engine/plasma, /area/awaymission/snowdin/post/engineering) "rN" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "snowdinmix"; dir = 1 }, /turf/open/floor/engine/plasma, /area/awaymission/snowdin/post/engineering) "rO" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "snowdino2"; dir = 1 }, /turf/open/floor/engine/o2, /area/awaymission/snowdin/post/engineering) "rP" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "snowdino2"; dir = 1 }, /turf/open/floor/engine/o2, /area/awaymission/snowdin/post/engineering) "rQ" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "snowdinn2"; dir = 1 }, /turf/open/floor/engine/n2, /area/awaymission/snowdin/post/engineering) "rR" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "snowdinn2"; dir = 1 }, /turf/open/floor/engine/n2, @@ -5124,7 +5118,6 @@ /area/awaymission/snowdin/post/engineering) "sC" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "snowdinincin"; dir = 1 }, /turf/open/floor/engine/vacuum, diff --git a/_maps/RandomZLevels/undergroundoutpost45.dmm b/_maps/RandomZLevels/undergroundoutpost45.dmm index 25dbeb28cc1..12aa7f7458b 100644 --- a/_maps/RandomZLevels/undergroundoutpost45.dmm +++ b/_maps/RandomZLevels/undergroundoutpost45.dmm @@ -4078,15 +4078,11 @@ /turf/open/floor/iron/dark, /area/awaymission/undergroundoutpost45/engineering) "pE" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "uo45air" - }, +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored, /turf/open/floor/engine/air, /area/awaymission/undergroundoutpost45/engineering) "pF" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "uo45air" - }, +/obj/machinery/atmospherics/components/unary/outlet_injector/monitored, /turf/open/floor/engine/air, /area/awaymission/undergroundoutpost45/engineering) "pG" = ( @@ -4915,7 +4911,6 @@ /area/awaymission/undergroundoutpost45/engineering) "sr" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "uo45mix"; dir = 8 }, /turf/open/floor/engine/vacuum, @@ -5086,7 +5081,6 @@ /area/awaymission/undergroundoutpost45/engineering) "te" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "uo45mix"; dir = 8 }, /turf/open/floor/engine/vacuum, @@ -5624,28 +5618,24 @@ /area/awaymission/undergroundoutpost45/engineering) "vd" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "uo45n2"; dir = 1 }, /turf/open/floor/engine/n2, /area/awaymission/undergroundoutpost45/engineering) "ve" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "uo45n2"; dir = 1 }, /turf/open/floor/engine/n2, /area/awaymission/undergroundoutpost45/engineering) "vf" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "uo45o2"; dir = 1 }, /turf/open/floor/engine/o2, /area/awaymission/undergroundoutpost45/engineering) "vg" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "uo45o2"; dir = 1 }, /turf/open/floor/engine/o2, diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index 816d2998012..e10de0b0b9e 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -36415,8 +36415,7 @@ /area/station/service/chapel) "lEt" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/oxygen_output{ - dir = 8; - chamber_id = "o2ordance" + dir = 8 }, /turf/open/floor/engine/o2, /area/station/science/ordnance/storage) @@ -58374,8 +58373,7 @@ /area/station/science/research) "txW" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/oxygen_input{ - dir = 4; - chamber_id = "o2ordance" + dir = 4 }, /turf/open/floor/engine/o2, /area/station/science/ordnance/storage) diff --git a/_maps/shuttles/emergency_humpback.dmm b/_maps/shuttles/emergency_humpback.dmm index 23e4c289186..527741ea48f 100644 --- a/_maps/shuttles/emergency_humpback.dmm +++ b/_maps/shuttles/emergency_humpback.dmm @@ -513,8 +513,7 @@ /area/shuttle/escape) "Dj" = ( /obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/monitored/air_output{ - dir = 1; - chamber_id = "evacair" + dir = 1 }, /obj/machinery/light/small/directional/east, /turf/open/floor/engine/air, diff --git a/_maps/templates/lazy_templates/nukie_base.dmm b/_maps/templates/lazy_templates/nukie_base.dmm index 846234583c9..5fd2cb52633 100644 --- a/_maps/templates/lazy_templates/nukie_base.dmm +++ b/_maps/templates/lazy_templates/nukie_base.dmm @@ -2100,7 +2100,6 @@ /area/centcom/syndicate_mothership) "wY" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ - chamber_id = "nukiebase"; desc = "Has a valve and pump attached to it. Slightly more menacing than Nanotrasen's standard."; dir = 1; name = "syndicate air injector" diff --git a/code/game/machinery/computer/atmos_computers/__identifiers.dm b/code/game/machinery/computer/atmos_computers/__identifiers.dm index be1f01aecb5..222f59ed197 100644 --- a/code/game/machinery/computer/atmos_computers/__identifiers.dm +++ b/code/game/machinery/computer/atmos_computers/__identifiers.dm @@ -32,14 +32,6 @@ #define ATMOS_GAS_MONITOR_WASTE "waste" #define ATMOS_GAS_MONITOR_ENGINE "engine" -///maps an air sensor's chamber id to its input valve[ i.e. outlet_injector] id -#define CHAMBER_INPUT_FROM_ID(chamber_id) ((chamber_id) + "_in") -///maps an air sensor's chamber id to its output valve[i.e. vent pump] id -#define CHAMBER_OUTPUT_FROM_ID(chamber_id) ((chamber_id) + "_out") - -///list of all air sensor's created round start -GLOBAL_LIST_EMPTY(map_loaded_sensors) - // Human-readble names of these funny tags. GLOBAL_LIST_INIT(station_gas_chambers, list( ATMOS_GAS_MONITOR_O2 = "Oxygen Supply", diff --git a/code/game/machinery/computer/atmos_computers/_air_sensor.dm b/code/game/machinery/computer/atmos_computers/_air_sensor.dm index 3101d728b87..ad870c9520b 100644 --- a/code/game/machinery/computer/atmos_computers/_air_sensor.dm +++ b/code/game/machinery/computer/atmos_computers/_air_sensor.dm @@ -1,3 +1,8 @@ +///Indicator for inlet port +#define INLET 1 +///Indicator for outlet port +#define OUTLET 2 + /// Gas tank air sensor. /// These always hook to monitors, be mindful of them /obj/machinery/air_sensor @@ -7,7 +12,6 @@ resistance_flags = FIRE_PROOF power_channel = AREA_USAGE_ENVIRON active_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 1.5 - var/on = TRUE /// The unique string that represents which atmos chamber to associate with. var/chamber_id @@ -17,16 +21,12 @@ var/outlet_id /// The air alarm connected to this sensor var/obj/machinery/airalarm/connected_airalarm + ///Is this sensor on + var/on = TRUE /obj/machinery/air_sensor/Initialize(mapload) id_tag = assign_random_name() - //this global list of air sensors is available to all station monitering consoles round start and to new consoles made during the round - if(mapload) - GLOB.map_loaded_sensors[chamber_id] = id_tag - inlet_id = CHAMBER_INPUT_FROM_ID(chamber_id) - outlet_id = CHAMBER_OUTPUT_FROM_ID(chamber_id) - var/static/list/multitool_tips = list( TOOL_MULTITOOL = list( SCREENTIP_CONTEXT_LMB = "Link logged injectors/vents", @@ -37,6 +37,56 @@ return ..() +/obj/machinery/air_sensor/post_machine_initialize() + . = ..() + + //auto connect to any inlet & outlet devices within a 4 diameter radius from this sensor + for(var/obj/machinery/atmospherics/components/unary/device in oview(4, src)) + if(inlet_id && outlet_id) + break + configure(device) + +/** + * Connects an injector or an vent pump to this air sensor. Must be on the same z level as sensor + * return what type of port was configured or NONE for no op + * + * Arguments + * * obj/machinery/atmospherics/components/unary/port - the device we are trying to connect to this sensor + * * reconfigure - if TRUE it will override existing ports if they are already registered +*/ +/obj/machinery/air_sensor/proc/configure(obj/machinery/atmospherics/components/unary/port, reconfigure = FALSE) + PRIVATE_PROC(TRUE) + if(!istype(port) || port.z != z) + return NONE + + if(istype(port, /obj/machinery/atmospherics/components/unary/outlet_injector)) + if(!reconfigure && inlet_id) + return INLET + var/obj/machinery/atmospherics/components/unary/outlet_injector/input = port + //only configure non maploaded injectors cause they already have a preset config + if(input.type == /obj/machinery/atmospherics/components/unary/outlet_injector) + input.volume_rate = MAX_TRANSFER_RATE + inlet_id = input.id_tag + return INLET + + else if(istype(port, /obj/machinery/atmospherics/components/unary/vent_pump)) + if(!reconfigure && outlet_id) + return OUTLET + var/obj/machinery/atmospherics/components/unary/vent_pump/output = port + //only configure non maploaded vent pumps cause they already have a preset config + if(output.type == /obj/machinery/atmospherics/components/unary/vent_pump) + //so its no longer controlled by air alarm + output.disconnect_from_area() + //configuration copied from /obj/machinery/atmospherics/components/unary/vent_pump/siphon but with max pressure + output.pump_direction = ATMOS_DIRECTION_SIPHONING + output.pressure_checks = ATMOS_INTERNAL_BOUND + output.internal_pressure_bound = MAX_OUTPUT_PRESSURE + output.external_pressure_bound = 0 + //finally assign it to this sensor + outlet_id = output.id_tag + return OUTLET + return NONE + /obj/machinery/air_sensor/Destroy() reset() return ..() @@ -66,7 +116,7 @@ . = ..() //switched off version of this air sensor but still anchored to the ground - var/obj/item/air_sensor/sensor = new(drop_location(), inlet_id, outlet_id) + var/obj/item/air_sensor/sensor = new(drop_location()) sensor.set_anchored(TRUE) sensor.balloon_alert(user, "sensor turned off") @@ -88,36 +138,21 @@ ///right click with multi tool to disconnect everything /obj/machinery/air_sensor/multitool_act_secondary(mob/living/user, obj/item/tool) - balloon_alert(user, "reset ports") reset() + balloon_alert(user, "ports reset") return TRUE /obj/machinery/air_sensor/multitool_act(mob/living/user, obj/item/multitool/multi_tool) . = ..() - if(istype(multi_tool.buffer, /obj/machinery/atmospherics/components/unary/outlet_injector)) - var/obj/machinery/atmospherics/components/unary/outlet_injector/input = multi_tool.buffer - inlet_id = input.id_tag - multi_tool.set_buffer(src) - balloon_alert(user, "connected to input") - - else if(istype(multi_tool.buffer, /obj/machinery/atmospherics/components/unary/vent_pump)) - var/obj/machinery/atmospherics/components/unary/vent_pump/output = multi_tool.buffer - //so its no longer controlled by air alarm - output.disconnect_from_area() - //configuration copied from /obj/machinery/atmospherics/components/unary/vent_pump/siphon but with max pressure - output.pump_direction = ATMOS_DIRECTION_SIPHONING - output.pressure_checks = ATMOS_INTERNAL_BOUND - output.internal_pressure_bound = MAX_OUTPUT_PRESSURE - output.external_pressure_bound = 0 - //finally assign it to this sensor - outlet_id = output.id_tag - multi_tool.set_buffer(src) - balloon_alert(user, "connected to output") - - else - multi_tool.set_buffer(src) - balloon_alert(user, "sensor added to buffer") + var/type = configure(multi_tool.buffer, TRUE) + switch(type) + if(INLET, OUTLET) + var/port = "[type == INLET ? "input" : "output"] port" + user.balloon_alert(user, "[port] configured") + to_chat(user, span_notice("[src] has connected [multi_tool.buffer] to its [port].")) + to_chat(user, span_notice("[src] has been added to multitool buffer.")) + multi_tool.set_buffer(src) return ITEM_INTERACT_SUCCESS @@ -133,16 +168,10 @@ icon = 'icons/obj/wallmounts.dmi' icon_state = "gsensor0" custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT) - /// The injector linked with this sensor - var/input_id - /// The vent pump linked with this sensor - var/output_id /obj/item/air_sensor/Initialize(mapload, inlet, outlet) . = ..() register_context() - input_id = inlet - output_id = outlet /obj/item/air_sensor/add_context(atom/source, list/context, obj/item/held_item, mob/user) if(isnull(held_item)) @@ -205,8 +234,6 @@ //make real air sensor in its place var/obj/machinery/air_sensor/new_sensor = new sensor(get_turf(src)) - new_sensor.inlet_id = input_id - new_sensor.outlet_id = output_id new_sensor.balloon_alert(user, "sensor turned on") qdel(src) @@ -231,3 +258,6 @@ /obj/item/air_sensor/atom_deconstruct(disassembled) new /obj/item/analyzer(loc) new /obj/item/stack/sheet/iron(loc) + +#undef INLET +#undef OUTLET diff --git a/code/game/machinery/computer/atmos_computers/_atmos_control.dm b/code/game/machinery/computer/atmos_computers/_atmos_control.dm index 25e51738611..a785cd50456 100644 --- a/code/game/machinery/computer/atmos_computers/_atmos_control.dm +++ b/code/game/machinery/computer/atmos_computers/_atmos_control.dm @@ -9,55 +9,67 @@ /// Which sensors do we want to listen to. /// Assoc of list[chamber_id] = readable_chamber_name - var/list/atmos_chambers - - /// Used when control = FALSE to store the original atmos chambers so they dont get lost when reconnecting - var/list/always_displayed_chambers - + var/list/atmos_chambers = list() + /// list of all sensors[key is chamber id, value is id of air sensor linked to this chamber] monitered by this computer + var/list/connected_sensors = list() /// Whether we can actually adjust the chambers or not. var/control = TRUE /// Whether we are allowed to reconnect. var/reconnecting = TRUE + ///OUur last reconnected chamber + VAR_PRIVATE/last_chamber_id = "" - /// Was this computer multitooled before. If so copy the list connected_sensors as it now maintain's its own sensors independent of the map loaded one's - var/was_multi_tooled = FALSE - - /// list of all sensors[key is chamber id, value is id of air sensor linked to this chamber] monitered by this computer - var/list/connected_sensors - -/obj/machinery/computer/atmos_control/Initialize(mapload, obj/item/circuitboard/C) +/obj/machinery/computer/atmos_control/post_machine_initialize() . = ..() - var/static/list/multitool_tips = list( - TOOL_MULTITOOL = list( - SCREENTIP_CONTEXT_LMB = "Link Sensor", - ) - ) - AddElement(/datum/element/contextual_screentip_tools, multitool_tips) + scan() - //all newly constructed/round start computers by default have access to this list - connected_sensors = GLOB.map_loaded_sensors +///Scans the z level for new air sensors & monitors +/obj/machinery/computer/atmos_control/proc/scan() + PRIVATE_PROC(TRUE) - //special case for the station monitering console. We dont want to loose these chambers during reconnecting - if(!control && !isnull(atmos_chambers)) - always_displayed_chambers = atmos_chambers.Copy() - -/obj/machinery/computer/atmos_control/examine(mob/user) - . = ..() - . += span_notice("Use a multitool to link a air sensor to this computer") + //collect all sensors that are the closest to this computer + var/list/closest_sensors = list() + var/turf/comp_turf = get_turf(src) + for(var/obj/machinery/sensor as anything in (SSmachines.get_machines_by_type_and_subtypes(/obj/machinery/air_sensor) + SSmachines.get_machines_by_type_and_subtypes(/obj/machinery/meter/monitored))) + //same z level + if(sensor.z != z) + continue + //infer chamber id + var/chamber_id = "" + if(istype(sensor, /obj/machinery/air_sensor)) + var/obj/machinery/air_sensor/air_sense = sensor + chamber_id = air_sense.chamber_id + else + var/obj/machinery/meter/monitored/meter = sensor + chamber_id = meter.chamber_id + //track & collect closest sensors + if(!closest_sensors[chamber_id]) + closest_sensors[chamber_id] = sensor + continue + var/obj/machinery/target = closest_sensors[chamber_id] + if(get_dist(comp_turf, get_turf(sensor)) < get_dist(comp_turf, get_turf(target))) + closest_sensors[chamber_id] = sensor + //convert sensor list to id tags + connected_sensors.Cut() + for(var/chamber_id in closest_sensors) + var/obj/machinery/target = closest_sensors[chamber_id] + connected_sensors[chamber_id] = target.id_tag /// Reconnect only works for station based chambers. /obj/machinery/computer/atmos_control/proc/reconnect(mob/user) if(!reconnecting) return FALSE + scan() + // We only prompt the user with the sensors that are actually available. var/available_devices = list() - for (var/chamber_identifier in connected_sensors) //this sensor was destroyed at the time of reconnecting var/obj/machinery/sensor = GLOB.objects_by_id_tag[connected_sensors[chamber_identifier]] if(QDELETED(sensor)) + connected_sensors -= chamber_identifier continue //non master computers don't have access to these station moniters. Only done to give master computer's special access to these chambers and make them feel special or something @@ -76,33 +88,14 @@ if(isnull(new_id)) return FALSE - atmos_chambers = list() - //these are chambers we always want to display even after reconnecting - if(always_displayed_chambers) - for(var/chamber_id in always_displayed_chambers) - atmos_chambers[chamber_id] = always_displayed_chambers[chamber_id] + atmos_chambers -= last_chamber_id atmos_chambers[new_id] = new_name + last_chamber_id = new_id name = new_name + (control ? " Control" : " Monitor") return TRUE -/obj/machinery/computer/atmos_control/multitool_act(mob/living/user, obj/item/multitool/multi_tool) - . = ..() - - if(istype(multi_tool.buffer, /obj/machinery/air_sensor)) - var/obj/machinery/air_sensor/sensor = multi_tool.buffer - //computers reference a global map loaded list of sensor's but as soon a user attempt's to edit it, make a copy of that list so other computers aren't affected - if(!was_multi_tooled) - connected_sensors = connected_sensors.Copy() - was_multi_tooled = TRUE - //register the sensor's unique ID with its assositated chamber - connected_sensors[sensor.chamber_id] = sensor.id_tag - user.balloon_alert(user, "sensor connected to [src]") - return ITEM_INTERACT_SUCCESS - - return - /obj/machinery/computer/atmos_control/ui_interact(mob/user, datum/tgui/ui) . = ..() ui = SStgui.try_update_ui(user, src, ui) @@ -158,7 +151,6 @@ return var/chamber = params["chamber"] - switch(action) if("toggle_input") if (!(chamber in atmos_chambers)) @@ -174,6 +166,8 @@ input.on = !input.on input.update_appearance(UPDATE_ICON) + return TRUE + if("toggle_output") if (!(chamber in atmos_chambers)) return TRUE @@ -188,6 +182,8 @@ output.on = !output.on output.update_appearance(UPDATE_ICON) + return TRUE + if("adjust_input") if (!(chamber in atmos_chambers)) return TRUE @@ -206,6 +202,8 @@ target = clamp(target, 0, MAX_TRANSFER_RATE) input.volume_rate = clamp(target, 0, min(input.airs[1].volume, MAX_TRANSFER_RATE)) + return TRUE + if("adjust_output") if (!(chamber in atmos_chambers)) return TRUE @@ -224,10 +222,11 @@ target = clamp(target, 0, ATMOS_PUMP_MAX_PRESSURE) output.internal_pressure_bound = target - if("reconnect") - reconnect(usr) + return TRUE - return TRUE + if("reconnect") + reconnect(ui.user) + return TRUE /obj/machinery/computer/atmos_control/nocontrol control = FALSE diff --git a/code/game/machinery/computer/atmos_computers/inlets.dm b/code/game/machinery/computer/atmos_computers/inlets.dm index 474ccae2c14..06b4f8fdc99 100644 --- a/code/game/machinery/computer/atmos_computers/inlets.dm +++ b/code/game/machinery/computer/atmos_computers/inlets.dm @@ -1,8 +1,6 @@ /obj/machinery/atmospherics/components/unary/outlet_injector/monitored on = TRUE volume_rate = MAX_TRANSFER_RATE - /// The air sensor type this injector is linked to - var/chamber_id /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/layer2 piping_layer = 2 @@ -12,108 +10,79 @@ piping_layer = 4 icon_state = "inje_map-4" -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/Initialize(mapload) - id_tag = CHAMBER_INPUT_FROM_ID(chamber_id) - return ..() - /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/plasma_input name = "plasma tank input injector" - chamber_id = ATMOS_GAS_MONITOR_PLAS /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/oxygen_input name = "oxygen tank input injector" - chamber_id = ATMOS_GAS_MONITOR_O2 /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/nitrogen_input name = "nitrogen tank input injector" - chamber_id = ATMOS_GAS_MONITOR_N2 /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/mix_input name = "mix tank input injector" - chamber_id = ATMOS_GAS_MONITOR_MIX /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/nitrous_input name = "nitrous oxide tank input injector" - chamber_id = ATMOS_GAS_MONITOR_N2O /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/air_input name = "air mix tank input injector" - chamber_id = ATMOS_GAS_MONITOR_AIR /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/carbon_input name = "carbon dioxide tank input injector" - chamber_id = ATMOS_GAS_MONITOR_CO2 /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/bz_input name = "bz tank input injector" - chamber_id = ATMOS_GAS_MONITOR_BZ /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/freon_input name = "freon tank input injector" - chamber_id = ATMOS_GAS_MONITOR_FREON /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/halon_input name = "halon tank input injector" - chamber_id = ATMOS_GAS_MONITOR_HALON /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/healium_input name = "healium tank input injector" - chamber_id = ATMOS_GAS_MONITOR_HEALIUM /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/hydrogen_input name = "hydrogen tank input injector" - chamber_id = ATMOS_GAS_MONITOR_H2 /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/hypernoblium_input name = "hypernoblium tank input injector" - chamber_id = ATMOS_GAS_MONITOR_HYPERNOBLIUM /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/miasma_input name = "miasma tank input injector" - chamber_id = ATMOS_GAS_MONITOR_MIASMA /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/nitrium_input name = "nitrium tank input injector" - chamber_id = ATMOS_GAS_MONITOR_NITRIUM /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/pluoxium_input name = "pluoxium tank input injector" - chamber_id = ATMOS_GAS_MONITOR_PLUOXIUM /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/proto_nitrate_input name = "proto-nitrate tank input injector" - chamber_id = ATMOS_GAS_MONITOR_PROTO_NITRATE /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/tritium_input name = "tritium tank input injector" - chamber_id = ATMOS_GAS_MONITOR_TRITIUM /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/water_vapor_input name = "water vapor tank input injector" - chamber_id = ATMOS_GAS_MONITOR_H2O /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/zauker_input name = "zauker tank input injector" - chamber_id = ATMOS_GAS_MONITOR_ZAUKER /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/helium_input name = "helium tank input injector" - chamber_id = ATMOS_GAS_MONITOR_HELIUM /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/antinoblium_input name = "antinoblium tank input injector" - chamber_id = ATMOS_GAS_MONITOR_ANTINOBLIUM /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/incinerator_input name = "incinerator chamber input injector" - chamber_id = ATMOS_GAS_MONITOR_INCINERATOR /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/ordnance_burn_chamber_input on = FALSE name = "ordnance burn chamber input injector" - chamber_id = ATMOS_GAS_MONITOR_ORDNANCE_BURN /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/ordnance_freezer_chamber_input on = FALSE name = "ordnance freezer chamber input injector" - chamber_id = ATMOS_GAS_MONITOR_ORDNANCE_FREEZER diff --git a/code/game/machinery/computer/atmos_computers/meters.dm b/code/game/machinery/computer/atmos_computers/meters.dm index e2316401820..9b0872b07c4 100644 --- a/code/game/machinery/computer/atmos_computers/meters.dm +++ b/code/game/machinery/computer/atmos_computers/meters.dm @@ -1,12 +1,10 @@ /obj/machinery/meter/monitored + flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1 /// The unique string that represents which atmos chamber to associate with. var/chamber_id - flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1 /obj/machinery/meter/monitored/Initialize(mapload, new_piping_layer) id_tag = assign_random_name() - if(mapload) - GLOB.map_loaded_sensors[chamber_id] = id_tag return ..() /obj/machinery/meter/monitored/layer2 diff --git a/code/game/machinery/computer/atmos_computers/outlets.dm b/code/game/machinery/computer/atmos_computers/outlets.dm index 529a83d7219..a3d93d16a87 100644 --- a/code/game/machinery/computer/atmos_computers/outlets.dm +++ b/code/game/machinery/computer/atmos_computers/outlets.dm @@ -3,106 +3,81 @@ icon_state = "vent_map_siphon_on-3" /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/Initialize(mapload) - id_tag = CHAMBER_OUTPUT_FROM_ID(chamber_id) . = ..() //we dont want people messing with these special vents using the air alarm interface disconnect_from_area() /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/plasma_output name = "plasma tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_PLAS /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/oxygen_output name = "oxygen tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_O2 /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/nitrogen_output name = "nitrogen tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_N2 /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/mix_output name = "mix tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_MIX /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/nitrous_output name = "nitrous oxide tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_N2O /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/carbon_output name = "carbon dioxide tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_CO2 /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/bz_output name = "bz tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_BZ /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/freon_output name = "freon tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_FREON /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/halon_output name = "halon tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_HALON /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/healium_output name = "healium tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_HEALIUM /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/hydrogen_output name = "hydrogen tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_H2 /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/hypernoblium_output name = "hypernoblium tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_HYPERNOBLIUM /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/miasma_output name = "miasma tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_MIASMA /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/nitrium_output name = "nitrium tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_NITRIUM /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/pluoxium_output name = "pluoxium tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_PLUOXIUM /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/proto_nitrate_output name = "proto-nitrate tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_PROTO_NITRATE /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/tritium_output name = "tritium tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_TRITIUM /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/water_vapor_output name = "water vapor tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_H2O /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/zauker_output name = "zauker tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_ZAUKER /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/helium_output name = "helium tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_HELIUM /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/antinoblium_output name = "antinoblium tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_ANTINOBLIUM /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/incinerator_output name = "incinerator chamber output inlet" - chamber_id = ATMOS_GAS_MONITOR_INCINERATOR /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/ordnance_burn_chamber_output name = "ordnance burn chamber output inlet" - chamber_id = ATMOS_GAS_MONITOR_ORDNANCE_BURN /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/ordnance_freezer_chamber_output name = "ordnance freezer chamber output inlet" - chamber_id = ATMOS_GAS_MONITOR_ORDNANCE_FREEZER /obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/monitored on = TRUE @@ -110,11 +85,9 @@ // Same as the rest, but bigger volume. /obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/monitored/Initialize(mapload) - id_tag = CHAMBER_OUTPUT_FROM_ID(chamber_id) . = ..() //we dont want people messing with these special vents using the air alarm interface disconnect_from_area() /obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/monitored/air_output name = "air mix tank output inlet" - chamber_id = ATMOS_GAS_MONITOR_AIR diff --git a/code/modules/atmospherics/machinery/air_alarm/_air_alarm.dm b/code/modules/atmospherics/machinery/air_alarm/_air_alarm.dm index ea9e4e82b5a..9013e31b632 100644 --- a/code/modules/atmospherics/machinery/air_alarm/_air_alarm.dm +++ b/code/modules/atmospherics/machinery/air_alarm/_air_alarm.dm @@ -714,7 +714,11 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 27) ///Used for air alarm link helper, which connects air alarm to a sensor with corresponding chamber_id /obj/machinery/airalarm/proc/setup_chamber_link() - var/obj/machinery/air_sensor/sensor = GLOB.objects_by_id_tag[GLOB.map_loaded_sensors[air_sensor_chamber_id]] + var/obj/machinery/air_sensor/sensor = null + for(var/obj/machinery/air_sensor/target as anything in SSmachines.get_machines_by_type_and_subtypes(/obj/machinery/air_sensor)) + if(target.z == z && target.chamber_id == air_sensor_chamber_id) + sensor = target + break if(isnull(sensor)) log_mapping("[src] at [AREACOORD(src)] tried to connect to a sensor, but no sensor with chamber_id:[air_sensor_chamber_id] found!") return 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 5528b838ff0..8cc0eb7b246 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm @@ -32,9 +32,6 @@ // ATMOS_INTERNAL_BOUND: Do not pass internal_pressure_bound // NO_BOUND: Do not pass either - /// id of air sensor its connected to - var/chamber_id - ///area this vent is assigned to var/area/assigned_area diff --git a/tools/UpdatePaths/Scripts/92849_atmos_monitor_sensor_connect.txt b/tools/UpdatePaths/Scripts/92849_atmos_monitor_sensor_connect.txt new file mode 100644 index 00000000000..17dda3a68db --- /dev/null +++ b/tools/UpdatePaths/Scripts/92849_atmos_monitor_sensor_connect.txt @@ -0,0 +1,3 @@ +/obj/machinery/atmospherics/components/unary/vent_pump/@SUBTYPES{chamber_id=@ANY} : /obj/machinery/atmospherics/components/unary/vent_pump/@SUBTYPES{@OLD;chamber_id=@SKIP} +/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/@SUBTYPES{chamber_id=@ANY} : /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/@SUBTYPES{@OLD;chamber_id=@SKIP} +