mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-26 22:42:26 +01:00
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:
@@ -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)
|
||||
|
||||
@@ -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; \
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 ..()
|
||||
|
||||
|
||||
@@ -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."
|
||||
Reference in New Issue
Block a user