Made hotspots take generic fires into account

This commit is contained in:
Putnam3145
2021-06-20 18:09:11 -07:00
parent 271ab78a84
commit e65f13637d
6 changed files with 14 additions and 16 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -66,7 +66,7 @@
if(panel_open) if(panel_open)
. += "sheater-open" . += "sheater-open"
/obj/machinery/space_heater/process() /obj/machinery/space_heater/process_atmos()
if(!on || !is_operational()) if(!on || !is_operational())
if (on) // If it's broken, turn it off too if (on) // If it's broken, turn it off too
on = FALSE on = FALSE
@@ -220,7 +220,7 @@
usr.visible_message("<span class='notice'>[usr] switches [on ? "on" : "off"] \the [src].</span>", "<span class='notice'>You switch [on ? "on" : "off"] \the [src].</span>") usr.visible_message("<span class='notice'>[usr] switches [on ? "on" : "off"] \the [src].</span>", "<span class='notice'>You switch [on ? "on" : "off"] \the [src].</span>")
update_icon() update_icon()
if (on) if (on)
START_PROCESSING(SSmachines, src) SSair.atmos_air_machinery += src
. = TRUE . = TRUE
if("mode") if("mode")
setMode = params["mode"] setMode = params["mode"]

View File

@@ -117,7 +117,7 @@
specific_heat = 80 specific_heat = 80
name = "Pluoxium" name = "Pluoxium"
fusion_power = 10 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 oxidation_rate = 8
/datum/gas/miasma /datum/gas/miasma

View File

@@ -13,21 +13,19 @@
if(!air) if(!air)
return return
var/oxy = air.get_moles(GAS_O2) if (air.get_oxidation_power(exposed_temperature) < 0.5)
if (oxy < 0.5)
return return
var/tox = air.get_moles(GAS_PLASMA) 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
var/trit = air.get_moles(GAS_TRITIUM)
if(active_hotspot) if(active_hotspot)
if(soh) if(soh)
if(tox > 0.5 || trit > 0.5) if(has_fuel)
if(active_hotspot.temperature < exposed_temperature) if(active_hotspot.temperature < exposed_temperature)
active_hotspot.temperature = exposed_temperature active_hotspot.temperature = exposed_temperature
if(active_hotspot.volume < exposed_volume) if(active_hotspot.volume < exposed_volume)
active_hotspot.volume = exposed_volume active_hotspot.volume = exposed_volume
return 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) 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 //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)) if((temperature < FIRE_MINIMUM_TEMPERATURE_TO_EXIST) || (volume <= 1))
qdel(src) qdel(src)
return return
if(!location.air || (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
//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))
qdel(src) qdel(src)
return return

View File

@@ -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. //Makes this mix have the same temperature and gas ratios as the giver, but with the same pressure, accounting for volume.
//Returns: null //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) /proc/equalize_all_gases_in_list(list/L)
//Makes every gas in the given list have the same pressure, temperature and gas proportions. //Makes every gas in the given list have the same pressure, temperature and gas proportions.
//Returns: null //Returns: null