diff --git a/auxmos.dll b/auxmos.dll index 3a3d91cb60..bfdcec9a4f 100644 Binary files a/auxmos.dll and b/auxmos.dll differ diff --git a/auxmos.pdb b/auxmos.pdb index 412053465f..5917d3af9a 100644 Binary files a/auxmos.pdb and b/auxmos.pdb differ diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index d6478f2e58..0a529cd395 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -66,7 +66,7 @@ if(panel_open) . += "sheater-open" -/obj/machinery/space_heater/process() +/obj/machinery/space_heater/process_atmos() if(!on || !is_operational()) if (on) // If it's broken, turn it off too on = FALSE @@ -220,7 +220,7 @@ usr.visible_message("[usr] switches [on ? "on" : "off"] \the [src].", "You switch [on ? "on" : "off"] \the [src].") update_icon() if (on) - START_PROCESSING(SSmachines, src) + SSair.atmos_air_machinery += src . = TRUE if("mode") setMode = params["mode"] diff --git a/code/modules/atmospherics/auxgm/gas_types.dm b/code/modules/atmospherics/auxgm/gas_types.dm index 113415dd08..0da2527b3b 100644 --- a/code/modules/atmospherics/auxgm/gas_types.dm +++ b/code/modules/atmospherics/auxgm/gas_types.dm @@ -117,7 +117,7 @@ specific_heat = 80 name = "Pluoxium" fusion_power = 10 - oxidation_temperature = FIRE_MINIMUM_TEMPERATURE_TO_EXIST + 100 + oxidation_temperature = FIRE_MINIMUM_TEMPERATURE_TO_EXIST * 1000 // it is VERY stable oxidation_rate = 8 /datum/gas/miasma diff --git a/code/modules/atmospherics/environmental/LINDA_fire.dm b/code/modules/atmospherics/environmental/LINDA_fire.dm index 2b34453973..c25e74fc5c 100644 --- a/code/modules/atmospherics/environmental/LINDA_fire.dm +++ b/code/modules/atmospherics/environmental/LINDA_fire.dm @@ -13,21 +13,19 @@ if(!air) return - var/oxy = air.get_moles(GAS_O2) - if (oxy < 0.5) + if (air.get_oxidation_power(exposed_temperature) < 0.5) return - var/tox = air.get_moles(GAS_PLASMA) - var/trit = air.get_moles(GAS_TRITIUM) + var/has_fuel = air.get_moles(GAS_PLASMA) > 0.5 || air.get_moles(GAS_TRITIUM) > 0.5 || air.get_fuel_amount(exposed_temperature) > 0.5 if(active_hotspot) if(soh) - if(tox > 0.5 || trit > 0.5) + if(has_fuel) if(active_hotspot.temperature < exposed_temperature) active_hotspot.temperature = exposed_temperature if(active_hotspot.volume < exposed_volume) active_hotspot.volume = exposed_volume return - if((exposed_temperature > PLASMA_MINIMUM_BURN_TEMPERATURE) && (tox > 0.5 || trit > 0.5)) + if((exposed_temperature > PLASMA_MINIMUM_BURN_TEMPERATURE) && has_fuel) active_hotspot = new /obj/effect/hotspot(src, exposed_volume*25, exposed_temperature) //This is the icon for fire on turfs, also helps for nurturing small fires until they are full tile @@ -154,13 +152,7 @@ if((temperature < FIRE_MINIMUM_TEMPERATURE_TO_EXIST) || (volume <= 1)) qdel(src) return - 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(GAS_PLASMA) && INSUFFICIENT(GAS_TRITIUM)) || INSUFFICIENT(GAS_O2)) + if(!location.air || location.air.get_oxidation_power() < 0.5 || (INSUFFICIENT(GAS_PLASMA) && INSUFFICIENT(GAS_TRITIUM) && location.air.get_fuel_amount() < 0.5)) qdel(src) return diff --git a/code/modules/atmospherics/gasmixtures/gas_mixture.dm b/code/modules/atmospherics/gasmixtures/gas_mixture.dm index dd2fe3784c..2632a24915 100644 --- a/code/modules/atmospherics/gasmixtures/gas_mixture.dm +++ b/code/modules/atmospherics/gasmixtures/gas_mixture.dm @@ -226,6 +226,12 @@ we use a hook instead //Makes this mix have the same temperature and gas ratios as the giver, but with the same pressure, accounting for volume. //Returns: null +/datum/gas_mixture/proc/get_oxidation_power(temp) + //Gets how much oxidation this gas can do, optionally at a given temperature. + +/datum/gas_mixture/proc/get_fuel_amount(temp) + //Gets how much fuel for fires (not counting trit/plasma!) this gas has, optionally at a given temperature. + /proc/equalize_all_gases_in_list(list/L) //Makes every gas in the given list have the same pressure, temperature and gas proportions. //Returns: null