diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm index afc2bd7ce69..869b2fcb226 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm @@ -3061,7 +3061,7 @@ /area/ruin/syndicate_lava_base/engineering) "yh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, -/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_syndicatelava{ +/obj/machinery/airlock_controller/incinerator_syndicatelava{ pixel_x = -8; pixel_y = -26 }, diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index d806f0a88aa..a98f4bd8f87 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -830,6 +830,11 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/grimy, /area/station/service/library/lounge) +"ajY" = ( +/obj/structure/chair/sofa/corner/brown, +/obj/structure/noticeboard/directional/east, +/turf/open/floor/carpet/blue, +/area/station/medical/psychology) "akf" = ( /obj/structure/table/reinforced, /obj/item/bodypart/chest/robot, @@ -1069,25 +1074,6 @@ /obj/effect/turf_decal/tile/brown/half/contrasted, /turf/open/floor/iron, /area/station/cargo/office) -"amQ" = ( -/obj/effect/landmark/start/hangover, -/obj/structure/chair/sofa/right/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/commons/lounge) "amR" = ( /obj/structure/table/glass, /obj/item/clothing/glasses/hud/health{ @@ -1481,16 +1467,6 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron, /area/station/maintenance/department/eva/abandoned) -"aqG" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/structure/chair/sofa/right/brown{ - dir = 8 - }, -/obj/effect/landmark/start/paramedic, -/turf/open/floor/iron/white, -/area/station/medical/paramedic) "aqS" = ( /obj/structure/bed{ dir = 4 @@ -19106,14 +19082,6 @@ }, /turf/open/floor/iron, /area/station/commons/fitness/recreation) -"eCU" = ( -/obj/structure/chair/sofa/left/brown{ - dir = 8 - }, -/obj/structure/sign/departments/psychology/directional/east, -/obj/effect/landmark/start/psychologist, -/turf/open/floor/carpet/blue, -/area/station/medical/psychology) "eDc" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -20408,6 +20376,14 @@ }, /turf/open/floor/iron/dark, /area/station/command/bridge) +"eTK" = ( +/obj/structure/chair/sofa/right/brown, +/obj/item/toy/plush/moth{ + name = "Moffee" + }, +/obj/machinery/light/warm/directional/north, +/turf/open/floor/carpet/blue, +/area/station/medical/psychology) "eTP" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 @@ -22395,6 +22371,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"frR" = ( +/obj/machinery/computer/order_console/cook, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/service/kitchen) "fse" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 @@ -32537,24 +32521,6 @@ }, /turf/open/floor/plating, /area/station/command/corporate_showroom) -"hTr" = ( -/obj/effect/landmark/start/hangover, -/obj/structure/chair/sofa/left/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron, -/area/station/commons/lounge) "hTv" = ( /obj/structure/table/glass, /obj/item/paper_bin, @@ -32734,11 +32700,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/engineering/atmos/hfr_room) -"hWC" = ( -/obj/structure/chair/sofa/corner/brown, -/obj/structure/noticeboard/directional/east, -/turf/open/floor/carpet/blue, -/area/station/medical/psychology) "hWF" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -33288,6 +33249,23 @@ /obj/item/kirbyplants/random, /turf/open/floor/wood, /area/station/service/library/abandoned) +"icn" = ( +/obj/effect/landmark/start/hangover, +/obj/structure/chair/sofa/right/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron, +/area/station/commons/lounge) "ico" = ( /obj/structure/table, /obj/item/storage/medkit/regular, @@ -34928,6 +34906,25 @@ /obj/item/pen, /turf/open/floor/iron/grimy, /area/station/command/bridge) +"ixs" = ( +/obj/effect/landmark/start/hangover, +/obj/structure/chair/sofa/right/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/commons/lounge) "ixt" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/cable/multilayer/connected, @@ -39601,6 +39598,13 @@ /obj/item/pen, /turf/open/floor/wood, /area/station/service/library/abandoned) +"jCu" = ( +/obj/machinery/computer/order_console/mining, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron, +/area/station/cargo/miningoffice) "jCv" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/hydroponics/constructable, @@ -40359,31 +40363,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) -"jLt" = ( -/obj/machinery/door/airlock/research/glass/incinerator/ordmix_interior{ - name = "Burn Chamber Interior Airlock" - }, -/obj/machinery/button/ignition/incinerator/ordmix{ - pixel_x = -6; - pixel_y = -24 - }, -/obj/machinery/button/door/incinerator_vent_ordmix{ - pixel_x = 8; - pixel_y = -24 - }, -/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_ordmix{ - pixel_y = 32 - }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, -/turf/open/floor/engine, -/area/station/science/ordnance/burnchamber) "jLx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -41817,6 +41796,10 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/dark, /area/station/service/chapel) +"kcv" = ( +/obj/structure/chair/sofa/left/brown, +/turf/open/floor/wood/tile, +/area/station/service/library/artgallery) "kcH" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -42754,24 +42737,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/checker, /area/station/engineering/supermatter/room) -"koc" = ( -/obj/effect/landmark/start/hangover, -/obj/structure/chair/sofa/left/brown{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron, -/area/station/commons/lounge) "kod" = ( /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, @@ -43477,6 +43442,26 @@ }, /turf/open/floor/iron/dark, /area/station/science/robotics/lab) +"kyi" = ( +/obj/effect/landmark/start/hangover, +/obj/structure/chair/sofa/right/brown{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/commons/lounge) "kyx" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ @@ -45313,14 +45298,6 @@ }, /turf/open/floor/iron/dark, /area/station/science/xenobiology) -"kWt" = ( -/obj/structure/chair/sofa/right/brown, -/obj/item/toy/plush/moth{ - name = "Moffee" - }, -/obj/machinery/light/warm/directional/north, -/turf/open/floor/carpet/blue, -/area/station/medical/psychology) "kWv" = ( /obj/effect/landmark/event_spawn, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -45655,6 +45632,13 @@ /obj/effect/turf_decal/tile/blue/half/contrasted, /turf/open/floor/iron, /area/station/security/courtroom) +"laK" = ( +/obj/machinery/newscaster/directional/north, +/obj/structure/chair/sofa/left/brown, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/service/library) "laP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -45674,28 +45658,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/security/checkpoint/escape) -"lbh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ - dir = 4 - }, -/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_atmos{ - pixel_y = -24 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/turf/open/floor/engine, -/area/station/maintenance/disposal/incinerator) "lbi" = ( /obj/structure/lattice/catwalk, /obj/structure/transit_tube/curved/flipped{ @@ -51624,6 +51586,14 @@ /obj/effect/spawner/random/engineering/material, /turf/open/floor/iron, /area/station/hallway/secondary/construction) +"mAd" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/status_display/ai/directional/north, +/obj/structure/chair/sofa/middle/brown, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/service/library) "mAh" = ( /obj/effect/turf_decal/tile/neutral, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -53115,11 +53085,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/command/gateway) -"mRa" = ( -/obj/structure/chair/sofa/right/brown, -/obj/effect/landmark/start/hangover, -/turf/open/floor/wood/tile, -/area/station/service/library/artgallery) "mRd" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -53487,6 +53452,13 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/security) +"mWD" = ( +/obj/structure/chair/sofa/right/brown, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/directional/north, +/turf/open/floor/iron/dark, +/area/station/service/library) "mWE" = ( /obj/machinery/duct, /obj/effect/decal/cleanable/dirt, @@ -55904,23 +55876,6 @@ /obj/machinery/duct, /turf/open/floor/iron/dark, /area/station/science/breakroom) -"nCS" = ( -/obj/effect/landmark/start/hangover, -/obj/structure/chair/sofa/right/brown{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow, -/turf/open/floor/iron, -/area/station/commons/lounge) "nDd" = ( /obj/machinery/duct, /obj/machinery/light/directional/west, @@ -57449,14 +57404,6 @@ /mob/living/basic/mouse/gray, /turf/open/floor/iron, /area/station/security/prison) -"nWF" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/status_display/ai/directional/north, -/obj/structure/chair/sofa/middle/brown, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/service/library) "nWI" = ( /obj/effect/landmark/start/hangover, /obj/effect/turf_decal/tile/red{ @@ -61097,6 +61044,14 @@ /obj/structure/sign/warning/electric_shock/directional/south, /turf/open/floor/iron, /area/station/maintenance/port) +"oUz" = ( +/obj/effect/turf_decal/tile/blue, +/obj/structure/chair/sofa/left/brown{ + dir = 8 + }, +/obj/effect/landmark/start/paramedic, +/turf/open/floor/iron/white, +/area/station/medical/paramedic) "oUU" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet, @@ -61523,13 +61478,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/engineering/atmos/storage) -"pbQ" = ( -/obj/machinery/newscaster/directional/north, -/obj/structure/chair/sofa/left/brown, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/service/library) "pbU" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 @@ -62556,14 +62504,6 @@ /obj/item/stack/sheet/glass/fifty, /turf/open/floor/iron/dark, /area/station/engineering/atmos/hfr_room) -"pnq" = ( -/obj/machinery/computer/order_console/cook, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/service/kitchen) "pnu" = ( /obj/item/kirbyplants/random, /obj/machinery/light/directional/south, @@ -63922,6 +63862,23 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/maintenance/disposal/incinerator) +"pET" = ( +/obj/effect/landmark/start/hangover, +/obj/structure/chair/sofa/right/brown{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron, +/area/station/commons/lounge) "pEU" = ( /obj/machinery/disposal/bin, /obj/effect/turf_decal/bot, @@ -64534,26 +64491,6 @@ }, /turf/open/floor/iron, /area/station/security/checkpoint/medical/medsci) -"pLG" = ( -/obj/effect/landmark/start/hangover, -/obj/structure/chair/sofa/right/brown{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/commons/lounge) "pLI" = ( /obj/structure/bookcase, /turf/open/floor/wood, @@ -65793,13 +65730,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"pZo" = ( -/obj/machinery/computer/order_console/mining, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/directional/north, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) "pZs" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -69446,6 +69376,11 @@ /obj/effect/mapping_helpers/mail_sorting/engineering/general, /turf/open/floor/iron, /area/station/engineering/main) +"qUu" = ( +/obj/structure/chair/sofa/right/brown, +/obj/effect/landmark/start/hangover, +/turf/open/floor/wood/tile, +/area/station/service/library/artgallery) "qUw" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ dir = 9 @@ -71453,6 +71388,24 @@ "rvK" = ( /turf/closed/wall, /area/station/cargo/drone_bay) +"rvQ" = ( +/obj/effect/landmark/start/hangover, +/obj/structure/chair/sofa/left/brown{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/machinery/newscaster/directional/south, +/turf/open/floor/iron, +/area/station/commons/lounge) "rvY" = ( /obj/machinery/dna_scannernew, /obj/effect/turf_decal/bot, @@ -77482,28 +77435,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) -"sTQ" = ( -/obj/effect/landmark/start/hangover, -/obj/structure/chair/sofa/left/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/assistant, -/turf/open/floor/iron, -/area/station/commons/lounge) "sTR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -78371,10 +78302,6 @@ }, /turf/open/floor/iron/dark, /area/station/service/chapel/office) -"tdZ" = ( -/obj/structure/chair/sofa/left/brown, -/turf/open/floor/wood/tile, -/area/station/service/library/artgallery) "teo" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -80693,6 +80620,14 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/secondary/exit) +"tJh" = ( +/obj/structure/chair/sofa/left/brown{ + dir = 8 + }, +/obj/structure/sign/departments/psychology/directional/east, +/obj/effect/landmark/start/psychologist, +/turf/open/floor/carpet/blue, +/area/station/medical/psychology) "tJi" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ @@ -81872,6 +81807,28 @@ /obj/structure/lattice/catwalk, /turf/open/space/basic, /area/space/nearstation) +"tXn" = ( +/obj/effect/landmark/start/hangover, +/obj/structure/chair/sofa/left/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/assistant, +/turf/open/floor/iron, +/area/station/commons/lounge) "tXu" = ( /obj/effect/turf_decal/tile/red{ dir = 8 @@ -83162,6 +83119,16 @@ /obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/hidden, /turf/open/floor/iron, /area/station/maintenance/department/electrical) +"umM" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/structure/chair/sofa/right/brown{ + dir = 8 + }, +/obj/effect/landmark/start/paramedic, +/turf/open/floor/iron/white, +/area/station/medical/paramedic) "umN" = ( /turf/closed/wall, /area/station/commons/vacant_room) @@ -87529,6 +87496,31 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, /turf/open/floor/iron, /area/station/engineering/supermatter/room) +"vqx" = ( +/obj/machinery/door/airlock/research/glass/incinerator/ordmix_interior{ + name = "Burn Chamber Interior Airlock" + }, +/obj/machinery/button/ignition/incinerator/ordmix{ + pixel_x = -6; + pixel_y = -24 + }, +/obj/machinery/button/door/incinerator_vent_ordmix{ + pixel_x = 8; + pixel_y = -24 + }, +/obj/machinery/airlock_controller/incinerator_ordmix{ + pixel_y = 32 + }, +/obj/effect/mapping_helpers/airlock/locked, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, +/turf/open/floor/engine, +/area/station/science/ordnance/burnchamber) "vqy" = ( /obj/machinery/door/airlock{ name = "Vacant Room" @@ -88042,6 +88034,23 @@ /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, /area/station/construction/mining/aux_base) +"vwr" = ( +/obj/structure/chair/sofa/left/brown{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron, +/area/station/commons/lounge) "vwv" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -92402,23 +92411,6 @@ /obj/structure/sign/poster/official/random/directional/south, /turf/open/floor/iron, /area/station/cargo/miningoffice) -"wwm" = ( -/obj/structure/chair/sofa/left/brown{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/commons/lounge) "wwr" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/west, @@ -93584,14 +93576,6 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/iron, /area/station/medical/pharmacy) -"wLy" = ( -/obj/effect/turf_decal/tile/blue, -/obj/structure/chair/sofa/left/brown{ - dir = 8 - }, -/obj/effect/landmark/start/paramedic, -/turf/open/floor/iron/white, -/area/station/medical/paramedic) "wLK" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -93996,6 +93980,24 @@ }, /turf/open/floor/iron/dark, /area/station/security/prison/visit) +"wSk" = ( +/obj/effect/landmark/start/hangover, +/obj/structure/chair/sofa/left/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron, +/area/station/commons/lounge) "wSv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -94056,6 +94058,28 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) +"wTc" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ + dir = 4 + }, +/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/airlock_controller/incinerator_atmos{ + pixel_y = -24 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/turf/open/floor/engine, +/area/station/maintenance/disposal/incinerator) "wTg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -97192,13 +97216,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/ai_monitored/aisat/exterior) -"xGS" = ( -/obj/structure/chair/sofa/right/brown, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, -/area/station/service/library) "xHf" = ( /obj/structure/cable, /obj/effect/turf_decal/delivery, @@ -98862,23 +98879,6 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/iron, /area/station/science/robotics/mechbay) -"ydB" = ( -/obj/effect/landmark/start/hangover, -/obj/structure/chair/sofa/right/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow, -/turf/open/floor/iron, -/area/station/commons/lounge) "ydE" = ( /obj/structure/chair/stool/directional/south, /obj/effect/decal/cleanable/dirt, @@ -120426,7 +120426,7 @@ kvq qYo edx edx -lbh +wTc edx edx ltx @@ -130978,7 +130978,7 @@ sao ueJ bIG csw -pnq +frR cIa ddg uWI @@ -132098,7 +132098,7 @@ sBE hkU qgo qaA -jLt +vqx oHM iLH pKR @@ -135344,8 +135344,8 @@ vRB dcR giz kVP -hTr -amQ +wSk +ixs aGF mgn fto @@ -135353,8 +135353,8 @@ qPw fto pkr ffo -sTQ -ydB +tXn +icn vnU uqX mOI @@ -135858,8 +135858,8 @@ oFh ygD feG kVP -nCS -wwm +pET +vwr aWP rpZ ePa @@ -135867,8 +135867,8 @@ uYg uYg pmS kXO -pLG -koc +kyi +rvQ vnU vnU vCy @@ -142118,7 +142118,7 @@ gtp mJE hHW oDE -kWt +eTK niN xpW kfE @@ -142363,8 +142363,8 @@ lAk tfK gQl auy -aqG -wLy +umM +oUz gOM gQl cwe @@ -142375,8 +142375,8 @@ fUr bcj pDy oDE -hWC -eCU +ajY +tJh hVV bVQ kAd @@ -145124,7 +145124,7 @@ jrz xZC iIj aJE -pZo +jCu iio mDm eYt @@ -145960,7 +145960,7 @@ nHY bXX jEN teU -mRa +qUu gZU vVR uNf @@ -146217,7 +146217,7 @@ nHY bXX jEN teU -tdZ +kcv gZU vVR uNf @@ -147236,7 +147236,7 @@ ptI kHk eAA dfZ -xGS +mWD nHY phX lLJ @@ -147493,7 +147493,7 @@ mOy mEh qEj dfZ -nWF +mAd rop oQd nHY @@ -147750,7 +147750,7 @@ pru qaE wAZ dfZ -pbQ +laK xBw nxR nxR diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index 8d139891e5f..e0eaa6a086f 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -3591,6 +3591,22 @@ /obj/structure/cable, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"bfM" = ( +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/machinery/airalarm/directional/south, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/chair/sofa/right/brown{ + dir = 1 + }, +/obj/machinery/newscaster/directional/east, +/turf/open/floor/iron/white, +/area/station/medical/break_room) "bfN" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -4203,6 +4219,14 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/commons/locker) +"boO" = ( +/obj/structure/chair/sofa/left/brown{ + dir = 8 + }, +/obj/machinery/light/directional/east, +/obj/structure/cable, +/turf/open/floor/carpet/blue, +/area/station/security/prison/work) "boP" = ( /obj/machinery/firealarm/directional/west, /obj/machinery/light/directional/south, @@ -5643,6 +5667,17 @@ "bID" = ( /turf/closed/wall/r_wall, /area/station/engineering/lobby) +"bIH" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/chair/sofa/right/brown{ + dir = 1 + }, +/obj/machinery/computer/security/telescreen/entertainment/directional/south, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/iron/grimy, +/area/station/commons/lounge) "bIU" = ( /obj/structure/table, /obj/item/stack/sheet/glass/fifty, @@ -12029,15 +12064,6 @@ }, /turf/open/floor/plating/snowed/icemoon, /area/mine/laborcamp/security) -"dBx" = ( -/obj/machinery/computer/order_console/mining, -/obj/machinery/light/small/directional/south, -/obj/machinery/light_switch/directional/south, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/mine/production) "dBB" = ( /obj/machinery/portable_atmospherics/canister/air, /obj/effect/turf_decal/bot_white, @@ -17677,6 +17703,10 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/station/engineering/atmos) +"fnF" = ( +/obj/structure/chair/sofa/middle/brown, +/turf/open/floor/carpet/blue, +/area/station/security/prison/work) "fnL" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 @@ -18927,16 +18957,6 @@ /obj/effect/turf_decal/tile/blue/full, /turf/open/floor/iron/large, /area/station/medical/treatment_center) -"fIv" = ( -/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_atmos{ - pixel_x = -24 - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/turf/open/floor/engine, -/area/station/maintenance/disposal/incinerator) "fIH" = ( /obj/structure/closet/lasertag/red, /obj/effect/spawner/random/contraband/permabrig_gear, @@ -19794,6 +19814,17 @@ /obj/structure/barricade/wooden/crude/snow, /turf/open/floor/wood, /area/station/maintenance/space_hut/cabin) +"fWU" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/chair/sofa/left/brown{ + dir = 1 + }, +/obj/effect/landmark/start/hangover, +/obj/machinery/light/directional/south, +/turf/open/floor/iron/grimy, +/area/station/commons/lounge) "fWX" = ( /obj/structure/cable/multilayer/multiz, /turf/open/floor/plating/snowed/icemoon, @@ -24890,6 +24921,15 @@ /obj/machinery/newscaster/directional/north, /turf/open/floor/iron/white, /area/station/medical/chemistry) +"hCN" = ( +/obj/structure/chair/sofa/right/brown{ + desc = "Hey, did you know you can get a pineapple on your burger here?"; + dir = 1; + name = "The Regular's Sofa" + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/stone, +/area/station/commons/lounge) "hCV" = ( /obj/structure/table/wood, /obj/item/hand_tele, @@ -24922,14 +24962,6 @@ /obj/machinery/light/directional/south, /turf/open/floor/iron, /area/station/science/ordnance) -"hDg" = ( -/obj/structure/chair/sofa/left/brown{ - dir = 8 - }, -/obj/machinery/light/directional/east, -/obj/structure/cable, -/turf/open/floor/carpet/blue, -/area/station/security/prison/work) "hDh" = ( /obj/machinery/computer/atmos_alert{ dir = 8 @@ -24944,17 +24976,6 @@ "hDp" = ( /turf/open/floor/engine, /area/station/science/genetics) -"hDx" = ( -/obj/machinery/computer/order_console/mining, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/camera{ - c_tag = "Mining Bunks"; - dir = 6 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/mine/production) "hDA" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating/icemoon, @@ -27017,6 +27038,13 @@ /obj/structure/table/wood, /turf/open/floor/wood, /area/station/security/courtroom) +"ilp" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/chair/sofa/right/brown, +/turf/open/floor/carpet/blue, +/area/station/security/prison/work) "ily" = ( /turf/open/openspace, /area/station/science/xenobiology) @@ -29536,6 +29564,19 @@ /obj/effect/turf_decal/trimline/yellow/line, /turf/open/floor/iron/dark/side, /area/station/security/prison/workout) +"iZp" = ( +/obj/structure/chair/sofa/right/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/service) "iZq" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -30381,10 +30422,6 @@ dir = 1 }, /area/mine/eva/lower) -"jnM" = ( -/obj/structure/chair/sofa/middle/brown, -/turf/open/floor/carpet/blue, -/area/station/security/prison/work) "jnS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -31545,15 +31582,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"jHT" = ( -/obj/machinery/computer/order_console/cook{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/hallway/secondary/service) "jIg" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -34963,12 +34991,6 @@ /obj/effect/landmark/start/station_engineer, /turf/open/floor/iron, /area/station/engineering/storage) -"kIu" = ( -/obj/structure/chair/sofa/left/brown, -/obj/machinery/light/directional/north, -/obj/effect/landmark/start/psychologist, -/turf/open/floor/carpet/blue, -/area/station/medical/psychology) "kIw" = ( /obj/machinery/conveyor{ id = "mining_internal" @@ -35480,19 +35502,6 @@ /obj/effect/landmark/blobstart, /turf/open/floor/wood, /area/station/hallway/secondary/service) -"kPt" = ( -/obj/structure/chair/sofa/left/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) "kPv" = ( /obj/machinery/vending/cigarette, /turf/open/floor/wood, @@ -36205,6 +36214,15 @@ "kZu" = ( /turf/closed/wall, /area/mine/production) +"kZz" = ( +/obj/machinery/computer/order_console/cook{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/station/hallway/secondary/service) "kZC" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot_white, @@ -36254,6 +36272,13 @@ }, /turf/open/floor/plating, /area/station/maintenance/aft/greater) +"lal" = ( +/obj/structure/chair/sofa/right/brown, +/obj/item/toy/plush/moth{ + name = "Dr. Moff" + }, +/turf/open/floor/carpet/blue, +/area/station/medical/psychology) "law" = ( /obj/machinery/door/airlock/security/glass{ name = "Security Vestibule" @@ -37166,13 +37191,6 @@ /obj/machinery/newscaster/directional/east, /turf/open/floor/wood/large, /area/station/command/heads_quarters/hos) -"loN" = ( -/obj/structure/chair/sofa/right/brown, -/obj/item/toy/plush/moth{ - name = "Dr. Moff" - }, -/turf/open/floor/carpet/blue, -/area/station/medical/psychology) "loQ" = ( /obj/effect/turf_decal/trimline/green/filled/corner, /obj/effect/decal/cleanable/dirt, @@ -37937,6 +37955,15 @@ /obj/effect/landmark/start/roboticist, /turf/open/floor/iron, /area/station/science/robotics/lab) +"lCA" = ( +/obj/machinery/computer/order_console/mining, +/obj/machinery/light/small/directional/south, +/obj/machinery/light_switch/directional/south, +/obj/machinery/newscaster/directional/east, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/mine/production) "lCC" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -38052,6 +38079,11 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/medical/cryo) +"lEa" = ( +/obj/structure/chair/sofa/corner/brown, +/obj/structure/cable, +/turf/open/floor/carpet/blue, +/area/station/security/prison/work) "lEg" = ( /obj/machinery/door/window{ dir = 1; @@ -39027,6 +39059,12 @@ }, /turf/open/lava/plasma/ice_moon, /area/icemoon/underground/explored) +"lWK" = ( +/obj/structure/chair/sofa/left/brown, +/obj/machinery/light/directional/north, +/obj/effect/landmark/start/psychologist, +/turf/open/floor/carpet/blue, +/area/station/medical/psychology) "lWU" = ( /obj/machinery/light/directional/north, /obj/effect/turf_decal/tile/blue{ @@ -40534,6 +40572,14 @@ /obj/item/clothing/ears/earmuffs, /turf/open/floor/iron/dark/textured, /area/station/security/range) +"mxN" = ( +/obj/machinery/computer/order_console/mining, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown, +/turf/open/floor/iron/dark, +/area/station/cargo/miningdock) "myb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -41758,15 +41804,6 @@ /obj/structure/sign/warning/secure_area, /turf/closed/wall/ice, /area/icemoon/surface/outdoors/nospawn) -"mSU" = ( -/obj/structure/chair/sofa/right/brown{ - desc = "Hey, did you know you can get a pineapple on your burger here?"; - dir = 1; - name = "The Regular's Sofa" - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/stone, -/area/station/commons/lounge) "mTk" = ( /obj/structure/chair/plastic{ dir = 0 @@ -44367,14 +44404,6 @@ /obj/effect/mapping_helpers/airlock/access/any/engineering/general, /turf/open/floor/iron/dark, /area/station/engineering/main) -"nFk" = ( -/obj/machinery/computer/order_console/mining, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/brown, -/turf/open/floor/iron/dark, -/area/station/cargo/miningdock) "nFn" = ( /obj/effect/turf_decal/tile/red{ dir = 1 @@ -45526,17 +45555,6 @@ }, /turf/open/floor/iron, /area/station/security/checkpoint/customs/auxiliary) -"nUo" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/chair/sofa/left/brown{ - dir = 1 - }, -/obj/effect/landmark/start/hangover, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/grimy, -/area/station/commons/lounge) "nUr" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -48309,6 +48327,16 @@ /obj/machinery/status_display/evac/directional/west, /turf/open/floor/iron/white, /area/station/science/research) +"oOx" = ( +/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/airlock_controller/incinerator_atmos{ + pixel_x = -24 + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/turf/open/floor/engine, +/area/station/maintenance/disposal/incinerator) "oOD" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -49175,17 +49203,6 @@ /obj/effect/mapping_helpers/airlock/access/all/supply/general, /turf/open/floor/iron, /area/station/cargo/drone_bay) -"pck" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/chair/sofa/left/brown{ - desc = "Hey, did you know you can get a pineapple on your burger here?"; - dir = 1; - name = "The Regular's Sofa" - }, -/turf/open/floor/stone, -/area/station/commons/lounge) "pcr" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/nitrous_output{ dir = 8 @@ -52082,15 +52099,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/engineering/atmos) -"pYl" = ( -/obj/machinery/computer/order_console/mining, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/brown, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron/dark, -/area/station/cargo/miningdock) "pYz" = ( /obj/structure/railing/corner, /obj/machinery/door/firedoor/border_only, @@ -55443,6 +55451,17 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron/textured, /area/mine/mechbay) +"qZW" = ( +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/machinery/light/small/directional/south, +/obj/structure/chair/sofa/left/brown{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/medical/break_room) "rab" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, @@ -58134,6 +58153,17 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/aft) +"rVb" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/chair/sofa/left/brown{ + desc = "Hey, did you know you can get a pineapple on your burger here?"; + dir = 1; + name = "The Regular's Sofa" + }, +/turf/open/floor/stone, +/area/station/commons/lounge) "rVd" = ( /obj/effect/turf_decal/tile/yellow{ dir = 8 @@ -65017,22 +65047,6 @@ /obj/machinery/light/directional/south, /turf/open/floor/iron/showroomfloor, /area/station/security/warden) -"uaW" = ( -/obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/machinery/airalarm/directional/south, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/chair/sofa/right/brown{ - dir = 1 - }, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/break_room) "ubd" = ( /obj/machinery/light/small/directional/east, /turf/open/floor/plating/snowed/smoothed/icemoon, @@ -65702,11 +65716,6 @@ /obj/effect/landmark/start/assistant, /turf/open/floor/iron, /area/station/commons/dorms) -"ulm" = ( -/obj/structure/chair/sofa/corner/brown, -/obj/structure/cable, -/turf/open/floor/carpet/blue, -/area/station/security/prison/work) "ult" = ( /turf/closed/wall/r_wall, /area/station/science/robotics/lab) @@ -67570,6 +67579,15 @@ }, /turf/open/floor/plating, /area/station/engineering/storage/tech) +"uRa" = ( +/obj/machinery/computer/order_console/mining, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown, +/obj/machinery/light_switch/directional/north, +/turf/open/floor/iron/dark, +/area/station/cargo/miningdock) "uRi" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -68994,13 +69012,6 @@ }, /turf/open/floor/iron/textured, /area/station/medical/medbay/central) -"vnQ" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/chair/sofa/right/brown, -/turf/open/floor/carpet/blue, -/area/station/security/prison/work) "vnT" = ( /obj/structure/window/reinforced{ dir = 8 @@ -70999,17 +71010,6 @@ /obj/structure/closet/firecloset, /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) -"vTB" = ( -/obj/machinery/door/airlock/research/glass/incinerator/ordmix_interior{ - name = "Burn Chamber Interior Airlock" - }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_ordmix{ - pixel_x = 24 - }, -/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, -/turf/open/floor/engine, -/area/station/science/ordnance/burnchamber) "vTJ" = ( /obj/structure/table, /obj/item/toy/plush/slimeplushie{ @@ -74059,17 +74059,6 @@ "wMt" = ( /turf/closed/wall, /area/station/hallway/primary/central/fore) -"wMu" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/chair/sofa/right/brown{ - dir = 1 - }, -/obj/machinery/computer/security/telescreen/entertainment/directional/south, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/grimy, -/area/station/commons/lounge) "wMz" = ( /obj/machinery/atmospherics/pipe/multiz/supply/visible/layer4{ color = "#0000ff"; @@ -74243,6 +74232,17 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"wPC" = ( +/obj/machinery/door/airlock/research/glass/incinerator/ordmix_interior{ + name = "Burn Chamber Interior Airlock" + }, +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/airlock_controller/incinerator_ordmix{ + pixel_x = 24 + }, +/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, +/turf/open/floor/engine, +/area/station/science/ordnance/burnchamber) "wPD" = ( /obj/machinery/door/airlock/security/glass{ name = "Evidence Storage" @@ -74621,6 +74621,19 @@ /obj/effect/turf_decal/bot, /turf/open/floor/engine, /area/station/engineering/atmos/hfr_room) +"wUY" = ( +/obj/structure/chair/sofa/left/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/service) "wVe" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -75578,17 +75591,6 @@ "xjC" = ( /turf/open/floor/plating, /area/station/maintenance/department/cargo) -"xjD" = ( -/obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/machinery/light/small/directional/south, -/obj/structure/chair/sofa/left/brown{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/break_room) "xjL" = ( /obj/machinery/computer/shuttle/labor{ dir = 8 @@ -75709,6 +75711,17 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"xlQ" = ( +/obj/machinery/computer/order_console/mining, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/camera{ + c_tag = "Mining Bunks"; + dir = 6 + }, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/mine/production) "xmf" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -78675,19 +78688,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/smooth, /area/station/maintenance/fore/lesser) -"ykr" = ( -/obj/structure/chair/sofa/right/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) "ykw" = ( /turf/closed/wall/r_wall, /area/station/security/processing) @@ -164032,8 +164032,8 @@ pve vSi kZu pAT -hDx -dBx +xlQ +lCA kZu aNg kzH @@ -169340,7 +169340,7 @@ iDt hPs gBX hPs -vnQ +ilp vxM vnT una @@ -169597,7 +169597,7 @@ iDt iDt iDt oqL -jnM +fnF gBc erY clR @@ -169854,8 +169854,8 @@ iDt iDt iDt oqL -ulm -hDg +lEa +boO pdT klv cIc @@ -179404,8 +179404,8 @@ udC udC xMq mdZ -kPt -ykr +wUY +iZp mdZ oGR pIQ @@ -179676,7 +179676,7 @@ ydZ jBU mqr mqr -nUo +fWU dMS rZN cjK @@ -179933,7 +179933,7 @@ lrN jBU eDi doJ -wMu +bIH dMS dre dMS @@ -181731,7 +181731,7 @@ hzQ hzQ nro hzQ -pck +rVb dMS dEB dMS @@ -181988,7 +181988,7 @@ wun dOQ lZG fDt -mSU +hCN dMS dEB dMS @@ -193843,7 +193843,7 @@ sDA mYd mIC aWs -vTB +wPC qSk qSk rEh @@ -229563,8 +229563,8 @@ ajw maT maT qjQ -pYl -nFk +uRa +mxN qjQ fZb qjQ @@ -245974,7 +245974,7 @@ gzw kiB kQX xLn -jHT +kZz mdZ rth hid @@ -248615,7 +248615,7 @@ uqH qXk qSC ldr -fIv +oOx mgD pmb hPD @@ -249107,7 +249107,7 @@ tQc tQc qQp hRA -loN +lal rkL cga rTv @@ -249364,7 +249364,7 @@ iML iML nHX hRA -kIu +lWK rkL uFz kJC @@ -250907,7 +250907,7 @@ dpr klk vxE hyd -xjD +qZW tMO jYy sZF @@ -251164,7 +251164,7 @@ aFR lVR rbK tsY -uaW +bfM tMO cAA sZF diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index 3d3826e8df2..bb8be61045b 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -6009,23 +6009,6 @@ }, /turf/open/floor/iron/dark, /area/station/medical/chemistry) -"bRV" = ( -/obj/structure/chair/sofa/left/maroon{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/service/bar/atrium) "bSg" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, @@ -7578,6 +7561,23 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, /area/station/security/warden) +"clQ" = ( +/obj/structure/chair/sofa/left/maroon{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) "clR" = ( /obj/machinery/camera/directional/west{ c_tag = "Prison Recreation"; @@ -7625,6 +7625,22 @@ "cml" = ( /turf/closed/wall/rust, /area/station/service/library) +"cmG" = ( +/obj/structure/chair/sofa/right/maroon{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) "cmQ" = ( /turf/open/floor/cult, /area/station/service/chapel/office) @@ -9898,6 +9914,25 @@ /obj/effect/mapping_helpers/airlock/access/all/security/general, /turf/open/floor/iron/dark, /area/station/security/checkpoint/science/research) +"cYG" = ( +/obj/structure/cable, +/obj/structure/chair/sofa/right/maroon{ + dir = 4 + }, +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/railing{ + dir = 8 + }, +/obj/machinery/airalarm/directional/south, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) "cYN" = ( /obj/structure/chair{ dir = 8 @@ -10525,25 +10560,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/commons/vacant_room/commissary) -"diG" = ( -/obj/structure/cable, -/obj/structure/chair/sofa/right/maroon{ - dir = 4 - }, -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/airalarm/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/service/bar/atrium) "diQ" = ( /obj/effect/turf_decal/delivery, /obj/effect/turf_decal/stripes/line{ @@ -12584,23 +12600,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/solars/port/fore) -"dLu" = ( -/obj/structure/chair/sofa/left/maroon{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/dark, -/area/station/service/bar/atrium) "dLA" = ( /obj/effect/turf_decal/tile/purple{ dir = 8 @@ -16922,6 +16921,25 @@ }, /turf/open/floor/iron/dark, /area/station/command/bridge) +"faZ" = ( +/obj/structure/chair/sofa/left/maroon{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) "fbm" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -19764,6 +19782,20 @@ /obj/item/radio/intercom/directional/east, /turf/open/floor/iron/dark/corner, /area/station/hallway/primary/port) +"fKl" = ( +/obj/structure/chair/sofa/right/maroon{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) "fKs" = ( /obj/effect/turf_decal/stripes/corner{ dir = 8 @@ -20701,6 +20733,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/hallway/secondary/service) +"fWK" = ( +/obj/structure/chair/sofa/right/brown, +/obj/structure/sign/poster/official/love_ian{ + pixel_y = 32 + }, +/turf/open/floor/carpet, +/area/station/medical/psychology) "fWL" = ( /obj/effect/landmark/start/psychologist, /turf/open/floor/carpet, @@ -23606,22 +23645,6 @@ }, /turf/open/floor/iron/dark, /area/station/maintenance/department/crew_quarters/bar) -"gNB" = ( -/obj/structure/chair/sofa/right/maroon{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/iron/dark, -/area/station/service/bar/atrium) "gNE" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -24104,6 +24127,24 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/general, /turf/open/floor/iron/dark, /area/station/engineering/storage_shared) +"gTz" = ( +/obj/structure/chair/sofa/right/maroon{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) "gTA" = ( /obj/machinery/door/airlock/hydroponics/glass{ name = "Hydroponics Backroom" @@ -27087,6 +27128,22 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron/dark, /area/station/engineering/storage/tech) +"hJQ" = ( +/obj/structure/chair/sofa/right/maroon{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) "hJZ" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -28236,20 +28293,6 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/science/genetics) -"hZt" = ( -/obj/structure/chair/sofa/right/maroon{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/service/bar/atrium) "hZP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -29361,25 +29404,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central) -"inT" = ( -/obj/structure/chair/sofa/left/maroon{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/iron/dark, -/area/station/service/bar/atrium) "ios" = ( /turf/closed/wall/rust, /area/station/service/kitchen) @@ -30672,6 +30696,22 @@ /obj/effect/mapping_helpers/mail_sorting/service/library, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"iFv" = ( +/obj/structure/chair/sofa/left/maroon{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) "iFE" = ( /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ @@ -31475,17 +31515,6 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron/dark, /area/station/security/execution/education) -"iQx" = ( -/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/research/glass/incinerator/ordmix_interior{ - name = "Burn Chamber Interior Airlock" - }, -/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_ordmix{ - pixel_x = -32 - }, -/turf/open/floor/engine, -/area/station/science/ordnance/burnchamber) "iQK" = ( /obj/effect/decal/cleanable/blood/old, /obj/effect/decal/cleanable/dirt, @@ -35014,6 +35043,12 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/disposal) +"jSw" = ( +/obj/machinery/light/small/directional/north, +/obj/structure/chair/sofa/middle/maroon, +/obj/structure/sign/poster/contraband/random/directional/north, +/turf/open/floor/wood, +/area/station/maintenance/starboard/fore) "jSx" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -36097,6 +36132,23 @@ /obj/item/toy/figure/hos, /turf/open/floor/carpet/red, /area/station/command/heads_quarters/hos) +"kju" = ( +/obj/structure/chair/sofa/right/maroon{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) "kjK" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -36711,12 +36763,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"kur" = ( -/obj/machinery/light/small/directional/north, -/obj/structure/chair/sofa/middle/maroon, -/obj/structure/sign/poster/contraband/random/directional/north, -/turf/open/floor/wood, -/area/station/maintenance/starboard/fore) "kut" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/vault{ @@ -38470,19 +38516,6 @@ /obj/structure/cable, /turf/open/floor/grass, /area/station/medical/psychology) -"kUy" = ( -/obj/machinery/computer/order_console/cook{ - dir = 8 - }, -/obj/effect/turf_decal/bot, -/obj/machinery/newscaster/directional/east, -/obj/machinery/camera/directional/east{ - c_tag = "Kitchen Coldroom"; - name = "kitchen camera" - }, -/obj/machinery/light/cold/directional/east, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen/coldroom) "kUB" = ( /obj/structure/table, /obj/effect/turf_decal/tile/neutral, @@ -39181,6 +39214,14 @@ /obj/effect/mapping_helpers/airlock/access/any/science/maintenance, /turf/open/floor/iron/dark, /area/station/maintenance/department/electrical) +"lda" = ( +/obj/structure/chair/sofa/left/maroon{ + dir = 8 + }, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/wood, +/area/station/maintenance/starboard/fore) "ldc" = ( /obj/machinery/atmospherics/components/unary/thermomachine/freezer{ dir = 8 @@ -42442,6 +42483,19 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"maX" = ( +/obj/machinery/computer/order_console/cook{ + dir = 8 + }, +/obj/effect/turf_decal/bot, +/obj/machinery/newscaster/directional/east, +/obj/machinery/camera/directional/east{ + c_tag = "Kitchen Coldroom"; + name = "kitchen camera" + }, +/obj/machinery/light/cold/directional/east, +/turf/open/floor/iron/freezer, +/area/station/service/kitchen/coldroom) "mbc" = ( /obj/effect/turf_decal/tile/blue{ dir = 1 @@ -42736,24 +42790,6 @@ }, /turf/open/floor/plating, /area/station/medical/storage) -"mfw" = ( -/obj/structure/chair/sofa/right/maroon{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/dark, -/area/station/service/bar/atrium) "mfD" = ( /obj/effect/turf_decal/stripes/corner{ dir = 4 @@ -42834,6 +42870,19 @@ /obj/effect/mapping_helpers/mail_sorting/security/general, /turf/open/floor/iron, /area/station/security/office) +"mfT" = ( +/obj/structure/chair/sofa/right/maroon{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) "mfU" = ( /obj/effect/turf_decal/stripes/end{ dir = 4 @@ -43822,11 +43871,6 @@ }, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/cmo) -"muR" = ( -/obj/structure/chair/sofa/right/maroon, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood, -/area/station/maintenance/starboard/fore) "mvm" = ( /obj/effect/turf_decal/arrows, /obj/effect/decal/cleanable/blood/old, @@ -45063,22 +45107,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"mOj" = ( -/obj/structure/chair/sofa/right/maroon{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/service/bar/atrium) "mOt" = ( /obj/machinery/light/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -45205,25 +45233,6 @@ /obj/structure/cable, /turf/open/floor/iron/showroomfloor, /area/station/science/xenobiology) -"mQj" = ( -/obj/machinery/computer/order_console/mining, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/machinery/status_display/supply{ - pixel_y = -32 - }, -/obj/machinery/camera/directional/south{ - c_tag = "Mining Dock"; - name = "cargo camera"; - network = list("ss13","qm") - }, -/turf/open/floor/iron/dark, -/area/station/cargo/miningoffice) "mQk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -45866,28 +45875,6 @@ /obj/structure/flora/rock/pile/style_random, /turf/open/floor/grass, /area/station/service/chapel/monastery) -"nal" = ( -/obj/structure/cable, -/obj/structure/chair/sofa/left/maroon{ - dir = 8 - }, -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/hangover, -/obj/machinery/camera/directional/south{ - c_tag = "Atrium Port"; - name = "service camera" - }, -/turf/open/floor/iron/dark, -/area/station/service/bar/atrium) "nam" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/caution/stand_clear, @@ -45941,6 +45928,23 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/showroomfloor, /area/station/medical/medbay/lobby) +"naG" = ( +/obj/structure/chair/sofa/left/maroon{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) "naK" = ( /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ @@ -46879,19 +46883,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/wood, /area/station/maintenance/port/fore) -"nqZ" = ( -/obj/structure/chair/sofa/right/maroon{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/service/bar/atrium) "nrh" = ( /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/abandoned, @@ -48025,22 +48016,6 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"nHG" = ( -/obj/structure/chair/sofa/left/maroon{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/service/bar/atrium) "nHO" = ( /turf/closed/wall/rust, /area/station/service/janitor) @@ -48593,6 +48568,25 @@ /obj/effect/spawner/random/structure/tank_holder, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) +"nQk" = ( +/obj/structure/chair/sofa/left/maroon{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) "nQo" = ( /obj/machinery/door/firedoor/border_only{ dir = 1 @@ -48812,6 +48806,11 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron/dark, /area/station/service/chapel) +"nUi" = ( +/obj/structure/chair/sofa/right/maroon, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/wood, +/area/station/maintenance/starboard/fore) "nUP" = ( /obj/effect/landmark/event_spawn, /obj/effect/landmark/start/hangover, @@ -50188,23 +50187,6 @@ "osy" = ( /turf/closed/wall/rust, /area/station/commons/toilet/restrooms) -"osA" = ( -/obj/structure/chair/sofa/left/maroon{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/iron/dark, -/area/station/service/bar/atrium) "osR" = ( /obj/structure/cable, /obj/machinery/computer/shuttle/labor, @@ -53432,6 +53414,25 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/security/execution/transfer) +"pmk" = ( +/obj/machinery/computer/order_console/mining, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/status_display/supply{ + pixel_y = -32 + }, +/obj/machinery/camera/directional/south{ + c_tag = "Mining Dock"; + name = "cargo camera"; + network = list("ss13","qm") + }, +/turf/open/floor/iron/dark, +/area/station/cargo/miningoffice) "pmq" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -54260,23 +54261,6 @@ /obj/effect/mapping_helpers/airlock/access/all/service/kitchen, /turf/open/floor/iron/dark, /area/station/maintenance/department/bridge) -"pyW" = ( -/obj/structure/chair/sofa/right/maroon{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/service/bar/atrium) "pzc" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -55261,20 +55245,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /turf/closed/wall, /area/station/maintenance/disposal/incinerator) -"pNk" = ( -/obj/structure/chair/sofa/left/maroon{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/dark, -/area/station/service/bar/atrium) "pNA" = ( /obj/effect/turf_decal/siding/wood/corner, /obj/machinery/newscaster/directional/south, @@ -58689,6 +58659,23 @@ /obj/effect/decal/cleanable/oil, /turf/open/floor/plating, /area/station/maintenance/fore) +"qOB" = ( +/obj/structure/chair/sofa/left/maroon{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) "qOG" = ( /obj/structure/cable, /obj/structure/table, @@ -58748,25 +58735,6 @@ }, /turf/open/floor/plating, /area/station/engineering/atmos/storage/gas) -"qPv" = ( -/obj/structure/chair/sofa/left/maroon{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/dark, -/area/station/service/bar/atrium) "qPz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -61691,15 +61659,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/cargo/sorting) -"rEM" = ( -/obj/structure/cable, -/obj/structure/chair/sofa/left/brown, -/obj/item/toy/plush/moth{ - name = "Big Moffer" - }, -/obj/machinery/power/apc/auto_name/directional/north, -/turf/open/floor/carpet, -/area/station/medical/psychology) "rER" = ( /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ @@ -61844,6 +61803,20 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"rFS" = ( +/obj/structure/chair/sofa/left/maroon{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) "rGK" = ( /obj/structure/railing{ dir = 1 @@ -63188,6 +63161,17 @@ "saW" = ( /turf/open/floor/iron/white, /area/station/security/prison/mess) +"sbd" = ( +/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/door/airlock/research/glass/incinerator/ordmix_interior{ + name = "Burn Chamber Interior Airlock" + }, +/obj/machinery/airlock_controller/incinerator_ordmix{ + pixel_x = -32 + }, +/turf/open/floor/engine, +/area/station/science/ordnance/burnchamber) "sbf" = ( /obj/structure/table/wood, /obj/machinery/door/firedoor, @@ -64520,6 +64504,24 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"str" = ( +/obj/structure/chair/sofa/right/maroon{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) "stu" = ( /obj/structure/sign/departments/security, /turf/closed/wall, @@ -64645,6 +64647,12 @@ /obj/structure/cable, /turf/open/floor/carpet/royalblack, /area/station/command/heads_quarters/captain) +"swW" = ( +/obj/structure/chair/sofa/corner/maroon, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/wood, +/area/station/maintenance/starboard/fore) "swY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -65164,6 +65172,15 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/showroomfloor, /area/station/science/ordnance) +"sFu" = ( +/obj/structure/cable, +/obj/structure/chair/sofa/left/brown, +/obj/item/toy/plush/moth{ + name = "Big Moffer" + }, +/obj/machinery/power/apc/auto_name/directional/north, +/turf/open/floor/carpet, +/area/station/medical/psychology) "sFv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -69931,14 +69948,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/office) -"tVh" = ( -/obj/structure/chair/sofa/left/maroon{ - dir = 8 - }, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood, -/area/station/maintenance/starboard/fore) "tVt" = ( /obj/structure/rack, /obj/item/storage/toolbox/emergency{ @@ -72654,23 +72663,6 @@ }, /turf/open/floor/iron/white, /area/station/security/prison/mess) -"uJp" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, -/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_atmos{ - pixel_y = -24 - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/turf/open/floor/engine, -/area/station/maintenance/disposal/incinerator) "uJs" = ( /obj/machinery/computer/security/telescreen/cmo{ dir = 1; @@ -78205,6 +78197,28 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark, /area/station/service/bar/atrium) +"wiz" = ( +/obj/structure/cable, +/obj/structure/chair/sofa/left/maroon{ + dir = 8 + }, +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/hangover, +/obj/machinery/camera/directional/south{ + c_tag = "Atrium Port"; + name = "service camera" + }, +/turf/open/floor/iron/dark, +/area/station/service/bar/atrium) "wiM" = ( /obj/structure/cable, /obj/structure/table, @@ -79066,13 +79080,6 @@ }, /turf/open/floor/iron, /area/station/command/bridge) -"wtF" = ( -/obj/structure/chair/sofa/right/brown, -/obj/structure/sign/poster/official/love_ian{ - pixel_y = 32 - }, -/turf/open/floor/carpet, -/area/station/medical/psychology) "wtP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -80562,24 +80569,6 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/security/medical) -"wOb" = ( -/obj/structure/chair/sofa/right/maroon{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/decal/cleanable/dirt, -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/dark, -/area/station/service/bar/atrium) "wOk" = ( /obj/effect/turf_decal/tile/blue{ dir = 1 @@ -82125,12 +82114,6 @@ /obj/structure/flora/bush/grassy/style_random, /turf/open/floor/grass, /area/station/service/chapel) -"xlG" = ( -/obj/structure/chair/sofa/corner/maroon, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood, -/area/station/maintenance/starboard/fore) "xmn" = ( /obj/structure/chair/pew/right{ dir = 8 @@ -84651,6 +84634,23 @@ /obj/structure/sign/warning/electric_shock, /turf/closed/wall/r_wall/rust, /area/station/maintenance/starboard) +"xWT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, +/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior, +/obj/effect/mapping_helpers/airlock/locked, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/airlock_controller/incinerator_atmos{ + pixel_y = -24 + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/turf/open/floor/engine, +/area/station/maintenance/disposal/incinerator) "xXo" = ( /obj/structure/sign/departments/xenobio, /turf/closed/wall/r_wall, @@ -105635,7 +105635,7 @@ tlJ pVz mMP xBI -wtF +fWK fWL kEC wtP @@ -105892,7 +105892,7 @@ qLO qEs yiN xBI -rEM +sFu jIg pdI cUk @@ -112405,7 +112405,7 @@ vCV mLN ekp dtb -uJp +xWT yma yma kPK @@ -114648,12 +114648,12 @@ dYy fzL yej qTC -dLu -mOj +naG +hJQ gpS bMN -qPv -gNB +nQk +cmG mQN uWQ czT @@ -115162,12 +115162,12 @@ oHD fzL vSq qTC -hZt -osA +fKl +clQ piB xSU -pyW -nal +kju +wiz mZW kLy dyK @@ -116190,12 +116190,12 @@ jzt fzL hjJ qTC -nHG -wOb +iFv +gTz jDy tDW -inT -diG +faZ +cYG mZW sIf dyK @@ -116704,12 +116704,12 @@ tEE fzL nTG qTC -nqZ -bRV +mfT +qOB vYI lYE -mfw -pNk +str +rFS mQN jJh czT @@ -118481,7 +118481,7 @@ cIX cIX cIX fvU -muR +nUi iVF elc hIs @@ -118738,7 +118738,7 @@ cIX cIX cIX lRk -kur +jSw kNJ mOa qbc @@ -118995,8 +118995,8 @@ cIX cIX cIX fvU -xlG -tVh +swW +lda pvH lRk fvU @@ -119280,7 +119280,7 @@ bXz bXz wIL ffv -kUy +maX dyX xPk laE @@ -127509,7 +127509,7 @@ pNY bRx rcp mjW -mQj +pmk qAR aaa aaa @@ -127748,7 +127748,7 @@ nFN fLH apu pii -iQx +sbd lkB lkB lkB diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index a33413edcd8..80c03069fa8 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -12684,6 +12684,10 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) +"eFU" = ( +/obj/structure/chair/sofa/left/brown, +/turf/open/floor/carpet, +/area/station/medical/psychology) "eGd" = ( /obj/machinery/door/window{ dir = 1; @@ -15169,18 +15173,6 @@ /obj/effect/mapping_helpers/airlock/access/all/security/brig, /turf/open/floor/iron/white, /area/station/security/execution/transfer) -"fGd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_atmos{ - pixel_x = 40; - pixel_y = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, -/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior, -/turf/open/floor/engine, -/area/station/maintenance/disposal/incinerator) "fGp" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/cable, @@ -15335,18 +15327,6 @@ /obj/effect/turf_decal/siding/purple, /turf/open/floor/iron/white, /area/station/science/ordnance/testlab) -"fJk" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/computer/order_console/cook{ - dir = 8 - }, -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) "fJp" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -17578,10 +17558,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"gzJ" = ( -/obj/structure/chair/sofa/left/brown, -/turf/open/floor/carpet, -/area/station/medical/psychology) "gzO" = ( /obj/machinery/firealarm/directional/west, /obj/machinery/camera/directional/west{ @@ -23604,6 +23580,18 @@ /obj/item/infuser_book, /turf/open/floor/iron/dark, /area/station/science/genetics) +"iCj" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, +/obj/effect/mapping_helpers/airlock/locked, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/airlock_controller/incinerator_atmos{ + pixel_x = 40; + pixel_y = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, +/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior, +/turf/open/floor/engine, +/area/station/maintenance/disposal/incinerator) "iCz" = ( /obj/effect/mapping_helpers/airlock/locked, /obj/machinery/door/airlock/vault{ @@ -32578,6 +32566,18 @@ }, /turf/open/floor/iron/dark, /area/station/medical/break_room) +"lFo" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/computer/order_console/cook{ + dir = 8 + }, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "lFq" = ( /obj/structure/sign/warning/biohazard, /turf/closed/wall/r_wall, @@ -35123,6 +35123,13 @@ }, /turf/open/floor/iron/dark, /area/station/medical/morgue) +"mAy" = ( +/obj/machinery/computer/order_console/mining, +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/cargo/miningoffice) "mAJ" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -38595,6 +38602,23 @@ }, /turf/open/floor/iron/dark, /area/station/security/lockers) +"nJA" = ( +/obj/machinery/door/airlock/research/glass/incinerator/ordmix_interior, +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/airlock_controller/incinerator_ordmix{ + pixel_x = -24 + }, +/obj/machinery/button/ignition/incinerator/ordmix{ + pixel_x = 24; + pixel_y = -6 + }, +/obj/machinery/button/door/incinerator_vent_ordmix{ + pixel_x = 24; + pixel_y = 8 + }, +/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, +/turf/open/floor/engine, +/area/station/science/ordnance/burnchamber) "nJG" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -49643,13 +49667,6 @@ }, /turf/open/floor/wood, /area/station/service/library) -"rFF" = ( -/obj/machinery/computer/order_console/mining, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) "rFR" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 @@ -50976,16 +50993,6 @@ /obj/item/reagent_containers/syringe, /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) -"rYS" = ( -/obj/structure/sign/poster/official/get_your_legs{ - pixel_y = 32 - }, -/obj/structure/chair/sofa/right/brown, -/obj/item/toy/plush/moth{ - name = "Mender Moff" - }, -/turf/open/floor/carpet, -/area/station/medical/psychology) "rZt" = ( /obj/machinery/atmospherics/pipe/smart/manifold/purple/visible{ dir = 8 @@ -57767,23 +57774,6 @@ /obj/effect/mapping_helpers/airlock/access/all/science/general, /turf/open/floor/iron/white, /area/station/science/research) -"uqt" = ( -/obj/machinery/door/airlock/research/glass/incinerator/ordmix_interior, -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_ordmix{ - pixel_x = -24 - }, -/obj/machinery/button/ignition/incinerator/ordmix{ - pixel_x = 24; - pixel_y = -6 - }, -/obj/machinery/button/door/incinerator_vent_ordmix{ - pixel_x = 24; - pixel_y = 8 - }, -/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, -/turf/open/floor/engine, -/area/station/science/ordnance/burnchamber) "uqL" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -59178,6 +59168,16 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/engine) +"uNq" = ( +/obj/structure/sign/poster/official/get_your_legs{ + pixel_y = 32 + }, +/obj/structure/chair/sofa/right/brown, +/obj/item/toy/plush/moth{ + name = "Mender Moff" + }, +/turf/open/floor/carpet, +/area/station/medical/psychology) "uNs" = ( /obj/effect/turf_decal/delivery, /obj/machinery/door/firedoor, @@ -87069,7 +87069,7 @@ gQv jXu jXu jXu -rFF +mAy cLj kRe aFd @@ -90494,7 +90494,7 @@ jsO cpR lxC uYp -rYS +uNq sfA eQO xjI @@ -90751,7 +90751,7 @@ oAj qOV qQu uYp -gzJ +eFU sfA dvn qkJ @@ -100780,7 +100780,7 @@ fhi fhi fhi twy -uqt +nJA nZL bEv cgP @@ -107931,7 +107931,7 @@ ggM gIS xNG gYV -fJk +lFo qpn tHk unL @@ -108202,7 +108202,7 @@ lWq lWq lWq qIq -fGd +iCj rDm smg crg diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index 95071e01a65..0dc706e0649 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -926,16 +926,6 @@ /obj/item/seeds/tower, /turf/open/floor/iron/dark, /area/station/security/prison/garden) -"asf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/cable/layer3, -/mob/living/simple_animal/bot/secbot/pingsky{ - dir = 1 - }, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/aisat_interior) "asv" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -1134,6 +1124,16 @@ dir = 4 }, /area/station/maintenance/central/greater) +"ayl" = ( +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/structure/chair/sofa/corner/brown{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/cargo/miningdock/cafeteria) "ayo" = ( /obj/machinery/door/airlock/security{ name = "Interrogation" @@ -2866,6 +2866,17 @@ }, /turf/open/floor/iron, /area/station/security/prison) +"bkj" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/weather/snow, +/mob/living/simple_animal/hostile/retaliate/goat{ + name = "Pete" + }, +/turf/open/floor/iron/kitchen_coldroom, +/area/station/service/kitchen/coldroom) "bkl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -3454,14 +3465,6 @@ /obj/effect/landmark/blobstart, /turf/open/floor/iron, /area/station/cargo/miningdock/cafeteria) -"bvm" = ( -/obj/structure/chair/sofa/corner/brown{ - dir = 8 - }, -/turf/open/floor/iron/cafeteria{ - dir = 5 - }, -/area/station/science/breakroom) "bvH" = ( /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ @@ -8716,17 +8719,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/catwalk_floor, /area/station/maintenance/central/greater) -"deW" = ( -/obj/machinery/door/airlock/research/glass/incinerator/ordmix_interior{ - name = "Burn Chamber Interior Airlock" - }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_ordmix{ - pixel_y = 32 - }, -/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, -/turf/open/floor/engine, -/area/station/science/ordnance/burnchamber) "dfh" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -8754,6 +8746,14 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) +"dfY" = ( +/obj/structure/chair/sofa/corner/brown{ + dir = 8 + }, +/turf/open/floor/iron/cafeteria{ + dir = 5 + }, +/area/station/science/breakroom) "dgw" = ( /obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, @@ -13471,6 +13471,17 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/engine/o2, /area/station/engineering/atmos) +"ePi" = ( +/obj/machinery/vending/dinnerware, +/obj/effect/turf_decal/bot_white, +/obj/machinery/elevator_control_panel/directional/north{ + desc = "A small control panel used to move the kitchen dumbwaiter up and down."; + linked_elevator_id = "dumbwaiter_lift"; + name = "Dumbwaiter Control Panel"; + preset_destination_names = list("2" = "Hydroponics", "3" = "Kitchen") + }, +/turf/open/floor/iron/white, +/area/station/service/kitchen) "ePj" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/incinerator_input{ dir = 1 @@ -13834,28 +13845,6 @@ /obj/structure/sign/clock/directional/south, /turf/open/floor/iron, /area/station/commons/fitness) -"eVi" = ( -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/effect/turf_decal/trimline/neutral/filled/line, -/obj/machinery/camera/directional/south{ - c_tag = "Maintenance - East Tram Tunnel 4" - }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=TramLower11"; - location = "TramLower10" - }, -/obj/effect/turf_decal/bot{ - dir = 1 - }, -/mob/living/simple_animal/bot/secbot/beepsky/officer, -/turf/open/floor/iron, -/area/station/maintenance/tram/right) "eVl" = ( /obj/effect/landmark/start/ai/secondary, /obj/item/radio/intercom/directional/north{ @@ -14034,12 +14023,6 @@ /mob/living/basic/mouse, /turf/open/floor/plating, /area/station/maintenance/tram/right) -"eZs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/mob/living/carbon/human/species/monkey/punpun, -/turf/open/floor/iron/dark, -/area/station/service/bar) "eZT" = ( /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 8 @@ -14666,14 +14649,6 @@ /obj/effect/landmark/navigate_destination/hydro, /turf/open/floor/iron/dark, /area/station/service/hydroponics) -"flZ" = ( -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/obj/structure/chair/sofa/corner/brown, -/turf/open/floor/iron, -/area/station/cargo/miningdock/cafeteria) "fmf" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 4 @@ -14722,6 +14697,19 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, /area/station/command/bridge) +"fmK" = ( +/obj/effect/mapping_helpers/airlock/locked, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/airlock_controller/incinerator_atmos{ + pixel_x = 40; + pixel_y = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, +/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, +/turf/open/floor/engine, +/area/station/maintenance/disposal/incinerator) "fmL" = ( /obj/structure/cable, /obj/machinery/firealarm/directional/west, @@ -17408,13 +17396,6 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/iron/dark, /area/station/service/chapel/office) -"gnI" = ( -/obj/structure/chair/sofa/right/brown{ - dir = 8 - }, -/obj/structure/sign/calendar/directional/east, -/turf/open/floor/carpet, -/area/station/medical/psychology) "gnM" = ( /obj/effect/turf_decal/trimline/blue/filled/corner{ dir = 1 @@ -20251,17 +20232,6 @@ }, /turf/open/floor/iron/dark, /area/station/science/xenobiology) -"hpI" = ( -/obj/machinery/vending/dinnerware, -/obj/effect/turf_decal/bot_white, -/obj/machinery/elevator_control_panel/directional/north{ - desc = "A small control panel used to move the kitchen dumbwaiter up and down."; - linked_elevator_id = "dumbwaiter_lift"; - name = "Dumbwaiter Control Panel"; - preset_destination_names = list("2" = "Hydroponics", "3" = "Kitchen") - }, -/turf/open/floor/iron/white, -/area/station/service/kitchen) "hqi" = ( /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/wood, @@ -21529,6 +21499,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/science/genetics) +"hQg" = ( +/obj/structure/chair/sofa/left/brown{ + dir = 8 + }, +/obj/structure/sign/clock/directional/east, +/turf/open/floor/carpet, +/area/station/medical/psychology) "hQm" = ( /obj/structure/rack, /obj/effect/turf_decal/trimline/white/filled/line{ @@ -21763,12 +21740,6 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"hUj" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/mob/living/simple_animal/bot/secbot/beepsky/armsky, -/turf/open/floor/iron, -/area/station/ai_monitored/security/armory) "hUx" = ( /obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ dir = 5 @@ -22774,6 +22745,32 @@ }, /turf/open/floor/iron/dark, /area/station/command/bridge) +"imA" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 9 + }, +/obj/machinery/button/door/directional/west{ + id = "atmos"; + name = "Atmospherics Lockdown"; + pixel_y = 8; + req_access = list("atmospherics") + }, +/obj/machinery/button/door/directional/west{ + id = "Secure Storage"; + name = "Engineering Secure Storage"; + req_access = list("engine_equip") + }, +/obj/machinery/button/door/directional/west{ + id = "Engineering"; + name = "Engineering Lockdown"; + pixel_y = -8; + req_access = list("engineering") + }, +/obj/structure/sign/clock/directional/north, +/mob/living/simple_animal/parrot/poly, +/turf/open/floor/iron, +/area/station/command/heads_quarters/ce) "imP" = ( /obj/machinery/door/airlock/command/glass{ name = "Bridge Access" @@ -24123,6 +24120,12 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/tram/mid) +"iMx" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable, +/mob/living/simple_animal/bot/secbot/beepsky/armsky, +/turf/open/floor/iron, +/area/station/ai_monitored/security/armory) "iMy" = ( /obj/machinery/airalarm/directional/north, /turf/open/floor/iron/grimy, @@ -24709,32 +24712,6 @@ /obj/structure/sign/departments/vault/directional/south, /turf/open/floor/carpet, /area/station/command/bridge) -"iXc" = ( -/obj/structure/filingcabinet/chestdrawer, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 - }, -/obj/machinery/button/door/directional/west{ - id = "atmos"; - name = "Atmospherics Lockdown"; - pixel_y = 8; - req_access = list("atmospherics") - }, -/obj/machinery/button/door/directional/west{ - id = "Secure Storage"; - name = "Engineering Secure Storage"; - req_access = list("engine_equip") - }, -/obj/machinery/button/door/directional/west{ - id = "Engineering"; - name = "Engineering Lockdown"; - pixel_y = -8; - req_access = list("engineering") - }, -/obj/structure/sign/clock/directional/north, -/mob/living/simple_animal/parrot/poly, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) "iXw" = ( /obj/structure/table/glass, /obj/item/storage/medkit/regular{ @@ -25143,12 +25120,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/secondary/exit) -"jgk" = ( -/obj/machinery/computer/order_console/cook, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) "jgq" = ( /obj/structure/railing/corner, /turf/open/floor/glass/reinforced, @@ -26512,6 +26483,23 @@ }, /turf/open/floor/iron/checker, /area/station/commons/lounge) +"jGE" = ( +/obj/machinery/computer/order_console/mining, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown, +/obj/structure/disposalpipe/trunk/multiz{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/cargo/miningdock) "jGJ" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/camera{ @@ -28614,6 +28602,16 @@ }, /turf/open/floor/iron, /area/station/commons/fitness/recreation) +"kqS" = ( +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/structure/chair/sofa/middle/brown{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/cargo/miningdock/cafeteria) "kre" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 @@ -34564,6 +34562,14 @@ }, /turf/open/floor/iron, /area/station/science/robotics/lab) +"mvw" = ( +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/structure/chair/sofa/corner/brown, +/turf/open/floor/iron, +/area/station/cargo/miningdock/cafeteria) "mvy" = ( /obj/machinery/rnd/production/circuit_imprinter, /obj/effect/turf_decal/trimline/yellow/filled/end{ @@ -35960,13 +35966,6 @@ /obj/structure/reagent_dispensers/wall/peppertank/directional/west, /turf/open/floor/iron, /area/station/security/office) -"mTe" = ( -/obj/structure/chair/sofa/left/brown{ - dir = 8 - }, -/obj/structure/sign/clock/directional/east, -/turf/open/floor/carpet, -/area/station/medical/psychology) "mTm" = ( /obj/machinery/airalarm/directional/north, /obj/effect/turf_decal/trimline/red/filled/line{ @@ -36805,13 +36804,6 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/science/xenobiology) -"ngS" = ( -/obj/structure/chair/sofa/middle/brown{ - dir = 8 - }, -/obj/machinery/light/directional/east, -/turf/open/floor/carpet, -/area/station/medical/psychology) "ngU" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 @@ -36852,6 +36844,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) +"nhC" = ( +/obj/structure/chair/sofa/left/brown{ + dir = 1 + }, +/turf/open/floor/iron/cafeteria{ + dir = 5 + }, +/area/station/science/breakroom) "nhQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -37884,6 +37884,13 @@ /obj/structure/railing, /turf/open/floor/plating, /area/station/maintenance/tram/mid) +"nzZ" = ( +/obj/structure/chair/sofa/right/brown{ + dir = 8 + }, +/obj/structure/sign/calendar/directional/east, +/turf/open/floor/carpet, +/area/station/medical/psychology) "nAH" = ( /obj/machinery/computer/cargo{ dir = 4 @@ -39187,14 +39194,6 @@ }, /turf/open/floor/iron/dark, /area/station/medical/break_room) -"obR" = ( -/obj/structure/chair/sofa/right/brown{ - dir = 8 - }, -/turf/open/floor/iron/cafeteria{ - dir = 5 - }, -/area/station/science/breakroom) "obT" = ( /obj/structure/table, /obj/item/storage/toolbox/mechanical{ @@ -40188,17 +40187,6 @@ /obj/item/pillow/random, /turf/open/floor/carpet, /area/station/commons/dorms) -"oux" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 6 - }, -/obj/structure/bed/dogbed/ian, -/mob/living/simple_animal/pet/dog/pug{ - desc = "A pug with an insatiable appetite for pasta and pasta-adjacent piping."; - name = "Spaghetti" - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) "ouJ" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 9 @@ -41054,6 +41042,17 @@ /obj/structure/window/reinforced/spawner/west, /turf/open/floor/engine, /area/station/science/xenobiology) +"oNi" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 6 + }, +/obj/structure/bed/dogbed/ian, +/mob/living/simple_animal/pet/dog/pug{ + desc = "A pug with an insatiable appetite for pasta and pasta-adjacent piping."; + name = "Spaghetti" + }, +/turf/open/floor/iron, +/area/station/engineering/atmos) "oNo" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, @@ -41652,19 +41651,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/dark, /area/station/command/bridge) -"oZh" = ( -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_atmos{ - pixel_x = 40; - pixel_y = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, -/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, -/turf/open/floor/engine, -/area/station/maintenance/disposal/incinerator) "oZm" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 1 @@ -42985,13 +42971,6 @@ /obj/effect/mapping_helpers/airlock/access/any/engineering/tcoms, /turf/open/floor/plating, /area/station/engineering/transit_tube) -"pwe" = ( -/obj/structure/bed/dogbed/runtime, -/obj/machinery/light/directional/north, -/obj/structure/sign/clock/directional/north, -/mob/living/simple_animal/pet/cat/runtime, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/cmo) "pwp" = ( /obj/effect/turf_decal/trimline/neutral/filled/corner, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -44094,23 +44073,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/security/processing) -"pPN" = ( -/obj/structure/reagent_dispensers/watertank/high, -/obj/effect/turf_decal/tile/green/fourcorners, -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 8 - }, -/obj/machinery/elevator_control_panel/directional/south{ - desc = "A small control panel used to move the kitchen dumbwaiter up and down."; - linked_elevator_id = "dumbwaiter_lift"; - name = "Dumbwaiter Control Panel"; - preset_destination_names = list("2" = "Hydroponics", "3" = "Kitchen") - }, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics) "pQd" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/turret_protected/ai_upload_foyer) @@ -44645,16 +44607,6 @@ /obj/machinery/light/warm/directional/north, /turf/open/floor/iron/dark, /area/station/service/chapel) -"qal" = ( -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/obj/structure/chair/sofa/corner/brown{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/cargo/miningdock/cafeteria) "qar" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/reagent_dispensers/watertank, @@ -46371,6 +46323,14 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/tram/right) +"qEq" = ( +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/structure/chair/sofa/right/brown, +/turf/open/floor/iron, +/area/station/cargo/miningdock/cafeteria) "qEF" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/machinery/disposal/bin, @@ -47776,6 +47736,12 @@ }, /turf/open/floor/iron, /area/station/commons/vacant_room/commissary) +"rdd" = ( +/obj/machinery/computer/order_console/cook, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/iron, +/area/station/hallway/secondary/service) "rde" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 4 @@ -49952,6 +49918,16 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/storage) +"rOg" = ( +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/structure/chair/sofa/left/brown{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/cargo/miningdock/cafeteria) "rOp" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 6 @@ -50693,14 +50669,6 @@ /obj/structure/cable/layer3, /turf/open/floor/iron, /area/station/engineering/main) -"scY" = ( -/obj/structure/chair/sofa/left/brown{ - dir = 1 - }, -/turf/open/floor/iron/cafeteria{ - dir = 5 - }, -/area/station/science/breakroom) "sdc" = ( /obj/structure/chair/office/light{ dir = 1 @@ -52004,6 +51972,17 @@ }, /turf/open/floor/glass/reinforced, /area/station/hallway/primary/tram/left) +"sFl" = ( +/obj/machinery/door/airlock/research/glass/incinerator/ordmix_interior{ + name = "Burn Chamber Interior Airlock" + }, +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/airlock_controller/incinerator_ordmix{ + pixel_y = 32 + }, +/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, +/turf/open/floor/engine, +/area/station/science/ordnance/burnchamber) "sFq" = ( /turf/open/floor/noslip, /area/station/hallway/primary/tram/right) @@ -53241,16 +53220,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/construction/engineering) -"taK" = ( -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/obj/structure/chair/sofa/left/brown{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/miningdock/cafeteria) "taP" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 4 @@ -53820,6 +53789,13 @@ /obj/item/radio/intercom/directional/east, /turf/open/floor/iron, /area/station/commons/fitness/recreation) +"tnN" = ( +/obj/structure/bed/dogbed/runtime, +/obj/machinery/light/directional/north, +/obj/structure/sign/clock/directional/north, +/mob/living/simple_animal/pet/cat/runtime, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/cmo) "tnY" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 5 @@ -54936,6 +54912,28 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/medical/chemistry) +"tGh" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/neutral/filled/line, +/obj/machinery/camera/directional/south{ + c_tag = "Maintenance - East Tram Tunnel 4" + }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=TramLower11"; + location = "TramLower10" + }, +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/mob/living/simple_animal/bot/secbot/beepsky/officer, +/turf/open/floor/iron, +/area/station/maintenance/tram/right) "tGk" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -56210,17 +56208,6 @@ }, /turf/open/floor/iron, /area/station/security/office) -"ugb" = ( -/obj/effect/turf_decal/weather/snow/corner{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/weather/snow, -/mob/living/simple_animal/hostile/retaliate/goat{ - name = "Pete" - }, -/turf/open/floor/iron/kitchen_coldroom, -/area/station/service/kitchen/coldroom) "ugc" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/machinery/airalarm/directional/north, @@ -56741,6 +56728,23 @@ }, /turf/open/floor/iron, /area/station/security/checkpoint/engineering) +"upQ" = ( +/obj/structure/reagent_dispensers/watertank/high, +/obj/effect/turf_decal/tile/green/fourcorners, +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 8 + }, +/obj/machinery/elevator_control_panel/directional/south{ + desc = "A small control panel used to move the kitchen dumbwaiter up and down."; + linked_elevator_id = "dumbwaiter_lift"; + name = "Dumbwaiter Control Panel"; + preset_destination_names = list("2" = "Hydroponics", "3" = "Kitchen") + }, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics) "upY" = ( /obj/structure/closet/secure_closet/engineering_chief, /obj/effect/turf_decal/trimline/yellow/filled/line{ @@ -59896,6 +59900,12 @@ }, /turf/open/floor/plating, /area/station/hallway/secondary/entry) +"vxk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/mob/living/carbon/human/species/monkey/punpun, +/turf/open/floor/iron/dark, +/area/station/service/bar) "vxl" = ( /obj/effect/turf_decal/trimline/white/filled/line{ dir = 8 @@ -61963,6 +61973,13 @@ /obj/effect/turf_decal/trimline/white/filled/line, /turf/open/floor/iron/dark, /area/station/engineering/storage/tech) +"wlS" = ( +/obj/structure/chair/sofa/middle/brown{ + dir = 8 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/carpet, +/area/station/medical/psychology) "wma" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -63041,23 +63058,6 @@ }, /turf/open/floor/iron, /area/station/commons/storage/tools) -"wGF" = ( -/obj/machinery/computer/order_console/mining, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown, -/obj/structure/disposalpipe/trunk/multiz{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/miningdock) "wGQ" = ( /obj/structure/window/reinforced/spawner/north, /turf/open/floor/iron/dark/smooth_edge{ @@ -64727,14 +64727,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/security/checkpoint/escape) -"xiZ" = ( -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/obj/structure/chair/sofa/right/brown, -/turf/open/floor/iron, -/area/station/cargo/miningdock/cafeteria) "xjr" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -66050,16 +66042,6 @@ /obj/machinery/vending/wallmed/directional/north, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"xKm" = ( -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/obj/structure/chair/sofa/middle/brown{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/cargo/miningdock/cafeteria) "xKs" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -66193,6 +66175,14 @@ }, /turf/open/floor/iron, /area/station/commons/fitness/recreation) +"xNa" = ( +/obj/structure/chair/sofa/right/brown{ + dir = 8 + }, +/turf/open/floor/iron/cafeteria{ + dir = 5 + }, +/area/station/science/breakroom) "xNd" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -67033,6 +67023,16 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/catwalk_floor, /area/station/maintenance/port/central) +"ycd" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/cable/layer3, +/mob/living/simple_animal/bot/secbot/pingsky{ + dir = 1 + }, +/turf/open/floor/circuit, +/area/station/ai_monitored/turret_protected/aisat_interior) "ycg" = ( /obj/effect/landmark/start/station_engineer, /turf/open/floor/iron, @@ -99072,7 +99072,7 @@ fiv iRL ewM iRL -jgk +rdd fLL rbs cWZ @@ -99120,7 +99120,7 @@ qaL wph roB roB -iXc +imA mqw aiQ xBD @@ -99324,7 +99324,7 @@ dyC fIl nUP gvC -ugb +bkj dQt iRL ewM @@ -99835,7 +99835,7 @@ wRO ykN aiz mCR -pPN +upQ nUP cQY kDd @@ -102710,7 +102710,7 @@ bia hZr gdJ hRj -oux +oNi mwK xtu beG @@ -106334,7 +106334,7 @@ lEI saj shF tnj -oZh +fmK jMo fLW kHt @@ -111955,7 +111955,7 @@ mxV lJn sdf jMD -scY +nhC ppM nbq iyC @@ -112211,8 +112211,8 @@ oys yky lhA oTm -obR -bvm +xNa +dfY qig bnS rGx @@ -112428,10 +112428,10 @@ dhe dhe dhe unl -xiZ +qEq nTG nTG -taK +rOg unl qaV kDi @@ -112685,10 +112685,10 @@ dhe dhe dhe unl -flZ -xKm -xKm -qal +mvw +kqS +kqS +ayl unl gxw kDi @@ -113208,7 +113208,7 @@ bMX kDi fel rVT -wGF +jGE vle dif fJS @@ -113487,7 +113487,7 @@ bEn bEn bEn bEn -eVi +tGh mbJ qxm xtu @@ -114848,7 +114848,7 @@ xrV bhD gzg nfz -asf +ycd byF waj vkq @@ -116066,7 +116066,7 @@ qxm tTp oys pTM -deW +sFl aYI rvr gdG @@ -153019,7 +153019,7 @@ cCc mUl tXi mkz -hUj +iMx qYb ycK etH @@ -162344,7 +162344,7 @@ kce whz xtu mBq -pwe +tnN ojQ iTS gYg @@ -165130,7 +165130,7 @@ nKz ucE aKB vnI -eZs +vxk nKz crT wcv @@ -165628,7 +165628,7 @@ dhe dhe eSx eSx -hpI +ePi pcP omc rpZ @@ -168759,9 +168759,9 @@ dvK bLQ bFq qgd -gnI -ngS -mTe +nzZ +wlS +hQg kcZ ugt pbn diff --git a/code/__DEFINES/atmospherics/atmos_machinery.dm b/code/__DEFINES/atmospherics/atmos_machinery.dm new file mode 100644 index 00000000000..358bbdc17ee --- /dev/null +++ b/code/__DEFINES/atmospherics/atmos_machinery.dm @@ -0,0 +1,31 @@ +/// Used when an atmos machine has "external" selected. +/// Found in `pressure_checks` of vents and air alarms. +#define ATMOS_EXTERNAL_BOUND (1 << 0) + +/// Used when an atmos machine has "internal" selected. +/// Found in `pressure_checks` of vents and air alarms. +#define ATMOS_INTERNAL_BOUND (1 << 1) + +/// The maximum bound of an atmos machine. +/// Found in `pressure_checks` of vents and air alarms. +#define ATMOS_BOUND_MAX (ATMOS_EXTERNAL_BOUND | ATMOS_INTERNAL_BOUND) + +/// Used when an atmos machine is siphoning out air. +/// Found in air alarms, vents, and scrubbers. +#define ATMOS_DIRECTION_SIPHONING 0 + +/// Used when a vent is releasing air. +/// Found in air alarms, vents, and scrubbers. +#define ATMOS_DIRECTION_RELEASING 1 + +/// Used when a scrubber is scrubbing air. +/// Found in air alarms, vents, and scrubbers. +#define ATMOS_DIRECTION_SCRUBBING 1 + +/// The max pressure of pumps. +#define ATMOS_PUMP_MAX_PRESSURE (ONE_ATMOSPHERE * 50) + +/// Value of /obj/machinery/airalarm/var/danger_level +#define AIR_ALARM_ALERT_NONE 0 +#define AIR_ALARM_ALERT_MINOR 1 +#define AIR_ALARM_ALERT_SEVERE 2 diff --git a/code/__DEFINES/radio.dm b/code/__DEFINES/radio.dm index eddebac0d19..105c2cf7f06 100644 --- a/code/__DEFINES/radio.dm +++ b/code/__DEFINES/radio.dm @@ -76,18 +76,14 @@ #define FREQ_HOLOGRID_SOLUTION 1433 #define FREQ_STATUS_DISPLAYS 1435 -#define FREQ_ATMOS_ALARMS 1437 // air alarms <-> alert computers -#define FREQ_ATMOS_CONTROL 1439 // air alarms <-> vents and scrubbers #define MIN_FREQ 1441 // ------------------------------------------------------ // Only the 1441 to 1489 range is freely available for general conversation. // This represents 1/8th of the available spectrum. -#define FREQ_ATMOS_STORAGE 1441 #define FREQ_NAV_BEACON 1445 #define FREQ_AI_PRIVATE 1447 // AI private comms frequency, magenta #define FREQ_PRESSURE_PLATE 1447 -#define FREQ_AIRLOCK_CONTROL 1449 #define FREQ_ELECTROPACK 1449 #define FREQ_MAGNETS 1449 #define FREQ_LOCATOR_IMPLANT 1451 @@ -105,10 +101,7 @@ #define TRANSMISSION_SUPERSPACE 3 // reaches independent (CentCom) radios only // Filter types, used as an optimization to avoid unnecessary proc calls. -#define RADIO_TO_AIRALARM "to_airalarm" -#define RADIO_FROM_AIRALARM "from_airalarm" #define RADIO_SIGNALER "signaler" -#define RADIO_ATMOSIA "atmosia" #define RADIO_AIRLOCK "airlock" #define RADIO_MAGNETS "magnets" diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index e57ab67a447..10f72b07117 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -107,7 +107,6 @@ GLOBAL_LIST_INIT(WALLITEMS_INTERIOR, typecacheof(list( /obj/machinery/computer/security/telescreen, /obj/machinery/computer/security/telescreen/entertainment, /obj/machinery/defibrillator_mount, - /obj/machinery/embedded_controller/radio/simple_vent_controller, /obj/machinery/firealarm, /obj/machinery/flasher, /obj/machinery/keycard_auth, diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm index 4be1918ced6..744cd20fe0f 100644 --- a/code/_globalvars/lists/objects.dm +++ b/code/_globalvars/lists/objects.dm @@ -52,9 +52,6 @@ GLOBAL_LIST_EMPTY(ai_status_displays) GLOBAL_LIST_EMPTY(mob_spawners) // All mob_spawn objects GLOBAL_LIST_EMPTY(alert_consoles) // Station alert consoles, /obj/machinery/computer/station_alert -GLOBAL_LIST_EMPTY(air_scrub_names) // Name list of all air scrubbers -GLOBAL_LIST_EMPTY(air_vent_names) // Name list of all air vents - GLOBAL_LIST_EMPTY(roundstart_station_borgcharger_areas) // List of area names of roundstart station cyborg rechargers, for the low charge/no charge cyborg screen alert tooltips. GLOBAL_LIST_EMPTY(roundstart_station_mechcharger_areas) // List of area names of roundstart station mech rechargers, for the low charge/no charge mech screen alert tooltips. diff --git a/code/datums/wires/airalarm.dm b/code/datums/wires/airalarm.dm index 16895642e55..b479ab2e8c9 100644 --- a/code/datums/wires/airalarm.dm +++ b/code/datums/wires/airalarm.dm @@ -49,7 +49,7 @@ A.apply_mode(usr) if(WIRE_ALARM) // Clear alarms. if(A.alarm_manager.clear_alarm(ALARM_ATMOS)) - A.post_alert(0) + A.danger_level = AIR_ALARM_ALERT_NONE A.update_appearance() /datum/wires/airalarm/on_cut(wire, mend) @@ -70,5 +70,5 @@ A.apply_mode(usr) if(WIRE_ALARM) // Post alarm. if(A.alarm_manager.send_alarm(ALARM_ATMOS)) - A.post_alert(2) + A.danger_level = AIR_ALARM_ALERT_SEVERE A.update_appearance() diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 8c8d1236ed0..9de77fd83be 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -115,8 +115,11 @@ ///Used to decide what kind of reverb the area makes sound have var/sound_environment = SOUND_ENVIRONMENT_NONE - var/list/air_vent_info = list() - var/list/air_scrub_info = list() + /// List of all air vents in the area + var/list/obj/machinery/atmospherics/components/unary/vent_pump/air_vents = list() + + /// List of all air scrubbers in the area + var/list/obj/machinery/atmospherics/components/unary/vent_scrubber/air_scrubbers = list() /** * A list of teleport locations @@ -276,6 +279,7 @@ GLOBAL_LIST_EMPTY(teleportlocs) GLOB.areas -= src STOP_PROCESSING(SSobj, src) QDEL_NULL(alarm_manager) + air_vents = null return ..() /** diff --git a/code/game/machinery/airlock_control.dm b/code/game/machinery/airlock_control.dm index 1ba6fbd5acf..6e30493d787 100644 --- a/code/game/machinery/airlock_control.dm +++ b/code/game/machinery/airlock_control.dm @@ -5,86 +5,32 @@ /// The current state of the airlock, used to construct the airlock overlays var/airlock_state var/frequency - var/datum/radio_frequency/radio_connection -/obj/machinery/door/airlock/receive_signal(datum/signal/signal) - if(!signal) - return +/// Forces the airlock to unbolt and open +/obj/machinery/door/airlock/proc/secure_open() + locked = FALSE + update_appearance() - if(id_tag != signal.data["tag"] || !signal.data["command"]) - return + stoplag(0.2 SECONDS) + open(forced = TRUE) - switch(signal.data["command"]) - if("open") - open(TRUE) + locked = TRUE + update_appearance() - if("close") - close(TRUE) +/// Forces the airlock to close and bolt +/obj/machinery/door/airlock/proc/secure_close() + locked = FALSE + close(forced = TRUE) - if("unlock") - locked = FALSE - update_appearance() - - if("lock") - locked = TRUE - update_appearance() - - if("secure_open") - locked = FALSE - update_appearance() - - sleep(0.2 SECONDS) - open(TRUE) - - locked = TRUE - update_appearance() - - if("secure_close") - locked = FALSE - close(TRUE) - - locked = TRUE - sleep(0.2 SECONDS) - update_appearance() - - send_status() - -/obj/machinery/door/airlock/proc/send_status() - if(radio_connection) - var/datum/signal/signal = new(list( - "tag" = id_tag, - "timestamp" = world.time, - "door_status" = density ? "closed" : "open", - "lock_status" = locked ? "locked" : "unlocked" - )) - radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK) - -/obj/machinery/door/airlock/open(surpress_send) - . = ..() - if(!surpress_send) - send_status() - -/obj/machinery/door/airlock/close(surpress_send) - . = ..() - if(!surpress_send) - send_status() - -/obj/machinery/door/airlock/proc/set_frequency(new_frequency) - SSradio.remove_object(src, frequency) - if(new_frequency) - frequency = new_frequency - radio_connection = SSradio.add_object(src, frequency, RADIO_AIRLOCK) + locked = TRUE + stoplag(0.2 SECONDS) + update_appearance() /obj/machinery/door/airlock/on_magic_unlock(datum/source, datum/action/cooldown/spell/aoe/knock/spell, mob/living/caster) // Airlocks should unlock themselves when knock is casted, THEN open up. locked = FALSE return ..() -/obj/machinery/door/airlock/Destroy() - if(frequency) - SSradio.remove_object(src,frequency) - return ..() - /obj/machinery/airlock_sensor icon = 'icons/obj/airlock_machines.dmi' icon_state = "airlock_sensor_off" @@ -95,9 +41,6 @@ power_channel = AREA_USAGE_ENVIRON var/master_tag - var/frequency = FREQ_AIRLOCK_CONTROL - - var/datum/radio_frequency/radio_connection var/on = TRUE var/alert = FALSE @@ -128,12 +71,10 @@ . = ..() if(.) return - var/datum/signal/signal = new(list( - "tag" = master_tag, - "command" = "cycle" - )) - radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK) + var/obj/machinery/airlock_controller/airlock_controller = GLOB.objects_by_id_tag[master_tag] + airlock_controller?.cycle() + flick("airlock_sensor_cycle", src) /obj/machinery/airlock_sensor/process() @@ -142,25 +83,4 @@ var/pressure = round(air_sample.return_pressure(),0.1) alert = (pressure < ONE_ATMOSPHERE*0.8) - var/datum/signal/signal = new(list( - "tag" = id_tag, - "timestamp" = world.time, - "pressure" = num2text(pressure) - )) - - radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK) - update_appearance() - -/obj/machinery/airlock_sensor/proc/set_frequency(new_frequency) - SSradio.remove_object(src, frequency) - frequency = new_frequency - radio_connection = SSradio.add_object(src, frequency, RADIO_AIRLOCK) - -/obj/machinery/airlock_sensor/Initialize(mapload) - . = ..() - set_frequency(frequency) - -/obj/machinery/airlock_sensor/Destroy() - SSradio.remove_object(src,frequency) - return ..() diff --git a/code/game/machinery/computer/atmos_alert.dm b/code/game/machinery/computer/atmos_alert.dm index 83088595c55..a246af4aaf1 100644 --- a/code/game/machinery/computer/atmos_alert.dm +++ b/code/game/machinery/computer/atmos_alert.dm @@ -5,19 +5,9 @@ icon_screen = "alert:0" icon_keyboard = "atmos_key" light_color = LIGHT_COLOR_CYAN + var/list/priority_alarms = list() var/list/minor_alarms = list() - var/receive_frequency = FREQ_ATMOS_ALARMS - var/datum/radio_frequency/radio_connection - - -/obj/machinery/computer/atmos_alert/Initialize(mapload) - . = ..() - set_frequency(receive_frequency) - -/obj/machinery/computer/atmos_alert/Destroy() - SSradio.remove_object(src, receive_frequency) - return ..() /obj/machinery/computer/atmos_alert/ui_interact(mob/user, datum/tgui/ui) . = ..() @@ -56,29 +46,33 @@ . = TRUE update_appearance() -/obj/machinery/computer/atmos_alert/proc/set_frequency(new_frequency) - SSradio.remove_object(src, receive_frequency) - receive_frequency = new_frequency - radio_connection = SSradio.add_object(src, receive_frequency, RADIO_ATMOSIA) +/obj/machinery/computer/atmos_alert/process() + . = ..() + if (!.) + return FALSE -/obj/machinery/computer/atmos_alert/receive_signal(datum/signal/signal) - if(!signal) - return + var/alarm_count = priority_alarms.len + minor_alarms.len - var/zone = signal.data["zone"] - var/severity = signal.data["alert"] + priority_alarms.Cut() + minor_alarms.Cut() - if(!zone || !severity) - return + for (var/obj/machinery/airalarm/air_alarm as anything in GLOB.air_alarms) + if (air_alarm.z != z) + continue - minor_alarms -= zone - priority_alarms -= zone - if(severity == "severe") - priority_alarms += zone - else if (severity == "minor") - minor_alarms += zone - update_appearance() - return + switch (air_alarm.danger_level) + if (AIR_ALARM_ALERT_NONE) + continue + if (AIR_ALARM_ALERT_MINOR) + minor_alarms += get_area_name(air_alarm, format_text = TRUE) + if (AIR_ALARM_ALERT_SEVERE) + priority_alarms += get_area_name(air_alarm, format_text = TRUE) + + // Either we got new alarms, or we have no alarms anymore + if ((alarm_count == 0) != (minor_alarms.len + priority_alarms.len == 0)) + update_appearance(UPDATE_ICON) + + return TRUE /obj/machinery/computer/atmos_alert/update_overlays() . = ..() diff --git a/code/game/machinery/computer/atmos_computers/_air_sensor.dm b/code/game/machinery/computer/atmos_computers/_air_sensor.dm index b75882c5b1d..5a49697c9ed 100644 --- a/code/game/machinery/computer/atmos_computers/_air_sensor.dm +++ b/code/game/machinery/computer/atmos_computers/_air_sensor.dm @@ -8,46 +8,13 @@ var/on = TRUE - var/frequency = FREQ_ATMOS_STORAGE - var/datum/radio_frequency/radio_connection - /// The unique string that represents which atmos chamber to associate with. var/chamber_id /obj/machinery/air_sensor/Initialize(mapload) id_tag = chamber_id + "_sensor" - SSair.start_processing_machine(src) - radio_connection = SSradio.add_object(src, frequency, RADIO_ATMOSIA) return ..() -/obj/machinery/air_sensor/Destroy() - INVOKE_ASYNC(src, PROC_REF(broadcast_destruction), src.frequency) - SSair.stop_processing_machine(src) - SSradio.remove_object(src, frequency) - return ..() - -/obj/machinery/air_sensor/proc/broadcast_destruction(frequency) - var/datum/signal/signal = new(list( - "sigtype" = "destroyed", - "tag" = id_tag, - "timestamp" = world.time, - )) - var/datum/radio_frequency/connection = SSradio.return_frequency(frequency) - connection.post_signal(null, signal, filter = RADIO_ATMOSIA) - /obj/machinery/air_sensor/update_icon_state() icon_state = "gsensor[on]" return ..() - -/obj/machinery/air_sensor/process_atmos() - if(!on) - return - - var/datum/gas_mixture/air_sample = return_air() - var/datum/signal/signal = new(list( - "sigtype" = "status", - "tag" = id_tag, - "timestamp" = world.time, - "gasmix" = gas_mixture_parser(air_sample), - )) - radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) diff --git a/code/game/machinery/computer/atmos_computers/_atmos_control.dm b/code/game/machinery/computer/atmos_computers/_atmos_control.dm index 659f881f2bf..b1c5987c847 100644 --- a/code/game/machinery/computer/atmos_computers/_atmos_control.dm +++ b/code/game/machinery/computer/atmos_computers/_atmos_control.dm @@ -1,8 +1,4 @@ -///////////////////////////////////////////////////////////// -// GENERAL AIR CONTROL (a.k.a atmos computer) -///////////////////////////////////////////////////////////// -GLOBAL_LIST_EMPTY(atmos_air_controllers) - +/// GENERAL AIR CONTROL (a.k.a atmos computer) /obj/machinery/computer/atmos_control name = "atmospherics monitoring" desc = "Used to monitor the station's atmospherics sensors." @@ -11,75 +7,15 @@ GLOBAL_LIST_EMPTY(atmos_air_controllers) circuit = /obj/item/circuitboard/computer/atmos_control light_color = LIGHT_COLOR_CYAN - var/frequency = FREQ_ATMOS_STORAGE - var/datum/radio_frequency/radio_connection - /// Which sensors/input/outlets do we want to listen to. /// Assoc of list[chamber_id] = readable_chamber_name var/list/atmos_chambers - // The list where received signals about devices are written into. - // Assoc of list[atmos_chambers_string] - var/list/sensor_info - var/list/input_info - var/list/output_info - /// Whether we can actually adjust the chambers or not. var/control = TRUE /// Whether we are allowed to reconnect. var/reconnecting = TRUE -/obj/machinery/computer/atmos_control/Initialize(mapload) - . = ..() - - GLOB.atmos_air_controllers += src - set_frequency(frequency) - - sensor_info = list() - input_info = list() - output_info = list() - -/obj/machinery/computer/atmos_control/Destroy() - GLOB.atmos_air_controllers -= src - SSradio.remove_object(src, frequency) - return ..() - -/obj/machinery/computer/atmos_control/receive_signal(datum/signal/signal) - if(!signal) - return - - /// The tag of the signal data should be the id_tag var of the atmos object. Format is chamber_role. - /// Where chamber is the chamber name and role is one of "sensor", "in", and "out". - var/list/tag_data = splittext(signal.data["tag"], "_") - - if(length(tag_data) < 2) - return - - if(!(tag_data[1] in atmos_chambers)) - return - - var/list/info_list - switch(tag_data[2]) - if("sensor") - info_list = sensor_info - if("in") - info_list = input_info - if("out") - info_list = output_info - else - return - - if(signal.data["sigtype"] == "status") - info_list[tag_data[1]] = signal.data - - if(signal.data["sigtype"] == "destroyed") - info_list[tag_data[1]] = null - -/obj/machinery/computer/atmos_control/proc/set_frequency(new_frequency) - SSradio.remove_object(src, frequency) - frequency = new_frequency - radio_connection = SSradio.add_object(src, frequency, RADIO_ATMOSIA) - /// Reconnect only works for station based chambers. /obj/machinery/computer/atmos_control/proc/reconnect(mob/user) if(!reconnecting) @@ -87,13 +23,11 @@ GLOBAL_LIST_EMPTY(atmos_air_controllers) // We only prompt the user with the sensors that are actually available. var/available_devices = list() - for(var/datum/weakref/device_ref as anything in radio_connection.devices[RADIO_ATMOSIA]) - var/obj/machinery/machine = device_ref.resolve() - if(istype(machine, /obj/machinery/computer/atmos_control)) // Skip if we are a listener. Make this a list if you add devices that work similarly to this comp. - continue - var/chamber_identifier = splittext(machine.id_tag, "_")[1] - if(!GLOB.station_gas_chambers[chamber_identifier]) + + for (var/chamber_identifier in GLOB.station_gas_chambers) + if (!("[chamber_identifier]_in" in GLOB.objects_by_id_tag) && !("[chamber_identifier]_out" in GLOB.objects_by_id_tag)) continue + available_devices[GLOB.station_gas_chambers[chamber_identifier]] = chamber_identifier // As long as we dont put any funny chars in the strings it should match. @@ -105,20 +39,9 @@ GLOBAL_LIST_EMPTY(atmos_air_controllers) atmos_chambers = list() atmos_chambers[new_id] = new_name - sensor_info = list() - input_info = list() - output_info = list() name = new_name + (control ? " Control" : " Monitor") - // Ask things around us to update. - // Due to how signal datums work this is unoptimized but as long as our freq isnt terribly populated we should be fine. - // Also, we dont need to prompt sensors and meters since they already broadcast every process_atmos(). - var/datum/signal/update_request = new(list("sigtype" = "command", "user" = usr, "status" = TRUE ,"tag" = "[new_id]_in")) - radio_connection.post_signal(src, update_request, filter = RADIO_ATMOSIA) - update_request = new(list("sigtype" = "command", "user" = usr, "status" = TRUE ,"tag" = "[new_id]_out")) - radio_connection.post_signal(src, update_request, filter = RADIO_ATMOSIA) - return TRUE /obj/machinery/computer/atmos_control/ui_interact(mob/user, datum/tgui/ui) @@ -145,54 +68,74 @@ GLOBAL_LIST_EMPTY(atmos_air_controllers) var/list/chamber_info = list() chamber_info["id"] = chamber_id chamber_info["name"] = atmos_chambers[chamber_id] - if(sensor_info[chamber_id]) - chamber_info["gasmix"] = sensor_info[chamber_id]["gasmix"] - if(input_info[chamber_id]) - chamber_info["input_info"] = list() - chamber_info["input_info"]["active"] = input_info[chamber_id]["power"] - chamber_info["input_info"]["amount"] = input_info[chamber_id]["volume_rate"] - if(output_info[chamber_id]) - chamber_info["output_info"] = list() - chamber_info["output_info"]["active"] = output_info[chamber_id]["power"] - chamber_info["output_info"]["amount"] = output_info[chamber_id]["internal"] + + var/obj/machinery/sensor = GLOB.objects_by_id_tag["[chamber_id]_sensor"] + if (!isnull(sensor)) + chamber_info["gasmix"] = gas_mixture_parser(sensor.return_air()) + + var/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/input = GLOB.objects_by_id_tag["[chamber_id]_in"] + if (!isnull(input)) + chamber_info["input_info"] = list( + "active" = input.on, + "amount" = input.volume_rate, + ) + + var/obj/machinery/atmospherics/components/unary/vent_pump/output = GLOB.objects_by_id_tag["[chamber_id]_out"] + if (!isnull(output)) + chamber_info["output_info"] = list( + "active" = output.on, + "amount" = output.internal_pressure_bound, + ) + data["chambers"] += list(chamber_info) return data /obj/machinery/computer/atmos_control/ui_act(action, params) . = ..() - if(. || !radio_connection || !(control || reconnecting)) + if(. || !(control || reconnecting)) return - var/datum/signal/signal = new(list("sigtype" = "command", "user" = usr)) - switch(action) - if("reconnect") - return reconnect(usr) - if("toggle_input") - if(!(params["chamber"] in atmos_chambers)) - return FALSE - signal.data += list("tag" = params["chamber"] + "_in", "power_toggle" = TRUE) - if("toggle_output") - if(!(params["chamber"] in atmos_chambers)) - return FALSE - signal.data += list("tag" = params["chamber"] + "_out", "power_toggle" = TRUE) - if("adjust_input") - if(!(params["chamber"] in atmos_chambers)) - return FALSE - var/target = text2num(params["rate"]) - if(isnull(target)) - return FALSE - target = clamp(target, 0, MAX_TRANSFER_RATE) - signal.data += list("tag" = params["chamber"] + "_in", "set_volume_rate" = target) - if("adjust_output") - if(!(params["chamber"] in atmos_chambers)) - return FALSE - var/target = text2num(params["rate"]) - if(isnull(target)) - return FALSE - target = clamp(target, 0, MAX_OUTPUT_PRESSURE) - signal.data += list("tag" = params["chamber"] + "_out", "set_internal_pressure" = target) + var/chamber = params["chamber"] + + switch(action) + if("toggle_input") + if (!(chamber in atmos_chambers)) + return TRUE + + var/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/input = GLOB.objects_by_id_tag["[chamber]_in"] + input?.on = !input.on + input.update_appearance(UPDATE_ICON) + if("toggle_output") + if (!(chamber in atmos_chambers)) + return TRUE + + var/obj/machinery/atmospherics/components/unary/vent_pump/output = GLOB.objects_by_id_tag["[chamber]_out"] + output?.on = !output.on + output.update_appearance(UPDATE_ICON) + if("adjust_input") + if (!(chamber in atmos_chambers)) + return TRUE + + var/target = text2num(params["rate"]) + if(isnull(target)) + return TRUE + target = clamp(target, 0, MAX_TRANSFER_RATE) + + var/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/input = GLOB.objects_by_id_tag["[chamber]_in"] + input?.volume_rate = clamp(target, 0, min(input.airs[1].volume, MAX_TRANSFER_RATE)) + if("adjust_output") + if (!(chamber in atmos_chambers)) + return TRUE + + var/target = text2num(params["rate"]) + if(isnull(target)) + return TRUE + + var/obj/machinery/atmospherics/components/unary/vent_pump/output = GLOB.objects_by_id_tag["[chamber]_out"] + output?.internal_pressure_bound = clamp(target, 0, ATMOS_PUMP_MAX_PRESSURE) + if("reconnect") + reconnect(usr) - radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) return TRUE /obj/machinery/computer/atmos_control/nocontrol diff --git a/code/game/machinery/computer/atmos_computers/inlets.dm b/code/game/machinery/computer/atmos_computers/inlets.dm index f172a59270b..2cb788acc0e 100644 --- a/code/game/machinery/computer/atmos_computers/inlets.dm +++ b/code/game/machinery/computer/atmos_computers/inlets.dm @@ -3,71 +3,10 @@ volume_rate = MAX_TRANSFER_RATE /// The unique string that represents which atmos chamber to associate with. var/chamber_id - var/frequency = FREQ_ATMOS_STORAGE - var/datum/radio_frequency/radio_connection /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/Initialize(mapload) id_tag = chamber_id + "_in" - radio_connection = SSradio.add_object(src, frequency, RADIO_ATMOSIA) return ..() - -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/atmos_init() - . = ..() - broadcast_status() - -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/Destroy() - SSradio.remove_object(src, frequency) - return ..() - -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/on_deconstruction() - . = ..() - INVOKE_ASYNC(src, PROC_REF(broadcast_destruction), src.frequency) - -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/ui_act(action, params) - . = ..() - if(.) - broadcast_status() - -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/proc/broadcast_status() - if(!radio_connection) - return - - var/datum/signal/signal = new(list( - "tag" = id_tag, - "sigtype" = "status", - "device" = "AO", - "power" = on, - "volume_rate" = volume_rate, - "timestamp" = world.time, - )) - radio_connection.post_signal(src, signal) - -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/proc/broadcast_destruction(frequency) - var/datum/signal/signal = new(list( - "sigtype" = "destroyed", - "tag" = id_tag, - "timestamp" = world.time, - )) - var/datum/radio_frequency/connection = SSradio.return_frequency(frequency) - connection.post_signal(null, signal, filter = RADIO_ATMOSIA) - -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/receive_signal(datum/signal/signal) - if(!signal.data["tag"] || (signal.data["tag"] != id_tag) || (signal.data["sigtype"]!="command")) - return - - if("power" in signal.data) - on = text2num(signal.data["power"]) - - if("power_toggle" in signal.data) - on = !on - - if("set_volume_rate" in signal.data) - var/number = text2num(signal.data["set_volume_rate"]) - var/datum/gas_mixture/air_contents = airs[1] - volume_rate = clamp(number, 0, air_contents.volume) - - broadcast_status() - update_appearance() /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/plasma_input name = "plasma tank input injector" diff --git a/code/game/machinery/computer/atmos_computers/meters.dm b/code/game/machinery/computer/atmos_computers/meters.dm index 546ade8839c..3b032213631 100644 --- a/code/game/machinery/computer/atmos_computers/meters.dm +++ b/code/game/machinery/computer/atmos_computers/meters.dm @@ -2,45 +2,6 @@ /// The unique string that represents which atmos chamber to associate with. var/chamber_id - var/frequency = FREQ_ATMOS_STORAGE - var/datum/radio_frequency/radio_connection - -/obj/machinery/meter/monitored/Initialize(mapload) - id_tag = chamber_id + "_sensor" - radio_connection = SSradio.add_object(src, frequency, RADIO_ATMOSIA) - return ..() - -/obj/machinery/meter/monitored/Destroy() - SSradio.remove_object(src, frequency) - return ..() - -/obj/machinery/meter/monitored/on_deconstruction() - . = ..() - INVOKE_ASYNC(src, PROC_REF(broadcast_destruction), src.frequency) - -/obj/machinery/meter/monitored/proc/broadcast_destruction(frequency) - var/datum/signal/signal = new(list( - "sigtype" = "destroyed", - "tag" = id_tag, - "timestamp" = world.time, - )) - var/datum/radio_frequency/connection = SSradio.return_frequency(frequency) - connection.post_signal(null, signal, filter = RADIO_ATMOSIA) - -/obj/machinery/meter/monitored/process_atmos() - . = ..() - if(!radio_connection) - return - - var/datum/signal/signal = new(list( - "tag" = id_tag, - "device" = "AM", - "sigtype" = "status", - "timestamp" = world.time, - "gasmix" = gas_mixture_parser(target.return_air()), - )) - radio_connection.post_signal(src, signal) - /obj/machinery/meter/monitored/layer2 target_layer = 2 diff --git a/code/game/machinery/computer/atmos_computers/outlets.dm b/code/game/machinery/computer/atmos_computers/outlets.dm index 34d7199af3a..34a57d271a3 100644 --- a/code/game/machinery/computer/atmos_computers/outlets.dm +++ b/code/game/machinery/computer/atmos_computers/outlets.dm @@ -1,5 +1,4 @@ /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored - frequency = FREQ_ATMOS_STORAGE on = TRUE icon_state = "vent_map_siphon_on-3" /// The unique string that represents which atmos chamber to associate with. @@ -9,29 +8,6 @@ id_tag = chamber_id + "_out" return ..() -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/Destroy() - SSradio.remove_object(src, frequency) - return ..() - -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/on_deconstruction() - . = ..() - INVOKE_ASYNC(src, PROC_REF(broadcast_destruction), src.frequency) - -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/set_frequency(new_frequency) - SSradio.remove_object(src, frequency) - frequency = new_frequency - if(new_frequency) - radio_connection = SSradio.add_object(src, new_frequency, RADIO_ATMOSIA) - -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/proc/broadcast_destruction(frequency) - var/datum/signal/signal = new(list( - "sigtype" = "destroyed", - "tag" = id_tag, - "timestamp" = world.time, - )) - var/datum/radio_frequency/connection = SSradio.return_frequency(frequency) - connection.post_signal(null, signal, filter = RADIO_ATMOSIA) - /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/plasma_output name = "plasma tank output inlet" chamber_id = ATMOS_GAS_MONITOR_PLAS @@ -129,7 +105,6 @@ chamber_id = ATMOS_GAS_MONITOR_ORDNANCE_FREEZER /obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/monitored - frequency = FREQ_ATMOS_STORAGE on = TRUE icon_state = "vent_map_siphon_on-3" var/chamber_id @@ -139,30 +114,6 @@ id_tag = chamber_id + "_out" return ..() -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/monitored/Destroy() - INVOKE_ASYNC(src, PROC_REF(broadcast_destruction), src.frequency) - SSradio.remove_object(src, frequency) - return ..() - -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/monitored/on_deconstruction() - . = ..() - INVOKE_ASYNC(src, PROC_REF(broadcast_destruction), src.frequency) - -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/monitored/set_frequency(new_frequency) - SSradio.remove_object(src, frequency) - frequency = new_frequency - if(new_frequency) - radio_connection = SSradio.add_object(src, new_frequency, RADIO_ATMOSIA) - -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/monitored/proc/broadcast_destruction(frequency) - var/datum/signal/signal = new(list( - "sigtype" = "destroyed", - "tag" = id_tag, - "timestamp" = world.time, - )) - var/datum/radio_frequency/connection = SSradio.return_frequency(frequency) - connection.post_signal(null, signal, filter = RADIO_ATMOSIA) - /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/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 3e9dbe736ca..a4d8a573e6d 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -155,8 +155,6 @@ . = ..() init_network_id(NETWORK_DOOR_AIRLOCKS) wires = set_wires() - if(frequency) - set_frequency(frequency) if(glass) airlock_material = "glass" if(security_level > AIRLOCK_SECURITY_IRON) diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index 950396dc1a7..871d9722890 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -73,7 +73,6 @@ /obj/machinery/door/airlock/glass/incinerator autoclose = FALSE - frequency = FREQ_AIRLOCK_CONTROL heat_proof = TRUE req_access = list(ACCESS_SYNDICATE) @@ -116,7 +115,6 @@ /obj/machinery/door/airlock/research/glass/incinerator autoclose = FALSE - frequency = FREQ_AIRLOCK_CONTROL heat_proof = TRUE /obj/machinery/door/airlock/research/glass/incinerator/ordmix_interior @@ -310,7 +308,6 @@ /obj/machinery/door/airlock/public/glass/incinerator autoclose = FALSE - frequency = FREQ_AIRLOCK_CONTROL heat_proof = TRUE /obj/machinery/door/airlock/public/glass/incinerator/atmos_interior diff --git a/code/game/machinery/doors/alarmlock.dm b/code/game/machinery/doors/alarmlock.dm deleted file mode 100644 index 796c51c3ca8..00000000000 --- a/code/game/machinery/doors/alarmlock.dm +++ /dev/null @@ -1,43 +0,0 @@ -/obj/machinery/door/airlock/alarmlock - name = "glass alarm airlock" - icon = 'icons/obj/doors/airlocks/station2/glass.dmi' - overlays_file = 'icons/obj/doors/airlocks/station2/overlays.dmi' - opacity = FALSE - assemblytype = /obj/structure/door_assembly/door_assembly_public - glass = TRUE - - var/datum/radio_frequency/air_connection - var/air_frequency = FREQ_ATMOS_ALARMS - autoclose = FALSE - -/obj/machinery/door/airlock/alarmlock/Initialize(mapload) - . = ..() - air_connection = new - -/obj/machinery/door/airlock/alarmlock/Destroy() - SSradio.remove_object(src,air_frequency) - air_connection = null - return ..() - -/obj/machinery/door/airlock/alarmlock/Initialize(mapload) - . = ..() - SSradio.remove_object(src, air_frequency) - air_connection = SSradio.add_object(src, air_frequency, RADIO_TO_AIRALARM) - INVOKE_ASYNC(src, PROC_REF(open)) - -/obj/machinery/door/airlock/alarmlock/receive_signal(datum/signal/signal) - ..() - if(machine_stat & (NOPOWER|BROKEN)) - return - - var/alarm_area = signal.data["zone"] - var/alert = signal.data["alert"] - - if(alarm_area == get_area_name(src)) - switch(alert) - if("severe") - autoclose = TRUE - close() - if("minor", "clear") - autoclose = FALSE - open() diff --git a/code/game/machinery/embedded_controller/airlock_controller.dm b/code/game/machinery/embedded_controller/airlock_controller.dm index 96ff2969f0a..fff5245955b 100644 --- a/code/game/machinery/embedded_controller/airlock_controller.dm +++ b/code/game/machinery/embedded_controller/airlock_controller.dm @@ -5,195 +5,7 @@ #define AIRLOCK_STATE_DEPRESSURIZE "depressurize" #define AIRLOCK_STATE_OUTOPEN "outopen" -/datum/computer/file/embedded_program/airlock_controller - var/id_tag - var/exterior_door_tag //Burn chamber facing door - var/interior_door_tag //Station facing door - var/airpump_tag //See: dp_vent_pump.dm - var/sensor_tag //See: /obj/machinery/airlock_sensor - var/sanitize_external //Before the interior airlock opens, do we first drain all gases inside the chamber and then repressurize? - - state = AIRLOCK_STATE_CLOSED - var/target_state = AIRLOCK_STATE_CLOSED - var/sensor_pressure = null - -/datum/computer/file/embedded_program/airlock_controller/receive_signal(datum/signal/signal) - var/receive_tag = signal.data["tag"] - if(!receive_tag) - return - - if(receive_tag==sensor_tag) - if(signal.data["pressure"]) - sensor_pressure = text2num(signal.data["pressure"]) - - else if(receive_tag==exterior_door_tag) - memory["exterior_status"] = signal.data["door_status"] - - else if(receive_tag==interior_door_tag) - memory["interior_status"] = signal.data["door_status"] - - else if(receive_tag==airpump_tag) - if(signal.data["power"]) - memory["pump_status"] = signal.data["direction"] - else - memory["pump_status"] = "off" - - else if(receive_tag==id_tag) - switch(signal.data["command"]) - if("cycle") - if(state < AIRLOCK_STATE_CLOSED) - target_state = AIRLOCK_STATE_OUTOPEN - else - target_state = AIRLOCK_STATE_INOPEN - -/datum/computer/file/embedded_program/airlock_controller/receive_user_command(command) - switch(command) - if("cycleClosed") - target_state = AIRLOCK_STATE_CLOSED - if("cycleExterior") - target_state = AIRLOCK_STATE_OUTOPEN - if("cycleInterior") - target_state = AIRLOCK_STATE_INOPEN - if("abort") - target_state = AIRLOCK_STATE_CLOSED - -/datum/computer/file/embedded_program/airlock_controller/process() - var/process_again = 1 - while(process_again) - process_again = 0 - switch(state) - if(AIRLOCK_STATE_INOPEN) - if(target_state != state) - if(memory["interior_status"] == "closed") - state = AIRLOCK_STATE_CLOSED - process_again = 1 - else - post_signal(new /datum/signal(list( - "tag" = interior_door_tag, - "command" = "secure_close" - ))) - else - if(memory["pump_status"] != "off") - post_signal(new /datum/signal(list( - "tag" = airpump_tag, - "power" = 0, - "sigtype" = "command" - ))) - - if(AIRLOCK_STATE_PRESSURIZE) - if(target_state == AIRLOCK_STATE_INOPEN) - if(sensor_pressure >= ONE_ATMOSPHERE*0.95) - if(memory["interior_status"] == "open") - state = AIRLOCK_STATE_INOPEN - process_again = 1 - else - post_signal(new /datum/signal(list( - "tag" = interior_door_tag, - "command" = "secure_open" - ))) - else - var/datum/signal/signal = new(list( - "tag" = airpump_tag, - "sigtype" = "command" - )) - if(memory["pump_status"] == "siphon") - signal.data["stabilize"] = 1 - else if(memory["pump_status"] != "release") - signal.data["power"] = 1 - post_signal(signal) - else - state = AIRLOCK_STATE_CLOSED - process_again = 1 - - if(AIRLOCK_STATE_CLOSED) - if(target_state == AIRLOCK_STATE_OUTOPEN) - if(memory["interior_status"] == "closed") - state = AIRLOCK_STATE_DEPRESSURIZE - process_again = 1 - else - post_signal(new /datum/signal(list( - "tag" = interior_door_tag, - "command" = "secure_close" - ))) - else if(target_state == AIRLOCK_STATE_INOPEN) - if(memory["exterior_status"] == "closed") - state = AIRLOCK_STATE_PRESSURIZE - process_again = 1 - else - post_signal(new /datum/signal(list( - "tag" = exterior_door_tag, - "command" = "secure_close" - ))) - - else - if(memory["pump_status"] != "off") - post_signal(new /datum/signal(list( - "tag" = airpump_tag, - "power" = 0, - "sigtype" = "command" - ))) - - if(AIRLOCK_STATE_DEPRESSURIZE) - var/target_pressure = ONE_ATMOSPHERE*0.05 - if(sanitize_external) - target_pressure = ONE_ATMOSPHERE*0.01 - - if(sensor_pressure <= target_pressure) - if(target_state == AIRLOCK_STATE_OUTOPEN) - if(memory["exterior_status"] == "open") - state = AIRLOCK_STATE_OUTOPEN - else - post_signal(new /datum/signal(list( - "tag" = exterior_door_tag, - "command" = "secure_open" - ))) - else - state = AIRLOCK_STATE_CLOSED - process_again = 1 - else if((target_state != AIRLOCK_STATE_OUTOPEN) && !sanitize_external) - state = AIRLOCK_STATE_CLOSED - process_again = 1 - else - var/datum/signal/signal = new(list( - "tag" = airpump_tag, - "sigtype" = "command" - )) - if(memory["pump_status"] == "release") - signal.data["purge"] = 1 - else if(memory["pump_status"] != "siphon") - signal.data["power"] = 1 - post_signal(signal) - - if(AIRLOCK_STATE_OUTOPEN) //state 2 - if(target_state != AIRLOCK_STATE_OUTOPEN) - if(memory["exterior_status"] == "closed") - if(sanitize_external) - state = AIRLOCK_STATE_DEPRESSURIZE - process_again = 1 - else - state = AIRLOCK_STATE_CLOSED - process_again = 1 - else - post_signal(new /datum/signal(list( - "tag" = exterior_door_tag, - "command" = "secure_close" - ))) - else - if(memory["pump_status"] != "off") - post_signal(new /datum/signal(list( - "tag" = airpump_tag, - "power" = 0, - "sigtype" = "command" - ))) - - memory["sensor_pressure"] = sensor_pressure - memory["processing"] = state != target_state - //sensor_pressure = null //not sure if we can comment this out. Uncomment in case of problems -rastaf0 - - return 1 - - -/obj/machinery/embedded_controller/radio/airlock_controller +/obj/machinery/airlock_controller icon = 'icons/obj/airlock_machines.dmi' icon_state = "airlock_control_standby" base_icon_state = "airlock_control" @@ -201,7 +13,6 @@ name = "airlock console" density = FALSE - frequency = FREQ_AIRLOCK_CONTROL power_channel = AREA_USAGE_ENVIRON // Setup parameters only @@ -211,39 +22,262 @@ var/sensor_tag var/sanitize_external -/obj/machinery/embedded_controller/radio/airlock_controller/Topic(href, href_list) // needed to override obj/machinery/embedded_controller/Topic, dont think its actually used in game other than here but the code is still here + var/datum/weakref/interior_door_ref + var/datum/weakref/exterior_door_ref + var/datum/weakref/pump_ref + var/datum/weakref/sensor_ref -/obj/machinery/embedded_controller/radio/airlock_controller/ui_interact(mob/user, datum/tgui/ui) + var/last_pressure = null + + var/state = AIRLOCK_STATE_CLOSED + var/target_state = AIRLOCK_STATE_CLOSED + + var/processing = FALSE + +/obj/machinery/airlock_controller/LateInitialize() + . = ..() + + var/obj/machinery/door/interior_door = GLOB.objects_by_id_tag[interior_door_tag] + if (!isnull(interior_door_tag) && !istype(interior_door)) + stack_trace("interior_door_tag is set to [interior_door_tag], which is not a door ([interior_door || "null"])") + interior_door_ref = WEAKREF(interior_door) + + var/obj/machinery/door/exterior_door = GLOB.objects_by_id_tag[exterior_door_tag] + if (!isnull(exterior_door_tag) && !istype(exterior_door)) + stack_trace("exterior_door_tag is set to [exterior_door_tag], which is not a door ([exterior_door || "null"])") + exterior_door_ref = WEAKREF(exterior_door) + + var/obj/machinery/atmospherics/components/binary/dp_vent_pump/pump = GLOB.objects_by_id_tag[airpump_tag] + if (!isnull(airpump_tag) && !istype(pump)) + stack_trace("airpump_tag is set to [airpump_tag], which is not a pump ([pump || "null"])") + pump_ref = WEAKREF(pump) + + var/obj/machinery/airlock_sensor/sensor = GLOB.objects_by_id_tag[sensor_tag] + if (!isnull(sensor_tag) && !istype(sensor)) + stack_trace("sensor_tag is set to [sensor_tag], which is not a sensor ([sensor || "null"])") + sensor_ref = WEAKREF(sensor) + +/obj/machinery/airlock_controller/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) if(!ui) ui = new(user, src, "AirlockController", src) ui.open() -/obj/machinery/embedded_controller/radio/airlock_controller/process(delta_time) - if(program) - program.process(delta_time) +/obj/machinery/airlock_controller/process(delta_time) + var/process_again = TRUE + while(process_again) + process_again = FALSE + switch(state) + if(AIRLOCK_STATE_INOPEN) + if(target_state != state) + var/obj/machinery/door/airlock/interior_airlock = interior_door_ref.resolve() + if (isnull(interior_airlock)) + continue + + if(interior_airlock.density) + state = AIRLOCK_STATE_CLOSED + process_again = TRUE + else + interior_airlock.secure_close() + else + var/obj/machinery/atmospherics/components/binary/dp_vent_pump/pump = pump_ref.resolve() + + if(pump?.on) + pump.on = FALSE + pump.update_appearance(UPDATE_ICON) + + if(AIRLOCK_STATE_PRESSURIZE) + if(target_state == AIRLOCK_STATE_INOPEN) + var/sensor_pressure = sensor_pressure() + if (isnull(sensor_pressure)) + continue + + if(sensor_pressure >= ONE_ATMOSPHERE*0.95) + var/obj/machinery/door/airlock/interior_airlock = interior_door_ref.resolve() + if (isnull(interior_airlock)) + continue + + if(interior_airlock.density) + interior_airlock?.secure_open() + else + state = AIRLOCK_STATE_INOPEN + process_again = TRUE + else + var/obj/machinery/atmospherics/components/binary/dp_vent_pump/pump = pump_ref.resolve() + if (isnull(pump)) + continue + + if(pump.pump_direction == ATMOS_DIRECTION_SIPHONING) + pump.pressure_checks |= ATMOS_EXTERNAL_BOUND + pump.pump_direction = ATMOS_DIRECTION_RELEASING + else if(pump.pump_direction == ATMOS_DIRECTION_RELEASING) + pump.on = TRUE + + pump.update_appearance(UPDATE_ICON) + else + state = AIRLOCK_STATE_CLOSED + process_again = TRUE + + if(AIRLOCK_STATE_CLOSED) + if(target_state == AIRLOCK_STATE_OUTOPEN) + var/obj/machinery/door/airlock/interior_airlock = interior_door_ref.resolve() + if (isnull(interior_airlock)) + continue + + if(interior_airlock.density) + state = AIRLOCK_STATE_DEPRESSURIZE + process_again = TRUE + else + interior_airlock?.secure_close() + else if(target_state == AIRLOCK_STATE_INOPEN) + var/obj/machinery/door/airlock/exterior_airlock = exterior_door_ref.resolve() + if (isnull(exterior_airlock)) + continue + + if(exterior_airlock.density) + state = AIRLOCK_STATE_PRESSURIZE + process_again = TRUE + else + exterior_airlock?.secure_close() + else + var/obj/machinery/atmospherics/components/binary/dp_vent_pump/pump = pump_ref.resolve() + if (isnull(pump)) + continue + + if (!pump.on) + pump.on = TRUE + pump.update_appearance(UPDATE_ICON) + + if(AIRLOCK_STATE_DEPRESSURIZE) + var/target_pressure = ONE_ATMOSPHERE*0.05 + if(sanitize_external) + target_pressure = ONE_ATMOSPHERE*0.01 + + var/sensor_pressure = sensor_pressure() + if (isnull(sensor_pressure)) + continue + + if(sensor_pressure <= target_pressure) + if(target_state == AIRLOCK_STATE_OUTOPEN) + var/obj/machinery/door/airlock/exterior_airlock = exterior_door_ref.resolve() + if (isnull(exterior_airlock)) + continue + + if(exterior_airlock.density) + exterior_airlock.secure_open() + else + state = AIRLOCK_STATE_OUTOPEN + else + state = AIRLOCK_STATE_CLOSED + process_again = TRUE + else if((target_state != AIRLOCK_STATE_OUTOPEN) && !sanitize_external) + state = AIRLOCK_STATE_CLOSED + process_again = TRUE + else + var/obj/machinery/atmospherics/components/binary/dp_vent_pump/pump = pump_ref.resolve() + if (isnull(pump)) + continue + + if(pump.pump_direction == ATMOS_DIRECTION_RELEASING) + pump.pressure_checks &= ~ATMOS_EXTERNAL_BOUND + pump.pump_direction = ATMOS_DIRECTION_SIPHONING + pump.update_appearance(UPDATE_ICON) + + if(AIRLOCK_STATE_OUTOPEN) //state 2 + if(target_state != AIRLOCK_STATE_OUTOPEN) + var/obj/machinery/door/airlock/exterior_airlock = exterior_door_ref.resolve() + if (isnull(exterior_airlock)) + continue + + if(exterior_airlock.density) + if(sanitize_external) + state = AIRLOCK_STATE_DEPRESSURIZE + process_again = TRUE + else + state = AIRLOCK_STATE_CLOSED + process_again = TRUE + else + exterior_airlock.secure_close() + else + var/obj/machinery/atmospherics/components/binary/dp_vent_pump/pump = pump_ref.resolve() + if (isnull(pump)) + continue + + if (pump.on) + pump.on = FALSE + pump.update_appearance(UPDATE_ICON) + + processing = state != target_state update_appearance() SStgui.update_uis(src) -/obj/machinery/embedded_controller/radio/airlock_controller/ui_data(mob/user) +/obj/machinery/airlock_controller/ui_data(mob/user) var/list/data = list() - data["airlockState"] = program.state - data["sensorPressure"] = program.memory["sensor_pressure"] ? program.memory["sensor_pressure"] : "----" - data["exteriorStatus"] = program.memory["exterior_status"] ? program.memory["exterior_status"] : "----" - data["interiorStatus"] = program.memory["interior_status"] ? program.memory["interior_status"] : "----" - data["pumpStatus"] = program.memory["pump_status"] ? program.memory["pump_status"] : "----" + + data["airlockState"] = state + + var/sensor_pressure = sensor_pressure() + data["sensorPressure"] = isnull(sensor_pressure) ? "----" : round(sensor_pressure, 0.1) + + var/obj/machinery/door/airlock/interior_airlock = interior_door_ref.resolve() + if (isnull(interior_airlock)) + data["interiorStatus"] = "----" + else + data["interiorStatus"] = interior_airlock.density ? "closed" : "open" + + var/obj/machinery/door/airlock/exterior_airlock = exterior_door_ref.resolve() + if (isnull(exterior_airlock)) + data["exteriorStatus"] = "----" + else + data["exteriorStatus"] = exterior_airlock.density ? "closed" : "open" + + var/obj/machinery/atmospherics/components/binary/dp_vent_pump/pump = pump_ref.resolve() + switch (pump?.pump_direction) + if (null) + data["pumpStatus"] = "----" + if (ATMOS_DIRECTION_RELEASING) + data["pumpStatus"] = "release" + if (ATMOS_DIRECTION_SIPHONING) + data["pumpStatus"] = "siphon" + return data -/obj/machinery/embedded_controller/radio/airlock_controller/ui_act(action, params) +/obj/machinery/airlock_controller/ui_act(action, params) . = ..() if(.) return - // no need for sanitisation, command just changes target_state and can't do anything else - process_command(action) + + switch(action) + if("cycleClosed") + target_state = AIRLOCK_STATE_CLOSED + if("cycleExterior") + target_state = AIRLOCK_STATE_OUTOPEN + if("cycleInterior") + target_state = AIRLOCK_STATE_INOPEN + if("abort") + target_state = AIRLOCK_STATE_CLOSED + return TRUE -/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_ordmix +/// Starts an airlock cycle +/obj/machinery/airlock_controller/proc/cycle() + if (state < AIRLOCK_STATE_CLOSED) + target_state = AIRLOCK_STATE_OUTOPEN + else + target_state = AIRLOCK_STATE_INOPEN + +/// Returns the pressure over the pump, or null if it is deleted +/obj/machinery/airlock_controller/proc/sensor_pressure() + var/obj/machinery/airlock_sensor/sensor = sensor_ref.resolve() + if (!isnull(sensor) && !sensor.on) + return last_pressure + + var/datum/gas_mixture/air = sensor?.return_air() + last_pressure = air?.return_pressure() + return last_pressure + +/obj/machinery/airlock_controller/incinerator_ordmix name = "Incinerator Access Console" airpump_tag = INCINERATOR_ORDMIX_DP_VENTPUMP exterior_door_tag = INCINERATOR_ORDMIX_AIRLOCK_EXTERIOR @@ -252,7 +286,7 @@ sanitize_external = TRUE sensor_tag = INCINERATOR_ORDMIX_AIRLOCK_SENSOR -/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_atmos +/obj/machinery/airlock_controller/incinerator_atmos name = "Incinerator Access Console" airpump_tag = INCINERATOR_ATMOS_DP_VENTPUMP exterior_door_tag = INCINERATOR_ATMOS_AIRLOCK_EXTERIOR @@ -261,7 +295,7 @@ sanitize_external = TRUE sensor_tag = INCINERATOR_ATMOS_AIRLOCK_SENSOR -/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_syndicatelava +/obj/machinery/airlock_controller/incinerator_syndicatelava name = "Incinerator Access Console" airpump_tag = INCINERATOR_SYNDICATELAVA_DP_VENTPUMP exterior_door_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_EXTERIOR @@ -270,26 +304,6 @@ sanitize_external = TRUE sensor_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_SENSOR -/obj/machinery/embedded_controller/radio/airlock_controller/Initialize(mapload) - . = ..() - if(!mapload) - return - - var/datum/computer/file/embedded_program/airlock_controller/new_prog = new - - new_prog.id_tag = id_tag - new_prog.exterior_door_tag = exterior_door_tag - new_prog.interior_door_tag = interior_door_tag - new_prog.airpump_tag = airpump_tag - new_prog.sensor_tag = sensor_tag - new_prog.sanitize_external = sanitize_external - - new_prog.master = src - program = new_prog - -/obj/machinery/embedded_controller/radio/airlock_controller/update_icon_state() - if(on && program) - icon_state = "[base_icon_state]_[program.memory["processing"] ? "process" : "standby"]" - return ..() - icon_state = "[base_icon_state]_off" +/obj/machinery/airlock_controller/update_icon_state() + icon_state = "[base_icon_state]_[processing ? "process" : "standby"]" return ..() diff --git a/code/game/machinery/embedded_controller/embedded_controller_base.dm b/code/game/machinery/embedded_controller/embedded_controller_base.dm deleted file mode 100644 index 9897f4d00b9..00000000000 --- a/code/game/machinery/embedded_controller/embedded_controller_base.dm +++ /dev/null @@ -1,97 +0,0 @@ -/datum/computer/file/embedded_program - var/list/memory = list() - var/state - var/obj/machinery/embedded_controller/master - -/datum/computer/file/embedded_program/Destroy() - master = null - . = ..() - -/datum/computer/file/embedded_program/proc/post_signal(datum/signal/signal, comm_line) - if(master) - master.post_signal(signal, comm_line) - else - qdel(signal) - -/datum/computer/file/embedded_program/proc/receive_user_command(command) - -/datum/computer/file/embedded_program/proc/receive_signal(datum/signal/signal) - return null - -/datum/computer/file/embedded_program/process() - return 0 - -/obj/machinery/embedded_controller - var/datum/computer/file/embedded_program/program - - name = "embedded controller" - density = FALSE - - var/on = TRUE - -/obj/machinery/embedded_controller/Destroy() - if(program) - QDEL_NULL(program) - . = ..() - -/obj/machinery/embedded_controller/ui_interact(mob/user) - . = ..() - user.set_machine(src) - var/datum/browser/popup = new(user, "computer", name) // Set up the popup browser window - popup.set_content(return_text()) - popup.open() - -/obj/machinery/embedded_controller/proc/return_text() - -/obj/machinery/embedded_controller/proc/post_signal(datum/signal/signal, comm_line) - return - -/obj/machinery/embedded_controller/receive_signal(datum/signal/signal) - if(istype(signal) && program) - program.receive_signal(signal) - -/obj/machinery/embedded_controller/Topic(href, href_list) - . = ..() - if(.) - return - - process_command(href_list["command"]) - - usr.set_machine(src) - addtimer(CALLBACK(src, PROC_REF(updateDialog)), 5) - -/obj/machinery/embedded_controller/proc/process_command(command) - if(program) - program.receive_user_command(command) - addtimer(CALLBACK(program, TYPE_PROC_REF(/datum/computer/file/embedded_program, process)), 5) - -/obj/machinery/embedded_controller/process(delta_time) - if(program) - program.process(delta_time) - - update_appearance() - src.updateDialog() - -/obj/machinery/embedded_controller/radio - var/frequency - var/datum/radio_frequency/radio_connection - -/obj/machinery/embedded_controller/radio/Destroy() - SSradio.remove_object(src,frequency) - return ..() - -/obj/machinery/embedded_controller/radio/Initialize(mapload) - . = ..() - set_frequency(frequency) - -/obj/machinery/embedded_controller/radio/post_signal(datum/signal/signal) - signal.transmission_method = TRANSMISSION_RADIO - if(radio_connection) - return radio_connection.post_signal(src, signal) - else - signal = null - -/obj/machinery/embedded_controller/radio/proc/set_frequency(new_frequency) - SSradio.remove_object(src, frequency) - frequency = new_frequency - radio_connection = SSradio.add_object(src, frequency) diff --git a/code/game/machinery/embedded_controller/simple_vent_controller.dm b/code/game/machinery/embedded_controller/simple_vent_controller.dm deleted file mode 100644 index a47d4f6c636..00000000000 --- a/code/game/machinery/embedded_controller/simple_vent_controller.dm +++ /dev/null @@ -1,70 +0,0 @@ -/datum/computer/file/embedded_program/simple_vent_controller - - var/airpump_tag - -/datum/computer/file/embedded_program/simple_vent_controller/receive_user_command(command) - switch(command) - if("vent_inactive") - post_signal(new /datum/signal(list( - "tag" = airpump_tag, - "sigtype" = "command", - "power" = 0 - ))) - - if("vent_pump") - post_signal(new /datum/signal(list( - "tag" = airpump_tag, - "sigtype" = "command", - "stabilize" = 1, - "power" = 1 - ))) - - if("vent_clear") - post_signal(new /datum/signal(list( - "tag" = airpump_tag, - "sigtype" = "command", - "purge" = 1, - "power" = 1 - ))) - -/datum/computer/file/embedded_program/simple_vent_controller/process() - return 0 - - -/obj/machinery/embedded_controller/radio/simple_vent_controller - icon = 'icons/obj/airlock_machines.dmi' - icon_state = "airlock_control_standby" - - name = "vent controller" - density = FALSE - - frequency = FREQ_ATMOS_CONTROL - power_channel = AREA_USAGE_ENVIRON - - // Setup parameters only - var/airpump_tag - -/obj/machinery/embedded_controller/radio/simple_vent_controller/Initialize(mapload) - . = ..() - if(!mapload) - return - var/datum/computer/file/embedded_program/simple_vent_controller/new_prog = new - - new_prog.airpump_tag = airpump_tag - new_prog.master = src - program = new_prog - -/obj/machinery/embedded_controller/radio/simple_vent_controller/update_icon_state() - icon_state = "[base_icon_state]_[(on && program) ? "standby" : "off"]" - return ..() - - -/obj/machinery/embedded_controller/radio/simple_vent_controller/return_text() - var/state_options = null - state_options = {"Deactivate Vent
-Activate Vent / Pump
-Activate Vent / Clear
"} - var/output = {"Vent Control Console
-[state_options]
"} - - return output diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index aedb9cd1f52..b542a59514b 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -58,10 +58,20 @@ network_id = NETWORK_NAME_COMBINE(STATION_NETWORK_ROOT, network_id) // I regret nothing!! AddComponent(/datum/component/ntnet_interface, network_id, id_tag) +/// A list of all /obj by their id_tag +GLOBAL_LIST_EMPTY(objects_by_id_tag) + +/obj/Initialize(mapload) + . = ..() + + if (id_tag) + GLOB.objects_by_id_tag[id_tag] = src + /obj/Destroy(force) if(!ismachinery(src)) STOP_PROCESSING(SSobj, src) // TODO: Have a processing bitflag to reduce on unnecessary loops through the processing lists SStgui.close_uis(src) + GLOB.objects_by_id_tag -= id_tag . = ..() /obj/attacked_by(obj/item/attacking_item, mob/living/user) diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm index 45ebd81ac7a..d6e5782f17a 100644 --- a/code/modules/admin/verbs/mapping.dm +++ b/code/modules/admin/verbs/mapping.dm @@ -54,7 +54,6 @@ GLOBAL_LIST_INIT(admin_verbs_debug_mapping, list( /client/proc/place_ruin, /client/proc/station_food_debug, /client/proc/station_stack_debug, - /client/proc/check_atmos_controls, /client/proc/check_for_obstructed_atmospherics, )) GLOBAL_PROTECT(admin_verbs_debug_mapping) @@ -423,101 +422,6 @@ GLOBAL_VAR_INIT(say_disabled, FALSE) popup.set_content(page_contents) popup.open() -/// Checks the atmos monitor, sensors, meters, vents, and injectors, and makes sure they dont overlap or do nothing. -/client/proc/check_atmos_controls() - set name = "Check Atmos Chamber Devices" - set category = "Mapping" - - if(SSticker.current_state == GAME_STATE_STARTUP) - to_chat(usr, "Game still loading, please run this again later!", confidential = TRUE) - return - - message_admins(span_adminnotice("[key_name_admin(usr)] used the Test Atmos Controls debug command.")) - log_admin("[key_name(usr)] used the Test Atmos Controls debug command.") - - var/datum/radio_frequency/frequency = SSradio.return_frequency(FREQ_ATMOS_STORAGE) - - /// broadcaster[id_tag] = machine - var/list/broadcasters = list() - /// listened_to[atmos_chamber_entry] = bool - /// TRUE means we have the corresponding id_tag being listened to by an atmos control computer. - var/list/listened_to = list() - /// broadcasted_to[id_tag[1]] = bool - /// TRUE means we have the corresponding id_tag being broadcasted to by a device, be it meter, sensors, etc. - var/list/broadcasted_to = list() - - /// How many things dont fit the recognized subtypes. - var/invalid_machine = 0 - /// How many things have invalid (messes with our delimiter) tags. - var/invalid_tag = 0 - /// How many things have empty tags, invalids but much worse. - var/tagless = 0 - /// How many things have duped id_tag. - var/duplicate_tag = 0 - /// How many things are broadcasting without an atmos computer listening - var/not_heard = 0 - /// How many atmos computers are listening to an empty tag. - var/not_told = 0 - - var/list/valid_device_types = typecacheof(list( - /obj/machinery/computer/atmos_control, - /obj/machinery/air_sensor, - /obj/machinery/atmospherics/components/unary/outlet_injector/monitored, - /obj/machinery/meter/monitored, - /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored, - /obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/monitored - )) - var/list/valid_tag_endings = list("sensor", "in", "out") - - for (var/datum/weakref/device_ref as anything in frequency.devices[RADIO_ATMOSIA]) - var/obj/machinery/machine = device_ref.resolve() - if(!machine) - continue - if(!valid_device_types[machine.type]) - to_chat(usr, "Unrecognized machine [ADMIN_VERBOSEJMP(machine)] under type [machine.type] in FREQ_ATMOS_STORAGE ([FREQ_ATMOS_STORAGE]) frequency.", confidential=TRUE) - invalid_machine += 1 - continue - if(istype(machine,/obj/machinery/computer/atmos_control)) - var/obj/machinery/computer/atmos_control/atmos_comp = machine - for(var/listened_tags in atmos_comp.atmos_chambers) - LAZYINITLIST(listened_to[listened_tags]) - listened_to[listened_tags] += atmos_comp - continue - // Code below is for valid machineries that are not atmos control. - var/list/tags = splittext(machine.id_tag, "_") - if(tags.len == 0 || length(tags[1]) == 0) - to_chat(usr, "Machine [ADMIN_VERBOSEJMP(machine)] under type [machine.type] does not have a tag or have an empty identifier tag: [machine.id_tag]", confidential=TRUE) - tagless += 1 - continue - if(tags.len != 2 || !(tags[2] in valid_tag_endings)) - to_chat(usr, "Invalid tag for machine [ADMIN_VERBOSEJMP(machine)] under type [machine.type]. Tag = [machine.id_tag]", confidential=TRUE) - invalid_tag += 1 - continue - if(broadcasters[machine.id_tag]) - var/obj/original_machine = broadcasters[machine.id_tag] - to_chat(usr, "Duplicate machine id_tag ([machine.id_tag]) detected. Implicated machineries: [ADMIN_VERBOSEJMP(machine)] under [machine.type] and [ADMIN_VERBOSEJMP(original_machine)] under [original_machine.type]", confidential=TRUE) - duplicate_tag += 1 - continue - broadcasters[machine.id_tag] = machine - LAZYINITLIST(broadcasted_to[tags[1]]) - broadcasted_to[tags[1]] += machine - - for (var/tag in listened_to) - if(!broadcasted_to[tag]) - for (var/obj/computer in listened_to[tag]) - to_chat(usr, "A computer [ADMIN_VERBOSEJMP(computer)] is listening to tag: [tag] yet it no devices is broadcasting there.", confidential=TRUE) - not_told += 1 - for (var/tag in broadcasted_to) - if(!listened_to[tag]) - for (var/obj/machine in broadcasted_to[tag]) - to_chat(usr, "A machinery [ADMIN_VERBOSEJMP(machine)] is broadcasting in tag: [tag] yet there are no listeners. Are you sure you want to use a monitored atmos device?", confidential=TRUE) - not_heard += 1 - - if(!(invalid_machine || invalid_tag || tagless || duplicate_tag || not_heard || not_told)) - to_chat(usr, "Atmos control frequency check passed without encountering problems.", confidential=TRUE) - else - to_chat(usr, "Total errors: [invalid_machine + invalid_tag + tagless + duplicate_tag + not_heard + not_told]", confidential=TRUE) - /// Check all tiles with a vent or scrubber on it and ensure that nothing is covering it up. /client/proc/check_for_obstructed_atmospherics() set name = "Check For Obstructed Atmospherics" diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index 20b3771ab27..a940cfae083 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -60,6 +60,7 @@ #define AALARM_MODE_SIPHON 7 //Scrubbers suck air #define AALARM_MODE_CONTAMINATED 8 //Turns on all filtering and widenet scrubbing. #define AALARM_MODE_REFILL 9 //just like normal, but with triple the air output +#define AALARM_MODE_MAX AALARM_MODE_REFILL #define AALARM_REPORT_TIMEOUT 100 @@ -77,7 +78,10 @@ armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 100, BOMB = 0, BIO = 0, FIRE = 90, ACID = 30) resistance_flags = FIRE_PROOF - var/danger_level = 0 + /// Current alert level, found in code/__DEFINES/atmospherics/atmos_machinery.dm + /// AIR_ALARM_ALERT_NONE, AIR_ALARM_ALERT_MINOR, AIR_ALARM_ALERT_SEVERE + var/danger_level = AIR_ALARM_ALERT_NONE + var/mode = AALARM_MODE_SCRUBBING ///A reference to the area we are in var/area/my_area @@ -87,9 +91,6 @@ var/shorted = 0 var/buildstage = AIRALARM_BUILD_COMPLETE // 2 = complete, 1 = no wires, 0 = circuit gone - var/frequency = FREQ_ATMOS_CONTROL - var/alarm_frequency = FREQ_ATMOS_ALARMS - var/datum/radio_frequency/radio_connection ///Represents a signel source of atmos alarms, complains to all the listeners if one of our thresholds is violated var/datum/alarm_handler/alarm_manager @@ -120,6 +121,8 @@ /datum/gas/halon = new/datum/tlv/dangerous ) +GLOBAL_LIST_EMPTY_TYPED(air_alarms, /obj/machinery/airalarm) + /obj/machinery/airalarm/Initialize(mapload, ndir, nbuild) . = ..() wires = new /datum/wires/airalarm(src) @@ -137,7 +140,6 @@ my_area = get_area(src) update_appearance() - set_frequency(frequency) AddElement(/datum/element/connect_loc, atmos_connections) AddComponent(/datum/component/usb_port, list( /obj/item/circuit_component/air_alarm_general, @@ -146,14 +148,14 @@ /obj/item/circuit_component/air_alarm_vents )) - + GLOB.air_alarms += src /obj/machinery/airalarm/Destroy() if(my_area) my_area = null - SSradio.remove_object(src, frequency) QDEL_NULL(wires) QDEL_NULL(alarm_manager) + GLOB.air_alarms -= src return ..() /obj/machinery/airalarm/examine(mob/user) @@ -227,38 +229,34 @@ if(!locked || user.has_unlimited_silicon_privilege) data["vents"] = list() - for(var/id_tag in my_area.air_vent_info) - var/long_name = GLOB.air_vent_names[id_tag] - var/list/info = my_area.air_vent_info[id_tag] - if(!info || info["frequency"] != frequency) - continue + for(var/obj/machinery/atmospherics/components/unary/vent_pump/vent as anything in my_area.air_vents) data["vents"] += list(list( - "id_tag" = id_tag, - "long_name" = sanitize(long_name), - "power" = info["power"], - "checks" = info["checks"], - "excheck" = info["checks"]&1, - "incheck" = info["checks"]&2, - "direction" = info["direction"], - "external" = info["external"], - "internal" = info["internal"], - "extdefault"= (info["external"] == ONE_ATMOSPHERE), - "intdefault"= (info["internal"] == 0) - )) + "ref" = REF(vent), + "long_name" = sanitize(vent.name), + "power" = vent.on, + "checks" = vent.pressure_checks, + "excheck" = vent.pressure_checks & ATMOS_EXTERNAL_BOUND, + "incheck" = vent.pressure_checks & ATMOS_INTERNAL_BOUND, + "direction" = vent.pump_direction, + "external" = vent.external_pressure_bound, + "internal" = vent.internal_pressure_bound, + "extdefault" = (vent.external_pressure_bound == ONE_ATMOSPHERE), + "intdefault" = (vent.internal_pressure_bound == 0) + )) data["scrubbers"] = list() - for(var/id_tag in my_area.air_scrub_info) - var/long_name = GLOB.air_scrub_names[id_tag] - var/list/info = my_area.air_scrub_info[id_tag] - if(!info || info["frequency"] != frequency) - continue + for(var/obj/machinery/atmospherics/components/unary/vent_scrubber/scrubber as anything in my_area.air_scrubbers) + var/list/filter_types = list() + for (var/path in GLOB.meta_gas_info) + var/list/gas = GLOB.meta_gas_info[path] + filter_types += list(list("gas_id" = gas[META_GAS_ID], "gas_name" = gas[META_GAS_NAME], "enabled" = (path in scrubber.filter_types))) data["scrubbers"] += list(list( - "id_tag" = id_tag, - "long_name" = sanitize(long_name), - "power" = info["power"], - "scrubbing" = info["scrubbing"], - "widenet" = info["widenet"], - "filter_types" = info["filter_types"] - )) + "ref" = REF(scrubber), + "long_name" = sanitize(scrubber.name), + "power" = scrubber.on, + "scrubbing" = scrubber.scrubbing, + "widenet" = scrubber.widenet, + "filter_types" = filter_types, + )) data["mode"] = mode data["modes"] = list() data["modes"] += list(list("name" = "Filtering - Scrubs out contaminants", "mode" = AALARM_MODE_SCRUBBING, "selected" = mode == AALARM_MODE_SCRUBBING, "danger" = 0)) @@ -309,33 +307,109 @@ return if((locked && !usr.has_unlimited_silicon_privilege) || (usr.has_unlimited_silicon_privilege && aidisabled)) return - var/device_id = params["id_tag"] - switch(action) - if("lock") - if(usr.has_unlimited_silicon_privilege && !wires.is_cut(WIRE_IDSCAN)) - locked = !locked - . = TRUE - if("power", "toggle_filter", "widenet", "scrubbing", "direction") - send_signal(device_id, list("[action]" = params["val"]), usr) - . = TRUE - if("excheck") - send_signal(device_id, list("checks" = text2num(params["val"])^1), usr) - . = TRUE - if("incheck") - send_signal(device_id, list("checks" = text2num(params["val"])^2), usr) - . = TRUE - if("set_external_pressure", "set_internal_pressure") - var/target = params["value"] - if(!isnull(target)) - send_signal(device_id, list("[action]" = target), usr) - . = TRUE - if("reset_external_pressure") - send_signal(device_id, list("reset_external_pressure"), usr) - . = TRUE - if("reset_internal_pressure") - send_signal(device_id, list("reset_internal_pressure"), usr) - . = TRUE - if("threshold") + + var/mob/user = usr + var/area/area = get_area(src) + ASSERT(!isnull(area)) + + var/ref = params["ref"] + + // Possible machines this can refer to + var/obj/machinery/atmospherics/components/unary/vent_pump/vent = isnull(ref) ? null : locate(ref) in area.air_vents + var/obj/machinery/atmospherics/components/unary/vent_scrubber/scrubber = isnull(ref) ? null : locate(ref) in area.air_scrubbers + + switch (action) + if ("power") + if (!isnull(vent)) + vent.on = !!params["val"] + vent.update_appearance(UPDATE_ICON) + vent.check_atmos_process() + else if (!isnull(scrubber)) + scrubber.on = !!params["val"] + scrubber.update_appearance(UPDATE_ICON) + scrubber.check_atmos_process() + if ("direction") + if (isnull(vent)) + return TRUE + + var/value = params["val"] + + if (value == ATMOS_DIRECTION_SIPHONING || value == ATMOS_DIRECTION_RELEASING) + vent.pump_direction = value + vent.update_appearance(UPDATE_ICON) + if ("incheck") + if (isnull(vent)) + return TRUE + + var/new_checks = clamp((text2num(params["val"]) || 0) ^ ATMOS_INTERNAL_BOUND, NONE, ATMOS_BOUND_MAX) + vent.pressure_checks = new_checks + vent.update_appearance(UPDATE_ICON) + if ("excheck") + if (isnull(vent)) + return TRUE + + var/new_checks = clamp((text2num(params["val"]) || 0) ^ ATMOS_EXTERNAL_BOUND, NONE, ATMOS_BOUND_MAX) + vent.pressure_checks = new_checks + vent.update_appearance(UPDATE_ICON) + if ("set_internal_pressure") + if (isnull(vent)) + return TRUE + + var/old_pressure = vent.internal_pressure_bound + var/new_pressure = clamp(text2num(params["value"]), 0, ATMOS_PUMP_MAX_PRESSURE) + vent.internal_pressure_bound = new_pressure + if (old_pressure != new_pressure) + vent.investigate_log(" internal pressure was set to [new_pressure] by [key_name(user)]", INVESTIGATE_ATMOS) + if ("reset_internal_pressure") + if (isnull(vent)) + return TRUE + + if (vent.internal_pressure_bound != 0) + vent.internal_pressure_bound = 0 + vent.investigate_log(" internal pressure was reset by [key_name(user)]", INVESTIGATE_ATMOS) + if ("set_external_pressure") + if (isnull(vent)) + return TRUE + + var/old_pressure = vent.external_pressure_bound + var/new_pressure = clamp(text2num(params["value"]), 0, ATMOS_PUMP_MAX_PRESSURE) + + if (old_pressure == new_pressure) + return TRUE + + vent.external_pressure_bound = new_pressure + vent.investigate_log(" external pressure was set to [new_pressure] by [key_name(user)]", INVESTIGATE_ATMOS) + vent.update_appearance(UPDATE_ICON) + if ("reset_external_pressure") + if (isnull(vent)) + return TRUE + + if (vent.external_pressure_bound == ATMOS_PUMP_MAX_PRESSURE) + return TRUE + + vent.external_pressure_bound = ATMOS_PUMP_MAX_PRESSURE + vent.investigate_log(" internal pressure was reset by [key_name(user)]", INVESTIGATE_ATMOS) + vent.update_appearance(UPDATE_ICON) + if ("scrubbing") + if (isnull(scrubber)) + return TRUE + + scrubber.set_scrubbing(!!params["val"], user) + if ("widenet") + if (isnull(scrubber)) + return TRUE + + scrubber.set_widenet(!!params["val"]) + if ("toggle_filter") + if (isnull(scrubber)) + return TRUE + + scrubber.toggle_filters(params["val"]) + if ("mode") + mode = clamp(round(text2num(params["mode"])), AALARM_MODE_SCRUBBING, AALARM_MODE_MAX) + investigate_log("was turned to [get_mode_name(mode)] mode by [key_name(user)]", INVESTIGATE_ATMOS) + apply_mode(user) + if ("threshold") var/env = params["env"] if(text2path(env)) env = text2path(env) @@ -354,22 +428,17 @@ var/turf/our_turf = get_turf(src) var/datum/gas_mixture/environment = our_turf.return_air() check_air_dangerlevel(our_turf, environment, environment.temperature) - . = TRUE - if("mode") - mode = text2num(params["mode"]) - investigate_log("was turned to [get_mode_name(mode)] mode by [key_name(usr)]",INVESTIGATE_ATMOS) - apply_mode(usr) - . = TRUE - if("alarm") - if(alarm_manager.send_alarm(ALARM_ATMOS)) - post_alert(2) - . = TRUE - if("reset") - if(alarm_manager.clear_alarm(ALARM_ATMOS)) - post_alert(0) - . = TRUE + if ("mode") + if (alarm_manager.send_alarm(ALARM_ATMOS)) + danger_level = AIR_ALARM_ALERT_SEVERE + if ("reset") + if (alarm_manager.clear_alarm(ALARM_ATMOS)) + danger_level = AIR_ALARM_ALERT_NONE + update_appearance() + return TRUE + /obj/machinery/airalarm/proc/reset(wire) switch(wire) @@ -395,23 +464,6 @@ else return FALSE -/obj/machinery/airalarm/proc/set_frequency(new_frequency) - SSradio.remove_object(src, frequency) - frequency = new_frequency - radio_connection = SSradio.add_object(src, frequency, RADIO_TO_AIRALARM) - -/obj/machinery/airalarm/proc/send_signal(target, list/command, atom/user)//sends signal 'command' to 'target'. Returns 0 if no radio connection, 1 otherwise - if(!radio_connection) - return FALSE - - var/datum/signal/signal = new(command) - signal.data["tag"] = target - signal.data["sigtype"] = "command" - signal.data["user"] = user - radio_connection.post_signal(src, signal, RADIO_FROM_AIRALARM) - - return TRUE - /obj/machinery/airalarm/proc/get_mode_name(mode_value) switch(mode_value) if(AALARM_MODE_SCRUBBING) @@ -433,127 +485,113 @@ if(AALARM_MODE_FLOOD) return "Flood" -/obj/machinery/airalarm/proc/apply_mode(atom/signal_source) - switch(mode) - if(AALARM_MODE_SCRUBBING) - for(var/device_id in my_area.air_scrub_info) - send_signal(device_id, list( - "power" = 1, - "set_filters" = list(/datum/gas/carbon_dioxide), - "scrubbing" = 1, - "widenet" = 0 - ), signal_source) - for(var/device_id in my_area.air_vent_info) - send_signal(device_id, list( - "power" = 1, - "checks" = 1, - "set_external_pressure" = ONE_ATMOSPHERE - ), signal_source) - if(AALARM_MODE_CONTAMINATED) - for(var/device_id in my_area.air_scrub_info) - send_signal(device_id, list( - "power" = 1, - "set_filters" = list( - /datum/gas/carbon_dioxide, - /datum/gas/miasma, - /datum/gas/plasma, - /datum/gas/water_vapor, - /datum/gas/hypernoblium, - /datum/gas/nitrous_oxide, - /datum/gas/nitrium, - /datum/gas/tritium, - /datum/gas/bz, - /datum/gas/pluoxium, - /datum/gas/freon, - /datum/gas/hydrogen, - /datum/gas/healium, - /datum/gas/proto_nitrate, - /datum/gas/zauker, - /datum/gas/helium, - /datum/gas/antinoblium, - /datum/gas/halon, - ), - "scrubbing" = 1, - "widenet" = 1 - ), signal_source) - for(var/device_id in my_area.air_vent_info) - send_signal(device_id, list( - "power" = 1, - "checks" = 1, - "set_external_pressure" = ONE_ATMOSPHERE - ), signal_source) - if(AALARM_MODE_VENTING) - for(var/device_id in my_area.air_scrub_info) - send_signal(device_id, list( - "power" = 1, - "widenet" = 0, - "scrubbing" = 0 - ), signal_source) - for(var/device_id in my_area.air_vent_info) - send_signal(device_id, list( - "power" = 1, - "checks" = 1, - "set_external_pressure" = ONE_ATMOSPHERE*2 - ), signal_source) - if(AALARM_MODE_REFILL) - for(var/device_id in my_area.air_scrub_info) - send_signal(device_id, list( - "power" = 1, - "set_filters" = list(/datum/gas/carbon_dioxide), - "scrubbing" = 1, - "widenet" = 0 - ), signal_source) - for(var/device_id in my_area.air_vent_info) - send_signal(device_id, list( - "power" = 1, - "checks" = 1, - "set_external_pressure" = ONE_ATMOSPHERE * 3 - ), signal_source) - if(AALARM_MODE_PANIC, - AALARM_MODE_REPLACEMENT) - for(var/device_id in my_area.air_scrub_info) - send_signal(device_id, list( - "power" = 1, - "widenet" = 1, - "scrubbing" = 0 - ), signal_source) - for(var/device_id in my_area.air_vent_info) - send_signal(device_id, list( - "power" = 0 - ), signal_source) - if(AALARM_MODE_SIPHON) - for(var/device_id in my_area.air_scrub_info) - send_signal(device_id, list( - "power" = 1, - "widenet" = 0, - "scrubbing" = 0 - ), signal_source) - for(var/device_id in my_area.air_vent_info) - send_signal(device_id, list( - "power" = 0 - ), signal_source) +/obj/machinery/airalarm/proc/apply_mode(atom/source) + switch (mode) + if (AALARM_MODE_SCRUBBING) + for (var/obj/machinery/atmospherics/components/unary/vent_pump/vent as anything in my_area.air_vents) + vent.on = TRUE + vent.pressure_checks = ATMOS_EXTERNAL_BOUND + vent.external_pressure_bound = ONE_ATMOSPHERE + vent.update_appearance(UPDATE_ICON) - if(AALARM_MODE_OFF) - for(var/device_id in my_area.air_scrub_info) - send_signal(device_id, list( - "power" = 0 - ), signal_source) - for(var/device_id in my_area.air_vent_info) - send_signal(device_id, list( - "power" = 0 - ), signal_source) - if(AALARM_MODE_FLOOD) - for(var/device_id in my_area.air_scrub_info) - send_signal(device_id, list( - "power" = 0 - ), signal_source) - for(var/device_id in my_area.air_vent_info) - send_signal(device_id, list( - "power" = 1, - "checks" = 2, - "set_internal_pressure" = 0 - ), signal_source) - SEND_SIGNAL(src, COMSIG_AIRALARM_UPDATE_MODE, signal_source) + for (var/obj/machinery/atmospherics/components/unary/vent_scrubber/scrubber as anything in my_area.air_scrubbers) + scrubber.on = TRUE + scrubber.filter_types = list(/datum/gas/carbon_dioxide) + scrubber.set_scrubbing(TRUE) + scrubber.set_widenet(FALSE) + if (AALARM_MODE_CONTAMINATED) + for (var/obj/machinery/atmospherics/components/unary/vent_pump/vent as anything in my_area.air_vents) + vent.on = TRUE + vent.pressure_checks = ATMOS_EXTERNAL_BOUND + vent.external_pressure_bound = ONE_ATMOSPHERE + vent.update_appearance(UPDATE_ICON) + + for (var/obj/machinery/atmospherics/components/unary/vent_scrubber/scrubber as anything in my_area.air_scrubbers) + scrubber.on = TRUE + scrubber.filter_types = list( + /datum/gas/carbon_dioxide, + /datum/gas/miasma, + /datum/gas/plasma, + /datum/gas/water_vapor, + /datum/gas/hypernoblium, + /datum/gas/nitrous_oxide, + /datum/gas/nitrium, + /datum/gas/tritium, + /datum/gas/bz, + /datum/gas/pluoxium, + /datum/gas/freon, + /datum/gas/hydrogen, + /datum/gas/healium, + /datum/gas/proto_nitrate, + /datum/gas/zauker, + /datum/gas/helium, + /datum/gas/antinoblium, + /datum/gas/halon, + ) + scrubber.set_scrubbing(TRUE) + scrubber.set_widenet(TRUE) + if (AALARM_MODE_VENTING) + for (var/obj/machinery/atmospherics/components/unary/vent_pump/vent as anything in my_area.air_vents) + vent.on = TRUE + vent.pressure_checks = ATMOS_EXTERNAL_BOUND + vent.external_pressure_bound = ONE_ATMOSPHERE * 2 + vent.update_appearance(UPDATE_ICON) + + for (var/obj/machinery/atmospherics/components/unary/vent_scrubber/scrubber as anything in my_area.air_scrubbers) + scrubber.on = TRUE + scrubber.set_widenet(FALSE) + scrubber.set_scrubbing(FALSE) + if (AALARM_MODE_REFILL) + for (var/obj/machinery/atmospherics/components/unary/vent_pump/vent as anything in my_area.air_vents) + vent.on = TRUE + vent.pressure_checks = ATMOS_EXTERNAL_BOUND + vent.external_pressure_bound = ONE_ATMOSPHERE * 3 + vent.update_appearance(UPDATE_ICON) + + for (var/obj/machinery/atmospherics/components/unary/vent_scrubber/scrubber as anything in my_area.air_scrubbers) + scrubber.on = TRUE + + scrubber.filter_types = list(/datum/gas/carbon_dioxide) + scrubber.set_widenet(FALSE) + scrubber.set_scrubbing(FALSE) + if (AALARM_MODE_PANIC, AALARM_MODE_REPLACEMENT) + for (var/obj/machinery/atmospherics/components/unary/vent_pump/vent as anything in my_area.air_vents) + vent.on = FALSE + vent.update_appearance(UPDATE_ICON) + + for (var/obj/machinery/atmospherics/components/unary/vent_scrubber/scrubber as anything in my_area.air_scrubbers) + scrubber.on = TRUE + scrubber.set_widenet(TRUE) + scrubber.set_scrubbing(FALSE) + if (AALARM_MODE_SIPHON) + for (var/obj/machinery/atmospherics/components/unary/vent_pump/vent as anything in my_area.air_vents) + vent.on = FALSE + vent.update_appearance(UPDATE_ICON) + + for (var/obj/machinery/atmospherics/components/unary/vent_scrubber/scrubber as anything in my_area.air_scrubbers) + scrubber.on = TRUE + scrubber.set_widenet(FALSE) + scrubber.set_scrubbing(FALSE) + if (AALARM_MODE_OFF) + for (var/obj/machinery/atmospherics/components/unary/vent_pump/vent as anything in my_area.air_vents) + vent.on = FALSE + vent.update_appearance(UPDATE_ICON) + + for (var/obj/machinery/atmospherics/components/unary/vent_scrubber/scrubber as anything in my_area.air_scrubbers) + scrubber.on = FALSE + scrubber.update_appearance(UPDATE_ICON) + if (AALARM_MODE_FLOOD) + for (var/obj/machinery/atmospherics/components/unary/vent_pump/vent as anything in my_area.air_vents) + vent.on = TRUE + vent.pressure_checks = ATMOS_INTERNAL_BOUND + vent.internal_pressure_bound = 0 + vent.update_appearance(UPDATE_ICON) + + for (var/obj/machinery/atmospherics/components/unary/vent_scrubber/scrubber as anything in my_area.air_scrubbers) + scrubber.on = FALSE + scrubber.update_appearance(UPDATE_ICON) + + SEND_SIGNAL(src, COMSIG_AIRALARM_UPDATE_MODE, source) /obj/machinery/airalarm/update_appearance(updates) . = ..() @@ -649,26 +687,6 @@ mode = AALARM_MODE_SCRUBBING INVOKE_ASYNC(src, PROC_REF(apply_mode), src) - -/obj/machinery/airalarm/proc/post_alert(alert_level) - var/datum/radio_frequency/frequency = SSradio.return_frequency(alarm_frequency) - - if(!frequency) - return - - var/datum/signal/alert_signal = new(list( - "zone" = get_area_name(src, TRUE), - "type" = "Atmospheric" - )) - if(alert_level==2) - alert_signal.data["alert"] = "severe" - else if (alert_level==1) - alert_signal.data["alert"] = "minor" - else if (alert_level==0) - alert_signal.data["alert"] = "clear" - - frequency.post_signal(src, alert_signal, range = -1) - /obj/machinery/airalarm/proc/apply_danger_level() var/new_area_danger_level = 0 @@ -682,7 +700,7 @@ else did_anything_happen = alarm_manager.clear_alarm(ALARM_ATMOS) if(did_anything_happen) //if something actually changed - post_alert(new_area_danger_level) + danger_level = new_area_danger_level update_appearance() @@ -758,7 +776,7 @@ locked = FALSE mode = 1 shorted = 0 - post_alert(0) + danger_level = AIR_ALARM_ALERT_NONE buildstage = AIRALARM_BUILD_COMPLETE update_appearance() return @@ -1007,10 +1025,10 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 24) if(port == enable_fire_alarm) if(connected_alarm.alarm_manager.send_alarm(ALARM_ATMOS)) - INVOKE_ASYNC(connected_alarm, TYPE_PROC_REF(/obj/machinery/airalarm, post_alert), 2) + connected_alarm.danger_level = AIR_ALARM_ALERT_SEVERE else if(connected_alarm.alarm_manager.clear_alarm(ALARM_ATMOS)) - INVOKE_ASYNC(connected_alarm, TYPE_PROC_REF(/obj/machinery/airalarm, post_alert), 0) + connected_alarm.danger_level = AIR_ALARM_ALERT_NONE /obj/item/circuit_component/air_alarm_general/proc/set_mode(datum/port/input/port) CIRCUIT_TRIGGER @@ -1217,7 +1235,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 24) parent.add_component(component) RegisterSignal(component, COMSIG_PARENT_QDELETING, PROC_REF(on_duplicate_removed)) component.connected_alarm = connected_alarm - component.scrubbers.possible_options = connected_alarm.my_area.air_scrub_info + component.scrubbers.possible_options = extract_id_tags(connected_alarm.my_area.air_scrubbers) scrubber_duplicates += component /obj/item/circuit_component/air_alarm_scrubbers/proc/on_duplicate_removed(datum/source) @@ -1265,7 +1283,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 24) . = ..() if(istype(shell, /obj/machinery/airalarm)) connected_alarm = shell - scrubbers.possible_options = connected_alarm.my_area.air_scrub_info + scrubbers.possible_options = extract_id_tags(connected_alarm.my_area.air_scrubbers) /obj/item/circuit_component/air_alarm_scrubbers/unregister_usb_parent(atom/movable/shell) connected_alarm = null @@ -1290,16 +1308,18 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 24) if(!connected_alarm || connected_alarm.locked) return - var/scrubber_id = scrubbers.value var/list/valid_filters = list() for(var/info in gas_filter.value) - if(gas_id2path(info) == "") + var/gas_type = gas_id2path(info) + if(!gas_type) continue - valid_filters += info + valid_filters += gas_type - connected_alarm.send_signal(scrubber_id, list( - "set_filters" = valid_filters, - )) + var/obj/machinery/atmospherics/components/unary/vent_scrubber/scrubber = find_by_id_tag(connected_alarm.my_area.air_scrubbers, scrubbers.value) + if(isnull(scrubber)) + return + + scrubber.filter_types = valid_filters /obj/item/circuit_component/air_alarm_scrubbers/proc/toggle_scrubber(datum/port/input/port) CIRCUIT_TRIGGER @@ -1309,16 +1329,13 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 24) if(!connected_alarm || connected_alarm.locked) return - var/scrubber_id = scrubbers.value + // var/scrubber_id = scrubbers.value + var/obj/machinery/atmospherics/components/unary/vent_scrubber/scrubber = find_by_id_tag(connected_alarm.my_area.air_scrubbers, scrubbers.value) + if (isnull(scrubber)) + return - if(port == enable) - connected_alarm.send_signal(scrubber_id, list( - "power" = TRUE, - )) - else - connected_alarm.send_signal(scrubber_id, list( - "power" = FALSE, - )) + scrubber.on = (port == enable) + scrubber.update_appearance(UPDATE_ICON) /obj/item/circuit_component/air_alarm_scrubbers/proc/toggle_range(datum/port/input/port) CIRCUIT_TRIGGER @@ -1328,16 +1345,12 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 24) if(!connected_alarm || connected_alarm.locked) return - var/scrubber_id = scrubbers.value + var/obj/machinery/atmospherics/components/unary/vent_scrubber/scrubber = find_by_id_tag(connected_alarm.my_area.air_scrubbers, scrubbers.value) + if(isnull(scrubber)) + return - if(port == enable_extended_range) - connected_alarm.send_signal(scrubber_id, list( - "widenet" = TRUE, - )) - else - connected_alarm.send_signal(scrubber_id, list( - "widenet" = FALSE, - )) + scrubber.widenet = (port == enable_extended_range) + scrubber.update_appearance(UPDATE_ICON) /obj/item/circuit_component/air_alarm_scrubbers/proc/toggle_siphon(datum/port/input/port) CIRCUIT_TRIGGER @@ -1347,36 +1360,29 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 24) if(!connected_alarm || connected_alarm.locked) return - var/scrubber_id = scrubbers.value + var/obj/machinery/atmospherics/components/unary/vent_scrubber/scrubber = find_by_id_tag(connected_alarm.my_area.air_scrubbers, scrubbers.value) + if(isnull(scrubber)) + return - if(port == enable_siphon) - connected_alarm.send_signal(scrubber_id, list( - "scrubbing" = FALSE, - )) - else - connected_alarm.send_signal(scrubber_id, list( - "scrubbing" = TRUE, - )) + scrubber.scrubbing = (port != enable_siphon) + scrubber.update_appearance(UPDATE_ICON) /obj/item/circuit_component/air_alarm_scrubbers/proc/update_data() CIRCUIT_TRIGGER if(!connected_alarm || connected_alarm.locked) return - var/scrubber_id = scrubbers.value - - var/list/info = connected_alarm.my_area.air_scrub_info[scrubber_id] - if(!info || info["frequency"] != connected_alarm.frequency) + var/obj/machinery/atmospherics/components/unary/vent_scrubber/scrubber = find_by_id_tag(connected_alarm.my_area.air_scrubbers, scrubbers.value) + if(isnull(scrubber)) return - enabled.set_value(info["power"]) - is_siphoning.set_value(!info["scrubbing"]) + enabled.set_value(scrubber.on) + is_siphoning.set_value(scrubber.scrubbing == ATMOS_DIRECTION_SCRUBBING) var/list/filtered = list() - for(var/list/data as anything in info["filter_types"]) - if(data["enabled"]) - filtered += data["gas_id"] + for(var/datum/gas/gas_type as anything in scrubber.filter_types) + filtered += initial(gas_type.id) filtering.set_value(filtered) @@ -1449,7 +1455,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 24) RegisterSignal(component, COMSIG_PARENT_QDELETING, PROC_REF(on_duplicate_removed)) vent_duplicates += component component.connected_alarm = connected_alarm - component.vents.possible_options = connected_alarm.my_area.air_vent_info + component.vents.possible_options = extract_id_tags(connected_alarm.my_area.air_vents) /obj/item/circuit_component/air_alarm_vents/proc/on_duplicate_removed(datum/source) SIGNAL_HANDLER @@ -1504,7 +1510,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 24) . = ..() if(istype(shell, /obj/machinery/airalarm)) connected_alarm = shell - vents.possible_options = connected_alarm.my_area.air_vent_info + vents.possible_options = extract_id_tags(connected_alarm.my_area.air_vents) /obj/item/circuit_component/air_alarm_vents/unregister_usb_parent(atom/movable/shell) connected_alarm = null @@ -1521,19 +1527,13 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 24) if(!connected_alarm || connected_alarm.locked) return - var/vent_id = vents.value + var/obj/machinery/atmospherics/components/unary/vent_pump/vent = find_by_id_tag(connected_alarm.my_area.air_vents, vents.value) + if(isnull(vent)) + return - if(port == enable) - connected_alarm.send_signal(vent_id, list( - "power" = TRUE, - )) - else - connected_alarm.send_signal(vent_id, list( - "power" = FALSE, - )) + vent.on = (port == enable) + vent.update_appearance(UPDATE_ICON) -#define EXT_BOUND 1 -#define INT_BOUND 2 #define NO_BOUND 3 /obj/item/circuit_component/air_alarm_vents/proc/toggle_external(datum/port/input/port) @@ -1544,19 +1544,14 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 24) if(!connected_alarm || connected_alarm.locked) return - var/vent_id = vents.value - var/list/info = connected_alarm.my_area.air_vent_info[vent_id] - if(!info || info["frequency"] != connected_alarm.frequency) + var/obj/machinery/atmospherics/components/unary/vent_pump/vent = find_by_id_tag(connected_alarm.my_area.air_vents, vents.value) + if(isnull(vent)) return if(port == enable_external) - connected_alarm.send_signal(vent_id, list( - "checks" = (info["checks"] | EXT_BOUND), - )) + vent.pressure_checks |= ATMOS_EXTERNAL_BOUND else - connected_alarm.send_signal(vent_id, list( - "checks" = (info["checks"] & ~EXT_BOUND), - )) + vent.pressure_checks &= ~ATMOS_EXTERNAL_BOUND /obj/item/circuit_component/air_alarm_vents/proc/toggle_internal(datum/port/input/port) CIRCUIT_TRIGGER @@ -1566,19 +1561,14 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 24) if(!connected_alarm || connected_alarm.locked) return - var/vent_id = vents.value - var/list/info = connected_alarm.my_area.air_vent_info[vent_id] - if(!info || info["frequency"] != connected_alarm.frequency) + var/obj/machinery/atmospherics/components/unary/vent_pump/vent = find_by_id_tag(connected_alarm.my_area.air_vents, vents.value) + if(isnull(vent)) return if(port == enable_internal) - connected_alarm.send_signal(vent_id, list( - "checks" = (info["checks"] | INT_BOUND), - )) + vent.pressure_checks |= ATMOS_INTERNAL_BOUND else - connected_alarm.send_signal(vent_id, list( - "checks" = (info["checks"] & ~INT_BOUND), - )) + vent.pressure_checks &= ~ATMOS_INTERNAL_BOUND /obj/item/circuit_component/air_alarm_vents/proc/set_internal_pressure(datum/port/input/port) CIRCUIT_TRIGGER @@ -1588,11 +1578,11 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 24) if(!connected_alarm || connected_alarm.locked) return - var/vent_id = vents.value + var/obj/machinery/atmospherics/components/unary/vent_pump/vent = find_by_id_tag(connected_alarm.my_area.air_vents, vents.value) + if(isnull(vent)) + return - connected_alarm.send_signal(vent_id, list( - "set_internal_pressure" = internal_pressure.value || 0, - )) + vent.internal_pressure_bound = clamp(internal_pressure.value, 0, ATMOS_PUMP_MAX_PRESSURE) /obj/item/circuit_component/air_alarm_vents/proc/set_external_pressure(datum/port/input/port) CIRCUIT_TRIGGER @@ -1602,12 +1592,11 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 24) if(!connected_alarm || connected_alarm.locked) return - var/vent_id = vents.value - - connected_alarm.send_signal(vent_id, list( - "set_external_pressure" = external_pressure.value || 0, - )) + var/obj/machinery/atmospherics/components/unary/vent_pump/vent = find_by_id_tag(connected_alarm.my_area.air_vents, vents.value) + if(isnull(vent)) + return + vent.internal_pressure_bound = clamp(external_pressure.value, 0, ATMOS_PUMP_MAX_PRESSURE) /obj/item/circuit_component/air_alarm_vents/proc/toggle_siphon(datum/port/input/port) CIRCUIT_TRIGGER @@ -1617,38 +1606,44 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 24) if(!connected_alarm || connected_alarm.locked) return - var/scrubber_id = vents.value + var/obj/machinery/atmospherics/components/unary/vent_pump/vent = find_by_id_tag(connected_alarm.my_area.air_vents, vents.value) + if(isnull(vent)) + return - if(port == enable_siphon) - connected_alarm.send_signal(scrubber_id, list( - "direction" = FALSE, - )) - else - connected_alarm.send_signal(scrubber_id, list( - "direction" = TRUE, - )) + vent.pump_direction = (port == enable_siphon) ? ATMOS_DIRECTION_SIPHONING : ATMOS_DIRECTION_RELEASING /obj/item/circuit_component/air_alarm_vents/proc/update_data() CIRCUIT_TRIGGER if(!connected_alarm || connected_alarm.locked) return - var/vent_id = vents.value - - var/list/info = connected_alarm.my_area.air_vent_info[vent_id] - if(!info || info["frequency"] != connected_alarm.frequency) + var/obj/machinery/atmospherics/components/unary/vent_pump/vent = find_by_id_tag(connected_alarm.my_area.air_vents, vents.value) + if(isnull(vent)) return - enabled.set_value(info["power"]) - is_siphoning.set_value(!info["direction"]) - internal_on.set_value(!!(info["checks"] & INT_BOUND)) - current_internal_pressure.set_value(info["internal"]) - external_on.set_value(!!(info["checks"] & EXT_BOUND)) - current_external_pressure.set_value(info["external"]) + enabled.set_value(vent.on) + is_siphoning.set_value(vent.pump_direction == ATMOS_DIRECTION_SIPHONING) + internal_on.set_value(!!(vent.pressure_checks & ATMOS_INTERNAL_BOUND)) + current_internal_pressure.set_value(vent.internal_pressure_bound) + external_on.set_value(!!(vent.pressure_checks & ATMOS_EXTERNAL_BOUND)) + current_external_pressure.set_value(vent.external_pressure_bound) update_received.set_value(COMPONENT_SIGNAL) -#undef EXT_BOUND -#undef INT_BOUND +/proc/extract_id_tags(list/objects) + var/list/tags = list() + + for (var/obj/object as anything in objects) + tags += object.id_tag + + return tags + +/proc/find_by_id_tag(list/objects, id_tag) + for (var/obj/object as anything in objects) + if (object.id_tag == id_tag) + return object + + return null + #undef NO_BOUND #undef AALARM_MODE_SCRUBBING @@ -1661,3 +1656,4 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 24) #undef AALARM_MODE_CONTAMINATED #undef AALARM_MODE_REFILL #undef AALARM_REPORT_TIMEOUT +#undef AALARM_MODE_MAX 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 b74b5935c2f..20adef76f04 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,7 +1,5 @@ //Acts like a normal vent, but has an input AND output. ///pressure_checks defines for external_pressure_bound and input_pressure_min -#define EXT_BOUND 1 -#define INPUT_MIN 2 #define OUTPUT_MAX 4 /obj/machinery/atmospherics/components/binary/dp_vent_pump @@ -16,14 +14,8 @@ hide = TRUE - ///Variable for radio frequency - var/frequency = 0 - ///Variable for radio id - var/id = null - ///Stores the radio connection - var/datum/radio_frequency/radio_connection - ///Indicates that the direction of the pump, if 0 is siphoning, if 1 is releasing - var/pump_direction = 1 + ///Indicates that the direction of the pump, if ATMOS_DIRECTION_SIPHONING is siphoning, if ATMOS_DIRECTION_RELEASING is releasing + var/pump_direction = ATMOS_DIRECTION_RELEASING ///Set the maximum allowed external pressure var/external_pressure_bound = ONE_ATMOSPHERE ///Set the maximum pressure at the input port @@ -31,11 +23,7 @@ ///Set the maximum pressure at the output port var/output_pressure_max = 0 ///Set the flag for the pressure bound - var/pressure_checks = EXT_BOUND - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/Destroy() - SSradio.remove_object(src, frequency) - return ..() + var/pressure_checks = ATMOS_EXTERNAL_BOUND /obj/machinery/atmospherics/components/binary/dp_vent_pump/update_icon_nopipes() cut_overlays() @@ -65,9 +53,9 @@ if(pump_direction) //input -> external var/pressure_delta = 10000 - if(pressure_checks&EXT_BOUND) + if(pressure_checks&ATMOS_EXTERNAL_BOUND) pressure_delta = min(pressure_delta, (external_pressure_bound - environment_pressure)) - if(pressure_checks&INPUT_MIN) + if(pressure_checks&ATMOS_INTERNAL_BOUND) pressure_delta = min(pressure_delta, (air1.return_pressure() - input_pressure_min)) if(pressure_delta <= 0) @@ -89,9 +77,9 @@ else //external -> output var/pressure_delta = 10000 - if(pressure_checks&EXT_BOUND) + if(pressure_checks&ATMOS_EXTERNAL_BOUND) pressure_delta = min(pressure_delta, (environment_pressure - external_pressure_bound)) - if(pressure_checks&INPUT_MIN) + if(pressure_checks&ATMOS_INTERNAL_BOUND) pressure_delta = min(pressure_delta, (output_pressure_max - air2.return_pressure())) if(pressure_delta <= 0) @@ -110,83 +98,6 @@ var/datum/pipeline/parent2 = parents[2] parent2.update = TRUE - //Radio remote control - -/** - * Called in atmos_init(), used to change or remove the radio frequency from the component - * Arguments: - * * -new_frequency: the frequency that should be used for the radio to attach to the component, use 0 to remove the radio - */ -/obj/machinery/atmospherics/components/binary/dp_vent_pump/proc/set_frequency(new_frequency) - SSradio.remove_object(src, frequency) - frequency = new_frequency - if(frequency) - radio_connection = SSradio.add_object(src, frequency, filter = RADIO_ATMOSIA) - -/** - * Called in atmos_init(), send the component status to the radio device connected - */ -/obj/machinery/atmospherics/components/binary/dp_vent_pump/proc/broadcast_status() - if(!radio_connection) - return - - var/datum/signal/signal = new(list( - "tag" = id, - "device" = "ADVP", - "power" = on, - "direction" = pump_direction?("release"):("siphon"), - "checks" = pressure_checks, - "input" = input_pressure_min, - "output" = output_pressure_max, - "external" = external_pressure_bound, - "sigtype" = "status" - )) - radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/atmos_init() - ..() - if(frequency) - set_frequency(frequency) - broadcast_status() - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/receive_signal(datum/signal/signal) - if(!signal.data["tag"] || (signal.data["tag"] != id) || (signal.data["sigtype"]!="command")) - return - - if("power" in signal.data) - on = text2num(signal.data["power"]) - - if("power_toggle" in signal.data) - on = !on - - if("set_direction" in signal.data) - pump_direction = text2num(signal.data["set_direction"]) - - if("checks" in signal.data) - pressure_checks = text2num(signal.data["checks"]) - - if("purge" in signal.data) - pressure_checks &= ~1 - pump_direction = 0 - - if("stabilize" in signal.data) - pressure_checks |= 1 - pump_direction = 1 - - if("set_input_pressure" in signal.data) - input_pressure_min = clamp(text2num(signal.data["set_input_pressure"]),0,ONE_ATMOSPHERE*50) - - if("set_output_pressure" in signal.data) - output_pressure_max = clamp(text2num(signal.data["set_output_pressure"]),0,ONE_ATMOSPHERE*50) - - if("set_external_pressure" in signal.data) - external_pressure_bound = clamp(text2num(signal.data["set_external_pressure"]),0,ONE_ATMOSPHERE*50) - - addtimer(CALLBACK(src, PROC_REF(broadcast_status)), 2) - - if(!("status" in signal.data)) //do not update_appearance - update_appearance() - /obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume name = "large dual-port air vent" @@ -220,16 +131,13 @@ icon_state = "dpvent_map_on-4" /obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_ordmix - id = INCINERATOR_ORDMIX_DP_VENTPUMP - frequency = FREQ_AIRLOCK_CONTROL + id_tag = INCINERATOR_ORDMIX_DP_VENTPUMP /obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos - id = INCINERATOR_ATMOS_DP_VENTPUMP - frequency = FREQ_AIRLOCK_CONTROL + id_tag = INCINERATOR_ATMOS_DP_VENTPUMP /obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_syndicatelava - id = INCINERATOR_SYNDICATELAVA_DP_VENTPUMP - frequency = FREQ_AIRLOCK_CONTROL + id_tag = INCINERATOR_SYNDICATELAVA_DP_VENTPUMP /obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer2 piping_layer = 2 @@ -251,6 +159,4 @@ piping_layer = 4 icon_state = "dpvent_map_on-4" -#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 f149ccfd6d6..f33eb7fc3bb 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm @@ -19,12 +19,6 @@ Passive gate is similar to the regular pump except: use_power = NO_POWER_USE ///Set the target pressure the component should arrive to var/target_pressure = ONE_ATMOSPHERE - ///Variable for radio frequency - var/frequency = 0 - ///Variable for radio id - var/id = null - ///Stores the radio connection - var/datum/radio_frequency/radio_connection /obj/machinery/atmospherics/components/binary/passive_gate/CtrlClick(mob/user) if(can_interact(user)) @@ -41,10 +35,6 @@ Passive gate is similar to the regular pump except: update_appearance() return ..() -/obj/machinery/atmospherics/components/binary/passive_gate/Destroy() - SSradio.remove_object(src,frequency) - return ..() - /obj/machinery/atmospherics/components/binary/passive_gate/update_icon_nopipes() cut_overlays() icon_state = "passgate_off-[set_overlay_offset(piping_layer)]" @@ -60,35 +50,6 @@ Passive gate is similar to the regular pump except: if(air1.release_gas_to(air2, target_pressure)) update_parents() -//Radio remote control - -/** - * Called in atmos_init(), used to change or remove the radio frequency from the component - * Arguments: - * * -new_frequency: the frequency that should be used for the radio to attach to the component, use 0 to remove the radio - */ -/obj/machinery/atmospherics/components/binary/passive_gate/proc/set_frequency(new_frequency) - SSradio.remove_object(src, frequency) - frequency = new_frequency - if(frequency) - radio_connection = SSradio.add_object(src, frequency, filter = RADIO_ATMOSIA) - -/** - * Called in atmos_init(), send the component status to the radio device connected - */ -/obj/machinery/atmospherics/components/binary/passive_gate/proc/broadcast_status() - if(!radio_connection) - return - - var/datum/signal/signal = new(list( - "tag" = id, - "device" = "AGP", - "power" = on, - "target_output" = target_pressure, - "sigtype" = "status" - )) - radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) - /obj/machinery/atmospherics/components/binary/passive_gate/relaymove(mob/living/user, direction) if(!on || direction != dir) return @@ -129,36 +90,6 @@ Passive gate is similar to the regular pump except: investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", INVESTIGATE_ATMOS) update_appearance() -/obj/machinery/atmospherics/components/binary/passive_gate/atmos_init() - ..() - if(frequency) - set_frequency(frequency) - -/obj/machinery/atmospherics/components/binary/passive_gate/receive_signal(datum/signal/signal) - if(!signal.data["tag"] || (signal.data["tag"] != id) || (signal.data["sigtype"]!="command")) - return - - var/old_on = on //for logging - - if("power" in signal.data) - on = text2num(signal.data["power"]) - - if("power_toggle" in signal.data) - on = !on - - if("set_output_pressure" in signal.data) - target_pressure = clamp(text2num(signal.data["set_output_pressure"]),0,ONE_ATMOSPHERE*100) - - if(on != old_on) - investigate_log("was turned [on ? "on" : "off"] by a remote signal", INVESTIGATE_ATMOS) - - if("status" in signal.data) - broadcast_status() - return - - broadcast_status() - update_appearance() - /obj/machinery/atmospherics/components/binary/passive_gate/can_unwrench(mob/user) . = ..() if(. && on) diff --git a/code/modules/atmospherics/machinery/components/binary_devices/pressure_valve.dm b/code/modules/atmospherics/machinery/components/binary_devices/pressure_valve.dm index e0cb334b048..a208bc9d3e6 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/pressure_valve.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/pressure_valve.dm @@ -9,12 +9,6 @@ use_power = NO_POWER_USE ///Amount of pressure needed before the valve for it to open var/target_pressure = ONE_ATMOSPHERE - ///Frequency for radio signaling - var/frequency = 0 - ///ID for radio signaling - var/id = null - ///Connection to the radio processing - var/datum/radio_frequency/radio_connection ///Check if the gas is moving from one pipenet to the other var/is_gas_flowing = FALSE @@ -33,12 +27,6 @@ update_appearance() return ..() -/obj/machinery/atmospherics/components/binary/pressure_valve/Destroy() - SSradio.remove_object(src,frequency) - if(radio_connection) - radio_connection = null - return ..() - /obj/machinery/atmospherics/components/binary/pressure_valve/update_icon_nopipes() if(on && is_operational && is_gas_flowing) icon_state = "pvalve_flow-[set_overlay_offset(piping_layer)]" @@ -63,35 +51,6 @@ is_gas_flowing = FALSE update_icon_nopipes() -//Radio remote control - -/** - * Called in atmos_init(), used to change or remove the radio frequency from the component - * Arguments: - * * -new_frequency: the frequency that should be used for the radio to attach to the component, use 0 to remove the radio - */ -/obj/machinery/atmospherics/components/binary/pressure_valve/proc/set_frequency(new_frequency) - SSradio.remove_object(src, frequency) - frequency = new_frequency - if(frequency) - radio_connection = SSradio.add_object(src, frequency, filter = RADIO_ATMOSIA) - -/** - * Called in atmos_init(), send the component status to the radio device connected - */ -/obj/machinery/atmospherics/components/binary/pressure_valve/proc/broadcast_status() - if(!radio_connection) - return - - var/datum/signal/signal = new(list( - "tag" = id, - "device" = "AGP", - "power" = on, - "target_output" = target_pressure, - "sigtype" = "status" - )) - radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) - /obj/machinery/atmospherics/components/binary/pressure_valve/relaymove(mob/living/user, direction) if(!on || direction != dir) return @@ -132,36 +91,6 @@ investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", INVESTIGATE_ATMOS) update_appearance() -/obj/machinery/atmospherics/components/binary/pressure_valve/atmos_init() - . = ..() - if(frequency) - set_frequency(frequency) - -/obj/machinery/atmospherics/components/binary/pressure_valve/receive_signal(datum/signal/signal) - if(!signal.data["tag"] || (signal.data["tag"] != id) || (signal.data["sigtype"]!="command")) - return - - var/old_on = on //for logging - - if("power" in signal.data) - on = text2num(signal.data["power"]) - - if("power_toggle" in signal.data) - on = !on - - if("set_output_pressure" in signal.data) - target_pressure = clamp(text2num(signal.data["set_output_pressure"]),0,ONE_ATMOSPHERE*100) - - if(on != old_on) - investigate_log("was turned [on ? "on" : "off"] by a remote signal", INVESTIGATE_ATMOS) - - if("status" in signal.data) - broadcast_status() - return - - broadcast_status() - update_appearance() - /obj/machinery/atmospherics/components/binary/pressure_valve/can_unwrench(mob/user) . = ..() if(. && on && is_operational) diff --git a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm index 0dd3d29fe9f..e71d4695338 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm @@ -21,12 +21,6 @@ vent_movement = NONE ///Pressure that the pump will reach when on var/target_pressure = ONE_ATMOSPHERE - ///Frequency for radio signaling - var/frequency = 0 - ///ID for radio signaling - var/id = null - ///Connection to the radio processing - var/datum/radio_frequency/radio_connection /obj/machinery/atmospherics/components/binary/pump/Initialize(mapload) . = ..() @@ -49,12 +43,6 @@ update_appearance() return ..() -/obj/machinery/atmospherics/components/binary/pump/Destroy() - SSradio.remove_object(src,frequency) - if(radio_connection) - radio_connection = null - return ..() - /obj/machinery/atmospherics/components/binary/pump/update_icon_nopipes() icon_state = (on && is_operational) ? "pump_on-[set_overlay_offset(piping_layer)]" : "pump_off-[set_overlay_offset(piping_layer)]" @@ -68,33 +56,6 @@ if(air1.pump_gas_to(air2, target_pressure)) update_parents() -/** - * Called in atmos_init(), used to change or remove the radio frequency from the component - * Arguments: - * * -new_frequency: the frequency that should be used for the radio to attach to the component, use 0 to remove the radio - */ -/obj/machinery/atmospherics/components/binary/pump/proc/set_frequency(new_frequency) - SSradio.remove_object(src, frequency) - frequency = new_frequency - if(frequency) - radio_connection = SSradio.add_object(src, frequency, filter = RADIO_ATMOSIA) - -/** - * Called in atmos_init(), send the component status to the radio device connected - */ -/obj/machinery/atmospherics/components/binary/pump/proc/broadcast_status() - if(!radio_connection) - return - - var/datum/signal/signal = new(list( - "tag" = id, - "device" = "AGP", - "power" = on, - "target_output" = target_pressure, - "sigtype" = "status" - )) - radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) - /obj/machinery/atmospherics/components/binary/pump/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) if(!ui) @@ -130,36 +91,6 @@ investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", INVESTIGATE_ATMOS) update_appearance() -/obj/machinery/atmospherics/components/binary/pump/atmos_init() - ..() - if(frequency) - set_frequency(frequency) - -/obj/machinery/atmospherics/components/binary/pump/receive_signal(datum/signal/signal) - if(!signal.data["tag"] || (signal.data["tag"] != id) || (signal.data["sigtype"]!="command")) - return - - var/old_on = on //for logging - - if("power" in signal.data) - set_on(text2num(signal.data["power"])) - - if("power_toggle" in signal.data) - set_on(!on) - - if("set_output_pressure" in signal.data) - target_pressure = clamp(text2num(signal.data["set_output_pressure"]),0,ONE_ATMOSPHERE*50) - - if(on != old_on) - investigate_log("was turned [on ? "on" : "off"] by a remote signal", INVESTIGATE_ATMOS) - - if("status" in signal.data) - broadcast_status() - return - - broadcast_status() - update_appearance() - /obj/machinery/atmospherics/components/binary/pump/can_unwrench(mob/user) . = ..() if(. && on && is_operational) 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 ef4567ca831..448ca6cd580 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm @@ -23,12 +23,6 @@ var/transfer_rate = MAX_TRANSFER_RATE ///Check if the component has been overclocked var/overclocked = FALSE - ///Frequency for radio signaling - var/frequency = 0 - ///ID for radio signaling - var/id = null - ///Connection to the radio processing - var/datum/radio_frequency/radio_connection /obj/machinery/atmospherics/components/binary/volume_pump/Initialize(mapload) . = ..() @@ -51,10 +45,6 @@ update_appearance() return ..() -/obj/machinery/atmospherics/components/binary/volume_pump/Destroy() - SSradio.remove_object(src,frequency) - return ..() - /obj/machinery/atmospherics/components/binary/volume_pump/update_icon_nopipes() icon_state = on && is_operational ? "volpump_on-[set_overlay_offset(piping_layer)]" : "volpump_off-[set_overlay_offset(piping_layer)]" @@ -99,33 +89,6 @@ if(overclocked) . += "Its warning light is on[on ? " and it's spewing gas!" : "."]" -/** - * Called in atmos_init(), used to change or remove the radio frequency from the component - * Arguments: - * * -new_frequency: the frequency that should be used for the radio to attach to the component, use 0 to remove the radio - */ -/obj/machinery/atmospherics/components/binary/volume_pump/proc/set_frequency(new_frequency) - SSradio.remove_object(src, frequency) - frequency = new_frequency - if(frequency) - radio_connection = SSradio.add_object(src, frequency, filter = RADIO_ATMOSIA) - -/** - * Called in atmos_init(), send the component status to the radio device connected - */ -/obj/machinery/atmospherics/components/binary/volume_pump/proc/broadcast_status() - if(!radio_connection) - return - - var/datum/signal/signal = new(list( - "tag" = id, - "device" = "APV", - "power" = on, - "transfer_rate" = transfer_rate, - "sigtype" = "status" - )) - radio_connection.post_signal(src, signal) - /obj/machinery/atmospherics/components/binary/volume_pump/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) if(!ui) @@ -139,11 +102,6 @@ data["max_rate"] = round(MAX_TRANSFER_RATE) return data -/obj/machinery/atmospherics/components/binary/volume_pump/atmos_init() - . = ..() - - set_frequency(frequency) - /obj/machinery/atmospherics/components/binary/volume_pump/ui_act(action, params) . = ..() if(.) @@ -166,32 +124,6 @@ investigate_log("was set to [transfer_rate] L/s by [key_name(usr)]", INVESTIGATE_ATMOS) update_appearance() -/obj/machinery/atmospherics/components/binary/volume_pump/receive_signal(datum/signal/signal) - if(!signal.data["tag"] || (signal.data["tag"] != id) || (signal.data["sigtype"]!="command")) - return - - var/old_on = on //for logging - - if("power" in signal.data) - set_on(text2num(signal.data["power"])) - - if("power_toggle" in signal.data) - set_on(!on) - - if("set_transfer_rate" in signal.data) - var/datum/gas_mixture/air1 = airs[1] - transfer_rate = clamp(text2num(signal.data["set_transfer_rate"]),0,air1.volume) - - if(on != old_on) - investigate_log("was turned [on ? "on" : "off"] by a remote signal", INVESTIGATE_ATMOS) - - if("status" in signal.data) - broadcast_status() - return //do not update_appearance - - broadcast_status() - update_appearance() - /obj/machinery/atmospherics/components/binary/volume_pump/can_unwrench(mob/user) . = ..() if(. && on && is_operational) diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm index 6f7af747d85..a01167de625 100644 --- a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm +++ b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm @@ -13,10 +13,6 @@ var/transfer_rate = MAX_TRANSFER_RATE ///What gases are we filtering, by typepath var/list/filter_type = list() - ///Frequency id for connecting to the NTNet - var/frequency = 0 - ///Reference to the radio datum - var/datum/radio_frequency/radio_connection /obj/machinery/atmospherics/components/trinary/filter/CtrlClick(mob/user) if(can_interact(user)) @@ -33,16 +29,6 @@ update_appearance() return ..() -/obj/machinery/atmospherics/components/trinary/filter/proc/set_frequency(new_frequency) - SSradio.remove_object(src, frequency) - frequency = new_frequency - if(frequency) - radio_connection = SSradio.add_object(src, frequency, RADIO_ATMOSIA) - -/obj/machinery/atmospherics/components/trinary/filter/Destroy() - SSradio.remove_object(src,frequency) - return ..() - /obj/machinery/atmospherics/components/trinary/filter/update_overlays() . = ..() for(var/direction in GLOB.cardinals) @@ -122,10 +108,6 @@ update_parents() -/obj/machinery/atmospherics/components/trinary/filter/atmos_init() - set_frequency(frequency) - return ..() - /obj/machinery/atmospherics/components/trinary/filter/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) if(!ui) 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 663eb279487..1f9bdeb9eaf 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm @@ -1,10 +1,5 @@ -#define EXT_BOUND 1 -#define INT_BOUND 2 #define NO_BOUND 3 -#define SIPHONING 0 -#define RELEASING 1 - /obj/machinery/atmospherics/components/unary/vent_pump icon_state = "vent_map-3" @@ -21,42 +16,57 @@ pipe_state = "uvent" vent_movement = VENTCRAWL_ALLOWED | VENTCRAWL_CAN_SEE | VENTCRAWL_ENTRANCE_ALLOWED - ///Direction of pumping the gas (RELEASING or SIPHONING) - var/pump_direction = RELEASING - ///Should we check internal pressure, external pressure, both or none? (EXT_BOUND, INT_BOUND, NO_BOUND) - var/pressure_checks = EXT_BOUND + ///Direction of pumping the gas (ATMOS_DIRECTION_RELEASING or ATMOS_DIRECTION_SIPHONING) + var/pump_direction = ATMOS_DIRECTION_RELEASING + ///Should we check internal pressure, external pressure, both or none? (ATMOS_EXTERNAL_BOUND, ATMOS_INTERNAL_BOUND, NO_BOUND) + var/pressure_checks = ATMOS_EXTERNAL_BOUND ///The external pressure threshold (default 101 kPa) var/external_pressure_bound = ONE_ATMOSPHERE ///The internal pressure threshold (default 0 kPa) var/internal_pressure_bound = 0 - // EXT_BOUND: Do not pass external_pressure_bound - // INT_BOUND: Do not pass internal_pressure_bound + // ATMOS_EXTERNAL_BOUND: Do not pass external_pressure_bound + // ATMOS_INTERNAL_BOUND: Do not pass internal_pressure_bound // NO_BOUND: Do not pass either - ///Frequency id for connecting to the NTNet - var/frequency = FREQ_ATMOS_CONTROL - ///Reference to the radio datum - var/datum/radio_frequency/radio_connection - ///Radio connection to the air alarm - var/radio_filter_out - ///Radio connection from the air alarm - var/radio_filter_in - /obj/machinery/atmospherics/components/unary/vent_pump/New() if(!id_tag) id_tag = SSnetworks.assign_random_name() . = ..() +/obj/machinery/atmospherics/components/unary/vent_pump/Initialize(mapload) + . = ..() + + assign_to_area() + /obj/machinery/atmospherics/components/unary/vent_pump/Destroy() + disconnect_from_area() + var/area/vent_area = get_area(src) if(vent_area) - vent_area.air_vent_info -= id_tag - GLOB.air_vent_names -= id_tag + vent_area.air_vents -= src - SSradio.remove_object(src,frequency) - radio_connection = null return ..() +/obj/machinery/atmospherics/components/unary/vent_pump/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change) + . = ..() + + var/area/old_area = get_area(old_loc) + var/area/new_area = get_area(src) + + if (old_area == new_area) + return + + disconnect_from_area() + assign_to_area() + +/obj/machinery/atmospherics/components/unary/vent_pump/proc/assign_to_area() + var/area/area = get_area(src) + area?.air_vents += src + +/obj/machinery/atmospherics/components/unary/vent_pump/proc/disconnect_from_area() + var/area/area = get_area(src) + area?.air_vents -= src + /obj/machinery/atmospherics/components/unary/vent_pump/update_icon_nopipes() cut_overlays() if(showpipe) @@ -74,14 +84,14 @@ icon_state = "vent_off" return - if(pump_direction & RELEASING) + if(pump_direction & ATMOS_DIRECTION_RELEASING) icon_state = "vent_out-off" else // pump_direction == SIPHONING icon_state = "vent_in-off" return if(icon_state == ("vent_out-off" || "vent_in-off" || "vent_off")) - if(pump_direction & RELEASING) + if(pump_direction & ATMOS_DIRECTION_RELEASING) icon_state = "vent_out" flick("vent_out-starting", src) else // pump_direction == SIPHONING @@ -89,7 +99,7 @@ flick("vent_in-starting", src) return - if(pump_direction & RELEASING) + if(pump_direction & ATMOS_DIRECTION_RELEASING) icon_state = "vent_out" else // pump_direction == SIPHONING icon_state = "vent_in" @@ -108,12 +118,12 @@ var/datum/gas_mixture/environment = us.return_air() var/environment_pressure = environment.return_pressure() - if(pump_direction & RELEASING) // internal -> external + if(pump_direction & ATMOS_DIRECTION_RELEASING) // internal -> external var/pressure_delta = 10000 - if(pressure_checks&EXT_BOUND) + if(pressure_checks&ATMOS_EXTERNAL_BOUND) pressure_delta = min(pressure_delta, (external_pressure_bound - environment_pressure)) - if(pressure_checks&INT_BOUND) + if(pressure_checks&ATMOS_INTERNAL_BOUND) pressure_delta = min(pressure_delta, (air_contents.return_pressure() - internal_pressure_bound)) if(pressure_delta > 0) @@ -129,9 +139,9 @@ else // external -> internal var/pressure_delta = 10000 - if(pressure_checks&EXT_BOUND) + if(pressure_checks&ATMOS_EXTERNAL_BOUND) pressure_delta = min(pressure_delta, (environment_pressure - external_pressure_bound)) - if(pressure_checks&INT_BOUND) + if(pressure_checks&ATMOS_INTERNAL_BOUND) pressure_delta = min(pressure_delta, (internal_pressure_bound - air_contents.return_pressure())) if(pressure_delta > 0 && environment.temperature > 0) @@ -145,42 +155,6 @@ air_contents.merge(removed) update_parents() -//Radio remote control - -/obj/machinery/atmospherics/components/unary/vent_pump/proc/set_frequency(new_frequency) - SSradio.remove_object(src, frequency) - frequency = new_frequency - if(frequency) - radio_connection = SSradio.add_object(src, frequency, radio_filter_in) - -/obj/machinery/atmospherics/components/unary/vent_pump/proc/broadcast_status() - if(!radio_connection) - return - - var/datum/signal/signal = new(list( - "tag" = id_tag, - "frequency" = frequency, - "device" = "VP", - "timestamp" = world.time, - "power" = on, - "direction" = pump_direction, - "checks" = pressure_checks, - "internal" = internal_pressure_bound, - "external" = external_pressure_bound, - "sigtype" = "status" - )) - - var/area/vent_area = get_area(src) - if(!GLOB.air_vent_names[id_tag]) - // If we do not have a name, assign one. - // Produces names like "Port Quarter Solar vent pump hZ2l6". - update_name() - GLOB.air_vent_names[id_tag] = name - - vent_area.air_vent_info[id_tag] = signal.data - - radio_connection.post_signal(src, signal, radio_filter_out) - /obj/machinery/atmospherics/components/unary/vent_pump/update_name() . = ..() if(override_naming) @@ -188,89 +162,6 @@ var/area/vent_area = get_area(src) name = "\proper [vent_area.name] [name] [id_tag]" - -/obj/machinery/atmospherics/components/unary/vent_pump/atmos_init() - //some vents work his own spesial way - radio_filter_in = frequency==FREQ_ATMOS_CONTROL?(RADIO_FROM_AIRALARM):null - radio_filter_out = frequency==FREQ_ATMOS_CONTROL?(RADIO_TO_AIRALARM):null - if(frequency) - set_frequency(frequency) - broadcast_status() - ..() - -/obj/machinery/atmospherics/components/unary/vent_pump/receive_signal(datum/signal/signal) - if(!is_operational) - return - // log_admin("DEBUG \[[world.timeofday]\]: /obj/machinery/atmospherics/components/unary/vent_pump/receive_signal([signal.debug_print()])") - if(!signal.data["tag"] || (signal.data["tag"] != id_tag) || (signal.data["sigtype"]!="command")) - return - - var/atom/signal_sender = signal.data["user"] - - if("purge" in signal.data) - pressure_checks &= ~EXT_BOUND - pump_direction = SIPHONING - investigate_log("pump direction was set to [pump_direction] by [key_name(signal_sender)]", INVESTIGATE_ATMOS) - - if("stabilize" in signal.data) - pressure_checks |= EXT_BOUND - pump_direction = RELEASING - investigate_log("pump direction was set to [pump_direction] by [key_name(signal_sender)]", INVESTIGATE_ATMOS) - - if("power" in signal.data) - on = text2num(signal.data["power"]) - - if("power_toggle" in signal.data) - on = !on - - if("checks" in signal.data) - var/old_checks = pressure_checks - pressure_checks = text2num(signal.data["checks"]) - if(pressure_checks != old_checks) - investigate_log(" pressure checks were set to [pressure_checks] by [key_name(signal_sender)]",INVESTIGATE_ATMOS) - - if("checks_toggle" in signal.data) - pressure_checks = (pressure_checks?0:NO_BOUND) - - if("direction" in signal.data) - pump_direction = text2num(signal.data["direction"]) - - if("set_internal_pressure" in signal.data) - var/old_pressure = internal_pressure_bound - internal_pressure_bound = clamp(text2num(signal.data["set_internal_pressure"]),0,ONE_ATMOSPHERE*50) - if(old_pressure != internal_pressure_bound) - investigate_log(" internal pressure was set to [internal_pressure_bound] by [key_name(signal_sender)]",INVESTIGATE_ATMOS) - - if("set_external_pressure" in signal.data) - var/old_pressure = external_pressure_bound - external_pressure_bound = clamp(text2num(signal.data["set_external_pressure"]),0,ONE_ATMOSPHERE*50) - if(old_pressure != external_pressure_bound) - investigate_log(" external pressure was set to [external_pressure_bound] by [key_name(signal_sender)]",INVESTIGATE_ATMOS) - - if("reset_external_pressure" in signal.data) - external_pressure_bound = ONE_ATMOSPHERE - - if("reset_internal_pressure" in signal.data) - internal_pressure_bound = 0 - - if("adjust_internal_pressure" in signal.data) - internal_pressure_bound = clamp(internal_pressure_bound + text2num(signal.data["adjust_internal_pressure"]),0,ONE_ATMOSPHERE*50) - - if("adjust_external_pressure" in signal.data) - external_pressure_bound = clamp(external_pressure_bound + text2num(signal.data["adjust_external_pressure"]),0,ONE_ATMOSPHERE*50) - - if("init" in signal.data) - name = signal.data["init"] - return - - if("status" in signal.data) - broadcast_status() - return // do not update_appearance - - // log_admin("DEBUG \[[world.timeofday]\]: vent_pump/receive_signal: unknown command \"[signal.data["command"]]\"\n[signal.debug_print()]") - broadcast_status() - update_appearance() - /obj/machinery/atmospherics/components/unary/vent_pump/welder_act(mob/living/user, obj/item/welder) ..() if(!welder.tool_start_check(user, amount=0)) @@ -347,8 +238,8 @@ icon_state = "vent_map_on-4" /obj/machinery/atmospherics/components/unary/vent_pump/siphon - pump_direction = SIPHONING - pressure_checks = INT_BOUND + pump_direction = ATMOS_DIRECTION_SIPHONING + pressure_checks = ATMOS_INTERNAL_BOUND internal_pressure_bound = 4000 external_pressure_bound = 0 @@ -393,8 +284,8 @@ icon_state = "map_vent_on-4" /obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon - pump_direction = SIPHONING - pressure_checks = INT_BOUND + pump_direction = ATMOS_DIRECTION_SIPHONING + pressure_checks = ATMOS_INTERNAL_BOUND internal_pressure_bound = 2000 external_pressure_bound = 0 @@ -418,9 +309,4 @@ piping_layer = 4 icon_state = "vent_map_siphon_on-4" -#undef INT_BOUND -#undef EXT_BOUND #undef NO_BOUND - -#undef SIPHONING -#undef RELEASING 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 579ad72794e..77a12cd4eeb 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm @@ -1,6 +1,3 @@ -#define SIPHONING 0 -#define SCRUBBING 1 - /obj/machinery/atmospherics/components/unary/vent_scrubber icon_state = "scrub_map-3" @@ -18,8 +15,8 @@ vent_movement = VENTCRAWL_ALLOWED | VENTCRAWL_CAN_SEE | VENTCRAWL_ENTRANCE_ALLOWED processing_flags = NONE - ///The mode of the scrubber (SCRUBBING or SIPHONING) - var/scrubbing = SCRUBBING //0 = siphoning, 1 = scrubbing + ///The mode of the scrubber (ATMOS_DIRECTION_SCRUBBING or ATMOS_DIRECTION_SIPHONING) + var/scrubbing = ATMOS_DIRECTION_SCRUBBING ///The list of gases we are filtering var/list/filter_types = list(/datum/gas/carbon_dioxide) ///Rate of the scrubber to remove gases from the air @@ -29,15 +26,6 @@ ///List of the turfs near the scrubber, used for widenet var/list/turf/adjacent_turfs = list() - ///Frequency id for connecting to the NTNet - var/frequency = FREQ_ATMOS_CONTROL - ///Reference to the radio datum - var/datum/radio_frequency/radio_connection - ///Radio connection to the air alarm - var/radio_filter_out - ///Radio connection from the air alarm - var/radio_filter_in - //Enables the use of plunger_act for ending the vent clog random event var/clogged = FALSE @@ -54,19 +42,35 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/Initialize(mapload) . = ..() + + assign_to_area() AddElement(/datum/element/atmos_sensitive, mapload) /obj/machinery/atmospherics/components/unary/vent_scrubber/Destroy() - var/area/scrub_area = get_area(src) - if(scrub_area) - scrub_area.air_scrub_info -= id_tag - GLOB.air_scrub_names -= id_tag - - SSradio.remove_object(src,frequency) - radio_connection = null + disconnect_from_area() adjacent_turfs.Cut() return ..() +/obj/machinery/atmospherics/components/unary/vent_scrubber/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change) + . = ..() + + var/area/old_area = get_area(old_loc) + var/area/new_area = get_area(src) + + if (old_area == new_area) + return + + disconnect_from_area() + assign_to_area() + +/obj/machinery/atmospherics/components/unary/vent_scrubber/proc/assign_to_area() + var/area/area = get_area(src) + area?.air_scrubbers += src + +/obj/machinery/atmospherics/components/unary/vent_scrubber/proc/disconnect_from_area() + var/area/area = get_area(src) + area?.air_scrubbers -= src + ///adds a gas or list of gases to our filter_types. used so that the scrubber can check if its supposed to be processing after each change /obj/machinery/atmospherics/components/unary/vent_scrubber/proc/add_filters(filter_or_filters) if(!islist(filter_or_filters)) @@ -115,6 +119,7 @@ check_atmos_process(our_turf, turf_gas, turf_gas.temperature) return TRUE +// WARNING: This proc takes untrusted user input from toggle_filter in air alarm's ui_act /obj/machinery/atmospherics/components/unary/vent_scrubber/proc/toggle_filters(filter_or_filters) if(!islist(filter_or_filters)) filter_or_filters = list(filter_or_filters) @@ -157,7 +162,7 @@ icon_state = "scrub_off" return - if(scrubbing & SCRUBBING) + if(scrubbing == ATMOS_DIRECTION_SCRUBBING) if(widenet) icon_state = "scrub_wide" else @@ -165,43 +170,45 @@ else //scrubbing == SIPHONING icon_state = "scrub_purge" -/obj/machinery/atmospherics/components/unary/vent_scrubber/proc/set_frequency(new_frequency) - SSradio.remove_object(src, frequency) - frequency = new_frequency - radio_connection = SSradio.add_object(src, frequency, radio_filter_in) +/obj/machinery/atmospherics/components/unary/vent_scrubber/proc/try_update_atmos_process() + var/turf/open/turf = get_turf(src) + if (!istype(turf)) + return -/obj/machinery/atmospherics/components/unary/vent_scrubber/proc/broadcast_status() - if(!radio_connection) - return FALSE + var/datum/gas_mixture/turf_gas = turf.air + if (isnull(turf_gas)) + return - var/list/f_types = list() - for(var/path in GLOB.meta_gas_info) - var/list/gas = GLOB.meta_gas_info[path] - f_types += list(list("gas_id" = gas[META_GAS_ID], "gas_name" = gas[META_GAS_NAME], "enabled" = (path in filter_types))) + check_atmos_process(turf, turf_gas, turf_gas.temperature) - var/datum/signal/signal = new(list( - "tag" = id_tag, - "frequency" = frequency, - "device" = "VS", - "timestamp" = world.time, - "power" = on, - "scrubbing" = scrubbing, - "widenet" = widenet, - "filter_types" = f_types, - "sigtype" = "status" - )) +/obj/machinery/atmospherics/components/unary/vent_scrubber/proc/update_power_usage() + idle_power_usage = initial(idle_power_usage) + active_power_usage = initial(idle_power_usage) - var/area/scrub_area = get_area(src) - if(!GLOB.air_scrub_names[id_tag]) - // If we do not have a name, assign one - update_name() - GLOB.air_scrub_names[id_tag] = name + var/new_power_usage = 0 + if(scrubbing == ATMOS_DIRECTION_SCRUBBING) + new_power_usage = idle_power_usage + idle_power_usage * length(filter_types) + update_use_power(IDLE_POWER_USE) + else + new_power_usage = active_power_usage + update_use_power(ACTIVE_POWER_USE) - scrub_area.air_scrub_info[id_tag] = signal.data + if(widenet) + new_power_usage += new_power_usage * (length(adjacent_turfs) * (length(adjacent_turfs) / 2)) - radio_connection.post_signal(src, signal, radio_filter_out) + update_mode_power_usage(scrubbing == ATMOS_DIRECTION_SCRUBBING ? IDLE_POWER_USE : ACTIVE_POWER_USE, new_power_usage) - return TRUE +/obj/machinery/atmospherics/components/unary/vent_scrubber/proc/set_scrubbing(scrubbing, mob/user) + src.scrubbing = scrubbing + investigate_log(" was toggled to [scrubbing ? "scrubbing" : "siphon"] mode by [isnull(user) ? "the game" : key_name(user)]", INVESTIGATE_ATMOS) + update_appearance(UPDATE_ICON) + try_update_atmos_process() + update_power_usage() + +/obj/machinery/atmospherics/components/unary/vent_scrubber/proc/set_widenet(widenet) + src.widenet = widenet + update_appearance(UPDATE_ICON) + update_power_usage() /obj/machinery/atmospherics/components/unary/vent_scrubber/update_name() . = ..() @@ -210,19 +217,10 @@ var/area/scrub_area = get_area(src) name = "\proper [scrub_area.name] [name] [id_tag]" -/obj/machinery/atmospherics/components/unary/vent_scrubber/atmos_init() - radio_filter_in = frequency == initial(frequency) ? RADIO_FROM_AIRALARM : null - radio_filter_out = frequency == initial(frequency) ? RADIO_TO_AIRALARM : null - if(frequency) - set_frequency(frequency) - broadcast_status() - check_turfs() - . = ..() - /obj/machinery/atmospherics/components/unary/vent_scrubber/should_atmos_process(datum/gas_mixture/air, exposed_temperature) if(welded || !is_operational) return FALSE - if(!nodes[1] || !on || (!filter_types && scrubbing != SIPHONING)) + if(!nodes[1] || !on || (!filter_types && scrubbing != ATMOS_DIRECTION_SIPHONING)) on = FALSE return FALSE @@ -231,7 +229,7 @@ if(!changed_gas) return FALSE - if(scrubbing == SIPHONING || length(filter_types & changed_gas)) + if(scrubbing == ATMOS_DIRECTION_SIPHONING || length(filter_types & changed_gas)) return TRUE return FALSE @@ -268,7 +266,7 @@ if(air_contents.return_pressure() >= 50 * ONE_ATMOSPHERE) return FALSE - if(scrubbing == SCRUBBING) + if(scrubbing == ATMOS_DIRECTION_SCRUBBING) if(length(env_gases & filter_types)) ///contains all of the gas we're sucking out of the tile, gets put into our parent pipenet var/datum/gas_mixture/filtered_out = new @@ -320,87 +318,6 @@ var/turf/local_turf = get_turf(src) adjacent_turfs = local_turf.get_atmos_adjacent_turfs(alldir = TRUE) -/obj/machinery/atmospherics/components/unary/vent_scrubber/receive_signal(datum/signal/signal) - if(!is_operational || !signal.data["tag"] || (signal.data["tag"] != id_tag) || (signal.data["sigtype"]!="command")) - return - - var/old_widenet = widenet - var/old_scrubbing = scrubbing - var/old_filter_length = length(filter_types) - - ///whether we should attempt to start processing due to settings allowing us to take gas out of our environment - var/try_start_processing = FALSE - - var/turf/open/our_turf = get_turf(src) - var/datum/gas_mixture/turf_gas = our_turf?.air - - var/atom/signal_sender = signal.data["user"] - - if("power" in signal.data) - on = text2num(signal.data["power"]) - try_start_processing = TRUE - if("power_toggle" in signal.data) - on = !on - try_start_processing = TRUE - - if("widenet" in signal.data) - widenet = text2num(signal.data["widenet"]) - if("toggle_widenet" in signal.data) - widenet = !widenet - - if("scrubbing" in signal.data) - scrubbing = text2num(signal.data["scrubbing"]) - try_start_processing = TRUE - if("toggle_scrubbing" in signal.data) - scrubbing = !scrubbing - try_start_processing = TRUE - - if(scrubbing != old_scrubbing) - investigate_log(" was toggled to [scrubbing ? "scrubbing" : "siphon"] mode by [key_name(signal_sender)]",INVESTIGATE_ATMOS) - - if("toggle_filter" in signal.data) - toggle_filters(signal.data["toggle_filter"]) - - if("set_filters" in signal.data) - filter_types = list() - add_filters(signal.data["set_filters"]) - - if("init" in signal.data) - name = signal.data["init"] - return - - if("status" in signal.data) - broadcast_status() - return //do not update_appearance - - broadcast_status() - update_appearance() - - if(!our_turf || !turf_gas) - try_start_processing = FALSE - - if(try_start_processing)//check if our changes should make us start processing - check_atmos_process(our_turf, turf_gas, turf_gas.temperature) - - if(length(filter_types) == old_filter_length && old_scrubbing == scrubbing && old_widenet == widenet) - return - - idle_power_usage = initial(idle_power_usage) - active_power_usage = initial(idle_power_usage) - - var/new_power_usage = 0 - if(scrubbing == SCRUBBING) - new_power_usage = idle_power_usage + idle_power_usage * length(filter_types) - update_use_power(IDLE_POWER_USE) - else - new_power_usage = active_power_usage - update_use_power(ACTIVE_POWER_USE) - - if(widenet) - new_power_usage += new_power_usage * (length(adjacent_turfs) * (length(adjacent_turfs) / 2)) - - update_mode_power_usage(scrubbing == SCRUBBING ? IDLE_POWER_USE : ACTIVE_POWER_USE, new_power_usage) - /obj/machinery/atmospherics/components/unary/vent_scrubber/power_change() . = ..() update_icon_nopipes() @@ -521,6 +438,3 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/disconnect() ..() on = FALSE - -#undef SIPHONING -#undef SCRUBBING diff --git a/code/modules/unit_tests/create_and_destroy.dm b/code/modules/unit_tests/create_and_destroy.dm index fe08d5c66e2..65ae56d2067 100644 --- a/code/modules/unit_tests/create_and_destroy.dm +++ b/code/modules/unit_tests/create_and_destroy.dm @@ -96,6 +96,8 @@ GLOBAL_VAR_INIT(running_create_and_destroy, FALSE) ignore += typesof(/obj/machinery/computer/holodeck) //runtimes if not paired with a landmark ignore += typesof(/obj/structure/industrial_lift) + // Runtimes if the associated machinery does not exist, but not the base type + ignore += subtypesof(/obj/machinery/airlock_controller) var/list/cached_contents = spawn_at.contents.Copy() var/original_turf_type = spawn_at.type diff --git a/tgstation.dme b/tgstation.dme index 0d7a3b1b209..a754036b494 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -217,6 +217,7 @@ #include "code\__DEFINES\xenobiology.dm" #include "code\__DEFINES\atmospherics\atmos_core.dm" #include "code\__DEFINES\atmospherics\atmos_helpers.dm" +#include "code\__DEFINES\atmospherics\atmos_machinery.dm" #include "code\__DEFINES\atmospherics\atmos_mapping_helpers.dm" #include "code\__DEFINES\atmospherics\atmos_mob_interaction.dm" #include "code\__DEFINES\atmospherics\atmos_piping.dm" @@ -1492,7 +1493,6 @@ #include "code\game\machinery\doors\airlock.dm" #include "code\game\machinery\doors\airlock_electronics.dm" #include "code\game\machinery\doors\airlock_types.dm" -#include "code\game\machinery\doors\alarmlock.dm" #include "code\game\machinery\doors\brigdoors.dm" #include "code\game\machinery\doors\door.dm" #include "code\game\machinery\doors\firedoor.dm" @@ -1503,8 +1503,6 @@ #include "code\game\machinery\doors\windowdoor.dm" #include "code\game\machinery\embedded_controller\access_controller.dm" #include "code\game\machinery\embedded_controller\airlock_controller.dm" -#include "code\game\machinery\embedded_controller\embedded_controller_base.dm" -#include "code\game\machinery\embedded_controller\simple_vent_controller.dm" #include "code\game\machinery\newscaster\newscaster_data.dm" #include "code\game\machinery\newscaster\newscaster_machine.dm" #include "code\game\machinery\newscaster\newspaper.dm" diff --git a/tgui/packages/tgui/interfaces/AirAlarm.js b/tgui/packages/tgui/interfaces/AirAlarm.js index df0f49d3f7c..9eacc01f766 100644 --- a/tgui/packages/tgui/interfaces/AirAlarm.js +++ b/tgui/packages/tgui/interfaces/AirAlarm.js @@ -190,7 +190,7 @@ const AirAlarmControlVents = (props, context) => { if (!vents || vents.length === 0) { return 'Nothing to show'; } - return vents.map((vent) => ); + return vents.map((vent) => ); }; // Scrubbers @@ -203,7 +203,7 @@ const AirAlarmControlScrubbers = (props, context) => { return 'Nothing to show'; } return scrubbers.map((scrubber) => ( - + )); }; diff --git a/tgui/packages/tgui/interfaces/common/AtmosControls.js b/tgui/packages/tgui/interfaces/common/AtmosControls.js index ffd64aa050f..68c495678e8 100644 --- a/tgui/packages/tgui/interfaces/common/AtmosControls.js +++ b/tgui/packages/tgui/interfaces/common/AtmosControls.js @@ -7,7 +7,7 @@ export const Vent = (props, context) => { const { vent } = props; const { act } = useBackend(context); const { - id_tag, + ref, long_name, power, checks, @@ -30,7 +30,7 @@ export const Vent = (props, context) => { content={power ? 'On' : 'Off'} onClick={() => act('power', { - id_tag, + ref, val: Number(!power), }) } @@ -44,7 +44,7 @@ export const Vent = (props, context) => { color={!direction && 'danger'} onClick={() => act('direction', { - id_tag, + ref, val: Number(!direction), }) } @@ -57,7 +57,7 @@ export const Vent = (props, context) => { selected={incheck} onClick={() => act('incheck', { - id_tag, + ref, val: checks, }) } @@ -68,7 +68,7 @@ export const Vent = (props, context) => { selected={excheck} onClick={() => act('excheck', { - id_tag, + ref, val: checks, }) } @@ -85,7 +85,7 @@ export const Vent = (props, context) => { maxValue={5066} onChange={(e, value) => act('set_internal_pressure', { - id_tag, + ref, value, }) } @@ -96,7 +96,7 @@ export const Vent = (props, context) => { content="Reset" onClick={() => act('reset_internal_pressure', { - id_tag, + ref, }) } /> @@ -113,7 +113,7 @@ export const Vent = (props, context) => { maxValue={5066} onChange={(e, value) => act('set_external_pressure', { - id_tag, + ref, value, }) } @@ -124,7 +124,7 @@ export const Vent = (props, context) => { content="Reset" onClick={() => act('reset_external_pressure', { - id_tag, + ref, }) } /> @@ -138,8 +138,7 @@ export const Vent = (props, context) => { export const Scrubber = (props, context) => { const { scrubber } = props; const { act } = useBackend(context); - const { long_name, power, scrubbing, id_tag, widenet, filter_types } = - scrubber; + const { long_name, power, scrubbing, ref, widenet, filter_types } = scrubber; return (
{ selected={power} onClick={() => act('power', { - id_tag, + ref, val: Number(!power), }) } @@ -165,7 +164,7 @@ export const Scrubber = (props, context) => { content={scrubbing ? 'Scrubbing' : 'Siphoning'} onClick={() => act('scrubbing', { - id_tag, + ref, val: Number(!scrubbing), }) } @@ -176,7 +175,7 @@ export const Scrubber = (props, context) => { content={widenet ? 'Expanded range' : 'Normal range'} onClick={() => act('widenet', { - id_tag, + ref, val: Number(!widenet), }) } @@ -193,7 +192,7 @@ export const Scrubber = (props, context) => { selected={filter.enabled} onClick={() => act('toggle_filter', { - id_tag, + ref, val: filter.gas_id, }) } diff --git a/tools/UpdatePaths/Scripts/71232_remove_radios.txt b/tools/UpdatePaths/Scripts/71232_remove_radios.txt new file mode 100644 index 00000000000..dc53d3bc964 --- /dev/null +++ b/tools/UpdatePaths/Scripts/71232_remove_radios.txt @@ -0,0 +1 @@ +/obj/machinery/embedded_controller/radio/airlock_controller/@SUBTYPES : /obj/machinery/airlock_controller/@SUBTYPES{@OLD}