diff --git a/auxmos.dll b/auxmos.dll index 7253c70163..e7762beac2 100644 Binary files a/auxmos.dll and b/auxmos.dll differ diff --git a/auxmos.pdb b/auxmos.pdb index a737c73d34..dd142acdf4 100644 Binary files a/auxmos.pdb and b/auxmos.pdb differ diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm index 01153b9f38..7031a50605 100644 --- a/code/__DEFINES/atmospherics.dm +++ b/code/__DEFINES/atmospherics.dm @@ -257,6 +257,24 @@ #define PIPING_DEFAULT_LAYER_ONLY (1<<2) //can only exist at PIPING_LAYER_DEFAULT #define PIPING_CARDINAL_AUTONORMALIZE (1<<3) //north/south east/west doesn't matter, auto normalize on build. +// Gas defines because i hate typepaths +#define GAS_O2 "o2" +#define GAS_N2 "n2" +#define GAS_CO2 "co2" +#define GAS_PLASMA "plasma" +#define GAS_H2O "water_vapor" +#define GAS_HYPERNOB "nob" +#define GAS_NITROUS "n2o" +#define GAS_NITRYL "no2" +#define GAS_TRITIUM "tritium" +#define GAS_BZ "bz" +#define GAS_STIMULUM "stim" +#define GAS_PLUOXIUM "pluox" +#define GAS_MIASMA "miasma" +#define GAS_METHANE "methane" +#define GAS_METHYL_BROMIDE "methyl_bromide" + +#define GAS_FLAG_DANGEROUS (1<<0) //HELPERS #define PIPING_LAYER_SHIFT(T, PipingLayer) \ if(T.dir & (NORTH|SOUTH)) { \ diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index f563826eb9..6b4dc1e736 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -404,8 +404,8 @@ if(M.loc) environment = M.loc.return_air() if(environment) - plasmamount = environment.get_moles(/datum/gas/plasma) - if(plasmamount && plasmamount > GLOB.meta_gas_visibility[/datum/gas/plasma]) //if there's enough plasma in the air to see + plasmamount = environment.get_moles(GAS_PLASMA) + if(plasmamount && plasmamount > GLOB.meta_gas_visibility[GAS_PLASMA]) //if there's enough plasma in the air to see . += power * 0.5 if(M.reagents.has_reagent(/datum/reagent/toxin/plasma)) . += power * 0.75 diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm index c1aed96d61..720813c1a7 100644 --- a/code/datums/helper_datums/teleport.dm +++ b/code/datums/helper_datums/teleport.dm @@ -142,12 +142,12 @@ // Can most things breathe? if(trace_gases) continue - var/oxy_moles = A.get_moles(/datum/gas/oxygen) + var/oxy_moles = A.get_moles(GAS_O2) if(oxy_moles < 16 || oxy_moles > 50) continue - if(A.get_moles(/datum/gas/plasma)) + if(A.get_moles(GAS_PLASMA)) continue - if(A.get_moles(/datum/gas/carbon_dioxide) >= 10) + if(A.get_moles(GAS_CO2) >= 10) continue // Aim for goldilocks temperatures and pressure diff --git a/code/datums/mutations/actions.dm b/code/datums/mutations/actions.dm index fbee213585..8f7d67abb8 100644 --- a/code/datums/mutations/actions.dm +++ b/code/datums/mutations/actions.dm @@ -227,7 +227,7 @@ //can we sniff? is there miasma in the air? var/datum/gas_mixture/air = user.loc.return_air() - if(air.get_moles(/datum/gas/miasma)) + if(air.get_moles(GAS_MIASMA)) user.adjust_disgust(sensitivity * 45) to_chat(user, "With your overly sensitive nose, you get a whiff of stench and feel sick! Try moving to a cleaner area!") return diff --git a/code/game/gamemodes/objective_items.dm b/code/game/gamemodes/objective_items.dm index 7b7fdbeaf9..78644281b8 100644 --- a/code/game/gamemodes/objective_items.dm +++ b/code/game/gamemodes/objective_items.dm @@ -130,7 +130,7 @@ /datum/objective_item/steal/plasma/check_special_completion(obj/item/tank/T) var/target_amount = text2num(name) var/found_amount = 0 - found_amount += T.air_contents.get_moles(/datum/gas/plasma) + found_amount += T.air_contents.get_moles(GAS_PLASMA) return found_amount>=target_amount diff --git a/code/game/machinery/shuttle/shuttle_heater.dm b/code/game/machinery/shuttle/shuttle_heater.dm index 56854d2d71..8f7b772072 100644 --- a/code/game/machinery/shuttle/shuttle_heater.dm +++ b/code/game/machinery/shuttle/shuttle_heater.dm @@ -28,7 +28,7 @@ pipe_flags = PIPING_ONE_PER_TURF | PIPING_DEFAULT_LAYER_ONLY - var/gas_type = /datum/gas/plasma + var/gas_type = GAS_PLASMA var/efficiency_multiplier = 1 var/gas_capacity = 0 diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm index 4dbb57479f..e1861232f4 100644 --- a/code/game/mecha/equipment/tools/other_tools.dm +++ b/code/game/mecha/equipment/tools/other_tools.dm @@ -422,12 +422,12 @@ return var/datum/gas_mixture/GM = new if(prob(10)) - GM.adjust_moles(/datum/gas/plasma,100) + GM.adjust_moles(GAS_PLASMA,100) GM.set_temperature(1500+T0C) //should be enough to start a fire T.visible_message("[src] suddenly disgorges a cloud of heated plasma.") qdel(src) else - GM.adjust_moles(/datum/gas/plasma,5) + GM.adjust_moles(GAS_PLASMA,5) GM.set_temperature(istype(T) ? T.air.return_temperature() : T20C) T.visible_message("[src] suddenly disgorges a cloud of plasma.") T.assume_air(GM) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 33a89fe7ce..f8b462961b 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -253,8 +253,8 @@ /obj/mecha/proc/add_cabin() cabin_air = new(200) cabin_air.set_temperature(T20C) - cabin_air.set_moles(/datum/gas/oxygen,O2STANDARD*cabin_air.return_volume()/(R_IDEAL_GAS_EQUATION*cabin_air.return_temperature())) - cabin_air.set_moles(/datum/gas/nitrogen,N2STANDARD*cabin_air.return_volume()/(R_IDEAL_GAS_EQUATION*cabin_air.return_temperature())) + cabin_air.set_moles(GAS_O2,O2STANDARD*cabin_air.return_volume()/(R_IDEAL_GAS_EQUATION*cabin_air.return_temperature())) + cabin_air.set_moles(GAS_N2,N2STANDARD*cabin_air.return_volume()/(R_IDEAL_GAS_EQUATION*cabin_air.return_temperature())) return cabin_air /obj/mecha/proc/add_radio() diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm index bb8cad4fbc..53fbd55b70 100644 --- a/code/game/objects/effects/effect_system/effects_foam.dm +++ b/code/game/objects/effects/effect_system/effects_foam.dm @@ -40,8 +40,8 @@ if(hotspot && istype(T) && T.air) qdel(hotspot) var/datum/gas_mixture/G = T.air - var/plas_amt = min(30,G.get_moles(/datum/gas/plasma)) //Absorb some plasma - G.adjust_moles(/datum/gas/plasma,-plas_amt) + var/plas_amt = min(30,G.get_moles(GAS_PLASMA)) //Absorb some plasma + G.adjust_moles(GAS_PLASMA,-plas_amt) absorbed_plasma += plas_amt if(G.return_temperature() > T20C) G.set_temperature(max(G.return_temperature()/2,T20C)) @@ -322,7 +322,7 @@ for(var/obj/effect/hotspot/H in O) qdel(H) for(var/I in G.get_gases()) - if(I == /datum/gas/oxygen || I == /datum/gas/nitrogen) + if(I == GAS_O2 || I == GAS_N2) continue G.set_moles(I, 0) O.air_update_turf() diff --git a/code/game/objects/effects/effect_system/effects_smoke.dm b/code/game/objects/effects/effect_system/effects_smoke.dm index 9a11f0e1d7..3e80ade0ce 100644 --- a/code/game/objects/effects/effect_system/effects_smoke.dm +++ b/code/game/objects/effects/effect_system/effects_smoke.dm @@ -170,9 +170,9 @@ T.air_update_turf() for(var/obj/effect/hotspot/H in T) qdel(H) - if(G.get_moles(/datum/gas/plasma)) - G.adjust_moles(/datum/gas/nitrogen, G.get_moles(/datum/gas/plasma)) - G.set_moles(/datum/gas/plasma, 0) + if(G.get_moles(GAS_PLASMA)) + G.adjust_moles(GAS_N2, G.get_moles(GAS_PLASMA)) + G.set_moles(GAS_PLASMA, 0) if (weldvents) for(var/obj/machinery/atmospherics/components/unary/U in T) if(!isnull(U.welded) && !U.welded) //must be an unwelded vent pump or vent scrubber. diff --git a/code/game/objects/effects/spawners/bombspawner.dm b/code/game/objects/effects/spawners/bombspawner.dm index b5aaff5746..875859e527 100644 --- a/code/game/objects/effects/spawners/bombspawner.dm +++ b/code/game/objects/effects/spawners/bombspawner.dm @@ -1,6 +1,6 @@ #define CELSIUS_TO_KELVIN(T_K) ((T_K) + T0C) -#define OPTIMAL_TEMP_K_PLA_BURN_SCALE(PRESSURE_P,PRESSURE_O,TEMP_O) (((PRESSURE_P) * GLOB.meta_gas_specific_heats[/datum/gas/plasma]) / (((PRESSURE_P) * GLOB.meta_gas_specific_heats[/datum/gas/plasma] + (PRESSURE_O) * GLOB.meta_gas_specific_heats[/datum/gas/oxygen]) / PLASMA_UPPER_TEMPERATURE - (PRESSURE_O) * GLOB.meta_gas_specific_heats[/datum/gas/oxygen] / CELSIUS_TO_KELVIN(TEMP_O))) +#define OPTIMAL_TEMP_K_PLA_BURN_SCALE(PRESSURE_P,PRESSURE_O,TEMP_O) (((PRESSURE_P) * GLOB.meta_gas_specific_heats[GAS_PLASMA]) / (((PRESSURE_P) * GLOB.meta_gas_specific_heats[GAS_PLASMA] + (PRESSURE_O) * GLOB.meta_gas_specific_heats[GAS_O2]) / PLASMA_UPPER_TEMPERATURE - (PRESSURE_O) * GLOB.meta_gas_specific_heats[GAS_O2] / CELSIUS_TO_KELVIN(TEMP_O))) #define OPTIMAL_TEMP_K_PLA_BURN_RATIO(PRESSURE_P,PRESSURE_O,TEMP_O) (CELSIUS_TO_KELVIN(TEMP_O) * PLASMA_OXYGEN_FULLBURN * (PRESSURE_P) / (PRESSURE_O)) /obj/effect/spawner/newbomb @@ -19,10 +19,10 @@ var/obj/item/tank/internals/plasma/PT = new(V) var/obj/item/tank/internals/oxygen/OT = new(V) - PT.air_contents.set_moles(/datum/gas/plasma, pressure_p*PT.volume/(R_IDEAL_GAS_EQUATION*CELSIUS_TO_KELVIN(temp_p))) + PT.air_contents.set_moles(GAS_PLASMA, pressure_p*PT.volume/(R_IDEAL_GAS_EQUATION*CELSIUS_TO_KELVIN(temp_p))) PT.air_contents.set_temperature(CELSIUS_TO_KELVIN(temp_p)) - OT.air_contents.set_moles(/datum/gas/oxygen, pressure_o*OT.volume/(R_IDEAL_GAS_EQUATION*CELSIUS_TO_KELVIN(temp_o))) + OT.air_contents.set_moles(GAS_O2, pressure_o*OT.volume/(R_IDEAL_GAS_EQUATION*CELSIUS_TO_KELVIN(temp_o))) OT.air_contents.set_temperature(CELSIUS_TO_KELVIN(temp_o)) V.tank_one = PT diff --git a/code/game/objects/items/chrono_eraser.dm b/code/game/objects/items/chrono_eraser.dm index 7f2a23fb7c..c104d5c62a 100644 --- a/code/game/objects/items/chrono_eraser.dm +++ b/code/game/objects/items/chrono_eraser.dm @@ -252,8 +252,8 @@ /obj/effect/chrono_field/return_air() //we always have nominal air and temperature var/datum/gas_mixture/GM = new - GM.set_moles(/datum/gas/oxygen, MOLES_O2STANDARD) - GM.set_moles(/datum/gas/nitrogen, MOLES_N2STANDARD) + GM.set_moles(GAS_O2, MOLES_O2STANDARD) + GM.set_moles(GAS_N2, MOLES_N2STANDARD) GM.set_temperature(T20C) return GM diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 8b5e1edd91..ebf6af6ea3 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -739,30 +739,30 @@ GENETICS SCANNER to_chat(user, "Pressure: [round(pressure, 0.01)] kPa") if(total_moles) - var/o2_concentration = environment.get_moles(/datum/gas/oxygen)/total_moles - var/n2_concentration = environment.get_moles(/datum/gas/nitrogen)/total_moles - var/co2_concentration = environment.get_moles(/datum/gas/carbon_dioxide)/total_moles - var/plasma_concentration = environment.get_moles(/datum/gas/plasma)/total_moles + var/o2_concentration = environment.get_moles(GAS_O2)/total_moles + var/n2_concentration = environment.get_moles(GAS_N2)/total_moles + var/co2_concentration = environment.get_moles(GAS_CO2)/total_moles + var/plasma_concentration = environment.get_moles(GAS_PLASMA)/total_moles if(abs(n2_concentration - N2STANDARD) < 20) - to_chat(user, "Nitrogen: [round(n2_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/nitrogen), 0.01)] mol)") + to_chat(user, "Nitrogen: [round(n2_concentration*100, 0.01)] % ([round(environment.get_moles(GAS_N2), 0.01)] mol)") else - to_chat(user, "Nitrogen: [round(n2_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/nitrogen), 0.01)] mol)") + to_chat(user, "Nitrogen: [round(n2_concentration*100, 0.01)] % ([round(environment.get_moles(GAS_N2), 0.01)] mol)") if(abs(o2_concentration - O2STANDARD) < 2) - to_chat(user, "Oxygen: [round(o2_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/oxygen), 0.01)] mol)") + to_chat(user, "Oxygen: [round(o2_concentration*100, 0.01)] % ([round(environment.get_moles(GAS_O2), 0.01)] mol)") else - to_chat(user, "Oxygen: [round(o2_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/oxygen), 0.01)] mol)") + to_chat(user, "Oxygen: [round(o2_concentration*100, 0.01)] % ([round(environment.get_moles(GAS_O2), 0.01)] mol)") if(co2_concentration > 0.01) - to_chat(user, "CO2: [round(co2_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/carbon_dioxide), 0.01)] mol)") + to_chat(user, "CO2: [round(co2_concentration*100, 0.01)] % ([round(environment.get_moles(GAS_CO2), 0.01)] mol)") else - to_chat(user, "CO2: [round(co2_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/carbon_dioxide), 0.01)] mol)") + to_chat(user, "CO2: [round(co2_concentration*100, 0.01)] % ([round(environment.get_moles(GAS_CO2), 0.01)] mol)") if(plasma_concentration > 0.005) - to_chat(user, "Plasma: [round(plasma_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/plasma), 0.01)] mol)") + to_chat(user, "Plasma: [round(plasma_concentration*100, 0.01)] % ([round(environment.get_moles(GAS_PLASMA), 0.01)] mol)") else - to_chat(user, "Plasma: [round(plasma_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/plasma), 0.01)] mol)") + to_chat(user, "Plasma: [round(plasma_concentration*100, 0.01)] % ([round(environment.get_moles(GAS_PLASMA), 0.01)] mol)") for(var/id in environment.get_gases()) if(id in GLOB.hardcoded_gases) diff --git a/code/game/objects/items/flamethrower.dm b/code/game/objects/items/flamethrower.dm index 9c107fe81f..3cfef6aa1f 100644 --- a/code/game/objects/items/flamethrower.dm +++ b/code/game/objects/items/flamethrower.dm @@ -210,7 +210,7 @@ //TODO: DEFERRED Consider checking to make sure tank pressure is high enough before doing this... //Transfer 5% of current tank air contents to turf var/datum/gas_mixture/air_transfer = ptank.air_contents.remove_ratio(release_amount) - air_transfer.set_moles(/datum/gas/plasma, air_transfer.get_moles(/datum/gas/plasma) * 5) + air_transfer.set_moles(GAS_PLASMA, air_transfer.get_moles(GAS_PLASMA) * 5) target.assume_air(air_transfer) //Burn it based on transfered gas target.hotspot_expose((ptank.air_contents.return_temperature()*2) + 380,500) diff --git a/code/game/objects/items/pet_carrier.dm b/code/game/objects/items/pet_carrier.dm index aad923346b..78fe1a896e 100644 --- a/code/game/objects/items/pet_carrier.dm +++ b/code/game/objects/items/pet_carrier.dm @@ -307,7 +307,7 @@ if(isanimal(occupant)) var/mob/living/simple_animal/animal = occupant - occupant_gas_supply[/datum/gas/oxygen] = 0.0064 //make sure it has some gas in so it isn't depressurized + occupant_gas_supply[GAS_O2] = 0.0064 //make sure it has some gas in so it isn't depressurized occupant_gas_supply.set_temperature(animal.minbodytemp) //simple animals only care about temperature/pressure when their turf isnt a location if(ishuman(occupant)) //humans require resistance to cold/heat and living in no air while inside, and lose this when outside diff --git a/code/game/objects/items/tanks/jetpack.dm b/code/game/objects/items/tanks/jetpack.dm index 873ac15d56..75ad909777 100644 --- a/code/game/objects/items/tanks/jetpack.dm +++ b/code/game/objects/items/tanks/jetpack.dm @@ -8,7 +8,7 @@ w_class = WEIGHT_CLASS_BULKY distribute_pressure = ONE_ATMOSPHERE * O2STANDARD actions_types = list(/datum/action/item_action/set_internals, /datum/action/item_action/toggle_jetpack, /datum/action/item_action/jetpack_stabilization) - var/gas_type = /datum/gas/oxygen + var/gas_type = GAS_O2 var/on = FALSE var/stabilizers = FALSE var/full_speed = TRUE // If the jetpack will have a speedboost in space/nograv or not @@ -159,7 +159,7 @@ icon_state = "jetpack-black" item_state = "jetpack-black" distribute_pressure = 0 - gas_type = /datum/gas/carbon_dioxide + gas_type = GAS_CO2 /obj/item/tank/jetpack/carbondioxide/eva name = "surplus jetpack (carbon dioxide)" diff --git a/code/game/objects/items/tanks/tank_types.dm b/code/game/objects/items/tanks/tank_types.dm index 84f2098b06..c49f820854 100644 --- a/code/game/objects/items/tanks/tank_types.dm +++ b/code/game/objects/items/tanks/tank_types.dm @@ -20,7 +20,7 @@ /obj/item/tank/internals/oxygen/populate_gas() - air_contents.set_moles(/datum/gas/oxygen, (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) + air_contents.set_moles(GAS_O2, (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) return @@ -48,8 +48,8 @@ force = 10 /obj/item/tank/internals/anesthetic/populate_gas() - air_contents.set_moles(/datum/gas/oxygen, (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD) - air_contents.set_moles(/datum/gas/nitrous_oxide, (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD) + air_contents.set_moles(GAS_O2, (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD) + air_contents.set_moles(GAS_NITROUS, (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD) return /* @@ -63,8 +63,8 @@ dog_fashion = /datum/dog_fashion/back /obj/item/tank/internals/air/populate_gas() - air_contents.set_moles(/datum/gas/oxygen, (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD) - air_contents.set_moles(/datum/gas/nitrogen, (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD) + air_contents.set_moles(GAS_O2, (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD) + air_contents.set_moles(GAS_N2, (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD) return @@ -81,7 +81,7 @@ /obj/item/tank/internals/plasma/populate_gas() - air_contents.set_moles(/datum/gas/plasma, (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) + air_contents.set_moles(GAS_PLASMA, (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) return /obj/item/tank/internals/plasma/attackby(obj/item/W, mob/user, params) @@ -98,14 +98,14 @@ return ..() /obj/item/tank/internals/plasma/full/populate_gas() - air_contents.set_moles(/datum/gas/plasma, (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) + air_contents.set_moles(GAS_PLASMA, (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) //Makes empty oxygen tanks spawn without gas /obj/item/tank/internals/plasma/empty/populate_gas() return /obj/item/tank/internals/plasma/full/populate_gas() - air_contents.set_moles(/datum/gas/plasma, (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) + air_contents.set_moles(GAS_PLASMA, (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) /* * Plasmaman Plasma Tank @@ -120,11 +120,11 @@ distribute_pressure = TANK_DEFAULT_RELEASE_PRESSURE /obj/item/tank/internals/plasmaman/populate_gas() - air_contents.set_moles(/datum/gas/plasma, (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) + air_contents.set_moles(GAS_PLASMA, (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) return /obj/item/tank/internals/plasmaman/full/populate_gas() - air_contents.set_moles(/datum/gas/plasma, (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) + air_contents.set_moles(GAS_PLASMA, (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) return @@ -137,7 +137,7 @@ w_class = WEIGHT_CLASS_SMALL //thanks i forgot this /obj/item/tank/internals/plasmaman/belt/full/populate_gas() - air_contents.set_moles(/datum/gas/plasma, (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) + air_contents.set_moles(GAS_PLASMA, (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) return //makes empty plasma tanks spawn without gas. @@ -160,7 +160,7 @@ /obj/item/tank/internals/emergency_oxygen/populate_gas() - air_contents.set_moles(/datum/gas/oxygen, (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) + air_contents.set_moles(GAS_O2, (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) return /obj/item/tank/internals/emergency_oxygen/empty/populate_gas() @@ -196,5 +196,5 @@ volume = 10 /obj/item/tank/internals/methyl_bromide/populate_gas() - air_contents.set_moles(/datum/gas/methyl_bromide, (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) + air_contents.set_moles(GAS_METHYL_BROMIDE, (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) return diff --git a/code/game/objects/structures/transit_tubes/transit_tube_pod.dm b/code/game/objects/structures/transit_tubes/transit_tube_pod.dm index 3ad014da8c..82e946a2f4 100644 --- a/code/game/objects/structures/transit_tubes/transit_tube_pod.dm +++ b/code/game/objects/structures/transit_tubes/transit_tube_pod.dm @@ -10,8 +10,8 @@ /obj/structure/transit_tube_pod/Initialize() . = ..() - air_contents.set_moles(/datum/gas/oxygen, MOLES_O2STANDARD) - air_contents.set_moles(/datum/gas/nitrogen, MOLES_N2STANDARD) + air_contents.set_moles(GAS_O2, MOLES_O2STANDARD) + air_contents.set_moles(GAS_N2, MOLES_N2STANDARD) air_contents.set_temperature(T20C) diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm index 7bd8754fe4..9e3cbad19b 100644 --- a/code/game/turfs/open.dm +++ b/code/game/turfs/open.dm @@ -320,8 +320,8 @@ /turf/open/rad_act(pulse_strength) . = ..() - if (air.get_moles(/datum/gas/carbon_dioxide) && air.get_moles(/datum/gas/oxygen)) - pulse_strength = min(pulse_strength,air.get_moles(/datum/gas/carbon_dioxide)*1000,air.get_moles(/datum/gas/oxygen)*2000) //Ensures matter is conserved properly - air.set_moles(/datum/gas/carbon_dioxide, max(air.get_moles(/datum/gas/carbon_dioxide)-(pulse_strength/1000),0)) - air.set_moles(/datum/gas/oxygen, max(air.get_moles(/datum/gas/oxygen)-(pulse_strength/2000),0)) - air.adjust_moles(/datum/gas/pluoxium, pulse_strength/4000) + if (air.get_moles(GAS_CO2) && air.get_moles(GAS_O2)) + pulse_strength = min(pulse_strength,air.get_moles(GAS_CO2)*1000,air.get_moles(GAS_O2)*2000) //Ensures matter is conserved properly + air.set_moles(GAS_CO2, max(air.get_moles(GAS_CO2)-(pulse_strength/1000),0)) + air.set_moles(GAS_O2, max(air.get_moles(GAS_O2)-(pulse_strength/2000),0)) + air.adjust_moles(GAS_PLUOXIUM, pulse_strength/4000) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index a123d73e62..138913b3a4 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -581,7 +581,7 @@ if(Rad.anchored) if(!Rad.loaded_tank) var/obj/item/tank/internals/plasma/Plasma = new/obj/item/tank/internals/plasma(Rad) - Plasma.air_contents.set_moles(/datum/gas/plasma,70) + Plasma.air_contents.set_moles(GAS_PLASMA,70) Rad.drainratio = 0 Rad.loaded_tank = Plasma Plasma.forceMove(Rad) diff --git a/code/modules/assembly/bomb.dm b/code/modules/assembly/bomb.dm index f7ae61dc96..8c025e2ab4 100644 --- a/code/modules/assembly/bomb.dm +++ b/code/modules/assembly/bomb.dm @@ -146,7 +146,7 @@ return /obj/item/tank/proc/ignite() //This happens when a bomb is told to explode - var/fuel_moles = air_contents.get_moles(/datum/gas/plasma) + air_contents.get_moles(/datum/gas/oxygen)/6 + var/fuel_moles = air_contents.get_moles(GAS_PLASMA) + air_contents.get_moles(GAS_O2)/6 var/datum/gas_mixture/bomb_mixture = air_contents.copy() var/strength = 1 diff --git a/code/modules/atmospherics/environmental/LINDA_fire.dm b/code/modules/atmospherics/environmental/LINDA_fire.dm index 4bd22b2b24..2b34453973 100644 --- a/code/modules/atmospherics/environmental/LINDA_fire.dm +++ b/code/modules/atmospherics/environmental/LINDA_fire.dm @@ -13,11 +13,11 @@ if(!air) return - var/oxy = air.get_moles(/datum/gas/oxygen) + var/oxy = air.get_moles(GAS_O2) if (oxy < 0.5) return - var/tox = air.get_moles(/datum/gas/plasma) - var/trit = air.get_moles(/datum/gas/tritium) + var/tox = air.get_moles(GAS_PLASMA) + var/trit = air.get_moles(GAS_TRITIUM) if(active_hotspot) if(soh) if(tox > 0.5 || trit > 0.5) @@ -154,13 +154,13 @@ if((temperature < FIRE_MINIMUM_TEMPERATURE_TO_EXIST) || (volume <= 1)) qdel(src) return - if(!location.air || (INSUFFICIENT(/datum/gas/plasma) && INSUFFICIENT(/datum/gas/tritium)) || INSUFFICIENT(/datum/gas/oxygen)) + if(!location.air || (INSUFFICIENT(GAS_PLASMA) && INSUFFICIENT(GAS_TRITIUM)) || INSUFFICIENT(GAS_O2)) qdel(src) return //Not enough to burn // god damn it previous coder you made the INSUFFICIENT macro for a fucking reason why didn't you use it here smh - if((INSUFFICIENT(/datum/gas/plasma) && INSUFFICIENT(/datum/gas/tritium)) || INSUFFICIENT(/datum/gas/oxygen)) + if((INSUFFICIENT(GAS_PLASMA) && INSUFFICIENT(GAS_TRITIUM)) || INSUFFICIENT(GAS_O2)) qdel(src) return diff --git a/code/modules/atmospherics/environmental/LINDA_turf_tile.dm b/code/modules/atmospherics/environmental/LINDA_turf_tile.dm index 6b2d0c3c65..37f3da575f 100644 --- a/code/modules/atmospherics/environmental/LINDA_turf_tile.dm +++ b/code/modules/atmospherics/environmental/LINDA_turf_tile.dm @@ -181,7 +181,7 @@ for (var/gastype in subtypesof(/datum/gas)) var/datum/gas/gasvar = gastype if (!initial(gasvar.gas_overlay)) - .[gastype] = TRUE + .[initial(gasvar.id)] = TRUE /////////////////////////////SIMULATION/////////////////////////////////// diff --git a/code/modules/atmospherics/gasmixtures/gas_mixture.dm b/code/modules/atmospherics/gasmixtures/gas_mixture.dm index 9e3713ebf2..fed5e6ca31 100644 --- a/code/modules/atmospherics/gasmixtures/gas_mixture.dm +++ b/code/modules/atmospherics/gasmixtures/gas_mixture.dm @@ -12,7 +12,7 @@ GLOBAL_LIST_INIT(meta_gas_specific_heats, meta_gas_heat_list()) GLOBAL_LIST_INIT(meta_gas_names, meta_gas_name_list()) GLOBAL_LIST_INIT(meta_gas_visibility, meta_gas_visibility_list()) GLOBAL_LIST_INIT(meta_gas_overlays, meta_gas_overlay_list()) -GLOBAL_LIST_INIT(meta_gas_dangers, meta_gas_danger_list()) +GLOBAL_LIST_INIT(meta_gas_flags, meta_gas_flags_list()) GLOBAL_LIST_INIT(meta_gas_ids, meta_gas_id_list()) GLOBAL_LIST_INIT(meta_gas_fusions, meta_gas_fusion_list()) /datum/gas_mixture @@ -93,9 +93,10 @@ GLOBAL_LIST_INIT(auxtools_atmos_initialized,FALSE) if(!isnum(amount)) return amount = max(0, amount) + var/datum/gas/gas = gastype log_admin("[key_name(usr)] modified gas mixture [REF(src)]: Set gas type [gastype] to [amount] moles.") message_admins("[key_name(usr)] modified gas mixture [REF(src)]: Set gas type [gastype] to [amount] moles.") - set_moles(gastype, amount) + set_moles(initial(gas.id), amount) if(href_list[VV_HK_SET_TEMPERATURE]) var/temp = input(usr, "Set the temperature of this mixture to?", "Set Temperature", return_temperature()) as num|null if(!isnum(temp)) @@ -270,10 +271,7 @@ GLOBAL_LIST_INIT(auxtools_atmos_initialized,FALSE) set_temperature(temp) clear() for(var/id in gas) - var/path = id - if(!ispath(path)) - path = gas_id2path(path) //a lot of these strings can't have embedded expressions (especially for mappers), so support for IDs needs to stick around - set_moles(path, text2num(gas[id])) + set_moles(id, text2num(gas[id])) archive() return 1 /* diff --git a/code/modules/atmospherics/gasmixtures/gas_types.dm b/code/modules/atmospherics/gasmixtures/gas_types.dm index fa5641254e..bf10049bfd 100644 --- a/code/modules/atmospherics/gasmixtures/gas_types.dm +++ b/code/modules/atmospherics/gasmixtures/gas_types.dm @@ -1,5 +1,5 @@ -GLOBAL_LIST_INIT(hardcoded_gases, list(/datum/gas/oxygen, /datum/gas/nitrogen, /datum/gas/carbon_dioxide, /datum/gas/plasma)) //the main four gases, which were at one time hardcoded -GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/gas/nitrogen, /datum/gas/carbon_dioxide, /datum/gas/pluoxium, /datum/gas/stimulum, /datum/gas/nitryl))) //unable to react amongst themselves +GLOBAL_LIST_INIT(hardcoded_gases, list(GAS_O2, GAS_N2, GAS_CO2, GAS_PLASMA)) //the main four gases, which were at one time hardcoded +GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(GAS_O2, GAS_N2, GAS_CO2, GAS_PLUOXIUM, GAS_STIMULUM, GAS_NITRYL))) //unable to react amongst themselves /proc/gas_id2path(id) var/list/meta_gas = GLOB.meta_gas_ids @@ -10,65 +10,71 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g return path return "" -//Unomos - oh god oh fuck oh shit oh lord have mercy this is messy as fuck oh god -//my addiction to seeing better performance numbers isn't healthy, kids -//you see this shit, children? -//i am not a good idol. don't take after me. -//this is literally worse than my alcohol addiction +// Listmos 2.0 +// aka "auxgm", a send-up of XGM +// it's basically the same architecture as XGM but +// structured differently to make it more convenient for auxmos + +// most important compared to TG is that it does away with hardcoded typepaths, +// which lead to problems on the auxmos end anyway. + +// second most important is that i hate how breath is handled +// and most basically every other thing in the codebase +// when it comes to hardcoded gas typepaths, so, yeah, go away + +GLOBAL_LIST_INIT(gas_data, meta_gas_info_list()) + +/proc/meta_gas_info_list() + . = list() + for(var/gas_path in subtypesof(/datum/gas)) + var/datum/gas/gas = new gas_path // ! + .[gas.id] = gas + /proc/meta_gas_heat_list() . = subtypesof(/datum/gas) for(var/gas_path in .) var/datum/gas/gas = gas_path - .[gas_path] = initial(gas.specific_heat) + .[initial(gas.id)] = initial(gas.specific_heat) /proc/meta_gas_name_list() . = subtypesof(/datum/gas) for(var/gas_path in .) var/datum/gas/gas = gas_path - .[gas_path] = initial(gas.name) + .[initial(gas.id)] = initial(gas.name) /proc/meta_gas_visibility_list() . = subtypesof(/datum/gas) for(var/gas_path in .) var/datum/gas/gas = gas_path - .[gas_path] = initial(gas.moles_visible) + .[initial(gas.id)] = initial(gas.moles_visible) /proc/meta_gas_overlay_list() . = subtypesof(/datum/gas) for(var/gas_path in .) var/datum/gas/gas = gas_path - .[gas_path] = 0 //gotta make sure if(GLOB.meta_gas_overlays[gaspath]) doesn't break + .[initial(gas.id)] = 0 //gotta make sure if(GLOB.meta_gas_overlays[gaspath]) doesn't break if(initial(gas.moles_visible) != null) - .[gas_path] = new /list(FACTOR_GAS_VISIBLE_MAX) + .[initial(gas.id)] = new /list(FACTOR_GAS_VISIBLE_MAX) for(var/i in 1 to FACTOR_GAS_VISIBLE_MAX) - .[gas_path][i] = new /obj/effect/overlay/gas(initial(gas.gas_overlay), i * 255 / FACTOR_GAS_VISIBLE_MAX) + .[initial(gas.id)][i] = new /obj/effect/overlay/gas(initial(gas.gas_overlay), i * 255 / FACTOR_GAS_VISIBLE_MAX) -/proc/meta_gas_danger_list() +/proc/meta_gas_flags_list() . = subtypesof(/datum/gas) for(var/gas_path in .) var/datum/gas/gas = gas_path - .[gas_path] = initial(gas.dangerous) + .[initial(gas.id)] = initial(gas.flags) /proc/meta_gas_id_list() . = subtypesof(/datum/gas) for(var/gas_path in .) var/datum/gas/gas = gas_path - .[gas_path] = initial(gas.id) + .[initial(gas.id)] = initial(gas.id) /proc/meta_gas_fusion_list() . = subtypesof(/datum/gas) for(var/gas_path in .) var/datum/gas/gas = gas_path - .[gas_path] = initial(gas.fusion_power) - -/*||||||||||||||/----------\||||||||||||||*\ -||||||||||||||||[GAS DATUMS]|||||||||||||||| -||||||||||||||||\__________/|||||||||||||||| -||||These should never be instantiated. |||| -||||They exist only to make it easier |||| -||||to add a new gas. They are accessed |||| -||||only by meta_gas_list(). |||| -\*||||||||||||||||||||||||||||||||||||||||*/ + .[initial(gas.id)] = initial(gas.fusion_power) /datum/gas var/id = "" @@ -76,40 +82,40 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g var/name = "" var/gas_overlay = "" //icon_state in icons/effects/atmospherics.dmi var/moles_visible = null - var/dangerous = FALSE //currently used by canisters + var/flags = NONE //currently used by canisters var/fusion_power = 0 //How much the gas accelerates a fusion reaction var/rarity = 0 // relative rarity compared to other gases, used when setting up the reactions list. /datum/gas/oxygen - id = "o2" + id = GAS_O2 specific_heat = 20 name = "Oxygen" rarity = 900 /datum/gas/nitrogen - id = "n2" + id = GAS_N2 specific_heat = 20 name = "Nitrogen" rarity = 1000 /datum/gas/carbon_dioxide //what the fuck is this? - id = "co2" + id = GAS_CO2 specific_heat = 30 name = "Carbon Dioxide" fusion_power = 3 rarity = 700 /datum/gas/plasma - id = "plasma" + id = GAS_PLASMA specific_heat = 200 name = "Plasma" gas_overlay = "plasma" moles_visible = MOLES_GAS_VISIBLE - dangerous = TRUE + flags = GAS_FLAG_DANGEROUS rarity = 800 /datum/gas/water_vapor - id = "water_vapor" + id = GAS_H2O specific_heat = 40 name = "Water Vapor" gas_overlay = "water_vapor" @@ -118,67 +124,66 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g rarity = 500 /datum/gas/hypernoblium - id = "nob" + id = GAS_HYPERNOB specific_heat = 2000 name = "Hyper-noblium" gas_overlay = "freon" moles_visible = MOLES_GAS_VISIBLE - dangerous = TRUE rarity = 50 /datum/gas/nitrous_oxide - id = "n2o" + id = GAS_NITROUS specific_heat = 40 name = "Nitrous Oxide" gas_overlay = "nitrous_oxide" moles_visible = MOLES_GAS_VISIBLE * 2 - dangerous = TRUE + flags = GAS_FLAG_DANGEROUS rarity = 600 /datum/gas/nitryl - id = "no2" + id = GAS_NITRYL specific_heat = 20 name = "Nitryl" gas_overlay = "nitryl" moles_visible = MOLES_GAS_VISIBLE - dangerous = TRUE + flags = GAS_FLAG_DANGEROUS fusion_power = 15 rarity = 100 /datum/gas/tritium - id = "tritium" + id = GAS_TRITIUM specific_heat = 10 name = "Tritium" gas_overlay = "tritium" moles_visible = MOLES_GAS_VISIBLE - dangerous = TRUE + flags = GAS_FLAG_DANGEROUS fusion_power = 1 rarity = 300 /datum/gas/bz - id = "bz" + id = GAS_BZ specific_heat = 20 name = "BZ" - dangerous = TRUE + flags = GAS_FLAG_DANGEROUS fusion_power = 8 rarity = 400 /datum/gas/stimulum - id = "stim" + id = GAS_STIMULUM specific_heat = 5 name = "Stimulum" fusion_power = 7 rarity = 1 /datum/gas/pluoxium - id = "pluox" + id = GAS_PLUOXIUM specific_heat = 80 name = "Pluoxium" fusion_power = 10 rarity = 200 /datum/gas/miasma - id = "miasma" + id = GAS_MIASMA specific_heat = 20 fusion_power = 50 name = "Miasma" @@ -187,16 +192,16 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g rarity = 250 /datum/gas/methane - id = "methane" + id = GAS_METHANE specific_heat = 30 name = "Methane" rarity = 320 /datum/gas/methyl_bromide - id = "methyl_bromide" + id = GAS_METHYL_BROMIDE specific_heat = 42 name = "Methyl Bromide" - dangerous = TRUE + flags = GAS_FLAG_DANGEROUS rarity = 310 diff --git a/code/modules/atmospherics/gasmixtures/immutable_mixtures.dm b/code/modules/atmospherics/gasmixtures/immutable_mixtures.dm index eefad7c970..300f5c2b4f 100644 --- a/code/modules/atmospherics/gasmixtures/immutable_mixtures.dm +++ b/code/modules/atmospherics/gasmixtures/immutable_mixtures.dm @@ -27,4 +27,4 @@ /datum/gas_mixture/immutable/cloner/populate() ..() - set_moles(/datum/gas/nitrogen, MOLES_O2STANDARD + MOLES_N2STANDARD) + set_moles(GAS_N2, MOLES_O2STANDARD + MOLES_N2STANDARD) diff --git a/code/modules/atmospherics/gasmixtures/reactions.dm b/code/modules/atmospherics/gasmixtures/reactions.dm index ff46b0b307..454da822fe 100644 --- a/code/modules/atmospherics/gasmixtures/reactions.dm +++ b/code/modules/atmospherics/gasmixtures/reactions.dm @@ -49,7 +49,7 @@ id = "nobstop" /datum/gas_reaction/nobliumsupression/init_reqs() - min_requirements = list(/datum/gas/hypernoblium = REACTION_OPPRESSION_THRESHOLD) + min_requirements = list(GAS_HYPERNOB = REACTION_OPPRESSION_THRESHOLD) /datum/gas_reaction/nobliumsupression/react() return STOP_REACTIONS @@ -61,7 +61,7 @@ id = "vapor" /datum/gas_reaction/water_vapor/init_reqs() - min_requirements = list(/datum/gas/water_vapor = MOLES_GAS_VISIBLE) + min_requirements = list(GAS_H2O = MOLES_GAS_VISIBLE) /datum/gas_reaction/water_vapor/react(datum/gas_mixture/air, datum/holder) var/turf/open/location = isturf(holder) ? holder : null @@ -70,7 +70,7 @@ if(location && location.freon_gas_act()) . = REACTING else if(location && location.water_vapor_gas_act()) - air.adjust_moles(/datum/gas/water_vapor,-MOLES_GAS_VISIBLE) + air.adjust_moles(GAS_H2O,-MOLES_GAS_VISIBLE) . = REACTING // no test cause it's entirely based on location @@ -84,8 +84,8 @@ /datum/gas_reaction/tritfire/init_reqs() min_requirements = list( "TEMP" = FIRE_MINIMUM_TEMPERATURE_TO_EXIST, - /datum/gas/tritium = MINIMUM_MOLE_COUNT, - /datum/gas/oxygen = MINIMUM_MOLE_COUNT + GAS_TRITIUM = MINIMUM_MOLE_COUNT, + GAS_O2 = MINIMUM_MOLE_COUNT ) /proc/fire_expose(turf/open/location, datum/gas_mixture/air, temperature) @@ -109,20 +109,20 @@ var/turf/open/location = isturf(holder) ? holder : null var/burned_fuel = 0 - if(air.get_moles(/datum/gas/oxygen) < air.get_moles(/datum/gas/tritium)) - burned_fuel = air.get_moles(/datum/gas/oxygen)/TRITIUM_BURN_OXY_FACTOR - air.adjust_moles(/datum/gas/tritium, -burned_fuel) + if(air.get_moles(GAS_O2) < air.get_moles(GAS_TRITIUM)) + burned_fuel = air.get_moles(GAS_O2)/TRITIUM_BURN_OXY_FACTOR + air.adjust_moles(GAS_TRITIUM, -burned_fuel) else - burned_fuel = air.get_moles(/datum/gas/tritium)*TRITIUM_BURN_TRIT_FACTOR - air.adjust_moles(/datum/gas/tritium, -air.get_moles(/datum/gas/tritium)/TRITIUM_BURN_TRIT_FACTOR) - air.adjust_moles(/datum/gas/oxygen,-air.get_moles(/datum/gas/tritium)) + burned_fuel = air.get_moles(GAS_TRITIUM)*TRITIUM_BURN_TRIT_FACTOR + air.adjust_moles(GAS_TRITIUM, -air.get_moles(GAS_TRITIUM)/TRITIUM_BURN_TRIT_FACTOR) + air.adjust_moles(GAS_O2,-air.get_moles(GAS_TRITIUM)) if(burned_fuel) energy_released += (FIRE_HYDROGEN_ENERGY_RELEASED * burned_fuel) if(location && prob(10) && burned_fuel > TRITIUM_MINIMUM_RADIATION_ENERGY) //woah there let's not crash the server radiation_pulse(location, energy_released/TRITIUM_BURN_RADIOACTIVITY_FACTOR) - air.adjust_moles(/datum/gas/water_vapor, burned_fuel/TRITIUM_BURN_OXY_FACTOR) + air.adjust_moles(GAS_H2O, burned_fuel/TRITIUM_BURN_OXY_FACTOR) cached_results["fire"] += burned_fuel @@ -145,8 +145,8 @@ /datum/gas_reaction/tritfire/test() var/datum/gas_mixture/G = new - G.set_moles(/datum/gas/tritium,50) - G.set_moles(/datum/gas/oxygen,50) + G.set_moles(GAS_TRITIUM,50) + G.set_moles(GAS_O2,50) G.set_temperature(500) var/result = G.react() if(result != REACTING) @@ -164,8 +164,8 @@ /datum/gas_reaction/plasmafire/init_reqs() min_requirements = list( "TEMP" = FIRE_MINIMUM_TEMPERATURE_TO_EXIST, - /datum/gas/plasma = MINIMUM_MOLE_COUNT, - /datum/gas/oxygen = MINIMUM_MOLE_COUNT + GAS_PLASMA = MINIMUM_MOLE_COUNT, + GAS_O2 = MINIMUM_MOLE_COUNT ) /datum/gas_reaction/plasmafire/react(datum/gas_mixture/air, datum/holder) @@ -190,21 +190,21 @@ 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(air.get_moles(/datum/gas/oxygen) / air.get_moles(/datum/gas/plasma) > SUPER_SATURATION_THRESHOLD) //supersaturation. Form Tritium. + if(air.get_moles(GAS_O2) / air.get_moles(GAS_PLASMA) > SUPER_SATURATION_THRESHOLD) //supersaturation. Form Tritium. super_saturation = TRUE - if(air.get_moles(/datum/gas/oxygen) > air.get_moles(/datum/gas/plasma)*PLASMA_OXYGEN_FULLBURN) - plasma_burn_rate = (air.get_moles(/datum/gas/plasma)*temperature_scale)/PLASMA_BURN_RATE_DELTA + if(air.get_moles(GAS_O2) > air.get_moles(GAS_PLASMA)*PLASMA_OXYGEN_FULLBURN) + plasma_burn_rate = (air.get_moles(GAS_PLASMA)*temperature_scale)/PLASMA_BURN_RATE_DELTA else - plasma_burn_rate = (temperature_scale*(air.get_moles(/datum/gas/oxygen)/PLASMA_OXYGEN_FULLBURN))/PLASMA_BURN_RATE_DELTA + plasma_burn_rate = (temperature_scale*(air.get_moles(GAS_O2)/PLASMA_OXYGEN_FULLBURN))/PLASMA_BURN_RATE_DELTA if(plasma_burn_rate > MINIMUM_HEAT_CAPACITY) - plasma_burn_rate = min(plasma_burn_rate,air.get_moles(/datum/gas/plasma),air.get_moles(/datum/gas/oxygen)/oxygen_burn_rate) //Ensures matter is conserved properly - air.set_moles(/datum/gas/plasma, QUANTIZE(air.get_moles(/datum/gas/plasma) - plasma_burn_rate)) - air.set_moles(/datum/gas/oxygen, QUANTIZE(air.get_moles(/datum/gas/oxygen) - (plasma_burn_rate * oxygen_burn_rate))) + plasma_burn_rate = min(plasma_burn_rate,air.get_moles(GAS_PLASMA),air.get_moles(GAS_O2)/oxygen_burn_rate) //Ensures matter is conserved properly + air.set_moles(GAS_PLASMA, QUANTIZE(air.get_moles(GAS_PLASMA) - plasma_burn_rate)) + air.set_moles(GAS_O2, QUANTIZE(air.get_moles(GAS_O2) - (plasma_burn_rate * oxygen_burn_rate))) if (super_saturation) - air.adjust_moles(/datum/gas/tritium, plasma_burn_rate) + air.adjust_moles(GAS_TRITIUM, plasma_burn_rate) else - air.adjust_moles(/datum/gas/carbon_dioxide, plasma_burn_rate) + air.adjust_moles(GAS_CO2, plasma_burn_rate) energy_released += FIRE_PLASMA_ENERGY_RELEASED * (plasma_burn_rate) @@ -229,8 +229,8 @@ /datum/gas_reaction/plasmafire/test() var/datum/gas_mixture/G = new - G.set_moles(/datum/gas/plasma,50) - G.set_moles(/datum/gas/oxygen,50) + G.set_moles(GAS_PLASMA,50) + G.set_moles(GAS_O2,50) G.set_volume(1000) G.set_temperature(500) var/result = G.react() @@ -238,14 +238,14 @@ return list("success" = FALSE, "message" = "Reaction didn't go at all!") if(!G.reaction_results["fire"]) return list("success" = FALSE, "message" = "Plasma fires aren't setting fire results correctly!") - if(!G.get_moles(/datum/gas/carbon_dioxide)) + if(!G.get_moles(GAS_CO2)) return list("success" = FALSE, "message" = "Plasma fires aren't making CO2!") G.clear() - G.set_moles(/datum/gas/plasma,10) - G.set_moles(/datum/gas/oxygen,1000) + G.set_moles(GAS_PLASMA,10) + G.set_moles(GAS_O2,1000) G.set_temperature(500) result = G.react() - if(!G.get_moles(/datum/gas/tritium)) + if(!G.get_moles(GAS_TRITIUM)) return list("success" = FALSE, "message" = "Plasma fires aren't making trit!") return ..() @@ -276,9 +276,9 @@ /datum/gas_reaction/fusion/init_reqs() min_requirements = list( "TEMP" = FUSION_TEMPERATURE_THRESHOLD, - /datum/gas/tritium = FUSION_TRITIUM_MOLES_USED, - /datum/gas/plasma = FUSION_MOLE_THRESHOLD, - /datum/gas/carbon_dioxide = FUSION_MOLE_THRESHOLD) + GAS_TRITIUM = FUSION_TRITIUM_MOLES_USED, + GAS_PLASMA = FUSION_MOLE_THRESHOLD, + GAS_CO2 = FUSION_MOLE_THRESHOLD) /datum/gas_reaction/fusion/react(datum/gas_mixture/air, datum/holder) var/turf/open/location @@ -294,8 +294,8 @@ var/list/cached_scan_results = air.analyzer_results var/old_heat_capacity = air.heat_capacity() var/reaction_energy = 0 //Reaction energy can be negative or positive, for both exothermic and endothermic reactions. - var/initial_plasma = air.get_moles(/datum/gas/plasma) - var/initial_carbon = air.get_moles(/datum/gas/carbon_dioxide) + var/initial_plasma = air.get_moles(GAS_PLASMA) + var/initial_carbon = air.get_moles(GAS_CO2) var/scale_factor = (air.return_volume())/(PI) //We scale it down by volume/Pi because for fusion conditions, moles roughly = 2*volume, but we want it to be based off something constant between reactions. var/toroidal_size = (2*PI)+TORADIANS(arctan((air.return_volume()-TOROID_VOLUME_BREAKEVEN)/TOROID_VOLUME_BREAKEVEN)) //The size of the phase space hypertorus var/gas_power = 0 @@ -313,9 +313,9 @@ carbon = MODULUS(carbon - plasma, toroidal_size) - air.set_moles(/datum/gas/plasma, plasma*scale_factor + FUSION_MOLE_THRESHOLD) //Scales the gases back up - air.set_moles(/datum/gas/carbon_dioxide , carbon*scale_factor + FUSION_MOLE_THRESHOLD) - var/delta_plasma = initial_plasma - air.get_moles(/datum/gas/plasma) + air.set_moles(GAS_PLASMA, plasma*scale_factor + FUSION_MOLE_THRESHOLD) //Scales the gases back up + air.set_moles(GAS_CO2 , carbon*scale_factor + FUSION_MOLE_THRESHOLD) + var/delta_plasma = initial_plasma - air.get_moles(GAS_PLASMA) reaction_energy += delta_plasma*PLASMA_BINDING_ENERGY //Energy is gained or lost corresponding to the creation or destruction of mass. if(instability < FUSION_INSTABILITY_ENDOTHERMALITY) @@ -324,17 +324,17 @@ reaction_energy *= (instability-FUSION_INSTABILITY_ENDOTHERMALITY)**0.5 if(air.thermal_energy() + reaction_energy < 0) //No using energy that doesn't exist. - air.set_moles(/datum/gas/plasma,initial_plasma) - air.set_moles(/datum/gas/carbon_dioxide, initial_carbon) + air.set_moles(GAS_PLASMA,initial_plasma) + air.set_moles(GAS_CO2, initial_carbon) return NO_REACTION - air.adjust_moles(/datum/gas/tritium, -FUSION_TRITIUM_MOLES_USED) + air.adjust_moles(GAS_TRITIUM, -FUSION_TRITIUM_MOLES_USED) //The decay of the tritium and the reaction's energy produces waste gases, different ones depending on whether the reaction is endo or exothermic if(reaction_energy > 0) - air.adjust_moles(/datum/gas/oxygen, FUSION_TRITIUM_MOLES_USED*(reaction_energy*FUSION_TRITIUM_CONVERSION_COEFFICIENT)) - air.adjust_moles(/datum/gas/nitrous_oxide, FUSION_TRITIUM_MOLES_USED*(reaction_energy*FUSION_TRITIUM_CONVERSION_COEFFICIENT)) + air.adjust_moles(GAS_O2, FUSION_TRITIUM_MOLES_USED*(reaction_energy*FUSION_TRITIUM_CONVERSION_COEFFICIENT)) + air.adjust_moles(GAS_NITROUS, FUSION_TRITIUM_MOLES_USED*(reaction_energy*FUSION_TRITIUM_CONVERSION_COEFFICIENT)) else - air.adjust_moles(/datum/gas/bz, FUSION_TRITIUM_MOLES_USED*(reaction_energy*-FUSION_TRITIUM_CONVERSION_COEFFICIENT)) - air.adjust_moles(/datum/gas/nitryl, FUSION_TRITIUM_MOLES_USED*(reaction_energy*-FUSION_TRITIUM_CONVERSION_COEFFICIENT)) + air.adjust_moles(GAS_BZ, FUSION_TRITIUM_MOLES_USED*(reaction_energy*-FUSION_TRITIUM_CONVERSION_COEFFICIENT)) + air.adjust_moles(GAS_NITRYL, FUSION_TRITIUM_MOLES_USED*(reaction_energy*-FUSION_TRITIUM_CONVERSION_COEFFICIENT)) if(reaction_energy) if(location) @@ -351,10 +351,10 @@ /datum/gas_reaction/fusion/test() var/datum/gas_mixture/G = new - G.set_moles(/datum/gas/carbon_dioxide,300) - G.set_moles(/datum/gas/plasma,1000) - G.set_moles(/datum/gas/tritium,100.61) - G.set_moles(/datum/gas/nitryl,1) + G.set_moles(GAS_CO2,300) + G.set_moles(GAS_PLASMA,1000) + G.set_moles(GAS_TRITIUM,100.61) + G.set_moles(GAS_NITRYL,1) G.set_temperature(15000) G.set_volume(1000) var/result = G.react() @@ -363,11 +363,11 @@ if(abs(G.analyzer_results["fusion"] - 3) > 0.0000001) var/instability = G.analyzer_results["fusion"] return list("success" = FALSE, "message" = "Fusion is not calculating analyzer results correctly, should be 3.000000045, is instead [instability]") - if(abs(G.get_moles(/datum/gas/plasma) - 850.616) > 0.5) - var/plas = G.get_moles(/datum/gas/plasma) + if(abs(G.get_moles(GAS_PLASMA) - 850.616) > 0.5) + var/plas = G.get_moles(GAS_PLASMA) return list("success" = FALSE, "message" = "Fusion is not calculating plasma correctly, should be 850.616, is instead [plas]") - if(abs(G.get_moles(/datum/gas/carbon_dioxide) - 1699.384) > 0.5) - var/co2 = G.get_moles(/datum/gas/carbon_dioxide) + if(abs(G.get_moles(GAS_CO2) - 1699.384) > 0.5) + var/co2 = G.get_moles(GAS_CO2) return list("success" = FALSE, "message" = "Fusion is not calculating co2 correctly, should be 1699.384, is instead [co2]") if(abs(G.return_temperature() - 27600) > 200) // calculating this manually sucks dude var/temp = G.return_temperature() @@ -381,9 +381,9 @@ /datum/gas_reaction/nitrylformation/init_reqs() min_requirements = list( - /datum/gas/oxygen = 20, - /datum/gas/nitrogen = 20, - /datum/gas/nitrous_oxide = 5, + GAS_O2 = 20, + GAS_N2 = 20, + GAS_NITROUS = 5, "TEMP" = FIRE_MINIMUM_TEMPERATURE_TO_EXIST*25 ) @@ -391,13 +391,13 @@ var/temperature = air.return_temperature() var/old_heat_capacity = air.heat_capacity() - var/heat_efficency = min(temperature/(FIRE_MINIMUM_TEMPERATURE_TO_EXIST*100),air.get_moles(/datum/gas/oxygen),air.get_moles(/datum/gas/nitrogen)) + var/heat_efficency = min(temperature/(FIRE_MINIMUM_TEMPERATURE_TO_EXIST*100),air.get_moles(GAS_O2),air.get_moles(GAS_N2)) var/energy_used = heat_efficency*NITRYL_FORMATION_ENERGY - if ((air.get_moles(/datum/gas/oxygen) - heat_efficency < 0 )|| (air.get_moles(/datum/gas/nitrogen) - heat_efficency < 0)) //Shouldn't produce gas from nothing. + if ((air.get_moles(GAS_O2) - heat_efficency < 0 )|| (air.get_moles(GAS_N2) - heat_efficency < 0)) //Shouldn't produce gas from nothing. return NO_REACTION - air.adjust_moles(/datum/gas/oxygen, -heat_efficency) - air.adjust_moles(/datum/gas/nitrogen, -heat_efficency) - air.adjust_moles(/datum/gas/nitryl, heat_efficency*2) + air.adjust_moles(GAS_O2, -heat_efficency) + air.adjust_moles(GAS_N2, -heat_efficency) + air.adjust_moles(GAS_NITRYL, heat_efficency*2) if(energy_used > 0) var/new_heat_capacity = air.heat_capacity() @@ -407,15 +407,15 @@ /datum/gas_reaction/nitrylformation/test() var/datum/gas_mixture/G = new - G.set_moles(/datum/gas/oxygen,30) - G.set_moles(/datum/gas/nitrogen,30) - G.set_moles(/datum/gas/nitrous_oxide,10) + G.set_moles(GAS_O2,30) + G.set_moles(GAS_N2,30) + G.set_moles(GAS_NITROUS,10) G.set_volume(1000) G.set_temperature(150000) var/result = G.react() if(result != REACTING) return list("success" = FALSE, "message" = "Reaction didn't go at all!") - if(!G.get_moles(/datum/gas/nitryl) < 0.8) + if(!G.get_moles(GAS_NITRYL) < 0.8) return list("success" = FALSE, "message" = "Nitryl isn't being generated correctly!") return ..() @@ -426,8 +426,8 @@ /datum/gas_reaction/bzformation/init_reqs() min_requirements = list( - /datum/gas/nitrous_oxide = 10, - /datum/gas/plasma = 10 + GAS_NITROUS = 10, + GAS_PLASMA = 10 ) @@ -435,16 +435,16 @@ var/temperature = air.return_temperature() var/pressure = air.return_pressure() var/old_heat_capacity = air.heat_capacity() - var/reaction_efficency = min(1/((pressure/(0.1*ONE_ATMOSPHERE))*(max(air.get_moles(/datum/gas/plasma)/air.get_moles(/datum/gas/nitrous_oxide),1))),air.get_moles(/datum/gas/nitrous_oxide),air.get_moles(/datum/gas/plasma)/2) + var/reaction_efficency = min(1/((pressure/(0.1*ONE_ATMOSPHERE))*(max(air.get_moles(GAS_PLASMA)/air.get_moles(GAS_NITROUS),1))),air.get_moles(GAS_NITROUS),air.get_moles(GAS_PLASMA)/2) var/energy_released = 2*reaction_efficency*FIRE_CARBON_ENERGY_RELEASED - if ((air.get_moles(/datum/gas/nitrous_oxide) - reaction_efficency < 0 )|| (air.get_moles(/datum/gas/plasma) - (2*reaction_efficency) < 0) || energy_released <= 0) //Shouldn't produce gas from nothing. + if ((air.get_moles(GAS_NITROUS) - reaction_efficency < 0 )|| (air.get_moles(GAS_PLASMA) - (2*reaction_efficency) < 0) || energy_released <= 0) //Shouldn't produce gas from nothing. return NO_REACTION - air.adjust_moles(/datum/gas/bz, reaction_efficency) - if(reaction_efficency == air.get_moles(/datum/gas/nitrous_oxide)) - air.adjust_moles(/datum/gas/bz, -min(pressure,1)) - air.adjust_moles(/datum/gas/oxygen, min(pressure,1)) - air.adjust_moles(/datum/gas/nitrous_oxide, -reaction_efficency) - air.adjust_moles(/datum/gas/plasma, -2*reaction_efficency) + air.adjust_moles(GAS_BZ, reaction_efficency) + if(reaction_efficency == air.get_moles(GAS_NITROUS)) + air.adjust_moles(GAS_BZ, -min(pressure,1)) + air.adjust_moles(GAS_O2, min(pressure,1)) + air.adjust_moles(GAS_NITROUS, -reaction_efficency) + air.adjust_moles(GAS_PLASMA, -2*reaction_efficency) SSresearch.science_tech.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, min((reaction_efficency**2)*BZ_RESEARCH_SCALE),BZ_RESEARCH_MAX_AMOUNT) @@ -456,14 +456,14 @@ /datum/gas_reaction/bzformation/test() var/datum/gas_mixture/G = new - G.set_moles(/datum/gas/plasma,15) - G.set_moles(/datum/gas/nitrous_oxide,15) + G.set_moles(GAS_PLASMA,15) + G.set_moles(GAS_NITROUS,15) G.set_volume(1000) G.set_temperature(10) var/result = G.react() if(result != REACTING) return list("success" = FALSE, "message" = "Reaction didn't go at all!") - if(!G.get_moles(/datum/gas/bz) < 4) // efficiency is 4.0643 and bz generation == efficiency + if(!G.get_moles(GAS_BZ) < 4) // efficiency is 4.0643 and bz generation == efficiency return list("success" = FALSE, "message" = "Nitryl isn't being generated correctly!") return ..() @@ -474,23 +474,23 @@ /datum/gas_reaction/stimformation/init_reqs() min_requirements = list( - /datum/gas/tritium = 30, - /datum/gas/plasma = 10, - /datum/gas/bz = 20, - /datum/gas/nitryl = 30, + GAS_TRITIUM = 30, + GAS_PLASMA = 10, + GAS_BZ = 20, + GAS_NITRYL = 30, "TEMP" = STIMULUM_HEAT_SCALE/2) /datum/gas_reaction/stimformation/react(datum/gas_mixture/air) var/old_heat_capacity = air.heat_capacity() - var/heat_scale = min(air.return_temperature()/STIMULUM_HEAT_SCALE,air.get_moles(/datum/gas/tritium),air.get_moles(/datum/gas/plasma),air.get_moles(/datum/gas/nitryl)) + var/heat_scale = min(air.return_temperature()/STIMULUM_HEAT_SCALE,air.get_moles(GAS_TRITIUM),air.get_moles(GAS_PLASMA),air.get_moles(GAS_NITRYL)) var/stim_energy_change = heat_scale + STIMULUM_FIRST_RISE*(heat_scale**2) - STIMULUM_FIRST_DROP*(heat_scale**3) + STIMULUM_SECOND_RISE*(heat_scale**4) - STIMULUM_ABSOLUTE_DROP*(heat_scale**5) - if ((air.get_moles(/datum/gas/tritium) - heat_scale < 0 )|| (air.get_moles(/datum/gas/plasma) - heat_scale < 0) || (air.get_moles(/datum/gas/nitryl) - heat_scale < 0)) //Shouldn't produce gas from nothing. + if ((air.get_moles(GAS_TRITIUM) - heat_scale < 0 )|| (air.get_moles(GAS_PLASMA) - heat_scale < 0) || (air.get_moles(GAS_NITRYL) - heat_scale < 0)) //Shouldn't produce gas from nothing. return NO_REACTION - air.adjust_moles(/datum/gas/stimulum, heat_scale/10) - air.adjust_moles(/datum/gas/tritium, -heat_scale) - air.adjust_moles(/datum/gas/plasma, -heat_scale) - air.adjust_moles(/datum/gas/nitryl, -heat_scale) + air.adjust_moles(GAS_STIMULUM, heat_scale/10) + air.adjust_moles(GAS_TRITIUM, -heat_scale) + air.adjust_moles(GAS_PLASMA, -heat_scale) + air.adjust_moles(GAS_NITRYL, -heat_scale) SSresearch.science_tech.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, STIMULUM_RESEARCH_AMOUNT*max(stim_energy_change,0)) if(stim_energy_change) @@ -502,17 +502,17 @@ /datum/gas_reaction/stimformation/test() //above mentioned "strange pattern" is a basic quintic polynomial, it's fine, can calculate it manually var/datum/gas_mixture/G = new - G.set_moles(/datum/gas/bz,30) - G.set_moles(/datum/gas/plasma,1000) - G.set_moles(/datum/gas/tritium,1000) - G.set_moles(/datum/gas/nitryl,1000) + G.set_moles(GAS_BZ,30) + G.set_moles(GAS_PLASMA,1000) + G.set_moles(GAS_TRITIUM,1000) + G.set_moles(GAS_NITRYL,1000) G.set_volume(1000) G.set_temperature(12998000) // yeah, really var/result = G.react() if(result != REACTING) return list("success" = FALSE, "message" = "Reaction didn't go at all!") - if(!G.get_moles(/datum/gas/stimulum) < 900) + if(!G.get_moles(GAS_STIMULUM) < 900) return list("success" = FALSE, "message" = "Stimulum isn't being generated correctly!") return ..() @@ -523,19 +523,19 @@ /datum/gas_reaction/nobliumformation/init_reqs() min_requirements = list( - /datum/gas/nitrogen = 10, - /datum/gas/tritium = 5, + GAS_N2 = 10, + GAS_TRITIUM = 5, "ENER" = NOBLIUM_FORMATION_ENERGY) /datum/gas_reaction/nobliumformation/react(datum/gas_mixture/air) var/old_heat_capacity = air.heat_capacity() - var/nob_formed = min((air.get_moles(/datum/gas/nitrogen)+air.get_moles(/datum/gas/tritium))/100,air.get_moles(/datum/gas/tritium)/10,air.get_moles(/datum/gas/nitrogen)/20) - var/energy_taken = nob_formed*(NOBLIUM_FORMATION_ENERGY/(max(air.get_moles(/datum/gas/bz),1))) - if ((air.get_moles(/datum/gas/tritium) - 10*nob_formed < 0) || (air.get_moles(/datum/gas/nitrogen) - 20*nob_formed < 0)) + var/nob_formed = min((air.get_moles(GAS_N2)+air.get_moles(GAS_TRITIUM))/100,air.get_moles(GAS_TRITIUM)/10,air.get_moles(GAS_N2)/20) + var/energy_taken = nob_formed*(NOBLIUM_FORMATION_ENERGY/(max(air.get_moles(GAS_BZ),1))) + if ((air.get_moles(GAS_TRITIUM) - 10*nob_formed < 0) || (air.get_moles(GAS_N2) - 20*nob_formed < 0)) return NO_REACTION - air.adjust_moles(/datum/gas/tritium, -10*nob_formed) - air.adjust_moles(/datum/gas/nitrogen, -20*nob_formed) - air.adjust_moles(/datum/gas/hypernoblium,nob_formed) + air.adjust_moles(GAS_TRITIUM, -10*nob_formed) + air.adjust_moles(GAS_N2, -20*nob_formed) + air.adjust_moles(GAS_HYPERNOB,nob_formed) SSresearch.science_tech.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, nob_formed*NOBLIUM_RESEARCH_AMOUNT) @@ -546,8 +546,8 @@ /datum/gas_reaction/nobliumformation/test() var/datum/gas_mixture/G = new - G.set_moles(/datum/gas/nitrogen,100) - G.set_moles(/datum/gas/tritium,500) + G.set_moles(GAS_N2,100) + G.set_moles(GAS_TRITIUM,500) G.set_volume(1000) G.set_temperature(5000000) // yeah, really var/result = G.react() @@ -566,18 +566,18 @@ /datum/gas_reaction/miaster/init_reqs() min_requirements = list( "TEMP" = FIRE_MINIMUM_TEMPERATURE_TO_EXIST+70, - /datum/gas/miasma = MINIMUM_MOLE_COUNT + GAS_MIASMA = MINIMUM_MOLE_COUNT ) /datum/gas_reaction/miaster/react(datum/gas_mixture/air, datum/holder) // As the name says it, it needs to be dry - if(air.get_moles(/datum/gas/water_vapor) && air.get_moles(/datum/gas/water_vapor)/air.total_moles() > 0.1) + if(air.get_moles(GAS_H2O) && air.get_moles(GAS_H2O)/air.total_moles() > 0.1) return //Replace miasma with oxygen - var/cleaned_air = min(air.get_moles(/datum/gas/miasma), 20 + (air.return_temperature() - FIRE_MINIMUM_TEMPERATURE_TO_EXIST - 70) / 20) - air.adjust_moles(/datum/gas/miasma, -cleaned_air) - air.adjust_moles(/datum/gas/oxygen, cleaned_air) + var/cleaned_air = min(air.get_moles(GAS_MIASMA), 20 + (air.return_temperature() - FIRE_MINIMUM_TEMPERATURE_TO_EXIST - 70) / 20) + air.adjust_moles(GAS_MIASMA, -cleaned_air) + air.adjust_moles(GAS_O2, cleaned_air) //Possibly burning a bit of organic matter through maillard reaction, so a *tiny* bit more heat would be understandable air.set_temperature(air.return_temperature() + cleaned_air * 0.002) @@ -585,16 +585,16 @@ /datum/gas_reaction/miaster/test() var/datum/gas_mixture/G = new - G.set_moles(/datum/gas/miasma,1) + G.set_moles(GAS_MIASMA,1) G.set_volume(1000) G.set_temperature(450) var/result = G.react() if(result != REACTING) return list("success" = FALSE, "message" = "Reaction didn't go at all!") G.clear() - G.set_moles(/datum/gas/miasma,1) + G.set_moles(GAS_MIASMA,1) G.set_temperature(450) - G.set_moles(/datum/gas/water_vapor,0.5) + G.set_moles(GAS_H2O,0.5) result = G.react() if(result != NO_REACTION) return list("success" = FALSE, "message" = "Miasma sterilization not stopping due to water vapor correctly!") diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index c63797282d..b10ddbc701 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -94,63 +94,63 @@ var/list/TLV = list( // Breathable air. "pressure" = new/datum/tlv(ONE_ATMOSPHERE * 0.8, ONE_ATMOSPHERE* 0.9, ONE_ATMOSPHERE * 1.1, ONE_ATMOSPHERE * 1.2), // kPa "temperature" = new/datum/tlv(T0C, T0C+10, T0C+40, T0C+66), - /datum/gas/oxygen = new/datum/tlv(16, 19, 135, 140), // Partial pressure, kpa - /datum/gas/nitrogen = new/datum/tlv(-1, -1, 1000, 1000), - /datum/gas/carbon_dioxide = new/datum/tlv(-1, -1, 5, 10), - /datum/gas/miasma = new/datum/tlv(-1, -1, 2, 5), - /datum/gas/plasma = new/datum/tlv/dangerous, - /datum/gas/nitrous_oxide = new/datum/tlv/dangerous, - /datum/gas/bz = new/datum/tlv/dangerous, - /datum/gas/hypernoblium = new/datum/tlv(-1, -1, 1000, 1000), // Hyper-Noblium is inert and nontoxic - /datum/gas/water_vapor = new/datum/tlv/dangerous, - /datum/gas/tritium = new/datum/tlv/dangerous, - /datum/gas/stimulum = new/datum/tlv(-1, -1, 1000, 1000), // Stimulum has only positive effects - /datum/gas/nitryl = new/datum/tlv/dangerous, - /datum/gas/pluoxium = new/datum/tlv(-1, -1, 1000, 1000), // Unlike oxygen, pluoxium does not fuel plasma/tritium fires - /datum/gas/methane = new/datum/tlv(-1, -1, 3, 6), - /datum/gas/methyl_bromide = new/datum/tlv/dangerous + GAS_O2 = new/datum/tlv(16, 19, 135, 140), // Partial pressure, kpa + GAS_N2 = new/datum/tlv(-1, -1, 1000, 1000), + GAS_CO2 = new/datum/tlv(-1, -1, 5, 10), + GAS_MIASMA = new/datum/tlv(-1, -1, 2, 5), + GAS_PLASMA = new/datum/tlv/dangerous, + GAS_NITROUS = new/datum/tlv/dangerous, + GAS_BZ = new/datum/tlv/dangerous, + GAS_HYPERNOB = new/datum/tlv(-1, -1, 1000, 1000), // Hyper-Noblium is inert and nontoxic + GAS_H2O = new/datum/tlv/dangerous, + GAS_TRITIUM = new/datum/tlv/dangerous, + GAS_STIMULUM = new/datum/tlv(-1, -1, 1000, 1000), // Stimulum has only positive effects + GAS_NITRYL = new/datum/tlv/dangerous, + GAS_PLUOXIUM = new/datum/tlv(-1, -1, 1000, 1000), // Unlike oxygen, pluoxium does not fuel plasma/tritium fires + GAS_METHANE = new/datum/tlv(-1, -1, 3, 6), + GAS_METHYL_BROMIDE = new/datum/tlv/dangerous ) /obj/machinery/airalarm/server // No checks here. TLV = list( "pressure" = new/datum/tlv/no_checks, "temperature" = new/datum/tlv/no_checks, - /datum/gas/oxygen = new/datum/tlv/no_checks, - /datum/gas/nitrogen = new/datum/tlv/no_checks, - /datum/gas/carbon_dioxide = new/datum/tlv/no_checks, - /datum/gas/miasma = new/datum/tlv/no_checks, - /datum/gas/plasma = new/datum/tlv/no_checks, - /datum/gas/nitrous_oxide = new/datum/tlv/no_checks, - /datum/gas/bz = new/datum/tlv/no_checks, - /datum/gas/hypernoblium = new/datum/tlv/no_checks, - /datum/gas/water_vapor = new/datum/tlv/no_checks, - /datum/gas/tritium = new/datum/tlv/no_checks, - /datum/gas/stimulum = new/datum/tlv/no_checks, - /datum/gas/nitryl = new/datum/tlv/no_checks, - /datum/gas/pluoxium = new/datum/tlv/no_checks, - /datum/gas/methane = new/datum/tlv/no_checks, - /datum/gas/methyl_bromide = new/datum/tlv/no_checks + GAS_O2 = new/datum/tlv/no_checks, + GAS_N2 = new/datum/tlv/no_checks, + GAS_CO2 = new/datum/tlv/no_checks, + GAS_MIASMA = new/datum/tlv/no_checks, + GAS_PLASMA = new/datum/tlv/no_checks, + GAS_NITROUS = new/datum/tlv/no_checks, + GAS_BZ = new/datum/tlv/no_checks, + GAS_HYPERNOB = new/datum/tlv/no_checks, + GAS_H2O = new/datum/tlv/no_checks, + GAS_TRITIUM = new/datum/tlv/no_checks, + GAS_STIMULUM = new/datum/tlv/no_checks, + GAS_NITRYL = new/datum/tlv/no_checks, + GAS_PLUOXIUM = new/datum/tlv/no_checks, + GAS_METHANE = new/datum/tlv/no_checks, + GAS_METHYL_BROMIDE = new/datum/tlv/no_checks ) /obj/machinery/airalarm/kitchen_cold_room // Copypasta: to check temperatures. TLV = list( "pressure" = new/datum/tlv(ONE_ATMOSPHERE * 0.8, ONE_ATMOSPHERE* 0.9, ONE_ATMOSPHERE * 1.1, ONE_ATMOSPHERE * 1.2), // kPa "temperature" = new/datum/tlv(T0C-73.15, T0C-63.15, T0C, T0C+10), - /datum/gas/oxygen = new/datum/tlv(16, 19, 135, 140), // Partial pressure, kpa - /datum/gas/nitrogen = new/datum/tlv(-1, -1, 1000, 1000), - /datum/gas/carbon_dioxide = new/datum/tlv(-1, -1, 5, 10), - /datum/gas/miasma = new/datum/tlv/(-1, -1, 2, 5), - /datum/gas/plasma = new/datum/tlv/dangerous, - /datum/gas/nitrous_oxide = new/datum/tlv/dangerous, - /datum/gas/bz = new/datum/tlv/dangerous, - /datum/gas/hypernoblium = new/datum/tlv(-1, -1, 1000, 1000), // Hyper-Noblium is inert and nontoxic - /datum/gas/water_vapor = new/datum/tlv/dangerous, - /datum/gas/tritium = new/datum/tlv/dangerous, - /datum/gas/stimulum = new/datum/tlv(-1, -1, 1000, 1000), // Stimulum has only positive effects - /datum/gas/nitryl = new/datum/tlv/dangerous, - /datum/gas/pluoxium = new/datum/tlv(-1, -1, 1000, 1000), // Unlike oxygen, pluoxium does not fuel plasma/tritium fires - /datum/gas/methane = new/datum/tlv(-1, -1, 3, 6), - /datum/gas/methyl_bromide = new/datum/tlv/dangerous + GAS_O2 = new/datum/tlv(16, 19, 135, 140), // Partial pressure, kpa + GAS_N2 = new/datum/tlv(-1, -1, 1000, 1000), + GAS_CO2 = new/datum/tlv(-1, -1, 5, 10), + GAS_MIASMA = new/datum/tlv/(-1, -1, 2, 5), + GAS_PLASMA = new/datum/tlv/dangerous, + GAS_NITROUS = new/datum/tlv/dangerous, + GAS_BZ = new/datum/tlv/dangerous, + GAS_HYPERNOB = new/datum/tlv(-1, -1, 1000, 1000), // Hyper-Noblium is inert and nontoxic + GAS_H2O = new/datum/tlv/dangerous, + GAS_TRITIUM = new/datum/tlv/dangerous, + GAS_STIMULUM = new/datum/tlv(-1, -1, 1000, 1000), // Stimulum has only positive effects + GAS_NITRYL = new/datum/tlv/dangerous, + GAS_PLUOXIUM = new/datum/tlv(-1, -1, 1000, 1000), // Unlike oxygen, pluoxium does not fuel plasma/tritium fires + GAS_METHANE = new/datum/tlv(-1, -1, 3, 6), + GAS_METHYL_BROMIDE = new/datum/tlv/dangerous ) /obj/machinery/airalarm/unlocked @@ -532,7 +532,7 @@ for(var/device_id in A.air_scrub_names) send_signal(device_id, list( "power" = 1, - "set_filters" = list(/datum/gas/carbon_dioxide, /datum/gas/miasma), + "set_filters" = list(GAS_CO2, GAS_MIASMA), "scrubbing" = 1, "widenet" = 0, )) @@ -547,19 +547,19 @@ send_signal(device_id, list( "power" = 1, "set_filters" = list( - /datum/gas/carbon_dioxide, - /datum/gas/miasma, - /datum/gas/plasma, - /datum/gas/water_vapor, - /datum/gas/hypernoblium, - /datum/gas/nitrous_oxide, - /datum/gas/nitryl, - /datum/gas/tritium, - /datum/gas/bz, - /datum/gas/stimulum, - /datum/gas/pluoxium, - /datum/gas/methane, - /datum/gas/methyl_bromide + GAS_CO2, + GAS_MIASMA, + GAS_PLASMA, + GAS_H2O, + GAS_HYPERNOB, + GAS_NITROUS, + GAS_NITRYL, + GAS_TRITIUM, + GAS_BZ, + GAS_STIMULUM, + GAS_PLUOXIUM, + GAS_METHANE, + GAS_METHYL_BROMIDE ), "scrubbing" = 1, "widenet" = 1, @@ -587,7 +587,7 @@ for(var/device_id in A.air_scrub_names) send_signal(device_id, list( "power" = 1, - "set_filters" = list(/datum/gas/carbon_dioxide, /datum/gas/miasma), + "set_filters" = list(GAS_CO2, GAS_MIASMA), "scrubbing" = 1, "widenet" = 0, )) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index cf2cdd80a7..eacb7ed392 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -210,7 +210,7 @@ if(reagent_transfer == 0) // Magically transfer reagents. Because cryo magic. beaker.reagents.trans_to(occupant, 1, efficiency * 0.25) // Transfer reagents. beaker.reagents.reaction(occupant, VAPOR) - air1.adjust_moles(/datum/gas/oxygen, -max(0,air1.get_moles(/datum/gas/oxygen) - 2 / efficiency)) //Let's use gas for this + air1.adjust_moles(GAS_O2, -max(0,air1.get_moles(GAS_O2) - 2 / efficiency)) //Let's use gas for this if(++reagent_transfer >= 10 * efficiency) // Throttle reagent transfer (higher efficiency will transfer the same amount but consume less from the beaker). reagent_transfer = 0 @@ -224,7 +224,7 @@ var/datum/gas_mixture/air1 = airs[1] - if(!nodes[1] || !airs[1] || air1.get_moles(/datum/gas/oxygen) < 5) // Turn off if the machine won't work. + if(!nodes[1] || !airs[1] || air1.get_moles(GAS_O2) < 5) // Turn off if the machine won't work. on = FALSE update_icon() return diff --git a/code/modules/atmospherics/machinery/components/unary_devices/tank.dm b/code/modules/atmospherics/machinery/components/unary_devices/tank.dm index ea41b3d910..2b0d4e4c96 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/tank.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/tank.dm @@ -32,30 +32,30 @@ /obj/machinery/atmospherics/components/unary/tank/air/New() ..() var/datum/gas_mixture/air_contents = airs[1] - air_contents.set_moles(/datum/gas/oxygen, AIR_CONTENTS * 0.2) - air_contents.set_moles(/datum/gas/nitrogen, AIR_CONTENTS * 0.8) + air_contents.set_moles(GAS_O2, AIR_CONTENTS * 0.2) + air_contents.set_moles(GAS_N2, AIR_CONTENTS * 0.8) /obj/machinery/atmospherics/components/unary/tank/carbon_dioxide - gas_type = /datum/gas/carbon_dioxide + gas_type = GAS_CO2 /obj/machinery/atmospherics/components/unary/tank/toxins icon_state = "orange" - gas_type = /datum/gas/plasma + gas_type = GAS_PLASMA /obj/machinery/atmospherics/components/unary/tank/nitrogen icon_state = "red" - gas_type = /datum/gas/nitrogen + gas_type = GAS_N2 /obj/machinery/atmospherics/components/unary/tank/oxygen icon_state = "blue" - gas_type = /datum/gas/oxygen + gas_type = GAS_O2 /obj/machinery/atmospherics/components/unary/tank/nitrous icon_state = "red_white" - gas_type = /datum/gas/nitrous_oxide + gas_type = GAS_NITROUS /obj/machinery/atmospherics/components/unary/tank/bz - gas_type = /datum/gas/bz + gas_type = GAS_BZ // /obj/machinery/atmospherics/components/unary/tank/freon // icon_state = "blue" @@ -75,17 +75,17 @@ /obj/machinery/atmospherics/components/unary/tank/hypernoblium icon_state = "blue" - gas_type = /datum/gas/hypernoblium + gas_type = GAS_HYPERNOB /obj/machinery/atmospherics/components/unary/tank/miasma - gas_type = /datum/gas/miasma + gas_type = GAS_MIASMA /obj/machinery/atmospherics/components/unary/tank/nitryl - gas_type = /datum/gas/nitryl + gas_type = GAS_NITRYL /obj/machinery/atmospherics/components/unary/tank/pluoxium icon_state = "blue" - gas_type = /datum/gas/pluoxium + gas_type = GAS_PLUOXIUM // /obj/machinery/atmospherics/components/unary/tank/proto_nitrate // icon_state = "red" @@ -93,14 +93,14 @@ /obj/machinery/atmospherics/components/unary/tank/stimulum icon_state = "red" - gas_type = /datum/gas/stimulum + gas_type = GAS_STIMULUM /obj/machinery/atmospherics/components/unary/tank/tritium - gas_type = /datum/gas/tritium + gas_type = GAS_TRITIUM /obj/machinery/atmospherics/components/unary/tank/water_vapor icon_state = "grey" - gas_type = /datum/gas/water_vapor + gas_type = GAS_H2O // /obj/machinery/atmospherics/components/unary/tank/zauker // gas_type = /datum/gas/zauker diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm index 502b958525..e462ccffe6 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm @@ -18,7 +18,7 @@ var/id_tag = null var/scrubbing = SCRUBBING //0 = siphoning, 1 = scrubbing - var/filter_types = list(/datum/gas/carbon_dioxide) + var/filter_types = list(GAS_CO2) var/volume_rate = 200 var/widenet = 0 //is this scrubber acting on the 3x3 area around it. var/list/turf/adjacent_turfs = list() diff --git a/code/modules/atmospherics/machinery/other/miner.dm b/code/modules/atmospherics/machinery/other/miner.dm index b79acfa7d8..1caae1376f 100644 --- a/code/modules/atmospherics/machinery/other/miner.dm +++ b/code/modules/atmospherics/machinery/other/miner.dm @@ -145,34 +145,34 @@ /obj/machinery/atmospherics/miner/n2o name = "\improper N2O Gas Miner" overlay_color = "#FFCCCC" - spawn_id = /datum/gas/nitrous_oxide + spawn_id = GAS_NITROUS /obj/machinery/atmospherics/miner/nitrogen name = "\improper N2 Gas Miner" overlay_color = "#CCFFCC" - spawn_id = /datum/gas/nitrogen + spawn_id = GAS_N2 /obj/machinery/atmospherics/miner/oxygen name = "\improper O2 Gas Miner" overlay_color = "#007FFF" - spawn_id = /datum/gas/oxygen + spawn_id = GAS_O2 /obj/machinery/atmospherics/miner/toxins name = "\improper Plasma Gas Miner" overlay_color = "#FF0000" - spawn_id = /datum/gas/plasma + spawn_id = GAS_PLASMA /obj/machinery/atmospherics/miner/carbon_dioxide name = "\improper CO2 Gas Miner" overlay_color = "#CDCDCD" - spawn_id = /datum/gas/carbon_dioxide + spawn_id = GAS_CO2 /obj/machinery/atmospherics/miner/bz name = "\improper BZ Gas Miner" overlay_color = "#FAFF00" - spawn_id = /datum/gas/bz + spawn_id = GAS_BZ /obj/machinery/atmospherics/miner/water_vapor name = "\improper Water Vapor Gas Miner" overlay_color = "#99928E" - spawn_id = /datum/gas/water_vapor + spawn_id = GAS_H2O diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index 6d5fb7d478..e56258dd52 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -74,37 +74,37 @@ name = "n2 canister" desc = "Nitrogen. Reportedly useful for something." icon_state = "red" - gas_type = /datum/gas/nitrogen + gas_type = GAS_N2 /obj/machinery/portable_atmospherics/canister/oxygen name = "o2 canister" desc = "Oxygen. Necessary for human life." icon_state = "blue" - gas_type = /datum/gas/oxygen + gas_type = GAS_O2 /obj/machinery/portable_atmospherics/canister/carbon_dioxide name = "co2 canister" desc = "Carbon dioxide. What the fuck is carbon dioxide?" icon_state = "black" - gas_type = /datum/gas/carbon_dioxide + gas_type = GAS_CO2 /obj/machinery/portable_atmospherics/canister/toxins name = "plasma canister" desc = "Plasma. The reason YOU are here. Highly toxic." icon_state = "orange" - gas_type = /datum/gas/plasma + gas_type = GAS_PLASMA /obj/machinery/portable_atmospherics/canister/bz name = "\improper BZ canister" desc = "BZ. A powerful hallucinogenic nerve agent." icon_state = "purple" - gas_type = /datum/gas/bz + gas_type = GAS_BZ /obj/machinery/portable_atmospherics/canister/nitrous_oxide name = "n2o canister" desc = "Nitrous oxide. Known to cause drowsiness." icon_state = "redws" - gas_type = /datum/gas/nitrous_oxide + gas_type = GAS_NITROUS /obj/machinery/portable_atmospherics/canister/air name = "air canister" @@ -115,57 +115,57 @@ name = "tritium canister" desc = "Tritium. Inhalation might cause irradiation." icon_state = "green" - gas_type = /datum/gas/tritium + gas_type = GAS_TRITIUM /obj/machinery/portable_atmospherics/canister/nob name = "hyper-noblium canister" desc = "Hyper-Noblium. More noble than all other gases." icon_state = "freon" - gas_type = /datum/gas/hypernoblium + gas_type = GAS_HYPERNOB /obj/machinery/portable_atmospherics/canister/nitryl name = "nitryl canister" desc = "Nitryl. Feels great 'til the acid eats your lungs." icon_state = "brown" - gas_type = /datum/gas/nitryl + gas_type = GAS_NITRYL /obj/machinery/portable_atmospherics/canister/stimulum name = "stimulum canister" desc = "Stimulum. High energy gas, high energy people." icon_state = "darkpurple" - gas_type = /datum/gas/stimulum + gas_type = GAS_STIMULUM /obj/machinery/portable_atmospherics/canister/pluoxium name = "pluoxium canister" desc = "Pluoxium. Like oxygen, but more bang for your buck." icon_state = "darkblue" - gas_type = /datum/gas/pluoxium + gas_type = GAS_PLUOXIUM /obj/machinery/portable_atmospherics/canister/water_vapor name = "water vapor canister" desc = "Water vapor. We get it, you vape." icon_state = "water_vapor" - gas_type = /datum/gas/water_vapor + gas_type = GAS_H2O filled = 1 /obj/machinery/portable_atmospherics/canister/miasma name = "miasma canister" desc = "Miasma. Makes you wish your nose were blocked." icon_state = "miasma" - gas_type = /datum/gas/miasma + gas_type = GAS_MIASMA filled = 1 /obj/machinery/portable_atmospherics/canister/methane name = "methane canister" desc = "Methane. The simplest of hydrocarbons. Non-toxic but highly flammable." icon_state = "greyblackred" - gas_type = /datum/gas/methane + gas_type = GAS_METHANE /obj/machinery/portable_atmospherics/canister/methyl_bromide name = "methyl bromide canister" desc = "Methyl bromide. A potent toxin to most, essential for the Kharmaan to live." icon_state = "purplecyan" - gas_type = /datum/gas/methyl_bromide + gas_type = GAS_METHYL_BROMIDE /obj/machinery/portable_atmospherics/canister/proc/get_time_left() if(timing) @@ -198,7 +198,7 @@ name = "prototype canister" desc = "A prototype canister for a prototype bike, what could go wrong?" icon_state = "proto" - gas_type = /datum/gas/oxygen + gas_type = GAS_O2 filled = 1 release_pressure = ONE_ATMOSPHERE*2 @@ -222,8 +222,8 @@ air_contents.set_moles(gas_type,(maximum_pressure * filled) * air_contents.return_volume() / (R_IDEAL_GAS_EQUATION * air_contents.return_temperature())) /obj/machinery/portable_atmospherics/canister/air/create_gas() - air_contents.set_moles(/datum/gas/oxygen, (O2STANDARD * maximum_pressure * filled) * air_contents.return_volume() / (R_IDEAL_GAS_EQUATION * air_contents.return_temperature())) - air_contents.set_moles(/datum/gas/nitrogen, (N2STANDARD * maximum_pressure * filled) * air_contents.return_volume() / (R_IDEAL_GAS_EQUATION * air_contents.return_temperature())) + air_contents.set_moles(GAS_O2, (O2STANDARD * maximum_pressure * filled) * air_contents.return_volume() / (R_IDEAL_GAS_EQUATION * air_contents.return_temperature())) + air_contents.set_moles(GAS_N2, (N2STANDARD * maximum_pressure * filled) * air_contents.return_volume() / (R_IDEAL_GAS_EQUATION * air_contents.return_temperature())) /obj/machinery/portable_atmospherics/canister/update_icon_state() if(stat & BROKEN) @@ -433,7 +433,7 @@ var/list/danger = list() for(var/id in air_contents.get_gases()) var/gas = air_contents.get_moles(id) - if(!GLOB.meta_gas_dangers[id]) + if(!GLOB.meta_gas_flags[id] & GAS_FLAG_DANGEROUS) continue if(gas > (GLOB.meta_gas_visibility[id] || MOLES_GAS_VISIBLE)) //if moles_visible is undefined, default to default visibility danger[GLOB.meta_gas_names[id]] = gas //ex. "plasma" = 20 diff --git a/code/modules/atmospherics/machinery/portable/pump.dm b/code/modules/atmospherics/machinery/portable/pump.dm index 2c9bcdc1a7..68708c3233 100644 --- a/code/modules/atmospherics/machinery/portable/pump.dm +++ b/code/modules/atmospherics/machinery/portable/pump.dm @@ -112,8 +112,8 @@ if("power") on = !on if(on && !holding) - var/plasma = air_contents.get_moles(/datum/gas/plasma) - var/n2o = air_contents.get_moles(/datum/gas/nitrous_oxide) + var/plasma = air_contents.get_moles(GAS_PLASMA) + var/n2o = air_contents.get_moles(GAS_NITROUS) if(n2o || plasma) message_admins("[ADMIN_LOOKUPFLW(usr)] turned on a pump that contains [n2o ? "N2O" : ""][n2o && plasma ? " & " : ""][plasma ? "Plasma" : ""] at [ADMIN_VERBOSEJMP(src)]") log_admin("[key_name(usr)] turned on a pump that contains [n2o ? "N2O" : ""][n2o && plasma ? " & " : ""][plasma ? "Plasma" : ""] at [AREACOORD(src)]") diff --git a/code/modules/atmospherics/machinery/portable/scrubber.dm b/code/modules/atmospherics/machinery/portable/scrubber.dm index 08b181230f..ffffaac4d4 100644 --- a/code/modules/atmospherics/machinery/portable/scrubber.dm +++ b/code/modules/atmospherics/machinery/portable/scrubber.dm @@ -10,7 +10,7 @@ var/use_overlays = TRUE volume = 1000 - var/list/scrubbing = list(/datum/gas/plasma, /datum/gas/carbon_dioxide, /datum/gas/nitrous_oxide, /datum/gas/bz, /datum/gas/nitryl, /datum/gas/tritium, /datum/gas/hypernoblium, /datum/gas/water_vapor) + var/list/scrubbing = list(GAS_PLASMA, GAS_CO2, GAS_NITROUS, GAS_BZ, GAS_NITRYL, GAS_TRITIUM, GAS_HYPERNOB, GAS_H2O) /obj/machinery/portable_atmospherics/scrubber/Destroy() var/turf/T = get_turf(src) diff --git a/code/modules/cargo/bounties/engineering.dm b/code/modules/cargo/bounties/engineering.dm index b84fd2ca2c..5ddce8fb2c 100644 --- a/code/modules/cargo/bounties/engineering.dm +++ b/code/modules/cargo/bounties/engineering.dm @@ -4,7 +4,7 @@ reward = 7500 wanted_types = list(/obj/item/tank) var/moles_required = 20 // A full tank is 28 moles, but CentCom ignores that fact. - var/gas_type = /datum/gas/pluoxium + var/gas_type = GAS_PLUOXIUM /datum/bounty/item/engineering/gas/applies_to(obj/O) if(!..()) @@ -15,12 +15,12 @@ //datum/bounty/item/engineering/gas/nitryl_tank // name = "Full Tank of Nitryl" // description = "The non-human staff of Station 88 has been volunteered to test performance enhancing drugs. Ship them a tank full of Nitryl so they can get started." -// gas_type = /datum/gas/nitryl +// gas_type = GAS_NITRYL /datum/bounty/item/engineering/gas/tritium_tank name = "Full Tank of Tritium" description = "Station 49 is looking to kickstart their research program. Ship them a tank full of Tritium." - gas_type = /datum/gas/tritium + gas_type = GAS_TRITIUM /datum/bounty/item/engineering/pacman name = "P.A.C.M.A.N.-type portable generator" diff --git a/code/modules/cargo/exports/large_objects.dm b/code/modules/cargo/exports/large_objects.dm index 9202fd1f81..dca23c9f22 100644 --- a/code/modules/cargo/exports/large_objects.dm +++ b/code/modules/cargo/exports/large_objects.dm @@ -169,13 +169,13 @@ /datum/export/large/gas_canister/get_cost(obj/O) var/obj/machinery/portable_atmospherics/canister/C = O var/worth = 10 - worth += C.air_contents.get_moles(/datum/gas/bz)*3 - worth += C.air_contents.get_moles(/datum/gas/stimulum)*25 - worth += C.air_contents.get_moles(/datum/gas/hypernoblium)*20 - worth += C.air_contents.get_moles(/datum/gas/miasma)*2 - worth += C.air_contents.get_moles(/datum/gas/tritium)*7 - worth += C.air_contents.get_moles(/datum/gas/pluoxium)*6 - worth += C.air_contents.get_moles(/datum/gas/nitryl)*10 + worth += C.air_contents.get_moles(GAS_BZ)*3 + worth += C.air_contents.get_moles(GAS_STIMULUM)*25 + worth += C.air_contents.get_moles(GAS_HYPERNOB)*20 + worth += C.air_contents.get_moles(GAS_MIASMA)*2 + worth += C.air_contents.get_moles(GAS_TRITIUM)*7 + worth += C.air_contents.get_moles(GAS_PLUOXIUM)*6 + worth += C.air_contents.get_moles(GAS_NITRYL)*10 return worth diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index c8679447b8..6fcaa5e6b0 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -171,7 +171,7 @@ var/turf/open/floor/T = holder.loc if(istype(T)) var/datum/gas_mixture/GM = T.air - GM.set_moles(/datum/gas/oxygen, max(GM.get_moles(/datum/gas/oxygen) - severity * holder.energy, 0)) + GM.set_moles(GAS_O2, max(GM.get_moles(GAS_O2) - severity * holder.energy, 0)) /datum/spacevine_mutation/nitro_eater name = "nitrogen consuming" @@ -183,7 +183,7 @@ var/turf/open/floor/T = holder.loc if(istype(T)) var/datum/gas_mixture/GM = T.air - GM.set_moles(/datum/gas/nitrogen, max(GM.get_moles(/datum/gas/nitrogen) - severity * holder.energy, 0)) + GM.set_moles(GAS_N2, max(GM.get_moles(GAS_N2) - severity * holder.energy, 0)) /datum/spacevine_mutation/carbondioxide_eater name = "CO2 consuming" @@ -195,7 +195,7 @@ var/turf/open/floor/T = holder.loc if(istype(T)) var/datum/gas_mixture/GM = T.air - GM.set_moles(/datum/gas/carbon_dioxide, max(GM.get_moles(/datum/gas/carbon_dioxide) - severity * holder.energy, 0)) + GM.set_moles(GAS_CO2, max(GM.get_moles(GAS_CO2) - severity * holder.energy, 0)) /datum/spacevine_mutation/plasma_eater name = "toxins consuming" @@ -207,7 +207,7 @@ var/turf/open/floor/T = holder.loc if(istype(T)) var/datum/gas_mixture/GM = T.air - GM.set_moles(/datum/gas/plasma, max(GM.get_moles(/datum/gas/plasma) - severity * holder.energy, 0)) + GM.set_moles(GAS_PLASMA, max(GM.get_moles(GAS_PLASMA) - severity * holder.energy, 0)) /datum/spacevine_mutation/thorns name = "thorny" diff --git a/code/modules/hydroponics/grown/misc.dm b/code/modules/hydroponics/grown/misc.dm index 9cadff9873..733d973832 100644 --- a/code/modules/hydroponics/grown/misc.dm +++ b/code/modules/hydroponics/grown/misc.dm @@ -58,7 +58,7 @@ return var/datum/gas_mixture/stank = new - stank.adjust_moles(/datum/gas/miasma,(yield + 6)*0.14) // 0.14 = 7*0.02, this process is only being called about 2/7 as much as corpses so this is 12-32 times a corpses + stank.adjust_moles(GAS_MIASMA,(yield + 6)*0.14) // 0.14 = 7*0.02, this process is only being called about 2/7 as much as corpses so this is 12-32 times a corpses stank.set_temperature(T20C) // without this the room would eventually freeze and miasma mining would be easier T.assume_air(stank) T.air_update_turf() diff --git a/code/modules/hydroponics/grown/towercap.dm b/code/modules/hydroponics/grown/towercap.dm index ecbfa7584b..9c82cf34d3 100644 --- a/code/modules/hydroponics/grown/towercap.dm +++ b/code/modules/hydroponics/grown/towercap.dm @@ -226,7 +226,7 @@ var/turf/open/O = loc if(O.air) var/datum/gas_mixture/loc_air = O.air - if(loc_air.get_moles(/datum/gas/oxygen) > 13) + if(loc_air.get_moles(GAS_O2) > 13) return TRUE return FALSE diff --git a/code/modules/mob/living/carbon/alien/life.dm b/code/modules/mob/living/carbon/alien/life.dm index 0a2434055f..cd994dfd10 100644 --- a/code/modules/mob/living/carbon/alien/life.dm +++ b/code/modules/mob/living/carbon/alien/life.dm @@ -16,20 +16,20 @@ var/breath_pressure = (breath.total_moles()*R_IDEAL_GAS_EQUATION*breath.return_temperature())/BREATH_VOLUME //Partial pressure of the toxins in our breath - var/Toxins_pp = (breath.get_moles(/datum/gas/plasma)/breath.total_moles())*breath_pressure + var/Toxins_pp = (breath.get_moles(GAS_PLASMA)/breath.total_moles())*breath_pressure if(Toxins_pp > tox_detect_threshold) // Detect toxins in air - adjustPlasma(breath.get_moles(/datum/gas/plasma)*250) + adjustPlasma(breath.get_moles(GAS_PLASMA)*250) throw_alert("alien_tox", /obj/screen/alert/alien_tox) - toxins_used = breath.get_moles(/datum/gas/plasma) + toxins_used = breath.get_moles(GAS_PLASMA) else clear_alert("alien_tox") //Breathe in toxins and out oxygen - breath.adjust_moles(/datum/gas/plasma, -toxins_used) - breath.adjust_moles(/datum/gas/oxygen, toxins_used) + breath.adjust_moles(GAS_PLASMA, -toxins_used) + breath.adjust_moles(GAS_O2, toxins_used) //BREATH TEMPERATURE handle_breath_temperature(breath) diff --git a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm index e368489c57..547d017c23 100644 --- a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm +++ b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm @@ -37,7 +37,7 @@ if((!istype(H.w_uniform, /obj/item/clothing/under/plasmaman) || !istype(H.head, /obj/item/clothing/head/helmet/space/plasmaman)) && !atmos_sealed) if(environment) if(environment.total_moles()) - if(environment.get_moles(/datum/gas/oxygen) >= 1) //Same threshhold that extinguishes fire + if(environment.get_moles(GAS_O2) >= 1) //Same threshhold that extinguishes fire H.adjust_fire_stacks(0.5) if(!H.on_fire && H.fire_stacks > 0) H.visible_message("[H]'s body reacts with the atmosphere and bursts into flames!","Your body reacts with the atmosphere and bursts into flame!") diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index b8fa8aca44..d5f59e2441 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -165,9 +165,9 @@ var/oxygen_used = 0 var/breath_pressure = (breath.total_moles()*R_IDEAL_GAS_EQUATION*breath.return_temperature())/BREATH_VOLUME - var/O2_partialpressure = (breath.get_moles(/datum/gas/oxygen)/breath.total_moles())*breath_pressure - var/Toxins_partialpressure = (breath.get_moles(/datum/gas/plasma)/breath.total_moles())*breath_pressure - var/CO2_partialpressure = (breath.get_moles(/datum/gas/carbon_dioxide)/breath.total_moles())*breath_pressure + var/O2_partialpressure = (breath.get_moles(GAS_O2)/breath.total_moles())*breath_pressure + var/Toxins_partialpressure = (breath.get_moles(GAS_PLASMA)/breath.total_moles())*breath_pressure + var/CO2_partialpressure = (breath.get_moles(GAS_CO2)/breath.total_moles())*breath_pressure //OXYGEN @@ -191,7 +191,7 @@ var/ratio = 1 - O2_partialpressure/safe_oxy_min adjustOxyLoss(min(5*ratio, 3)) failed_last_breath = 1 - oxygen_used = breath.get_moles(/datum/gas/oxygen)*ratio + oxygen_used = breath.get_moles(GAS_O2)*ratio else adjustOxyLoss(3) failed_last_breath = 1 @@ -203,12 +203,12 @@ o2overloadtime = 0 //reset our counter for this too if(health >= crit_threshold) adjustOxyLoss(-5) - oxygen_used = breath.get_moles(/datum/gas/oxygen) + oxygen_used = breath.get_moles(GAS_O2) clear_alert("not_enough_oxy") SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "suffocation") - breath.adjust_moles(/datum/gas/oxygen, -oxygen_used) - breath.adjust_moles(/datum/gas/carbon_dioxide, oxygen_used) + breath.adjust_moles(GAS_O2, -oxygen_used) + breath.adjust_moles(GAS_CO2, oxygen_used) //CARBON DIOXIDE if(CO2_partialpressure > safe_co2_max) @@ -227,15 +227,15 @@ //TOXINS/PLASMA if(Toxins_partialpressure > safe_tox_max) - var/ratio = (breath.get_moles(/datum/gas/plasma)/safe_tox_max) * 10 + var/ratio = (breath.get_moles(GAS_PLASMA)/safe_tox_max) * 10 adjustToxLoss(clamp(ratio, MIN_TOXIC_GAS_DAMAGE, MAX_TOXIC_GAS_DAMAGE)) throw_alert("too_much_tox", /obj/screen/alert/too_much_tox) else clear_alert("too_much_tox") //NITROUS OXIDE - if(breath.get_moles(/datum/gas/nitrous_oxide)) - var/SA_partialpressure = (breath.get_moles(/datum/gas/nitrous_oxide)/breath.total_moles())*breath_pressure + if(breath.get_moles(GAS_NITROUS)) + var/SA_partialpressure = (breath.get_moles(GAS_NITROUS)/breath.total_moles())*breath_pressure if(SA_partialpressure > SA_para_min) Unconscious(60) if(SA_partialpressure > SA_sleep_min) @@ -248,26 +248,26 @@ SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "chemical_euphoria") //BZ (Facepunch port of their Agent B) - if(breath.get_moles(/datum/gas/bz)) - var/bz_partialpressure = (breath.get_moles(/datum/gas/bz)/breath.total_moles())*breath_pressure + if(breath.get_moles(GAS_BZ)) + var/bz_partialpressure = (breath.get_moles(GAS_BZ)/breath.total_moles())*breath_pressure if(bz_partialpressure > 1) hallucination += 10 else if(bz_partialpressure > 0.01) hallucination += 5 //TRITIUM - if(breath.get_moles(/datum/gas/tritium)) - var/tritium_partialpressure = (breath.get_moles(/datum/gas/tritium)/breath.total_moles())*breath_pressure + if(breath.get_moles(GAS_TRITIUM)) + var/tritium_partialpressure = (breath.get_moles(GAS_TRITIUM)/breath.total_moles())*breath_pressure radiation += tritium_partialpressure/10 //NITRYL - if(breath.get_moles(/datum/gas/nitryl)) - var/nitryl_partialpressure = (breath.get_moles(/datum/gas/nitryl)/breath.total_moles())*breath_pressure + if(breath.get_moles(GAS_NITRYL)) + var/nitryl_partialpressure = (breath.get_moles(GAS_NITRYL)/breath.total_moles())*breath_pressure adjustFireLoss(nitryl_partialpressure/4) //MIASMA - if(breath.get_moles(/datum/gas/miasma)) - var/miasma_partialpressure = (breath.get_moles(/datum/gas/miasma)/breath.total_moles())*breath_pressure + if(breath.get_moles(GAS_MIASMA)) + var/miasma_partialpressure = (breath.get_moles(GAS_MIASMA)/breath.total_moles())*breath_pressure if(miasma_partialpressure > MINIMUM_MOLES_DELTA_TO_MOVE) if(prob(0.05 * miasma_partialpressure)) @@ -365,7 +365,7 @@ var/datum/gas_mixture/stank = new - stank.set_moles(/datum/gas/miasma,0.1) + stank.set_moles(GAS_MIASMA,0.1) stank.set_temperature(BODYTEMP_NORMAL) diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index 0ce5af12b9..43a5d9c2c8 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -141,7 +141,7 @@ ExtinguishMob() return var/datum/gas_mixture/G = loc.return_air() // Check if we're standing in an oxygenless environment - if(!G.get_moles(/datum/gas/oxygen, 1)) + if(!G.get_moles(GAS_O2, 1)) ExtinguishMob() //If there's no oxygen in the tile we're on, put out the fire return var/turf/location = get_turf(src) diff --git a/code/modules/mob/living/simple_animal/hostile/tree.dm b/code/modules/mob/living/simple_animal/hostile/tree.dm index f68a6b844f..89afdf0c0d 100644 --- a/code/modules/mob/living/simple_animal/hostile/tree.dm +++ b/code/modules/mob/living/simple_animal/hostile/tree.dm @@ -49,11 +49,11 @@ if(isopenturf(loc)) var/turf/open/T = src.loc if(T.air) - var/co2 = T.air.get_moles(/datum/gas/carbon_dioxide) + var/co2 = T.air.get_moles(GAS_CO2) if(co2 > 0) if(prob(25)) var/amt = min(co2, 9) - T.air.adjust_moles(/datum/gas/carbon_dioxide, -amt) + T.air.adjust_moles(GAS_CO2, -amt) T.atmos_spawn_air("o2=[amt];TEMP=293.15") /mob/living/simple_animal/hostile/tree/AttackingTarget() diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 5fa6a0c22d..51f06e9f16 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -263,10 +263,10 @@ var/turf/open/ST = src.loc if(ST.air) - var/tox = ST.air.get_moles(/datum/gas/plasma) - var/oxy = ST.air.get_moles(/datum/gas/oxygen) - var/n2 = ST.air.get_moles(/datum/gas/nitrogen) - var/co2 = ST.air.get_moles(/datum/gas/carbon_dioxide) + var/tox = ST.air.get_moles(GAS_PLASMA) + var/oxy = ST.air.get_moles(GAS_O2) + var/n2 = ST.air.get_moles(GAS_N2) + var/co2 = ST.air.get_moles(GAS_CO2) if(atmos_requirements["min_oxy"] && oxy < atmos_requirements["min_oxy"]) . = FALSE diff --git a/code/modules/mob/living/simple_animal/slime/life.dm b/code/modules/mob/living/simple_animal/slime/life.dm index 3513a916f9..c8d5c95733 100644 --- a/code/modules/mob/living/simple_animal/slime/life.dm +++ b/code/modules/mob/living/simple_animal/slime/life.dm @@ -128,7 +128,7 @@ Tempstun = 0 if(stat != DEAD) - var/bz_percentage = environment.total_moles() ? (environment.get_moles(/datum/gas/bz) / environment.total_moles()) : 0 + var/bz_percentage = environment.total_moles() ? (environment.get_moles(GAS_BZ) / environment.total_moles()) : 0 var/stasis = (bz_percentage >= 0.05 && bodytemperature < (T0C + 100)) || force_stasis if(stat == CONSCIOUS && stasis) diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index 2d189338e5..a6b144ebe6 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -47,29 +47,29 @@ if(!loaded_tank) return if(!bitcoinmining) - if(loaded_tank.air_contents.get_moles(/datum/gas/plasma) < 0.0001) + if(loaded_tank.air_contents.get_moles(GAS_PLASMA) < 0.0001) investigate_log("out of fuel.", INVESTIGATE_SINGULO) playsound(src, 'sound/machines/ding.ogg', 50, 1) Radio.talk_into(src, "Insufficient plasma in [get_area(src)] [src], ejecting \the [loaded_tank].", FREQ_ENGINEERING) eject() else - var/gasdrained = min(powerproduction_drain*drainratio,loaded_tank.air_contents.get_moles(/datum/gas/plasma)) - loaded_tank.air_contents.adjust_moles(/datum/gas/plasma, -gasdrained) - loaded_tank.air_contents.adjust_moles(/datum/gas/tritium, gasdrained) + var/gasdrained = min(powerproduction_drain*drainratio,loaded_tank.air_contents.get_moles(GAS_PLASMA)) + loaded_tank.air_contents.adjust_moles(GAS_PLASMA, -gasdrained) + loaded_tank.air_contents.adjust_moles(GAS_TRITIUM, gasdrained) var/power_produced = RAD_COLLECTOR_OUTPUT add_avail(power_produced) stored_power-=power_produced else if(is_station_level(z) && SSresearch.science_tech) - if(!loaded_tank.air_contents.get_moles(/datum/gas/tritium) || !loaded_tank.air_contents.get_moles(/datum/gas/oxygen)) + if(!loaded_tank.air_contents.get_moles(GAS_TRITIUM) || !loaded_tank.air_contents.get_moles(GAS_O2)) playsound(src, 'sound/machines/ding.ogg', 50, 1) Radio.talk_into(src, "Insufficient oxygen and tritium in [get_area(src)] [src] to produce research points, ejecting \the [loaded_tank].", FREQ_ENGINEERING) eject() else var/gasdrained = bitcoinproduction_drain*drainratio - loaded_tank.air_contents.adjust_moles(/datum/gas/tritium, -gasdrained) - loaded_tank.air_contents.adjust_moles(/datum/gas/oxygen, -gasdrained) - loaded_tank.air_contents.adjust_moles(/datum/gas/carbon_dioxide, gasdrained*2) + loaded_tank.air_contents.adjust_moles(GAS_TRITIUM, -gasdrained) + loaded_tank.air_contents.adjust_moles(GAS_O2, -gasdrained) + loaded_tank.air_contents.adjust_moles(GAS_CO2, gasdrained*2) var/bitcoins_mined = stored_power*RAD_COLLECTOR_MINING_CONVERSION_RATE var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_ENG) if(D) @@ -84,7 +84,7 @@ toggle_power() user.visible_message("[user.name] turns the [src.name] [active? "on":"off"].", \ "You turn the [src.name] [active? "on":"off"].") - var/fuel = loaded_tank.air_contents.get_moles(/datum/gas/plasma) + var/fuel = loaded_tank.air_contents.get_moles(GAS_PLASMA) investigate_log("turned [active?"on":"off"] by [key_name(user)]. [loaded_tank?"Fuel: [round(fuel/0.29)]%":"It is empty"].", INVESTIGATE_SINGULO) return else diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 82ca7301c6..01261e5b26 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -150,71 +150,71 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) var/gas_change_rate = 0.05 ///The list of gases we will be interacting with in process_atoms() var/list/gases_we_care_about = list( - /datum/gas/oxygen, - /datum/gas/water_vapor, - /datum/gas/plasma, - /datum/gas/carbon_dioxide, - /datum/gas/nitrous_oxide, - /datum/gas/nitrogen, - /datum/gas/pluoxium, - /datum/gas/tritium, - /datum/gas/bz, + GAS_O2, + GAS_H2O, + GAS_PLASMA, + GAS_CO2, + GAS_NITROUS, + GAS_N2, + GAS_PLUOXIUM, + GAS_TRITIUM, + GAS_BZ, // /datum/gas/freon, // /datum/gas/hydrogen, ) ///The list of gases mapped against their current comp. We use this to calculate different values the supermatter uses, like power or heat resistance. It doesn't perfectly match the air around the sm, instead moving up at a rate determined by gas_change_rate per call. Ranges from 0 to 1 var/list/gas_comp = list( - /datum/gas/oxygen = 0, - /datum/gas/water_vapor = 0, - /datum/gas/plasma = 0, - /datum/gas/carbon_dioxide = 0, - /datum/gas/nitrous_oxide = 0, - /datum/gas/nitrogen = 0, - /datum/gas/pluoxium = 0, - /datum/gas/tritium = 0, - /datum/gas/bz = 0, + GAS_O2 = 0, + GAS_H2O = 0, + GAS_PLASMA = 0, + GAS_CO2 = 0, + GAS_NITROUS = 0, + GAS_N2 = 0, + GAS_PLUOXIUM = 0, + GAS_TRITIUM = 0, + GAS_BZ = 0, // /datum/gas/freon = 0, // /datum/gas/hydrogen = 0, ) ///The list of gases mapped against their transmit values. We use it to determine the effect different gases have on radiation var/list/gas_trans = list( - /datum/gas/oxygen = OXYGEN_TRANSMIT_MODIFIER, - /datum/gas/water_vapor = H2O_TRANSMIT_MODIFIER, - /datum/gas/plasma = PLASMA_TRANSMIT_MODIFIER, - /datum/gas/pluoxium = PLUOXIUM_TRANSMIT_MODIFIER, - /datum/gas/tritium = TRITIUM_TRANSMIT_MODIFIER, - /datum/gas/bz = BZ_TRANSMIT_MODIFIER, + GAS_O2 = OXYGEN_TRANSMIT_MODIFIER, + GAS_H2O = H2O_TRANSMIT_MODIFIER, + GAS_PLASMA = PLASMA_TRANSMIT_MODIFIER, + GAS_PLUOXIUM = PLUOXIUM_TRANSMIT_MODIFIER, + GAS_TRITIUM = TRITIUM_TRANSMIT_MODIFIER, + GAS_BZ = BZ_TRANSMIT_MODIFIER, // /datum/gas/hydrogen = HYDROGEN_TRANSMIT_MODIFIER, ) ///The list of gases mapped against their heat penaltys. We use it to determin molar and heat output var/list/gas_heat = list( - /datum/gas/oxygen = OXYGEN_HEAT_PENALTY, - /datum/gas/water_vapor = H2O_HEAT_PENALTY, - /datum/gas/plasma = PLASMA_HEAT_PENALTY, - /datum/gas/carbon_dioxide = CO2_HEAT_PENALTY, - /datum/gas/nitrogen = NITROGEN_HEAT_PENALTY, - /datum/gas/pluoxium = PLUOXIUM_HEAT_PENALTY, - /datum/gas/tritium = TRITIUM_HEAT_PENALTY, - /datum/gas/bz = BZ_HEAT_PENALTY, + GAS_O2 = OXYGEN_HEAT_PENALTY, + GAS_H2O = H2O_HEAT_PENALTY, + GAS_PLASMA = PLASMA_HEAT_PENALTY, + GAS_CO2 = CO2_HEAT_PENALTY, + GAS_N2 = NITROGEN_HEAT_PENALTY, + GAS_PLUOXIUM = PLUOXIUM_HEAT_PENALTY, + GAS_TRITIUM = TRITIUM_HEAT_PENALTY, + GAS_BZ = BZ_HEAT_PENALTY, // /datum/gas/freon = FREON_HEAT_PENALTY, // /datum/gas/hydrogen = HYDROGEN_HEAT_PENALTY, ) ///The list of gases mapped against their heat resistance. We use it to moderate heat damage. var/list/gas_resist = list( - /datum/gas/nitrous_oxide = N2O_HEAT_RESISTANCE, - /datum/gas/pluoxium = PLUOXIUM_HEAT_RESISTANCE, + GAS_NITROUS = N2O_HEAT_RESISTANCE, + GAS_PLUOXIUM = PLUOXIUM_HEAT_RESISTANCE, // /datum/gas/hydrogen = HYDROGEN_HEAT_RESISTANCE, ) ///The list of gases mapped against their powermix ratio var/list/gas_powermix = list( - /datum/gas/oxygen = 1, - /datum/gas/water_vapor = 1, - /datum/gas/plasma = 1, - /datum/gas/carbon_dioxide = 1, - /datum/gas/nitrogen = -1, - /datum/gas/pluoxium = -1, - /datum/gas/tritium = 1, - /datum/gas/bz = 1, + GAS_O2 = 1, + GAS_H2O = 1, + GAS_PLASMA = 1, + GAS_CO2 = 1, + GAS_N2 = -1, + GAS_PLUOXIUM = -1, + GAS_TRITIUM = 1, + GAS_BZ = 1, // /datum/gas/freon = -1, // /datum/gas/hydrogen = 1, ) @@ -538,13 +538,13 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) var/list/resistance_mod = gases_we_care_about.Copy() //We're concerned about pluoxium being too easy to abuse at low percents, so we make sure there's a substantial amount. - var/pluoxiumbonus = (gas_comp[/datum/gas/pluoxium] >= 0.15) //makes pluoxium only work at 15%+ - var/h2obonus = 1 - (gas_comp[/datum/gas/water_vapor] * 0.25)//At max this value should be 0.75 + var/pluoxiumbonus = (gas_comp[GAS_PLUOXIUM] >= 0.15) //makes pluoxium only work at 15%+ + var/h2obonus = 1 - (gas_comp[GAS_H2O] * 0.25)//At max this value should be 0.75 // var/freonbonus = (gas_comp[/datum/gas/freon] <= 0.03) //Let's just yeet power output if this shit is high - heat_mod[/datum/gas/pluoxium] = pluoxiumbonus - transit_mod[/datum/gas/pluoxium] = pluoxiumbonus - resistance_mod[/datum/gas/pluoxium] = pluoxiumbonus + heat_mod[GAS_PLUOXIUM] = pluoxiumbonus + transit_mod[GAS_PLUOXIUM] = pluoxiumbonus + resistance_mod[GAS_PLUOXIUM] = pluoxiumbonus //No less then zero, and no greater then one, we use this to do explosions and heat to power transfer //Be very careful with modifing this var by large amounts, and for the love of god do not push it past 1 @@ -578,8 +578,8 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) //Ramps up or down in increments of 0.02 up to the proportion of co2 //Given infinite time, powerloss_dynamic_scaling = co2comp //Some value between 0 and 1 - if (combined_gas > POWERLOSS_INHIBITION_MOLE_THRESHOLD && gas_comp[/datum/gas/carbon_dioxide] > POWERLOSS_INHIBITION_GAS_THRESHOLD) //If there are more then 20 mols, and more then 20% co2 - powerloss_dynamic_scaling = clamp(powerloss_dynamic_scaling + clamp(gas_comp[/datum/gas/carbon_dioxide] - powerloss_dynamic_scaling, -0.02, 0.02), 0, 1) + if (combined_gas > POWERLOSS_INHIBITION_MOLE_THRESHOLD && gas_comp[GAS_CO2] > POWERLOSS_INHIBITION_GAS_THRESHOLD) //If there are more then 20 mols, and more then 20% co2 + powerloss_dynamic_scaling = clamp(powerloss_dynamic_scaling + clamp(gas_comp[GAS_CO2] - powerloss_dynamic_scaling, -0.02, 0.02), 0, 1) else powerloss_dynamic_scaling = clamp(powerloss_dynamic_scaling - 0.05, 0, 1) //Ranges from 0 to 1(1-(value between 0 and 1 * ranges from 1 to 1.5(mol / 500))) @@ -611,8 +611,8 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) if(prob(50)) //(1 + (tritRad + pluoxDampen * bzDampen * o2Rad * plasmaRad / (10 - bzrads))) * freonbonus - radiation_pulse(src, power * max(0, (1 + (power_transmission_bonus/(10-(gas_comp[/datum/gas/bz] * BZ_RADIOACTIVITY_MODIFIER)))) * 1))//freonbonus))// RadModBZ(500%) - if(gas_comp[/datum/gas/bz] >= 0.4 && prob(30 * gas_comp[/datum/gas/bz])) + radiation_pulse(src, power * max(0, (1 + (power_transmission_bonus/(10-(gas_comp[GAS_BZ] * BZ_RADIOACTIVITY_MODIFIER)))) * 1))//freonbonus))// RadModBZ(500%) + if(gas_comp[GAS_BZ] >= 0.4 && prob(30 * gas_comp[GAS_BZ])) src.fire_nuclear_particle() // Start to emit radballs at a maximum of 30% chance per tick //Power * 0.55 * a value between 1 and 0.8 @@ -632,9 +632,9 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) //Calculate how much gas to release //Varies based on power and gas content - removed.adjust_moles(/datum/gas/plasma, max((device_energy * dynamic_heat_modifier) / PLASMA_RELEASE_MODIFIER, 0)) + removed.adjust_moles(GAS_PLASMA, max((device_energy * dynamic_heat_modifier) / PLASMA_RELEASE_MODIFIER, 0)) //Varies based on power, gas content, and heat - removed.adjust_moles(/datum/gas/oxygen, max(((device_energy + removed.return_temperature() * dynamic_heat_modifier) - T0C) / OXYGEN_RELEASE_MODIFIER, 0)) + removed.adjust_moles(GAS_O2, max(((device_energy + removed.return_temperature() * dynamic_heat_modifier) - T0C) / OXYGEN_RELEASE_MODIFIER, 0)) if(produces_gas) env.merge(removed) diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm index 1e78d81f24..65a7241b83 100644 --- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm +++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm @@ -232,8 +232,7 @@ if(holder && holder.my_atom) var/turf/open/T = get_turf(holder.my_atom) if(istype(T)) - var/datum/gas/gastype = /datum/gas/nitrogen - T.atmos_spawn_air("[initial(gastype.id)]=50;TEMP=2.7") + T.atmos_spawn_air("n2=50;TEMP=2.7") /datum/chemical_reaction/slime/slimefireproof name = "Slime Fireproof" diff --git a/code/modules/research/xenobiology/crossbreeding/chilling.dm b/code/modules/research/xenobiology/crossbreeding/chilling.dm index 5325680588..d117e6104c 100644 --- a/code/modules/research/xenobiology/crossbreeding/chilling.dm +++ b/code/modules/research/xenobiology/crossbreeding/chilling.dm @@ -100,7 +100,7 @@ Chilling extracts: for(var/turf/open/T in A) var/datum/gas_mixture/G = T.air if(istype(G)) - G.set_moles(/datum/gas/plasma, 0) + G.set_moles(GAS_PLASMA, 0) filtered = TRUE T.air_update_turf() if(filtered) diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index c94fb16add..a17a281147 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -143,12 +143,12 @@ var/gas_breathed = 0 //Partial pressures in our breath - var/O2_pp = breath.get_breath_partial_pressure(breath.get_moles(/datum/gas/oxygen))+(8*breath.get_breath_partial_pressure(breath.get_moles(/datum/gas/pluoxium))) - var/N2_pp = breath.get_breath_partial_pressure(breath.get_moles(/datum/gas/nitrogen)) - var/Toxins_pp = breath.get_breath_partial_pressure(breath.get_moles(/datum/gas/plasma)) - var/CO2_pp = breath.get_breath_partial_pressure(breath.get_moles(/datum/gas/carbon_dioxide)) - var/CH4_pp = breath.get_breath_partial_pressure(breath.get_moles(/datum/gas/methane)) - var/CH3Br_pp = breath.get_breath_partial_pressure(breath.get_moles(/datum/gas/methyl_bromide)) + var/O2_pp = breath.get_breath_partial_pressure(breath.get_moles(GAS_O2))+(8*breath.get_breath_partial_pressure(breath.get_moles(GAS_PLUOXIUM))) + var/N2_pp = breath.get_breath_partial_pressure(breath.get_moles(GAS_N2)) + var/Toxins_pp = breath.get_breath_partial_pressure(breath.get_moles(GAS_PLASMA)) + var/CO2_pp = breath.get_breath_partial_pressure(breath.get_moles(GAS_CO2)) + var/CH4_pp = breath.get_breath_partial_pressure(breath.get_moles(GAS_METHANE)) + var/CH3Br_pp = breath.get_breath_partial_pressure(breath.get_moles(GAS_METHYL_BROMIDE)) //-- OXY --// @@ -156,7 +156,7 @@ //Too much oxygen! //Yes, some species may not like it. if(safe_oxygen_max) if((O2_pp > safe_oxygen_max) && safe_oxygen_max == 0) //I guess plasma men technically need to have a check. - var/ratio = (breath.get_moles(/datum/gas/oxygen)/safe_oxygen_max) * 10 + var/ratio = (breath.get_moles(GAS_O2)/safe_oxygen_max) * 10 H.apply_damage_type(clamp(ratio, oxy_breath_dam_min, oxy_breath_dam_max), oxy_damage_type) H.throw_alert("too_much_oxy", /obj/screen/alert/too_much_oxy) @@ -179,18 +179,18 @@ //Too little oxygen! if(safe_oxygen_min) if(O2_pp < safe_oxygen_min) - gas_breathed = handle_too_little_breath(H, O2_pp, safe_oxygen_min, breath.get_moles(/datum/gas/oxygen)) + gas_breathed = handle_too_little_breath(H, O2_pp, safe_oxygen_min, breath.get_moles(GAS_O2)) H.throw_alert("not_enough_oxy", /obj/screen/alert/not_enough_oxy) else H.failed_last_breath = FALSE if(H.health >= H.crit_threshold) H.adjustOxyLoss(-breathModifier) //More damaged lungs = slower oxy rate up to a factor of half - gas_breathed = breath.get_moles(/datum/gas/oxygen) + gas_breathed = breath.get_moles(GAS_O2) H.clear_alert("not_enough_oxy") //Exhale - breath.adjust_moles(/datum/gas/oxygen, -gas_breathed) - breath.adjust_moles(/datum/gas/carbon_dioxide, gas_breathed) + breath.adjust_moles(GAS_O2, -gas_breathed) + breath.adjust_moles(GAS_CO2, gas_breathed) gas_breathed = 0 //-- Nitrogen --// @@ -198,7 +198,7 @@ //Too much nitrogen! if(safe_nitro_max) if(N2_pp > safe_nitro_max) - var/ratio = (breath.get_moles(/datum/gas/nitrogen)/safe_nitro_max) * 10 + var/ratio = (breath.get_moles(GAS_N2)/safe_nitro_max) * 10 H.apply_damage_type(clamp(ratio, nitro_breath_dam_min, nitro_breath_dam_max), nitro_damage_type) H.throw_alert("too_much_nitro", /obj/screen/alert/too_much_nitro) H.losebreath += 2 @@ -208,18 +208,18 @@ //Too little nitrogen! if(safe_nitro_min) if(N2_pp < safe_nitro_min) - gas_breathed = handle_too_little_breath(H, N2_pp, safe_nitro_min, breath.get_moles(/datum/gas/nitrogen)) + gas_breathed = handle_too_little_breath(H, N2_pp, safe_nitro_min, breath.get_moles(GAS_N2)) H.throw_alert("nitro", /obj/screen/alert/not_enough_nitro) else H.failed_last_breath = FALSE if(H.health >= H.crit_threshold) H.adjustOxyLoss(-breathModifier) - gas_breathed = breath.get_moles(/datum/gas/nitrogen) + gas_breathed = breath.get_moles(GAS_N2) H.clear_alert("nitro") //Exhale - breath.adjust_moles(/datum/gas/nitrogen, -gas_breathed) - breath.adjust_moles(/datum/gas/carbon_dioxide, gas_breathed) + breath.adjust_moles(GAS_N2, -gas_breathed) + breath.adjust_moles(GAS_CO2, gas_breathed) gas_breathed = 0 //-- CO2 --// @@ -245,18 +245,18 @@ //Too little CO2! if(safe_co2_min) if(CO2_pp < safe_co2_min) - gas_breathed = handle_too_little_breath(H, CO2_pp, safe_co2_min, breath.get_moles(/datum/gas/carbon_dioxide)) + gas_breathed = handle_too_little_breath(H, CO2_pp, safe_co2_min, breath.get_moles(GAS_CO2)) H.throw_alert("not_enough_co2", /obj/screen/alert/not_enough_co2) else H.failed_last_breath = FALSE if(H.health >= H.crit_threshold) H.adjustOxyLoss(-breathModifier) - gas_breathed = breath.get_moles(/datum/gas/carbon_dioxide) + gas_breathed = breath.get_moles(GAS_CO2) H.clear_alert("not_enough_co2") //Exhale - breath.adjust_moles(/datum/gas/carbon_dioxide, -gas_breathed) - breath.adjust_moles(/datum/gas/oxygen, gas_breathed) + breath.adjust_moles(GAS_CO2, -gas_breathed) + breath.adjust_moles(GAS_O2, gas_breathed) gas_breathed = 0 @@ -265,7 +265,7 @@ //Too much toxins! if(safe_toxins_max) if(Toxins_pp > safe_toxins_max) - var/ratio = (breath.get_moles(/datum/gas/plasma)/safe_toxins_max) * 10 + var/ratio = (breath.get_moles(GAS_PLASMA)/safe_toxins_max) * 10 H.apply_damage_type(clamp(ratio, tox_breath_dam_min, tox_breath_dam_max), tox_damage_type) H.throw_alert("too_much_tox", /obj/screen/alert/too_much_tox) else @@ -275,18 +275,18 @@ //Too little toxins! if(safe_toxins_min) if(Toxins_pp < safe_toxins_min) - gas_breathed = handle_too_little_breath(H, Toxins_pp, safe_toxins_min, breath.get_moles(/datum/gas/plasma)) + gas_breathed = handle_too_little_breath(H, Toxins_pp, safe_toxins_min, breath.get_moles(GAS_PLASMA)) H.throw_alert("not_enough_tox", /obj/screen/alert/not_enough_tox) else H.failed_last_breath = FALSE if(H.health >= H.crit_threshold) H.adjustOxyLoss(-breathModifier) - gas_breathed = breath.get_moles(/datum/gas/plasma) + gas_breathed = breath.get_moles(GAS_PLASMA) H.clear_alert("not_enough_tox") //Exhale - breath.adjust_moles(/datum/gas/plasma, -gas_breathed) - breath.adjust_moles(/datum/gas/carbon_dioxide, gas_breathed) + breath.adjust_moles(GAS_PLASMA, -gas_breathed) + breath.adjust_moles(GAS_CO2, gas_breathed) gas_breathed = 0 //-- METHANE --// @@ -294,7 +294,7 @@ //Too much methane! if(safe_methane_max) if(CH4_pp > safe_methane_max) //Same effect as excess nitrogen, generally nontoxic - var/ratio = (breath.get_moles(/datum/gas/methane)/safe_methane_max) * 10 + var/ratio = (breath.get_moles(GAS_METHANE)/safe_methane_max) * 10 H.apply_damage_type(clamp(ratio, methane_breath_dam_min, methane_breath_dam_max), methane_damage_type) H.throw_alert("too_much_ch4", /obj/screen/alert/too_much_ch4) H.losebreath += 2 @@ -303,18 +303,18 @@ //Too little methane! if(safe_methane_min) if(CH4_pp < safe_methane_min) - gas_breathed = handle_too_little_breath(H, CH4_pp, safe_methane_min, breath.get_moles(/datum/gas/methane)) + gas_breathed = handle_too_little_breath(H, CH4_pp, safe_methane_min, breath.get_moles(GAS_METHANE)) H.throw_alert("not_enough_ch4", /obj/screen/alert/not_enough_ch4) else H.failed_last_breath = FALSE if(H.health >= H.crit_threshold) H.adjustOxyLoss(-breathModifier) - gas_breathed = breath.get_moles(/datum/gas/methane) + gas_breathed = breath.get_moles(GAS_METHANE) H.clear_alert("not_enough_ch4") //Exhale - breath.adjust_moles(/datum/gas/methane, -gas_breathed) - breath.adjust_moles(/datum/gas/methyl_bromide, gas_breathed) + breath.adjust_moles(GAS_METHANE, -gas_breathed) + breath.adjust_moles(GAS_METHYL_BROMIDE, gas_breathed) gas_breathed = 0 //-- CH3BR --// @@ -333,13 +333,13 @@ //Too little methyl bromide! if(safe_ch3br_min) if(CH3Br_pp < safe_ch3br_min) - gas_breathed = handle_too_little_breath(H, CH3Br_pp, safe_ch3br_min, breath.get_moles(/datum/gas/methyl_bromide)) + gas_breathed = handle_too_little_breath(H, CH3Br_pp, safe_ch3br_min, breath.get_moles(GAS_METHYL_BROMIDE)) H.throw_alert("not_enough_ch3br", /obj/screen/alert/not_enough_ch3br) else H.failed_last_breath = FALSE if(H.health >= H.crit_threshold) H.adjustOxyLoss(-breathModifier) - gas_breathed = breath.get_moles(/datum/gas/methyl_bromide) + gas_breathed = breath.get_moles(GAS_METHYL_BROMIDE) H.clear_alert("not_enough_ch3br") //-- TRACES --// @@ -348,7 +348,7 @@ // N2O - var/SA_pp = breath.get_breath_partial_pressure(breath.get_moles(/datum/gas/nitrous_oxide)) + var/SA_pp = breath.get_breath_partial_pressure(breath.get_moles(GAS_NITROUS)) if(SA_pp > SA_para_min) // Enough to make us stunned for a bit H.Unconscious(60) // 60 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 @@ -362,7 +362,7 @@ // BZ - var/bz_pp = breath.get_breath_partial_pressure(breath.get_moles(/datum/gas/bz)) + var/bz_pp = breath.get_breath_partial_pressure(breath.get_moles(GAS_BZ)) if(bz_pp > BZ_trip_balls_min) H.hallucination += 10 H.reagents.add_reagent(/datum/reagent/bz_metabolites,5) @@ -375,14 +375,14 @@ // Tritium - var/trit_pp = breath.get_breath_partial_pressure(breath.get_moles(/datum/gas/tritium)) + var/trit_pp = breath.get_breath_partial_pressure(breath.get_moles(GAS_TRITIUM)) if (trit_pp > 50) H.radiation += trit_pp/2 //If you're breathing in half an atmosphere of radioactive gas, you fucked up. else H.radiation += trit_pp/10 // Nitryl - var/nitryl_pp = breath.get_breath_partial_pressure(breath.get_moles(/datum/gas/nitryl)) + var/nitryl_pp = breath.get_breath_partial_pressure(breath.get_moles(GAS_NITRYL)) if (prob(nitryl_pp)) to_chat(H, "Your mouth feels like it's burning!") if (nitryl_pp >40) @@ -393,22 +393,22 @@ H.silent = max(H.silent, 3) else H.adjustFireLoss(nitryl_pp/4) - gas_breathed = breath.get_moles(/datum/gas/nitryl) + gas_breathed = breath.get_moles(GAS_NITRYL) if (gas_breathed > gas_stimulation_min) H.reagents.add_reagent(/datum/reagent/nitryl,1) - breath.adjust_moles(/datum/gas/nitryl, -gas_breathed) + breath.adjust_moles(GAS_NITRYL, -gas_breathed) // Stimulum - gas_breathed = breath.get_moles(/datum/gas/stimulum) + gas_breathed = breath.get_moles(GAS_STIMULUM) if (gas_breathed > gas_stimulation_min) var/existing = H.reagents.get_reagent_amount(/datum/reagent/stimulum) H.reagents.add_reagent(/datum/reagent/stimulum, max(0, 5 - existing)) - breath.adjust_moles(/datum/gas/stimulum, -gas_breathed) + breath.adjust_moles(GAS_STIMULUM, -gas_breathed) // Miasma - if (breath.get_moles(/datum/gas/miasma)) - var/miasma_pp = breath.get_breath_partial_pressure(breath.get_moles(/datum/gas/miasma)) + if (breath.get_moles(GAS_MIASMA)) + var/miasma_pp = breath.get_breath_partial_pressure(breath.get_moles(GAS_MIASMA)) if(miasma_pp > MINIMUM_MOLES_DELTA_TO_MOVE) //Miasma sickness @@ -448,7 +448,7 @@ // Then again, this is a purely hypothetical scenario and hardly reachable owner.adjust_disgust(0.1 * miasma_pp) - breath.adjust_moles(/datum/gas/miasma, -gas_breathed) + breath.adjust_moles(GAS_MIASMA, -gas_breathed) // Clear out moods when no miasma at all else @@ -624,7 +624,7 @@ /obj/item/organ/lungs/slime/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/H) . = ..() if (breath) - var/plasma_pp = breath.get_breath_partial_pressure(breath.get_moles(/datum/gas/plasma)) + var/plasma_pp = breath.get_breath_partial_pressure(breath.get_moles(GAS_PLASMA)) owner.blood_volume += (0.2 * plasma_pp) // 10/s when breathing literally nothing but plasma, which will suffocate you. /obj/item/organ/lungs/yamerol