diff --git a/_maps/map_files/Delta/delta.dmm b/_maps/map_files/Delta/delta.dmm index a8fefed799d..54ad9d08447 100644 --- a/_maps/map_files/Delta/delta.dmm +++ b/_maps/map_files/Delta/delta.dmm @@ -24058,29 +24058,17 @@ pressure_checks_default = 2; pump_direction = 0 }, -/turf/simulated/floor/engine{ - name = "air floor"; - nitrogen = 10580; - oxygen = 2644 - }, +/turf/simulated/floor/engine/air, /area/atmos) "aUm" = ( /obj/machinery/camera{ c_tag = "Atmospherics Air Tank"; network = list("SS13","Engineering") }, -/turf/simulated/floor/engine{ - name = "air floor"; - nitrogen = 10580; - oxygen = 2644 - }, +/turf/simulated/floor/engine/air, /area/atmos) "aUn" = ( -/turf/simulated/floor/engine{ - name = "air floor"; - nitrogen = 10580; - oxygen = 2644 - }, +/turf/simulated/floor/engine/air, /area/atmos) "aUo" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -25034,31 +25022,19 @@ frequency = 1441; id_tag = "air_sensor" }, -/turf/simulated/floor/engine{ - name = "air floor"; - nitrogen = 10580; - oxygen = 2644 - }, +/turf/simulated/floor/engine/air, /area/atmos) "aVT" = ( /obj/machinery/portable_atmospherics/canister/air{ anchored = 1 }, -/turf/simulated/floor/engine{ - name = "air floor"; - nitrogen = 10580; - oxygen = 2644 - }, +/turf/simulated/floor/engine/air, /area/atmos) "aVU" = ( /obj/machinery/light/small{ dir = 4 }, -/turf/simulated/floor/engine{ - name = "air floor"; - nitrogen = 10580; - oxygen = 2644 - }, +/turf/simulated/floor/engine/air, /area/atmos) "aVV" = ( /obj/structure/table/wood, @@ -25824,24 +25800,14 @@ /turf/simulated/floor/plating, /area/security/prison) "aXa" = ( -/turf/simulated/floor/engine{ - carbon_dioxide = 50000; - name = "co2 floor"; - nitrogen = 0; - oxygen = 0 - }, +/turf/simulated/floor/engine/co2, /area/atmos) "aXb" = ( /obj/machinery/camera{ c_tag = "Atmospherics CO2 Tank"; network = list("SS13","Engineering") }, -/turf/simulated/floor/engine{ - carbon_dioxide = 50000; - name = "co2 floor"; - nitrogen = 0; - oxygen = 0 - }, +/turf/simulated/floor/engine/co2, /area/atmos) "aXc" = ( /obj/machinery/atmospherics/unary/vent_pump{ @@ -25860,12 +25826,7 @@ pressure_checks_default = 2; pump_direction = 0 }, -/turf/simulated/floor/engine{ - carbon_dioxide = 50000; - name = "co2 floor"; - nitrogen = 0; - oxygen = 0 - }, +/turf/simulated/floor/engine/co2, /area/atmos) "aXd" = ( /obj/structure/grille, @@ -26062,11 +26023,7 @@ frequency = 1441; id = "air_in" }, -/turf/simulated/floor/engine{ - name = "air floor"; - nitrogen = 10580; - oxygen = 2644 - }, +/turf/simulated/floor/engine/air, /area/atmos) "aXy" = ( /obj/structure/cable{ @@ -26589,35 +26546,20 @@ /obj/machinery/light/small{ dir = 8 }, -/turf/simulated/floor/engine{ - carbon_dioxide = 50000; - name = "co2 floor"; - nitrogen = 0; - oxygen = 0 - }, +/turf/simulated/floor/engine/co2, /area/atmos) "aYv" = ( /obj/machinery/portable_atmospherics/canister/carbon_dioxide{ anchored = 1 }, -/turf/simulated/floor/engine{ - carbon_dioxide = 50000; - name = "co2 floor"; - nitrogen = 0; - oxygen = 0 - }, +/turf/simulated/floor/engine/co2, /area/atmos) "aYw" = ( /obj/machinery/air_sensor{ frequency = 1441; id_tag = "co2_sensor" }, -/turf/simulated/floor/engine{ - carbon_dioxide = 50000; - name = "co2 floor"; - nitrogen = 0; - oxygen = 0 - }, +/turf/simulated/floor/engine/co2, /area/atmos) "aYx" = ( /obj/structure/window/reinforced{ @@ -27718,12 +27660,7 @@ frequency = 1441; id = "co2_in" }, -/turf/simulated/floor/engine{ - carbon_dioxide = 50000; - name = "co2 floor"; - nitrogen = 0; - oxygen = 0 - }, +/turf/simulated/floor/engine/co2, /area/atmos) "bah" = ( /obj/structure/grille, @@ -27932,29 +27869,17 @@ pressure_checks_default = 2; pump_direction = 0 }, -/turf/simulated/floor/engine{ - name = "o2 floor"; - nitrogen = 0; - oxygen = 100000 - }, +/turf/simulated/floor/engine/o2, /area/atmos) "baA" = ( /obj/machinery/camera{ c_tag = "Atmospherics Oxygen Tank"; network = list("SS13","Engineering") }, -/turf/simulated/floor/engine{ - name = "o2 floor"; - nitrogen = 0; - oxygen = 100000 - }, +/turf/simulated/floor/engine/o2, /area/atmos) "baB" = ( -/turf/simulated/floor/engine{ - name = "o2 floor"; - nitrogen = 0; - oxygen = 100000 - }, +/turf/simulated/floor/engine/o2, /area/atmos) "baC" = ( /obj/effect/decal/cleanable/dirt, @@ -28759,31 +28684,19 @@ frequency = 1441; id_tag = "o2_sensor" }, -/turf/simulated/floor/engine{ - name = "o2 floor"; - nitrogen = 0; - oxygen = 100000 - }, +/turf/simulated/floor/engine/o2, /area/atmos) "bbZ" = ( /obj/machinery/portable_atmospherics/canister/oxygen{ anchored = 1 }, -/turf/simulated/floor/engine{ - name = "o2 floor"; - nitrogen = 0; - oxygen = 100000 - }, +/turf/simulated/floor/engine/o2, /area/atmos) "bca" = ( /obj/machinery/light/small{ dir = 4 }, -/turf/simulated/floor/engine{ - name = "o2 floor"; - nitrogen = 0; - oxygen = 100000 - }, +/turf/simulated/floor/engine/o2, /area/atmos) "bcb" = ( /obj/effect/decal/cleanable/dirt, @@ -29370,26 +29283,14 @@ }, /area/shuttle/pod_3) "bdk" = ( -/turf/simulated/floor/engine{ - carbon_dioxide = 0; - name = "plasma floor"; - nitrogen = 0; - oxygen = 0; - toxins = 70000 - }, +/turf/simulated/floor/engine/plasma, /area/atmos) "bdl" = ( /obj/machinery/camera{ c_tag = "Atmospherics Toxins Tank"; network = list("SS13","Engineering") }, -/turf/simulated/floor/engine{ - carbon_dioxide = 0; - name = "plasma floor"; - nitrogen = 0; - oxygen = 0; - toxins = 70000 - }, +/turf/simulated/floor/engine/plasma, /area/atmos) "bdm" = ( /obj/machinery/atmospherics/unary/vent_pump{ @@ -29408,13 +29309,7 @@ pressure_checks_default = 2; pump_direction = 0 }, -/turf/simulated/floor/engine{ - carbon_dioxide = 0; - name = "plasma floor"; - nitrogen = 0; - oxygen = 0; - toxins = 70000 - }, +/turf/simulated/floor/engine/plasma, /area/atmos) "bdn" = ( /obj/structure/window/reinforced{ @@ -29502,11 +29397,7 @@ frequency = 1441; id = "o2_in" }, -/turf/simulated/floor/engine{ - name = "o2 floor"; - nitrogen = 0; - oxygen = 100000 - }, +/turf/simulated/floor/engine/o2, /area/atmos) "bdw" = ( /obj/structure/reagent_dispensers/watertank, @@ -30166,38 +30057,20 @@ /obj/machinery/light/small{ dir = 8 }, -/turf/simulated/floor/engine{ - carbon_dioxide = 0; - name = "plasma floor"; - nitrogen = 0; - oxygen = 0; - toxins = 70000 - }, +/turf/simulated/floor/engine/plasma, /area/atmos) "beF" = ( /obj/machinery/portable_atmospherics/canister/toxins{ anchored = 1 }, -/turf/simulated/floor/engine{ - carbon_dioxide = 0; - name = "plasma floor"; - nitrogen = 0; - oxygen = 0; - toxins = 70000 - }, +/turf/simulated/floor/engine/plasma, /area/atmos) "beG" = ( /obj/machinery/air_sensor{ frequency = 1441; id_tag = "tox_sensor" }, -/turf/simulated/floor/engine{ - carbon_dioxide = 0; - name = "plasma floor"; - nitrogen = 0; - oxygen = 0; - toxins = 70000 - }, +/turf/simulated/floor/engine/plasma, /area/atmos) "beH" = ( /obj/structure/window/reinforced{ @@ -30872,13 +30745,7 @@ frequency = 1441; id = "tox_in" }, -/turf/simulated/floor/engine{ - carbon_dioxide = 0; - name = "plasma floor"; - nitrogen = 0; - oxygen = 0; - toxins = 70000 - }, +/turf/simulated/floor/engine/plasma, /area/atmos) "bgb" = ( /obj/structure/window/reinforced, @@ -30999,29 +30866,17 @@ pressure_checks_default = 2; pump_direction = 0 }, -/turf/simulated/floor/engine{ - name = "n2 floor"; - nitrogen = 100000; - oxygen = 0 - }, +/turf/simulated/floor/engine/n2, /area/atmos) "bgl" = ( /obj/machinery/camera{ c_tag = "Atmospherics Nitrogen Tank"; network = list("SS13","Engineering") }, -/turf/simulated/floor/engine{ - name = "n2 floor"; - nitrogen = 100000; - oxygen = 0 - }, +/turf/simulated/floor/engine/n2, /area/atmos) "bgm" = ( -/turf/simulated/floor/engine{ - name = "n2 floor"; - nitrogen = 100000; - oxygen = 0 - }, +/turf/simulated/floor/engine/n2, /area/atmos) "bgn" = ( /turf/simulated/floor/plasteel{ @@ -31594,31 +31449,19 @@ frequency = 1441; id_tag = "n2_sensor" }, -/turf/simulated/floor/engine{ - name = "n2 floor"; - nitrogen = 100000; - oxygen = 0 - }, +/turf/simulated/floor/engine/n2, /area/atmos) "bht" = ( /obj/machinery/portable_atmospherics/canister/nitrogen{ anchored = 1 }, -/turf/simulated/floor/engine{ - name = "n2 floor"; - nitrogen = 100000; - oxygen = 0 - }, +/turf/simulated/floor/engine/n2, /area/atmos) "bhu" = ( /obj/machinery/light/small{ dir = 4 }, -/turf/simulated/floor/engine{ - name = "n2 floor"; - nitrogen = 100000; - oxygen = 0 - }, +/turf/simulated/floor/engine/n2, /area/atmos) "bhv" = ( /obj/structure/reagent_dispensers/watertank, @@ -32533,11 +32376,7 @@ frequency = 1441; id = "n2_in" }, -/turf/simulated/floor/engine{ - name = "n2 floor"; - nitrogen = 100000; - oxygen = 0 - }, +/turf/simulated/floor/engine/n2, /area/atmos) "bjc" = ( /obj/structure/closet/crate, diff --git a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm index 773ff5cb937..bcb253857e7 100644 --- a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm +++ b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm @@ -55399,9 +55399,7 @@ /turf/simulated/floor/engine/n20, /area/atmos) "bRk" = ( -/obj/machinery/portable_atmospherics/canister/sleeping_agent/roomfiller{ - valve_open = 1 - }, +/obj/machinery/portable_atmospherics/canister/sleeping_agent, /turf/simulated/floor/engine/n20, /area/atmos) "bRl" = ( @@ -57907,35 +57905,17 @@ pressure_checks = 2; pump_direction = 0 }, -/turf/simulated/floor/engine{ - carbon_dioxide = 0; - name = "plasma floor"; - nitrogen = 0; - oxygen = 0; - toxins = 70000 - }, +/turf/simulated/floor/engine/plasma, /area/atmos) "bVV" = ( -/turf/simulated/floor/engine{ - carbon_dioxide = 0; - name = "plasma floor"; - nitrogen = 0; - oxygen = 0; - toxins = 70000 - }, +/turf/simulated/floor/engine/plasma, /area/atmos) "bVW" = ( /obj/effect/landmark{ name = "xeno_spawn"; pixel_x = -1 }, -/turf/simulated/floor/engine{ - carbon_dioxide = 0; - name = "plasma floor"; - nitrogen = 0; - oxygen = 0; - toxins = 70000 - }, +/turf/simulated/floor/engine/plasma, /area/atmos) "bVY" = ( /obj/structure/window/reinforced{ @@ -58797,35 +58777,17 @@ frequency = 1441; id_tag = "tox_sensor" }, -/turf/simulated/floor/engine{ - carbon_dioxide = 0; - name = "plasma floor"; - nitrogen = 0; - oxygen = 0; - toxins = 70000 - }, +/turf/simulated/floor/engine/plasma, /area/atmos) "bXA" = ( /obj/machinery/portable_atmospherics/canister/toxins, -/turf/simulated/floor/engine{ - carbon_dioxide = 0; - name = "plasma floor"; - nitrogen = 0; - oxygen = 0; - toxins = 70000 - }, +/turf/simulated/floor/engine/plasma, /area/atmos) "bXB" = ( /obj/machinery/light/small{ dir = 4 }, -/turf/simulated/floor/engine{ - carbon_dioxide = 0; - name = "plasma floor"; - nitrogen = 0; - oxygen = 0; - toxins = 70000 - }, +/turf/simulated/floor/engine/plasma, /area/atmos) "bXH" = ( /obj/structure/cable/yellow{ @@ -59451,13 +59413,7 @@ id = "tox_in"; pixel_y = 1 }, -/turf/simulated/floor/engine{ - carbon_dioxide = 0; - name = "plasma floor"; - nitrogen = 0; - oxygen = 0; - toxins = 70000 - }, +/turf/simulated/floor/engine/plasma, /area/atmos) "bYP" = ( /obj/item/storage/belt/utility, @@ -59976,13 +59932,7 @@ dir = 8; network = list("SS13") }, -/turf/simulated/floor/engine{ - carbon_dioxide = 0; - name = "plasma floor"; - nitrogen = 0; - oxygen = 0; - toxins = 70000 - }, +/turf/simulated/floor/engine/plasma, /area/atmos) "bZP" = ( /turf/simulated/wall, @@ -60850,20 +60800,10 @@ pressure_checks = 2; pump_direction = 0 }, -/turf/simulated/floor/engine{ - carbon_dioxide = 50000; - name = "co2 floor"; - nitrogen = 0; - oxygen = 0 - }, +/turf/simulated/floor/engine/co2, /area/atmos) "cbl" = ( -/turf/simulated/floor/engine{ - carbon_dioxide = 50000; - name = "co2 floor"; - nitrogen = 0; - oxygen = 0 - }, +/turf/simulated/floor/engine/co2, /area/atmos) "cbm" = ( /obj/machinery/atmospherics/unary/vent_pump{ @@ -61344,32 +61284,17 @@ frequency = 1441; id_tag = "co2_sensor" }, -/turf/simulated/floor/engine{ - carbon_dioxide = 50000; - name = "co2 floor"; - nitrogen = 0; - oxygen = 0 - }, +/turf/simulated/floor/engine/co2, /area/atmos) "cci" = ( /obj/machinery/portable_atmospherics/canister/carbon_dioxide, -/turf/simulated/floor/engine{ - carbon_dioxide = 50000; - name = "co2 floor"; - nitrogen = 0; - oxygen = 0 - }, +/turf/simulated/floor/engine/co2, /area/atmos) "ccj" = ( /obj/machinery/light/small{ dir = 4 }, -/turf/simulated/floor/engine{ - carbon_dioxide = 50000; - name = "co2 floor"; - nitrogen = 0; - oxygen = 0 - }, +/turf/simulated/floor/engine/co2, /area/atmos) "ccl" = ( /obj/effect/landmark{ @@ -62198,12 +62123,7 @@ id = "co2_in"; pixel_y = 1 }, -/turf/simulated/floor/engine{ - carbon_dioxide = 50000; - name = "co2 floor"; - nitrogen = 0; - oxygen = 0 - }, +/turf/simulated/floor/engine/co2, /area/atmos) "cdA" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -62396,12 +62316,7 @@ dir = 8; network = list("SS13") }, -/turf/simulated/floor/engine{ - carbon_dioxide = 50000; - name = "co2 floor"; - nitrogen = 0; - oxygen = 0 - }, +/turf/simulated/floor/engine/co2, /area/atmos) "cdT" = ( /turf/simulated/wall, @@ -69133,22 +69048,14 @@ frequency = 1441; id = "n2_in" }, -/turf/simulated/floor/engine{ - name = "n2 floor"; - nitrogen = 100000; - oxygen = 0 - }, +/turf/simulated/floor/engine/n2, /area/atmos) "cpi" = ( /obj/machinery/air_sensor{ frequency = 1441; id_tag = "n2_sensor" }, -/turf/simulated/floor/engine{ - name = "n2 floor"; - nitrogen = 100000; - oxygen = 0 - }, +/turf/simulated/floor/engine/n2, /area/atmos) "cpj" = ( /obj/machinery/atmospherics/unary/vent_pump{ @@ -69162,11 +69069,7 @@ pressure_checks = 2; pump_direction = 0 }, -/turf/simulated/floor/engine{ - name = "n2 floor"; - nitrogen = 100000; - oxygen = 0 - }, +/turf/simulated/floor/engine/n2, /area/atmos) "cpk" = ( /obj/machinery/atmospherics/unary/outlet_injector/on{ @@ -69174,22 +69077,14 @@ frequency = 1441; id = "o2_in" }, -/turf/simulated/floor/engine{ - name = "o2 floor"; - nitrogen = 0; - oxygen = 100000 - }, +/turf/simulated/floor/engine/o2, /area/atmos) "cpl" = ( /obj/machinery/air_sensor{ frequency = 1441; id_tag = "o2_sensor" }, -/turf/simulated/floor/engine{ - name = "o2 floor"; - nitrogen = 0; - oxygen = 100000 - }, +/turf/simulated/floor/engine/o2, /area/atmos) "cpm" = ( /obj/machinery/atmospherics/unary/vent_pump{ @@ -69203,11 +69098,7 @@ pressure_checks = 2; pump_direction = 0 }, -/turf/simulated/floor/engine{ - name = "o2 floor"; - nitrogen = 0; - oxygen = 100000 - }, +/turf/simulated/floor/engine/o2, /area/atmos) "cpn" = ( /obj/machinery/atmospherics/unary/outlet_injector/on{ @@ -69215,11 +69106,7 @@ frequency = 1443; id = "air_in" }, -/turf/simulated/floor/engine{ - name = "air floor"; - nitrogen = 10580; - oxygen = 2644 - }, +/turf/simulated/floor/engine/air, /area/atmos) "cpo" = ( /obj/machinery/air_sensor{ @@ -69227,11 +69114,7 @@ id_tag = "air_sensor"; output = 7 }, -/turf/simulated/floor/engine{ - name = "air floor"; - nitrogen = 10580; - oxygen = 2644 - }, +/turf/simulated/floor/engine/air, /area/atmos) "cpp" = ( /obj/machinery/atmospherics/unary/vent_pump/high_volume{ @@ -69245,11 +69128,7 @@ pressure_checks = 2; pump_direction = 0 }, -/turf/simulated/floor/engine{ - name = "air floor"; - nitrogen = 10580; - oxygen = 2644 - }, +/turf/simulated/floor/engine/air, /area/atmos) "cpq" = ( /obj/machinery/atmospherics/binary/pump{ @@ -70140,19 +70019,11 @@ name = "\improper Secure Lab" }) "cqK" = ( -/turf/simulated/floor/engine{ - name = "n2 floor"; - nitrogen = 100000; - oxygen = 0 - }, +/turf/simulated/floor/engine/n2, /area/atmos) "cqL" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, -/turf/simulated/floor/engine{ - name = "n2 floor"; - nitrogen = 100000; - oxygen = 0 - }, +/turf/simulated/floor/engine/n2, /area/atmos) "cqM" = ( /obj/machinery/door_control{ @@ -70163,19 +70034,11 @@ /turf/simulated/floor/engine, /area/toxins/explab) "cqN" = ( -/turf/simulated/floor/engine{ - name = "o2 floor"; - nitrogen = 0; - oxygen = 100000 - }, +/turf/simulated/floor/engine/o2, /area/atmos) "cqO" = ( /obj/machinery/portable_atmospherics/canister/oxygen, -/turf/simulated/floor/engine{ - name = "o2 floor"; - nitrogen = 0; - oxygen = 100000 - }, +/turf/simulated/floor/engine/o2, /area/atmos) "cqP" = ( /obj/structure/cable{ @@ -70190,19 +70053,11 @@ name = "xeno_spawn"; pixel_x = -1 }, -/turf/simulated/floor/engine{ - name = "air floor"; - nitrogen = 10580; - oxygen = 2644 - }, +/turf/simulated/floor/engine/air, /area/atmos) "cqR" = ( /obj/machinery/portable_atmospherics/canister/air, -/turf/simulated/floor/engine{ - name = "air floor"; - nitrogen = 10580; - oxygen = 2644 - }, +/turf/simulated/floor/engine/air, /area/atmos) "cqS" = ( /obj/machinery/camera{ @@ -70210,11 +70065,7 @@ dir = 8; network = list("SS13") }, -/turf/simulated/floor/engine{ - name = "n2 floor"; - nitrogen = 100000; - oxygen = 0 - }, +/turf/simulated/floor/engine/n2, /area/atmos) "cqT" = ( /obj/machinery/atmospherics/unary/outlet_injector/on{ @@ -70418,11 +70269,7 @@ dir = 8; network = list("SS13") }, -/turf/simulated/floor/engine{ - name = "o2 floor"; - nitrogen = 0; - oxygen = 100000 - }, +/turf/simulated/floor/engine/o2, /area/atmos) "crm" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -70487,11 +70334,7 @@ dir = 8; network = list("SS13") }, -/turf/simulated/floor/engine{ - name = "air floor"; - nitrogen = 10580; - oxygen = 2644 - }, +/turf/simulated/floor/engine/air, /area/atmos) "crr" = ( /turf/simulated/floor/plasteel{ @@ -71112,34 +70955,18 @@ /area/space/nearstation) "csq" = ( /obj/machinery/light/small, -/turf/simulated/floor/engine{ - name = "n2 floor"; - nitrogen = 100000; - oxygen = 0 - }, +/turf/simulated/floor/engine/n2, /area/atmos) "csr" = ( /obj/machinery/light/small, -/turf/simulated/floor/engine{ - name = "o2 floor"; - nitrogen = 0; - oxygen = 100000 - }, +/turf/simulated/floor/engine/o2, /area/atmos) "css" = ( -/turf/simulated/floor/engine{ - name = "air floor"; - nitrogen = 10580; - oxygen = 2644 - }, +/turf/simulated/floor/engine/air, /area/atmos) "cst" = ( /obj/machinery/light/small, -/turf/simulated/floor/engine{ - name = "air floor"; - nitrogen = 10580; - oxygen = 2644 - }, +/turf/simulated/floor/engine/air, /area/atmos) "csu" = ( /obj/item/stack/rods{ diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm index e99384893a1..835da590501 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm @@ -857,21 +857,13 @@ frequency = 1442; id_tag = "syndie_lavaland_n2_sensor" }, -/turf/simulated/floor/engine{ - name = "n2 floor"; - nitrogen = 100000; - oxygen = 0 - }, +/turf/simulated/floor/engine/n2, /area/ruin/unpowered/syndicate_lava_base/engineering) "bt" = ( /obj/machinery/light/small{ dir = 4 }, -/turf/simulated/floor/engine{ - name = "n2 floor"; - nitrogen = 100000; - oxygen = 0 - }, +/turf/simulated/floor/engine/n2, /area/ruin/unpowered/syndicate_lava_base/engineering) "bu" = ( /obj/machinery/atmospherics/unary/vent_pump/siphon/on{ @@ -880,11 +872,7 @@ id_tag = "syndie_lavaland_n2_out"; name = "nitrogen out" }, -/turf/simulated/floor/engine{ - name = "n2 floor"; - nitrogen = 100000; - oxygen = 0 - }, +/turf/simulated/floor/engine/n2, /area/ruin/unpowered/syndicate_lava_base/engineering) "bv" = ( /obj/effect/turf_decal/stripes/line{ @@ -1243,32 +1231,20 @@ /area/ruin/unpowered/syndicate_lava_base/main) "cg" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, -/turf/simulated/floor/engine{ - name = "n2 floor"; - nitrogen = 100000; - oxygen = 0 - }, +/turf/simulated/floor/engine/n2, /area/ruin/unpowered/syndicate_lava_base/engineering) "ch" = ( /obj/machinery/air_sensor{ frequency = 1442; id_tag = "syndie_lavaland_o2_sensor" }, -/turf/simulated/floor/engine{ - name = "o2 floor"; - nitrogen = 0; - oxygen = 100000 - }, +/turf/simulated/floor/engine/o2, /area/ruin/unpowered/syndicate_lava_base/engineering) "ci" = ( /obj/machinery/light/small{ dir = 4 }, -/turf/simulated/floor/engine{ - name = "o2 floor"; - nitrogen = 0; - oxygen = 100000 - }, +/turf/simulated/floor/engine/o2, /area/ruin/unpowered/syndicate_lava_base/engineering) "cj" = ( /obj/machinery/atmospherics/unary/vent_pump/siphon/on{ @@ -1277,19 +1253,11 @@ id_tag = "syndie_lavaland_o2_out"; name = "oxygen out" }, -/turf/simulated/floor/engine{ - name = "o2 floor"; - nitrogen = 0; - oxygen = 100000 - }, +/turf/simulated/floor/engine/o2, /area/ruin/unpowered/syndicate_lava_base/engineering) "ck" = ( /obj/machinery/portable_atmospherics/canister/oxygen, -/turf/simulated/floor/engine{ - name = "o2 floor"; - nitrogen = 0; - oxygen = 100000 - }, +/turf/simulated/floor/engine/o2, /area/ruin/unpowered/syndicate_lava_base/engineering) "cl" = ( /obj/machinery/atmospherics/unary/vent_pump/siphon/on{ @@ -1298,46 +1266,22 @@ id_tag = "syndie_lavaland_tox_out"; name = "toxin out" }, -/turf/simulated/floor/engine{ - carbon_dioxide = 0; - name = "plasma floor"; - nitrogen = 0; - oxygen = 0; - toxins = 70000 - }, +/turf/simulated/floor/engine/plasma, /area/ruin/unpowered/syndicate_lava_base/engineering) "cm" = ( /obj/machinery/air_sensor{ frequency = 1442; id_tag = "syndie_lavaland_tox_sensor" }, -/turf/simulated/floor/engine{ - carbon_dioxide = 0; - name = "plasma floor"; - nitrogen = 0; - oxygen = 0; - toxins = 70000 - }, +/turf/simulated/floor/engine/plasma, /area/ruin/unpowered/syndicate_lava_base/engineering) "cn" = ( /obj/machinery/portable_atmospherics/canister/toxins, -/turf/simulated/floor/engine{ - carbon_dioxide = 0; - name = "plasma floor"; - nitrogen = 0; - oxygen = 0; - toxins = 70000 - }, +/turf/simulated/floor/engine/plasma, /area/ruin/unpowered/syndicate_lava_base/engineering) "co" = ( /obj/machinery/light/small, -/turf/simulated/floor/engine{ - carbon_dioxide = 0; - name = "plasma floor"; - nitrogen = 0; - oxygen = 0; - toxins = 70000 - }, +/turf/simulated/floor/engine/plasma, /area/ruin/unpowered/syndicate_lava_base/engineering) "cp" = ( /obj/structure/cable{ diff --git a/_maps/map_files/RandomZLevels/terrorspiders.dmm b/_maps/map_files/RandomZLevels/terrorspiders.dmm index 8f1b576b0a2..70597a56927 100644 --- a/_maps/map_files/RandomZLevels/terrorspiders.dmm +++ b/_maps/map_files/RandomZLevels/terrorspiders.dmm @@ -7904,11 +7904,7 @@ /area/awaymission/UO71/centralhall) "pu" = ( /obj/machinery/portable_atmospherics/canister/air, -/turf/simulated/floor/engine{ - name = "air floor"; - nitrogen = 10580; - oxygen = 2644 - }, +/turf/simulated/floor/engine/air, /area/awaymission/UO71/eng) "pv" = ( /obj/machinery/air_sensor{ @@ -7916,11 +7912,7 @@ id_tag = "UO71_air_sensor"; output = 7 }, -/turf/simulated/floor/engine{ - name = "air floor"; - nitrogen = 10580; - oxygen = 2644 - }, +/turf/simulated/floor/engine/air, /area/awaymission/UO71/eng) "pw" = ( /obj/structure/cable{ @@ -8172,11 +8164,7 @@ pressure_checks = 2; pump_direction = 0 }, -/turf/simulated/floor/engine{ - name = "air floor"; - nitrogen = 10580; - oxygen = 2644 - }, +/turf/simulated/floor/engine/air, /area/awaymission/UO71/eng) "pQ" = ( /obj/machinery/atmospherics/unary/outlet_injector/on{ @@ -8184,11 +8172,7 @@ frequency = 1443; id = "UO71_air_in" }, -/turf/simulated/floor/engine{ - name = "air floor"; - nitrogen = 10580; - oxygen = 2644 - }, +/turf/simulated/floor/engine/air, /area/awaymission/UO71/eng) "pR" = ( /obj/machinery/atmospherics/pipe/simple/visible/cyan, @@ -11446,11 +11430,7 @@ frequency = 1441; id = "UO71_n2_in" }, -/turf/simulated/floor/engine{ - name = "n2 floor"; - nitrogen = 10000; - oxygen = 0 - }, +/turf/simulated/floor/engine/n2, /area/awaymission/UO71/eng) "vF" = ( /obj/machinery/atmospherics/unary/vent_pump{ @@ -11464,11 +11444,7 @@ pressure_checks = 2; pump_direction = 0 }, -/turf/simulated/floor/engine{ - name = "n2 floor"; - nitrogen = 10000; - oxygen = 0 - }, +/turf/simulated/floor/engine/n2, /area/awaymission/UO71/eng) "vG" = ( /obj/machinery/atmospherics/unary/outlet_injector/on{ @@ -11476,11 +11452,7 @@ frequency = 1441; id = "UO71_o2_in" }, -/turf/simulated/floor/engine{ - name = "o2 floor"; - nitrogen = 0; - oxygen = 100000 - }, +/turf/simulated/floor/engine/o2, /area/awaymission/UO71/eng) "vH" = ( /obj/machinery/atmospherics/unary/vent_pump{ @@ -11494,11 +11466,7 @@ pressure_checks = 2; pump_direction = 0 }, -/turf/simulated/floor/engine{ - name = "o2 floor"; - nitrogen = 0; - oxygen = 100000 - }, +/turf/simulated/floor/engine/o2, /area/awaymission/UO71/eng) "vI" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -11821,19 +11789,11 @@ id_tag = "UO71_n2_sensor" }, /obj/machinery/light/small, -/turf/simulated/floor/engine{ - name = "n2 floor"; - nitrogen = 10000; - oxygen = 0 - }, +/turf/simulated/floor/engine/n2, /area/awaymission/UO71/eng) "wm" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, -/turf/simulated/floor/engine{ - name = "n2 floor"; - nitrogen = 10000; - oxygen = 0 - }, +/turf/simulated/floor/engine/n2, /area/awaymission/UO71/eng) "wn" = ( /obj/machinery/air_sensor{ @@ -11841,19 +11801,11 @@ id_tag = "UO71_o2_sensor" }, /obj/machinery/light/small, -/turf/simulated/floor/engine{ - name = "o2 floor"; - nitrogen = 0; - oxygen = 100000 - }, +/turf/simulated/floor/engine/o2, /area/awaymission/UO71/eng) "wo" = ( /obj/machinery/portable_atmospherics/canister/oxygen, -/turf/simulated/floor/engine{ - name = "o2 floor"; - nitrogen = 0; - oxygen = 100000 - }, +/turf/simulated/floor/engine/o2, /area/awaymission/UO71/eng) "wp" = ( /obj/effect/decal/warning_stripes/yellow/partial{ diff --git a/_maps/map_files/RandomZLevels/undergroundoutpost45.dmm b/_maps/map_files/RandomZLevels/undergroundoutpost45.dmm index 7d863b771b0..0e1347d3d3e 100644 --- a/_maps/map_files/RandomZLevels/undergroundoutpost45.dmm +++ b/_maps/map_files/RandomZLevels/undergroundoutpost45.dmm @@ -10200,11 +10200,7 @@ }) "pa" = ( /obj/machinery/portable_atmospherics/canister/air, -/turf/simulated/floor/engine{ - name = "air floor"; - nitrogen = 10580; - oxygen = 2644 - }, +/turf/simulated/floor/engine/air, /area/awaycontent/a3{ has_gravity = 1; name = "UO45 Engineering" @@ -10215,11 +10211,7 @@ id_tag = "UO45_air_sensor"; output = 7 }, -/turf/simulated/floor/engine{ - name = "air floor"; - nitrogen = 10580; - oxygen = 2644 - }, +/turf/simulated/floor/engine/air, /area/awaycontent/a3{ has_gravity = 1; name = "UO45 Engineering" @@ -10612,11 +10604,7 @@ pressure_checks = 2; pump_direction = 0 }, -/turf/simulated/floor/engine{ - name = "air floor"; - nitrogen = 10580; - oxygen = 2644 - }, +/turf/simulated/floor/engine/air, /area/awaycontent/a3{ has_gravity = 1; name = "UO45 Engineering" @@ -10627,11 +10615,7 @@ frequency = 1443; id = "UO45_air_in" }, -/turf/simulated/floor/engine{ - name = "air floor"; - nitrogen = 10580; - oxygen = 2644 - }, +/turf/simulated/floor/engine/air, /area/awaycontent/a3{ has_gravity = 1; name = "UO45 Engineering" @@ -14650,11 +14634,7 @@ frequency = 1441; id = "UO45_n2_in" }, -/turf/simulated/floor/engine{ - name = "n2 floor"; - nitrogen = 10000; - oxygen = 0 - }, +/turf/simulated/floor/engine/n2, /area/awaycontent/a3{ has_gravity = 1; name = "UO45 Engineering" @@ -14671,11 +14651,7 @@ pressure_checks = 2; pump_direction = 0 }, -/turf/simulated/floor/engine{ - name = "n2 floor"; - nitrogen = 10000; - oxygen = 0 - }, +/turf/simulated/floor/engine/n2, /area/awaycontent/a3{ has_gravity = 1; name = "UO45 Engineering" @@ -14686,11 +14662,7 @@ frequency = 1441; id = "UO45_o2_in" }, -/turf/simulated/floor/engine{ - name = "o2 floor"; - nitrogen = 0; - oxygen = 10000 - }, +/turf/simulated/floor/engine/o2, /area/awaycontent/a3{ has_gravity = 1; name = "UO45 Engineering" @@ -14707,11 +14679,7 @@ pressure_checks = 2; pump_direction = 0 }, -/turf/simulated/floor/engine{ - name = "o2 floor"; - nitrogen = 0; - oxygen = 10000 - }, +/turf/simulated/floor/engine/o2, /area/awaycontent/a3{ has_gravity = 1; name = "UO45 Engineering" @@ -15040,22 +15008,14 @@ id_tag = "UO45_n2_sensor" }, /obj/machinery/light/small, -/turf/simulated/floor/engine{ - name = "n2 floor"; - nitrogen = 10000; - oxygen = 0 - }, +/turf/simulated/floor/engine/n2, /area/awaycontent/a3{ has_gravity = 1; name = "UO45 Engineering" }) "vF" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, -/turf/simulated/floor/engine{ - name = "n2 floor"; - nitrogen = 10000; - oxygen = 0 - }, +/turf/simulated/floor/engine/n2, /area/awaycontent/a3{ has_gravity = 1; name = "UO45 Engineering" @@ -15066,22 +15026,14 @@ id_tag = "UO45_o2_sensor" }, /obj/machinery/light/small, -/turf/simulated/floor/engine{ - name = "o2 floor"; - nitrogen = 0; - oxygen = 10000 - }, +/turf/simulated/floor/engine/o2, /area/awaycontent/a3{ has_gravity = 1; name = "UO45 Engineering" }) "vH" = ( /obj/machinery/portable_atmospherics/canister/oxygen, -/turf/simulated/floor/engine{ - name = "o2 floor"; - nitrogen = 0; - oxygen = 10000 - }, +/turf/simulated/floor/engine/o2, /area/awaycontent/a3{ has_gravity = 1; name = "UO45 Engineering" diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm index 36dbb929ff9..b38fa266cfb 100644 --- a/_maps/map_files/cyberiad/cyberiad.dmm +++ b/_maps/map_files/cyberiad/cyberiad.dmm @@ -29501,11 +29501,7 @@ /obj/machinery/portable_atmospherics/canister/nitrogen{ anchored = 1 }, -/turf/simulated/floor/engine{ - name = "n2 floor"; - nitrogen = 100000; - oxygen = 0 - }, +/turf/simulated/floor/engine/n2, /area/atmos) "bbN" = ( /obj/effect/decal/warning_stripes/northeast, @@ -29517,11 +29513,7 @@ /obj/machinery/portable_atmospherics/canister/oxygen{ anchored = 1 }, -/turf/simulated/floor/engine{ - name = "o2 floor"; - nitrogen = 0; - oxygen = 100000 - }, +/turf/simulated/floor/engine/o2, /area/atmos) "bbP" = ( /obj/effect/decal/warning_stripes/north, @@ -30507,11 +30499,7 @@ /obj/machinery/portable_atmospherics/canister/air{ anchored = 1 }, -/turf/simulated/floor/engine{ - name = "air floor"; - nitrogen = 10580; - oxygen = 2644 - }, +/turf/simulated/floor/engine/air, /area/atmos) "bdH" = ( /obj/effect/landmark/start{ @@ -59016,12 +59004,7 @@ icon_state = "intact"; dir = 6 }, -/turf/simulated/floor/bluegrid{ - name = "Server Base"; - nitrogen = 250; - oxygen = 0; - temperature = 0 - }, +/turf/simulated/floor/bluegrid/telecomms/server, /area/toxins/server_coldroom) "ccU" = ( /obj/effect/spawner/window/reinforced, @@ -59058,13 +59041,7 @@ pixel_x = 0; pixel_y = 24 }, -/turf/simulated/floor/bluegrid{ - icon_state = "dark"; - name = "Server Walkway"; - nitrogen = 250; - oxygen = 0; - temperature = 0 - }, +/turf/simulated/floor/plasteel/dark/telecomms, /area/toxins/server_coldroom) "ccW" = ( /obj/machinery/camera{ @@ -59085,9 +59062,7 @@ pixel_x = 0; pixel_y = 24 }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, +/turf/simulated/floor/plasteel/dark, /area/toxins/server) "ccX" = ( /obj/structure/cable{ @@ -59154,7 +59129,7 @@ /area/engine/gravitygenerator) "cdb" = ( /obj/machinery/atmospherics/unary/cold_sink/freezer{ - current_temperature = 73; + current_temperature = 80; dir = 2; on = 1 }, @@ -59163,9 +59138,7 @@ name = "station intercom (General)"; pixel_y = 25 }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, +/turf/simulated/floor/plasteel/dark, /area/toxins/server) "cdc" = ( /obj/structure/cable{ @@ -59941,13 +59914,7 @@ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/heat_exchanging, -/turf/simulated/floor/bluegrid{ - icon_state = "dark"; - name = "Server Walkway"; - nitrogen = 250; - oxygen = 0; - temperature = 0 - }, +/turf/simulated/floor/plasteel/dark/telecomms, /area/toxins/server_coldroom) "ceA" = ( /obj/machinery/atmospherics/unary/vent_pump/on, @@ -60024,12 +59991,7 @@ dir = 4 }, /obj/machinery/atmospherics/unary/vent_pump/on, -/turf/simulated/floor/bluegrid{ - name = "Server Base"; - nitrogen = 250; - oxygen = 0; - temperature = 0 - }, +/turf/simulated/floor/bluegrid/telecomms/server, /area/toxins/server_coldroom) "ceJ" = ( /obj/structure/cable{ @@ -60049,9 +60011,7 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, +/turf/simulated/floor/plasteel/dark, /area/toxins/server) "ceK" = ( /obj/effect/decal/cleanable/dirt, @@ -60908,12 +60868,7 @@ icon_state = "intact"; dir = 5 }, -/turf/simulated/floor/bluegrid{ - name = "Server Base"; - nitrogen = 250; - oxygen = 0; - temperature = 0 - }, +/turf/simulated/floor/bluegrid/telecomms/server, /area/toxins/server_coldroom) "cgd" = ( /obj/effect/spawner/window/reinforced, @@ -60940,15 +60895,11 @@ /obj/machinery/light_switch{ pixel_y = -23 }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, +/turf/simulated/floor/plasteel/dark, /area/toxins/server) "cgg" = ( /obj/machinery/computer/message_monitor, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, +/turf/simulated/floor/plasteel/dark, /area/toxins/server) "cgh" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -61323,13 +61274,7 @@ dir = 5; level = 1 }, -/turf/simulated/floor/bluegrid{ - icon_state = "dark"; - name = "Server Walkway"; - nitrogen = 250; - oxygen = 0; - temperature = 0 - }, +/turf/simulated/floor/plasteel/dark/telecomms, /area/toxins/server_coldroom) "cgU" = ( /obj/effect/spawner/window/reinforced, @@ -61417,9 +61362,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, +/turf/simulated/floor/plasteel/dark, /area/toxins/server) "chb" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ @@ -61431,13 +61374,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/turf/simulated/floor/bluegrid{ - icon_state = "dark"; - name = "Server Walkway"; - nitrogen = 250; - oxygen = 0; - temperature = 0 - }, +/turf/simulated/floor/plasteel/dark/telecomms, /area/toxins/server_coldroom) "chc" = ( /turf/simulated/wall, @@ -61646,9 +61583,7 @@ initialize_directions = 11; level = 1 }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, +/turf/simulated/floor/plasteel/dark, /area/toxins/server) "chw" = ( /obj/machinery/firealarm{ @@ -61669,9 +61604,7 @@ scrub_N2O = 1; scrub_Toxins = 1 }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, +/turf/simulated/floor/plasteel/dark, /area/toxins/server) "chx" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -63057,12 +62990,7 @@ /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 4 }, -/turf/simulated/floor/bluegrid{ - name = "Server Base"; - nitrogen = 250; - oxygen = 0; - temperature = 0 - }, +/turf/simulated/floor/bluegrid/telecomms/server, /area/toxins/server_coldroom) "cjI" = ( /obj/machinery/camera{ @@ -63095,13 +63023,7 @@ scrub_N2O = 1; scrub_Toxins = 1 }, -/turf/simulated/floor/bluegrid{ - icon_state = "dark"; - name = "Server Walkway"; - nitrogen = 250; - oxygen = 0; - temperature = 0 - }, +/turf/simulated/floor/plasteel/dark/telecomms, /area/toxins/server_coldroom) "cjK" = ( /obj/machinery/alarm{ @@ -63112,9 +63034,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, +/turf/simulated/floor/plasteel/dark, /area/toxins/server) "cjL" = ( /obj/effect/decal/cleanable/dirt, @@ -77463,10 +77383,7 @@ }, /area/engine/chiefs_office) "cIf" = ( -/obj/machinery/portable_atmospherics/canister/sleeping_agent/roomfiller{ - valve_open = 0; - volume = 1e+006 - }, +/obj/machinery/portable_atmospherics/canister/sleeping_agent, /turf/simulated/floor/engine/n20, /area/atmos) "cIg" = ( @@ -79581,13 +79498,7 @@ /area/maintenance/asmaint) "cLV" = ( /obj/machinery/portable_atmospherics/canister/toxins, -/turf/simulated/floor/engine{ - carbon_dioxide = 0; - name = "plasma floor"; - nitrogen = 0; - oxygen = 0; - toxins = 70000 - }, +/turf/simulated/floor/engine/plasma, /area/atmos) "cLW" = ( /obj/structure/cable{ @@ -82407,12 +82318,7 @@ /area/engine/engineering) "cRi" = ( /obj/machinery/portable_atmospherics/canister/carbon_dioxide, -/turf/simulated/floor/engine{ - carbon_dioxide = 50000; - name = "co2 floor"; - nitrogen = 0; - oxygen = 0 - }, +/turf/simulated/floor/engine/co2, /area/atmos) "cRj" = ( /obj/machinery/atmospherics/binary/pump{ @@ -88005,13 +87911,7 @@ /turf/space, /area/space/nearstation) "dbb" = ( -/turf/simulated/floor/engine{ - carbon_dioxide = 0; - name = "plasma floor"; - nitrogen = 0; - oxygen = 0; - toxins = 70000 - }, +/turf/simulated/floor/engine/plasma, /area/atmos) "dbc" = ( /obj/machinery/atmospherics/unary/vent_pump{ @@ -88026,13 +87926,7 @@ pressure_checks = 2; pump_direction = 0 }, -/turf/simulated/floor/engine{ - carbon_dioxide = 0; - name = "plasma floor"; - nitrogen = 0; - oxygen = 0; - toxins = 70000 - }, +/turf/simulated/floor/engine/plasma, /area/atmos) "dbd" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -88452,13 +88346,7 @@ frequency = 1441; id_tag = "tox_sensor" }, -/turf/simulated/floor/engine{ - carbon_dioxide = 0; - name = "plasma floor"; - nitrogen = 0; - oxygen = 0; - toxins = 70000 - }, +/turf/simulated/floor/engine/plasma, /area/atmos) "dbT" = ( /obj/structure/lattice, @@ -88485,13 +88373,7 @@ /obj/machinery/light/small{ dir = 4 }, -/turf/simulated/floor/engine{ - carbon_dioxide = 0; - name = "plasma floor"; - nitrogen = 0; - oxygen = 0; - toxins = 70000 - }, +/turf/simulated/floor/engine/plasma, /area/atmos) "dbX" = ( /obj/structure/lattice, @@ -88922,13 +88804,7 @@ on = 1; pixel_y = 1 }, -/turf/simulated/floor/engine{ - carbon_dioxide = 0; - name = "plasma floor"; - nitrogen = 0; - oxygen = 0; - toxins = 70000 - }, +/turf/simulated/floor/engine/plasma, /area/atmos) "dcU" = ( /obj/machinery/door/airlock/external{ @@ -89605,12 +89481,7 @@ /turf/space, /area/space/nearstation) "dem" = ( -/turf/simulated/floor/engine{ - carbon_dioxide = 50000; - name = "co2 floor"; - nitrogen = 0; - oxygen = 0 - }, +/turf/simulated/floor/engine/co2, /area/atmos) "den" = ( /obj/machinery/atmospherics/unary/vent_pump{ @@ -89625,12 +89496,7 @@ pressure_checks = 2; pump_direction = 0 }, -/turf/simulated/floor/engine{ - carbon_dioxide = 50000; - name = "co2 floor"; - nitrogen = 0; - oxygen = 0 - }, +/turf/simulated/floor/engine/co2, /area/atmos) "deo" = ( /obj/machinery/door/airlock/maintenance, @@ -89987,23 +89853,13 @@ frequency = 1441; id_tag = "co2_sensor" }, -/turf/simulated/floor/engine{ - carbon_dioxide = 50000; - name = "co2 floor"; - nitrogen = 0; - oxygen = 0 - }, +/turf/simulated/floor/engine/co2, /area/atmos) "deY" = ( /obj/machinery/light/small{ dir = 4 }, -/turf/simulated/floor/engine{ - carbon_dioxide = 50000; - name = "co2 floor"; - nitrogen = 0; - oxygen = 0 - }, +/turf/simulated/floor/engine/co2, /area/atmos) "deZ" = ( /obj/machinery/power/smes{ @@ -90406,12 +90262,7 @@ on = 1; pixel_y = 1 }, -/turf/simulated/floor/engine{ - carbon_dioxide = 50000; - name = "co2 floor"; - nitrogen = 0; - oxygen = 0 - }, +/turf/simulated/floor/engine/co2, /area/atmos) "dfP" = ( /obj/structure/table, @@ -92547,11 +92398,7 @@ frequency = 1441; id_tag = "n2_sensor" }, -/turf/simulated/floor/engine{ - name = "n2 floor"; - nitrogen = 100000; - oxygen = 0 - }, +/turf/simulated/floor/engine/n2, /area/atmos) "dki" = ( /obj/machinery/atmospherics/unary/outlet_injector{ @@ -92561,11 +92408,7 @@ id = "n2_in"; on = 1 }, -/turf/simulated/floor/engine{ - name = "n2 floor"; - nitrogen = 100000; - oxygen = 0 - }, +/turf/simulated/floor/engine/n2, /area/atmos) "dkj" = ( /obj/effect/spawner/window/reinforced, @@ -92584,11 +92427,7 @@ pressure_checks = 2; pump_direction = 0 }, -/turf/simulated/floor/engine{ - name = "n2 floor"; - nitrogen = 100000; - oxygen = 0 - }, +/turf/simulated/floor/engine/n2, /area/atmos) "dkl" = ( /obj/item/radio/intercom{ @@ -92636,11 +92475,7 @@ frequency = 1441; id_tag = "o2_sensor" }, -/turf/simulated/floor/engine{ - name = "o2 floor"; - nitrogen = 0; - oxygen = 100000 - }, +/turf/simulated/floor/engine/o2, /area/atmos) "dkq" = ( /obj/machinery/atmospherics/unary/outlet_injector{ @@ -92650,11 +92485,7 @@ id = "o2_in"; on = 1 }, -/turf/simulated/floor/engine{ - name = "o2 floor"; - nitrogen = 0; - oxygen = 100000 - }, +/turf/simulated/floor/engine/o2, /area/atmos) "dkr" = ( /obj/machinery/portable_atmospherics/canister, @@ -92674,11 +92505,7 @@ pressure_checks = 2; pump_direction = 0 }, -/turf/simulated/floor/engine{ - name = "o2 floor"; - nitrogen = 0; - oxygen = 100000 - }, +/turf/simulated/floor/engine/o2, /area/atmos) "dkt" = ( /obj/structure/disposalpipe/segment, @@ -92691,11 +92518,7 @@ id_tag = "air_sensor"; output = 7 }, -/turf/simulated/floor/engine{ - name = "air floor"; - nitrogen = 10580; - oxygen = 2644 - }, +/turf/simulated/floor/engine/air, /area/atmos) "dkv" = ( /mob/living/simple_animal/mouse, @@ -92709,11 +92532,7 @@ id = "o2_in"; on = 1 }, -/turf/simulated/floor/engine{ - name = "air floor"; - nitrogen = 10580; - oxygen = 2644 - }, +/turf/simulated/floor/engine/air, /area/atmos) "dkx" = ( /obj/machinery/atmospherics/unary/vent_pump/high_volume{ @@ -92727,11 +92546,7 @@ pressure_checks = 2; pump_direction = 0 }, -/turf/simulated/floor/engine{ - name = "air floor"; - nitrogen = 10580; - oxygen = 2644 - }, +/turf/simulated/floor/engine/air, /area/atmos) "dky" = ( /obj/machinery/camera{ @@ -92897,11 +92712,7 @@ /turf/simulated/floor/carpet, /area/crew_quarters/bar) "dkO" = ( -/turf/simulated/floor/engine{ - name = "n2 floor"; - nitrogen = 100000; - oxygen = 0 - }, +/turf/simulated/floor/engine/n2, /area/atmos) "dkP" = ( /obj/machinery/atmospherics/unary/portables_connector{ @@ -92939,11 +92750,7 @@ /turf/simulated/floor/plating, /area/maintenance/asmaint) "dkT" = ( -/turf/simulated/floor/engine{ - name = "o2 floor"; - nitrogen = 0; - oxygen = 100000 - }, +/turf/simulated/floor/engine/o2, /area/atmos) "dkU" = ( /obj/effect/decal/warning_stripes/west, @@ -92974,11 +92781,7 @@ name = "\improper AI Satellite Atmospherics" }) "dkV" = ( -/turf/simulated/floor/engine{ - name = "air floor"; - nitrogen = 10580; - oxygen = 2644 - }, +/turf/simulated/floor/engine/air, /area/atmos) "dkW" = ( /obj/machinery/door/firedoor, @@ -93328,27 +93131,15 @@ /area/turret_protected/aisat_interior) "dlv" = ( /obj/machinery/light/small, -/turf/simulated/floor/engine{ - name = "n2 floor"; - nitrogen = 100000; - oxygen = 0 - }, +/turf/simulated/floor/engine/n2, /area/atmos) "dlw" = ( /obj/machinery/light/small, -/turf/simulated/floor/engine{ - name = "o2 floor"; - nitrogen = 0; - oxygen = 100000 - }, +/turf/simulated/floor/engine/o2, /area/atmos) "dlx" = ( /obj/machinery/light/small, -/turf/simulated/floor/engine{ - name = "air floor"; - nitrogen = 10580; - oxygen = 2644 - }, +/turf/simulated/floor/engine/air, /area/atmos) "dly" = ( /obj/structure/cable{ diff --git a/code/ATMOSPHERICS/components/omni_devices/filter.dm b/code/ATMOSPHERICS/components/omni_devices/filter.dm index 83d60b1c292..0803d34e522 100644 --- a/code/ATMOSPHERICS/components/omni_devices/filter.dm +++ b/code/ATMOSPHERICS/components/omni_devices/filter.dm @@ -89,12 +89,12 @@ if(ATM_P) filtered_out.toxins = removed.toxins removed.toxins = 0 + + filtered_out.agent_b = removed.agent_b + removed.agent_b = 0 if(ATM_N2O) - if(removed.trace_gases.len>0) - for(var/datum/gas/sleeping_agent/trace_gas in removed.trace_gases) - if(istype(trace_gas)) - removed.trace_gases -= trace_gas - filtered_out.trace_gases += trace_gas + filtered_out.sleeping_agent = removed.sleeping_agent + removed.sleeping_agent = 0 else filtered_out = null diff --git a/code/ATMOSPHERICS/components/trinary_devices/filter.dm b/code/ATMOSPHERICS/components/trinary_devices/filter.dm index 84e212598c8..7e5b52b5acc 100755 --- a/code/ATMOSPHERICS/components/trinary_devices/filter.dm +++ b/code/ATMOSPHERICS/components/trinary_devices/filter.dm @@ -150,11 +150,8 @@ Filter types: filtered_out.toxins = removed.toxins removed.toxins = 0 - if(removed.trace_gases.len>0) - for(var/datum/gas/trace_gas in removed.trace_gases) - if(istype(trace_gas, /datum/gas/oxygen_agent_b)) - removed.trace_gases -= trace_gas - filtered_out.trace_gases += trace_gas + filtered_out.agent_b = removed.agent_b + removed.agent_b = 0 if(1) //removing O2 filtered_out.oxygen = removed.oxygen @@ -169,12 +166,8 @@ Filter types: removed.carbon_dioxide = 0 if(4)//removing N2O - if(removed.trace_gases.len>0) - for(var/datum/gas/trace_gas in removed.trace_gases) - if(istype(trace_gas, /datum/gas/sleeping_agent)) - removed.trace_gases -= trace_gas - filtered_out.trace_gases += trace_gas - + filtered_out.sleeping_agent = removed.sleeping_agent + removed.sleeping_agent = 0 else filtered_out = null diff --git a/code/ATMOSPHERICS/components/unary_devices/tank.dm b/code/ATMOSPHERICS/components/unary_devices/tank.dm index 11a752b9030..1cfb4d18eb1 100644 --- a/code/ATMOSPHERICS/components/unary_devices/tank.dm +++ b/code/ATMOSPHERICS/components/unary_devices/tank.dm @@ -92,10 +92,7 @@ air_contents.volume = volume air_contents.temperature = T20C - var/datum/gas/sleeping_agent/trace_gas = new - trace_gas.moles = (25*ONE_ATMOSPHERE)*(air_contents.volume)/(R_IDEAL_GAS_EQUATION*air_contents.temperature) - - air_contents.trace_gases += trace_gas + air_contents.sleeping_agent = (25 * ONE_ATMOSPHERE) * (air_contents.volume) / (R_IDEAL_GAS_EQUATION * air_contents.temperature) /obj/machinery/atmospherics/unary/tank/oxygen_agent_b name = "Unidentified Gas Tank" @@ -108,6 +105,4 @@ air_contents.volume = volume air_contents.temperature = T20C - var/datum/gas/oxygen_agent_b/trace_gas = new - trace_gas.moles = (50 * ONE_ATMOSPHERE) * (air_contents.volume) / (R_IDEAL_GAS_EQUATION * air_contents.temperature) - air_contents.trace_gases += trace_gas + air_contents.agent_b = (50 * ONE_ATMOSPHERE) * (air_contents.volume) / (R_IDEAL_GAS_EQUATION * air_contents.temperature) diff --git a/code/ATMOSPHERICS/components/unary_devices/vent_scrubber.dm b/code/ATMOSPHERICS/components/unary_devices/vent_scrubber.dm index 42863e08ea5..ed06dd68ce6 100644 --- a/code/ATMOSPHERICS/components/unary_devices/vent_scrubber.dm +++ b/code/ATMOSPHERICS/components/unary_devices/vent_scrubber.dm @@ -225,7 +225,7 @@ var/datum/gas_mixture/environment = tile.return_air() if(scrubbing) - if((scrub_O2 && environment.oxygen>0.001) || (scrub_N2 && environment.nitrogen>0.001) || (scrub_CO2 && environment.carbon_dioxide>0.001) || (scrub_Toxins && environment.toxins>0.001) || (environment.trace_gases.len>0)) + if((scrub_O2 && environment.oxygen>0.001) || (scrub_N2 && environment.nitrogen>0.001) || (scrub_CO2 && environment.carbon_dioxide>0.001) || (scrub_Toxins && environment.toxins>0.001) || (environment.sleeping_agent) || (environment.agent_b)) var/transfer_moles = min(1, volume_rate/environment.volume)*environment.total_moles() //Take a gas sample @@ -249,14 +249,13 @@ filtered_out.carbon_dioxide = removed.carbon_dioxide removed.carbon_dioxide = 0 - if(removed.trace_gases.len>0) - for(var/datum/gas/trace_gas in removed.trace_gases) - if(istype(trace_gas, /datum/gas/oxygen_agent_b)) - removed.trace_gases -= trace_gas - filtered_out.trace_gases += trace_gas - else if(istype(trace_gas, /datum/gas/sleeping_agent) && scrub_N2O) - removed.trace_gases -= trace_gas - filtered_out.trace_gases += trace_gas + if(removed.agent_b) + filtered_out.agent_b = removed.agent_b + removed.agent_b = 0 + + if(scrub_N2O) + filtered_out.sleeping_agent = removed.sleeping_agent + removed.sleeping_agent = 0 //Remix the resulting gases air_contents.merge(filtered_out) diff --git a/code/ATMOSPHERICS/datum_pipeline.dm b/code/ATMOSPHERICS/datum_pipeline.dm index 2cf3edfb275..ff9fb9a4ab1 100644 --- a/code/ATMOSPHERICS/datum_pipeline.dm +++ b/code/ATMOSPHERICS/datum_pipeline.dm @@ -127,20 +127,15 @@ GLOBAL_VAR_INIT(pipenetwarnings, 10) member.air_temporary = new member.air_temporary.volume = member.volume - member.air_temporary.oxygen = air.oxygen*member.volume/air.volume - member.air_temporary.nitrogen = air.nitrogen*member.volume/air.volume - member.air_temporary.toxins = air.toxins*member.volume/air.volume - member.air_temporary.carbon_dioxide = air.carbon_dioxide*member.volume/air.volume + member.air_temporary.oxygen = air.oxygen * member.volume / air.volume + member.air_temporary.nitrogen = air.nitrogen * member.volume / air.volume + member.air_temporary.toxins = air.toxins * member.volume / air.volume + member.air_temporary.carbon_dioxide = air.carbon_dioxide * member.volume / air.volume + member.air_temporary.sleeping_agent = air.sleeping_agent * member.volume / air.volume + member.air_temporary.agent_b = air.agent_b * member.volume / air.volume member.air_temporary.temperature = air.temperature - if(air.trace_gases.len) - for(var/datum/gas/trace_gas in air.trace_gases) - var/datum/gas/corresponding = new trace_gas.type() - member.air_temporary.trace_gases += corresponding - - corresponding.moles = trace_gas.moles*member.volume/air.volume - /datum/pipeline/proc/temperature_interact(turf/target, share_volume, thermal_conductivity) var/total_heat_capacity = air.heat_capacity() var/partial_heat_capacity = total_heat_capacity*(share_volume/air.volume) @@ -228,7 +223,8 @@ GLOBAL_VAR_INIT(pipenetwarnings, 10) var/total_nitrogen = 0 var/total_toxins = 0 var/total_carbon_dioxide = 0 - var/list/total_trace_gases = list() + var/total_sleeping_agent = 0 + var/total_agent_b = 0 for(var/datum/gas_mixture/G in GL) total_volume += G.volume @@ -239,15 +235,8 @@ GLOBAL_VAR_INIT(pipenetwarnings, 10) total_nitrogen += G.nitrogen total_toxins += G.toxins total_carbon_dioxide += G.carbon_dioxide - - if(G.trace_gases.len) - for(var/datum/gas/trace_gas in G.trace_gases) - var/datum/gas/corresponding = locate(trace_gas.type) in total_trace_gases - if(!corresponding) - corresponding = new trace_gas.type() - total_trace_gases += corresponding - - corresponding.moles += trace_gas.moles + total_sleeping_agent += G.sleeping_agent + total_agent_b += G.agent_b if(total_volume > 0) @@ -259,18 +248,11 @@ GLOBAL_VAR_INIT(pipenetwarnings, 10) //Update individual gas_mixtures by volume ratio for(var/datum/gas_mixture/G in GL) - G.oxygen = total_oxygen*G.volume/total_volume - G.nitrogen = total_nitrogen*G.volume/total_volume - G.toxins = total_toxins*G.volume/total_volume - G.carbon_dioxide = total_carbon_dioxide*G.volume/total_volume + G.oxygen = total_oxygen * G.volume / total_volume + G.nitrogen = total_nitrogen * G.volume / total_volume + G.toxins = total_toxins * G.volume / total_volume + G.carbon_dioxide = total_carbon_dioxide * G.volume / total_volume + G.sleeping_agent = total_sleeping_agent * G.volume / total_volume + G.agent_b = total_agent_b * G.volume / total_volume G.temperature = temperature - - if(total_trace_gases.len) - for(var/datum/gas/trace_gas in total_trace_gases) - var/datum/gas/corresponding = locate(trace_gas.type) in G.trace_gases - if(!corresponding) - corresponding = new trace_gas.type() - G.trace_gases += corresponding - - corresponding.moles = trace_gas.moles*G.volume/total_volume diff --git a/code/LINDA/LINDA_system.dm b/code/LINDA/LINDA_system.dm index c5bc65d3bf7..3c8633c2b91 100644 --- a/code/LINDA/LINDA_system.dm +++ b/code/LINDA/LINDA_system.dm @@ -142,7 +142,7 @@ turf/CanPass(atom/movable/mover, turf/target, height=1.5) return T.atmos_spawn_air(text, amount) -/turf/simulated/proc/atmos_spawn_air(var/flag, var/amount) +/turf/simulated/proc/atmos_spawn_air(flag, amount) if(!text || !amount || !air) return @@ -156,17 +156,21 @@ turf/CanPass(atom/movable/mover, turf/target, height=1.5) if(flag & LINDA_SPAWN_TOXINS) G.toxins += amount + if(flag & LINDA_SPAWN_OXYGEN) G.oxygen += amount + if(flag & LINDA_SPAWN_CO2) G.carbon_dioxide += amount + if(flag & LINDA_SPAWN_NITROGEN) G.nitrogen += amount if(flag & LINDA_SPAWN_N2O) - var/datum/gas/sleeping_agent/T = new - T.moles += amount - G.trace_gases += T + G.sleeping_agent += amount + + if(flag & LINDA_SPAWN_AGENT_B) + G.agent_b += amount if(flag & LINDA_SPAWN_AIR) G.oxygen += MOLES_O2STANDARD * amount diff --git a/code/LINDA/LINDA_turf_tile.dm b/code/LINDA/LINDA_turf_tile.dm index 72f77d2440f..c39226f37e6 100644 --- a/code/LINDA/LINDA_turf_tile.dm +++ b/code/LINDA/LINDA_turf_tile.dm @@ -19,20 +19,24 @@ GM.carbon_dioxide = carbon_dioxide GM.nitrogen = nitrogen GM.toxins = toxins + GM.sleeping_agent = sleeping_agent + GM.agent_b = agent_b GM.temperature = temperature return GM -/turf/remove_air(amount as num) +/turf/remove_air(amount) var/datum/gas_mixture/GM = new - var/sum = oxygen + carbon_dioxide + nitrogen + toxins - if(sum>0) - GM.oxygen = (oxygen/sum)*amount - GM.carbon_dioxide = (carbon_dioxide/sum)*amount - GM.nitrogen = (nitrogen/sum)*amount - GM.toxins = (toxins/sum)*amount + var/sum = oxygen + carbon_dioxide + nitrogen + toxins + sleeping_agent + agent_b + if(sum > 0) + GM.oxygen = (oxygen / sum) * amount + GM.carbon_dioxide = (carbon_dioxide / sum) * amount + GM.nitrogen = (nitrogen / sum) * amount + GM.toxins = (toxins / sum) * amount + GM.sleeping_agent = (sleeping_agent / sum) * amount + GM.agent_b = (agent_b / sum) * amount GM.temperature = temperature @@ -53,7 +57,7 @@ var/temperature_archived //USED ONLY FOR SOLIDS - var/atmos_overlay_type = "" //current active overlay + var/atmos_overlay_type = null //current active overlay /turf/simulated/New() ..() @@ -64,6 +68,8 @@ air.carbon_dioxide = carbon_dioxide air.nitrogen = nitrogen air.toxins = toxins + air.sleeping_agent = sleeping_agent + air.agent_b = agent_b air.temperature = temperature @@ -100,7 +106,7 @@ else return ..() -/turf/simulated/remove_air(amount as num) +/turf/simulated/remove_air(amount) if(air) var/datum/gas_mixture/removed = null @@ -155,7 +161,7 @@ var/turf/enemy_tile = get_step(src, direction) - if(istype(enemy_tile,/turf/simulated)) + if(istype(enemy_tile, /turf/simulated)) var/turf/simulated/enemy_simulated = enemy_tile if(current_cycle > enemy_simulated.current_cycle) @@ -211,7 +217,13 @@ if(planet_atmos) //share our air with the "atmosphere" "above" the turf var/datum/gas_mixture/G = new - G.copy_from_turf(src) + G.oxygen = oxygen + G.carbon_dioxide = carbon_dioxide + G.nitrogen = nitrogen + G.toxins = toxins + G.sleeping_agent = sleeping_agent + G.agent_b = agent_b + G.temperature = initial(temperature) // Temperature is modified at runtime; we only care about the turf's initial temperature G.archive() if(!air.compare(G)) if(!excited_group) @@ -271,8 +283,7 @@ if(air.toxins > MOLES_PLASMA_VISIBLE) return "plasma" - var/datum/gas/sleeping_agent = locate(/datum/gas/sleeping_agent) in air.trace_gases - if(sleeping_agent && (sleeping_agent.moles > 1)) + if(air.sleeping_agent > 1) return "sleeping_agent" return null @@ -340,7 +351,7 @@ reset_cooldowns() /datum/excited_group/proc/merge_groups(var/datum/excited_group/E) - if(turf_list.len > E.turf_list.len) + if(length(turf_list) > length(E.turf_list)) SSair.excited_groups -= E for(var/turf/simulated/T in E.turf_list) T.excited_group = src @@ -358,32 +369,26 @@ /datum/excited_group/proc/self_breakdown() var/datum/gas_mixture/A = new - var/datum/gas/sleeping_agent/S = new - A.trace_gases += S - for(var/turf/simulated/T in turf_list) - A.oxygen += T.air.oxygen - A.carbon_dioxide+= T.air.carbon_dioxide - A.nitrogen += T.air.nitrogen - A.toxins += T.air.toxins - if(T.air.trace_gases.len) - for(var/datum/gas/N in T.air.trace_gases) - S.moles += N.moles + var/list/cached_turf_list = turf_list // cache for super speed - for(var/turf/simulated/T in turf_list) - T.air.oxygen = A.oxygen/turf_list.len - T.air.carbon_dioxide= A.carbon_dioxide/turf_list.len - T.air.nitrogen = A.nitrogen/turf_list.len - T.air.toxins = A.toxins/turf_list.len + for(var/turf/simulated/T in cached_turf_list) + A.oxygen += T.air.oxygen + A.carbon_dioxide += T.air.carbon_dioxide + A.nitrogen += T.air.nitrogen + A.toxins += T.air.toxins + A.sleeping_agent += T.air.sleeping_agent + A.agent_b += T.air.agent_b - if(S.moles > 0) - if(T.air.trace_gases.len) - for(var/datum/gas/G in T.air.trace_gases) - G.moles = S.moles/turf_list.len - else - var/datum/gas/sleeping_agent/G = new - G.moles = S.moles/turf_list.len - T.air.trace_gases += G + var/turflen = length(cached_turf_list) + + for(var/turf/simulated/T in cached_turf_list) + T.air.oxygen = A.oxygen / turflen + T.air.carbon_dioxide = A.carbon_dioxide / turflen + T.air.nitrogen = A.nitrogen / turflen + T.air.toxins = A.toxins / turflen + T.air.sleeping_agent = A.sleeping_agent / turflen + T.air.agent_b = A.agent_b / turflen T.update_visuals() diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index cf27ec09143..ad5e5df7583 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -431,7 +431,6 @@ #define LINDA_SPAWN_OXYGEN 8 #define LINDA_SPAWN_CO2 16 #define LINDA_SPAWN_NITROGEN 32 - #define LINDA_SPAWN_N2O 64 - +#define LINDA_SPAWN_AGENT_B 128 #define LINDA_SPAWN_AIR 256 diff --git a/code/datums/gas_mixture.dm b/code/datums/gas_mixture.dm index 63b70b512ee..91bebcdad39 100644 --- a/code/datums/gas_mixture.dm +++ b/code/datums/gas_mixture.dm @@ -7,33 +7,22 @@ What are the archived variables for? #define SPECIFIC_HEAT_TOXIN 200 #define SPECIFIC_HEAT_AIR 20 #define SPECIFIC_HEAT_CDO 30 -#define HEAT_CAPACITY_CALCULATION(oxygen,carbon_dioxide,nitrogen,toxins) \ - (carbon_dioxide*SPECIFIC_HEAT_CDO + (oxygen+nitrogen)*SPECIFIC_HEAT_AIR + toxins*SPECIFIC_HEAT_TOXIN) +#define SPECIFIC_HEAT_N2O 40 +#define SPECIFIC_HEAT_AGENT_B 300 + +#define HEAT_CAPACITY_CALCULATION(oxygen, carbon_dioxide, nitrogen, toxins, sleeping_agent, agent_b) \ + (carbon_dioxide * SPECIFIC_HEAT_CDO + (oxygen + nitrogen) * SPECIFIC_HEAT_AIR + toxins * SPECIFIC_HEAT_TOXIN + sleeping_agent * SPECIFIC_HEAT_N2O + agent_b * SPECIFIC_HEAT_AGENT_B) #define MINIMUM_HEAT_CAPACITY 0.0003 -#define QUANTIZE(variable) (round(variable,0.0001)) - -/datum/gas - var/moles = 0 - var/specific_heat = 0 - - var/moles_archived = 0 - -/datum/gas/sleeping_agent - specific_heat = 40 - -/datum/gas/oxygen_agent_b - specific_heat = 300 - -/datum/gas/volatile_fuel - specific_heat = 30 - +#define QUANTIZE(variable) (round(variable, 0.0001)) /datum/gas_mixture var/oxygen = 0 var/carbon_dioxide = 0 var/nitrogen = 0 var/toxins = 0 + var/sleeping_agent = 0 + var/agent_b = 0 var/volume = CELL_VOLUME @@ -41,13 +30,12 @@ What are the archived variables for? var/last_share - var/list/datum/gas/trace_gases = list() - - var/tmp/oxygen_archived var/tmp/carbon_dioxide_archived var/tmp/nitrogen_archived var/tmp/toxins_archived + var/tmp/sleeping_agent_archived + var/tmp/agent_b_archived var/tmp/temperature_archived @@ -55,35 +43,24 @@ What are the archived variables for? //PV=nRT - related procedures /datum/gas_mixture/proc/heat_capacity() - var/heat_capacity = HEAT_CAPACITY_CALCULATION(oxygen,carbon_dioxide,nitrogen,toxins) - - for(var/gas in trace_gases) - var/datum/gas/trace_gas = gas - heat_capacity += trace_gas.moles*trace_gas.specific_heat - return heat_capacity + return HEAT_CAPACITY_CALCULATION(oxygen, carbon_dioxide, nitrogen, toxins, sleeping_agent, agent_b) /datum/gas_mixture/proc/heat_capacity_archived() - var/heat_capacity_archived = HEAT_CAPACITY_CALCULATION(oxygen_archived,carbon_dioxide_archived,nitrogen_archived,toxins_archived) - - for(var/gas in trace_gases) - var/datum/gas/trace_gas = gas - heat_capacity_archived += trace_gas.moles_archived*trace_gas.specific_heat - return heat_capacity_archived + return HEAT_CAPACITY_CALCULATION(oxygen_archived, carbon_dioxide_archived, nitrogen_archived, toxins_archived, sleeping_agent_archived, agent_b_archived) /datum/gas_mixture/proc/total_moles() - var/moles = oxygen + carbon_dioxide + nitrogen + toxins - - for(var/gas in trace_gases) - var/datum/gas/trace_gas = gas - moles += trace_gas.moles + var/moles = oxygen + carbon_dioxide + nitrogen + toxins + sleeping_agent + agent_b return moles +/datum/gas_mixture/proc/total_trace_moles() + var/moles = sleeping_agent + agent_b + return moles /datum/gas_mixture/proc/return_pressure() - if(volume>0) - return total_moles()*R_IDEAL_GAS_EQUATION*temperature/volume + if(volume > 0) + return total_moles() * R_IDEAL_GAS_EQUATION * temperature / volume return 0 @@ -96,7 +73,7 @@ What are the archived variables for? /datum/gas_mixture/proc/thermal_energy() - return temperature*heat_capacity() + return temperature * heat_capacity() //Procedures used for very specific events @@ -105,28 +82,23 @@ What are the archived variables for? /datum/gas_mixture/proc/react(atom/dump_location) var/reacting = 0 //set to 1 if a notable reaction occured (used by pipe_network) - if(trace_gases.len > 0) - if(temperature > 900) - if(toxins > MINIMUM_HEAT_CAPACITY && carbon_dioxide > MINIMUM_HEAT_CAPACITY) - var/datum/gas/oxygen_agent_b/trace_gas = locate(/datum/gas/oxygen_agent_b/) in trace_gases - if(trace_gas) - var/reaction_rate = min(carbon_dioxide*0.75, toxins*0.25, trace_gas.moles*0.05) + if(agent_b && temperature > 900) + if(toxins > MINIMUM_HEAT_CAPACITY && carbon_dioxide > MINIMUM_HEAT_CAPACITY) + var/reaction_rate = min(carbon_dioxide * 0.75, toxins * 0.25, agent_b * 0.05) - carbon_dioxide -= reaction_rate - oxygen += reaction_rate + carbon_dioxide -= reaction_rate + oxygen += reaction_rate - trace_gas.moles -= reaction_rate*0.05 + agent_b -= reaction_rate * 0.05 - temperature += (reaction_rate*20000)/heat_capacity() + temperature += (reaction_rate * 20000) / heat_capacity() - reacting = 1 + reacting = 1 fuel_burnt = 0 if(temperature > FIRE_MINIMUM_TEMPERATURE_TO_EXIST) -// to_chat(world, "pre [temperature], [oxygen], [toxins]") if(fire() > 0) reacting = 1 -// to_chat(world, "post [temperature], [oxygen], [toxins]") return reacting @@ -134,24 +106,6 @@ What are the archived variables for? var/energy_released = 0 var/old_heat_capacity = heat_capacity() - var/datum/gas/volatile_fuel/fuel_store = locate(/datum/gas/volatile_fuel/) in trace_gases - if(fuel_store) //General volatile gas burn - var/burned_fuel = 0 - - if(oxygen < fuel_store.moles) - burned_fuel = oxygen - fuel_store.moles -= burned_fuel - oxygen = 0 - else - burned_fuel = fuel_store.moles - oxygen -= fuel_store.moles - trace_gases -= fuel_store - fuel_store = null - - energy_released += FIRE_CARBON_ENERGY_RELEASED * burned_fuel - carbon_dioxide += burned_fuel - fuel_burnt += burned_fuel - //Handle plasma burning if(toxins > MINIMUM_HEAT_CAPACITY) var/plasma_burn_rate = 0 @@ -161,13 +115,13 @@ What are the archived variables for? if(temperature > PLASMA_UPPER_TEMPERATURE) temperature_scale = 1 else - temperature_scale = (temperature-PLASMA_MINIMUM_BURN_TEMPERATURE)/(PLASMA_UPPER_TEMPERATURE-PLASMA_MINIMUM_BURN_TEMPERATURE) + temperature_scale = (temperature - PLASMA_MINIMUM_BURN_TEMPERATURE) / (PLASMA_UPPER_TEMPERATURE-PLASMA_MINIMUM_BURN_TEMPERATURE) if(temperature_scale > 0) oxygen_burn_rate = OXYGEN_BURN_RATE_BASE - temperature_scale - if(oxygen > toxins*PLASMA_OXYGEN_FULLBURN) - plasma_burn_rate = (toxins*temperature_scale)/PLASMA_BURN_RATE_DELTA + if(oxygen > toxins * PLASMA_OXYGEN_FULLBURN) + plasma_burn_rate = (toxins * temperature_scale) / PLASMA_BURN_RATE_DELTA else - plasma_burn_rate = (temperature_scale*(oxygen/PLASMA_OXYGEN_FULLBURN))/PLASMA_BURN_RATE_DELTA + plasma_burn_rate = (temperature_scale * (oxygen / PLASMA_OXYGEN_FULLBURN)) / PLASMA_BURN_RATE_DELTA if(plasma_burn_rate > MINIMUM_HEAT_CAPACITY) toxins -= plasma_burn_rate oxygen -= plasma_burn_rate*oxygen_burn_rate @@ -175,12 +129,12 @@ What are the archived variables for? energy_released += FIRE_PLASMA_ENERGY_RELEASED * (plasma_burn_rate) - fuel_burnt += (plasma_burn_rate)*(1+oxygen_burn_rate) + fuel_burnt += (plasma_burn_rate) * (1 + oxygen_burn_rate) if(energy_released > 0) var/new_heat_capacity = heat_capacity() if(new_heat_capacity > MINIMUM_HEAT_CAPACITY) - temperature = (temperature*old_heat_capacity + energy_released)/new_heat_capacity + temperature = (temperature * old_heat_capacity + energy_released) / new_heat_capacity return fuel_burnt @@ -231,10 +185,8 @@ What are the archived variables for? carbon_dioxide_archived = carbon_dioxide nitrogen_archived = nitrogen toxins_archived = toxins - - for(var/gas in trace_gases) - var/datum/gas/trace_gas = gas - trace_gas.moles_archived = trace_gas.moles + sleeping_agent_archived = sleeping_agent + agent_b_archived = agent_b temperature_archived = temperature @@ -244,55 +196,45 @@ What are the archived variables for? if(!giver) return 0 - if(abs(temperature-giver.temperature)>MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) + if(abs(temperature - giver.temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) var/self_heat_capacity = heat_capacity() var/giver_heat_capacity = giver.heat_capacity() var/combined_heat_capacity = giver_heat_capacity + self_heat_capacity if(combined_heat_capacity != 0) - temperature = (giver.temperature*giver_heat_capacity + temperature*self_heat_capacity)/combined_heat_capacity + temperature = (giver.temperature * giver_heat_capacity + temperature * self_heat_capacity) / combined_heat_capacity oxygen += giver.oxygen carbon_dioxide += giver.carbon_dioxide nitrogen += giver.nitrogen toxins += giver.toxins - - for(var/gas in giver.trace_gases) - var/datum/gas/trace_gas = gas - var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases - if(!corresponding) - corresponding = new trace_gas.type() - trace_gases += corresponding - corresponding.moles += trace_gas.moles + sleeping_agent += giver.sleeping_agent + agent_b += giver.agent_b return 1 /datum/gas_mixture/remove(amount) var/sum = total_moles() - amount = min(amount,sum) //Can not take more air than tile has! + amount = min(amount, sum) //Can not take more air than tile has! if(amount <= 0) return null var/datum/gas_mixture/removed = new - removed.oxygen = QUANTIZE((oxygen/sum)*amount) - removed.nitrogen = QUANTIZE((nitrogen/sum)*amount) - removed.carbon_dioxide = QUANTIZE((carbon_dioxide/sum)*amount) - removed.toxins = QUANTIZE((toxins/sum)*amount) + removed.oxygen = QUANTIZE((oxygen / sum) * amount) + removed.nitrogen = QUANTIZE((nitrogen/ sum) * amount) + removed.carbon_dioxide = QUANTIZE((carbon_dioxide / sum) * amount) + removed.toxins = QUANTIZE((toxins / sum) * amount) + removed.sleeping_agent = QUANTIZE((sleeping_agent / sum) * amount) + removed.agent_b = QUANTIZE((agent_b / sum) * amount) oxygen -= removed.oxygen nitrogen -= removed.nitrogen carbon_dioxide -= removed.carbon_dioxide toxins -= removed.toxins - - for(var/gas in trace_gases) - var/datum/gas/trace_gas = gas - var/datum/gas/corresponding = new trace_gas.type() - removed.trace_gases += corresponding - - corresponding.moles = (trace_gas.moles/sum)*amount - trace_gas.moles -= corresponding.moles + sleeping_agent -= removed.sleeping_agent + agent_b -= removed.agent_b removed.temperature = temperature @@ -307,23 +249,19 @@ What are the archived variables for? var/datum/gas_mixture/removed = new - removed.oxygen = QUANTIZE(oxygen*ratio) - removed.nitrogen = QUANTIZE(nitrogen*ratio) - removed.carbon_dioxide = QUANTIZE(carbon_dioxide*ratio) - removed.toxins = QUANTIZE(toxins*ratio) + removed.oxygen = QUANTIZE(oxygen * ratio) + removed.nitrogen = QUANTIZE(nitrogen * ratio) + removed.carbon_dioxide = QUANTIZE(carbon_dioxide * ratio) + removed.toxins = QUANTIZE(toxins * ratio) + removed.sleeping_agent = QUANTIZE(sleeping_agent * ratio) + removed.agent_b = QUANTIZE(agent_b * ratio) oxygen -= removed.oxygen nitrogen -= removed.nitrogen carbon_dioxide -= removed.carbon_dioxide toxins -= removed.toxins - - for(var/gas in trace_gases) - var/datum/gas/trace_gas = gas - var/datum/gas/corresponding = new trace_gas.type() - removed.trace_gases += corresponding - - corresponding.moles = trace_gas.moles*ratio - trace_gas.moles -= corresponding.moles + sleeping_agent -= removed.sleeping_agent + agent_b -= removed.agent_b removed.temperature = temperature @@ -334,14 +272,8 @@ What are the archived variables for? carbon_dioxide = sample.carbon_dioxide nitrogen = sample.nitrogen toxins = sample.toxins - - trace_gases.len=null - for(var/gas in sample.trace_gases) - var/datum/gas/trace_gas = gas - var/datum/gas/corresponding = new trace_gas.type() - trace_gases += corresponding - - corresponding.moles = trace_gas.moles + sleeping_agent = sample.sleeping_agent + agent_b = sample.agent_b temperature = sample.temperature @@ -352,6 +284,8 @@ What are the archived variables for? carbon_dioxide = model.carbon_dioxide nitrogen = model.nitrogen toxins = model.toxins + sleeping_agent = model.sleeping_agent + agent_b = model.agent_b //acounts for changes in temperature var/turf/model_parent = model.parent_type @@ -361,26 +295,25 @@ What are the archived variables for? return 1 /datum/gas_mixture/check_turf(turf/model, atmos_adjacent_turfs = 4) - var/delta_oxygen = (oxygen_archived - model.oxygen)/(atmos_adjacent_turfs+1) - var/delta_carbon_dioxide = (carbon_dioxide_archived - model.carbon_dioxide)/(atmos_adjacent_turfs+1) - var/delta_nitrogen = (nitrogen_archived - model.nitrogen)/(atmos_adjacent_turfs+1) - var/delta_toxins = (toxins_archived - model.toxins)/(atmos_adjacent_turfs+1) + var/delta_oxygen = (oxygen_archived - model.oxygen) / (atmos_adjacent_turfs + 1) + var/delta_carbon_dioxide = (carbon_dioxide_archived - model.carbon_dioxide) / (atmos_adjacent_turfs + 1) + var/delta_nitrogen = (nitrogen_archived - model.nitrogen) / (atmos_adjacent_turfs + 1) + var/delta_toxins = (toxins_archived - model.toxins) / (atmos_adjacent_turfs + 1) + var/delta_sleeping_agent = (sleeping_agent_archived - model.sleeping_agent) / (atmos_adjacent_turfs + 1) + var/delta_agent_b = (agent_b_archived - model.agent_b) / (atmos_adjacent_turfs + 1) var/delta_temperature = (temperature_archived - model.temperature) - if(((abs(delta_oxygen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_oxygen) >= oxygen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ - || ((abs(delta_carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_carbon_dioxide) >= carbon_dioxide_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ - || ((abs(delta_nitrogen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_nitrogen) >= nitrogen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ - || ((abs(delta_toxins) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_toxins) >= toxins_archived*MINIMUM_AIR_RATIO_TO_SUSPEND))) + if(((abs(delta_oxygen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_oxygen) >= oxygen_archived * MINIMUM_AIR_RATIO_TO_SUSPEND)) \ + || ((abs(delta_carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_carbon_dioxide) >= carbon_dioxide_archived * MINIMUM_AIR_RATIO_TO_SUSPEND)) \ + || ((abs(delta_nitrogen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_nitrogen) >= nitrogen_archived * MINIMUM_AIR_RATIO_TO_SUSPEND)) \ + || ((abs(delta_toxins) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_toxins) >= toxins_archived * MINIMUM_AIR_RATIO_TO_SUSPEND)) \ + || ((abs(delta_sleeping_agent) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_sleeping_agent) >= sleeping_agent_archived * MINIMUM_AIR_RATIO_TO_SUSPEND)) \ + || ((abs(delta_agent_b) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_agent_b) >= agent_b_archived * MINIMUM_AIR_RATIO_TO_SUSPEND))) return 0 if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) return 0 - for(var/gas in trace_gases) - var/datum/gas/trace_gas = gas - if(trace_gas.moles_archived > MINIMUM_AIR_TO_SUSPEND*4) - return 0 - return 1 /datum/gas_mixture/proc/check_turf_total(turf/model) //I want this proc to die a painful death @@ -388,30 +321,32 @@ What are the archived variables for? var/delta_carbon_dioxide = (carbon_dioxide - model.carbon_dioxide) var/delta_nitrogen = (nitrogen - model.nitrogen) var/delta_toxins = (toxins - model.toxins) + var/delta_sleeping_agent = (sleeping_agent - model.sleeping_agent) + var/delta_agent_b = (agent_b - model.agent_b) var/delta_temperature = (temperature - model.temperature) - if(((abs(delta_oxygen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_oxygen) >= oxygen*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ - || ((abs(delta_carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_carbon_dioxide) >= carbon_dioxide*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ - || ((abs(delta_nitrogen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_nitrogen) >= nitrogen*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ - || ((abs(delta_toxins) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_toxins) >= toxins*MINIMUM_AIR_RATIO_TO_SUSPEND))) + if(((abs(delta_oxygen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_oxygen) >= oxygen * MINIMUM_AIR_RATIO_TO_SUSPEND)) \ + || ((abs(delta_carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_carbon_dioxide) >= carbon_dioxide * MINIMUM_AIR_RATIO_TO_SUSPEND)) \ + || ((abs(delta_nitrogen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_nitrogen) >= nitrogen * MINIMUM_AIR_RATIO_TO_SUSPEND)) \ + || ((abs(delta_toxins) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_toxins) >= toxins * MINIMUM_AIR_RATIO_TO_SUSPEND)) \ + || ((abs(delta_sleeping_agent) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_sleeping_agent) >= sleeping_agent * MINIMUM_AIR_RATIO_TO_SUSPEND)) \ + || ((abs(delta_agent_b) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_agent_b) >= agent_b * MINIMUM_AIR_RATIO_TO_SUSPEND))) return 0 if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) return 0 - for(var/gas in trace_gases) - var/datum/gas/trace_gas = gas - if(trace_gas.moles > MINIMUM_AIR_TO_SUSPEND*4) - return 0 - return 1 /datum/gas_mixture/share(datum/gas_mixture/sharer, atmos_adjacent_turfs = 4) - if(!sharer) return 0 - var/delta_oxygen = QUANTIZE(oxygen_archived - sharer.oxygen_archived)/(atmos_adjacent_turfs+1) - var/delta_carbon_dioxide = QUANTIZE(carbon_dioxide_archived - sharer.carbon_dioxide_archived)/(atmos_adjacent_turfs+1) - var/delta_nitrogen = QUANTIZE(nitrogen_archived - sharer.nitrogen_archived)/(atmos_adjacent_turfs+1) - var/delta_toxins = QUANTIZE(toxins_archived - sharer.toxins_archived)/(atmos_adjacent_turfs+1) + if(!sharer) + return 0 + var/delta_oxygen = QUANTIZE(oxygen_archived - sharer.oxygen_archived) / (atmos_adjacent_turfs + 1) + var/delta_carbon_dioxide = QUANTIZE(carbon_dioxide_archived - sharer.carbon_dioxide_archived) / (atmos_adjacent_turfs + 1) + var/delta_nitrogen = QUANTIZE(nitrogen_archived - sharer.nitrogen_archived) / (atmos_adjacent_turfs + 1) + var/delta_toxins = QUANTIZE(toxins_archived - sharer.toxins_archived) / (atmos_adjacent_turfs + 1) + var/delta_sleeping_agent = QUANTIZE(sleeping_agent_archived - sharer.sleeping_agent_archived) / (atmos_adjacent_turfs + 1) + var/delta_agent_b = QUANTIZE(agent_b_archived - sharer.agent_b_archived) / (atmos_adjacent_turfs + 1) var/delta_temperature = (temperature_archived - sharer.temperature_archived) @@ -423,28 +358,42 @@ What are the archived variables for? if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) - var/delta_air = delta_oxygen+delta_nitrogen + var/delta_air = delta_oxygen + delta_nitrogen if(delta_air) - var/air_heat_capacity = SPECIFIC_HEAT_AIR*delta_air + var/air_heat_capacity = SPECIFIC_HEAT_AIR * delta_air if(delta_air > 0) heat_capacity_self_to_sharer += air_heat_capacity else heat_capacity_sharer_to_self -= air_heat_capacity if(delta_carbon_dioxide) - var/carbon_dioxide_heat_capacity = SPECIFIC_HEAT_CDO*delta_carbon_dioxide + var/carbon_dioxide_heat_capacity = SPECIFIC_HEAT_CDO * delta_carbon_dioxide if(delta_carbon_dioxide > 0) heat_capacity_self_to_sharer += carbon_dioxide_heat_capacity else heat_capacity_sharer_to_self -= carbon_dioxide_heat_capacity if(delta_toxins) - var/toxins_heat_capacity = SPECIFIC_HEAT_TOXIN*delta_toxins + var/toxins_heat_capacity = SPECIFIC_HEAT_TOXIN * delta_toxins if(delta_toxins > 0) heat_capacity_self_to_sharer += toxins_heat_capacity else heat_capacity_sharer_to_self -= toxins_heat_capacity + if(delta_sleeping_agent) + var/sleeping_agent_heat_capacity = SPECIFIC_HEAT_N2O * delta_sleeping_agent + if(delta_sleeping_agent > 0) + heat_capacity_self_to_sharer += sleeping_agent_heat_capacity + else + heat_capacity_sharer_to_self -= sleeping_agent_heat_capacity + + if(delta_agent_b) + var/agent_b_heat_capacity = SPECIFIC_HEAT_AGENT_B * delta_agent_b + if(delta_agent_b > 0) + heat_capacity_self_to_sharer += agent_b_heat_capacity + else + heat_capacity_sharer_to_self -= agent_b_heat_capacity + old_self_heat_capacity = heat_capacity() old_sharer_heat_capacity = sharer.heat_capacity() @@ -460,83 +409,40 @@ What are the archived variables for? toxins -= delta_toxins sharer.toxins += delta_toxins - var/moved_moles = (delta_oxygen + delta_carbon_dioxide + delta_nitrogen + delta_toxins) - last_share = abs(delta_oxygen) + abs(delta_carbon_dioxide) + abs(delta_nitrogen) + abs(delta_toxins) + sleeping_agent -= delta_sleeping_agent + sharer.sleeping_agent += delta_sleeping_agent - var/list/trace_types_considered = list() + agent_b -= delta_agent_b + sharer.agent_b += delta_agent_b - for(var/gas in trace_gases) - var/datum/gas/trace_gas = gas - var/datum/gas/corresponding = locate(trace_gas.type) in sharer.trace_gases - var/delta = 0 - - if(corresponding) - delta = QUANTIZE(trace_gas.moles_archived - corresponding.moles_archived)/(atmos_adjacent_turfs+1) - else - corresponding = new trace_gas.type() - sharer.trace_gases += corresponding - - delta = trace_gas.moles_archived/(atmos_adjacent_turfs+1) - - trace_gas.moles -= delta - corresponding.moles += delta - - if(delta) - var/individual_heat_capacity = trace_gas.specific_heat*delta - if(delta > 0) - heat_capacity_self_to_sharer += individual_heat_capacity - else - heat_capacity_sharer_to_self -= individual_heat_capacity - - moved_moles += delta - last_share += abs(delta) - - trace_types_considered += trace_gas.type - - for(var/gas in sharer.trace_gases) - var/datum/gas/trace_gas = gas - if(trace_gas.type in trace_types_considered) - continue - var/datum/gas/corresponding - var/delta = 0 - corresponding = new trace_gas.type() - trace_gases += corresponding - - delta = trace_gas.moles_archived/5 - - trace_gas.moles -= delta - corresponding.moles += delta - - //Guaranteed transfer from sharer to self - var/individual_heat_capacity = trace_gas.specific_heat*delta - heat_capacity_sharer_to_self += individual_heat_capacity - - moved_moles += -delta - last_share += abs(delta) + var/moved_moles = (delta_oxygen + delta_carbon_dioxide + delta_nitrogen + delta_toxins + delta_sleeping_agent + delta_agent_b) + last_share = abs(delta_oxygen) + abs(delta_carbon_dioxide) + abs(delta_nitrogen) + abs(delta_toxins) + abs(delta_sleeping_agent) + abs(delta_agent_b) if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) var/new_self_heat_capacity = old_self_heat_capacity + heat_capacity_sharer_to_self - heat_capacity_self_to_sharer var/new_sharer_heat_capacity = old_sharer_heat_capacity + heat_capacity_self_to_sharer - heat_capacity_sharer_to_self if(new_self_heat_capacity > MINIMUM_HEAT_CAPACITY) - temperature = (old_self_heat_capacity*temperature - heat_capacity_self_to_sharer*temperature_archived + heat_capacity_sharer_to_self*sharer.temperature_archived)/new_self_heat_capacity + temperature = (old_self_heat_capacity * temperature - heat_capacity_self_to_sharer * temperature_archived + heat_capacity_sharer_to_self * sharer.temperature_archived) / new_self_heat_capacity if(new_sharer_heat_capacity > MINIMUM_HEAT_CAPACITY) - sharer.temperature = (old_sharer_heat_capacity*sharer.temperature-heat_capacity_sharer_to_self*sharer.temperature_archived + heat_capacity_self_to_sharer*temperature_archived)/new_sharer_heat_capacity + sharer.temperature = (old_sharer_heat_capacity * sharer.temperature - heat_capacity_sharer_to_self * sharer.temperature_archived + heat_capacity_self_to_sharer * temperature_archived) / new_sharer_heat_capacity if(abs(old_sharer_heat_capacity) > MINIMUM_HEAT_CAPACITY) - if(abs(new_sharer_heat_capacity/old_sharer_heat_capacity - 1) < 0.10) // <10% change in sharer heat capacity + if(abs(new_sharer_heat_capacity / old_sharer_heat_capacity - 1) < 0.10) // <10% change in sharer heat capacity temperature_share(sharer, OPEN_HEAT_TRANSFER_COEFFICIENT) if((delta_temperature > MINIMUM_TEMPERATURE_TO_MOVE) || abs(moved_moles) > MINIMUM_MOLES_DELTA_TO_MOVE) - var/delta_pressure = temperature_archived*(total_moles() + moved_moles) - sharer.temperature_archived*(sharer.total_moles() - moved_moles) - return delta_pressure*R_IDEAL_GAS_EQUATION/volume + var/delta_pressure = temperature_archived * (total_moles() + moved_moles) - sharer.temperature_archived * (sharer.total_moles() - moved_moles) + return delta_pressure * R_IDEAL_GAS_EQUATION / volume /datum/gas_mixture/mimic(turf/model, atmos_adjacent_turfs = 4) - var/delta_oxygen = QUANTIZE(oxygen_archived - model.oxygen)/(atmos_adjacent_turfs+1) - var/delta_carbon_dioxide = QUANTIZE(carbon_dioxide_archived - model.carbon_dioxide)/(atmos_adjacent_turfs+1) - var/delta_nitrogen = QUANTIZE(nitrogen_archived - model.nitrogen)/(atmos_adjacent_turfs+1) - var/delta_toxins = QUANTIZE(toxins_archived - model.toxins)/(atmos_adjacent_turfs+1) + var/delta_oxygen = QUANTIZE(oxygen_archived - model.oxygen) / (atmos_adjacent_turfs + 1) + var/delta_carbon_dioxide = QUANTIZE(carbon_dioxide_archived - model.carbon_dioxide) / (atmos_adjacent_turfs + 1) + var/delta_nitrogen = QUANTIZE(nitrogen_archived - model.nitrogen) / (atmos_adjacent_turfs + 1) + var/delta_toxins = QUANTIZE(toxins_archived - model.toxins) / (atmos_adjacent_turfs + 1) + var/delta_sleeping_agent = QUANTIZE(sleeping_agent_archived - model.sleeping_agent) / (atmos_adjacent_turfs + 1) + var/delta_agent_b = QUANTIZE(agent_b_archived - model.agent_b) / (atmos_adjacent_turfs + 1) var/delta_temperature = (temperature_archived - model.temperature) @@ -546,57 +452,54 @@ What are the archived variables for? if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) - var/delta_air = delta_oxygen+delta_nitrogen + var/delta_air = delta_oxygen + delta_nitrogen if(delta_air) - var/air_heat_capacity = SPECIFIC_HEAT_AIR*delta_air - heat_transferred -= air_heat_capacity*model.temperature + var/air_heat_capacity = SPECIFIC_HEAT_AIR * delta_air + heat_transferred -= air_heat_capacity * model.temperature heat_capacity_transferred -= air_heat_capacity if(delta_carbon_dioxide) - var/carbon_dioxide_heat_capacity = SPECIFIC_HEAT_CDO*delta_carbon_dioxide - heat_transferred -= carbon_dioxide_heat_capacity*model.temperature + var/carbon_dioxide_heat_capacity = SPECIFIC_HEAT_CDO * delta_carbon_dioxide + heat_transferred -= carbon_dioxide_heat_capacity * model.temperature heat_capacity_transferred -= carbon_dioxide_heat_capacity if(delta_toxins) - var/toxins_heat_capacity = SPECIFIC_HEAT_TOXIN*delta_toxins - heat_transferred -= toxins_heat_capacity*model.temperature + var/toxins_heat_capacity = SPECIFIC_HEAT_TOXIN * delta_toxins + heat_transferred -= toxins_heat_capacity * model.temperature heat_capacity_transferred -= toxins_heat_capacity + if(delta_sleeping_agent) + var/sleeping_agent_heat_capacity = SPECIFIC_HEAT_N2O * delta_sleeping_agent + heat_transferred -= sleeping_agent_heat_capacity * model.temperature + heat_capacity_transferred -= sleeping_agent_heat_capacity + + if(delta_agent_b) + var/agent_b_heat_capacity = SPECIFIC_HEAT_AGENT_B * delta_agent_b + heat_transferred -= agent_b_heat_capacity * model.temperature + heat_capacity_transferred -= agent_b_heat_capacity + old_self_heat_capacity = heat_capacity() oxygen -= delta_oxygen carbon_dioxide -= delta_carbon_dioxide nitrogen -= delta_nitrogen toxins -= delta_toxins + sleeping_agent -= delta_sleeping_agent + agent_b -= delta_agent_b - var/moved_moles = (delta_oxygen + delta_carbon_dioxide + delta_nitrogen + delta_toxins) - last_share = abs(delta_oxygen) + abs(delta_carbon_dioxide) + abs(delta_nitrogen) + abs(delta_toxins) - - if(trace_gases.len) - for(var/gas in trace_gases) - var/datum/gas/trace_gas = gas - var/delta = 0 - - delta = trace_gas.moles_archived/(atmos_adjacent_turfs+1) - - trace_gas.moles -= delta - - var/heat_cap_transferred = delta*trace_gas.specific_heat - heat_transferred += heat_cap_transferred*temperature_archived - heat_capacity_transferred += heat_cap_transferred - moved_moles += delta - moved_moles += abs(delta) + var/moved_moles = (delta_oxygen + delta_carbon_dioxide + delta_nitrogen + delta_toxins + delta_sleeping_agent + delta_agent_b) + last_share = abs(delta_oxygen) + abs(delta_carbon_dioxide) + abs(delta_nitrogen) + abs(delta_toxins) + abs(delta_sleeping_agent) + abs(delta_agent_b) if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) var/new_self_heat_capacity = old_self_heat_capacity - heat_capacity_transferred if(new_self_heat_capacity > MINIMUM_HEAT_CAPACITY) - temperature = (old_self_heat_capacity*temperature - heat_capacity_transferred*temperature_archived)/new_self_heat_capacity + temperature = (old_self_heat_capacity * temperature - heat_capacity_transferred * temperature_archived) / new_self_heat_capacity temperature_mimic(model, model.thermal_conductivity) if((delta_temperature > MINIMUM_TEMPERATURE_TO_MOVE) || abs(moved_moles) > MINIMUM_MOLES_DELTA_TO_MOVE) - var/delta_pressure = temperature_archived*(total_moles() + moved_moles) - model.temperature*(model.oxygen+model.carbon_dioxide+model.nitrogen+model.toxins) - return delta_pressure*R_IDEAL_GAS_EQUATION/volume + var/delta_pressure = temperature_archived * (total_moles() + moved_moles) - model.temperature * (model.oxygen + model.carbon_dioxide + model.nitrogen + model.toxins + model.sleeping_agent + model.agent_b) + return delta_pressure * R_IDEAL_GAS_EQUATION / volume else return 0 @@ -608,11 +511,11 @@ What are the archived variables for? var/sharer_heat_capacity = sharer.heat_capacity_archived() if((sharer_heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY)) - var/heat = conduction_coefficient*delta_temperature* \ - (self_heat_capacity*sharer_heat_capacity/(self_heat_capacity+sharer_heat_capacity)) + var/heat = conduction_coefficient*delta_temperature * \ + (self_heat_capacity * sharer_heat_capacity / (self_heat_capacity + sharer_heat_capacity)) - temperature -= heat/self_heat_capacity - sharer.temperature += heat/sharer_heat_capacity + temperature -= heat / self_heat_capacity + sharer.temperature += heat / sharer_heat_capacity /datum/gas_mixture/temperature_mimic(turf/model, conduction_coefficient) var/delta_temperature = (temperature - model.temperature) @@ -620,10 +523,10 @@ What are the archived variables for? var/self_heat_capacity = heat_capacity() if((model.heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY)) - var/heat = conduction_coefficient*delta_temperature* \ - (self_heat_capacity*model.heat_capacity/(self_heat_capacity+model.heat_capacity)) + var/heat = conduction_coefficient * delta_temperature * \ + (self_heat_capacity * model.heat_capacity / (self_heat_capacity + model.heat_capacity)) - temperature -= heat/self_heat_capacity + temperature -= heat / self_heat_capacity /datum/gas_mixture/temperature_turf_share(turf/simulated/sharer, conduction_coefficient) var/delta_temperature = (temperature_archived - sharer.temperature) @@ -631,52 +534,36 @@ What are the archived variables for? var/self_heat_capacity = heat_capacity() if((sharer.heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY)) - var/heat = conduction_coefficient*delta_temperature* \ - (self_heat_capacity*sharer.heat_capacity/(self_heat_capacity+sharer.heat_capacity)) + var/heat = conduction_coefficient * delta_temperature * \ + (self_heat_capacity * sharer.heat_capacity / (self_heat_capacity + sharer.heat_capacity)) - temperature -= heat/self_heat_capacity - sharer.temperature += heat/sharer.heat_capacity + temperature -= heat / self_heat_capacity + sharer.temperature += heat / sharer.heat_capacity /datum/gas_mixture/compare(datum/gas_mixture/sample) - if((abs(oxygen-sample.oxygen) > MINIMUM_AIR_TO_SUSPEND) && \ - ((oxygen < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.oxygen) || (oxygen > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.oxygen))) + if((abs(oxygen - sample.oxygen) > MINIMUM_AIR_TO_SUSPEND) && \ + ((oxygen < (1 - MINIMUM_AIR_RATIO_TO_SUSPEND) * sample.oxygen) || (oxygen > (1 + MINIMUM_AIR_RATIO_TO_SUSPEND) * sample.oxygen))) return 0 - if((abs(nitrogen-sample.nitrogen) > MINIMUM_AIR_TO_SUSPEND) && \ - ((nitrogen < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.nitrogen) || (nitrogen > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.nitrogen))) + if((abs(nitrogen - sample.nitrogen) > MINIMUM_AIR_TO_SUSPEND) && \ + ((nitrogen < (1 - MINIMUM_AIR_RATIO_TO_SUSPEND) * sample.nitrogen) || (nitrogen > (1 + MINIMUM_AIR_RATIO_TO_SUSPEND) * sample.nitrogen))) return 0 - if((abs(carbon_dioxide-sample.carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && \ - ((carbon_dioxide < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.carbon_dioxide) || (carbon_dioxide > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.carbon_dioxide))) + if((abs(carbon_dioxide - sample.carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && \ + ((carbon_dioxide < (1 - MINIMUM_AIR_RATIO_TO_SUSPEND) * sample.carbon_dioxide) || (carbon_dioxide > (1 + MINIMUM_AIR_RATIO_TO_SUSPEND) * sample.carbon_dioxide))) return 0 - if((abs(toxins-sample.toxins) > MINIMUM_AIR_TO_SUSPEND) && \ - ((toxins < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.toxins) || (toxins > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.toxins))) + if((abs(toxins - sample.toxins) > MINIMUM_AIR_TO_SUSPEND) && \ + ((toxins < (1 - MINIMUM_AIR_RATIO_TO_SUSPEND) * sample.toxins) || (toxins > (1 + MINIMUM_AIR_RATIO_TO_SUSPEND) * sample.toxins))) + return 0 + if((abs(sleeping_agent - sample.sleeping_agent) > MINIMUM_AIR_TO_SUSPEND) && \ + ((sleeping_agent < (1 - MINIMUM_AIR_RATIO_TO_SUSPEND) * sample.sleeping_agent) || (sleeping_agent > (1 + MINIMUM_AIR_RATIO_TO_SUSPEND) * sample.sleeping_agent))) + return 0 + if((abs(agent_b - sample.agent_b) > MINIMUM_AIR_TO_SUSPEND) && \ + ((agent_b < (1 - MINIMUM_AIR_RATIO_TO_SUSPEND) * sample.agent_b) || (agent_b > (1 + MINIMUM_AIR_RATIO_TO_SUSPEND) * sample.agent_b))) return 0 if(total_moles() > MINIMUM_AIR_TO_SUSPEND) - if((abs(temperature-sample.temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) && \ - ((temperature < (1-MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND)*sample.temperature) || (temperature > (1+MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND)*sample.temperature))) + if((abs(temperature - sample.temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) && \ + ((temperature < (1 - MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND) * sample.temperature) || (temperature > (1 + MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND) * sample.temperature))) return 0 - - for(var/gas in sample.trace_gases) - var/datum/gas/trace_gas = gas - if(trace_gas.moles_archived > MINIMUM_AIR_TO_SUSPEND) - var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases - if(corresponding) - if((abs(trace_gas.moles - corresponding.moles) > MINIMUM_AIR_TO_SUSPEND) && \ - ((corresponding.moles < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*trace_gas.moles) || (corresponding.moles > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*trace_gas.moles))) - return 0 - else - return 0 - - for(var/gas in trace_gases) - var/datum/gas/trace_gas = gas - if(trace_gas.moles > MINIMUM_AIR_TO_SUSPEND) - var/datum/gas/corresponding = locate(trace_gas.type) in sample.trace_gases - if(corresponding) - if((abs(trace_gas.moles - corresponding.moles) > MINIMUM_AIR_TO_SUSPEND) && \ - ((trace_gas.moles < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*corresponding.moles) || (trace_gas.moles > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*corresponding.moles))) - return 0 - else - return 0 return 1 @@ -691,12 +578,12 @@ What are the archived variables for? //Does handle trace gases! /datum/gas_mixture/proc/get_breath_partial_pressure(gas_pressure) - return (gas_pressure*R_IDEAL_GAS_EQUATION*temperature)/BREATH_VOLUME + return (gas_pressure * R_IDEAL_GAS_EQUATION * temperature) / BREATH_VOLUME //Reverse of the above /datum/gas_mixture/proc/get_true_breath_pressure(breath_pp) - return (breath_pp*BREATH_VOLUME)/(R_IDEAL_GAS_EQUATION*temperature) + return (breath_pp * BREATH_VOLUME) / (R_IDEAL_GAS_EQUATION * temperature) //Mathematical proofs: /* diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm index 9bba49f2678..4e20d2a675e 100644 --- a/code/datums/helper_datums/teleport.dm +++ b/code/datums/helper_datums/teleport.dm @@ -211,7 +211,7 @@ var/datum/gas_mixture/A = F.air // Can most things breathe? - if(A.trace_gases.len) + if(A.sleeping_agent) continue if(A.oxygen < 16) continue diff --git a/code/game/gamemodes/miniantags/guardian/types/healer.dm b/code/game/gamemodes/miniantags/guardian/types/healer.dm index e3217e0249a..75f5fddba53 100644 --- a/code/game/gamemodes/miniantags/guardian/types/healer.dm +++ b/code/game/gamemodes/miniantags/guardian/types/healer.dm @@ -130,7 +130,7 @@ if(beacon) //Check that the beacon still exists and is in a safe place. No instant kills. if(beacon.air) var/datum/gas_mixture/Z = beacon.air - if(Z.oxygen >= 16 && !Z.toxins && Z.carbon_dioxide < 10 && !Z.trace_gases.len) + if(Z.oxygen >= 16 && !Z.toxins && Z.carbon_dioxide < 10 && !Z.sleeping_agent) if((Z.temperature > 270) && (Z.temperature < 360)) var/pressure = Z.return_pressure() if((pressure > 20) && (pressure < 550)) diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index 02d95278e30..a1ae5e974c4 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -299,10 +299,7 @@ var/plasma_dangerlevel = cur_tlv.get_danger_level(environment.toxins*GET_PP) cur_tlv = TLV["other"] - var/other_moles = 0.0 - for(var/datum/gas/G in environment.trace_gases) - other_moles+=G.moles - var/other_dangerlevel = cur_tlv.get_danger_level(other_moles*GET_PP) + var/other_dangerlevel = cur_tlv.get_danger_level(environment.total_trace_moles() * GET_PP) cur_tlv = TLV["temperature"] var/temperature_dangerlevel = cur_tlv.get_danger_level(environment.temperature) @@ -625,10 +622,8 @@ var/plasma_percent = round(environment.toxins / total * 100, 2) cur_tlv = TLV["other"] - var/other_moles = 0.0 - for(var/datum/gas/G in environment.trace_gases) - other_moles+=G.moles - var/other_dangerlevel = cur_tlv.get_danger_level(other_moles*GET_PP) + var/other_moles = environment.total_trace_moles() + var/other_dangerlevel = cur_tlv.get_danger_level(other_moles * GET_PP) cur_tlv = TLV["temperature"] var/temperature_dangerlevel = cur_tlv.get_danger_level(environment.temperature) diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index d91fba5fa5c..e927415c759 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -417,8 +417,7 @@ update_flag if(air_contents.toxins > 0) message_admins("[key_name_admin(usr)] opened a canister that contains plasma in [get_area(src)]! (JMP)") log_admin("[key_name(usr)] opened a canister that contains plasma at [get_area(src)]: [x], [y], [z]") - var/datum/gas/sleeping_agent = locate(/datum/gas/sleeping_agent) in air_contents.trace_gases - if(sleeping_agent && (sleeping_agent.moles > 1)) + if(air_contents.sleeping_agent > 0) message_admins("[key_name_admin(usr)] opened a canister that contains N2O in [get_area(src)]! (JMP)") log_admin("[key_name(usr)] opened a canister that contains N2O at [get_area(src)]: [x], [y], [z]") investigate_log(logmsg, "atmos") @@ -533,29 +532,11 @@ update_flag ..() canister_color["prim"] = "redws" - var/datum/gas/sleeping_agent/trace_gas = new - air_contents.trace_gases += trace_gas - trace_gas.moles = (src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) + air_contents.sleeping_agent = (maximum_pressure * filled) * air_contents.volume / (R_IDEAL_GAS_EQUATION * air_contents.temperature) src.update_icon() return 1 - -//Dirty way to fill room with gas. However it is a bit easier to do than creating some floor/engine/n2o -rastaf0 -/obj/machinery/portable_atmospherics/canister/sleeping_agent/roomfiller/New() - ..() - var/datum/gas/sleeping_agent/trace_gas = air_contents.trace_gases[1] - trace_gas.moles = 9*4000 - spawn(100) - var/turf/simulated/location = src.loc - if(istype(src.loc)) - while(!location.air) - sleep(1000) - location.assume_air(air_contents) - air_contents = new - return 1 - - /obj/machinery/portable_atmospherics/canister/nitrogen/New() ..() diff --git a/code/game/machinery/atmoalter/scrubber.dm b/code/game/machinery/atmoalter/scrubber.dm index 36e340d1a12..ef1b9e90d47 100644 --- a/code/game/machinery/atmoalter/scrubber.dm +++ b/code/game/machinery/atmoalter/scrubber.dm @@ -81,17 +81,11 @@ filtered_out.carbon_dioxide = removed.carbon_dioxide removed.carbon_dioxide = 0 - if(removed.trace_gases.len>0) - for(var/datum/gas/trace_gas in removed.trace_gases) - if(istype(trace_gas, /datum/gas/sleeping_agent)) - removed.trace_gases -= trace_gas - filtered_out.trace_gases += trace_gas + filtered_out.sleeping_agent = removed.sleeping_agent + removed.sleeping_agent = 0 - if(removed.trace_gases.len>0) - for(var/datum/gas/trace_gas in removed.trace_gases) - if(istype(trace_gas, /datum/gas/oxygen_agent_b)) - removed.trace_gases -= trace_gas - filtered_out.trace_gases += trace_gas + filtered_out.agent_b = removed.agent_b + removed.agent_b = 0 //Remix the resulting gases air_contents.merge(filtered_out) diff --git a/code/game/objects/items/weapons/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm index 11355b34170..a82d6c0c223 100644 --- a/code/game/objects/items/weapons/tanks/tank_types.dm +++ b/code/game/objects/items/weapons/tanks/tank_types.dm @@ -53,13 +53,8 @@ obj/item/tank/oxygen/empty/New() /obj/item/tank/anesthetic/New() ..() - - air_contents.oxygen = (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD - - var/datum/gas/sleeping_agent/trace_gas = new() - trace_gas.moles = (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD - - air_contents.trace_gases += trace_gas + air_contents.oxygen = (3 * ONE_ATMOSPHERE) * 70 / (R_IDEAL_GAS_EQUATION * T20C) * O2STANDARD + air_contents.sleeping_agent = (3 * ONE_ATMOSPHERE) * 70 / (R_IDEAL_GAS_EQUATION * T20C) * N2STANDARD /* * Air diff --git a/code/game/turfs/simulated/floor/misc_floor.dm b/code/game/turfs/simulated/floor/misc_floor.dm index 0ca6494497c..95d5f816aa4 100644 --- a/code/game/turfs/simulated/floor/misc_floor.dm +++ b/code/game/turfs/simulated/floor/misc_floor.dm @@ -20,6 +20,14 @@ icon = 'icons/turf/floors.dmi' icon_state = "bcircuit" +/turf/simulated/floor/bluegrid/telecomms + nitrogen = 100 + oxygen = 0 + temperature = 80 + +/turf/simulated/floor/bluegrid/telecomms/server + name = "server base" + /turf/simulated/floor/greengrid icon = 'icons/turf/floors.dmi' icon_state = "gcircuit" diff --git a/code/game/turfs/simulated/floor/plasteel_floor.dm b/code/game/turfs/simulated/floor/plasteel_floor.dm index d36396aaa5f..ee19b4eeeb5 100644 --- a/code/game/turfs/simulated/floor/plasteel_floor.dm +++ b/code/game/turfs/simulated/floor/plasteel_floor.dm @@ -41,6 +41,11 @@ /turf/simulated/floor/plasteel/dark icon_state = "darkfull" +/turf/simulated/floor/plasteel/dark/telecomms + nitrogen = 100 + oxygen = 0 + temperature = 80 + /turf/simulated/floor/plasteel/freezer icon_state = "freezerfloor" diff --git a/code/game/turfs/simulated/floor/plating.dm b/code/game/turfs/simulated/floor/plating.dm index 588a8387474..c692135dc44 100644 --- a/code/game/turfs/simulated/floor/plating.dm +++ b/code/game/turfs/simulated/floor/plating.dm @@ -205,16 +205,41 @@ color = "#FAE48C" animate(src, color = previouscolor, time = 8) -/turf/simulated/floor/engine/n20/New() - ..() - var/datum/gas_mixture/adding = new - var/datum/gas/sleeping_agent/trace_gas = new +//air filled floors; used in atmos pressure chambers - trace_gas.moles = 6000 - adding.trace_gases += trace_gas - adding.temperature = T20C +/turf/simulated/floor/engine/n20 + name = "\improper N2O floor" + sleeping_agent = 6000 + oxygen = 0 + nitrogen = 0 + +/turf/simulated/floor/engine/co2 + name = "\improper CO2 floor" + carbon_dioxide = 50000 + oxygen = 0 + nitrogen = 0 + +/turf/simulated/floor/engine/plasma + name = "plasma floor" + toxins = 70000 + oxygen = 0 + nitrogen = 0 + +/turf/simulated/floor/engine/o2 + name = "\improper O2 floor" + oxygen = 100000 + nitrogen = 0 + +/turf/simulated/floor/engine/n2 + name = "\improper N2 floor" + nitrogen = 100000 + oxygen = 0 + +/turf/simulated/floor/engine/air + name = "air floor" + oxygen = 2644 + nitrogen = 10580 - assume_air(adding) /turf/simulated/floor/engine/singularity_pull(S, current_size) ..() diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index defd6720e7d..b4f71a38c2c 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -7,11 +7,14 @@ var/turf/baseturf = /turf/space var/slowdown = 0 //negative for faster, positive for slower - //Properties for open tiles (/floor) + ///Properties for open tiles (/floor) + /// All the gas vars, on the turf, are meant to be utilized for initializing a gas datum and setting its first gas values; the turf vars are never further modified at runtime; it is never directly used for calculations by the atmospherics system. var/oxygen = 0 var/carbon_dioxide = 0 var/nitrogen = 0 var/toxins = 0 + var/sleeping_agent = 0 + var/agent_b = 0 //Properties for airtight tiles (/wall) var/thermal_conductivity = 0.05 @@ -267,32 +270,38 @@ //////Assimilate Air////// /turf/simulated/proc/Assimilate_Air() if(air) - var/aoxy = 0//Holders to assimilate air from nearby turfs + var/aoxy = 0 //Holders to assimilate air from nearby turfs var/anitro = 0 var/aco = 0 var/atox = 0 + var/asleep = 0 + var/ab = 0 var/atemp = 0 var/turf_count = 0 for(var/direction in GLOB.cardinal)//Only use cardinals to cut down on lag var/turf/T = get_step(src,direction) - if(istype(T,/turf/space))//Counted as no air + if(istype(T, /turf/space))//Counted as no air turf_count++//Considered a valid turf for air calcs continue - else if(istype(T,/turf/simulated/floor)) + else if(istype(T, /turf/simulated/floor)) var/turf/simulated/S = T if(S.air)//Add the air's contents to the holders aoxy += S.air.oxygen anitro += S.air.nitrogen aco += S.air.carbon_dioxide atox += S.air.toxins + asleep += S.air.sleeping_agent + ab += S.air.agent_b atemp += S.air.temperature turf_count++ - air.oxygen = (aoxy/max(turf_count,1))//Averages contents of the turfs, ignoring walls and the like - air.nitrogen = (anitro/max(turf_count,1)) - air.carbon_dioxide = (aco/max(turf_count,1)) - air.toxins = (atox/max(turf_count,1)) - air.temperature = (atemp/max(turf_count,1))//Trace gases can get bant + air.oxygen = (aoxy / max(turf_count, 1)) //Averages contents of the turfs, ignoring walls and the like + air.nitrogen = (anitro / max(turf_count, 1)) + air.carbon_dioxide = (aco / max(turf_count, 1)) + air.toxins = (atox / max(turf_count, 1)) + air.sleeping_agent = (asleep / max(turf_count, 1)) + air.agent_b = (ab / max(turf_count, 1)) + air.temperature = (atemp / max(turf_count, 1)) if(SSair) SSair.add_to_active(src) diff --git a/code/modules/admin/verbs/diagnostics.dm b/code/modules/admin/verbs/diagnostics.dm index ce10383ca4e..78f2647e429 100644 --- a/code/modules/admin/verbs/diagnostics.dm +++ b/code/modules/admin/verbs/diagnostics.dm @@ -15,9 +15,7 @@ if(T.active_hotspot) burning = 1 - to_chat(usr, "@[target.x],[target.y]: O:[GM.oxygen] T:[GM.toxins] N:[GM.nitrogen] C:[GM.carbon_dioxide] w [GM.temperature] Kelvin, [GM.return_pressure()] kPa [(burning)?("BURNING"):(null)]") - for(var/datum/gas/trace_gas in GM.trace_gases) - to_chat(usr, "[trace_gas.type]: [trace_gas.moles]") + to_chat(usr, "@[target.x],[target.y]: O:[GM.oxygen] T:[GM.toxins] N:[GM.nitrogen] C:[GM.carbon_dioxide] N2O: [GM.sleeping_agent] Agent B: [GM.agent_b] w [GM.temperature] Kelvin, [GM.return_pressure()] kPa [(burning)?("BURNING"):(null)]") message_admins("[key_name_admin(usr)] has checked the air status of [target]") log_admin("[key_name(usr)] has checked the air status of [target]") diff --git a/code/modules/buildmode/submodes/atmos.dm b/code/modules/buildmode/submodes/atmos.dm index b3a07374846..ac840acbead 100644 --- a/code/modules/buildmode/submodes/atmos.dm +++ b/code/modules/buildmode/submodes/atmos.dm @@ -9,6 +9,7 @@ var/plasma = 0 var/cdiox = 0 var/nitrox = 0 + var/agentbx = 0 /datum/buildmode_mode/atmos/show_help(mob/user) @@ -29,6 +30,7 @@ plasma = input(user, "Plasma ratio", "Input", 0) as num|null cdiox = input(user, "CO2 ratio", "Input", 0) as num|null nitrox = input(user, "N2O ratio", "Input", 0) as num|null + agentbx = input(user, "Agent B ratio", "Input", 0) as num|null /datum/buildmode_mode/atmos/proc/ppratio_to_moles(ppratio) // ideal gas equation: Pressure * Volume = Moles * r * Temperature @@ -52,11 +54,8 @@ S.air.nitrogen = ppratio_to_moles(nitrogen) S.air.toxins = ppratio_to_moles(plasma) S.air.carbon_dioxide = ppratio_to_moles(cdiox) - S.air.trace_gases.Cut() - if(nitrox) - var/datum/gas/TG = new /datum/gas/sleeping_agent - TG.moles = ppratio_to_moles(nitrox) - S.air.trace_gases += TG + S.air.sleeping_agent = ppratio_to_moles(nitrox) + S.air.agent_b = ppratio_to_moles(agentbx) S.update_visuals() S.air_update_turf() else if(ctrl_click) // overwrite "default" unsimulated air @@ -65,7 +64,8 @@ T.nitrogen = ppratio_to_moles(nitrogen) T.toxins = ppratio_to_moles(plasma) T.carbon_dioxide = ppratio_to_moles(cdiox) - // no interface for trace gases on unsim turfs + T.sleeping_agent = ppratio_to_moles(nitrox) + T.agent_b = ppratio_to_moles(agentbx) T.air_update_turf() // admin log diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 66e2e60f144..207a3012ad8 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -122,7 +122,7 @@ var/O2_partialpressure = (breath.oxygen/breath.total_moles())*breath_pressure var/Toxins_partialpressure = (breath.toxins/breath.total_moles())*breath_pressure var/CO2_partialpressure = (breath.carbon_dioxide/breath.total_moles())*breath_pressure - + var/SA_partialpressure = (breath.sleeping_agent/breath.total_moles())*breath_pressure //OXYGEN if(O2_partialpressure < safe_oxy_min) //Not enough oxygen @@ -168,16 +168,14 @@ clear_alert("too_much_tox") //TRACE GASES - if(breath.trace_gases.len) - for(var/datum/gas/sleeping_agent/SA in breath.trace_gases) - var/SA_partialpressure = (SA.moles/breath.total_moles())*breath_pressure - if(SA_partialpressure > SA_para_min) - Paralyse(3) - if(SA_partialpressure > SA_sleep_min) - AdjustSleeping(2, bound_lower = 0, bound_upper = 10) - else if(SA_partialpressure > 0.01) - if(prob(20)) - emote(pick("giggle","laugh")) + if(breath.sleeping_agent) + if(SA_partialpressure > SA_para_min) + Paralyse(3) + if(SA_partialpressure > SA_sleep_min) + AdjustSleeping(2, bound_lower = 0, bound_upper = 10) + else if(SA_partialpressure > 0.01) + if(prob(20)) + emote(pick("giggle","laugh")) //BREATH TEMPERATURE handle_breath_temperature(breath) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index b3d985ac4e4..d7f05bd943d 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -65,8 +65,8 @@ t+= "Oxygen: [environment.oxygen] \n" t+= "Plasma : [environment.toxins] \n" t+= "Carbon Dioxide: [environment.carbon_dioxide] \n" - for(var/datum/gas/trace_gas in environment.trace_gases) - to_chat(usr, "[trace_gas.type]: [trace_gas.moles] \n") + t+= "N2O: [environment.sleeping_agent] \n" + t+= "Agent B: [environment.agent_b] \n" usr.show_message(t, 1) diff --git a/code/modules/modular_computers/file_system/programs/engineering/sm_monitor.dm b/code/modules/modular_computers/file_system/programs/engineering/sm_monitor.dm index 379e71ba484..0045b36f30e 100644 --- a/code/modules/modular_computers/file_system/programs/engineering/sm_monitor.dm +++ b/code/modules/modular_computers/file_system/programs/engineering/sm_monitor.dm @@ -84,9 +84,7 @@ data["SM_ambienttemp"] = air.temperature data["SM_ambientpressure"] = air.return_pressure() //data["SM_EPR"] = round((air.total_moles / air.group_multiplier) / 23.1, 0.01) - var/other_moles = 0.0 - for(var/datum/gas/G in air.trace_gases) - other_moles+=G.moles + var/other_moles = air.total_trace_moles() var/TM = air.total_moles() if(TM) data["SM_gas_O2"] = round(100*air.oxygen/TM,0.01) @@ -94,7 +92,7 @@ data["SM_gas_N2"] = round(100*air.nitrogen/TM,0.01) data["SM_gas_PL"] = round(100*air.toxins/TM,0.01) if(other_moles) - data["SM_gas_OTHER"] = round(100*other_moles/TM,0.01) + data["SM_gas_OTHER"] = round(100 * other_moles / TM, 0.01) else data["SM_gas_OTHER"] = 0 else diff --git a/code/modules/procedural_mapping/mapGeneratorModules/helpers.dm b/code/modules/procedural_mapping/mapGeneratorModules/helpers.dm index 3e43c5638d1..5a933251872 100644 --- a/code/modules/procedural_mapping/mapGeneratorModules/helpers.dm +++ b/code/modules/procedural_mapping/mapGeneratorModules/helpers.dm @@ -18,6 +18,8 @@ T.air.nitrogen = T.nitrogen T.air.carbon_dioxide = T.carbon_dioxide T.air.toxins = T.toxins + T.air.sleeping_agent = T.sleeping_agent + T.air.agent_b = T.agent_b T.air.temperature = T.temperature SSair.add_to_active(T) diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index 782bcbe6ca6..34b83d9fe7f 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -110,6 +110,7 @@ var/N2_pp = breath.get_breath_partial_pressure(breath.nitrogen) var/Toxins_pp = breath.get_breath_partial_pressure(breath.toxins) var/CO2_pp = breath.get_breath_partial_pressure(breath.carbon_dioxide) + var/SA_pp = breath.get_breath_partial_pressure(breath.sleeping_agent) //-- OXY --// @@ -230,16 +231,14 @@ //-- TRACES --// - if(breath.trace_gases.len) // If there's some other shit in the air lets deal with it here. - for(var/datum/gas/sleeping_agent/SA in breath.trace_gases) - var/SA_pp = breath.get_breath_partial_pressure(SA.moles) - if(SA_pp > SA_para_min) - H.Paralyse(3) // 3 gives them one second to wake up and run away a bit! - if(SA_pp > SA_sleep_min) // Enough to make us sleep as well - H.AdjustSleeping(8, bound_lower = 0, bound_upper = 10) - else if(SA_pp > 0.01) // There is sleeping gas in their lungs, but only a little, so give them a bit of a warning - if(prob(20)) - H.emote(pick("giggle", "laugh")) + if(breath.sleeping_agent) // If there's some other shit in the air lets deal with it here. + if(SA_pp > SA_para_min) + H.Paralyse(3) // 3 gives them one second to wake up and run away a bit! + if(SA_pp > SA_sleep_min) // Enough to make us sleep as well + H.AdjustSleeping(8, bound_lower = 0, bound_upper = 10) + else if(SA_pp > 0.01) // There is sleeping gas in their lungs, but only a little, so give them a bit of a warning + if(prob(20)) + H.emote(pick("giggle", "laugh")) handle_breath_temperature(breath, H)