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)