Makes supermatter properties auxgm-based

This commit is contained in:
Putnam3145
2021-07-20 22:46:33 -07:00
parent ff0f9f651a
commit 0b55928f9b
4 changed files with 105 additions and 117 deletions
+26 -1
View File
@@ -3,10 +3,16 @@
specific_heat = 20
name = "Oxygen"
oxidation_temperature = T0C - 100 // it checks max of this and fire temperature, so rarely will things spontaneously combust
powermix = 1
heat_penalty = 1
transmit_modifier = 1.5
/datum/gas/nitrogen
id = GAS_N2
specific_heat = 20
name = "Nitrogen"
powermix = -1
heat_penalty = -1.5
breath_alert_info = list(
not_enough_alert = list(
alert_category = "not_enough_nitro",
@@ -17,12 +23,14 @@
alert_type = /obj/screen/alert/too_much_nitro
)
)
name = "Nitrogen"
/datum/gas/carbon_dioxide //what the fuck is this?
id = GAS_CO2
specific_heat = 30
name = "Carbon Dioxide"
powermix = 1
heat_penalty = 0.1
powerloss_inhibition = 1
breath_results = GAS_O2
breath_alert_info = list(
not_enough_alert = list(
@@ -43,6 +51,9 @@
gas_overlay = "plasma"
moles_visible = MOLES_GAS_VISIBLE
flags = GAS_FLAG_DANGEROUS
heat_penalty = 15
transmit_modifier = 4
powermix = 1
// no fire info cause it has its own bespoke reaction for trit generation reasons
/datum/gas/water_vapor
@@ -52,6 +63,8 @@
gas_overlay = "water_vapor"
moles_visible = MOLES_GAS_VISIBLE
fusion_power = 8
heat_penalty = 8
powermix = 1
breath_reagent = /datum/reagent/water
/datum/gas/hypernoblium
@@ -71,6 +84,7 @@
fire_products = list(GAS_N2 = 1)
oxidation_rate = 0.5
oxidation_temperature = FIRE_MINIMUM_TEMPERATURE_TO_EXIST + 100
heat_resistance = 6
/datum/gas/nitryl
id = GAS_NITRYL
@@ -91,6 +105,9 @@
moles_visible = MOLES_GAS_VISIBLE
flags = GAS_FLAG_DANGEROUS
fusion_power = 1
powermix = 1
heat_penalty = 10
transmit_modifier = 30
/*
these are for when we add hydrogen, trit gets to keep its hardcoded fire for legacy reasons
fire_provides = list(GAS_H2O = 2)
@@ -105,6 +122,10 @@
name = "BZ"
flags = GAS_FLAG_DANGEROUS
fusion_power = 8
powermix = 1
heat_penalty = 5
transmit_modifier = -2
radioactivity_modifier = 5
/datum/gas/stimulum
id = GAS_STIMULUM
@@ -119,6 +140,10 @@
fusion_power = 10
oxidation_temperature = FIRE_MINIMUM_TEMPERATURE_TO_EXIST * 1000 // it is VERY stable
oxidation_rate = 8
powermix = -1
heat_penalty = -1
transmit_modifier = -5
heat_resistance = 3
/datum/gas/miasma
id = GAS_MIASMA
+16 -1
View File
@@ -35,6 +35,7 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(GAS_O2, GAS_N2, GAS_CO2, GA
var/list/fire_enthalpies = list()
var/list/fire_products = list()
var/list/fire_burn_rates = list()
var/list/supermatter = list()
/datum/gas
@@ -55,6 +56,12 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(GAS_O2, GAS_N2, GAS_CO2, GA
var/list/fire_products = null // what results when this gas is burned (oxidizer or fuel); null for none
var/fire_energy_released = 0 // how much energy is released per mole of fuel burned
var/fire_burn_rate = 1 // how many moles are burned per product released
var/powermix = 0 // how much this gas contributes to the supermatter's powermix ratio
var/heat_penalty = 0 // heat and waste penalty from having the supermatter crystal surrounded by this gas; negative numbers reduce
var/transmit_modifier = 0 // bonus to supermatter power generation (multiplicative, since it's % based, and divided by 10)
var/radioactivity_modifier = 0 // improves effect of transmit modifiers, must be from -10 to 10
var/heat_resistance = 0 // makes the crystal more resistant against heat damage.
var/powerloss_inhibition = 0 // Reduces how much power the supermatter loses each tick
/datum/gas/proc/breath(partial_pressure, light_threshold, heavy_threshold, moles, mob/living/carbon/C, obj/item/organ/lungs/lungs)
// This is only called on gases with the GAS_FLAG_BREATH_PROC flag. When possible, do NOT use this--
@@ -100,12 +107,20 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(GAS_O2, GAS_N2, GAS_CO2, GA
if(gas.fire_products)
fire_products[g] = gas.fire_products
fire_enthalpies[g] = gas.fire_energy_released
add_supermatter_properties(gas)
_auxtools_register_gas(gas)
/proc/finalize_gas_refs()
/datum/auxgm/New()
src.supermatter[HEAT_PENALTY] = list()
src.supermatter[TRANSMIT_MODIFIER] = list()
src.supermatter[RADIOACTIVITY_MODIFIER] = list()
src.supermatter[HEAT_RESISTANCE] = list()
src.supermatter[POWERLOSS_INHIBITION] = list()
src.supermatter[POWER_MIX] = list()
src.supermatter[ALL_SUPERMATTER_GASES] = list()
for(var/gas_path in subtypesof(/datum/gas))
var/datum/gas/gas = new gas_path
add_gas(gas)