From ba8dbfb5914f6f643a27bc4052524b2dab65cf10 Mon Sep 17 00:00:00 2001
From: Ghilker <42839747+Ghilker@users.noreply.github.com>
Date: Wed, 17 Nov 2021 10:56:19 +0100
Subject: [PATCH] nitryl and stimulum merge in nitrium (#62061)
This PR is the first of a few were i'll be merging similar working gases into one.
This time is Nitryl and Stimulum. They'll be merged into Nitrium , a brown gas with both features of the two gases
The main scope is to add dept to atmos by removing bloated content and/or repeated content that has never seen the lights of the day (how many times have you seen both gases made and used at the same time?)
The PR so far:
-removed nitryl
-removed stimulum
-merged them into Nitrium (Nitrium is now made with trit, nitrogen and bz from a minimum temperature of 1500 K)
-made Nitrium have both gases features such as fast movements and sleep and stun immunity but increased damage taken
-Nitrium can make crystals that spread the chemicals with a cloud (is still far more efficient to just breathe the gas)
Less rare gases, going towards a better atmos gameplay loop
---
.../atmospherics/atmos_mapping_helpers.dm | 13 +--
code/__DEFINES/reactions.dm | 10 +-
code/game/machinery/computer/atmos_control.dm | 31 ++----
.../circuitboards/computer_circuitboards.dm | 10 +-
code/game/objects/items/nitrium_crystals.dm | 18 ++++
code/game/turfs/open/floor/reinf_floor.dm | 11 +-
.../atmospherics/gasmixtures/gas_types.dm | 25 ++---
.../atmospherics/gasmixtures/reactions.dm | 97 ++++++------------
.../atmospherics/machinery/airalarm.dm | 12 +--
.../components/fusion/hfr_fuel_datums.dm | 2 +-
.../components/fusion/hfr_main_processes.dm | 24 ++---
.../atmos_machines_recipes.dm | 12 ++-
.../atmospherics/machinery/components/tank.dm | 7 +-
.../components/trinary_devices/filter.dm | 14 +--
.../unary_devices/outlet_injector.dm | 9 +-
.../components/unary_devices/vent_pump.dm | 9 +-
.../atmospherics/machinery/other/miner.dm | 11 +-
.../machinery/portable/canister.dm | 18 +---
.../machinery/portable/scrubber.dm | 2 +-
code/modules/cargo/bounties/engineering.dm | 8 +-
code/modules/cargo/exports/large_objects.dm | 2 +-
code/modules/clothing/masks/gas_filter.dm | 3 +-
code/modules/mob/living/carbon/life.dm | 11 +-
code/modules/movespeed/modifiers/reagent.dm | 2 +-
.../chemistry/reagents/other_reagents.dm | 42 ++++----
code/modules/surgery/organs/lungs.dm | 33 +++---
icons/effects/atmospherics.dmi | Bin 25569 -> 25569 bytes
icons/obj/atmos.dmi | Bin 16432 -> 16736 bytes
tgstation.dme | 1 +
tgui/packages/tgui/constants.js | 10 +-
30 files changed, 182 insertions(+), 265 deletions(-)
create mode 100644 code/game/objects/items/nitrium_crystals.dm
diff --git a/code/__DEFINES/atmospherics/atmos_mapping_helpers.dm b/code/__DEFINES/atmospherics/atmos_mapping_helpers.dm
index 5f3c14e9220..75ad188d8de 100644
--- a/code/__DEFINES/atmospherics/atmos_mapping_helpers.dm
+++ b/code/__DEFINES/atmospherics/atmos_mapping_helpers.dm
@@ -26,10 +26,9 @@
#define ATMOS_TANK_H2 "hydrogen=100000;TEMP=293.15"
#define ATMOS_TANK_HYPERNOBLIUM "nob=100000;TEMP=293.15"
#define ATMOS_TANK_MIASMA "miasma=100000;TEMP=293.15"
-#define ATMOS_TANK_NO2 "no2=100000;TEMP=293.15"
+#define ATMOS_TANK_NITRIUM "nitrium=100000;TEMP=293.15"
#define ATMOS_TANK_PLUOXIUM "pluox=100000;TEMP=293.15"
#define ATMOS_TANK_PROTO_NITRATE "proto_nitrate=100000;TEMP=293.15"
-#define ATMOS_TANK_STIMULUM "stim=100000;TEMP=293.15"
#define ATMOS_TANK_TRITIUM "tritium=100000;TEMP=293.15"
#define ATMOS_TANK_H2O "water_vapor=100000;TEMP=293.15"
#define ATMOS_TANK_ZAUKER "zauker=100000;TEMP=293.15"
@@ -102,9 +101,9 @@
#define ATMOS_GAS_MONITOR_OUTPUT_MIASMA "miasma_out"
#define ATMOS_GAS_MONITOR_SENSOR_MIASMA "miasma_sensor"
-#define ATMOS_GAS_MONITOR_INPUT_NO2 "no2_in"
-#define ATMOS_GAS_MONITOR_OUTPUT_NO2 "no2_out"
-#define ATMOS_GAS_MONITOR_SENSOR_NO2 "no2_sensor"
+#define ATMOS_GAS_MONITOR_INPUT_NITRIUM "nitrium_in"
+#define ATMOS_GAS_MONITOR_OUTPUT_NITRIUM "nitrium_out"
+#define ATMOS_GAS_MONITOR_SENSOR_NITRIUM "nitrium_sensor"
#define ATMOS_GAS_MONITOR_INPUT_PLUOXIUM "pluoxium_in"
#define ATMOS_GAS_MONITOR_OUTPUT_PLUOXIUM "pluoxium_out"
@@ -114,10 +113,6 @@
#define ATMOS_GAS_MONITOR_OUTPUT_PROTO_NITRATE "proto-nitrate_out"
#define ATMOS_GAS_MONITOR_SENSOR_PROTO_NITRATE "proto-nitrate_sensor"
-#define ATMOS_GAS_MONITOR_INPUT_STIMULUM "stimulum_in"
-#define ATMOS_GAS_MONITOR_OUTPUT_STIMULUM "stimulum_out"
-#define ATMOS_GAS_MONITOR_SENSOR_STIMULUM "stimulum_sensor"
-
#define ATMOS_GAS_MONITOR_INPUT_TRITIUM "tritium_in"
#define ATMOS_GAS_MONITOR_OUTPUT_TRITIUM "tritium_out"
#define ATMOS_GAS_MONITOR_SENSOR_TRITIUM "tritium_sensor"
diff --git a/code/__DEFINES/reactions.dm b/code/__DEFINES/reactions.dm
index b1bb4ef5f86..5f067667c80 100644
--- a/code/__DEFINES/reactions.dm
+++ b/code/__DEFINES/reactions.dm
@@ -19,8 +19,8 @@
#define N2O_DECOMPOSITION_MIN_ENERGY 1400
#define N2O_DECOMPOSITION_ENERGY_RELEASED 200000
-#define NITRYL_DECOMPOSITION_ENERGY 30000
-#define NITRYL_FORMATION_ENERGY 100000
+#define NITRIUM_DECOMPOSITION_ENERGY 30000
+#define NITRIUM_FORMATION_ENERGY 100000
#define NITROUS_FORMATION_ENERGY 10000
//tritium reaction
#define TRITIUM_BURN_OXY_FACTOR 100
@@ -39,11 +39,6 @@
#define METAL_HYDROGEN_MINIMUM_PRESSURE 1e7
#define METAL_HYDROGEN_FORMATION_ENERGY 20000000
#define SUPER_SATURATION_THRESHOLD 96
-#define STIMULUM_HEAT_SCALE 100000
-#define STIMULUM_FIRST_RISE 0.65
-#define STIMULUM_FIRST_DROP 0.065
-#define STIMULUM_SECOND_RISE 0.0009
-#define STIMULUM_ABSOLUTE_DROP 0.00000335
#define REACTION_OPPRESSION_THRESHOLD 5
#define NOBLIUM_FORMATION_ENERGY 2e7
#define STIM_BALL_GAS_AMOUNT 5
@@ -52,7 +47,6 @@
#define BZ_RESEARCH_SCALE 4
#define BZ_RESEARCH_MAX_AMOUNT 400
#define METAL_HYDROGEN_RESEARCH_MAX_AMOUNT 3000
-#define STIMULUM_RESEARCH_AMOUNT 50
#define PLUOXIUM_TEMP_CAP 200
diff --git a/code/game/machinery/computer/atmos_control.dm b/code/game/machinery/computer/atmos_control.dm
index b8628194002..7ab28b03a50 100644
--- a/code/game/machinery/computer/atmos_control.dm
+++ b/code/game/machinery/computer/atmos_control.dm
@@ -58,18 +58,15 @@
/obj/machinery/air_sensor/atmos/miasma_tank
name = "miasma tank gas sensor"
id_tag = ATMOS_GAS_MONITOR_SENSOR_MIASMA
-/obj/machinery/air_sensor/atmos/nitryl_tank
- name = "nitryl tank gas sensor"
- id_tag = ATMOS_GAS_MONITOR_SENSOR_NO2
+/obj/machinery/air_sensor/atmos/nitrium_tank
+ name = "nitrium tank gas sensor"
+ id_tag = ATMOS_GAS_MONITOR_SENSOR_NITRIUM
/obj/machinery/air_sensor/atmos/pluoxium_tank
name = "pluoxium tank gas sensor"
id_tag = ATMOS_GAS_MONITOR_SENSOR_PLUOXIUM
/obj/machinery/air_sensor/atmos/proto_nitrate_tank
name = "proto-nitrate tank gas sensor"
id_tag = ATMOS_GAS_MONITOR_SENSOR_PROTO_NITRATE
-/obj/machinery/air_sensor/atmos/stimulum_tank
- name = "stimulum tank gas sensor"
- id_tag = ATMOS_GAS_MONITOR_SENSOR_STIMULUM
/obj/machinery/air_sensor/atmos/tritium_tank
name = "tritium tank gas sensor"
id_tag = ATMOS_GAS_MONITOR_SENSOR_TRITIUM
@@ -158,10 +155,9 @@ GLOBAL_LIST_EMPTY(atmos_air_controllers)
ATMOS_GAS_MONITOR_SENSOR_H2 = "Hydrogen Tank",
ATMOS_GAS_MONITOR_SENSOR_HYPERNOBLIUM = "Hypernoblium Tank",
ATMOS_GAS_MONITOR_SENSOR_MIASMA = "Miasma Tank",
- ATMOS_GAS_MONITOR_SENSOR_NO2 = "Nitryl Tank",
+ ATMOS_GAS_MONITOR_SENSOR_NITRIUM = "Nitrium Tank",
ATMOS_GAS_MONITOR_SENSOR_PLUOXIUM = "Pluoxium Tank",
ATMOS_GAS_MONITOR_SENSOR_PROTO_NITRATE = "Proto-Nitrate Tank",
- ATMOS_GAS_MONITOR_SENSOR_STIMULUM = "Stimulum Tank",
ATMOS_GAS_MONITOR_SENSOR_TRITIUM = "Tritium Tank",
ATMOS_GAS_MONITOR_SENSOR_H2O = "Water Vapor Tank",
ATMOS_GAS_MONITOR_SENSOR_ZAUKER = "Zauker Tank",
@@ -345,12 +341,12 @@ GLOBAL_LIST_EMPTY(atmos_air_controllers)
sensors = list(ATMOS_GAS_MONITOR_SENSOR_MIASMA = "Miasma Tank")
circuit = /obj/item/circuitboard/computer/atmos_control/tank/miasma_tank
-/obj/machinery/computer/atmos_control/tank/nitryl_tank
- name = "Nitryl Supply Control"
- input_tag = ATMOS_GAS_MONITOR_INPUT_NO2
- output_tag = ATMOS_GAS_MONITOR_OUTPUT_NO2
- sensors = list(ATMOS_GAS_MONITOR_SENSOR_NO2 = "Nitryl Tank")
- circuit = /obj/item/circuitboard/computer/atmos_control/tank/nitryl_tank
+/obj/machinery/computer/atmos_control/tank/nitrium_tank
+ name = "Nitrium Supply Control"
+ input_tag = ATMOS_GAS_MONITOR_INPUT_NITRIUM
+ output_tag = ATMOS_GAS_MONITOR_OUTPUT_NITRIUM
+ sensors = list(ATMOS_GAS_MONITOR_SENSOR_NITRIUM = "Nitrium Tank")
+ circuit = /obj/item/circuitboard/computer/atmos_control/tank/nitrium_tank
/obj/machinery/computer/atmos_control/tank/pluoxium_tank
name = "Pluoxium Supply Control"
@@ -366,13 +362,6 @@ GLOBAL_LIST_EMPTY(atmos_air_controllers)
sensors = list(ATMOS_GAS_MONITOR_SENSOR_PROTO_NITRATE = "Proto-Nitrate Tank")
circuit = /obj/item/circuitboard/computer/atmos_control/tank/proto_nitrate_tank
-/obj/machinery/computer/atmos_control/tank/stimulum_tank
- name = "Stimulum Supply Control"
- input_tag = ATMOS_GAS_MONITOR_INPUT_STIMULUM
- output_tag = ATMOS_GAS_MONITOR_OUTPUT_STIMULUM
- sensors = list(ATMOS_GAS_MONITOR_SENSOR_STIMULUM = "Stimulum Tank")
- circuit = /obj/item/circuitboard/computer/atmos_control/tank/stimulum_tank
-
/obj/machinery/computer/atmos_control/tank/tritium_tank
name = "Tritium Supply Control"
input_tag = ATMOS_GAS_MONITOR_INPUT_TRITIUM
diff --git a/code/game/objects/items/circuitboards/computer_circuitboards.dm b/code/game/objects/items/circuitboards/computer_circuitboards.dm
index f7fe1424ca5..87131360df6 100644
--- a/code/game/objects/items/circuitboards/computer_circuitboards.dm
+++ b/code/game/objects/items/circuitboards/computer_circuitboards.dm
@@ -104,9 +104,9 @@
name = "Miasma Supply Control (Computer Board)"
build_path = /obj/machinery/computer/atmos_control/tank/miasma_tank
-/obj/item/circuitboard/computer/atmos_control/tank/nitryl_tank
- name = "Nitryl Supply Control (Computer Board)"
- build_path = /obj/machinery/computer/atmos_control/tank/nitryl_tank
+/obj/item/circuitboard/computer/atmos_control/tank/nitrium_tank
+ name = "Nitrium Supply Control (Computer Board)"
+ build_path = /obj/machinery/computer/atmos_control/tank/nitrium_tank
/obj/item/circuitboard/computer/atmos_control/tank/pluoxium_tank
name = "Pluoxium Supply Control (Computer Board)"
@@ -116,10 +116,6 @@
name = "Proto-Nitrate Supply Control (Computer Board)"
build_path = /obj/machinery/computer/atmos_control/tank/proto_nitrate_tank
-/obj/item/circuitboard/computer/atmos_control/tank/stimulum_tank
- name = "Stimulum Supply Control (Computer Board)"
- build_path = /obj/machinery/computer/atmos_control/tank/stimulum_tank
-
/obj/item/circuitboard/computer/atmos_control/tank/tritium_tank
name = "Tritium Supply Control (Computer Board)"
build_path = /obj/machinery/computer/atmos_control/tank/tritium_tank
diff --git a/code/game/objects/items/nitrium_crystals.dm b/code/game/objects/items/nitrium_crystals.dm
new file mode 100644
index 00000000000..b81a96bca18
--- /dev/null
+++ b/code/game/objects/items/nitrium_crystals.dm
@@ -0,0 +1,18 @@
+/obj/item/nitrium_crystal
+ desc = "A weird brown crystal, it smokes when broken"
+ name = "nitrium crystal"
+ icon = 'icons/obj/atmos.dmi'
+ icon_state = "nitrium_crystal"
+ var/cloud_size = 1
+
+/obj/item/nitrium_crystal/attack_self(mob/user)
+ . = ..()
+ var/datum/effect_system/smoke_spread/chem/smoke = new
+ var/turf/location = get_turf(src)
+ create_reagents(5)
+ reagents.add_reagent(/datum/reagent/nitrium_low_metabolization, 3)
+ reagents.add_reagent(/datum/reagent/nitrium_high_metabolization, 2)
+ smoke.attach(location)
+ smoke.set_up(reagents, cloud_size, location, silent = TRUE)
+ smoke.start()
+ qdel(src)
diff --git a/code/game/turfs/open/floor/reinf_floor.dm b/code/game/turfs/open/floor/reinf_floor.dm
index 6c3670e42ee..3b201bf6d65 100644
--- a/code/game/turfs/open/floor/reinf_floor.dm
+++ b/code/game/turfs/open/floor/reinf_floor.dm
@@ -149,10 +149,9 @@
name = "\improper Miasma floor"
initial_gas_mix = ATMOS_TANK_MIASMA
-/turf/open/floor/engine/no2
- article = "an"
- name = "\improper NO2 floor"
- initial_gas_mix = ATMOS_TANK_NO2
+/turf/open/floor/engine/nitrium
+ name = "\improper nitrium floor"
+ initial_gas_mix = ATMOS_TANK_NITRIUM
/turf/open/floor/engine/pluoxium
name = "\improper Pluoxium floor"
@@ -162,10 +161,6 @@
name = "\improper Proto-Nitrate floor"
initial_gas_mix = ATMOS_TANK_PROTO_NITRATE
-/turf/open/floor/engine/stimulum
- name = "\improper Stimulum floor"
- initial_gas_mix = ATMOS_TANK_STIMULUM
-
/turf/open/floor/engine/tritium
name = "\improper Tritium floor"
initial_gas_mix = ATMOS_TANK_TRITIUM
diff --git a/code/modules/atmospherics/gasmixtures/gas_types.dm b/code/modules/atmospherics/gasmixtures/gas_types.dm
index 875fe2caef6..de2c8482f1a 100644
--- a/code/modules/atmospherics/gasmixtures/gas_types.dm
+++ b/code/modules/atmospherics/gasmixtures/gas_types.dm
@@ -1,6 +1,6 @@
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
//Now this is what I call history
-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(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/gas/nitrogen, /datum/gas/carbon_dioxide, /datum/gas/pluoxium))) //unable to react amongst themselves
/proc/meta_gas_list()
. = subtypesof(/datum/gas)
@@ -121,15 +121,16 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g
purchaseable = TRUE
base_value = 3
-/datum/gas/nitryl
- id = "no2"
- specific_heat = 20
- name = "Nitryl"
- gas_overlay = "nitryl"
+/datum/gas/nitrium
+ id = "nitrium"
+ specific_heat = 10
+ name = "Nitrium"
+ fusion_power = 7
+ gas_overlay = "nitrium"
moles_visible = MOLES_GAS_VISIBLE
dangerous = TRUE
- rarity = 100
- base_value = 5
+ rarity = 1
+ base_value = 100
/datum/gas/tritium
id = "tritium"
@@ -152,14 +153,6 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g
purchaseable = TRUE
base_value = 2
-/datum/gas/stimulum
- id = "stim"
- specific_heat = 5
- name = "Stimulum"
- fusion_power = 7
- rarity = 1
- base_value = 100
-
/datum/gas/pluoxium
id = "pluox"
specific_heat = 80
diff --git a/code/modules/atmospherics/gasmixtures/reactions.dm b/code/modules/atmospherics/gasmixtures/reactions.dm
index b3f10328785..e63315fa5cd 100644
--- a/code/modules/atmospherics/gasmixtures/reactions.dm
+++ b/code/modules/atmospherics/gasmixtures/reactions.dm
@@ -401,32 +401,33 @@
air.temperature = max(((temperature * old_heat_capacity + energy_used) / new_heat_capacity), TCMB) //the air heats up when reacting
return REACTING
-/datum/gas_reaction/nitryl_decomposition //The decomposition of nitryl. Exothermic. Requires oxygen as catalyst.
+/datum/gas_reaction/nitrium_decomposition //The decomposition of nitrium. Exothermic. Requires oxygen as catalyst.
priority_group = PRIORITY_PRE_FORMATION
- name = "Nitryl Decomposition"
- id = "nitryl_decomp"
+ name = "Nitrium Decomposition"
+ id = "nitrium_decomp"
-/datum/gas_reaction/nitryl_decomposition/init_reqs()
+/datum/gas_reaction/nitrium_decomposition/init_reqs()
requirements = list(
/datum/gas/oxygen = MINIMUM_MOLE_COUNT,
- /datum/gas/nitryl = MINIMUM_MOLE_COUNT,
+ /datum/gas/nitrium = MINIMUM_MOLE_COUNT,
"MAX_TEMP" = T0C + 70 //Pretty warm, explicitly not fire temps. Time bombs are cool, but not that cool. If it makes you feel any better it's close
)
-/datum/gas_reaction/nitryl_decomposition/react(datum/gas_mixture/air)
+/datum/gas_reaction/nitrium_decomposition/react(datum/gas_mixture/air)
var/list/cached_gases = air.gases
var/temperature = air.temperature
var/old_heat_capacity = air.heat_capacity()
- //This reaction is agressively slow. like, a tenth of a mole per fire slow. Keep that in mind
- var/heat_efficency = min(temperature / (FIRE_MINIMUM_TEMPERATURE_TO_EXIST * 8), cached_gases[/datum/gas/nitryl][MOLES])
- var/energy_produced = heat_efficency * NITRYL_DECOMPOSITION_ENERGY
- if ((cached_gases[/datum/gas/nitryl][MOLES] - heat_efficency < 0)) //Shouldn't produce gas from nothing.
+ //This reaction is agressively slow. like, a tenth of a mole per fire slow. Keep that in mind
+ var/heat_efficency = min(temperature / (FIRE_MINIMUM_TEMPERATURE_TO_EXIST * 8), cached_gases[/datum/gas/nitrium][MOLES])
+ var/energy_produced = heat_efficency * NITRIUM_DECOMPOSITION_ENERGY
+
+ if ((cached_gases[/datum/gas/nitrium][MOLES] - heat_efficency < 0)) //Shouldn't produce gas from nothing.
return NO_REACTION
- ASSERT_GAS(/datum/gas/nitrogen, air)
- cached_gases[/datum/gas/nitryl][MOLES] -= heat_efficency
- cached_gases[/datum/gas/oxygen][MOLES] += heat_efficency
+ air.assert_gases(/datum/gas/nitrogen, /datum/gas/hydrogen)
+ cached_gases[/datum/gas/nitrium][MOLES] -= heat_efficency
+ cached_gases[/datum/gas/hydrogen][MOLES] += heat_efficency
cached_gases[/datum/gas/nitrogen][MOLES] += heat_efficency
if(energy_produced> 0)
@@ -435,36 +436,34 @@
air.temperature = max(((temperature * old_heat_capacity + energy_produced) / new_heat_capacity), TCMB) //the air heats up when reacting
return REACTING
-/datum/gas_reaction/nitrylformation //The formation of nitryl. Endothermic. Requires bz.
+/datum/gas_reaction/nitrium_formation //The formation of nitrium. Endothermic. Requires bz.
priority_group = PRIORITY_FORMATION
- name = "Nitryl formation"
- id = "nitrylformation"
+ name = "Nitrium formation"
+ id = "nitrium_formation"
-/datum/gas_reaction/nitrylformation/init_reqs()
+/datum/gas_reaction/nitrium_formation/init_reqs()
requirements = list(
- /datum/gas/oxygen = 10,
+ /datum/gas/tritium = 20,
/datum/gas/nitrogen = 10,
/datum/gas/bz = 5,
- "MIN_TEMP" = 1500,
- "MAX_TEMP" = 10000
+ "MIN_TEMP" = 1500
)
-/datum/gas_reaction/nitrylformation/react(datum/gas_mixture/air)
+/datum/gas_reaction/nitrium_formation/react(datum/gas_mixture/air)
var/list/cached_gases = air.gases
var/temperature = air.temperature
var/old_heat_capacity = air.heat_capacity()
- var/heat_efficency = min(temperature / (FIRE_MINIMUM_TEMPERATURE_TO_EXIST * 8), cached_gases[/datum/gas/oxygen][MOLES], cached_gases[/datum/gas/nitrogen][MOLES], cached_gases[/datum/gas/bz][MOLES] * INVERSE(0.05))
- var/energy_used = heat_efficency * NITRYL_FORMATION_ENERGY
- ASSERT_GAS(/datum/gas/nitryl, air)
- if ((cached_gases[/datum/gas/oxygen][MOLES] - heat_efficency < 0 ) || (cached_gases[/datum/gas/nitrogen][MOLES] - heat_efficency < 0) || (cached_gases[/datum/gas/bz][MOLES] - heat_efficency * 0.05 < 0)) //Shouldn't produce gas from nothing.
+ var/heat_efficency = min(temperature / (FIRE_MINIMUM_TEMPERATURE_TO_EXIST * 8), cached_gases[/datum/gas/tritium][MOLES], cached_gases[/datum/gas/nitrogen][MOLES], cached_gases[/datum/gas/bz][MOLES] * INVERSE(0.05))
+ var/energy_used = heat_efficency * NITRIUM_FORMATION_ENERGY
+ ASSERT_GAS(/datum/gas/nitrium, air)
+ if ((cached_gases[/datum/gas/tritium][MOLES] - heat_efficency < 0 ) || (cached_gases[/datum/gas/nitrogen][MOLES] - heat_efficency < 0) || (cached_gases[/datum/gas/bz][MOLES] - heat_efficency * 0.05 < 0)) //Shouldn't produce gas from nothing.
return NO_REACTION
- ASSERT_GAS(/datum/gas/nitryl, air)
- cached_gases[/datum/gas/oxygen][MOLES] -= heat_efficency
+ cached_gases[/datum/gas/tritium][MOLES] -= heat_efficency
cached_gases[/datum/gas/nitrogen][MOLES] -= heat_efficency
- cached_gases[/datum/gas/bz][MOLES] -= heat_efficency * 0.05 //bz gets consumed to balance the nitryl production and not make it too common and/or easy
- cached_gases[/datum/gas/nitryl][MOLES] += heat_efficency
+ cached_gases[/datum/gas/bz][MOLES] -= heat_efficency * 0.05 //bz gets consumed to balance the nitrium production and not make it too common and/or easy
+ cached_gases[/datum/gas/nitrium][MOLES] += heat_efficency
if(energy_used > 0)
var/new_heat_capacity = air.heat_capacity()
@@ -542,38 +541,6 @@
air.temperature = max(((temperature * old_heat_capacity - energy_used)/new_heat_capacity), TCMB)
return REACTING
-/datum/gas_reaction/stimformation //Stimulum formation follows a strange pattern of how effective it will be at a given temperature, having some multiple peaks and some large dropoffs. Exo and endo thermic.
- priority_group = PRIORITY_FORMATION
- name = "Stimulum formation"
- id = "stimformation"
-
-/datum/gas_reaction/stimformation/init_reqs()
- requirements = list(
- /datum/gas/tritium = 30,
- /datum/gas/bz = 20,
- /datum/gas/nitryl = 30,
- /datum/gas/plasma = MINIMUM_MOLE_COUNT,
- "MIN_TEMP" = 1500)
-
-/datum/gas_reaction/stimformation/react(datum/gas_mixture/air)
- var/list/cached_gases = air.gases
-
- var/old_heat_capacity = air.heat_capacity()
- var/heat_scale = min(air.temperature/STIMULUM_HEAT_SCALE, cached_gases[/datum/gas/tritium][MOLES], cached_gases[/datum/gas/plasma][MOLES], cached_gases[/datum/gas/nitryl][MOLES])
- 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)
- ASSERT_GAS(/datum/gas/stimulum, air)
- if ((cached_gases[/datum/gas/tritium][MOLES] - heat_scale < 0 ) || (cached_gases[/datum/gas/nitryl][MOLES] - heat_scale < 0)) //Shouldn't produce gas from nothing.
- return NO_REACTION
- cached_gases[/datum/gas/tritium][MOLES] -= heat_scale
- cached_gases[/datum/gas/nitryl][MOLES] -= heat_scale
- cached_gases[/datum/gas/stimulum][MOLES] += heat_scale * 0.75
-
- if(stim_energy_change)
- var/new_heat_capacity = air.heat_capacity()
- if(new_heat_capacity > MINIMUM_HEAT_CAPACITY)
- air.temperature = max(((air.temperature * old_heat_capacity + stim_energy_change) / new_heat_capacity), TCMB)
- return REACTING
-
/datum/gas_reaction/nobliumformation //Hyper-Noblium formation is extrememly endothermic, but requires high temperatures to start. Due to its high mass, hyper-nobelium uses large amounts of nitrogen and tritium. BZ can be used as a catalyst to make it less endothermic.
priority_group = PRIORITY_FORMATION
name = "Hyper-Noblium condensation"
@@ -739,7 +706,7 @@
/datum/gas_reaction/zauker_formation/init_reqs()
requirements = list(
/datum/gas/hypernoblium = MINIMUM_MOLE_COUNT,
- /datum/gas/stimulum = MINIMUM_MOLE_COUNT,
+ /datum/gas/nitrium = MINIMUM_MOLE_COUNT,
"MIN_TEMP" = 50000,
"MAX_TEMP" = 75000
)
@@ -748,13 +715,13 @@
var/list/cached_gases = air.gases
var/temperature = air.temperature
var/old_heat_capacity = air.heat_capacity()
- var/heat_efficency = min(temperature * 0.000005, cached_gases[/datum/gas/hypernoblium][MOLES] * INVERSE(0.01), cached_gases[/datum/gas/stimulum][MOLES] * INVERSE(0.5))
+ var/heat_efficency = min(temperature * 0.000005, cached_gases[/datum/gas/hypernoblium][MOLES] * INVERSE(0.01), cached_gases[/datum/gas/nitrium][MOLES] * INVERSE(0.5))
var/energy_used = heat_efficency * 5000
ASSERT_GAS(/datum/gas/zauker, air)
- if ((cached_gases[/datum/gas/hypernoblium][MOLES] - heat_efficency * 0.01 < 0 ) || (cached_gases[/datum/gas/stimulum][MOLES] - heat_efficency * 0.5 < 0)) //Shouldn't produce gas from nothing.
+ if ((cached_gases[/datum/gas/hypernoblium][MOLES] - heat_efficency * 0.01 < 0 ) || (cached_gases[/datum/gas/nitrium][MOLES] - heat_efficency * 0.5 < 0)) //Shouldn't produce gas from nothing.
return NO_REACTION
cached_gases[/datum/gas/hypernoblium][MOLES] -= heat_efficency * 0.01
- cached_gases[/datum/gas/stimulum][MOLES] -= heat_efficency * 0.5
+ cached_gases[/datum/gas/nitrium][MOLES] -= heat_efficency * 0.5
cached_gases[/datum/gas/zauker][MOLES] += heat_efficency * 0.5
if(energy_used)
diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm
index 2931d0a9593..971995b352c 100644
--- a/code/modules/atmospherics/machinery/airalarm.dm
+++ b/code/modules/atmospherics/machinery/airalarm.dm
@@ -107,8 +107,7 @@
/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/dangerous,
- /datum/gas/nitryl = new/datum/tlv/dangerous,
+ /datum/gas/nitrium = 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/freon = new/datum/tlv/dangerous,
/datum/gas/hydrogen = new/datum/tlv/dangerous,
@@ -454,10 +453,9 @@
/datum/gas/water_vapor,
/datum/gas/hypernoblium,
/datum/gas/nitrous_oxide,
- /datum/gas/nitryl,
+ /datum/gas/nitrium,
/datum/gas/tritium,
/datum/gas/bz,
- /datum/gas/stimulum,
/datum/gas/pluoxium,
/datum/gas/freon,
/datum/gas/hydrogen,
@@ -817,8 +815,7 @@
/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/nitrium = new/datum/tlv/no_checks,
/datum/gas/pluoxium = new/datum/tlv/no_checks,
/datum/gas/freon = new/datum/tlv/no_checks,
/datum/gas/hydrogen = new/datum/tlv/no_checks,
@@ -844,8 +841,7 @@
/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/dangerous,
- /datum/gas/nitryl = new/datum/tlv/dangerous,
+ /datum/gas/nitrium = 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/freon = new/datum/tlv/dangerous,
/datum/gas/hydrogen = new/datum/tlv/dangerous,
diff --git a/code/modules/atmospherics/machinery/components/fusion/hfr_fuel_datums.dm b/code/modules/atmospherics/machinery/components/fusion/hfr_fuel_datums.dm
index 33eb2ab5838..c7a9545a7d2 100644
--- a/code/modules/atmospherics/machinery/components/fusion/hfr_fuel_datums.dm
+++ b/code/modules/atmospherics/machinery/components/fusion/hfr_fuel_datums.dm
@@ -136,5 +136,5 @@ GLOBAL_LIST_INIT(hfr_fuels_list, hfr_fuels_create_list())
temperature_change_multiplier = 1
requirements = list(/datum/gas/hypernoblium, /datum/gas/antinoblium)
primary_products = list(/datum/gas/helium)
- secondary_products = list(/datum/gas/plasma, /datum/gas/oxygen, /datum/gas/nitrogen, /datum/gas/proto_nitrate, /datum/gas/stimulum, /datum/gas/miasma)
+ secondary_products = list(/datum/gas/plasma, /datum/gas/oxygen, /datum/gas/nitrogen, /datum/gas/proto_nitrate, /datum/gas/nitrium, /datum/gas/miasma)
meltdown_flags = HYPERTORUS_FLAG_DEVASTATING_EXPLOSION | HYPERTORUS_FLAG_RADIATION_PULSE | HYPERTORUS_FLAG_EMP | HYPERTORUS_FLAG_MASSIVE_SPREAD | HYPERTORUS_FLAG_CRITICAL_MELTDOWN
diff --git a/code/modules/atmospherics/machinery/components/fusion/hfr_main_processes.dm b/code/modules/atmospherics/machinery/components/fusion/hfr_main_processes.dm
index 04de52b589e..6c7551e0c35 100644
--- a/code/modules/atmospherics/machinery/components/fusion/hfr_main_processes.dm
+++ b/code/modules/atmospherics/machinery/components/fusion/hfr_main_processes.dm
@@ -129,13 +129,13 @@
// Gases that decrease the amount of energy
energy_modifiers -= scaled_moderator_list[/datum/gas/hypernoblium] * 10 + \
scaled_moderator_list[/datum/gas/water_vapor] * 0.75 + \
- scaled_moderator_list[/datum/gas/nitryl] * 0.15 + \
+ scaled_moderator_list[/datum/gas/nitrium] * 0.15 + \
scaled_moderator_list[/datum/gas/healium] * 0.45 + \
scaled_moderator_list[/datum/gas/freon] * 1.15
///Between 0.25 and 100, this value is used to modify the behaviour of the internal energy and the core temperature based on the gases present in the mix
var/power_modifier = scaled_moderator_list[/datum/gas/oxygen] * 0.55 + \
scaled_moderator_list[/datum/gas/carbon_dioxide] * 0.95 + \
- scaled_moderator_list[/datum/gas/nitryl] * 1.45 + \
+ scaled_moderator_list[/datum/gas/nitrium] * 1.45 + \
scaled_moderator_list[/datum/gas/zauker] * 5.55 + \
scaled_moderator_list[/datum/gas/plasma] * 0.05 - \
scaled_moderator_list[/datum/gas/nitrous_oxide] * 0.05 - \
@@ -301,21 +301,21 @@
if(moderator_list[/datum/gas/proto_nitrate] > 20)
radiation *= 1.55
heat_output *= 1.025
- internal_output.assert_gases(/datum/gas/stimulum)
- internal_output.gases[/datum/gas/stimulum][MOLES] += scaled_production * 1.05
+ internal_output.assert_gases(/datum/gas/nitrium)
+ internal_output.gases[/datum/gas/nitrium][MOLES] += scaled_production * 1.05
moderator_internal.gases[/datum/gas/proto_nitrate][MOLES] -= min(moderator_internal.gases[/datum/gas/proto_nitrate][MOLES], scaled_production * 1.35)
if(3, 4)
if(moderator_list[/datum/gas/plasma] > 10)
- internal_output.assert_gases(/datum/gas/freon, /datum/gas/stimulum)
+ internal_output.assert_gases(/datum/gas/freon, /datum/gas/nitrium)
internal_output.gases[/datum/gas/freon][MOLES] += scaled_production * 0.15
- internal_output.gases[/datum/gas/stimulum][MOLES] += scaled_production * 1.05
+ internal_output.gases[/datum/gas/nitrium][MOLES] += scaled_production * 1.05
moderator_internal.gases[/datum/gas/plasma][MOLES] -= min(moderator_internal.gases[/datum/gas/plasma][MOLES], scaled_production * 0.45)
if(moderator_list[/datum/gas/freon] > 50)
heat_output *= 0.9
radiation *= 0.8
if(moderator_list[/datum/gas/proto_nitrate]> 15)
- internal_output.assert_gases(/datum/gas/stimulum, /datum/gas/halon)
- internal_output.gases[/datum/gas/stimulum][MOLES] += scaled_production * 1.25
+ internal_output.assert_gases(/datum/gas/nitrium, /datum/gas/halon)
+ internal_output.gases[/datum/gas/nitrium][MOLES] += scaled_production * 1.25
internal_output.gases[/datum/gas/halon][MOLES] += scaled_production * 1.15
moderator_internal.gases[/datum/gas/proto_nitrate][MOLES] -= min(moderator_internal.gases[/datum/gas/proto_nitrate][MOLES], scaled_production * 1.55)
radiation *= 1.95
@@ -334,8 +334,8 @@
heat_output *= 0.5
radiation *= 0.2
if(moderator_list[/datum/gas/proto_nitrate] > 50)
- internal_output.assert_gases(/datum/gas/stimulum, /datum/gas/pluoxium)
- internal_output.gases[/datum/gas/stimulum][MOLES] += scaled_production * 1.95
+ internal_output.assert_gases(/datum/gas/nitrium, /datum/gas/pluoxium)
+ internal_output.gases[/datum/gas/nitrium][MOLES] += scaled_production * 1.95
internal_output.gases[/datum/gas/pluoxium][MOLES] += scaled_production
moderator_internal.gases[/datum/gas/proto_nitrate][MOLES] -= min(moderator_internal.gases[/datum/gas/proto_nitrate][MOLES], scaled_production * 1.35)
radiation *= 1.95
@@ -357,9 +357,9 @@
moderator_internal.gases[/datum/gas/bz][MOLES] += scaled_production * 1.15
moderator_internal.gases[/datum/gas/plasma][MOLES] -= min(moderator_internal.gases[/datum/gas/plasma][MOLES], scaled_production * 1.45)
if(moderator_list[/datum/gas/proto_nitrate])
- internal_output.assert_gases(/datum/gas/zauker, /datum/gas/stimulum)
+ internal_output.assert_gases(/datum/gas/zauker, /datum/gas/nitrium)
internal_output.gases[/datum/gas/zauker][MOLES] += scaled_production * 5.35
- internal_output.gases[/datum/gas/stimulum][MOLES] += scaled_production * 2.15
+ internal_output.gases[/datum/gas/nitrium][MOLES] += scaled_production * 2.15
moderator_internal.gases[/datum/gas/proto_nitrate][MOLES] -= min(moderator_internal.gases[/datum/gas/proto_nitrate][MOLES], scaled_production * 3.35)
radiation *= 2
heat_output *= 2.25
diff --git a/code/modules/atmospherics/machinery/components/gas_recipe_machines/atmos_machines_recipes.dm b/code/modules/atmospherics/machinery/components/gas_recipe_machines/atmos_machines_recipes.dm
index 1397b71c554..ac187433fed 100644
--- a/code/modules/atmospherics/machinery/components/gas_recipe_machines/atmos_machines_recipes.dm
+++ b/code/modules/atmospherics/machinery/components/gas_recipe_machines/atmos_machines_recipes.dm
@@ -180,7 +180,7 @@ GLOBAL_LIST_INIT(gas_recipe_meta, gas_recipes_list())
name = "exotic fuel pellet"
reaction_type = ENDOTHERMIC_REACTION
energy_release = 6000000
- requirements = list(/datum/gas/hypernoblium = 100, /datum/gas/stimulum = 100)
+ requirements = list(/datum/gas/hypernoblium = 100, /datum/gas/nitrium = 100)
products = list(/obj/item/fuel_pellet/exotic = 1)
/datum/gas_recipe/crystallizer/crystal_foam
@@ -190,3 +190,13 @@ GLOBAL_LIST_INIT(gas_recipe_meta, gas_recipes_list())
energy_release = 140000
requirements = list(/datum/gas/carbon_dioxide = 150, /datum/gas/nitrous_oxide = 100, /datum/gas/water_vapor = 25)
products = list(/obj/item/grenade/gas_crystal/crystal_foam = 1)
+
+/datum/gas_recipe/crystallizer/crystallized_nitrium
+ id = "crystallized_nitrium"
+ name = "Nitrium crystal"
+ min_temp = 10
+ max_temp = 25
+ reaction_type = ENDOTHERMIC_REACTION
+ energy_release = 45000
+ requirements = list(/datum/gas/nitrium = 150, /datum/gas/oxygen = 70, /datum/gas/bz = 50)
+ products = list(/obj/item/nitrium_crystal = 1)
diff --git a/code/modules/atmospherics/machinery/components/tank.dm b/code/modules/atmospherics/machinery/components/tank.dm
index 91a824ddadb..0f99a977625 100644
--- a/code/modules/atmospherics/machinery/components/tank.dm
+++ b/code/modules/atmospherics/machinery/components/tank.dm
@@ -404,8 +404,8 @@
/obj/machinery/atmospherics/components/tank/miasma
gas_type = /datum/gas/miasma
-/obj/machinery/atmospherics/components/tank/nitryl
- gas_type = /datum/gas/nitryl
+/obj/machinery/atmospherics/components/tank/nitrium
+ gas_type = /datum/gas/nitrium
/obj/machinery/atmospherics/components/tank/pluoxium
gas_type = /datum/gas/pluoxium
@@ -413,9 +413,6 @@
/obj/machinery/atmospherics/components/tank/proto_nitrate
gas_type = /datum/gas/proto_nitrate
-/obj/machinery/atmospherics/components/tank/stimulum
- gas_type = /datum/gas/stimulum
-
/obj/machinery/atmospherics/components/tank/tritium
gas_type = /datum/gas/tritium
diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm
index edf452bd651..6f7af747d85 100644
--- a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm
+++ b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm
@@ -267,17 +267,14 @@
name = "miasma filter"
filter_type = list(/datum/gas/miasma)
/obj/machinery/atmospherics/components/trinary/filter/atmos/no2
- name = "nitryl filter"
- filter_type = list(/datum/gas/nitryl)
+ name = "nitrium filter"
+ filter_type = list(/datum/gas/nitrium)
/obj/machinery/atmospherics/components/trinary/filter/atmos/pluoxium
name = "pluoxium filter"
filter_type = list(/datum/gas/pluoxium)
/obj/machinery/atmospherics/components/trinary/filter/atmos/proto_nitrate
name = "proto-nitrate filter"
filter_type = list(/datum/gas/proto_nitrate)
-/obj/machinery/atmospherics/components/trinary/filter/atmos/stimulum
- name = "stimulum filter"
- filter_type = list(/datum/gas/stimulum)
/obj/machinery/atmospherics/components/trinary/filter/atmos/tritium
name = "tritium filter"
filter_type = list(/datum/gas/tritium)
@@ -336,17 +333,14 @@
name = "miasma filter"
filter_type = list(/datum/gas/miasma)
/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/no2
- name = "nitryl filter"
- filter_type = list(/datum/gas/nitryl)
+ name = "nitrium filter"
+ filter_type = list(/datum/gas/nitrium)
/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/pluoxium
name = "pluoxium filter"
filter_type = list(/datum/gas/pluoxium)
/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/proto_nitrate
name = "proto-nitrate filter"
filter_type = list(/datum/gas/proto_nitrate)
-/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/stimulum
- name = "stimulum filter"
- filter_type = list(/datum/gas/stimulum)
/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/tritium
name = "tritium filter"
filter_type = list(/datum/gas/tritium)
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm
index bb33d8ade6a..068de9ac27d 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm
@@ -263,18 +263,15 @@
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/miasma_input
name = "miasma tank input injector"
id = ATMOS_GAS_MONITOR_INPUT_MIASMA
-/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitryl_input
- name = "nitryl tank input injector"
- id = ATMOS_GAS_MONITOR_INPUT_NO2
+/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrium_input
+ name = "nitrium tank input injector"
+ id = ATMOS_GAS_MONITOR_INPUT_NITRIUM
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/pluoxium_input
name = "pluoxium tank input injector"
id = ATMOS_GAS_MONITOR_INPUT_PLUOXIUM
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/proto_nitrate_input
name = "proto-nitrate tank input injector"
id = ATMOS_GAS_MONITOR_INPUT_PROTO_NITRATE
-/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/stimulum_input
- name = "stimulum tank input injector"
- id = ATMOS_GAS_MONITOR_INPUT_STIMULUM
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/tritium_input
name = "tritium tank input injector"
id = ATMOS_GAS_MONITOR_INPUT_TRITIUM
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm
index 05b7511f94d..9dc856a3ff2 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm
@@ -411,18 +411,15 @@
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/miasma_output
name = "miasma tank output inlet"
id_tag = ATMOS_GAS_MONITOR_OUTPUT_MIASMA
-/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitryl_output
- name = "nitryl tank output inlet"
- id_tag = ATMOS_GAS_MONITOR_OUTPUT_NO2
+/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrium_output
+ name = "nitrium tank output inlet"
+ id_tag = ATMOS_GAS_MONITOR_OUTPUT_NITRIUM
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/pluoxium_output
name = "pluoxium tank output inlet"
id_tag = ATMOS_GAS_MONITOR_OUTPUT_PLUOXIUM
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/proto_nitrate_output
name = "proto-nitrate tank output inlet"
id_tag = ATMOS_GAS_MONITOR_OUTPUT_PROTO_NITRATE
-/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/stimulum_output
- name = "stimulum tank output inlet"
- id_tag = ATMOS_GAS_MONITOR_OUTPUT_STIMULUM
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/tritium_output
name = "tritium tank output inlet"
id_tag = ATMOS_GAS_MONITOR_OUTPUT_TRITIUM
diff --git a/code/modules/atmospherics/machinery/other/miner.dm b/code/modules/atmospherics/machinery/other/miner.dm
index 74c72c16c17..457352b6ab8 100644
--- a/code/modules/atmospherics/machinery/other/miner.dm
+++ b/code/modules/atmospherics/machinery/other/miner.dm
@@ -209,10 +209,10 @@
overlay_color = "#395806"
spawn_id = /datum/gas/miasma
-/obj/machinery/atmospherics/miner/nitryl
- name = "\improper Nitryl Gas Miner"
+/obj/machinery/atmospherics/miner/nitrium
+ name = "\improper Nitrium Gas Miner"
overlay_color = "#752b00"
- spawn_id = /datum/gas/nitryl
+ spawn_id = /datum/gas/nitrium
/obj/machinery/atmospherics/miner/pluoxium
name = "\improper Pluoxium Gas Miner"
@@ -224,11 +224,6 @@
overlay_color = "#00571d"
spawn_id = /datum/gas/proto_nitrate
-/obj/machinery/atmospherics/miner/stimulum
- name = "\improper Stimulum Gas Miner"
- overlay_color = "#d577dd"
- spawn_id = /datum/gas/stimulum
-
/obj/machinery/atmospherics/miner/tritium
name = "\improper Tritium Gas Miner"
overlay_color = "#15ff00"
diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm
index 450b2983e7c..08ce9444607 100644
--- a/code/modules/atmospherics/machinery/portable/canister.dm
+++ b/code/modules/atmospherics/machinery/portable/canister.dm
@@ -15,13 +15,12 @@ GLOBAL_LIST_INIT(gas_id_to_canister, init_gas_id_to_canister())
"co2" = /obj/machinery/portable_atmospherics/canister/carbon_dioxide,
"plasma" = /obj/machinery/portable_atmospherics/canister/plasma,
"n2o" = /obj/machinery/portable_atmospherics/canister/nitrous_oxide,
- "no2" = /obj/machinery/portable_atmospherics/canister/nitryl,
+ "nitrium" = /obj/machinery/portable_atmospherics/canister/nitrium,
"bz" = /obj/machinery/portable_atmospherics/canister/bz,
"air" = /obj/machinery/portable_atmospherics/canister/air,
"water_vapor" = /obj/machinery/portable_atmospherics/canister/water_vapor,
"tritium" = /obj/machinery/portable_atmospherics/canister/tritium,
"hyper-noblium" = /obj/machinery/portable_atmospherics/canister/nob,
- "stimulum" = /obj/machinery/portable_atmospherics/canister/stimulum,
"pluoxium" = /obj/machinery/portable_atmospherics/canister/pluoxium,
"caution" = /obj/machinery/portable_atmospherics/canister,
"miasma" = /obj/machinery/portable_atmospherics/canister/miasma,
@@ -216,10 +215,10 @@ GLOBAL_LIST_INIT(gas_id_to_canister, init_gas_id_to_canister())
greyscale_config = /datum/greyscale_config/canister/double_stripe
greyscale_colors = "#c63e3b#f7d5d3"
-/obj/machinery/portable_atmospherics/canister/nitryl
- name = "Nitryl canister"
- desc = "Nitryl gas. Feels great 'til the acid eats your lungs."
- gas_type = /datum/gas/nitryl
+/obj/machinery/portable_atmospherics/canister/nitrium
+ name = "Nitrium canister"
+ desc = "Nitrium gas. Feels great 'til the acid eats your lungs."
+ gas_type = /datum/gas/nitrium
greyscale_config = /datum/greyscale_config/canister
greyscale_colors = "#7b4732"
@@ -252,13 +251,6 @@ GLOBAL_LIST_INIT(gas_id_to_canister, init_gas_id_to_canister())
greyscale_config = /datum/greyscale_config/canister/double_stripe
greyscale_colors = "#008200#33cc33"
-/obj/machinery/portable_atmospherics/canister/stimulum
- name = "Stimulum canister"
- desc = "Stimulum. High energy gas, high energy people."
- gas_type = /datum/gas/stimulum
- greyscale_config = /datum/greyscale_config/canister
- greyscale_colors = "#9b5d7f"
-
/obj/machinery/portable_atmospherics/canister/plasma
name = "Plasma canister"
desc = "Plasma gas. The reason YOU are here. Highly toxic."
diff --git a/code/modules/atmospherics/machinery/portable/scrubber.dm b/code/modules/atmospherics/machinery/portable/scrubber.dm
index 41282bb26ed..629a8e20290 100644
--- a/code/modules/atmospherics/machinery/portable/scrubber.dm
+++ b/code/modules/atmospherics/machinery/portable/scrubber.dm
@@ -23,7 +23,7 @@
/datum/gas/carbon_dioxide,
/datum/gas/nitrous_oxide,
/datum/gas/bz,
- /datum/gas/nitryl,
+ /datum/gas/nitrium,
/datum/gas/tritium,
/datum/gas/hypernoblium,
/datum/gas/water_vapor,
diff --git a/code/modules/cargo/bounties/engineering.dm b/code/modules/cargo/bounties/engineering.dm
index da3c8650618..748b63163cb 100644
--- a/code/modules/cargo/bounties/engineering.dm
+++ b/code/modules/cargo/bounties/engineering.dm
@@ -15,10 +15,10 @@
return FALSE
return our_mix.gases[gas_type][MOLES] >= moles_required
-/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. (20 Moles)"
- gas_type = /datum/gas/nitryl
+/datum/bounty/item/engineering/gas/nitrium_tank
+ name = "Full Tank of Nitrium"
+ description = "The non-human staff of Station 88 has been volunteered to test performance enhancing drugs. Ship them a tank full of Nitrium so they can get started. (20 Moles)"
+ gas_type = /datum/gas/nitrium
/datum/bounty/item/engineering/gas/freon_tank
name = "Full Tank of Freon"
diff --git a/code/modules/cargo/exports/large_objects.dm b/code/modules/cargo/exports/large_objects.dm
index f70e18d6f4d..422082a060f 100644
--- a/code/modules/cargo/exports/large_objects.dm
+++ b/code/modules/cargo/exports/large_objects.dm
@@ -109,7 +109,7 @@
var/canister_gas = canister_mix.gases
var/list/gases_to_check = list(
/datum/gas/bz,
- /datum/gas/stimulum,
+ /datum/gas/nitrium,
/datum/gas/hypernoblium,
/datum/gas/miasma,
/datum/gas/tritium,
diff --git a/code/modules/clothing/masks/gas_filter.dm b/code/modules/clothing/masks/gas_filter.dm
index 70232b61914..09dafd7e415 100644
--- a/code/modules/clothing/masks/gas_filter.dm
+++ b/code/modules/clothing/masks/gas_filter.dm
@@ -35,8 +35,7 @@
)
///List of gases with medium filter priority
var/list/mid_filtering_gases = list(
- /datum/gas/nitryl,
- /datum/gas/stimulum,
+ /datum/gas/nitrium,
/datum/gas/freon,
/datum/gas/hypernoblium,
/datum/gas/bz
diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm
index d1ec5282f7b..f5adc77221f 100644
--- a/code/modules/mob/living/carbon/life.dm
+++ b/code/modules/mob/living/carbon/life.dm
@@ -246,10 +246,13 @@
else if(bz_partialpressure > 0.01)
hallucination += 5
- //NITRYL
- if(breath_gases[/datum/gas/nitryl])
- var/nitryl_partialpressure = (breath_gases[/datum/gas/nitryl][MOLES]/breath.total_moles())*breath_pressure
- adjustFireLoss(nitryl_partialpressure/4)
+ //NITRIUM
+ if(breath_gases[/datum/gas/nitrium])
+ var/nitrium_partialpressure = (breath_gases[/datum/gas/nitrium][MOLES]/breath.total_moles())*breath_pressure
+ if(nitrium_partialpressure > 0.5)
+ adjustFireLoss(nitrium_partialpressure * 0.15)
+ if(nitrium_partialpressure > 5)
+ adjustToxLoss(nitrium_partialpressure * 0.05)
//FREON
if(breath_gases[/datum/gas/freon])
diff --git a/code/modules/movespeed/modifiers/reagent.dm b/code/modules/movespeed/modifiers/reagent.dm
index ac2f3cdd4c9..1d4898e662b 100644
--- a/code/modules/movespeed/modifiers/reagent.dm
+++ b/code/modules/movespeed/modifiers/reagent.dm
@@ -19,7 +19,7 @@
/datum/movespeed_modifier/reagent/methamphetamine
multiplicative_slowdown = -0.65
-/datum/movespeed_modifier/reagent/nitryl
+/datum/movespeed_modifier/reagent/nitrium
multiplicative_slowdown = -0.65
/datum/movespeed_modifier/reagent/cannabis
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm
index 5f4149113d2..3d6d9b1a086 100644
--- a/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -1388,55 +1388,55 @@
M.set_confusion(min(M.get_confusion() + 2, 5))
..()
-/datum/reagent/stimulum
- name = "Stimulum"
- description = "An unstable experimental gas that greatly increases the energy of those that inhale it, while dealing increasing toxin damage over time."
+/datum/reagent/nitrium_high_metabolization
+ name = "Nitrosyl plasmide"
+ description = "A highly reactive byproduct that stops you from sleeping, while dealing increasing toxin damage over time."
reagent_state = GAS
- metabolization_rate = REAGENTS_METABOLISM * 0.5 // Because stimulum/nitryl/freon/hypernoblium are handled through gas breathing, metabolism must be lower for breathcode to keep up
+ metabolization_rate = REAGENTS_METABOLISM * 0.5 // Because nitrium/freon/hypernoblium are handled through gas breathing, metabolism must be lower for breathcode to keep up
color = "E1A116"
taste_description = "sourness"
ph = 1.8
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_NO_RANDOM_RECIPE
addiction_types = list(/datum/addiction/stimulants = 14)
-/datum/reagent/stimulum/on_mob_metabolize(mob/living/L)
- ..()
+/datum/reagent/nitrium_high_metabolization/on_mob_metabolize(mob/living/L)
+ . = ..()
ADD_TRAIT(L, TRAIT_STUNIMMUNE, type)
ADD_TRAIT(L, TRAIT_SLEEPIMMUNE, type)
-/datum/reagent/stimulum/on_mob_end_metabolize(mob/living/L)
+/datum/reagent/nitrium_high_metabolization/on_mob_end_metabolize(mob/living/L)
REMOVE_TRAIT(L, TRAIT_STUNIMMUNE, type)
REMOVE_TRAIT(L, TRAIT_SLEEPIMMUNE, type)
- ..()
+ return ..()
-/datum/reagent/stimulum/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
+/datum/reagent/nitrium_high_metabolization/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjustStaminaLoss(-2 * REM * delta_time, 0)
M.adjustToxLoss(0.1 * current_cycle * REM * delta_time, 0) // 1 toxin damage per cycle at cycle 10
- ..()
+ return ..()
-/datum/reagent/nitryl
- name = "Nitryl"
+/datum/reagent/nitrium_low_metabolization
+ name = "Nitrium"
description = "A highly reactive gas that makes you feel faster."
reagent_state = GAS
- metabolization_rate = REAGENTS_METABOLISM * 0.5 // Because stimulum/nitryl/freon/hypernoblium are handled through gas breathing, metabolism must be lower for breathcode to keep up
+ metabolization_rate = REAGENTS_METABOLISM * 0.5 // Because nitrium/freon/hypernoblium are handled through gas breathing, metabolism must be lower for breathcode to keep up
color = "90560B"
taste_description = "burning"
ph = 2
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_NO_RANDOM_RECIPE
-/datum/reagent/nitryl/on_mob_metabolize(mob/living/L)
- ..()
- L.add_movespeed_modifier(/datum/movespeed_modifier/reagent/nitryl)
+/datum/reagent/nitrium_low_metabolization/on_mob_metabolize(mob/living/L)
+ . = ..()
+ L.add_movespeed_modifier(/datum/movespeed_modifier/reagent/nitrium)
-/datum/reagent/nitryl/on_mob_end_metabolize(mob/living/L)
- L.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/nitryl)
- ..()
+/datum/reagent/nitrium_low_metabolization/on_mob_end_metabolize(mob/living/L)
+ L.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/nitrium)
+ return ..()
/datum/reagent/freon
name = "Freon"
description = "A powerful heat absorbent."
reagent_state = GAS
- metabolization_rate = REAGENTS_METABOLISM * 0.5 // Because stimulum/nitryl/freon/hypernoblium are handled through gas breathing, metabolism must be lower for breathcode to keep up
+ metabolization_rate = REAGENTS_METABOLISM * 0.5 // Because nitrium/freon/hypernoblium are handled through gas breathing, metabolism must be lower for breathcode to keep up
color = "90560B"
taste_description = "burning"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_NO_RANDOM_RECIPE
@@ -1453,7 +1453,7 @@
name = "Hyper-Noblium"
description = "A suppressive gas that stops gas reactions on those who inhale it."
reagent_state = GAS
- metabolization_rate = REAGENTS_METABOLISM * 0.5 // Because stimulum/nitryl/freon/hyper-nob are handled through gas breathing, metabolism must be lower for breathcode to keep up
+ metabolization_rate = REAGENTS_METABOLISM * 0.5 // Because nitrium/freon/hyper-nob are handled through gas breathing, metabolism must be lower for breathcode to keep up
color = "90560B"
taste_description = "searingly cold"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_NO_RANDOM_RECIPE
diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm
index 4533b4b4ce1..049bd168ea5 100644
--- a/code/modules/surgery/organs/lungs.dm
+++ b/code/modules/surgery/organs/lungs.dm
@@ -36,7 +36,7 @@
var/SA_sleep_min = 5 //Sleeping agent
var/BZ_trip_balls_min = 1 //BZ gas
var/BZ_brain_damage_min = 10 //Give people some room to play around without killing the station
- var/gas_stimulation_min = 0.002 //Nitryl, Stimulum and Freon
+ var/gas_stimulation_min = 0.002 //nitrium and Freon
///Minimum amount of healium to make you unconscious for 4 seconds
var/healium_para_min = 3
///Minimum amount of healium to knock you down for good
@@ -303,18 +303,20 @@
breath_gases[/datum/gas/tritium][MOLES] -= gas_breathed
- // Nitryl
- var/nitryl_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/nitryl][MOLES])
- if (prob(nitryl_pp))
- breather.emote("burp")
- if (prob(nitryl_pp) && nitryl_pp>10)
- breather.adjustOrganLoss(ORGAN_SLOT_LUNGS, nitryl_pp/2)
- to_chat(breather, span_notice("You feel a burning sensation in your chest"))
- gas_breathed = breath_gases[/datum/gas/nitryl][MOLES]
- if (gas_breathed > gas_stimulation_min)
- breather.reagents.add_reagent(/datum/reagent/nitryl,1)
+ // Nitrium
+ var/nitrium_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/nitrium][MOLES])
+ if (prob(nitrium_pp) && nitrium_pp > 15)
+ breather.adjustOrganLoss(ORGAN_SLOT_LUNGS, nitrium_pp * 0.1)
+ to_chat(breather, "You feel a burning sensation in your chest")
+ gas_breathed = breath_gases[/datum/gas/nitrium][MOLES]
+ if (nitrium_pp > 5)
+ var/existing = breather.reagents.get_reagent_amount(/datum/reagent/nitrium_low_metabolization)
+ breather.reagents.add_reagent(/datum/reagent/nitrium_low_metabolization, max(0, 2 - existing))
+ if (nitrium_pp > 10)
+ var/existing = breather.reagents.get_reagent_amount(/datum/reagent/nitrium_high_metabolization)
+ breather.reagents.add_reagent(/datum/reagent/nitrium_high_metabolization, max(0, 1 - existing))
- breath_gases[/datum/gas/nitryl][MOLES]-=gas_breathed
+ breath_gases[/datum/gas/nitrium][MOLES] -= gas_breathed
// Freon
var/freon_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/freon][MOLES])
@@ -373,13 +375,6 @@
gas_breathed = breath_gases[/datum/gas/halon][MOLES]
breath_gases[/datum/gas/halon][MOLES]-=gas_breathed
- // Stimulum
- gas_breathed = breath_gases[/datum/gas/stimulum][MOLES]
- if (gas_breathed > gas_stimulation_min)
- var/existing = breather.reagents.get_reagent_amount(/datum/reagent/stimulum)
- breather.reagents.add_reagent(/datum/reagent/stimulum,max(0, 1 - existing))
- breath_gases[/datum/gas/stimulum][MOLES]-=gas_breathed
-
// Hyper-Nob
gas_breathed = breath_gases[/datum/gas/hypernoblium][MOLES]
if (gas_breathed > gas_stimulation_min)
diff --git a/icons/effects/atmospherics.dmi b/icons/effects/atmospherics.dmi
index e2f451ca068785f851ea3f2daaeb1989f2a0d389..838fe5e3f6da91f5bbd63e7beecff97c492f3927 100644
GIT binary patch
delta 332
zcmV-S0ki($#{uET0gyU>J#T|B5Qb;`D^AI3Ma8657nX{sVo3f1x)u{o1smB%()8DN
z$Ur`@LZS#UFg%ZZ@4a{qAFI!N1KBzkJMBDK11T&QFCyAg$u*>qC=u0~wlyC=JR@sJ
zVb(S1TbzlgBR(nVx5mBidJU|MujAcAfhS=HO7xtHbN<9w8>Vm$024Cg0
zHRGQ5L8GLSN+vRqN-B9W#2#6@Vuzh|k4viFlQqQ_{kY?8be{7}sBfQ;20P-Q>2*Xj
zpe=>hIVFT+9SYl&H!E>Lo>k%zLFKeHVenS`Cmon1IYw}ChVNRp#TNbJ$1ue1(1iKr
z6@Rt&Fg#`V(}rI@By!{(T(!pLIc4sgWm_0xhy0AI;t%^D9r(@f64ls*?wq?kXqb%s
e3da?w%p6vm46=1D{sEL&h;oN~0XMUD0c&DgIh^AF
delta 332
zcmV-S0ki($#{uET0gyU>v2KGf6h&wJ6;H`(Ma8657nX{sVn}`gy%qyj!A7=8ntpu;
z1`@CpKoMeKI7fc>UA%>l!)JPekIJXhb8*D5Ez+T+nizov~GVy`<=jP%zs)%r^livgoj+{Eh`ejW8bP7Cl78?}`ZpDrCFvs=o#DIUO;(~=e~i8aettjU
zCwuq9b9O&(_+3Ok9q-_(IM&_@E-G`Yl~tJ(R-=8!P4S1_5BL1#i$oRHzAI;u2c;EK
eefi_^RAvi@Qv%5`CI5WOhzw;Vu^h8@0c&E{CYhrE
diff --git a/icons/obj/atmos.dmi b/icons/obj/atmos.dmi
index ec462c4172984abb3f6cbc6c81a0161aeef1fa95..8859441898c4a785d2cbe54c370d6f9c99291003 100644
GIT binary patch
literal 16736
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
literal 16432
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%0DFQ7qshF`$buY|HvVr
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
R_&)&vnrgcDD^;w5{|}-GV}bwx
diff --git a/tgstation.dme b/tgstation.dme
index b151de9ea9a..62f80c0b60a 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -1303,6 +1303,7 @@
#include "code\game\objects\items\maintenance_loot.dm"
#include "code\game\objects\items\manuals.dm"
#include "code\game\objects\items\mop.dm"
+#include "code\game\objects\items\nitrium_crystals.dm"
#include "code\game\objects\items\paint.dm"
#include "code\game\objects\items\paiwire.dm"
#include "code\game\objects\items\pet_carrier.dm"
diff --git a/tgui/packages/tgui/constants.js b/tgui/packages/tgui/constants.js
index a295d539374..495c04d8a0e 100644
--- a/tgui/packages/tgui/constants.js
+++ b/tgui/packages/tgui/constants.js
@@ -183,8 +183,8 @@ const GASES = [
},
{
'id': 'no2',
- 'name': 'Nitryl',
- 'label': 'NO₂',
+ 'name': 'Nitrium',
+ 'label': 'Nitrium',
'color': 'brown',
},
{
@@ -199,12 +199,6 @@ const GASES = [
'label': 'BZ',
'color': 'mediumpurple',
},
- {
- 'id': 'stim',
- 'name': 'Stimulum',
- 'label': 'Stimulum',
- 'color': 'darkviolet',
- },
{
'id': 'pluox',
'name': 'Pluoxium',