Various fire bugfixes (#22431)

Fixes https://github.com/Aurorastation/Aurora.3/issues/22384.
Fixes https://github.com/Aurorastation/Aurora.3/issues/22389.
changes:
  - bugfix: "Fixes turf fires not spreading."
  - bugfix: "Fixes atmos fires not consistently igniting."
  - bugfix: "Fixes dead mobs burning forever."
  - bugfix: "Fixes fire_act() runtimes for multiple objects."
This commit is contained in:
Batrachophreno
2026-05-11 18:12:58 +00:00
committed by GitHub
parent 8855bdd0dc
commit 58b01cf856
8 changed files with 25 additions and 13 deletions
+2
View File
@@ -48,10 +48,12 @@ If it gains pressure too slowly, it may leak or just rupture instead of explodin
CHECK_COMBUSTIBLE(is_cmb, air_contents)
if(liquid && is_cmb)
IgniteTurf(liquid.amount * 10)
igniting = TRUE
QDEL_NULL(liquid)
var/obj/effect/decal/cleanable/napalm/napalm = locate() in src
if(napalm)
igniting = TRUE
napalm.Ignite()
if(is_cmb)
-3
View File
@@ -169,9 +169,6 @@ GLOBAL_LIST_INIT(pipe_colors, list(
else if(!(cmb & 2) && gas_data.flags[g] & XGM_GAS_FUEL && QUANTIZE(xgm.gas[g] * GLOB.vsc.fire_consuption_rate) >= 0.005) { \
cmb |= (1 << 1); \
} \
else if(cmb & 3) { \
break; \
} \
} \
if(cmb == 1) { \
cmb = 0; \
+3 -2
View File
@@ -351,8 +351,9 @@ update_flag
/obj/machinery/portable_atmospherics/canister/add_damage(damage, damage_flags, damage_type, armor_penetration, obj/weapon)
. = ..()
if (health <= maxhealth * 0.1)
var/atom/location = loc
location.assume_air(air_contents)
var/turf/simulated/floor/location = loc
if(air_contents)
location?.assume_air(air_contents)
destroyed = TRUE
obj_flags &= ~OBJ_FLAG_SIGNALER
+1 -1
View File
@@ -154,7 +154,7 @@
var/turf/simulated/other_tile = get_step(T, direction)
// Exit the loop early if the checked tile is not a valid direction for the fire to spread.
if(!istype(other_tile) || (T.open_directions & direction) || other_tile.hotspot || other_tile.turf_fire) //Grab all valid bordering tiles
if(!istype(other_tile) || !(T.open_directions && direction) || other_tile.hotspot || other_tile.turf_fire) //Grab all valid bordering tiles
continue
other_tile.hotspot_expose(effective_temperature)
+2 -2
View File
@@ -178,10 +178,10 @@
burst()
/obj/item/toy/balloon/fire_act(temperature, volume)
/obj/item/toy/balloon/fire_act(exposed_temperature, exposed_volume)
. = ..()
if(temperature > T0C+100)
if(exposed_temperature > T0C+100)
burst()
return
+8 -3
View File
@@ -442,14 +442,19 @@
fire_stacks = min(0, ++fire_stacks) //If we've doused ourselves in water to avoid fire, dry off slowly
if(!on_fire)
return 1
return TRUE
// If we're dead, slowly put out the fire.
if(((stat & DEAD) || (status_flags & FAKEDEATH)) && fire_stacks > 0 )
fire_stacks--
else if(fire_stacks <= 0)
ExtinguishMobCompletely() //Fire's been put out.
return 1
return TRUE
if(environment.gas[GAS_OXYGEN] < 1)
ExtinguishMobCompletely() //If there's no oxygen in the tile we're on, put out the fire
return 1
return TRUE
var/turf/location = get_turf(src)
location.hotspot_expose(fire_burn_temperature(environment), 50, 1)
+2 -2
View File
@@ -225,10 +225,10 @@
..()
/obj/structure/reagent_dispensers/fueltank/fire_act(temperature, volume)
/obj/structure/reagent_dispensers/fueltank/fire_act(exposed_temperature, exposed_volume)
if (is_leaking)
ex_act(2.0)
else if (temperature > T0C+500)
else if (exposed_temperature > T0C+500)
ex_act(2.0)
return ..()
+7
View File
@@ -0,0 +1,7 @@
author: Batrachophrenoboocosmomachia
delete-after: True
changes:
- bugfix: "Fixes turf fires not spreading."
- bugfix: "Fixes atmos fires not consistently igniting."
- bugfix: "Fixes dead mobs burning forever."
- bugfix: "Fixes fire_act() runtimes for multiple objects."