diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 4c3741c21fb..d55f475c543 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -111,17 +111,6 @@ }, /turf/open/floor/iron/white, /area/medical/medbay/central) -"aaR" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/maintenance/port/aft) "aaS" = ( /obj/structure/sink/kitchen{ desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; @@ -4297,15 +4286,17 @@ /obj/machinery/power/apc/auto_name/north, /turf/open/floor/plating, /area/maintenance/fore) +<<<<<<< HEAD "azY" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/reagent_dispensers/plumbed, /turf/open/floor/plating{ icon_state = "platingdmg2" }, /area/maintenance/fore) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "aAf" = ( /obj/structure/cable, /obj/machinery/power/tracker, @@ -4626,14 +4617,16 @@ }, /turf/open/floor/carpet, /area/security/detectives_office) +<<<<<<< HEAD "aCz" = ( /obj/machinery/door/airlock/maintenance{ req_access_txt = "12" }, /obj/structure/cable, -/obj/machinery/duct, /turf/open/floor/plating, /area/maintenance/fore) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "aDa" = ( /turf/open/floor/plating, /area/construction/mining/aux_base) @@ -4844,6 +4837,20 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, /area/hallway/primary/fore) +"aEP" = ( +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/effect/landmark/start/hangover, +/obj/machinery/duct, +/turf/open/floor/iron/cafeteria, +/area/service/kitchen) "aET" = ( /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=1-BrigCells"; @@ -5231,6 +5238,7 @@ }, /turf/open/floor/iron, /area/security/checkpoint/supply) +<<<<<<< HEAD "aIB" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/stripes/line{ @@ -5243,9 +5251,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 8 }, -/obj/machinery/duct, /turf/open/floor/iron, /area/engineering/main) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "aIE" = ( /obj/effect/turf_decal/trimline/brown/filled/corner{ dir = 8 @@ -5396,15 +5405,17 @@ /obj/item/bedsheet, /turf/open/floor/iron, /area/security/brig) +<<<<<<< HEAD "aJl" = ( /obj/structure/disposalpipe/segment{ dir = 9 }, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, /turf/open/floor/plating, /area/maintenance/port/aft) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "aJu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 10 @@ -5536,6 +5547,16 @@ }, /turf/open/floor/plating, /area/engineering/main) +"aLe" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/landmark/start/paramedic, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/medical/treatment_center) "aLm" = ( /obj/structure/cable, /turf/open/floor/plating{ @@ -6008,6 +6029,7 @@ }, /turf/open/space, /area/space/nearstation) +<<<<<<< HEAD "aOZ" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -6016,9 +6038,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 4 }, -/obj/machinery/duct, /turf/open/floor/iron, /area/hallway/secondary/service) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "aPb" = ( /obj/machinery/portable_atmospherics/canister/nitrous_oxide, /obj/effect/turf_decal/bot, @@ -9884,6 +9907,19 @@ /obj/machinery/atmospherics/components/unary/portables_connector/visible, /turf/open/floor/iron, /area/science/mixing) +"btv" = ( +/obj/structure/cable, +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/hallway/secondary/service) "btK" = ( /obj/structure/window/reinforced{ dir = 1; @@ -10043,6 +10079,7 @@ }, /turf/open/floor/iron, /area/maintenance/starboard) +<<<<<<< HEAD "bvd" = ( /obj/structure/cable, /obj/machinery/door/airlock{ @@ -10053,9 +10090,10 @@ /obj/effect/mapping_helpers/airlock/unres{ dir = 8 }, -/obj/machinery/duct, /turf/open/floor/iron, /area/hallway/secondary/service) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "bvf" = ( /obj/item/radio/intercom{ freerange = 1; @@ -10292,6 +10330,7 @@ /obj/machinery/power/apc/auto_name/south, /turf/open/floor/plating, /area/maintenance/port) +<<<<<<< HEAD "bya" = ( /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ @@ -10306,9 +10345,10 @@ }, /obj/item/reagent_containers/glass/rag, /obj/structure/table, -/obj/machinery/duct, /turf/open/floor/iron, /area/service/bar) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "byv" = ( /obj/machinery/firealarm{ dir = 4; @@ -10907,6 +10947,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/grimy, /area/tcommsat/computer) +"bEA" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/medical/medbay/central) "bEB" = ( /obj/structure/disposalpipe/segment, /obj/machinery/navbeacon{ @@ -11376,6 +11424,25 @@ /obj/item/paper, /turf/open/floor/wood, /area/commons/dorms) +"bIu" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/hallway/secondary/service) "bIN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 1 @@ -12224,6 +12291,7 @@ }, /turf/open/floor/iron/freezer, /area/commons/toilet/restrooms) +<<<<<<< HEAD "bTa" = ( /obj/structure/cable, /obj/machinery/light/small, @@ -12234,7 +12302,6 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/machinery/duct, /turf/open/floor/iron, /area/hallway/secondary/service) "bTb" = ( @@ -12242,7 +12309,6 @@ pixel_y = -32 }, /obj/structure/cable, -/obj/machinery/duct, /turf/open/floor/plating, /area/hallway/secondary/service) "bTc" = ( @@ -12251,9 +12317,10 @@ pixel_y = 32 }, /obj/structure/cable, -/obj/machinery/duct, /turf/open/floor/iron, /area/hallway/secondary/service) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "bTe" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -12471,6 +12538,11 @@ }, /turf/open/floor/iron, /area/hallway/primary/central) +"bUf" = ( +/obj/effect/loot_site_spawner, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/port/aft) "bUo" = ( /obj/item/folder/white{ pixel_x = 4; @@ -12809,6 +12881,7 @@ /obj/structure/grille, /turf/open/floor/plating, /area/maintenance/port/aft) +<<<<<<< HEAD "bXH" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -12820,9 +12893,10 @@ name = "Kitchen Cold Room"; req_access_txt = "28" }, -/obj/machinery/duct, /turf/open/floor/iron/cafeteria, /area/service/kitchen/coldroom) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "bXJ" = ( /obj/item/storage/box/lights/mixed, /turf/open/floor/plating{ @@ -12972,6 +13046,11 @@ }, /turf/open/floor/iron/white, /area/medical/virology) +"bYE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/duct, +/turf/open/floor/iron/cafeteria, +/area/service/kitchen) "bYH" = ( /obj/structure/rack, /obj/item/stack/rods{ @@ -13560,6 +13639,10 @@ /obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, /area/maintenance/port/aft) +"cdl" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating, +/area/maintenance/port/aft) "cdm" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, @@ -14237,6 +14320,17 @@ }, /turf/open/floor/carpet, /area/command/heads_quarters/hos) +"cig" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/hallway/secondary/service) "cih" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 @@ -14335,6 +14429,14 @@ icon_state = "platingdmg1" }, /area/maintenance/starboard/secondary) +"cjq" = ( +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/medical/treatment_center) "cjs" = ( /obj/item/reagent_containers/food/drinks/drinkingglass{ pixel_x = 4; @@ -16260,6 +16362,7 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/medical/medbay/central) +<<<<<<< HEAD "cvu" = ( /obj/effect/turf_decal/tile/yellow{ dir = 8 @@ -16270,7 +16373,6 @@ /obj/effect/turf_decal/tile/yellow{ dir = 4 }, -/obj/structure/reagent_dispensers/plumbed/storage, /turf/open/floor/iron/white, /area/medical/chemistry) "cvv" = ( @@ -16283,9 +16385,10 @@ /obj/effect/turf_decal/tile/yellow{ dir = 1 }, -/obj/structure/reagent_dispensers/plumbed/storage, /turf/open/floor/iron/white, /area/medical/chemistry) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "cvA" = ( /obj/machinery/door/airlock{ id_tag = "AuxToilet2"; @@ -17147,6 +17250,22 @@ }, /turf/open/floor/iron/white, /area/medical/abandoned) +"cEL" = ( +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/item/clothing/head/that, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 8 + }, +/obj/structure/table, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/service/bar) "cEN" = ( /turf/open/floor/carpet, /area/medical/psychology) @@ -17604,6 +17723,20 @@ /obj/effect/landmark/start/paramedic, /turf/open/floor/iron/white, /area/medical/paramedic) +"cHM" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock{ + name = "Kitchen"; + req_access_txt = "28" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/iron/cafeteria, +/area/hallway/secondary/service) "cId" = ( /obj/machinery/chem_master/condimaster{ desc = "Used to separate out liquids - useful for purifying botanical extracts. Also dispenses condiments."; @@ -18754,6 +18887,7 @@ }, /turf/open/floor/iron, /area/hallway/secondary/exit/departure_lounge) +<<<<<<< HEAD "cQZ" = ( /obj/machinery/light/small{ dir = 1 @@ -18762,9 +18896,10 @@ pixel_y = 26 }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/duct, /turf/open/floor/iron/freezer, /area/commons/toilet/restrooms) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "cRa" = ( /obj/structure/sign/warning/biohazard, /turf/closed/wall, @@ -19389,6 +19524,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/hallway/primary/aft) +<<<<<<< HEAD "cYc" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 10 @@ -19403,9 +19539,10 @@ /obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/machinery/duct, /turf/open/floor/iron/cafeteria, /area/service/kitchen) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "cYd" = ( /obj/machinery/door/airlock/maintenance{ name = "Medbay Maintenance"; @@ -20104,6 +20241,15 @@ }, /turf/open/floor/iron, /area/security/prison) +"dgZ" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/maintenance/fore) "dhn" = ( /obj/structure/table, /obj/item/poster/random_contraband, @@ -20615,12 +20761,14 @@ /obj/machinery/space_heater, /turf/open/floor/plating, /area/maintenance/starboard/fore) +<<<<<<< HEAD "dnA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/duct, /turf/open/floor/iron/cafeteria, /area/service/kitchen) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "dnC" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light_switch{ @@ -20976,6 +21124,7 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/fore) +<<<<<<< HEAD "dtK" = ( /obj/machinery/door/airlock/medical/glass{ name = "Primary Treatment Centre"; @@ -20995,9 +21144,10 @@ /obj/effect/mapping_helpers/airlock/unres{ dir = 8 }, -/obj/machinery/duct, /turf/open/floor/iron/white, /area/medical/treatment_center) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "dtO" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -21106,6 +21256,14 @@ "dux" = ( /turf/closed/wall, /area/maintenance/port/aft) +"duA" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 5 + }, +/obj/effect/landmark/start/medical_doctor, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/medical/treatment_center) "duH" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -21135,6 +21293,7 @@ }, /turf/open/floor/iron, /area/command/gateway) +<<<<<<< HEAD "duX" = ( /obj/effect/turf_decal/tile/blue{ dir = 4 @@ -21145,9 +21304,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 8 }, -/obj/machinery/duct, /turf/open/floor/iron/white, /area/medical/treatment_center) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "dvh" = ( /obj/effect/turf_decal/tile/yellow{ dir = 4 @@ -21445,10 +21605,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/medical/surgery/room_b) +<<<<<<< HEAD "dyw" = ( -/obj/structure/reagent_dispensers/plumbed, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port/aft) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "dyE" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -21520,11 +21683,13 @@ /obj/machinery/space_heater, /turf/open/floor/plating, /area/maintenance/starboard/aft) +<<<<<<< HEAD "dze" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, /turf/open/floor/iron/cafeteria, /area/service/kitchen) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "dzx" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 @@ -21578,6 +21743,17 @@ }, /turf/open/floor/iron, /area/hallway/primary/port) +"dAh" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/duct, +/turf/open/floor/iron/cafeteria, +/area/service/kitchen) "dAn" = ( /obj/machinery/door/airlock/external{ req_access_txt = "13" @@ -22008,6 +22184,7 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) +<<<<<<< HEAD "dIm" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -22020,9 +22197,10 @@ dir = 1 }, /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/blue, /turf/open/floor/iron, /area/service/hydroponics) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "dIs" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 4 @@ -22256,6 +22434,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/medical/medbay/central) +"dNh" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 6 + }, +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/port/aft) "dNi" = ( /obj/effect/turf_decal/stripes/corner{ dir = 4 @@ -23447,6 +23633,23 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/commons/locker) +"ehE" = ( +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/machinery/navbeacon/wayfinding/bar, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 8 + }, +/obj/item/reagent_containers/glass/rag, +/obj/structure/table, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/service/bar) "ehQ" = ( /obj/structure/window/reinforced, /obj/structure/table, @@ -23944,13 +24147,14 @@ /turf/open/floor/iron, /area/command/teleporter) "eto" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 8 + }, +/obj/effect/turf_decal/tile/green{ dir = 4 }, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/maintenance/fore) +/turf/open/floor/iron, +/area/service/hydroponics) "eua" = ( /obj/effect/landmark/start/atmospheric_technician, /obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ @@ -23982,15 +24186,17 @@ }, /turf/open/floor/iron, /area/maintenance/starboard) +<<<<<<< HEAD "euK" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/item/cigbutt/roach, -/obj/machinery/duct, /turf/open/floor/iron, /area/maintenance/starboard) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "evl" = ( /obj/machinery/light/small{ dir = 1 @@ -24346,6 +24552,7 @@ /obj/structure/cable, /turf/open/floor/iron, /area/command/heads_quarters/rd) +<<<<<<< HEAD "ezL" = ( /obj/structure/cable, /obj/machinery/door/airlock/maintenance{ @@ -24355,9 +24562,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 4 }, -/obj/machinery/duct, /turf/open/floor/plating, /area/maintenance/port/aft) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "ezS" = ( /obj/machinery/door/airlock{ name = "Unit B" @@ -24629,15 +24837,15 @@ }, /turf/open/floor/iron/freezer, /area/commons/toilet/restrooms) +<<<<<<< HEAD "eEl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 8 }, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, /turf/open/floor/iron, /area/service/hydroponics) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "eEK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/siding, @@ -24657,6 +24865,7 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/maintenance/port) +<<<<<<< HEAD "eFm" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -24674,9 +24883,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 9 }, -/obj/machinery/duct, /turf/open/floor/iron, /area/hallway/secondary/service) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "eFu" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -24789,6 +24999,18 @@ }, /turf/open/floor/iron, /area/security/brig) +"eGO" = ( +/obj/machinery/atmospherics/components/binary/pump/on, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_switch{ + pixel_x = -26; + pixel_y = 26 + }, +/obj/machinery/duct, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/service/kitchen/coldroom) "eGP" = ( /obj/structure/table, /obj/item/storage/fancy/donut_box, @@ -24955,6 +25177,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /turf/open/floor/iron/dark, /area/security/execution/education) +"eKh" = ( +/obj/structure/reagent_dispensers/plumbed, +/turf/open/floor/plating, +/area/maintenance/port/aft) "eKq" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/medical/glass{ @@ -25709,15 +25935,17 @@ }, /turf/open/floor/grass, /area/medical/virology) +<<<<<<< HEAD "eVa" = ( /obj/machinery/door/airlock{ name = "Unisex Showers" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, /turf/open/floor/iron/freezer, /area/commons/toilet/restrooms) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "eVd" = ( /obj/effect/turf_decal/box, /obj/structure/cable, @@ -25804,6 +26032,16 @@ "eWd" = ( /turf/closed/wall, /area/science/lab) +"eWl" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/structure/cable, +/obj/structure/reagent_dispensers/plumbed{ + dir = 8 + }, +/turf/open/floor/iron, +/area/engineering/main) "eWu" = ( /obj/structure/toilet/greyscale{ dir = 4 @@ -25858,6 +26096,14 @@ /obj/structure/cable, /turf/open/floor/iron, /area/engineering/break_room) +"eXp" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/engineering/main) "eXI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 4 @@ -26644,6 +26890,28 @@ /obj/structure/railing, /turf/open/space/basic, /area/space/nearstation) +"flj" = ( +/obj/machinery/door/airlock/medical/glass{ + name = "Primary Treatment Centre"; + req_access_txt = "5" + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 + }, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/medical/treatment_center) "flv" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced{ @@ -27114,13 +27382,6 @@ icon_state = "platingdmg1" }, /area/maintenance/aft) -"fsw" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/medical/treatment_center) "fsy" = ( /obj/effect/turf_decal/delivery, /obj/machinery/door/window/northleft{ @@ -27136,6 +27397,12 @@ }, /turf/open/floor/iron, /area/science/xenobiology) +"fsB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/cafeteria, +/area/service/kitchen) "fsL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 5 @@ -27680,6 +27947,17 @@ }, /turf/open/floor/iron, /area/security/prison) +"fBU" = ( +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/maintenance/port/aft) "fCe" = ( /obj/machinery/door/airlock/security{ name = "Court Cell"; @@ -29012,6 +29290,26 @@ }, /turf/open/floor/wood, /area/service/library) +"gco" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 9 + }, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/hallway/secondary/service) "gcq" = ( /obj/effect/turf_decal/trimline/blue/corner{ dir = 4 @@ -29066,6 +29364,23 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/circuit/green, /area/science/nanite) +"gdL" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/brown/warning{ + dir = 10 + }, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/structure/closet/secure_closet/freezer/fridge, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/iron/cafeteria, +/area/service/kitchen) "gdY" = ( /obj/machinery/photocopier{ pixel_y = 3 @@ -29352,6 +29667,13 @@ }, /turf/open/floor/iron, /area/engineering/atmos) +"gjr" = ( +/obj/effect/landmark/xeno_spawn, +/obj/item/bikehorn/rubberducky, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/commons/toilet/restrooms) "gju" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -30323,6 +30645,7 @@ }, /turf/open/floor/iron/white, /area/science/nanite) +<<<<<<< HEAD "gAM" = ( /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/blue{ @@ -30332,9 +30655,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 1 }, -/obj/machinery/duct, /turf/open/floor/iron/white, /area/medical/treatment_center) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "gAP" = ( /obj/structure/sign/departments/cargo, /turf/closed/wall, @@ -31709,6 +32033,13 @@ icon_state = "panelscorched" }, /area/maintenance/starboard/aft) +"haF" = ( +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/medical/treatment_center) "haG" = ( /obj/effect/turf_decal/tile/purple, /obj/effect/turf_decal/tile/purple{ @@ -31770,6 +32101,27 @@ /obj/machinery/newscaster/security_unit, /turf/closed/wall, /area/security/office) +"hbg" = ( +/obj/machinery/button/door{ + id = "kitchen_counter"; + name = "Counter Shutters Control"; + pixel_x = 26; + pixel_y = 24; + req_access_txt = "28" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/effect/landmark/start/cook, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/iron/cafeteria, +/area/service/kitchen) "hbB" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -32657,6 +33009,19 @@ }, /turf/open/space, /area/space/nearstation) +"hqf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/commons/toilet/restrooms) +"hqj" = ( +/obj/structure/urinal{ + pixel_y = 29 + }, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/commons/toilet/restrooms) "hql" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/westleft{ @@ -32680,6 +33045,21 @@ }, /turf/open/floor/iron/showroomfloor, /area/security/warden) +"hqm" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron, +/area/service/hydroponics) "hqo" = ( /obj/machinery/disposal/delivery_chute{ dir = 1; @@ -32791,14 +33171,16 @@ }, /turf/open/floor/iron/dark, /area/science/server) +<<<<<<< HEAD "hrT" = ( /obj/structure/urinal{ pixel_y = 29 }, /obj/structure/cable, -/obj/machinery/duct, /turf/open/floor/iron/freezer, /area/commons/toilet/restrooms) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "hrY" = ( /obj/structure/chair/office, /turf/open/floor/iron, @@ -33150,6 +33532,21 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"hzD" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = -24 + }, +/obj/machinery/camera{ + c_tag = "Restrooms"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 6 + }, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/commons/toilet/restrooms) "hzG" = ( /obj/machinery/light/small{ dir = 8 @@ -33477,6 +33874,7 @@ }, /turf/open/floor/plating, /area/maintenance/central) +<<<<<<< HEAD "hGt" = ( /obj/machinery/atmospherics/components/binary/pump/on, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -33486,9 +33884,10 @@ pixel_x = -26; pixel_y = 26 }, -/obj/machinery/duct, /turf/open/floor/iron/kitchen_coldroom/freezerfloor, /area/service/kitchen/coldroom) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "hGB" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/spawner/lootdrop/maintenance/three, @@ -33606,6 +34005,16 @@ }, /turf/open/floor/iron/white, /area/medical/virology) +"hHN" = ( +/obj/structure/sign/poster/random{ + pixel_x = 32 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/reagent_dispensers/plumbed{ + dir = 8 + }, +/turf/open/floor/iron, +/area/maintenance/starboard) "hHO" = ( /obj/structure/railing{ dir = 1 @@ -34097,6 +34506,19 @@ /obj/structure/cable, /turf/open/floor/plating, /area/maintenance/starboard/secondary) +"hQh" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 8 + }, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/medical/treatment_center) "hQu" = ( /obj/structure/chair{ dir = 8 @@ -35909,12 +36331,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, /turf/open/floor/iron/white, /area/medical/cryo) +<<<<<<< HEAD "iyC" = ( /obj/effect/turf_decal/tile/blue, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, /turf/open/floor/iron/white, /area/medical/treatment_center) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "iyL" = ( /obj/machinery/atmospherics/pipe/bridge_pipe/dark/visible{ dir = 4 @@ -36121,6 +36545,21 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/maintenance/port/aft) +"iCr" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 5 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/hallway/secondary/service) "iCB" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/carpet, @@ -36481,20 +36920,40 @@ }, /turf/open/floor/iron, /area/science/lab) +"iKq" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_switch{ + pixel_x = -26; + pixel_y = -26 + }, +/obj/machinery/duct, +/turf/open/floor/iron/cafeteria, +/area/service/kitchen) "iKv" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/north, /turf/open/floor/carpet, /area/command/heads_quarters/hop) +<<<<<<< HEAD "iKw" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 4 }, -/obj/machinery/duct, /turf/open/floor/plating, /area/maintenance/fore) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "iKy" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/structure/cable, @@ -36609,6 +37068,12 @@ /obj/effect/landmark/start/geneticist, /turf/open/floor/iron/dark, /area/science/genetics) +"iMh" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/commons/toilet/restrooms) "iMl" = ( /obj/structure/closet/l3closet/scientist, /obj/effect/turf_decal/bot{ @@ -37156,6 +37621,7 @@ /obj/machinery/atmospherics/pipe/layer_manifold/cyan/visible, /turf/open/floor/iron/dark, /area/engineering/atmos) +<<<<<<< HEAD "iWa" = ( /obj/machinery/button/door{ id = "kitchen_counter"; @@ -37174,9 +37640,10 @@ /obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/machinery/duct, /turf/open/floor/iron/cafeteria, /area/service/kitchen) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "iWd" = ( /obj/machinery/door/firedoor, /obj/machinery/button/door{ @@ -37654,13 +38121,15 @@ }, /turf/open/floor/iron, /area/commons/vacant_room/commissary) +<<<<<<< HEAD "jgt" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, /turf/open/floor/iron/cafeteria, /area/service/kitchen) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "jgz" = ( /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ @@ -38671,16 +39140,22 @@ "jxI" = ( /turf/open/floor/engine/vacuum, /area/engineering/atmos) -"jxK" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 +"jxU" = ( +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 1 }, -/obj/machinery/duct, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 10 + }, +<<<<<<< HEAD /turf/open/floor/iron, /area/hallway/secondary/service) +======= +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/medical/treatment_center) +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "jxX" = ( /obj/structure/cable, /obj/effect/landmark/xeno_spawn, @@ -38869,14 +39344,16 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron, /area/service/hydroponics/garden) +<<<<<<< HEAD "jBz" = ( /obj/effect/turf_decal/trimline/blue/filled/corner{ dir = 4 }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/duct, /turf/open/floor/iron/white, /area/medical/treatment_center) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "jBB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/decal/cleanable/oil, @@ -38979,6 +39456,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/security/office) +<<<<<<< HEAD "jDK" = ( /obj/machinery/light_switch{ pixel_x = -26 @@ -38987,9 +39465,10 @@ dir = 1 }, /obj/effect/landmark/start/hangover, -/obj/machinery/duct, /turf/open/floor/iron/freezer, /area/commons/toilet/restrooms) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "jEp" = ( /turf/open/floor/plating{ icon_state = "platingdmg1" @@ -39032,6 +39511,7 @@ }, /turf/open/floor/iron, /area/commons/toilet/auxiliary) +<<<<<<< HEAD "jFf" = ( /obj/structure/disposalpipe/segment, /obj/machinery/button/door{ @@ -39053,9 +39533,10 @@ pixel_x = -34; pixel_y = -23 }, -/obj/machinery/duct, /turf/open/floor/iron/cafeteria, /area/service/kitchen) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "jFh" = ( /obj/structure/window/reinforced{ dir = 8 @@ -40244,6 +40725,12 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/maintenance/port/aft) +"jYM" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/maintenance/starboard) "jZd" = ( /obj/effect/turf_decal/trimline/blue/corner{ dir = 1 @@ -40268,6 +40755,15 @@ }, /turf/open/floor/iron/white, /area/science/research) +"jZt" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/item/cigbutt/roach, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/maintenance/starboard) "jZv" = ( /obj/machinery/button/crematorium{ id = "crematoriumChapel"; @@ -41032,6 +41528,15 @@ /obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/ai_monitored/command/storage/eva) +"kpt" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/maintenance/port/aft) "kqd" = ( /obj/structure/table/wood, /obj/item/book/manual/wiki/security_space_law, @@ -42684,6 +43189,22 @@ }, /turf/open/floor/iron/white/corner, /area/hallway/primary/central) +"kTR" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/hangover, +/obj/machinery/duct, +/turf/open/floor/iron/cafeteria, +/area/service/kitchen) "kTW" = ( /turf/closed/wall/r_wall, /area/engineering/storage/tcomms) @@ -43238,14 +43759,16 @@ "ldP" = ( /turf/closed/wall/r_wall, /area/ai_monitored/command/storage/satellite) +<<<<<<< HEAD "ldZ" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 5 }, /obj/effect/landmark/start/medical_doctor, -/obj/machinery/duct, /turf/open/floor/iron/white, /area/medical/treatment_center) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "lej" = ( /obj/machinery/light/small{ dir = 4 @@ -43678,6 +44201,15 @@ }, /turf/open/floor/iron/white, /area/medical/medbay/central) +"lks" = ( +/obj/machinery/door/airlock{ + name = "Unisex Showers" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/commons/toilet/restrooms) "llc" = ( /obj/machinery/vending/hydroseeds{ slogan_delay = 700 @@ -44234,6 +44766,7 @@ }, /turf/open/floor/iron/dark, /area/command/bridge) +<<<<<<< HEAD "lvC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 1 @@ -44248,9 +44781,10 @@ /obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/machinery/duct, /turf/open/floor/iron/cafeteria, /area/service/kitchen) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "lvJ" = ( /obj/structure/window/reinforced/tinted{ dir = 1 @@ -45439,6 +45973,19 @@ }, /turf/open/floor/iron, /area/science/xenobiology) +"lOZ" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/structure/reagent_dispensers/plumbed/storage, +/turf/open/floor/iron/white, +/area/medical/chemistry) "lPb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/closed/wall, @@ -45672,12 +46219,14 @@ }, /turf/open/floor/iron, /area/hallway/primary/aft) +<<<<<<< HEAD "lUo" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, /turf/open/floor/iron/freezer, /area/commons/toilet/restrooms) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "lUv" = ( /obj/item/storage/book/bible, /obj/structure/altar_of_gods, @@ -46606,6 +47155,7 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/plating, /area/commons/toilet/auxiliary) +<<<<<<< HEAD "mkr" = ( /obj/effect/turf_decal/tile/blue{ dir = 4 @@ -46624,9 +47174,10 @@ req_access_txt = "5" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, /turf/open/floor/iron/white, /area/medical/treatment_center) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "mkw" = ( /obj/structure/rack, /obj/item/storage/briefcase{ @@ -46661,6 +47212,18 @@ }, /turf/open/floor/carpet, /area/commons/vacant_room/office) +"mlo" = ( +/obj/structure/cable, +/obj/machinery/door/airlock/maintenance{ + name = "Medbay Maintenance"; + req_access_txt = "5" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/maintenance/port/aft) "mlB" = ( /obj/effect/turf_decal/tile/yellow{ dir = 4 @@ -46708,11 +47271,13 @@ }, /turf/open/floor/plating, /area/service/chapel/main) +<<<<<<< HEAD "mma" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, /turf/open/floor/iron/freezer, /area/commons/toilet/restrooms) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "mmb" = ( /obj/structure/fluff/broken_flooring{ icon_state = "singular" @@ -47142,6 +47707,18 @@ }, /turf/open/floor/iron, /area/engineering/atmos) +"mtZ" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 1 + }, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/medical/treatment_center) "mum" = ( /obj/machinery/rnd/production/techfab/department/service, /obj/effect/turf_decal/trimline/brown/warning{ @@ -47306,6 +47883,21 @@ /obj/machinery/holopad, /turf/open/floor/iron, /area/service/hydroponics) +"mwA" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/hallway/secondary/service) "mxO" = ( /obj/structure/table, /obj/item/food/grown/wheat, @@ -47724,6 +48316,21 @@ }, /turf/open/floor/iron, /area/cargo/sorting) +"mFR" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/reagent_dispensers/plumbed, +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/maintenance/fore) +"mGe" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/commons/toilet/restrooms) "mGl" = ( /obj/effect/turf_decal/tile/red{ dir = 8 @@ -47778,6 +48385,20 @@ }, /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) +"mHq" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/bridge_pipe/scrubbers/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden, +/obj/machinery/door/airlock{ + name = "Kitchen Cold Room"; + req_access_txt = "28" + }, +/obj/machinery/duct, +/turf/open/floor/iron/cafeteria, +/area/service/kitchen/coldroom) "mHw" = ( /obj/structure/chair/comfy/black{ dir = 8 @@ -47790,6 +48411,14 @@ dir = 4 }, /area/service/chapel/main) +"mHI" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/maintenance/fore) "mId" = ( /obj/machinery/door/airlock/medical/glass{ name = "Primary Treatment Centre"; @@ -48037,6 +48666,7 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/cargo/sorting) +<<<<<<< HEAD "mLL" = ( /obj/machinery/firealarm{ dir = 4; @@ -48049,9 +48679,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 6 }, -/obj/machinery/duct, /turf/open/floor/iron/freezer, /area/commons/toilet/restrooms) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "mLO" = ( /obj/effect/landmark/event_spawn, /obj/structure/disposalpipe/segment, @@ -48337,14 +48968,16 @@ }, /turf/open/floor/wood, /area/service/lawoffice) +<<<<<<< HEAD "mQO" = ( /obj/structure/urinal{ pixel_y = 29 }, /obj/effect/landmark/start/hangover, -/obj/machinery/duct, /turf/open/floor/iron/freezer, /area/commons/toilet/restrooms) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "mQQ" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/effect/turf_decal/siding/green{ @@ -48779,6 +49412,19 @@ }, /turf/open/floor/iron, /area/engineering/break_room) +"mXn" = ( +/obj/structure/cable, +/obj/machinery/door/airlock{ + name = "Service Hall"; + req_one_access_txt = "25;26;35;28;22;37;46;38;70" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 + }, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/hallway/secondary/service) "mXJ" = ( /obj/structure/chair{ dir = 4 @@ -49042,6 +49688,10 @@ }, /turf/open/floor/iron, /area/commons/dorms) +"ncP" = ( +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/commons/toilet/restrooms) "ndf" = ( /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ @@ -49054,6 +49704,7 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/service/bar) +<<<<<<< HEAD "ndn" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -49066,9 +49717,10 @@ /obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/machinery/duct, /turf/open/floor/iron, /area/hallway/secondary/service) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "ndq" = ( /obj/machinery/door/firedoor, /obj/structure/sign/poster/official/random{ @@ -49406,6 +50058,15 @@ }, /turf/open/floor/iron/dark/telecomms, /area/science/server) +"nhu" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/maintenance/starboard) "nhv" = ( /obj/structure/table, /obj/item/storage/box/donkpockets{ @@ -49517,6 +50178,15 @@ }, /turf/open/floor/iron, /area/engineering/main) +"nje" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/random{ + pixel_y = 32 + }, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/hallway/secondary/service) "njk" = ( /obj/structure/chair/comfy/black{ dir = 4 @@ -50215,6 +50885,13 @@ }, /turf/open/floor/iron/white, /area/hallway/primary/central) +"nwr" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/duct, +/turf/open/floor/iron/cafeteria, +/area/service/kitchen) "nwv" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -50539,6 +51216,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/maintenance/port/fore) +"nCO" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 9 + }, +/obj/effect/landmark/start/medical_doctor, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/medical/treatment_center) "nCP" = ( /obj/machinery/door/window/westright{ dir = 1; @@ -51754,6 +52439,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/hallway/primary/starboard) +"nVS" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating, +/area/maintenance/port/aft) "nVU" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -52152,13 +52843,15 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/engineering/main) +<<<<<<< HEAD "odg" = ( /obj/effect/landmark/xeno_spawn, /obj/item/bikehorn/rubberducky, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, /turf/open/floor/iron/freezer, /area/commons/toilet/restrooms) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "odw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 8 @@ -52373,11 +53066,6 @@ icon_state = "platingdmg2" }, /area/maintenance/starboard/fore) -"ogV" = ( -/obj/effect/loot_site_spawner, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/port/aft) "ohh" = ( /obj/item/flashlight/lantern{ pixel_y = 7 @@ -52628,15 +53316,17 @@ }, /turf/open/floor/iron/white, /area/science/research) +<<<<<<< HEAD "omL" = ( /obj/effect/turf_decal/tile/blue{ dir = 8 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, /turf/open/floor/iron/white, /area/medical/treatment_center) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "omN" = ( /obj/machinery/light/small{ dir = 8 @@ -52776,6 +53466,7 @@ }, /turf/open/floor/iron, /area/security/range) +<<<<<<< HEAD "ope" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -52788,9 +53479,10 @@ dir = 8 }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, /turf/open/floor/iron, /area/hallway/secondary/service) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "opp" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -52844,6 +53536,10 @@ }, /turf/open/floor/iron/dark, /area/service/cafeteria) +"opQ" = ( +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/turf/open/floor/engine/n2o, +/area/engineering/atmos) "oqa" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -52921,15 +53617,17 @@ }, /turf/open/floor/iron/white, /area/hallway/primary/central) +<<<<<<< HEAD "ori" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ dir = 6 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, /turf/open/floor/iron/cafeteria, /area/service/kitchen) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "orl" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -53070,6 +53768,7 @@ /obj/item/reagent_containers/food/drinks/bottle/goldschlager, /turf/open/space/basic, /area/space/nearstation) +<<<<<<< HEAD "ouO" = ( /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ @@ -53083,9 +53782,10 @@ dir = 8 }, /obj/structure/table, -/obj/machinery/duct, /turf/open/floor/iron, /area/service/bar) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "ouU" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -53231,6 +53931,7 @@ /obj/structure/lattice/catwalk, /turf/open/space/basic, /area/solars/starboard/aft) +<<<<<<< HEAD "ows" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -53244,9 +53945,10 @@ dir = 1; pixel_y = -32 }, -/obj/machinery/duct, /turf/open/floor/iron, /area/hallway/secondary/service) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "owN" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -54766,12 +55468,14 @@ dir = 1 }, /area/medical/break_room) +<<<<<<< HEAD "oUE" = ( /obj/structure/cable, /obj/effect/landmark/start/hangover, -/obj/machinery/duct, /turf/open/floor/iron/freezer, /area/commons/toilet/restrooms) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "oUF" = ( /obj/structure/sign/map/left{ desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; @@ -55358,16 +56062,25 @@ }, /turf/open/floor/carpet, /area/service/theater) +<<<<<<< HEAD "pcT" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/random{ pixel_x = 32 }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/reagent_dispensers/plumbed{ - dir = 8 +/obj/structure/cable, +/obj/item/cigbutt{ + pixel_x = -7; + pixel_y = 12 + }, +/obj/structure/chair/stool, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, /turf/open/floor/iron, /area/maintenance/starboard) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "pdh" = ( /obj/structure/chair{ dir = 1 @@ -55710,6 +56423,17 @@ }, /turf/open/floor/iron/dark, /area/command/teleporter) +"piL" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/airalarm{ + pixel_y = 26 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/commons/toilet/restrooms) "piN" = ( /obj/effect/spawner/lootdrop/maintenance, /obj/structure/cable, @@ -55847,12 +56571,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, /turf/open/floor/iron/dark, /area/engineering/supermatter/room) +<<<<<<< HEAD "pmn" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, /turf/open/floor/iron, /area/maintenance/starboard) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "pmN" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -56552,6 +57278,11 @@ /obj/machinery/iv_drip, /turf/open/floor/iron/white, /area/medical/treatment_center) +"pxg" = ( +/obj/effect/landmark/start/cook, +/obj/machinery/duct, +/turf/open/floor/iron/cafeteria, +/area/service/kitchen) "pxj" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -56875,6 +57606,18 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/service/hydroponics) +"pCE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 10 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/hallway/secondary/service) "pCG" = ( /obj/structure/sign/map/right{ desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; @@ -56925,6 +57668,14 @@ dir = 1 }, /area/service/chapel/main) +"pEn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/reagent_dispensers/plumbed, +/turf/open/floor/iron, +/area/service/hydroponics) "pEu" = ( /obj/structure/table/wood, /obj/item/toy/prize/honk{ @@ -57005,6 +57756,13 @@ }, /turf/open/floor/iron/dark, /area/security/office) +"pGd" = ( +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 1 + }, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/medical/treatment_center) "pGf" = ( /obj/structure/cable, /turf/open/floor/wood{ @@ -57101,6 +57859,17 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/hallway/primary/central) +"pJo" = ( +/obj/machinery/light_switch{ + pixel_x = -26 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/effect/landmark/start/hangover, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/commons/toilet/restrooms) "pJq" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -57404,14 +58173,6 @@ /obj/machinery/vending/wardrobe/chap_wardrobe, /turf/open/floor/iron/grimy, /area/service/chapel/office) -"pOL" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/medical/medbay/central) "pOT" = ( /obj/machinery/airlock_sensor/incinerator_toxmix{ pixel_x = -24 @@ -58335,6 +59096,7 @@ /obj/machinery/power/emitter, /turf/open/floor/plating, /area/engineering/main) +<<<<<<< HEAD "qgB" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/bar{ @@ -58348,9 +59110,10 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/start/hangover, -/obj/machinery/duct, /turf/open/floor/iron/cafeteria, /area/service/kitchen) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "qgI" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/blue, @@ -58515,12 +59278,15 @@ /obj/structure/cable, /turf/open/floor/carpet, /area/service/chapel/main) +<<<<<<< HEAD "qiy" = ( +/obj/structure/grille, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, /area/maintenance/port/aft) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "qiB" = ( /obj/machinery/camera{ c_tag = "Aft Primary Hallway - Fore"; @@ -59051,6 +59817,16 @@ /obj/item/cartridge/lawyer, /turf/open/floor/wood, /area/service/lawoffice) +"qtc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/hallway/secondary/service) "qti" = ( /obj/item/storage/box/lights/mixed, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -59874,6 +60650,7 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron, /area/cargo/sorting) +<<<<<<< HEAD "qFc" = ( /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/blue{ @@ -59881,9 +60658,10 @@ }, /obj/effect/landmark/start/paramedic, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, /turf/open/floor/iron/white, /area/medical/treatment_center) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "qFd" = ( /obj/structure/table, /obj/item/folder/red{ @@ -61937,10 +62715,12 @@ }, /turf/open/floor/iron, /area/hallway/primary/port) +<<<<<<< HEAD "rmw" = ( -/obj/machinery/duct, /turf/open/floor/iron/freezer, /area/commons/toilet/restrooms) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "rmx" = ( /obj/structure/table/wood, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -62625,6 +63405,22 @@ /obj/item/electropack, /turf/open/floor/engine, /area/science/xenobiology) +"rvD" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 6 + }, +/obj/item/cigbutt{ + pixel_y = 7 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/maintenance/starboard) "rwl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible{ dir = 8 @@ -62926,6 +63722,15 @@ "rAF" = ( /turf/closed/wall/r_wall, /area/medical/chemistry) +"rAU" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/iron/cafeteria, +/area/service/kitchen) "rAV" = ( /turf/open/floor/iron/dark, /area/service/chapel/main) @@ -63023,15 +63828,17 @@ }, /turf/open/floor/iron/dark, /area/science/robotics/lab) +<<<<<<< HEAD "rBS" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, /turf/open/floor/iron/white, /area/medical/medbay/central) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "rCr" = ( /obj/machinery/light, /obj/effect/turf_decal/tile/red{ @@ -63116,6 +63923,7 @@ }, /turf/open/floor/iron, /area/engineering/main) +<<<<<<< HEAD "rEt" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -63125,9 +63933,10 @@ /obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/machinery/duct, /turf/open/floor/iron, /area/hallway/secondary/service) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "rEC" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -63261,6 +64070,16 @@ }, /turf/open/floor/iron/white, /area/security/prison) +"rIg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/item/cigbutt{ + pixel_x = -6; + pixel_y = -4 + }, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/maintenance/starboard) "rIv" = ( /obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden{ dir = 4 @@ -63430,6 +64249,22 @@ initial_gas_mix = "TEMP=2.7" }, /area/space/nearstation) +"rLx" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/bounty_board{ + dir = 1; + pixel_y = -32 + }, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/hallway/secondary/service) "rLz" = ( /obj/structure/window/reinforced{ dir = 8 @@ -63530,6 +64365,7 @@ /obj/structure/lattice/catwalk, /turf/open/space/basic, /area/space/nearstation) +<<<<<<< HEAD "rNg" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -63538,9 +64374,10 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, /turf/open/floor/iron/cafeteria, /area/service/kitchen) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "rNi" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -64155,13 +64992,15 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/science/research) +<<<<<<< HEAD "rUY" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/obj/machinery/duct, /turf/open/floor/iron/cafeteria, /area/service/kitchen) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "rVa" = ( /obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ dir = 4 @@ -64182,6 +65021,20 @@ }, /turf/open/floor/iron/dark, /area/science/robotics/lab) +"rVh" = ( +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 6 + }, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/service/bar) "rVj" = ( /obj/machinery/light{ dir = 8 @@ -64339,6 +65192,7 @@ /obj/effect/turf_decal/siding, /turf/open/floor/iron, /area/science/lab) +<<<<<<< HEAD "rXD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -64354,9 +65208,10 @@ pixel_x = -26; pixel_y = -26 }, -/obj/machinery/duct, /turf/open/floor/iron/cafeteria, /area/service/kitchen) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "rXN" = ( /obj/machinery/rnd/production/protolathe/department/science, /obj/machinery/light, @@ -64444,6 +65299,20 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) +"san" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/hallway/secondary/service) "sar" = ( /obj/structure/cable, /turf/open/floor/plating{ @@ -64851,13 +65720,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/medical/patients_rooms) +<<<<<<< HEAD "sgy" = ( /obj/effect/turf_decal/trimline/blue/filled/warning{ dir = 4 }, -/obj/machinery/duct, /turf/open/floor/iron/white, /area/medical/treatment_center) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "sgX" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -65596,6 +66467,7 @@ }, /turf/open/floor/iron, /area/engineering/atmos) +<<<<<<< HEAD "sry" = ( /obj/effect/turf_decal/tile/bar{ dir = 1 @@ -65607,9 +66479,10 @@ dir = 4 }, /obj/effect/landmark/start/hangover, -/obj/machinery/duct, /turf/open/floor/iron/cafeteria, /area/service/kitchen) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "srI" = ( /obj/item/retractor, /obj/item/hemostat{ @@ -66528,6 +67401,7 @@ }, /turf/open/floor/iron/white, /area/science/cytology) +<<<<<<< HEAD "sHL" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock{ @@ -66539,9 +67413,10 @@ /obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, /turf/open/floor/iron/cafeteria, /area/hallway/secondary/service) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "sIe" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ @@ -67432,6 +68307,7 @@ /obj/effect/landmark/start/hangover/closet, /turf/open/floor/iron/dark, /area/commons/fitness/recreation) +<<<<<<< HEAD "sXM" = ( /obj/structure/cable, /obj/effect/turf_decal/stripes/line{ @@ -67440,9 +68316,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 4 }, -/obj/machinery/duct, /turf/open/floor/plating, /area/maintenance/port/aft) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "sXP" = ( /obj/effect/turf_decal/bot, /obj/machinery/light/small{ @@ -67941,7 +68818,11 @@ }, /turf/open/floor/iron/dark, /area/commons/fitness/recreation) +<<<<<<< HEAD "tfD" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, /obj/structure/reagent_dispensers/watertank/high, /obj/item/reagent_containers/glass/bucket, /obj/effect/turf_decal/stripes/line, @@ -67950,6 +68831,8 @@ }, /turf/open/floor/iron, /area/service/hydroponics) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "tfK" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -68097,6 +68980,15 @@ }, /turf/open/floor/iron/airless/solarpanel, /area/solars/port/aft) +"tid" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/medical/medbay/central) "tig" = ( /obj/machinery/door/window/northleft{ dir = 8; @@ -68642,6 +69534,16 @@ }, /turf/open/floor/iron, /area/science/xenobiology) +"trj" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/hallway/secondary/service) "tru" = ( /obj/machinery/computer/warrant{ dir = 1 @@ -69358,6 +70260,17 @@ /obj/effect/turf_decal/siding/yellow, /turf/open/floor/iron, /area/hallway/primary/starboard) +"tFj" = ( +/obj/item/trash/candy, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron, +/area/maintenance/starboard) "tFm" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/yellow{ @@ -69728,6 +70641,13 @@ /obj/structure/cable, /turf/open/floor/wood, /area/command/heads_quarters/hos) +"tKW" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/machinery/duct, +/turf/open/floor/iron/cafeteria, +/area/service/kitchen) "tKZ" = ( /obj/machinery/chem_master/condimaster{ name = "CondiMaster Neo" @@ -69896,6 +70816,14 @@ /obj/structure/closet/secure_closet/personal/patient, /turf/open/floor/iron/white, /area/medical/patients_rooms) +"tNX" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/maintenance/fore) "tNZ" = ( /obj/item/storage/fancy/candle_box{ pixel_y = 5 @@ -71308,13 +72236,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/hallway/primary/starboard) -"ulQ" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/medical/treatment_center) "uml" = ( /obj/structure/chair, /obj/effect/landmark/start/assistant, @@ -71648,6 +72569,12 @@ }, /turf/open/floor/iron/dark, /area/science/mixing) +"uqv" = ( +/obj/structure/cable, +/obj/effect/landmark/start/hangover, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/commons/toilet/restrooms) "uqB" = ( /obj/effect/landmark/xeno_spawn, /obj/item/soap/deluxe, @@ -71687,6 +72614,17 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron, /area/construction/storage_wing) +"urg" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/maintenance/port/aft) "uro" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 4 @@ -71987,15 +72925,17 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/science/research) +<<<<<<< HEAD "uvE" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, /turf/open/floor/iron, /area/maintenance/starboard) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "uvH" = ( /obj/machinery/airalarm{ dir = 4; @@ -72799,14 +73739,6 @@ /obj/machinery/power/apc/auto_name/west, /turf/open/floor/iron/kitchen_coldroom/freezerfloor, /area/medical/coldroom) -"uLs" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ - dir = 6 - }, -/obj/structure/grille, -/turf/open/floor/plating, -/area/maintenance/port/aft) "uLC" = ( /obj/structure/window/reinforced{ dir = 4 @@ -73243,6 +74175,7 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron, /area/construction/storage_wing) +<<<<<<< HEAD "uTJ" = ( /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ @@ -73254,9 +74187,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 6 }, -/obj/machinery/duct, /turf/open/floor/iron, /area/service/bar) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "uTM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood, @@ -73418,6 +74352,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai) +"uVa" = ( +/obj/structure/sign/poster/random{ + pixel_y = -32 + }, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/hallway/secondary/service) "uVD" = ( /obj/structure/table/wood, /obj/item/paper_bin{ @@ -73588,14 +74530,16 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron, /area/engineering/main) +<<<<<<< HEAD "uYA" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 9 }, /obj/effect/landmark/start/medical_doctor, -/obj/machinery/duct, /turf/open/floor/iron/white, /area/medical/treatment_center) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "uYE" = ( /obj/effect/turf_decal/tile/yellow{ dir = 8 @@ -73675,14 +74619,16 @@ /obj/structure/cable, /turf/open/floor/iron, /area/cargo/warehouse) +<<<<<<< HEAD "uZm" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/stripes/line, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, /turf/open/floor/iron, /area/engineering/main) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "uZn" = ( /obj/effect/turf_decal/delivery, /obj/machinery/firealarm{ @@ -73757,12 +74703,6 @@ /obj/machinery/nanite_chamber, /turf/open/floor/circuit/green, /area/science/nanite) -"vaC" = ( -/obj/machinery/portable_atmospherics/canister/nitrous_oxide{ - valve_open = 1 - }, -/turf/open/floor/engine/n2o, -/area/engineering/atmos) "vaD" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -73840,14 +74780,24 @@ }, /turf/open/floor/engine, /area/engineering/supermatter/room) +<<<<<<< HEAD "vbD" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/window/reinforced{ - dir = 8 +/obj/effect/turf_decal/bot, +/obj/structure/sink{ + pixel_y = 22 }, -/obj/structure/reagent_dispensers/plumbed, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, /turf/open/floor/iron, /area/service/hydroponics) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "vct" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, @@ -74706,6 +75656,12 @@ }, /turf/open/floor/iron/white, /area/security/brig) +"vsw" = ( +/obj/effect/turf_decal/tile/blue, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/medical/treatment_center) "vsE" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -74781,6 +75737,23 @@ }, /turf/open/floor/iron/dark, /area/command/gateway) +"vud" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/brown/warning{ + dir = 6 + }, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/structure/closet/secure_closet/freezer/kitchen, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/iron/cafeteria, +/area/service/kitchen) "vuS" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 @@ -75241,6 +76214,11 @@ /obj/structure/disposalpipe/trunk, /turf/open/floor/iron/dark, /area/medical/morgue) +"vDk" = ( +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/medical/medbay/central) "vDl" = ( /obj/structure/lattice, /obj/item/tail_pin, @@ -75408,6 +76386,7 @@ }, /turf/open/floor/iron, /area/cargo/warehouse) +<<<<<<< HEAD "vFQ" = ( /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/trimline/blue/filled/warning{ @@ -75419,9 +76398,10 @@ pixel_y = 26 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, /turf/open/floor/iron/white, /area/medical/treatment_center) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "vGb" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -76095,6 +77075,21 @@ /obj/effect/turf_decal/trimline/brown/filled/line, /turf/open/floor/iron, /area/hallway/primary/central) +"vSQ" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 8 + }, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/engineering/main) "vST" = ( /obj/structure/reagent_dispensers/peppertank{ pixel_x = 30 @@ -76311,16 +77306,16 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) +<<<<<<< HEAD "vVk" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 }, /obj/structure/cable, -/obj/structure/reagent_dispensers/plumbed{ - dir = 8 - }, /turf/open/floor/iron, /area/engineering/main) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "vVl" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 5 @@ -76406,6 +77401,30 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, /turf/open/floor/iron, /area/engineering/atmos) +"vXj" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/button/door{ + id = "kitchen_service"; + name = "Service Shutter Control"; + pixel_x = -24; + pixel_y = -24; + req_access_txt = "28" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_switch{ + pixel_x = -34; + pixel_y = -23 + }, +/obj/machinery/duct, +/turf/open/floor/iron/cafeteria, +/area/service/kitchen) "vXl" = ( /obj/effect/turf_decal/stripes/red/line{ dir = 5 @@ -77123,6 +78142,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/ai_monitored/command/storage/eva) +"wjS" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/medical/treatment_center) "wkj" = ( /turf/open/floor/iron/dark, /area/engineering/atmos) @@ -77244,6 +78270,7 @@ /obj/machinery/iv_drip, /turf/open/floor/iron/white, /area/medical/treatment_center) +<<<<<<< HEAD "wli" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/blue, @@ -77256,9 +78283,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 4 }, -/obj/machinery/duct, /turf/open/floor/iron/white, /area/medical/treatment_center) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "wlz" = ( /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ @@ -77461,6 +78489,20 @@ /obj/structure/chair/comfy/brown, /turf/open/floor/engine/cult, /area/service/library) +"wqd" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/light_switch{ + pixel_x = 21; + pixel_y = 26 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/medical/treatment_center) "wqm" = ( /obj/machinery/portable_atmospherics/canister/nitrous_oxide, /obj/effect/turf_decal/tile/neutral{ @@ -77478,6 +78520,15 @@ }, /turf/open/floor/iron/dark, /area/security/execution/education) +"wqv" = ( +/obj/structure/reagent_dispensers/watertank/high, +/obj/item/reagent_containers/glass/bucket, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/iron, +/area/service/hydroponics) "wqH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 8 @@ -77872,6 +78923,15 @@ }, /turf/open/floor/iron, /area/service/bar) +"wyd" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/medical/treatment_center) "wyn" = ( /obj/structure/table/optable, /obj/effect/turf_decal/tile/blue, @@ -78647,6 +79707,21 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/carpet, /area/command/heads_quarters/hop) +"wMX" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/medical/treatment_center) "wNe" = ( /obj/effect/turf_decal/tile/brown{ dir = 8 @@ -78812,17 +79887,17 @@ }, /turf/open/floor/iron, /area/engineering/break_room) +<<<<<<< HEAD "wPm" = ( /obj/item/trash/candy, /obj/machinery/light{ dir = 8 }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, /turf/open/floor/iron, /area/maintenance/starboard) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "wPX" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -78867,6 +79942,14 @@ "wQA" = ( /turf/closed/wall/r_wall, /area/science/mixing/chamber) +"wQD" = ( +/obj/structure/urinal{ + pixel_y = 29 + }, +/obj/effect/landmark/start/hangover, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/commons/toilet/restrooms) "wQG" = ( /obj/structure/sign/directions/security{ dir = 1; @@ -78894,6 +79977,7 @@ /obj/item/storage/lockbox/medal, /turf/open/floor/wood, /area/command/heads_quarters/captain/private) +<<<<<<< HEAD "wQY" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -78907,9 +79991,10 @@ /obj/item/cigbutt{ pixel_y = 7 }, -/obj/structure/cable, /turf/open/floor/iron, /area/maintenance/starboard) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "wQZ" = ( /obj/effect/turf_decal/tile/neutral{ dir = 8 @@ -79077,6 +80162,19 @@ }, /turf/closed/wall, /area/service/bar) +"wUd" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/structure/reagent_dispensers/plumbed/storage, +/turf/open/floor/iron/white, +/area/medical/chemistry) "wUh" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -79247,6 +80345,19 @@ }, /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) +"wYa" = ( +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/iron/cafeteria, +/area/service/kitchen) "wYi" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 6 @@ -79454,11 +80565,6 @@ /obj/structure/cable, /turf/open/floor/grass, /area/security/prison) -"xbU" = ( -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/medical/medbay/central) "xca" = ( /obj/structure/window/reinforced{ dir = 4 @@ -79524,6 +80630,7 @@ }, /turf/open/floor/iron/dark, /area/ai_monitored/aisat/exterior) +<<<<<<< HEAD "xcw" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -79531,9 +80638,10 @@ pixel_x = -6; pixel_y = -4 }, -/obj/machinery/duct, /turf/open/floor/iron, /area/maintenance/starboard) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "xcA" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -79867,6 +80975,7 @@ icon_state = "platingdmg2" }, /area/maintenance/starboard) +<<<<<<< HEAD "xip" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -79876,11 +80985,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 4 }, -/obj/machinery/duct, /turf/open/floor/plating{ icon_state = "platingdmg3" }, /area/hallway/secondary/service) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "xiC" = ( /obj/machinery/suit_storage_unit/cmo, /obj/machinery/light{ @@ -80066,13 +81176,6 @@ }, /turf/open/floor/carpet, /area/service/library) -"xlt" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/medical/treatment_center) "xly" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 @@ -80873,6 +81976,13 @@ }, /turf/open/floor/iron, /area/cargo/storage) +"xzZ" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/medical/treatment_center) "xAf" = ( /obj/machinery/shower{ dir = 4 @@ -80918,6 +82028,7 @@ }, /turf/open/floor/iron, /area/hallway/primary/central) +<<<<<<< HEAD "xAO" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -80934,9 +82045,10 @@ dir = 8 }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, /turf/open/floor/iron, /area/hallway/secondary/service) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "xBj" = ( /obj/structure/sink{ dir = 4; @@ -81439,6 +82551,27 @@ }, /turf/open/floor/iron/white, /area/medical/treatment_center) +"xKo" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/machinery/door/airlock/medical/glass{ + name = "Primary Treatment Centre"; + req_access_txt = "5" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/medical/treatment_center) "xKw" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 10 @@ -81831,6 +82964,7 @@ /mob/living/simple_animal/pet/cat/runtime, /turf/open/floor/iron/dark, /area/command/heads_quarters/cmo) +<<<<<<< HEAD "xPU" = ( /obj/effect/turf_decal/tile/bar{ dir = 1 @@ -81841,9 +82975,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 4 }, -/obj/machinery/duct, /turf/open/floor/iron/cafeteria, /area/service/kitchen) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "xQE" = ( /obj/structure/table, /obj/machinery/cell_charger, @@ -81884,6 +83019,7 @@ dir = 1 }, /area/service/chapel/main) +<<<<<<< HEAD "xRd" = ( /obj/effect/turf_decal/trimline/blue/filled/corner{ dir = 1 @@ -81892,9 +83028,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 10 }, -/obj/machinery/duct, /turf/open/floor/iron/white, /area/medical/treatment_center) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "xRe" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/red, @@ -82562,12 +83699,14 @@ /obj/item/plant_analyzer, /turf/open/floor/grass, /area/security/prison) +<<<<<<< HEAD "ybT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, /turf/open/floor/iron/freezer, /area/commons/toilet/restrooms) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "ybV" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table/reinforced, @@ -82802,6 +83941,7 @@ "yfL" = ( /turf/closed/wall, /area/ai_monitored/command/storage/eva) +<<<<<<< HEAD "yga" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -82809,9 +83949,10 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/machinery/duct, /turf/open/floor/iron, /area/hallway/secondary/service) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "ygg" = ( /turf/open/floor/iron/white, /area/science/cytology) @@ -82831,11 +83972,13 @@ }, /turf/open/floor/carpet, /area/command/bridge) +<<<<<<< HEAD "ygx" = ( /obj/effect/landmark/start/cook, -/obj/machinery/duct, /turf/open/floor/iron/cafeteria, /area/service/kitchen) +======= +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) "ygB" = ( /obj/effect/landmark/event_spawn, /obj/structure/cable, @@ -99639,8 +100782,13 @@ diy dux xuA reI -uLs +<<<<<<< HEAD +ioa qiy +======= +dNh +nVS +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) wKI dux klh @@ -102724,8 +103872,13 @@ dux fSW cdi dux -dyw -aaR +<<<<<<< HEAD +cdl +puR +======= +eKh +urg +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) bXK cjA cXe @@ -102981,8 +104134,13 @@ dux dux dux dux +<<<<<<< HEAD dyw -aaR +puR +======= +eKh +urg +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) mRw mRw mRw @@ -103239,7 +104397,7 @@ scQ stQ tbY stQ -aJl +kpt mRw iYO iYO @@ -103495,14 +104653,19 @@ bZS mVW cdk ceu -ogV +<<<<<<< HEAD +slf sXM +======= +bUf +fBU +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) mRw ojF -uYA -xRd -omL -duX +nCO +jxU +wyd +hQh mQW fBL pfE @@ -103753,10 +104916,14 @@ akM gox dux dux -ezL +mlo mRw wkY -fsw +<<<<<<< HEAD +oxQ +======= +wjS +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) rKP xKj xly @@ -104010,10 +105177,14 @@ gDq uLp mRw knk -wli +wMX mRw moP -ulQ +<<<<<<< HEAD +jGt +======= +pGd +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) llx bJX peF @@ -104267,10 +105438,10 @@ hIT dvE jQk xPf -gAM -mkr -vFQ -qFc +mtZ +xKo +wqd +aLe nhN sKc dcF @@ -104527,7 +105698,11 @@ gsG gbI mRw qne -xlt +<<<<<<< HEAD +yiv +======= +haF +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) llx fTG eiy @@ -104784,7 +105959,11 @@ gsG pwW mRw wkY -fsw +<<<<<<< HEAD +oxQ +======= +wjS +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) hks pzK jAC @@ -105041,9 +106220,9 @@ klL muK mRw ojF -ldZ -jBz -iyC +duA +cjq +vsw rLD eHE mAI @@ -105300,7 +106479,7 @@ mRw iYO iYO fem -sgy +xzZ yjF uFV iYO @@ -105557,7 +106736,7 @@ mRw mRw mRw iRL -dtK +flj mId iRL mRw @@ -105814,7 +106993,7 @@ dQH qYQ ljU rWs -rBS +tid myL lXD utw @@ -106069,9 +107248,15 @@ tRl myJ joR cvr -pOL -xbU -xbU +<<<<<<< HEAD +rGW +cvr +cvr +======= +bEA +vDk +vDk +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) mAJ cqj aTX @@ -106849,7 +108034,7 @@ qTT leX uUe rAF -cvu +lOZ czX czX czX @@ -107106,7 +108291,7 @@ msZ cuX lAK rAF -cvv +wUd cmB cmB cmB @@ -116289,8 +117474,13 @@ uZh tgv xmG tZK +<<<<<<< HEAD azY -eto +epi +======= +mFR +tNX +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) wpL kKj wpL @@ -116547,13 +117737,13 @@ tZK tZK tZK aGE -iKw -aCz -oUE -mLL -mma -jDK -rmw +dgZ +mHI +uqv +hzD +hqf +pJo +ncP eEk oQr eGq @@ -116583,7 +117773,7 @@ iEa jKO lde hmF -uTJ +rVh kPe dWv uMl @@ -116806,7 +117996,7 @@ qoz kDL ghT wpL -hrT +hqj xDa ksU ryL @@ -116840,7 +118030,7 @@ otW dOt lde dNO -ouO +cEL cSs xEu uRF @@ -117063,7 +118253,7 @@ wpL wpL wpL wpL -hrT +hqj iWX wpL wpL @@ -117097,7 +118287,7 @@ pyC bgW ovm tVK -bya +ehE cuY xZT uRF @@ -117320,7 +118510,7 @@ iTF viq iTF wpL -mQO +wQD jKS cZw dTc @@ -117573,11 +118763,11 @@ aub aje ahd wpL -cQZ -odg -lUo -eVa -ybT +piL +gjr +iMh +lks +mGe oOj caB wpL @@ -118136,8 +119326,8 @@ iEU bsZ fla kxC -dIm -eEl +hqm +eto xyN khc ovt @@ -118383,18 +119573,23 @@ sFA mio vlj voI -qgB -jgt -ori -rNg -jFf -sHL -eFm -xAO +kTR +nwr +rAU +dAh +vXj +cHM +gco +bIu xVl quV +<<<<<<< HEAD vbD +eto +======= +pEn jpR +>>>>>>> a924226b509 (React optimization + event based processing for tanks, canisters and pipelines (#58418)) iKa daK wxu @@ -118640,17 +119835,17 @@ kVB mio jKO tnM -xPU +wYa hEe eSU -rUY +tKW upb rnj bNx -ope +mwA bdr xVl -tfD +wqv jpR xGY xIQ @@ -118897,14 +120092,14 @@ ukU hHy oPe cPo -xPU +wYa dua pXf -ygx +pxg nWi ruR bQI -xip +san fCX xVl ptZ @@ -119154,15 +120349,15 @@ mio mio oPe tnM -xPU +wYa lLl ggm -dze +bYE tKZ ruR vaY -aOZ -yga +cig +qtc bNE quV cVw @@ -119411,7 +120606,7 @@ edf mio oPe cXN -sry +aEP nIf sZL pWo @@ -119419,7 +120614,7 @@ hls ruR mum jVF -ndn +iCr xom quV qhM @@ -119668,7 +120863,7 @@ oSR skH pRe hdG -iWa +hbg hJU tDg qMr @@ -119676,7 +120871,7 @@ qMr qMr qMr qMr -rEt +pCE ofI quV eSO @@ -119925,7 +121120,7 @@ qpu qFP sSX ruR -lvC +gdL hzQ wju oVj @@ -119933,7 +121128,7 @@ sVy rsp iOA qMr -jxK +trj fLZ quV dYj @@ -120182,15 +121377,15 @@ sER jXc fjH eLr -cYc -dnA -rXD -bXH -hGt +vud +fsB +iKq +mHq +eGO jHx thR qMr -ows +rLx xVl quV gJo @@ -120447,7 +121642,7 @@ vmJ rCK xli qMr -bTa +btv xVl tRw wIj @@ -120704,7 +121899,7 @@ eLr xdd nFx qMr -bTb +uVa xVl dKp sqd @@ -120961,7 +122156,7 @@ eLr pBt oQY qMr -bTc +nje xVl jHk asH @@ -121218,7 +122413,7 @@ eLr xaF xwA qMr -bvd +mXn xVl qOx vLd @@ -121475,7 +122670,7 @@ eLr tvI qMr qMr -pmn +jYM alq quV pPT @@ -121731,8 +122926,8 @@ mOH jXf cXd dYF -wPm -xcw +tFj +rIg alq mnv oDz @@ -121987,9 +123182,9 @@ alq alq alq euJ -wQY -euK -uvE +rvD +jZt +nhu iOh sRZ evA @@ -122245,7 +123440,7 @@ rrQ gdD kfC wjG -pcT +hHN lGw alq bVC @@ -124275,8 +125470,8 @@ mlE gxu ygI eYG -aIB -uZm +vSQ +eXp wBk bDQ lKO @@ -124533,7 +125728,7 @@ beW lhW izr lZK -vVk +eWl pWb lhW dus @@ -128922,7 +130117,7 @@ jxI jxI deP beJ -vaC +opQ beJ deP lSa diff --git a/code/__DEFINES/reactions.dm b/code/__DEFINES/reactions.dm index 7bf5b85e7e0..18289d0e7ed 100644 --- a/code/__DEFINES/reactions.dm +++ b/code/__DEFINES/reactions.dm @@ -56,3 +56,8 @@ #define STIMULUM_RESEARCH_AMOUNT 50 #define PLUOXIUM_TEMP_CAP 200 + +#define PRIORITY_PRE_FORMATION 1 +#define PRIORITY_FORMATION 2 +#define PRIORITY_POST_FORMATION 3 +#define PRIORITY_FIRE 4 diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm index d6082e05019..d450e62eaa5 100644 --- a/code/controllers/subsystem/air.dm +++ b/code/controllers/subsystem/air.dm @@ -77,6 +77,7 @@ SUBSYSTEM_DEF(air) /datum/controller/subsystem/air/Initialize(timeofday) map_loading = FALSE gas_reactions = init_gas_reactions() + setup_allturfs() setup_atmos_machinery() setup_pipenets() @@ -253,8 +254,10 @@ SUBSYSTEM_DEF(air) while(currentrun.len) var/obj/machinery/M = currentrun[currentrun.len] currentrun.len-- - if(!M || (M.process_atmos() == PROCESS_KILL)) - atmos_machinery.Remove(M) + if(!M) + atmos_machinery -= M + if(M.process_atmos() == PROCESS_KILL) + stop_processing_machine(M) if(MC_TICK_CHECK) return @@ -609,26 +612,25 @@ GLOBAL_LIST_EMPTY(colored_images) /** * Adds a given machine to the processing system for SSAIR_ATMOSMACHINERY processing. * - * This should be fast, so no error checking is done. - * If you start adding in things you shouldn't, you'll cause runtimes every 2 seconds for every - * object you added. Do not use irresponsibly. * Arguments: * * machine - The machine to start processing. Can be any /obj/machinery. */ /datum/controller/subsystem/air/proc/start_processing_machine(obj/machinery/machine) + if(machine.atmos_processing) + return + machine.atmos_processing = TRUE atmos_machinery += machine /** * Removes a given machine to the processing system for SSAIR_ATMOSMACHINERY processing. * - * This should be fast, so no error checking is done. - * If you call this proc when your machine isn't processing, you're likely attempting to - * remove something that isn't in a list with over 1000 objects, twice. Do not use - * irresponsibly. * Arguments: * * machine - The machine to stop processing. */ /datum/controller/subsystem/air/proc/stop_processing_machine(obj/machinery/machine) + if(!machine.atmos_processing) + return + machine.atmos_processing = FALSE atmos_machinery -= machine // If we're currently processing atmos machines, there's a chance this machine is in diff --git a/code/game/gamemodes/objective_items.dm b/code/game/gamemodes/objective_items.dm index bf26c35f307..6e0b30aed09 100644 --- a/code/game/gamemodes/objective_items.dm +++ b/code/game/gamemodes/objective_items.dm @@ -124,7 +124,8 @@ /datum/objective_item/steal/plasma/check_special_completion(obj/item/tank/T) var/target_amount = text2num(name) var/found_amount = 0 - found_amount += T.air_contents.gases[/datum/gas/plasma] ? T.air_contents.gases[/datum/gas/plasma][MOLES] : 0 + var/datum/gas_mixture/mix = T.return_air() + found_amount += mix.gases[/datum/gas/plasma] ? mix.gases[/datum/gas/plasma][MOLES] : 0 return found_amount>=target_amount diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index 3e6e381e9b5..f41033d60dc 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -128,6 +128,8 @@ // For storing and overriding ui id var/tgui_id // ID of TGUI interface + ///Is this machine currently in the atmos machinery queue? + var/atmos_processing = FALSE /obj/machinery/Initialize() if(!armor) diff --git a/code/game/objects/effects/spawners/bombspawner.dm b/code/game/objects/effects/spawners/bombspawner.dm index 65f32aadcbf..3eb950b4550 100644 --- a/code/game/objects/effects/spawners/bombspawner.dm +++ b/code/game/objects/effects/spawners/bombspawner.dm @@ -23,12 +23,12 @@ var/obj/item/tank/internals/plasma/plasma_tank = new(ttv) var/obj/item/tank/internals/oxygen/oxygen_tank = new(ttv) - var/datum/gas_mixture/plasma_mix = plasma_tank.air_contents + var/datum/gas_mixture/plasma_mix = plasma_tank.return_air() plasma_mix.assert_gas(/datum/gas/plasma) plasma_mix.gases[/datum/gas/plasma][MOLES] = pressure_p*plasma_mix.volume/(R_IDEAL_GAS_EQUATION*temp_p) plasma_mix.temperature = temp_p - var/datum/gas_mixture/oxygen_mix = oxygen_tank.air_contents + var/datum/gas_mixture/oxygen_mix = oxygen_tank.return_air() oxygen_mix.assert_gas(/datum/gas/oxygen) oxygen_mix.gases[/datum/gas/oxygen][MOLES] = pressure_o*oxygen_mix.volume/(R_IDEAL_GAS_EQUATION*temp_o) oxygen_mix.temperature = temp_o diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm index 0de5775ee96..72ae2acaa7b 100644 --- a/code/game/objects/items/devices/transfer_valve.dm +++ b/code/game/objects/items/devices/transfer_valve.dm @@ -135,29 +135,34 @@ /obj/item/transfer_valve/proc/merge_gases(datum/gas_mixture/target, change_volume = TRUE) var/target_self = FALSE - if(!target || (target == tank_one.air_contents)) - target = tank_two.air_contents - if(target == tank_two.air_contents) + var/datum/gas_mixture/mix_one = tank_one.return_air() + var/datum/gas_mixture/mix_two = tank_two.return_air() + if(!target || (target == mix_one)) + target = mix_two + if(target == mix_two) target_self = TRUE if(change_volume) if(!target_self) target.volume += tank_two.volume - target.volume += tank_one.air_contents.volume + target.volume += mix_one.volume var/datum/gas_mixture/temp - temp = tank_one.air_contents.remove_ratio(1) + temp = mix_one.remove_ratio(1) target.merge(temp) if(!target_self) - temp = tank_two.air_contents.remove_ratio(1) + temp = mix_two.remove_ratio(1) target.merge(temp) /obj/item/transfer_valve/proc/split_gases() if (!valve_open || !tank_one || !tank_two) return - var/ratio1 = tank_one.air_contents.volume/tank_two.air_contents.volume + var/datum/gas_mixture/mix_one = tank_one.return_air() + var/datum/gas_mixture/mix_two = tank_two.return_air() + + var/volume_ratio = mix_one.volume/mix_two.volume var/datum/gas_mixture/temp - temp = tank_two.air_contents.remove_ratio(ratio1) - tank_one.air_contents.merge(temp) - tank_two.air_contents.volume -= tank_one.air_contents.volume + temp = mix_two.remove_ratio(volume_ratio) + mix_one.merge(temp) + mix_two.volume -= mix_one.volume /* Exadv1: I know this isn't how it's going to work, but this was just to check diff --git a/code/game/objects/items/flamethrower.dm b/code/game/objects/items/flamethrower.dm index ef448bbafef..11738958a9d 100644 --- a/code/game/objects/items/flamethrower.dm +++ b/code/game/objects/items/flamethrower.dm @@ -215,12 +215,14 @@ /obj/item/flamethrower/proc/default_ignite(turf/target, release_amount = 0.05) //TODO: DEFERRED Consider checking to make sure tank pressure is high enough before doing this... //Transfer 5% of current tank air contents to turf - var/datum/gas_mixture/air_transfer = ptank.air_contents.remove_ratio(release_amount) + var/datum/gas_mixture/tank_mix = ptank.return_air() + var/datum/gas_mixture/air_transfer = tank_mix.remove_ratio(release_amount) + if(air_transfer.gases[/datum/gas/plasma]) - air_transfer.gases[/datum/gas/plasma][MOLES] *= 5 + air_transfer.gases[/datum/gas/plasma][MOLES] *= 5 //Suffering target.assume_air(air_transfer) //Burn it based on transfered gas - target.hotspot_expose((ptank.air_contents.temperature*2) + 380,500) + target.hotspot_expose((tank_mix.temperature*2) + 380,500) //location.hotspot_expose(1000,500,1) SSair.add_to_active(target) @@ -264,8 +266,9 @@ /obj/item/flamethrower/proc/instant_refill() if(ptank) - ptank.air_contents.assert_gas(/datum/gas/plasma) - ptank.air_contents.gases[/datum/gas/plasma][MOLES] = (10*ONE_ATMOSPHERE)*ptank.volume/(R_IDEAL_GAS_EQUATION*T20C) + var/datum/gas_mixture/tank_mix = ptank.return_air() + tank_mix.assert_gas(/datum/gas/plasma) + tank_mix.gases[/datum/gas/plasma][MOLES] = (10*ONE_ATMOSPHERE)*ptank.volume/(R_IDEAL_GAS_EQUATION*T20C) else ptank = new /obj/item/tank/internals/plasma/full(src) update_appearance() diff --git a/code/game/objects/items/pneumaticCannon.dm b/code/game/objects/items/pneumaticCannon.dm index f7e491ec029..2415f8b558d 100644 --- a/code/game/objects/items/pneumaticCannon.dm +++ b/code/game/objects/items/pneumaticCannon.dm @@ -156,7 +156,7 @@ if(HAS_TRAIT(user, TRAIT_PACIFISM)) to_chat(user, "You can't bring yourself to fire \the [src]! You don't want to risk harming anyone..." ) return - if(tank && !tank.air_contents.remove(gasPerThrow * pressureSetting)) + if(tank && !tank.remove_air(gasPerThrow * pressureSetting)) to_chat(user, "\The [src] lets out a weak hiss and doesn't react!") return if(HAS_TRAIT(user, TRAIT_CLUMSY) && prob(75) && clumsyCheck && iscarbon(user)) diff --git a/code/game/objects/items/powerfist.dm b/code/game/objects/items/powerfist.dm index fd8eb07b0be..8d7813ff862 100644 --- a/code/game/objects/items/powerfist.dm +++ b/code/game/objects/items/powerfist.dm @@ -77,7 +77,7 @@ if(HAS_TRAIT(user, TRAIT_PACIFISM)) to_chat(user, "You don't want to harm other living beings!") return - var/datum/gas_mixture/gasused = tank.air_contents.remove(gasperfist * fisto_setting) + var/datum/gas_mixture/gasused = tank.remove_air(gasperfist * fisto_setting) var/turf/T = get_turf(src) if(!T) return diff --git a/code/game/objects/items/tanks/jetpack.dm b/code/game/objects/items/tanks/jetpack.dm index 1cefcbd6bb3..6d13d1e8195 100644 --- a/code/game/objects/items/tanks/jetpack.dm +++ b/code/game/objects/items/tanks/jetpack.dm @@ -26,8 +26,9 @@ /obj/item/tank/jetpack/populate_gas() if(gas_type) - air_contents.assert_gas(gas_type) - air_contents.gases[gas_type][MOLES] = ((6 * ONE_ATMOSPHERE) * volume / (R_IDEAL_GAS_EQUATION * T20C)) + var/datum/gas_mixture/our_mix = return_air() + our_mix.assert_gas(gas_type) + our_mix.gases[gas_type][MOLES] = ((6 * ONE_ATMOSPHERE) * volume / (R_IDEAL_GAS_EQUATION * T20C)) /obj/item/tank/jetpack/ui_action_click(mob/user, action) if(istype(action, /datum/action/item_action/toggle_jetpack)) @@ -100,7 +101,7 @@ turn_off(user) return - var/datum/gas_mixture/removed = air_contents.remove(num) + var/datum/gas_mixture/removed = remove_air(num) if(removed.total_moles() < 0.005) turn_off(user) return @@ -196,14 +197,14 @@ slot_flags = null gas_type = null full_speed = FALSE - var/datum/gas_mixture/temp_air_contents + var/datum/gas_mixture/tempair_contents var/obj/item/tank/internals/tank = null var/mob/living/carbon/human/cur_user /obj/item/tank/jetpack/suit/Initialize() . = ..() STOP_PROCESSING(SSobj, src) - temp_air_contents = air_contents + tempair_contents = air_contents /obj/item/tank/jetpack/suit/attack_self() return @@ -224,14 +225,14 @@ return var/mob/living/carbon/human/H = user tank = H.s_store - air_contents = tank.air_contents + air_contents = tank.return_air() START_PROCESSING(SSobj, src) cur_user = user ..() /obj/item/tank/jetpack/suit/turn_off(mob/user) tank = null - air_contents = temp_air_contents + air_contents = tempair_contents STOP_PROCESSING(SSobj, src) cur_user = null ..() @@ -244,7 +245,8 @@ if(!tank || tank != H.s_store) turn_off(cur_user) return - ..() + excited = TRUE + return ..() //Return a jetpack that the mob can use diff --git a/code/game/objects/items/tanks/tanks.dm b/code/game/objects/items/tanks/tanks.dm index a0bcb731cb4..47a6c327ab8 100644 --- a/code/game/objects/items/tanks/tanks.dm +++ b/code/game/objects/items/tanks/tanks.dm @@ -26,7 +26,7 @@ actions_types = list(/datum/action/item_action/set_internals) armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 10, BIO = 0, RAD = 0, FIRE = 80, ACID = 30) integrity_failure = 0.5 - /// The gases this tank contains. + /// The gases this tank contains. Don't modify this directly, use return_air() to get it instead var/datum/gas_mixture/air_contents = null /// The volume of this tank. var/volume = 70 @@ -36,6 +36,8 @@ var/distribute_pressure = ONE_ATMOSPHERE /// Icon state when in a tank holder. Null makes it incompatible with tank holder. var/tank_holder_icon_state = "holder_generic" + ///Used by process() to track if there's a reason to process each tick + var/excited = TRUE /obj/item/tank/ui_action_click(mob/user) toggle_internals(user) @@ -107,7 +109,7 @@ . += "The pressure gauge reads [round(src.air_contents.return_pressure(),0.01)] kPa." - var/celsius_temperature = src.air_contents.temperature-T0C + var/celsius_temperature = air_contents.temperature-T0C var/descriptive if (celsius_temperature < 20) @@ -205,15 +207,18 @@ distribute_pressure = clamp(round(pressure), TANK_MIN_RELEASE_PRESSURE, TANK_MAX_RELEASE_PRESSURE) /obj/item/tank/remove_air(amount) + START_PROCESSING(SSobj, src) return air_contents.remove(amount) /obj/item/tank/return_air() + START_PROCESSING(SSobj, src) return air_contents /obj/item/tank/return_analyzable_air() return air_contents /obj/item/tank/assume_air(datum/gas_mixture/giver) + START_PROCESSING(SSobj, src) air_contents.merge(giver) handle_tolerances(ASSUME_AIR_DT_FACTOR) return TRUE @@ -247,8 +252,14 @@ return //Allow for reactions - air_contents.react(src) - handle_tolerances(delta_time) + excited = (excited | air_contents.react(src)) + excited = (excited | handle_tolerances(delta_time)) + excited = (excited | leaking) + + if(!excited) + STOP_PROCESSING(SSobj, src) + excited = FALSE + if(QDELETED(src) || !leaking || !air_contents) return var/atom/location = loc @@ -261,6 +272,7 @@ /** * Handles the minimum and maximum pressure tolerances of the tank. * + * Returns true if it did anything of significance, false otherwise * Arguments: * - delta_time: How long has passed between ticks. */ @@ -279,7 +291,8 @@ if(pressure >= TANK_LEAK_PRESSURE) var/pressure_damage_ratio = (pressure - TANK_LEAK_PRESSURE) / (TANK_RUPTURE_PRESSURE - TANK_LEAK_PRESSURE) take_damage(max_integrity * pressure_damage_ratio * delta_time, BRUTE, BOMB, FALSE, NONE) - return TRUE + return TRUE + return FALSE /// Handles the tank springing a leak. /obj/item/tank/obj_break(damage_flag) @@ -288,6 +301,8 @@ return leaking = TRUE + START_PROCESSING(SSobj, src) + if(obj_integrity < 0) // So we don't play the alerts while we are exploding or rupturing. return visible_message("[src] springs a leak!") @@ -334,5 +349,6 @@ if(gas_change) air_contents.garbage_collect() + START_PROCESSING(SSobj, src) #undef ASSUME_AIR_DT_FACTOR diff --git a/code/game/objects/structures/crates_lockers/crates/critter.dm b/code/game/objects/structures/crates_lockers/crates/critter.dm index 8ca58d9e20a..39c2a726557 100644 --- a/code/game/objects/structures/crates_lockers/crates/critter.dm +++ b/code/game/objects/structures/crates_lockers/crates/critter.dm @@ -42,7 +42,7 @@ /obj/structure/closet/crate/critter/return_air() if(tank) - return tank.air_contents + return tank.return_air() else return loc.return_air() diff --git a/code/modules/assembly/bomb.dm b/code/modules/assembly/bomb.dm index 00389085e45..1bbd6fc98ea 100644 --- a/code/modules/assembly/bomb.dm +++ b/code/modules/assembly/bomb.dm @@ -58,7 +58,8 @@ return if(I.use_tool(src, user, 0, volume=40)) status = TRUE - log_bomber(user, "welded a single tank bomb,", src, "| Temp: [bombtank.air_contents.temperature-T0C]") + var/datum/gas_mixture/bomb_mix = bombtank.return_air() + log_bomber(user, "welded a single tank bomb,", src, "| Temp: [bomb_mix.temperature-T0C]") to_chat(user, "A pressure hole has been bored to [bombtank] valve. \The [bombtank] can now be ignited.") add_fingerprint(user) return TRUE @@ -145,10 +146,13 @@ return /obj/item/tank/proc/ignite() //This happens when a bomb is told to explode - air_contents.assert_gases(/datum/gas/plasma, /datum/gas/oxygen) - var/fuel_moles = air_contents.gases[/datum/gas/plasma][MOLES] + air_contents.gases[/datum/gas/oxygen][MOLES]/6 - air_contents.garbage_collect() - var/datum/gas_mixture/bomb_mixture = air_contents.copy() + START_PROCESSING(SSobj, src) + var/datum/gas_mixture/our_mix = return_air() + + our_mix.assert_gases(/datum/gas/plasma, /datum/gas/oxygen) + var/fuel_moles = our_mix.gases[/datum/gas/plasma][MOLES] + our_mix.gases[/datum/gas/oxygen][MOLES]/6 + our_mix.garbage_collect() + var/datum/gas_mixture/bomb_mixture = our_mix.copy() var/strength = 1 var/turf/ground_zero = get_turf(loc) @@ -199,7 +203,8 @@ ground_zero.air_update_turf(FALSE, FALSE) /obj/item/tank/proc/release() //This happens when the bomb is not welded. Tank contents are just spat out. - var/datum/gas_mixture/removed = air_contents.remove(air_contents.total_moles()) + var/datum/gas_mixture/our_mix = return_air() + var/datum/gas_mixture/removed = remove_air(our_mix.total_moles()) var/turf/T = get_turf(src) if(!T) return diff --git a/code/modules/atmospherics/Atmospherics.md b/code/modules/atmospherics/Atmospherics.md index 4fa4722fc13..bce9fdd5f6d 100644 --- a/code/modules/atmospherics/Atmospherics.md +++ b/code/modules/atmospherics/Atmospherics.md @@ -391,9 +391,17 @@ This is for the oddballs, the one offs, the half useless things. Things that are These are the atmos machines you can move around. They interface with connectors to talk to pipelines, and can contain tanks. Not a whole lot more to discuss here. +## 9. A word on processing + +You may have noticed that a large portion of the optimizations we do are focused around not checking to see if we need to do work. + +This is essentially what active turfs are built around, and it's a somewhat unfinished project. There's still quite a few things in atmos, mostly machinery, that check each fire to see if they should be doing work. There's a general pattern to solving this sort of thing by the way, centralize the ways a bit of outside code can interact with a "thing", and then when the outside code does something that might warrant processing, start processing. + +This attitude needs to be applied to a few large targets, and you may see it crop up when reading through the code. Keep this in mind, and make sure to respect the rules that describe how to work with the object, or things will go to shit. + ## Appendix A - Glossary -* *LINDA* - Our environmental gas system, created by Aranclanos, Beautiful in Spanish +* *LINDA* - Our environmental gas system, created by Aranclanos, allegedly Beautiful in Spanish * *Naps* - A healthy pastime * *Gas mixtures* - The datums that store gas information, key to listmos and our underlying method of handling well gas * *Diffs* - The differences between gasmixes. We want to get rid of these over time, and clump them up with their sources so we don't need to process too many turfs diff --git a/code/modules/atmospherics/gasmixtures/gas_mixture.dm b/code/modules/atmospherics/gasmixtures/gas_mixture.dm index 5f1b3fe0ff6..981e78a8f40 100644 --- a/code/modules/atmospherics/gasmixtures/gas_mixture.dm +++ b/code/modules/atmospherics/gasmixtures/gas_mixture.dm @@ -106,7 +106,7 @@ GLOBAL_LIST_INIT(gaslist_cache, init_gaslist_cache()) /datum/gas_mixture/proc/total_moles() var/cached_gases = gases TOTAL_MOLES(cached_gases, .) - + /// Checks to see if gas amount exists in mixture. /// Do NOT use this in code where performance matters! /// It's better to batch calls to garbage_collect(), especially in places where you're checking many gastypes @@ -443,52 +443,58 @@ GLOBAL_LIST_INIT(gaslist_cache, init_gaslist_cache()) return "" -///Performs various reactions such as combustion or fusion (LOL) +///Performs various reactions such as combustion and fabrication ///Returns: 1 if any reaction took place; 0 otherwise /datum/gas_mixture/proc/react(datum/holder) . = NO_REACTION var/list/cached_gases = gases if(!length(cached_gases)) return - var/list/reactions = list() - for(var/G in SSair.gas_reactions) - var/datum/gas_reaction/reaction = G - if(cached_gases[reaction.major_gas]) - reactions += G + + var/list/pre_formation = list() + var/list/mid_formation = list() + var/list/post_formation = list() + var/list/fires = list() + var/list/gas_reactions = SSair.gas_reactions + for(var/gas_id in cached_gases) + var/list/reaction_set = gas_reactions[gas_id] + if(!reaction_set) + continue + pre_formation += reaction_set[1] + mid_formation += reaction_set[2] + post_formation += reaction_set[3] + fires += reaction_set[4] + + var/list/reactions = pre_formation + mid_formation + post_formation + fires if(!length(reactions)) return + //Fuck you + if(cached_gases[/datum/gas/hypernoblium] && cached_gases[/datum/gas/hypernoblium][MOLES] >= REACTION_OPPRESSION_THRESHOLD && temperature > 20) + return STOP_REACTIONS + reaction_results = new - //It might be worth looking into updating these after each reaction, but it changes things a lot, so be careful + //It might be worth looking into updating these after each reaction, but that makes us care more about order of operations, so be careful var/temp = temperature - var/ener = THERMAL_ENERGY(src) - reaction_loop: - for(var/r in reactions) - var/datum/gas_reaction/reaction = r + for(var/datum/gas_reaction/reaction as anything in reactions) - var/list/min_reqs = reaction.min_requirements - if( (min_reqs["TEMP"] && temp < min_reqs["TEMP"]) || \ - (min_reqs["ENER"] && ener < min_reqs["ENER"]) || \ - (min_reqs["MAX_TEMP"] && temp > min_reqs["MAX_TEMP"]) - ) + var/list/reqs = reaction.requirements + if((reqs["MIN_TEMP"] && temp < reqs["MIN_TEMP"]) || (reqs["MAX_TEMP"] && temp > reqs["MAX_TEMP"])) continue - for(var/id in min_reqs) - if (id == "TEMP" || id == "ENER" || id == "MAX_TEMP") + for(var/id in reqs) + if (id == "MIN_TEMP" || id == "MAX_TEMP") continue - if(!cached_gases[id] || cached_gases[id][MOLES] < min_reqs[id]) + if(!cached_gases[id] || cached_gases[id][MOLES] < reqs[id]) continue reaction_loop //at this point, all requirements for the reaction are satisfied. we can now react() - . |= reaction.react(src, holder) - if (. & STOP_REACTIONS) - break - if(.) //If we changed the mix to any degree, or if we stopped reacting + if(.) //If we changed the mix to any degree garbage_collect() ///Takes the amount of the gas you want to PP as an argument diff --git a/code/modules/atmospherics/gasmixtures/reactions.dm b/code/modules/atmospherics/gasmixtures/reactions.dm index c3d08296d89..c4d7dcb5a84 100644 --- a/code/modules/atmospherics/gasmixtures/reactions.dm +++ b/code/modules/atmospherics/gasmixtures/reactions.dm @@ -1,59 +1,51 @@ //All defines used in reactions are located in ..\__DEFINES\reactions.dm -/*priority so far, check this list to see what are the numbers used. Please use a different priority for each reaction(higher number are done first) -miaster = -10 (this should always be under all other fires) -freonfire = -5 -plasmafire = -4 -h2fire = -3 -tritfire = -2 -halon_o2removal = -1 -nitrous_decomp = 0 -water_vapor = 1 -nitryl_decomp = 21 -pluox_formation = 2 -nitrylformation = 3 -bzformation = 4 -freonformation = 5 -stimformation = 6 -nobliumformation = 7 -zauker_decomp = 8 -healium_formation = 9 -proto_nitrate_formation = 10 -zauker_formation = 11 -halon_formation = 12 -proto_nitrate_response = 13 - 18 -fusion = 19 -metallic_hydrogen = 20 -nobiliumsuppression = INFINITY -*/ /proc/init_gas_reactions() - . = list() + var/list/priority_reactions = list() - for(var/r in subtypesof(/datum/gas_reaction)) - var/datum/gas_reaction/reaction = r + //Builds a list of gas id to reaction group + for(var/gas_id in GLOB.meta_gas_info) + priority_reactions[gas_id] = list( + PRIORITY_PRE_FORMATION = list(), + PRIORITY_FORMATION = list(), + PRIORITY_POST_FORMATION = list(), + PRIORITY_FIRE = list() + ) + + for(var/datum/gas_reaction/reaction as anything in subtypesof(/datum/gas_reaction)) if(initial(reaction.exclude)) continue - reaction = new r + reaction = new reaction var/datum/gas/reaction_key - for (var/req in reaction.min_requirements) + for (var/req in reaction.requirements) if (ispath(req)) var/datum/gas/req_gas = req if (!reaction_key || initial(reaction_key.rarity) > initial(req_gas.rarity)) reaction_key = req_gas reaction.major_gas = reaction_key - . += reaction - sortTim(., /proc/cmp_gas_reaction) + priority_reactions[reaction_key][reaction.priority_group] += reaction -/proc/cmp_gas_reaction(datum/gas_reaction/a, datum/gas_reaction/b) // compares lists of reactions by the maximum priority contained within the list - return b.priority - a.priority + //Culls empty gases + for(var/gas_id in GLOB.meta_gas_info) + var/passed = FALSE + for(var/list/priority_grouping in priority_reactions[gas_id]) + if(length(priority_grouping)) + passed = TRUE + break + if(passed) + continue + priority_reactions[gas_id] = null + + return priority_reactions /datum/gas_reaction - //regarding the requirements lists: the minimum or maximum requirements must be non-zero. + //regarding the requirements list: the minimum or maximum requirements must be non-zero. //when in doubt, use MINIMUM_MOLE_COUNT. - var/list/min_requirements + var/list/requirements var/major_gas //the highest rarity gas used in the reaction. var/exclude = FALSE //do it this way to allow for addition/removal of reactions midmatch in the future - var/priority = 100 //lower numbers are checked/react later than higher numbers. if two reactions have the same priority they may happen in either order + ///The priority group this reaction is a part of. You can think of these as processing in batches, put your reaction into the one that's most fitting + var/priority_group var/name = "reaction" var/id = "r" @@ -65,28 +57,14 @@ nobiliumsuppression = INFINITY /datum/gas_reaction/proc/react(datum/gas_mixture/air, atom/location) return NO_REACTION -/datum/gas_reaction/nobliumsupression - priority = INFINITY - name = "Hyper-Noblium Reaction Suppression" - id = "nobstop" - -/datum/gas_reaction/nobliumsupression/init_reqs() - min_requirements = list( - /datum/gas/hypernoblium = REACTION_OPPRESSION_THRESHOLD, - "TEMP" = 20 - ) - -/datum/gas_reaction/nobliumsupression/react() - return STOP_REACTIONS - //water vapor: puts out fires? /datum/gas_reaction/water_vapor - priority = 1 + priority_group = PRIORITY_POST_FORMATION name = "Water Vapor" id = "vapor" /datum/gas_reaction/water_vapor/init_reqs() - min_requirements = list(/datum/gas/water_vapor = MOLES_GAS_VISIBLE) + requirements = list(/datum/gas/water_vapor = MOLES_GAS_VISIBLE) /datum/gas_reaction/water_vapor/react(datum/gas_mixture/air, datum/holder) var/turf/open/location = isturf(holder) ? holder : null @@ -101,14 +79,14 @@ nobiliumsuppression = INFINITY //tritium combustion: combustion of oxygen and tritium (treated as hydrocarbons). creates hotspots. exothermic /datum/gas_reaction/nitrous_decomp - priority = 0 + priority_group = PRIORITY_POST_FORMATION name = "Nitrous Oxide Decomposition" id = "nitrous_decomp" /datum/gas_reaction/nitrous_decomp/init_reqs() - min_requirements = list( - "TEMP" = N2O_DECOMPOSITION_MIN_ENERGY, - /datum/gas/nitrous_oxide = MINIMUM_MOLE_COUNT + requirements = list( + /datum/gas/nitrous_oxide = MINIMUM_MOLE_COUNT, + "MIN_TEMP" = N2O_DECOMPOSITION_MIN_ENERGY ) /datum/gas_reaction/nitrous_decomp/react(datum/gas_mixture/air, datum/holder) @@ -140,15 +118,15 @@ nobiliumsuppression = INFINITY //tritium combustion: combustion of oxygen and tritium (treated as hydrocarbons). creates hotspots. exothermic /datum/gas_reaction/tritfire - priority = -2 //fire should ALWAYS be last, but tritium fires happen before plasma fires + priority_group = PRIORITY_FIRE name = "Tritium Combustion" id = "tritfire" /datum/gas_reaction/tritfire/init_reqs() - min_requirements = list( - "TEMP" = FIRE_MINIMUM_TEMPERATURE_TO_EXIST, + requirements = list( /datum/gas/tritium = MINIMUM_MOLE_COUNT, - /datum/gas/oxygen = MINIMUM_MOLE_COUNT + /datum/gas/oxygen = MINIMUM_MOLE_COUNT, + "MIN_TEMP" = FIRE_MINIMUM_TEMPERATURE_TO_EXIST ) /datum/gas_reaction/tritfire/react(datum/gas_mixture/air, datum/holder) @@ -202,15 +180,15 @@ nobiliumsuppression = INFINITY //plasma combustion: combustion of oxygen and plasma (treated as hydrocarbons). creates hotspots. exothermic /datum/gas_reaction/plasmafire - priority = -4 //fire should ALWAYS be last, but plasma fires happen after tritium fires + priority_group = PRIORITY_FIRE name = "Plasma Combustion" id = "plasmafire" /datum/gas_reaction/plasmafire/init_reqs() - min_requirements = list( - "TEMP" = FIRE_MINIMUM_TEMPERATURE_TO_EXIST, + requirements = list( /datum/gas/plasma = MINIMUM_MOLE_COUNT, - /datum/gas/oxygen = MINIMUM_MOLE_COUNT + /datum/gas/oxygen = MINIMUM_MOLE_COUNT, + "MIN_TEMP" = FIRE_MINIMUM_TEMPERATURE_TO_EXIST ) /datum/gas_reaction/plasmafire/react(datum/gas_mixture/air, datum/holder) @@ -275,15 +253,15 @@ nobiliumsuppression = INFINITY //freon reaction (is not a fire yet) /datum/gas_reaction/freonfire - priority = -5 + priority_group = PRIORITY_FIRE name = "Freon combustion" id = "freonfire" /datum/gas_reaction/freonfire/init_reqs() - min_requirements = list( + requirements = list( /datum/gas/oxygen = MINIMUM_MOLE_COUNT, /datum/gas/freon = MINIMUM_MOLE_COUNT, - "TEMP" = FREON_LOWER_TEMPERATURE, + "MIN_TEMP" = FREON_LOWER_TEMPERATURE, "MAX_TEMP" = FREON_MAXIMUM_BURN_TEMPERATURE ) @@ -324,22 +302,24 @@ nobiliumsuppression = INFINITY new /obj/item/stack/sheet/hot_ice(location) energy_released += FIRE_FREON_ENERGY_RELEASED * (freon_burn_rate) + . = REACTING if(energy_released < 0) var/new_heat_capacity = air.heat_capacity() if(new_heat_capacity > MINIMUM_HEAT_CAPACITY) air.temperature = (temperature * old_heat_capacity + energy_released) / new_heat_capacity + . = REACTING /datum/gas_reaction/h2fire - priority = -3 //fire should ALWAYS be last, but tritium fires happen before plasma fires + priority_group = PRIORITY_FIRE name = "Hydrogen Combustion" id = "h2fire" /datum/gas_reaction/h2fire/init_reqs() - min_requirements = list( - "TEMP" = FIRE_MINIMUM_TEMPERATURE_TO_EXIST, + requirements = list( /datum/gas/hydrogen = MINIMUM_MOLE_COUNT, - /datum/gas/oxygen = MINIMUM_MOLE_COUNT + /datum/gas/oxygen = MINIMUM_MOLE_COUNT, + "MIN_TEMP" = FIRE_MINIMUM_TEMPERATURE_TO_EXIST ) /datum/gas_reaction/h2fire/react(datum/gas_mixture/air, datum/holder) @@ -387,16 +367,16 @@ nobiliumsuppression = INFINITY return cached_results["fire"] ? REACTING : NO_REACTION /datum/gas_reaction/nitrousformation //formationn of n2o, esothermic, requires bz as catalyst - priority = 3 + priority_group = PRIORITY_FORMATION name = "Nitrous Oxide formation" id = "nitrousformation" /datum/gas_reaction/nitrousformation/init_reqs() - min_requirements = list( + requirements = list( /datum/gas/oxygen = 10, /datum/gas/nitrogen = 20, /datum/gas/bz = 5, - "TEMP" = 200, + "MIN_TEMP" = 200, "MAX_TEMP" = 250 ) @@ -406,9 +386,11 @@ nobiliumsuppression = INFINITY var/old_heat_capacity = air.heat_capacity() var/heat_efficency = min(cached_gases[/datum/gas/oxygen][MOLES], cached_gases[/datum/gas/nitrogen][MOLES]) var/energy_used = heat_efficency * NITROUS_FORMATION_ENERGY - ASSERT_GAS(/datum/gas/nitrous_oxide, air) + if ((cached_gases[/datum/gas/oxygen][MOLES] - heat_efficency < 0 ) || (cached_gases[/datum/gas/nitrogen][MOLES] - heat_efficency * 2 < 0)) //Shouldn't produce gas from nothing. return NO_REACTION + + ASSERT_GAS(/datum/gas/nitrous_oxide, air) cached_gases[/datum/gas/oxygen][MOLES] -= heat_efficency cached_gases[/datum/gas/nitrogen][MOLES] -= heat_efficency * 2 cached_gases[/datum/gas/nitrous_oxide][MOLES] += heat_efficency @@ -420,12 +402,12 @@ nobiliumsuppression = INFINITY return REACTING /datum/gas_reaction/nitryl_decomposition //The decomposition of nitryl. Exothermic. Requires oxygen as catalyst. - priority = 21 + priority_group = PRIORITY_PRE_FORMATION name = "Nitryl Decomposition" id = "nitryl_decomp" /datum/gas_reaction/nitryl_decomposition/init_reqs() - min_requirements = list( + requirements = list( /datum/gas/oxygen = MINIMUM_MOLE_COUNT, /datum/gas/nitryl = MINIMUM_MOLE_COUNT, "MAX_TEMP" = 600 @@ -437,9 +419,11 @@ nobiliumsuppression = INFINITY var/old_heat_capacity = air.heat_capacity() var/heat_efficency = min(temperature / (FIRE_MINIMUM_TEMPERATURE_TO_EXIST * 8), cached_gases[/datum/gas/nitryl][MOLES]) var/energy_produced = heat_efficency * NITRYL_DECOMPOSITION_ENERGY - ASSERT_GAS(/datum/gas/nitrogen, air) + if ((cached_gases[/datum/gas/nitryl][MOLES] - heat_efficency < 0)) //Shouldn't produce gas from nothing. return NO_REACTION + + ASSERT_GAS(/datum/gas/nitrogen, air) cached_gases[/datum/gas/nitryl][MOLES] -= heat_efficency cached_gases[/datum/gas/oxygen][MOLES] += heat_efficency cached_gases[/datum/gas/nitrogen][MOLES] += heat_efficency @@ -451,16 +435,16 @@ nobiliumsuppression = INFINITY return REACTING /datum/gas_reaction/nitrylformation //The formation of nitryl. Endothermic. Requires bz. - priority = 3 + priority_group = PRIORITY_FORMATION name = "Nitryl formation" id = "nitrylformation" /datum/gas_reaction/nitrylformation/init_reqs() - min_requirements = list( + requirements = list( /datum/gas/oxygen = 10, /datum/gas/nitrogen = 10, /datum/gas/bz = 5, - "TEMP" = 1500, + "MIN_TEMP" = 1500, "MAX_TEMP" = 10000 ) @@ -474,6 +458,8 @@ nobiliumsuppression = INFINITY ASSERT_GAS(/datum/gas/nitryl, air) if ((cached_gases[/datum/gas/oxygen][MOLES] - heat_efficency < 0 ) || (cached_gases[/datum/gas/nitrogen][MOLES] - heat_efficency < 0) || (cached_gases[/datum/gas/bz][MOLES] - heat_efficency * 0.05 < 0)) //Shouldn't produce gas from nothing. return NO_REACTION + + ASSERT_GAS(/datum/gas/nitryl, air) cached_gases[/datum/gas/oxygen][MOLES] -= heat_efficency cached_gases[/datum/gas/nitrogen][MOLES] -= heat_efficency cached_gases[/datum/gas/bz][MOLES] -= heat_efficency * 0.05 //bz gets consumed to balance the nitryl production and not make it too common and/or easy @@ -486,12 +472,12 @@ nobiliumsuppression = INFINITY return REACTING /datum/gas_reaction/bzformation //Formation of BZ by combining plasma and tritium at low pressures. Exothermic. - priority = 4 + priority_group = PRIORITY_FORMATION name = "BZ Gas formation" id = "bzformation" /datum/gas_reaction/bzformation/init_reqs() - min_requirements = list( + requirements = list( /datum/gas/nitrous_oxide = 10, /datum/gas/plasma = 10 ) @@ -505,6 +491,7 @@ nobiliumsuppression = INFINITY var/energy_released = 2 * reaction_efficency * FIRE_CARBON_ENERGY_RELEASED if ((cached_gases[/datum/gas/nitrous_oxide][MOLES] - reaction_efficency < 0 )|| (cached_gases[/datum/gas/plasma][MOLES] - (2 * reaction_efficency) < 0) || energy_released <= 0) //Shouldn't produce gas from nothing. return NO_REACTION + ASSERT_GAS(/datum/gas/bz, air) cached_gases[/datum/gas/bz][MOLES] += reaction_efficency * 2.5 if(reaction_efficency == cached_gases[/datum/gas/nitrous_oxide][MOLES]) @@ -521,16 +508,16 @@ nobiliumsuppression = INFINITY return REACTING /datum/gas_reaction/freonformation - priority = 5 + priority_group = PRIORITY_FORMATION name = "Freon formation" id = "freonformation" /datum/gas_reaction/freonformation/init_reqs() //minimum requirements for freon formation - min_requirements = list( + requirements = list( /datum/gas/plasma = 40, /datum/gas/carbon_dioxide = 20, /datum/gas/bz = 20, - "TEMP" = FIRE_MINIMUM_TEMPERATURE_TO_EXIST + 100 + "MIN_TEMP" = FIRE_MINIMUM_TEMPERATURE_TO_EXIST + 100 ) /datum/gas_reaction/freonformation/react(datum/gas_mixture/air) @@ -539,9 +526,10 @@ nobiliumsuppression = INFINITY var/old_heat_capacity = air.heat_capacity() var/heat_efficency = min(temperature / (FIRE_MINIMUM_TEMPERATURE_TO_EXIST * 10), cached_gases[/datum/gas/plasma][MOLES], cached_gases[/datum/gas/carbon_dioxide][MOLES], cached_gases[/datum/gas/bz][MOLES]) var/energy_used = heat_efficency * 100 - ASSERT_GAS(/datum/gas/freon, air) if ((cached_gases[/datum/gas/plasma][MOLES] - heat_efficency * 1.5 < 0 ) || (cached_gases[/datum/gas/carbon_dioxide][MOLES] - heat_efficency * 0.75 < 0) || (cached_gases[/datum/gas/bz][MOLES] - heat_efficency * 0.25 < 0)) //Shouldn't produce gas from nothing. return NO_REACTION + + ASSERT_GAS(/datum/gas/freon, air) cached_gases[/datum/gas/plasma][MOLES] -= heat_efficency * 1.5 cached_gases[/datum/gas/carbon_dioxide][MOLES] -= heat_efficency * 0.75 cached_gases[/datum/gas/bz][MOLES] -= heat_efficency * 0.25 @@ -554,16 +542,16 @@ nobiliumsuppression = INFINITY return REACTING /datum/gas_reaction/stimformation //Stimulum formation follows a strange pattern of how effective it will be at a given temperature, having some multiple peaks and some large dropoffs. Exo and endo thermic. - priority = 6 + priority_group = PRIORITY_FORMATION name = "Stimulum formation" id = "stimformation" /datum/gas_reaction/stimformation/init_reqs() - min_requirements = list( + requirements = list( /datum/gas/tritium = 30, /datum/gas/bz = 20, /datum/gas/nitryl = 30, - "TEMP" = 1500) + "MIN_TEMP" = 1500) /datum/gas_reaction/stimformation/react(datum/gas_mixture/air) var/list/cached_gases = air.gases @@ -574,9 +562,10 @@ nobiliumsuppression = INFINITY ASSERT_GAS(/datum/gas/stimulum, air) if ((cached_gases[/datum/gas/tritium][MOLES] - heat_scale < 0 ) || (cached_gases[/datum/gas/nitryl][MOLES] - heat_scale < 0)) //Shouldn't produce gas from nothing. return NO_REACTION - cached_gases[/datum/gas/stimulum][MOLES]+= heat_scale * 0.75 + cached_gases[/datum/gas/stimulum][MOLES] += heat_scale * 0.75 cached_gases[/datum/gas/tritium][MOLES] -= heat_scale cached_gases[/datum/gas/nitryl][MOLES] -= heat_scale + if(stim_energy_change) var/new_heat_capacity = air.heat_capacity() if(new_heat_capacity > MINIMUM_HEAT_CAPACITY) @@ -584,15 +573,15 @@ nobiliumsuppression = INFINITY return REACTING /datum/gas_reaction/nobliumformation //Hyper-Noblium formation is extrememly endothermic, but requires high temperatures to start. Due to its high mass, hyper-nobelium uses large amounts of nitrogen and tritium. BZ can be used as a catalyst to make it less endothermic. - priority = 7 + priority_group = PRIORITY_FORMATION name = "Hyper-Noblium condensation" id = "nobformation" /datum/gas_reaction/nobliumformation/init_reqs() - min_requirements = list( + requirements = list( /datum/gas/nitrogen = 10, /datum/gas/tritium = 5, - "TEMP" = TCMB, + "MIN_TEMP" = TCMB, "MAX_TEMP" = 15 ) @@ -604,6 +593,7 @@ nobiliumsuppression = INFINITY var/energy_produced = nob_formed * (NOBLIUM_FORMATION_ENERGY / (max(cached_gases[/datum/gas/bz][MOLES], 1))) if ((cached_gases[/datum/gas/tritium][MOLES] - 5 * nob_formed < 0) || (cached_gases[/datum/gas/nitrogen][MOLES] - 10 * nob_formed < 0)) return NO_REACTION + cached_gases[/datum/gas/tritium][MOLES] -= 5 * nob_formed cached_gases[/datum/gas/nitrogen][MOLES] -= 10 * nob_formed cached_gases[/datum/gas/hypernoblium][MOLES] += nob_formed @@ -612,24 +602,25 @@ nobiliumsuppression = INFINITY var/new_heat_capacity = air.heat_capacity() if(new_heat_capacity > MINIMUM_HEAT_CAPACITY) air.temperature = max(((air.temperature * old_heat_capacity + energy_produced) / new_heat_capacity), TCMB) + return REACTING /datum/gas_reaction/miaster //dry heat sterilization: clears out pathogens in the air - priority = -10 //after all the heating from fires etc. is done + priority_group = PRIORITY_POST_FORMATION name = "Dry Heat Sterilization" id = "sterilization" /datum/gas_reaction/miaster/init_reqs() - min_requirements = list( - "TEMP" = FIRE_MINIMUM_TEMPERATURE_TO_EXIST+70, - /datum/gas/miasma = MINIMUM_MOLE_COUNT - ) + requirements = list( + /datum/gas/miasma = MINIMUM_MOLE_COUNT, + "MIN_TEMP" = FIRE_MINIMUM_TEMPERATURE_TO_EXIST+70 + ) /datum/gas_reaction/miaster/react(datum/gas_mixture/air, datum/holder) var/list/cached_gases = air.gases // As the name says it, it needs to be dry if(cached_gases[/datum/gas/water_vapor] && cached_gases[/datum/gas/water_vapor][MOLES] / air.total_moles() > 0.1) - return + return NO_REACTION //Replace miasma with oxygen var/cleaned_air = min(cached_gases[/datum/gas/miasma][MOLES], 20 + (air.temperature - FIRE_MINIMUM_TEMPERATURE_TO_EXIST - 70) / 20) @@ -640,16 +631,18 @@ nobiliumsuppression = INFINITY //Possibly burning a bit of organic matter through maillard reaction, so a *tiny* bit more heat would be understandable air.temperature += cleaned_air * 0.002 + return REACTING + /datum/gas_reaction/halon_formation - priority = 12 + priority_group = PRIORITY_FORMATION name = "Halon formation" id = "halon_formation" /datum/gas_reaction/halon_formation/init_reqs() - min_requirements = list( + requirements = list( /datum/gas/bz = MINIMUM_MOLE_COUNT, /datum/gas/tritium = MINIMUM_MOLE_COUNT, - "TEMP" = 30, + "MIN_TEMP" = 30, "MAX_TEMP" = 55 ) @@ -673,15 +666,15 @@ nobiliumsuppression = INFINITY return REACTING /datum/gas_reaction/healium_formation - priority = 9 + priority_group = PRIORITY_FORMATION name = "Healium formation" id = "healium_formation" /datum/gas_reaction/healium_formation/init_reqs() - min_requirements = list( + requirements = list( /datum/gas/bz = MINIMUM_MOLE_COUNT, /datum/gas/freon = MINIMUM_MOLE_COUNT, - "TEMP" = 25, + "MIN_TEMP" = 25, "MAX_TEMP" = 300 ) @@ -705,15 +698,15 @@ nobiliumsuppression = INFINITY return REACTING /datum/gas_reaction/proto_nitrate_formation - priority = 10 + priority_group = PRIORITY_FORMATION name = "Proto Nitrate formation" id = "proto_nitrate_formation" /datum/gas_reaction/proto_nitrate_formation/init_reqs() - min_requirements = list( + requirements = list( /datum/gas/pluoxium = MINIMUM_MOLE_COUNT, /datum/gas/hydrogen = MINIMUM_MOLE_COUNT, - "TEMP" = 5000, + "MIN_TEMP" = 5000, "MAX_TEMP" = 10000 ) @@ -737,15 +730,15 @@ nobiliumsuppression = INFINITY return REACTING /datum/gas_reaction/zauker_formation - priority = 11 + priority_group = PRIORITY_FORMATION name = "Zauker formation" id = "zauker_formation" /datum/gas_reaction/zauker_formation/init_reqs() - min_requirements = list( + requirements = list( /datum/gas/hypernoblium = MINIMUM_MOLE_COUNT, /datum/gas/stimulum = MINIMUM_MOLE_COUNT, - "TEMP" = 50000, + "MIN_TEMP" = 50000, "MAX_TEMP" = 75000 ) @@ -769,15 +762,15 @@ nobiliumsuppression = INFINITY return REACTING /datum/gas_reaction/halon_o2removal - priority = -1 + priority_group = PRIORITY_PRE_FORMATION name = "Halon o2 removal" id = "halon_o2removal" /datum/gas_reaction/halon_o2removal/init_reqs() - min_requirements = list( + requirements = list( /datum/gas/halon = MINIMUM_MOLE_COUNT, /datum/gas/oxygen = MINIMUM_MOLE_COUNT, - "TEMP" = FIRE_MINIMUM_TEMPERATURE_TO_EXIST + "MIN_TEMP" = FIRE_MINIMUM_TEMPERATURE_TO_EXIST ) /datum/gas_reaction/halon_o2removal/react(datum/gas_mixture/air, datum/holder) @@ -800,12 +793,12 @@ nobiliumsuppression = INFINITY return REACTING /datum/gas_reaction/zauker_decomp - priority = 8 + priority_group = PRIORITY_POST_FORMATION name = "Zauker decomposition" id = "zauker_decomp" /datum/gas_reaction/zauker_decomp/init_reqs() - min_requirements = list( + requirements = list( /datum/gas/nitrogen = MINIMUM_MOLE_COUNT, /datum/gas/zauker = MINIMUM_MOLE_COUNT ) @@ -836,15 +829,15 @@ nobiliumsuppression = INFINITY return NO_REACTION /datum/gas_reaction/proto_nitrate_bz_response - priority = 13 + priority_group = PRIORITY_PRE_FORMATION name = "Proto Nitrate bz response" id = "proto_nitrate_bz_response" /datum/gas_reaction/proto_nitrate_bz_response/init_reqs() - min_requirements = list( + requirements = list( /datum/gas/proto_nitrate = MINIMUM_MOLE_COUNT, /datum/gas/bz = MINIMUM_MOLE_COUNT, - "TEMP" = 260, + "MIN_TEMP" = 260, "MAX_TEMP" = 280 ) @@ -876,15 +869,15 @@ nobiliumsuppression = INFINITY return REACTING /datum/gas_reaction/proto_nitrate_tritium_response - priority = 16 + priority_group = PRIORITY_PRE_FORMATION name = "Proto Nitrate tritium response" id = "proto_nitrate_tritium_response" /datum/gas_reaction/proto_nitrate_tritium_response/init_reqs() - min_requirements = list( + requirements = list( /datum/gas/proto_nitrate = MINIMUM_MOLE_COUNT, /datum/gas/tritium = MINIMUM_MOLE_COUNT, - "TEMP" = 150, + "MIN_TEMP" = 150, "MAX_TEMP" = 340 ) @@ -912,12 +905,12 @@ nobiliumsuppression = INFINITY return REACTING /datum/gas_reaction/proto_nitrate_hydrogen_response - priority = 17 + priority_group = PRIORITY_PRE_FORMATION name = "Proto Nitrate hydrogen response" id = "proto_nitrate_hydrogen_response" /datum/gas_reaction/proto_nitrate_hydrogen_response/init_reqs() - min_requirements = list( + requirements = list( /datum/gas/proto_nitrate = MINIMUM_MOLE_COUNT, /datum/gas/hydrogen = 150, ) @@ -940,16 +933,16 @@ nobiliumsuppression = INFINITY return REACTING /datum/gas_reaction/pluox_formation - priority = 2 + priority_group = PRIORITY_FORMATION name = "Pluoxium formation" id = "pluox_formation" /datum/gas_reaction/pluox_formation/init_reqs() - min_requirements = list( + requirements = list( /datum/gas/carbon_dioxide = MINIMUM_MOLE_COUNT, /datum/gas/oxygen = MINIMUM_MOLE_COUNT, /datum/gas/tritium = MINIMUM_MOLE_COUNT, - "TEMP" = 50, + "MIN_TEMP" = 50, "MAX_TEMP" = T0C ) diff --git a/code/modules/atmospherics/machinery/bluespace_vendor.dm b/code/modules/atmospherics/machinery/bluespace_vendor.dm index aec02f10ad0..e09bc7c4ce5 100644 --- a/code/modules/atmospherics/machinery/bluespace_vendor.dm +++ b/code/modules/atmospherics/machinery/bluespace_vendor.dm @@ -120,7 +120,7 @@ update_appearance() return - connected_machine.bluespace_network.pump_gas_to(internal_tank.air_contents, (tank_filling_amount * 0.01) * 10 * ONE_ATMOSPHERE, gas_path) + connected_machine.bluespace_network.pump_gas_to(internal_tank.return_air(), (tank_filling_amount * 0.01) * 10 * ONE_ATMOSPHERE, gas_path) /obj/machinery/bluespace_vendor/multitool_act(mob/living/user, obj/item/multitool/multitool) if(!istype(multitool)) @@ -191,13 +191,14 @@ ///Check the price of the current tank, if the user doesn't have the money the gas will be merged back into the network /obj/machinery/bluespace_vendor/proc/check_price(mob/user) var/temp_price = 0 - var/list/gases = internal_tank.air_contents.gases + var/datum/gas_mixture/working_mix = internal_tank.return_air() + var/list/gases = working_mix.gases for(var/gas_id in gases) temp_price += gases[gas_id][MOLES] * connected_machine.base_prices[gas_id] gas_price = temp_price if(attempt_charge(src, user, gas_price) & COMPONENT_OBJ_CANCEL_CHARGE) - var/datum/gas_mixture/remove = internal_tank.air_contents.remove(internal_tank.air_contents.total_moles()) + var/datum/gas_mixture/remove = working_mix.remove_ratio(1) connected_machine.bluespace_network.merge(remove) return connected_machine.credits_gained += gas_price + tank_cost @@ -241,7 +242,8 @@ data["inserted_tank"] = inserted_tank var/total_tank_pressure if(internal_tank) - total_tank_pressure = internal_tank.air_contents.return_pressure() + var/datum/gas_mixture/working_mix = internal_tank.return_air() + total_tank_pressure = working_mix.return_pressure() else total_tank_pressure = 0 data["tank_full"] = total_tank_pressure diff --git a/code/modules/atmospherics/machinery/components/binary_devices/temperature_gate.dm b/code/modules/atmospherics/machinery/components/binary_devices/temperature_gate.dm index 8448f279117..523ad96e9fb 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/temperature_gate.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/temperature_gate.dm @@ -51,7 +51,6 @@ /obj/machinery/atmospherics/components/binary/temperature_gate/process_atmos() - if(!on || !is_operational) return diff --git a/code/modules/atmospherics/machinery/components/binary_devices/temperature_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/temperature_pump.dm index 54d0de6b76c..3a1e7196ae2 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/temperature_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/temperature_pump.dm @@ -30,7 +30,6 @@ icon_state = "tpump_[on && is_operational ? "on" : "off"]-[set_overlay_offset(piping_layer)]" /obj/machinery/atmospherics/components/binary/temperature_pump/process_atmos() - if(!on || !is_operational) return @@ -51,12 +50,11 @@ var/cooling_heat_amount = (heat_transfer_rate * 0.01) * coolant_temperature_delta * (input_capacity * output_capacity / (input_capacity + output_capacity)) remove_input.temperature = max(remove_input.temperature - (cooling_heat_amount / input_capacity), TCMB) remove_output.temperature = max(remove_output.temperature + (cooling_heat_amount / output_capacity), TCMB) + update_parents() air_input.merge(remove_input) air_output.merge(remove_output) - update_parents() - /obj/machinery/atmospherics/components/binary/temperature_pump/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/binary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/binary_devices/thermomachine.dm index e27fb1e8c43..d8b572e7b23 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/thermomachine.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/thermomachine.dm @@ -415,8 +415,9 @@ data["holding"] = holding ? TRUE : FALSE data["tank_gas"] = FALSE - if(holding && holding.air_contents.total_moles()) - data["tank_gas"] = TRUE + if(holding) + var/datum/gas_mixture/holding_mix = holding.return_air() + data["tank_gas"] = !!holding_mix.total_moles() data["use_env_heat"] = use_enviroment_heat data["skipping_work"] = skipping_work data["auto_thermal_regulator"] = auto_thermal_regulator @@ -459,7 +460,8 @@ if("pumping") if(holding && nodes[2]) var/datum/gas_mixture/thermal_exchange_port = airs[2] - var/datum/gas_mixture/remove = holding.air_contents.remove(holding.air_contents.total_moles()) + var/datum/gas_mixture/holding_mix = holding.return_air() + var/datum/gas_mixture/remove = holding_mix.remove_ratio(1) thermal_exchange_port.merge(remove) . = TRUE if("eject") 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 33ac78cde62..557879a6420 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm @@ -75,6 +75,9 @@ var/datum/gas_mixture/removed = air1.remove_ratio(transfer_ratio) + if(!removed.total_moles()) + return + if(overclocked)//Some of the gas from the mixture leaks to the environment when overclocked var/turf/open/T = loc if(istype(T)) diff --git a/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer.dm b/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer.dm index 145a7deaf54..a7cf88c4e43 100644 --- a/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer.dm +++ b/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer.dm @@ -142,8 +142,10 @@ if(selected_recipe.reaction_type == "endothermic") internal.temperature = max(internal.temperature - (selected_recipe.energy_release / internal.heat_capacity()), TCMB) + update_parents() else if(selected_recipe.reaction_type == "exothermic") internal.temperature = max(internal.temperature + (selected_recipe.energy_release / internal.heat_capacity()), TCMB) + update_parents() ///Conduction between the internal gasmix and the moderating (cooling/heating) gasmix. /obj/machinery/atmospherics/components/binary/crystallizer/proc/heat_conduction() @@ -156,7 +158,7 @@ var/cooling_heat_amount = HIGH_CONDUCTIVITY_RATIO * coolant_temperature_delta * (cooling_heat_capacity * internal_heat_capacity / (cooling_heat_capacity + internal_heat_capacity)) cooling_port.temperature = max(cooling_port.temperature - cooling_heat_amount / cooling_heat_capacity, TCMB) internal.temperature = max(internal.temperature + cooling_heat_amount / internal_heat_capacity, TCMB) - update_parents() + update_parents() ///Calculate the total moles needed for the recipe /obj/machinery/atmospherics/components/binary/crystallizer/proc/moles_calculations() @@ -179,7 +181,6 @@ inject_gases() if(!internal.total_moles()) - update_parents() return heat_conduction() diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm index 2b8fcb2247a..c5dbba0e930 100644 --- a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm +++ b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm @@ -79,7 +79,7 @@ var/datum/gas_mixture/removed = air1.remove_ratio(transfer_ratio) - if(!removed) + if(!removed || !removed.total_moles()) return var/filtering = TRUE diff --git a/code/modules/atmospherics/machinery/components/unary_devices/heat_exchanger.dm b/code/modules/atmospherics/machinery/components/unary_devices/heat_exchanger.dm index dbec0cf3cbc..66d632b29b3 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/heat_exchanger.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/heat_exchanger.dm @@ -55,24 +55,24 @@ partner.update_cycle = SSair.times_fired var/datum/gas_mixture/air_contents = airs[1] - var/datum/gas_mixture/partner_air_contents = partner.airs[1] + var/datum/gas_mixture/partnerair_contents = partner.airs[1] var/air_heat_capacity = air_contents.heat_capacity() - var/other_air_heat_capacity = partner_air_contents.heat_capacity() + var/other_air_heat_capacity = partnerair_contents.heat_capacity() var/combined_heat_capacity = other_air_heat_capacity + air_heat_capacity var/old_temperature = air_contents.temperature - var/other_old_temperature = partner_air_contents.temperature + var/other_old_temperature = partnerair_contents.temperature if(combined_heat_capacity > 0) - var/combined_energy = partner_air_contents.temperature*other_air_heat_capacity + air_heat_capacity*air_contents.temperature + var/combined_energy = partnerair_contents.temperature*other_air_heat_capacity + air_heat_capacity*air_contents.temperature var/new_temperature = combined_energy/combined_heat_capacity air_contents.temperature = new_temperature - partner_air_contents.temperature = new_temperature + partnerair_contents.temperature = new_temperature if(abs(old_temperature-air_contents.temperature) > 1) update_parents() - if(abs(other_old_temperature-partner_air_contents.temperature) > 1) + if(abs(other_old_temperature-partnerair_contents.temperature) > 1) partner.update_parents() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm index 270928b3e7c..a5d0bbbdd11 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm @@ -70,6 +70,9 @@ if(air_contents.temperature > 0) var/transfer_moles = (air_contents.return_pressure() * volume_rate) / (air_contents.temperature * R_IDEAL_GAS_EQUATION) + if(!transfer_moles) + return + var/datum/gas_mixture/removed = air_contents.remove(transfer_moles) location.assume_air(removed) @@ -85,15 +88,18 @@ var/datum/gas_mixture/air_contents = airs[1] injecting = 1 - + flick("inje_inject", src) + if(air_contents.temperature > 0) var/transfer_moles = (air_contents.return_pressure() * volume_rate) / (air_contents.temperature * R_IDEAL_GAS_EQUATION) + + if(!transfer_moles) + return + var/datum/gas_mixture/removed = air_contents.remove(transfer_moles) loc.assume_air(removed) update_parents() - flick("inje_inject", src) - /obj/machinery/atmospherics/components/unary/outlet_injector/proc/set_frequency(new_frequency) SSradio.remove_object(src, frequency) frequency = new_frequency 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 afe846fd5ba..cb23088d1e3 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm @@ -114,8 +114,12 @@ var/transfer_moles = (pressure_delta*environment.volume)/(air_contents.temperature * R_IDEAL_GAS_EQUATION) var/datum/gas_mixture/removed = air_contents.remove(transfer_moles) + if(!removed || !removed.total_moles()) + return + loc.assume_air(removed) air_update_turf(FALSE, FALSE) + update_parents() else // external -> internal var/pressure_delta = 10000 @@ -128,12 +132,13 @@ var/transfer_moles = (pressure_delta * air_contents.volume) / (environment.temperature * R_IDEAL_GAS_EQUATION) var/datum/gas_mixture/removed = loc.remove_air(transfer_moles) - if (isnull(removed)) // in space + + if(!removed || !removed.total_moles()) //No venting from space 4head return air_contents.merge(removed) air_update_turf(FALSE, FALSE) - update_parents() + update_parents() //Radio remote control 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 aa551bc26de..801a66f7aa7 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm @@ -191,6 +191,7 @@ air_contents.merge(filtered_out) tile.assume_air(removed) tile.air_update_turf(FALSE, FALSE) + update_parents() else //Just siphoning all air @@ -200,8 +201,7 @@ air_contents.merge(removed) tile.air_update_turf(FALSE, FALSE) - - update_parents() + update_parents() return TRUE diff --git a/code/modules/atmospherics/machinery/datum_pipeline.dm b/code/modules/atmospherics/machinery/datum_pipeline.dm index 2655954d429..cdf2c61babd 100644 --- a/code/modules/atmospherics/machinery/datum_pipeline.dm +++ b/code/modules/atmospherics/machinery/datum_pipeline.dm @@ -32,11 +32,10 @@ return ..() /datum/pipeline/process() - if(building) + if(!update || building) return - if(update) - update = FALSE - reconcile_air() + reconcile_air() + //Only react if the mix has changed, and don't keep updating if it hasn't update = air.react(src) ///Preps a pipeline for rebuilding, insterts it into the rebuild queue diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index 48506769d06..805642cdcad 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -297,6 +297,7 @@ GLOBAL_LIST_INIT(gas_id_to_canister, init_gas_id_to_canister()) air_contents.gases[/datum/gas/hydrogen][MOLES] = 300 air_contents.gases[/datum/gas/tritium][MOLES] = 300 air_contents.temperature = 10000 + SSair.start_processing_machine(src) /** * Getter for the amount of time left in the timer of prototype canisters @@ -375,11 +376,13 @@ GLOBAL_LIST_INIT(gas_id_to_canister, init_gas_id_to_canister()) if(starter_temp) air_contents.temperature = starter_temp air_contents.gases[gas_type][MOLES] = (maximum_pressure * filled) * air_contents.volume / (R_IDEAL_GAS_EQUATION * air_contents.temperature) + SSair.start_processing_machine(src) /obj/machinery/portable_atmospherics/canister/air/create_gas() air_contents.add_gases(/datum/gas/oxygen, /datum/gas/nitrogen) air_contents.gases[/datum/gas/oxygen][MOLES] = (O2STANDARD * maximum_pressure * filled) * air_contents.volume / (R_IDEAL_GAS_EQUATION * air_contents.temperature) air_contents.gases[/datum/gas/nitrogen][MOLES] = (N2STANDARD * maximum_pressure * filled) * air_contents.volume / (R_IDEAL_GAS_EQUATION * air_contents.temperature) + SSair.start_processing_machine(src) /obj/machinery/portable_atmospherics/canister/update_icon_state() if(machine_stat & BROKEN) @@ -502,7 +505,6 @@ GLOBAL_LIST_INIT(gas_id_to_canister, init_gas_id_to_canister()) investigate_log("[key_name(user)] started a transfer into [holding].", INVESTIGATE_ATMOS) /obj/machinery/portable_atmospherics/canister/process_atmos() - . = ..() if(machine_stat & BROKEN) return PROCESS_KILL if(timing && valve_timer < world.time) @@ -513,7 +515,7 @@ GLOBAL_LIST_INIT(gas_id_to_canister, init_gas_id_to_canister()) var/mix_air = FALSE var/pressure = release_pressure - var/gas_mix = holding?.air_contents + var/gas_mix = holding?.return_air() var/air_update = FALSE if(valve_open) @@ -522,6 +524,7 @@ GLOBAL_LIST_INIT(gas_id_to_canister, init_gas_id_to_canister()) // When at least 10% of integrity is lost it starts checking for leaking if(obj_integrity < max_integrity * 0.9) var/leak_chance = (1 - obj_integrity / max_integrity) * 100 + excited = TRUE if(prob(leak_chance)) mix_air = TRUE pressure = air_contents.return_pressure() / 10 @@ -531,6 +534,7 @@ GLOBAL_LIST_INIT(gas_id_to_canister, init_gas_id_to_canister()) // Handle gas transfer. if(mix_air) var/datum/gas_mixture/target_air = gas_mix || location.return_air() + excited = TRUE if(air_contents.release_gas_to(target_air, pressure) && (!holding || air_update)) air_update_turf(FALSE, FALSE) @@ -541,8 +545,11 @@ GLOBAL_LIST_INIT(gas_id_to_canister, init_gas_id_to_canister()) ///function used to check the limit of the canisters and also set the amount of damage that the canister can receive, if the heat and pressure are way higher than the limit the more damage will be done if(our_temperature > heat_limit || our_pressure > pressure_limit) take_damage(clamp((our_temperature/heat_limit) * (our_pressure/pressure_limit), 5, 50), BURN, 0) + excited = TRUE update_appearance() + return ..() + /obj/machinery/portable_atmospherics/canister/ui_state(mob/user) return GLOB.physical_state @@ -584,10 +591,11 @@ GLOBAL_LIST_INIT(gas_id_to_canister, init_gas_id_to_canister()) ) if (holding) + var/datum/gas_mixture/holding_mix = holding.return_air() . += list( "holdingTank" = list( "name" = holding.name, - "tankPressure" = round(holding.air_contents.return_pressure()) + "tankPressure" = round(holding_mix.return_pressure()) ) ) @@ -641,6 +649,7 @@ GLOBAL_LIST_INIT(gas_id_to_canister, init_gas_id_to_canister()) var/logmsg valve_open = !valve_open if(valve_open) + SSair.start_processing_machine(src) logmsg = "Valve was opened by [key_name(usr)], starting a transfer into \the [holding || "air"].
" if(!holding) var/list/danger = list() diff --git a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm index cc173d27548..48ed86a9d4c 100644 --- a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm +++ b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm @@ -6,7 +6,7 @@ armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 100, BOMB = 0, BIO = 100, RAD = 100, FIRE = 60, ACID = 30) anchored = FALSE - ///Stores the gas mixture of the portable component + ///Stores the gas mixture of the portable component. Don't access this directly, use return_air() so you support the temporary processing it provides var/datum/gas_mixture/air_contents ///Stores the reference of the connecting port var/obj/machinery/atmospherics/components/unary/portables_connector/connected_port @@ -14,6 +14,8 @@ var/obj/item/tank/holding ///Volume (in L) of the inside of the machine var/volume = 0 + ///Used to track if anything of note has happen while running process_atmos() + var/excited = TRUE /obj/machinery/portable_atmospherics/Initialize() . = ..() @@ -26,8 +28,7 @@ SSair.stop_processing_machine(src) disconnect() - qdel(air_contents) - air_contents = null + QDEL_NULL(air_contents) return ..() @@ -44,10 +45,14 @@ return ..() /obj/machinery/portable_atmospherics/process_atmos() - if(!connected_port) // Pipe network handles reactions if connected. - air_contents.react(src) + if(!connected_port) // Pipe network handles reactions if connected, and we can't stop processing if there's a port effecting our mix + excited = (excited | air_contents.react(src)) + if(!excited) + return PROCESS_KILL + excited = FALSE /obj/machinery/portable_atmospherics/return_air() + SSair.start_processing_machine(src) return air_contents /obj/machinery/portable_atmospherics/return_analyzable_air() @@ -76,6 +81,8 @@ anchored = TRUE //Prevent movement pixel_x = new_port.pixel_x pixel_y = new_port.pixel_y + + SSair.start_processing_machine(src) update_appearance() return TRUE @@ -95,6 +102,8 @@ connected_port = null pixel_x = 0 pixel_y = 0 + + SSair.start_processing_machine(src) update_appearance() return TRUE @@ -129,6 +138,8 @@ holding = null if(new_tank) holding = new_tank + + SSair.start_processing_machine(src) update_appearance() return TRUE @@ -205,3 +216,4 @@ if(gas_change) air_contents.garbage_collect() + SSair.start_processing_machine(src) diff --git a/code/modules/atmospherics/machinery/portable/pump.dm b/code/modules/atmospherics/machinery/portable/pump.dm index 92605f4ddff..95107e683de 100644 --- a/code/modules/atmospherics/machinery/portable/pump.dm +++ b/code/modules/atmospherics/machinery/portable/pump.dm @@ -45,31 +45,34 @@ . += "siphon-connector" /obj/machinery/portable_atmospherics/pump/process_atmos() - . = ..() var/pressure = air_contents.return_pressure() var/temperature = air_contents.return_temperature() ///function used to check the limit of the pumps and also set the amount of damage that the pump can receive, if the heat and pressure are way higher than the limit the more damage will be done if(temperature > heat_limit || pressure > pressure_limit) take_damage(clamp((temperature/heat_limit) * (pressure/pressure_limit), 5, 50), BURN, 0) - return + excited = TRUE + return ..() if(!on) - return + return ..() + + excited = TRUE var/turf/T = get_turf(src) var/datum/gas_mixture/sending var/datum/gas_mixture/receiving if(direction == PUMP_OUT) // Hook up the internal pump. - sending = (holding ? holding.air_contents : air_contents) + sending = (holding ? holding.return_air() : air_contents) receiving = (holding ? air_contents : T.return_air()) else sending = (holding ? air_contents : T.return_air()) - receiving = (holding ? holding.air_contents : air_contents) - + receiving = (holding ? holding.return_air() : air_contents) if(sending.pump_gas_to(receiving, target_pressure) && !holding) air_update_turf(FALSE, FALSE) // Update the environment if needed. + return ..() + /obj/machinery/portable_atmospherics/pump/emp_act(severity) . = ..() if(. & EMP_PROTECT_SELF) @@ -78,6 +81,8 @@ return if(prob(50 / severity)) on = !on + if(on) + SSair.start_processing_machine(src) if(prob(100 / severity)) direction = PUMP_OUT target_pressure = rand(0, 100 * ONE_ATMOSPHERE) @@ -114,7 +119,8 @@ if(holding) data["holding"] = list() data["holding"]["name"] = holding.name - data["holding"]["pressure"] = round(holding.air_contents.return_pressure()) + var/datum/gas_mixture/holding_mix = holding.return_air() + data["holding"]["pressure"] = round(holding_mix.return_pressure()) else data["holding"] = null return data @@ -126,6 +132,8 @@ switch(action) if("power") on = !on + if(on) + SSair.start_processing_machine(src) if(on && !holding) var/plasma = air_contents.gases[/datum/gas/plasma] var/n2o = air_contents.gases[/datum/gas/nitrous_oxide] diff --git a/code/modules/atmospherics/machinery/portable/scrubber.dm b/code/modules/atmospherics/machinery/portable/scrubber.dm index b3a3f5cec13..4474af74000 100644 --- a/code/modules/atmospherics/machinery/portable/scrubber.dm +++ b/code/modules/atmospherics/machinery/portable/scrubber.dm @@ -55,22 +55,24 @@ . += "scrubber-connector" /obj/machinery/portable_atmospherics/scrubber/process_atmos() - . = ..() var/pressure = air_contents.return_pressure() var/temperature = air_contents.return_temperature() ///function used to check the limit of the scrubbers and also set the amount of damage that the scrubber can receive, if the heat and pressure are way higher than the limit the more damage will be done if(temperature > heat_limit || pressure > pressure_limit) take_damage(clamp((temperature/heat_limit) * (pressure/pressure_limit), 5, 50), BURN, 0) - return + excited = TRUE + return ..() if(!on) - return + return ..() - if(holding) - scrub(holding.air_contents) - else - var/turf/T = get_turf(src) - scrub(T.return_air()) + excited = TRUE + + var/atom/target = holding || get_turf(src) + scrub(target.return_air()) + + + return ..() /** * Called in process_atmos(), handles the scrubbing of the given gas_mixture @@ -107,6 +109,8 @@ if(is_operational) if(prob(50 / severity)) on = !on + if(on) + SSair.start_processing_machine(src) update_appearance() /obj/machinery/portable_atmospherics/scrubber/ui_interact(mob/user, datum/tgui/ui) @@ -130,7 +134,8 @@ if(holding) data["holding"] = list() data["holding"]["name"] = holding.name - data["holding"]["pressure"] = round(holding.air_contents.return_pressure()) + var/datum/gas_mixture/holding_mix = holding.return_air() + data["holding"]["pressure"] = round(holding_mix.return_pressure()) else data["holding"] = null return data @@ -153,6 +158,8 @@ switch(action) if("power") on = !on + if(on) + SSair.start_processing_machine(src) . = TRUE if("eject") if(holding) @@ -193,14 +200,17 @@ update_appearance() use_power = on ? ACTIVE_POWER_USE : IDLE_POWER_USE if(!on) - return + return ..() + + excited = TRUE - ..() if(!holding) var/turf/T = get_turf(src) for(var/turf/AT in T.GetAtmosAdjacentTurfs(alldir = TRUE)) scrub(AT.return_air()) + return ..() + /obj/machinery/portable_atmospherics/scrubber/huge/attackby(obj/item/W, mob/user) if(default_unfasten_wrench(user, W)) if(!movable) diff --git a/code/modules/cargo/bounties/engineering.dm b/code/modules/cargo/bounties/engineering.dm index 99c89589d1d..da3c8650618 100644 --- a/code/modules/cargo/bounties/engineering.dm +++ b/code/modules/cargo/bounties/engineering.dm @@ -10,9 +10,10 @@ if(!..()) return FALSE var/obj/item/tank/T = O - if(!T.air_contents.gases[gas_type]) + var/datum/gas_mixture/our_mix = T.return_air() + if(!our_mix.gases[gas_type]) return FALSE - return T.air_contents.gases[gas_type][MOLES] >= moles_required + return our_mix.gases[gas_type][MOLES] >= moles_required /datum/bounty/item/engineering/gas/nitryl_tank name = "Full Tank of Nitryl" diff --git a/code/modules/cargo/exports/large_objects.dm b/code/modules/cargo/exports/large_objects.dm index 4d1275a0cef..a52a1b4be60 100644 --- a/code/modules/cargo/exports/large_objects.dm +++ b/code/modules/cargo/exports/large_objects.dm @@ -110,7 +110,8 @@ /datum/export/large/gas_canister/get_cost(obj/O) var/obj/machinery/portable_atmospherics/canister/C = O var/worth = cost - var/canister_mix = C.air_contents.gases + var/datum/gas_mixture/canister_mix = C.return_air() + var/canister_gas = canister_mix.gases var/list/gases_to_check = list( /datum/gas/bz, /datum/gas/stimulum, @@ -129,11 +130,11 @@ ) for(var/gasID in gases_to_check) - C.air_contents.assert_gas(gasID) - if(canister_mix[gasID][MOLES] > 0) - worth += get_gas_value(gasID, canister_mix[gasID][MOLES]) + canister_mix.assert_gas(gasID) + if(canister_gas[gasID][MOLES] > 0) + worth += get_gas_value(gasID, canister_gas[gasID][MOLES]) - C.air_contents.garbage_collect() + canister_mix.garbage_collect() return worth /datum/export/large/gas_canister/proc/get_gas_value(datum/gas/gasType, moles) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 092543f4f31..b73ea9c06c2 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -67,12 +67,13 @@ . += "Combat mode: [combat_mode ? "On" : "Off"]" . += "Move Mode: [m_intent]" if (internal) - if (!internal.air_contents) - qdel(internal) + var/datum/gas_mixture/internal_air = internal.return_air() + if (!internal_air) + QDEL_NULL(internal) else . += "" . += "Internal Atmosphere Info: [internal.name]" - . += "Tank Pressure: [internal.air_contents.return_pressure()]" + . += "Tank Pressure: [internal_air.return_pressure()]" . += "Distribution Pressure: [internal.distribute_pressure]" if(istype(wear_suit, /obj/item/clothing/suit/space)) var/obj/item/clothing/suit/space/S = wear_suit diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index 77101c402b6..3de508cc7bc 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -44,16 +44,17 @@ /obj/machinery/power/rad_collector/process(delta_time) if(!loaded_tank) return - if(!loaded_tank.air_contents.gases[/datum/gas/plasma]) + var/datum/gas_mixture/tank_mix = loaded_tank.return_air() + if(!tank_mix.gases[/datum/gas/plasma]) investigate_log("out of fuel.", INVESTIGATE_SINGULO) playsound(src, 'sound/machines/ding.ogg', 50, TRUE) eject() return - var/gas_drained = min(power_production_drain * drain_ratio * delta_time, loaded_tank.air_contents.gases[/datum/gas/plasma][MOLES]) - loaded_tank.air_contents.gases[/datum/gas/plasma][MOLES] -= gas_drained - loaded_tank.air_contents.assert_gas(/datum/gas/tritium) - loaded_tank.air_contents.gases[/datum/gas/tritium][MOLES] += gas_drained - loaded_tank.air_contents.garbage_collect() + var/gasdrained = min(power_production_drain * drain_ratio * delta_time, tank_mix.gases[/datum/gas/plasma][MOLES]) + tank_mix.gases[/datum/gas/plasma][MOLES] -= gasdrained + tank_mix.assert_gas(/datum/gas/tritium) + tank_mix.gases[/datum/gas/tritium][MOLES] += gasdrained + tank_mix.garbage_collect() var/power_produced = RAD_COLLECTOR_OUTPUT add_avail(power_produced) @@ -68,9 +69,10 @@ toggle_power() user.visible_message("[user.name] turns the [src.name] [active? "on":"off"].", \ "You turn the [src.name] [active? "on":"off"].") + var/datum/gas_mixture/tank_mix = loaded_tank.return_air() var/fuel if(loaded_tank) - fuel = loaded_tank.air_contents.gases[/datum/gas/plasma] + fuel = tank_mix.gases[/datum/gas/plasma] fuel = fuel ? fuel[MOLES] : 0 investigate_log("turned [active?"on":"off"] by [key_name(user)]. [loaded_tank?"Fuel: [round(fuel/0.29)]%":"It is empty"].", INVESTIGATE_SINGULO) diff --git a/code/modules/surgery/organs/augments_chest.dm b/code/modules/surgery/organs/augments_chest.dm index 416c5062639..a43e46f61f8 100644 --- a/code/modules/surgery/organs/augments_chest.dm +++ b/code/modules/surgery/organs/augments_chest.dm @@ -214,9 +214,9 @@ return TRUE // Priority 3: use internals tank. - var/obj/item/tank/I = owner.internal - if(I && I.air_contents && I.air_contents.total_moles() > num) - var/datum/gas_mixture/removed = I.air_contents.remove(num) + var/datum/gas_mixture/internal_mix = owner.internal.return_air() + if(internal_mix && internal_mix.total_moles() > num) + var/datum/gas_mixture/removed = internal_mix.remove(num) if(removed.total_moles() > 0.005) T.assume_air(removed) ion_trail.generate_effect() diff --git a/code/modules/vehicles/mecha/equipment/tools/other_tools.dm b/code/modules/vehicles/mecha/equipment/tools/other_tools.dm index d93fad2063c..58ba67b975f 100644 --- a/code/modules/vehicles/mecha/equipment/tools/other_tools.dm +++ b/code/modules/vehicles/mecha/equipment/tools/other_tools.dm @@ -540,11 +540,12 @@ /obj/item/mecha_parts/mecha_equipment/thrusters/gas/thrust(movement_dir) if(!chassis || !chassis.internal_tank) return FALSE - var/moles = chassis.internal_tank.air_contents.total_moles() + var/datum/gas_mixture/our_mix = chassis.internal_tank.return_air() + var/moles = our_mix.total_moles() if(moles < move_cost) - chassis.internal_tank.air_contents.remove(moles) + our_mix.remove(moles) return FALSE - chassis.internal_tank.air_contents.remove(move_cost) + our_mix.remove(move_cost) generate_effect(movement_dir) return TRUE