Gas Mixture Refactor (#13602)

* Gas Mixture Refactor

* derp

* defined turf types

* fixes

* cuts turf visuals cost in half

* even better equalizing with planetary atmos

* remove volatile fuel

* comment and documentatino on turf gas vars
This commit is contained in:
Fox McCloud
2020-06-24 17:48:50 -06:00
committed by GitHub
parent 086cd97af8
commit 69de03a622
32 changed files with 529 additions and 1353 deletions
+35 -196
View File
@@ -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,
@@ -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{
@@ -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{
+12 -60
View File
@@ -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{
@@ -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"
+50 -259
View File
@@ -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{
@@ -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
@@ -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
@@ -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)
@@ -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)
+16 -34
View File
@@ -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
+8 -4
View File
@@ -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
+42 -37
View File
@@ -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()
+1 -2
View File
@@ -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
+176 -289
View File
@@ -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:
/*
+1 -1
View File
@@ -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
@@ -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))
+3 -8
View File
@@ -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)
+2 -21
View File
@@ -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)]! (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
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)]! (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
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()
..()
+4 -10
View File
@@ -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)
@@ -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
@@ -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"
@@ -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"
+33 -8
View File
@@ -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)
..()
+18 -9
View File
@@ -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)
+1 -3
View File
@@ -15,9 +15,7 @@
if(T.active_hotspot)
burning = 1
to_chat(usr, "<span class='notice'>@[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)?("<span class='warning'>BURNING</span>"):(null)]</span>")
for(var/datum/gas/trace_gas in GM.trace_gases)
to_chat(usr, "[trace_gas.type]: [trace_gas.moles]")
to_chat(usr, "<span class='notice'>@[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)?("<span class='warning'>BURNING</span>"):(null)]</span>")
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]")
+6 -6
View File
@@ -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
+9 -11
View File
@@ -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)
+2 -2
View File
@@ -65,8 +65,8 @@
t+= "<span class='notice'>Oxygen: [environment.oxygen] \n</span>"
t+= "<span class='notice'>Plasma : [environment.toxins] \n</span>"
t+= "<span class='notice'>Carbon Dioxide: [environment.carbon_dioxide] \n</span>"
for(var/datum/gas/trace_gas in environment.trace_gases)
to_chat(usr, "<span class='notice'>[trace_gas.type]: [trace_gas.moles] \n</span>")
t+= "<span class='notice'>N2O: [environment.sleeping_agent] \n</span>"
t+= "<span class='notice'>Agent B: [environment.agent_b] \n</span>"
usr.show_message(t, 1)
@@ -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
@@ -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)
+9 -10
View File
@@ -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)