diff --git a/_maps/map_files/Birdshot/birdshot.dmm b/_maps/map_files/Birdshot/birdshot.dmm index 19080f9d93c..ff06bb5914c 100644 --- a/_maps/map_files/Birdshot/birdshot.dmm +++ b/_maps/map_files/Birdshot/birdshot.dmm @@ -9600,7 +9600,7 @@ /obj/effect/turf_decal/sand/plating, /obj/effect/decal/cleanable/dirt, /obj/structure/table, -/obj/item/circuitboard/computer/stationalert{ +/obj/item/circuitboard/computer/station_alert{ pixel_y = 8 }, /turf/open/floor/plating, @@ -13814,7 +13814,7 @@ /area/station/ai_monitored/turret_protected/ai) "eYk" = ( /obj/structure/cable, -/obj/machinery/computer/station_alert{ +/obj/machinery/computer/station_alert/station_only{ dir = 1 }, /obj/machinery/power/apc/auto_name/directional/south, @@ -14134,7 +14134,7 @@ "feu" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /obj/machinery/firealarm/directional/north, -/obj/machinery/computer/atmos_alert, +/obj/machinery/computer/atmos_alert/station_only, /turf/open/floor/iron/small, /area/station/engineering/atmos/office) "fex" = ( @@ -19028,7 +19028,7 @@ /turf/open/floor/iron/smooth, /area/station/security/checkpoint/customs) "gHm" = ( -/obj/machinery/computer/station_alert{ +/obj/machinery/computer/station_alert/station_only{ dir = 1 }, /turf/open/floor/iron/smooth_large, @@ -20270,7 +20270,7 @@ /obj/effect/turf_decal/siding/thinplating_new/terracotta{ dir = 1 }, -/obj/machinery/computer/atmos_alert{ +/obj/machinery/computer/atmos_alert/station_only{ dir = 1 }, /obj/effect/turf_decal/siding/yellow, @@ -20332,7 +20332,7 @@ /obj/effect/turf_decal/siding/thinplating_new/terracotta{ dir = 1 }, -/obj/machinery/computer/station_alert{ +/obj/machinery/computer/station_alert/station_only{ dir = 1 }, /obj/effect/turf_decal/siding/yellow, @@ -27230,7 +27230,7 @@ /area/station/security/prison/workout) "jhj" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, -/obj/machinery/computer/station_alert{ +/obj/machinery/computer/station_alert/station_only{ dir = 1 }, /obj/item/radio/intercom/directional/south, @@ -44591,7 +44591,7 @@ /area/station/hallway/secondary/recreation) "oYS" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/computer/station_alert{ +/obj/machinery/computer/station_alert/station_only{ dir = 8 }, /obj/item/radio/intercom/command/directional/east, @@ -60586,7 +60586,7 @@ /obj/effect/turf_decal/siding/yellow{ dir = 1 }, -/obj/machinery/computer/station_alert{ +/obj/machinery/computer/station_alert/station_only{ dir = 8 }, /turf/open/floor/wood, diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 38b2e791c1c..c1e1b7aaf48 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -3705,7 +3705,7 @@ anchored = 1; dir = 8 }, -/obj/item/circuitboard/computer/stationalert, +/obj/item/circuitboard/computer/station_alert, /obj/effect/turf_decal/bot/right, /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 @@ -7183,7 +7183,7 @@ /turf/open/floor/wood, /area/station/service/theater) "bKo" = ( -/obj/machinery/computer/station_alert{ +/obj/machinery/computer/station_alert/station_only{ dir = 1 }, /obj/machinery/firealarm/directional/south, @@ -8831,7 +8831,7 @@ /area/station/ai_monitored/turret_protected/ai_upload) "cfx" = ( /obj/structure/cable, -/obj/machinery/computer/station_alert{ +/obj/machinery/computer/station_alert/station_only{ dir = 4 }, /obj/effect/turf_decal/bot, @@ -19775,7 +19775,7 @@ /turf/open/floor/iron/dark, /area/station/service/kitchen) "eSU" = ( -/obj/machinery/computer/atmos_alert, +/obj/machinery/computer/atmos_alert/station_only, /obj/effect/turf_decal/bot, /obj/structure/sign/warning/gas_mask/directional/north, /obj/machinery/light/small/directional/north, @@ -38494,7 +38494,7 @@ /turf/open/floor/iron, /area/station/hallway/primary/fore) "jAY" = ( -/obj/machinery/computer/station_alert{ +/obj/machinery/computer/station_alert/station_only{ dir = 4 }, /obj/effect/turf_decal/bot/left, @@ -45376,7 +45376,7 @@ }, /obj/machinery/light/directional/south, /obj/effect/turf_decal/bot, -/obj/machinery/computer/station_alert{ +/obj/machinery/computer/station_alert/station_only{ dir = 1 }, /turf/open/floor/iron/dark/textured_large, @@ -56646,7 +56646,7 @@ /turf/open/floor/iron/dark, /area/station/security/detectives_office) "oiO" = ( -/obj/machinery/computer/station_alert{ +/obj/machinery/computer/station_alert/station_only{ dir = 8 }, /obj/effect/turf_decal/bot, @@ -76871,7 +76871,7 @@ /obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden{ dir = 4 }, -/obj/machinery/computer/atmos_alert{ +/obj/machinery/computer/atmos_alert/station_only{ dir = 1 }, /obj/effect/turf_decal/bot, @@ -88571,7 +88571,7 @@ /area/station/commons/dorms) "wgF" = ( /obj/structure/cable, -/obj/machinery/computer/station_alert{ +/obj/machinery/computer/station_alert/station_only{ dir = 1 }, /obj/machinery/status_display/ai/directional/south, @@ -88891,7 +88891,7 @@ /turf/open/floor/plating, /area/station/maintenance/port/fore) "wkT" = ( -/obj/machinery/computer/atmos_alert, +/obj/machinery/computer/atmos_alert/station_only, /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 }, @@ -90657,7 +90657,7 @@ /turf/open/floor/plating, /area/station/science/research/abandoned) "wEX" = ( -/obj/machinery/computer/atmos_alert{ +/obj/machinery/computer/atmos_alert/station_only{ dir = 8 }, /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ @@ -94421,7 +94421,7 @@ c_tag = "Engineering - Power Monitoring"; name = "engineering camera" }, -/obj/machinery/computer/atmos_alert{ +/obj/machinery/computer/atmos_alert/station_only{ dir = 1 }, /obj/structure/cable, diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index 4a673104f24..ecda43c7556 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -7079,7 +7079,7 @@ /turf/open/floor/iron/white, /area/mine/living_quarters) "bTq" = ( -/obj/machinery/computer/atmos_alert, +/obj/machinery/computer/atmos_alert/station_only, /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/engineering/engine_smes) @@ -26669,7 +26669,7 @@ }, /area/station/service/chapel) "hDh" = ( -/obj/machinery/computer/atmos_alert{ +/obj/machinery/computer/atmos_alert/station_only{ dir = 8 }, /turf/open/floor/iron/dark, @@ -26828,7 +26828,7 @@ /turf/open/floor/iron/cafeteria, /area/station/security/prison/work) "hFJ" = ( -/obj/machinery/computer/station_alert, +/obj/machinery/computer/station_alert/station_only, /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/computer/security/telescreen/engine/directional/north, /turf/open/floor/iron/dark, @@ -58601,7 +58601,7 @@ /area/station/science/explab) "qFu" = ( /obj/machinery/airalarm/directional/west, -/obj/machinery/computer/station_alert{ +/obj/machinery/computer/station_alert/station_only{ dir = 4 }, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -59977,7 +59977,7 @@ /turf/open/floor/iron, /area/station/engineering/lobby) "qXF" = ( -/obj/machinery/computer/station_alert, +/obj/machinery/computer/station_alert/station_only, /obj/effect/turf_decal/tile/yellow/half/contrasted, /turf/open/floor/iron, /area/station/command/bridge) @@ -71454,7 +71454,7 @@ /turf/open/floor/iron/showroomfloor, /area/station/security/processing) "unG" = ( -/obj/machinery/computer/station_alert{ +/obj/machinery/computer/station_alert/station_only{ dir = 4 }, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -74717,7 +74717,7 @@ /turf/open/floor/iron/dark, /area/station/service/chapel) "vnt" = ( -/obj/machinery/computer/station_alert{ +/obj/machinery/computer/station_alert/station_only{ dir = 8 }, /obj/machinery/button/door/directional/south{ @@ -80174,7 +80174,7 @@ /turf/open/floor/eighties, /area/station/commons/lounge) "wUJ" = ( -/obj/machinery/computer/atmos_alert, +/obj/machinery/computer/atmos_alert/station_only, /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 8 }, diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index b44fc6d36f9..c69694b8f48 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -10020,7 +10020,7 @@ /turf/closed/wall, /area/station/hallway/primary/port) "dHg" = ( -/obj/machinery/computer/atmos_alert, +/obj/machinery/computer/atmos_alert/station_only, /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/engineering/main) @@ -13657,7 +13657,7 @@ /turf/open/floor/engine, /area/station/science/xenobiology) "eSy" = ( -/obj/machinery/computer/station_alert{ +/obj/machinery/computer/station_alert/station_only{ dir = 4 }, /obj/structure/cable, @@ -18772,7 +18772,7 @@ /obj/machinery/camera/directional/north{ c_tag = "Engineering - Power Monitoring" }, -/obj/machinery/computer/station_alert, +/obj/machinery/computer/station_alert/station_only, /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/engineering/main) @@ -27213,7 +27213,7 @@ /turf/open/floor/iron/white/smooth_large, /area/station/medical/treatment_center) "jGN" = ( -/obj/machinery/computer/station_alert{ +/obj/machinery/computer/station_alert/station_only{ dir = 1 }, /obj/machinery/light/directional/south, @@ -36420,7 +36420,7 @@ /turf/open/floor/iron, /area/station/ai_monitored/command/storage/eva) "mXj" = ( -/obj/machinery/computer/station_alert, +/obj/machinery/computer/station_alert/station_only, /obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 1 }, @@ -40682,7 +40682,7 @@ /turf/open/floor/iron/dark, /area/station/engineering/supermatter/room) "owv" = ( -/obj/machinery/computer/atmos_alert, +/obj/machinery/computer/atmos_alert/station_only, /obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 1 }, @@ -44370,7 +44370,7 @@ /turf/open/floor/iron, /area/station/security/warden) "pMH" = ( -/obj/machinery/computer/station_alert{ +/obj/machinery/computer/station_alert/station_only{ dir = 4 }, /obj/structure/plaque/static_plaque/atmos{ @@ -46968,7 +46968,7 @@ /area/station/security/detectives_office) "qJd" = ( /obj/machinery/status_display/ai/directional/north, -/obj/machinery/computer/station_alert, +/obj/machinery/computer/station_alert/station_only, /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/ce) @@ -60607,7 +60607,7 @@ /turf/open/floor/iron, /area/station/hallway/primary/central) "vqj" = ( -/obj/machinery/computer/atmos_alert{ +/obj/machinery/computer/atmos_alert/station_only{ dir = 1 }, /obj/structure/disposalpipe/segment{ diff --git a/_maps/map_files/NebulaStation/NebulaStation.dmm b/_maps/map_files/NebulaStation/NebulaStation.dmm index 80c74ff7505..a0a228bf5fe 100644 --- a/_maps/map_files/NebulaStation/NebulaStation.dmm +++ b/_maps/map_files/NebulaStation/NebulaStation.dmm @@ -22823,7 +22823,7 @@ /turf/open/floor/iron/white, /area/station/science/lower) "dsQ" = ( -/obj/machinery/computer/station_alert{ +/obj/machinery/computer/station_alert/station_only{ dir = 1 }, /obj/effect/turf_decal/bot, @@ -36262,7 +36262,7 @@ /turf/open/floor/stone, /area/station/hallway/secondary/service) "fsZ" = ( -/obj/machinery/computer/atmos_alert{ +/obj/machinery/computer/atmos_alert/station_only{ dir = 1 }, /obj/effect/turf_decal/bot, @@ -54030,7 +54030,7 @@ /area/station/security/prison) "hZu" = ( /obj/effect/turf_decal/bot, -/obj/machinery/computer/station_alert{ +/obj/machinery/computer/station_alert/station_only{ dir = 8 }, /turf/open/floor/iron/dark/textured_large, @@ -59546,7 +59546,7 @@ /turf/open/floor/plating, /area/station/maintenance/port/fore) "iPp" = ( -/obj/machinery/computer/station_alert{ +/obj/machinery/computer/station_alert/station_only{ dir = 8 }, /obj/effect/turf_decal/tile/yellow/half/contrasted{ @@ -76866,7 +76866,7 @@ /turf/open/floor/iron/dark/herringbone, /area/station/commons/dorms) "lrn" = ( -/obj/machinery/computer/station_alert{ +/obj/machinery/computer/station_alert/station_only{ dir = 1 }, /obj/effect/turf_decal/bot, @@ -82316,7 +82316,7 @@ /turf/open/floor/iron/dark/textured, /area/station/command) "mkJ" = ( -/obj/machinery/computer/station_alert, +/obj/machinery/computer/station_alert/station_only, /obj/machinery/button/door/directional/north{ pixel_x = 6; id = "atmoslock"; @@ -83845,7 +83845,7 @@ "mxq" = ( /obj/effect/turf_decal/bot, /obj/structure/extinguisher_cabinet/directional/south, -/obj/machinery/computer/atmos_alert{ +/obj/machinery/computer/atmos_alert/station_only{ dir = 8 }, /turf/open/floor/iron/dark/textured_large, @@ -92413,7 +92413,7 @@ /turf/open/floor/iron/dark, /area/station/service/hydroponics) "nNh" = ( -/obj/machinery/computer/station_alert, +/obj/machinery/computer/station_alert/station_only, /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 5 }, @@ -96599,7 +96599,7 @@ /turf/open/floor/iron/dark, /area/station/engineering/supermatter/room/upper) "ork" = ( -/obj/machinery/computer/station_alert{ +/obj/machinery/computer/station_alert/station_only{ dir = 1 }, /obj/effect/turf_decal/bot{ @@ -100376,7 +100376,7 @@ /turf/open/floor/iron/dark/textured, /area/station/service/library/lounge) "oSD" = ( -/obj/machinery/computer/station_alert{ +/obj/machinery/computer/station_alert/station_only{ dir = 1 }, /obj/structure/sign/poster/official/random/directional/south, @@ -114345,7 +114345,7 @@ /obj/effect/turf_decal/trimline/dark/corner{ dir = 8 }, -/obj/machinery/computer/station_alert, +/obj/machinery/computer/station_alert/station_only, /turf/open/floor/iron/dark/textured_corner{ dir = 8 }, @@ -121555,7 +121555,7 @@ /turf/open/floor/iron/white/smooth_large, /area/station/medical/treatment_center) "rZz" = ( -/obj/machinery/computer/atmos_alert{ +/obj/machinery/computer/atmos_alert/station_only{ dir = 1 }, /obj/effect/turf_decal/bot{ @@ -124249,7 +124249,7 @@ /turf/open/floor/iron/white/small, /area/station/science/server) "swL" = ( -/obj/machinery/computer/atmos_alert{ +/obj/machinery/computer/atmos_alert/station_only{ dir = 1 }, /obj/machinery/button/door/directional/south{ @@ -142332,7 +142332,7 @@ /area/station/science/ordnance/storage) "vgI" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, -/obj/machinery/computer/station_alert{ +/obj/machinery/computer/station_alert/station_only{ dir = 4 }, /obj/effect/turf_decal/bot, @@ -142860,7 +142860,7 @@ /turf/open/floor/iron/dark, /area/station/construction/mining/aux_base) "vjH" = ( -/obj/machinery/computer/atmos_alert{ +/obj/machinery/computer/atmos_alert/station_only{ dir = 8 }, /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ @@ -159217,7 +159217,7 @@ /area/space/nearstation) "xJQ" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, -/obj/machinery/computer/atmos_alert{ +/obj/machinery/computer/atmos_alert/station_only{ dir = 4 }, /obj/effect/turf_decal/bot, diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index bd8f8b2a4b2..22a3adce038 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -7721,7 +7721,7 @@ /turf/open/floor/iron, /area/station/cargo/office) "bHP" = ( -/obj/machinery/computer/station_alert{ +/obj/machinery/computer/station_alert/station_only{ dir = 8 }, /obj/effect/turf_decal/trimline/yellow/filled/line{ @@ -17359,7 +17359,7 @@ /turf/open/floor/iron, /area/station/security/checkpoint/escape) "far" = ( -/obj/machinery/computer/atmos_alert{ +/obj/machinery/computer/atmos_alert/station_only{ dir = 4 }, /obj/structure/window/reinforced/spawner/directional/west, @@ -31531,7 +31531,7 @@ /turf/open/floor/iron, /area/station/cargo/miningdock) "kis" = ( -/obj/machinery/computer/atmos_alert{ +/obj/machinery/computer/atmos_alert/station_only{ dir = 8 }, /obj/effect/turf_decal/trimline/yellow/filled/line{ @@ -48228,7 +48228,7 @@ /turf/open/floor/iron, /area/station/security/courtroom) "qcw" = ( -/obj/machinery/computer/station_alert{ +/obj/machinery/computer/station_alert/station_only{ dir = 1 }, /obj/item/radio/intercom/directional/south, @@ -60230,7 +60230,7 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) "ukE" = ( -/obj/machinery/computer/station_alert{ +/obj/machinery/computer/station_alert/station_only{ dir = 1 }, /obj/structure/window/reinforced/spawner/directional/south, @@ -67628,7 +67628,7 @@ /turf/open/floor/iron/checker, /area/station/commons/lounge) "wLx" = ( -/obj/machinery/computer/station_alert{ +/obj/machinery/computer/station_alert/station_only{ dir = 8 }, /turf/open/floor/iron/dark, @@ -67761,7 +67761,7 @@ /turf/open/floor/iron/white/side, /area/station/science/lobby) "wNY" = ( -/obj/machinery/computer/station_alert{ +/obj/machinery/computer/station_alert/station_only{ dir = 8 }, /obj/machinery/requests_console/directional/east{ @@ -68547,7 +68547,7 @@ /turf/open/floor/iron/freezer, /area/station/commons/toilet) "xfx" = ( -/obj/machinery/computer/atmos_alert{ +/obj/machinery/computer/atmos_alert/station_only{ dir = 8 }, /obj/machinery/button/door/directional/east{ diff --git a/_maps/map_files/wawastation/wawastation.dmm b/_maps/map_files/wawastation/wawastation.dmm index 6bb3a4dee85..0295a23f503 100644 --- a/_maps/map_files/wawastation/wawastation.dmm +++ b/_maps/map_files/wawastation/wawastation.dmm @@ -2205,7 +2205,7 @@ /turf/open/floor/catwalk_floor/iron_dark, /area/station/ai_monitored/turret_protected/aisat/uppersouth) "aKj" = ( -/obj/machinery/computer/station_alert{ +/obj/machinery/computer/station_alert/station_only{ dir = 1 }, /obj/effect/turf_decal/trimline/yellow/filled/line, @@ -10589,7 +10589,7 @@ /turf/closed/wall/r_wall, /area/station/cargo/storage) "dLW" = ( -/obj/machinery/computer/atmos_alert{ +/obj/machinery/computer/atmos_alert/station_only{ dir = 4 }, /obj/machinery/camera/autoname/directional/south, @@ -34468,7 +34468,7 @@ /turf/open/floor/iron/white, /area/station/science/research) "mio" = ( -/obj/machinery/computer/station_alert, +/obj/machinery/computer/station_alert/station_only, /turf/open/floor/iron, /area/station/engineering/atmos/upper) "mit" = ( @@ -39892,7 +39892,7 @@ /turf/closed/wall/r_wall, /area/station/ai_monitored/turret_protected/aisat/uppersouth) "ogH" = ( -/obj/machinery/computer/atmos_alert, +/obj/machinery/computer/atmos_alert/station_only, /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 8 }, @@ -45032,7 +45032,7 @@ /turf/open/misc/asteroid, /area/station/hallway/primary/starboard) "pVC" = ( -/obj/machinery/computer/station_alert, +/obj/machinery/computer/station_alert/station_only, /obj/effect/turf_decal/tile/yellow/half/contrasted, /obj/machinery/light/directional/north, /turf/open/floor/iron/dark, diff --git a/_maps/templates/lazy_templates/nukie_base.dmm b/_maps/templates/lazy_templates/nukie_base.dmm index 5178b0f9356..3369d26f8d1 100644 --- a/_maps/templates/lazy_templates/nukie_base.dmm +++ b/_maps/templates/lazy_templates/nukie_base.dmm @@ -515,7 +515,7 @@ pixel_x = 4; pixel_y = -2 }, -/obj/item/circuitboard/computer/stationalert{ +/obj/item/circuitboard/computer/station_alert{ pixel_y = 1; pixel_x = 3 }, diff --git a/code/game/machinery/computer/atmos_alert.dm b/code/game/machinery/computer/atmos_alert.dm index 3ed359a0062..9bf72d637d6 100644 --- a/code/game/machinery/computer/atmos_alert.dm +++ b/code/game/machinery/computer/atmos_alert.dm @@ -9,6 +9,11 @@ var/list/priority_alarms = list() var/list/minor_alarms = list() +/obj/machinery/computer/atmos_alert/examine(mob/user) + . = ..() + var/obj/item/circuitboard/computer/atmos_alert/my_circuit = circuit + . += span_info("The console is set to [my_circuit.station_only ? "track all station and mining alarms" : "track alarms on the same z-level"].") + /obj/machinery/computer/atmos_alert/ui_interact(mob/user, datum/tgui/ui) . = ..() ui = SStgui.try_update_ui(user, src, ui) @@ -56,8 +61,17 @@ priority_alarms.Cut() minor_alarms.Cut() + // An area list used for station_only circuits, so we only send an alarm if we're in one of the station or mining home areas + var/list/station_alert_areas = GLOB.the_station_areas + typesof(/area/mine) + // Setting up a variable for checking our circuit's station_only + var/obj/item/circuitboard/computer/atmos_alert/my_circuit = circuit for (var/obj/machinery/airalarm/air_alarm as anything in GLOB.air_alarms) - if (air_alarm.z != z) + // If the circuit has station_only, check if alarm areas are in the station list + if(my_circuit.station_only) + if (!(air_alarm.my_area.type in station_alert_areas)) + continue + // Otherwise just check if alarms match the console's z-level + else if (air_alarm.z != z) continue switch (air_alarm.danger_level) @@ -83,3 +97,7 @@ return if(minor_alarms.len) . += "alert:1" + +// Subtype with the board pre-set to check only station areas and the mining station +/obj/machinery/computer/atmos_alert/station_only + circuit = /obj/item/circuitboard/computer/atmos_alert/station_only diff --git a/code/game/machinery/computer/station_alert.dm b/code/game/machinery/computer/station_alert.dm index a2303e2e93b..b879669317b 100644 --- a/code/game/machinery/computer/station_alert.dm +++ b/code/game/machinery/computer/station_alert.dm @@ -3,16 +3,24 @@ desc = "Used to access the station's automated alert system." icon_screen = "alert:0" icon_keyboard = "atmos_key" - circuit = /obj/item/circuitboard/computer/stationalert + circuit = /obj/item/circuitboard/computer/station_alert light_color = LIGHT_COLOR_CYAN /// Station alert datum for showing alerts UI var/datum/station_alert/alert_control +/obj/machinery/computer/station_alert/examine(mob/user) + . = ..() + var/obj/item/circuitboard/computer/station_alert/my_circuit = circuit + . += span_info("The console is set to [my_circuit.station_only ? "track all station and mining alarms" : "track alarms on the same z-level"].") + /obj/machinery/computer/station_alert/Initialize(mapload) - alert_control = new(src, list(ALARM_ATMOS, ALARM_FIRE, ALARM_POWER), list(z), title = name) - RegisterSignals(alert_control.listener, list(COMSIG_ALARM_LISTENER_TRIGGERED, COMSIG_ALARM_LISTENER_CLEARED), PROC_REF(update_alarm_display)) + link_alerts() return ..() +/obj/machinery/computer/station_alert/on_construction(mob/user) + . = ..() + link_alerts() + /obj/machinery/computer/station_alert/Destroy() QDEL_NULL(alert_control) return ..() @@ -34,6 +42,26 @@ if(length(alert_control.listener.alarms)) . += "alert:2" +/** + * Clears out any active alert_control listeners, then sets up a new one based on the circuit settings + */ +/obj/machinery/computer/station_alert/proc/link_alerts() + //Start from scratch, clear out the existing alert listeners + QDEL_NULL(alert_control) + + //Then we check the circuit to determine if it should show alarms from Station & Mining areas, + //or Local (z-level) areas + var/obj/item/circuitboard/computer/station_alert/my_circuit = circuit + if(my_circuit.station_only) + name = "station alert console" + var/list/alert_areas + alert_areas = (GLOB.the_station_areas + typesof(/area/mine)) + alert_control = new(src, list(ALARM_ATMOS, ALARM_FIRE, ALARM_POWER), listener_areas = alert_areas, title = name) + else + name = "local alert console" + alert_control = new(src, list(ALARM_ATMOS, ALARM_FIRE, ALARM_POWER), list(z), title = name) + RegisterSignals(alert_control.listener, list(COMSIG_ALARM_LISTENER_TRIGGERED, COMSIG_ALARM_LISTENER_CLEARED), PROC_REF(update_alarm_display)) + /** * Signal handler for calling an icon update in case an alarm is added or cleared * @@ -43,3 +71,7 @@ /obj/machinery/computer/station_alert/proc/update_alarm_display(datum/source) SIGNAL_HANDLER update_icon() + +// Subtype which only checks station areas and the mining station +/obj/machinery/computer/station_alert/station_only + circuit = /obj/item/circuitboard/computer/station_alert/station_only diff --git a/code/game/objects/effects/spawners/random/techstorage.dm b/code/game/objects/effects/spawners/random/techstorage.dm index 4bfdeec27d1..89c5d0ceaee 100644 --- a/code/game/objects/effects/spawners/random/techstorage.dm +++ b/code/game/objects/effects/spawners/random/techstorage.dm @@ -74,7 +74,7 @@ name = "engineering circuit board spawner" loot = list( /obj/item/circuitboard/computer/atmos_alert, - /obj/item/circuitboard/computer/stationalert, + /obj/item/circuitboard/computer/station_alert, /obj/item/circuitboard/computer/powermonitor, ) diff --git a/code/game/objects/items/circuitboards/computer_circuitboards.dm b/code/game/objects/items/circuitboards/computer_circuitboards.dm index 9c3cde9f725..82d96329540 100644 --- a/code/game/objects/items/circuitboards/computer_circuitboards.dm +++ b/code/game/objects/items/circuitboards/computer_circuitboards.dm @@ -44,6 +44,20 @@ name = "Atmospheric Alert" greyscale_colors = CIRCUIT_COLOR_ENGINEERING build_path = /obj/machinery/computer/atmos_alert + var/station_only = FALSE + +/obj/item/circuitboard/computer/atmos_alert/station_only + station_only = TRUE + +/obj/item/circuitboard/computer/atmos_alert/examine(mob/user) + . = ..() + . += span_info("The board is configured to [station_only ? "track all station and mining alarms" : "track alarms on the same z-level"].") + . += span_notice("The board mode can be changed with a [EXAMINE_HINT("multitool")].") + +/obj/item/circuitboard/computer/atmos_alert/multitool_act(mob/living/user) + station_only = !station_only + balloon_alert(user, "tracking set to [station_only ? "station" : "z-level"]") + return TRUE /obj/item/circuitboard/computer/atmos_control name = "Atmospheric Control" @@ -223,10 +237,24 @@ greyscale_colors = CIRCUIT_COLOR_ENGINEERING build_path = /obj/machinery/power/solar_control -/obj/item/circuitboard/computer/stationalert +/obj/item/circuitboard/computer/station_alert name = "Station Alerts" greyscale_colors = CIRCUIT_COLOR_ENGINEERING build_path = /obj/machinery/computer/station_alert + var/station_only = FALSE + +/obj/item/circuitboard/computer/station_alert/station_only + station_only = TRUE + +/obj/item/circuitboard/computer/station_alert/examine(mob/user) + . = ..() + . += span_info("The board is configured to [station_only ? "track all station and mining alarms" : "track alarms on the same z-level"].") + . += span_notice("The board mode can be changed with a [EXAMINE_HINT("multitool")].") + +/obj/item/circuitboard/computer/station_alert/multitool_act(mob/living/user) + station_only = !station_only + balloon_alert(user, "tracking set to [station_only ? "station" : "z-level"]") + return TRUE /obj/item/circuitboard/computer/turbine_computer name = "Turbine Computer"