Files
Bubberstation/code/modules/atmospherics/machinery/components/fusion/hfr_fuel_datums.dm
SkyratBot 054b4d9739 [MIRROR] nitryl and stimulum merge in nitrium [MDB IGNORE] (#9514)
* 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

* nitryl and stimulum merge in nitrium

* Fixing blackmesa

Co-authored-by: Ghilker <42839747+Ghilker@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2021-11-17 15:14:33 -05:00

141 lines
6.7 KiB
Plaintext

///Global list of recipes for atmospheric machines to use
GLOBAL_LIST_INIT(hfr_fuels_list, hfr_fuels_create_list())
/*
* Global proc to build the gas recipe global list
*/
/proc/hfr_fuels_create_list()
. = list()
for(var/fuel_mix_path in subtypesof(/datum/hfr_fuel))
var/datum/hfr_fuel/fuel_mix = new fuel_mix_path()
.[fuel_mix.id] = fuel_mix
/datum/hfr_fuel
///Id for the mix
var/id = ""
///The gases that are going to be used as fuel ("GasX + GasY fuel")
var/name = ""
///Multiplier for the minimum heat output of the HFR (min 0.01)
var/negative_temperature_multiplier = 1
///Multiplier for the maximum heat output of the HFR (min 0.01)
var/positive_temperature_multiplier = 1
///Multiplier for the energy released (min 0.01)
var/energy_concentration_multiplier = 1
///Multiplier for the fuel consumption (min 0.01)
var/fuel_consumption_multiplier = 1
///Multiplier for the gas production (min 0.01)
var/gas_production_multiplier = 1
///Max allowed temperature multiplier, scales the max temperature we can hit, see FUSION_MAXIMUM_TEMPERATURE (Maxed at 1, don't go getting any ideas)
var/temperature_change_multiplier = 1
///These are the main fuels, only 2 gases that are the ones being consumed by the fusion reaction (eg. H2 and trit)
var/requirements = list()
///Gases that gets produced directly in the internal gasmix
var/primary_products = list()
///Gases that gets produced in the moderator gasmix or directly ejected (must be 6 gases), the order indicate at what power level the gases are going to be made (from power level 1 to 6)
var/secondary_products = list()
///Flags to decide what behaviour the meltdown will have depending on the fuel mix used
var/meltdown_flags = HYPERTORUS_FLAG_BASE_EXPLOSION
/datum/hfr_fuel/New()
. = ..()
temperature_change_multiplier = min(temperature_change_multiplier, 1)
/datum/hfr_fuel/plasma_oxy_fuel
id = "plasma_o2_fuel"
name = "Plasma + Oxygen fuel"
negative_temperature_multiplier = 2.5
positive_temperature_multiplier = 0.1
energy_concentration_multiplier = 10
fuel_consumption_multiplier = 3.3
gas_production_multiplier = 1.4
temperature_change_multiplier = 0.6
requirements = list(/datum/gas/plasma, /datum/gas/oxygen)
primary_products = list(/datum/gas/carbon_dioxide, /datum/gas/water_vapor)
secondary_products = list(/datum/gas/carbon_dioxide, /datum/gas/water_vapor, /datum/gas/freon, /datum/gas/nitrous_oxide, /datum/gas/pluoxium, /datum/gas/halon)
meltdown_flags = HYPERTORUS_FLAG_BASE_EXPLOSION | HYPERTORUS_FLAG_MINIMUM_SPREAD
/datum/hfr_fuel/hydrogen_oxy_fuel
id = "h2_o2_fuel"
name = "Hydrogen + Oxygen fuel"
negative_temperature_multiplier = 2
positive_temperature_multiplier = 0.6
energy_concentration_multiplier = 3
fuel_consumption_multiplier = 1.1
gas_production_multiplier = 0.9
temperature_change_multiplier = 0.75
requirements = list(/datum/gas/hydrogen, /datum/gas/oxygen)
primary_products = list(/datum/gas/helium, /datum/gas/nitrogen)
secondary_products = list(/datum/gas/helium, /datum/gas/plasma, /datum/gas/oxygen, /datum/gas/nitrogen, /datum/gas/bz, /datum/gas/hypernoblium)
meltdown_flags = HYPERTORUS_FLAG_BASE_EXPLOSION | HYPERTORUS_FLAG_EMP | HYPERTORUS_FLAG_MEDIUM_SPREAD
/datum/hfr_fuel/tritium_oxy_fuel
id = "t2_o2_fuel"
name = "Tritium + Oxygen fuel"
negative_temperature_multiplier = 2.1
positive_temperature_multiplier = 0.5
energy_concentration_multiplier = 2
fuel_consumption_multiplier = 1.2
gas_production_multiplier = 0.8
temperature_change_multiplier = 0.8
requirements = list(/datum/gas/tritium, /datum/gas/oxygen)
primary_products = list(/datum/gas/helium, /datum/gas/pluoxium)
secondary_products = list(/datum/gas/helium, /datum/gas/plasma, /datum/gas/oxygen, /datum/gas/nitrogen, /datum/gas/bz, /datum/gas/hypernoblium)
meltdown_flags = HYPERTORUS_FLAG_BASE_EXPLOSION | HYPERTORUS_FLAG_RADIATION_PULSE | HYPERTORUS_FLAG_MEDIUM_SPREAD
/datum/hfr_fuel/hydrogen_tritium_fuel
id = "h2_t2_fuel"
name = "Hydrogen + Tritium fuel"
negative_temperature_multiplier = 1
positive_temperature_multiplier = 1
energy_concentration_multiplier = 1
fuel_consumption_multiplier = 1
gas_production_multiplier = 1
temperature_change_multiplier = 0.85
requirements = list(/datum/gas/hydrogen, /datum/gas/tritium)
primary_products = list(/datum/gas/helium)
secondary_products = list(/datum/gas/helium, /datum/gas/plasma, /datum/gas/oxygen, /datum/gas/nitrogen, /datum/gas/bz, /datum/gas/hypernoblium)
meltdown_flags = HYPERTORUS_FLAG_MEDIUM_EXPLOSION | HYPERTORUS_FLAG_RADIATION_PULSE | HYPERTORUS_FLAG_EMP | HYPERTORUS_FLAG_MEDIUM_SPREAD
/datum/hfr_fuel/hypernob_hydrogen_fuel
id = "hypernob_hydrogen_fuel"
name = "Hypernoblium + Hydrogen fuel"
negative_temperature_multiplier = 0.2
positive_temperature_multiplier = 2.2
energy_concentration_multiplier = 0.2
fuel_consumption_multiplier = 0.55
gas_production_multiplier = 1.4
temperature_change_multiplier = 0.9
requirements = list(/datum/gas/hypernoblium, /datum/gas/hydrogen)
primary_products = list(/datum/gas/antinoblium)
secondary_products = list(/datum/gas/antinoblium, /datum/gas/helium, /datum/gas/proto_nitrate, /datum/gas/zauker, /datum/gas/healium, /datum/gas/miasma)
meltdown_flags = HYPERTORUS_FLAG_DEVASTATING_EXPLOSION | HYPERTORUS_FLAG_RADIATION_PULSE | HYPERTORUS_FLAG_EMP | HYPERTORUS_FLAG_BIG_SPREAD
/datum/hfr_fuel/hypernob_trit_fuel
id = "hypernob_trit_fuel"
name = "Hypernoblium + Tritium fuel"
negative_temperature_multiplier = 0.1
positive_temperature_multiplier = 2.5
energy_concentration_multiplier = 0.1
fuel_consumption_multiplier = 0.45
gas_production_multiplier = 1.7
temperature_change_multiplier = 0.95
requirements = list(/datum/gas/hypernoblium, /datum/gas/tritium)
primary_products = list(/datum/gas/antinoblium)
secondary_products = list(/datum/gas/antinoblium, /datum/gas/helium, /datum/gas/proto_nitrate, /datum/gas/zauker, /datum/gas/healium, /datum/gas/miasma)
meltdown_flags = HYPERTORUS_FLAG_DEVASTATING_EXPLOSION | HYPERTORUS_FLAG_RADIATION_PULSE | HYPERTORUS_FLAG_EMP | HYPERTORUS_FLAG_BIG_SPREAD
/datum/hfr_fuel/hypernob_antinob_fuel
id = "hypernob_antinob_fuel"
name = "Hypernoblium + Antinoblium fuel"
negative_temperature_multiplier = 0.01
positive_temperature_multiplier = 3.5
energy_concentration_multiplier = 2
fuel_consumption_multiplier = 0.01
gas_production_multiplier = 3
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/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