mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-23 13:05:44 +01:00
Refactored fire_act (#19158)
Refactored fire_act() to be in line with TG version, removed useless parameter, added signal, made non sleepable and forced to call parent. Added atom_act.dm file for the various *_act procs.
This commit is contained in:
+2
-2
@@ -157,9 +157,9 @@ If it gains pressure too slowly, it may leak or just rupture instead of explodin
|
||||
for(var/mob/living/L in loc)
|
||||
L.FireBurn(firelevel, air_contents.temperature, air_contents.return_pressure()) //Burn the mobs!
|
||||
|
||||
loc.fire_act(air_contents, air_contents.temperature, air_contents.volume)
|
||||
loc.fire_act(air_contents.temperature, air_contents.volume)
|
||||
for(var/atom/A in loc)
|
||||
A.fire_act(air_contents, air_contents.temperature, air_contents.volume)
|
||||
A.fire_act(air_contents.temperature, air_contents.volume)
|
||||
|
||||
//spread
|
||||
for(var/direction in GLOB.cardinal)
|
||||
|
||||
@@ -6,3 +6,5 @@
|
||||
#define COMSIG_ATOM_PRE_EMP_ACT "atom_emp_act"
|
||||
///from base of atom/emp_act(): (severity, protection)
|
||||
#define COMSIG_ATOM_EMP_ACT "atom_emp_act"
|
||||
///from base of atom/fire_act(): (exposed_temperature, exposed_volume)
|
||||
#define COMSIG_ATOM_FIRE_ACT "atom_fire_act"
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
* +++++++++++++++++++++++++++++++++++++++++ ABOUT THIS FILE +++++++++++++++++++++++++++++++++++++++++++++
|
||||
* Not everything here necessarily has the name pattern of [x]_act()
|
||||
* This is a file for various atom procs that simply get called when something is happening to that atom.
|
||||
* If you're adding something here, you likely want a signal and SHOULD_CALL_PARENT(TRUE)
|
||||
* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
*/
|
||||
|
||||
/**
|
||||
* Respond to fire being used on our atom
|
||||
*
|
||||
* Default behaviour is to send [COMSIG_ATOM_FIRE_ACT] and return
|
||||
*
|
||||
* * exposed_temperature - The temperature the atom was exposed to, in kelvin
|
||||
* * exposed_volume - The volume the atom was exposed to, in units
|
||||
*/
|
||||
/atom/proc/fire_act(exposed_temperature, exposed_volume)
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
SHOULD_NOT_SLEEP(TRUE)
|
||||
SEND_SIGNAL(src, COMSIG_ATOM_FIRE_ACT, exposed_temperature, exposed_volume)
|
||||
return
|
||||
|
||||
|
||||
/*
|
||||
THESE ARE LEGACY ONES, NOT UPDATED YET
|
||||
*/
|
||||
|
||||
/atom/proc/ex_act()
|
||||
set waitfor = FALSE
|
||||
return
|
||||
|
||||
/atom/proc/emag_act(var/remaining_charges, var/mob/user, var/emag_source)
|
||||
return NO_EMAG_ACT
|
||||
@@ -355,16 +355,6 @@
|
||||
L.source_atom.update_light()
|
||||
GLOB.dir_set_event.raise_event(src, old_dir, dir)
|
||||
|
||||
/atom/proc/ex_act()
|
||||
set waitfor = FALSE
|
||||
return
|
||||
|
||||
/atom/proc/emag_act(var/remaining_charges, var/mob/user, var/emag_source)
|
||||
return NO_EMAG_ACT
|
||||
|
||||
/atom/proc/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
return
|
||||
|
||||
/atom/proc/melt()
|
||||
return
|
||||
|
||||
|
||||
@@ -313,7 +313,9 @@ update_flag
|
||||
AddOverlays(indicator_overlay)
|
||||
set_light(1.4, 1, COLOR_BRIGHT_GREEN)
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
/obj/machinery/portable_atmospherics/canister/fire_act(exposed_temperature, exposed_volume)
|
||||
. = ..()
|
||||
|
||||
if(exposed_temperature > temperature_resistance)
|
||||
health -= 5
|
||||
healthcheck()
|
||||
|
||||
@@ -780,7 +780,9 @@
|
||||
door_color = COLOR_VIOLET
|
||||
mineral = MATERIAL_PHORON
|
||||
|
||||
/obj/machinery/door/airlock/phoron/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
/obj/machinery/door/airlock/phoron/fire_act(exposed_temperature, exposed_volume)
|
||||
. = ..()
|
||||
|
||||
if(exposed_temperature > 300)
|
||||
PhoronBurn(exposed_temperature)
|
||||
|
||||
|
||||
@@ -75,11 +75,12 @@
|
||||
AddOverlays("fire0")
|
||||
set_light(0)
|
||||
|
||||
/obj/machinery/firealarm/fire_act(datum/gas_mixture/air, temperature, volume)
|
||||
/obj/machinery/firealarm/fire_act(exposed_temperature, exposed_volume)
|
||||
. = ..()
|
||||
|
||||
if(src.detecting)
|
||||
if(temperature > T0C+200)
|
||||
if(exposed_temperature > T0C+200)
|
||||
src.alarm() // added check of detector status here
|
||||
return
|
||||
|
||||
/obj/machinery/firealarm/bullet_act()
|
||||
return src.alarm()
|
||||
|
||||
@@ -69,7 +69,9 @@
|
||||
for(var/_R in reagents.reagent_volumes)
|
||||
F.reagents.add_reagent(_R, 1, safety = 1) //added safety check since reagents in the foam have already had a chance to react
|
||||
|
||||
/obj/effect/effect/foam/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) // foam disolves when heated, except metal foams
|
||||
/obj/effect/effect/foam/fire_act(exposed_temperature, exposed_volume) // foam disolves when heated, except metal foams
|
||||
. = ..()
|
||||
|
||||
if(!metal && prob(max(0, exposed_temperature - 475)))
|
||||
flick("[icon_state]-disolve", src)
|
||||
|
||||
|
||||
@@ -46,7 +46,9 @@
|
||||
if(health <= 0)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/spider/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
/obj/effect/spider/fire_act(exposed_temperature, exposed_volume)
|
||||
. = ..()
|
||||
|
||||
if(exposed_temperature > 300 + T0C)
|
||||
health -= 5
|
||||
healthcheck()
|
||||
|
||||
@@ -114,7 +114,7 @@
|
||||
//Step two - washing..... it's actually in washing machine code.
|
||||
|
||||
//Step three - drying
|
||||
/obj/item/stack/material/animalhide/wetleather/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
/obj/item/stack/material/animalhide/wetleather/fire_act(exposed_temperature, exposed_volume)
|
||||
..()
|
||||
if(exposed_temperature >= drying_threshold_temperature)
|
||||
wetness--
|
||||
|
||||
@@ -170,7 +170,9 @@
|
||||
/obj/item/toy/balloon/bullet_act()
|
||||
burst()
|
||||
|
||||
/obj/item/toy/balloon/fire_act(datum/gas_mixture/air, temperature, volume)
|
||||
/obj/item/toy/balloon/fire_act(temperature, volume)
|
||||
. = ..()
|
||||
|
||||
if(temperature > T0C+100)
|
||||
burst()
|
||||
return
|
||||
|
||||
@@ -57,6 +57,8 @@
|
||||
if(!active)
|
||||
prime()
|
||||
|
||||
/obj/item/grenade/dynamite/fire_act()
|
||||
/obj/item/grenade/dynamite/fire_act(exposed_temperature, exposed_volume)
|
||||
. = ..()
|
||||
|
||||
if(!active)
|
||||
prime()
|
||||
|
||||
@@ -944,7 +944,9 @@
|
||||
to_chat(user, SPAN_WARNING("The cell isn't charged!"))
|
||||
return TRUE
|
||||
|
||||
/obj/item/steelwool/fire_act()
|
||||
/obj/item/steelwool/fire_act(exposed_temperature, exposed_volume)
|
||||
. = ..()
|
||||
|
||||
ignite()
|
||||
|
||||
/obj/item/steelwool/proc/ignite(var/L, mob/user)
|
||||
|
||||
@@ -132,7 +132,9 @@
|
||||
health -= maxHealth / 5
|
||||
healthcheck()
|
||||
|
||||
/obj/structure/gore/tendrils/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
/obj/structure/gore/tendrils/fire_act(exposed_temperature, exposed_volume)
|
||||
. = ..()
|
||||
|
||||
if(exposed_temperature > 300 + T0C)
|
||||
health -= 5
|
||||
healthcheck()
|
||||
|
||||
@@ -274,7 +274,7 @@
|
||||
return 0
|
||||
return 0
|
||||
|
||||
/obj/structure/grille/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
/obj/structure/grille/fire_act(exposed_temperature, exposed_volume)
|
||||
if(!destroyed)
|
||||
if(exposed_temperature > T0C + 1500)
|
||||
health -= 1
|
||||
|
||||
@@ -15,7 +15,9 @@
|
||||
var/health = 100
|
||||
var/maxhealth = 100
|
||||
|
||||
/obj/structure/simple_door/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
/obj/structure/simple_door/fire_act(exposed_temperature, exposed_volume)
|
||||
. = ..()
|
||||
|
||||
TemperatureAct(exposed_temperature)
|
||||
|
||||
/obj/structure/simple_door/proc/TemperatureAct(temperature)
|
||||
|
||||
@@ -323,7 +323,9 @@
|
||||
anchored = FALSE
|
||||
density = FALSE
|
||||
|
||||
/obj/structure/flora/log_bench/fire_act()
|
||||
/obj/structure/flora/log_bench/fire_act(exposed_temperature, exposed_volume)
|
||||
. = ..()
|
||||
|
||||
for(var/obj/structure/bonfire/B in get_turf(src))
|
||||
if(B.on_fire)
|
||||
B.fuel = min(B.max_fuel, B.fuel + 300)
|
||||
|
||||
@@ -409,7 +409,7 @@
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/structure/window/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
/obj/structure/window/fire_act(exposed_temperature, exposed_volume)
|
||||
if(exposed_temperature > maximal_heat)
|
||||
hit(damage_per_fire_tick, 0)
|
||||
..()
|
||||
|
||||
@@ -32,7 +32,8 @@
|
||||
src.hotspot_expose(1000,CELL_VOLUME)
|
||||
return
|
||||
|
||||
/turf/simulated/floor/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
/turf/simulated/floor/fire_act(exposed_temperature, exposed_volume)
|
||||
. = ..()
|
||||
|
||||
var/temp_destroy = get_damage_temperature()
|
||||
if(!burnt && prob(5))
|
||||
@@ -51,4 +52,4 @@
|
||||
|
||||
for(var/obj/structure/window/W in src)
|
||||
if(W.dir == dir_to || W.is_fulltile()) //Same direction or diagonal (full tile)
|
||||
W.fire_act(adj_air, adj_temp, adj_volume)
|
||||
W.fire_act(adj_temp, adj_volume)
|
||||
|
||||
@@ -183,7 +183,8 @@
|
||||
|
||||
return
|
||||
|
||||
/turf/simulated/wall/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) //Doesn't fucking work because walls don't interact with air :[
|
||||
/turf/simulated/wall/fire_act(exposed_temperature, exposed_volume) //Doesn't fucking work because walls don't interact with air :[
|
||||
. = ..()
|
||||
burn(exposed_temperature)
|
||||
|
||||
/turf/simulated/wall/adjacent_fire_act(turf/simulated/floor/adj_turf, datum/gas_mixture/adj_air, adj_temp, adj_volume)
|
||||
|
||||
@@ -227,7 +227,9 @@
|
||||
|
||||
take_damage(damage)
|
||||
|
||||
/obj/effect/blob/fire_act()
|
||||
/obj/effect/blob/fire_act(exposed_temperature, exposed_volume)
|
||||
. = ..()
|
||||
|
||||
take_damage(rand(5, 20) / fire_resist)
|
||||
|
||||
#define CORE_SHIELD_HIGH "high"
|
||||
|
||||
@@ -206,7 +206,9 @@
|
||||
wipe_down(A, user)
|
||||
return
|
||||
|
||||
/obj/item/reagent_containers/glass/rag/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
/obj/item/reagent_containers/glass/rag/fire_act(exposed_temperature, exposed_volume)
|
||||
. = ..()
|
||||
|
||||
if(exposed_temperature >= 50 + T0C)
|
||||
ignite()
|
||||
if(exposed_temperature >= 900 + T0C)
|
||||
|
||||
@@ -335,7 +335,7 @@
|
||||
|
||||
// ++++ROCKDTBEN++++ MOB PROCS //END
|
||||
|
||||
/mob/living/carbon/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
/mob/living/carbon/fire_act(exposed_temperature, exposed_volume)
|
||||
..()
|
||||
var/temp_inc = max(min(BODYTEMP_HEATING_MAX*(1-get_heat_protection()), exposed_temperature - bodytemperature), 0)
|
||||
bodytemperature += temp_inc
|
||||
|
||||
@@ -337,7 +337,9 @@
|
||||
var/turf/location = get_turf(src)
|
||||
location.hotspot_expose(fire_burn_temperature(), 50, 1)
|
||||
|
||||
/mob/living/fire_act()
|
||||
/mob/living/fire_act(exposed_temperature, exposed_volume)
|
||||
. = ..()
|
||||
|
||||
IgniteMob(2)
|
||||
|
||||
/mob/living/proc/get_cold_protection()
|
||||
|
||||
@@ -329,6 +329,8 @@
|
||||
AddOverlays(image("icon" = 'icons/mob/burning/burning_generic.dmi', "icon_state" = "upper"))
|
||||
AddOverlays(image("icon" = 'icons/mob/burning/burning_generic.dmi', "icon_state" = "lower"))
|
||||
|
||||
/mob/living/silicon/robot/fire_act()
|
||||
/mob/living/silicon/robot/fire_act(exposed_temperature, exposed_volume)
|
||||
. = ..()
|
||||
|
||||
if(!on_fire) // Silicons don't gain stacks from hotspots, but hotspots can ignite them.
|
||||
IgniteMob()
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
death()
|
||||
return ..()
|
||||
|
||||
/obj/structure/flora/pottedplant/fire_act()
|
||||
/obj/structure/flora/pottedplant/fire_act(exposed_temperature, exposed_volume)
|
||||
death()
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
death()
|
||||
return ..()
|
||||
|
||||
/obj/item/flora/pottedplant_small/fire_act()
|
||||
/obj/item/flora/pottedplant_small/fire_act(exposed_temperature, exposed_volume)
|
||||
death()
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -20,7 +20,8 @@
|
||||
SSicon_smooth.add_to_queue_neighbors(src)
|
||||
SSicon_smooth.add_to_queue(src)
|
||||
|
||||
/turf/simulated/floor/exoplanet/snow/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
/turf/simulated/floor/exoplanet/snow/fire_act(exposed_temperature, exposed_volume)
|
||||
. = ..()
|
||||
melt()
|
||||
|
||||
/turf/simulated/floor/exoplanet/snow/melt()
|
||||
|
||||
@@ -105,7 +105,9 @@
|
||||
if(ammunition_flags & SHIP_AMMO_FLAG_INFLAMMABLE)
|
||||
cookoff(TRUE)
|
||||
|
||||
/obj/item/ship_ammunition/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
/obj/item/ship_ammunition/fire_act(exposed_temperature, exposed_volume)
|
||||
. = ..()
|
||||
|
||||
if(ammunition_flags & SHIP_AMMO_FLAG_INFLAMMABLE)
|
||||
if(exposed_temperature >= T0C+200)
|
||||
cookoff(TRUE)
|
||||
|
||||
@@ -155,7 +155,9 @@
|
||||
/obj/item/warhead/longbow/ex_act(severity)
|
||||
cookoff(TRUE)
|
||||
|
||||
/obj/item/warhead/longbow/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
/obj/item/warhead/longbow/fire_act(exposed_temperature, exposed_volume)
|
||||
. = ..()
|
||||
|
||||
if(exposed_temperature >= T0C+200)
|
||||
cookoff(TRUE)
|
||||
|
||||
|
||||
@@ -695,7 +695,9 @@
|
||||
|
||||
// called when on fire
|
||||
|
||||
/obj/machinery/light/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
/obj/machinery/light/fire_act(exposed_temperature, exposed_volume)
|
||||
. = ..()
|
||||
|
||||
if(prob(max(0, exposed_temperature - 673))) //0% at <400C, 100% at >500C
|
||||
broken()
|
||||
|
||||
|
||||
@@ -220,10 +220,10 @@
|
||||
detonate(TRUE)
|
||||
. = ..()
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/cans/fire_act()
|
||||
/obj/item/reagent_containers/food/drinks/cans/fire_act(exposed_temperature, exposed_volume)
|
||||
if(can_light())
|
||||
fuselit = TRUE
|
||||
detonate(FALSE)
|
||||
INVOKE_ASYNC(src, PROC_REF(detonate), FALSE)
|
||||
visible_message(SPAN_WARNING("<b>\The [name]'s fuse catches on fire!</b>"))
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -220,7 +220,7 @@
|
||||
|
||||
..()
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank/fire_act(datum/gas_mixture/air, temperature, volume)
|
||||
/obj/structure/reagent_dispensers/fueltank/fire_act(temperature, volume)
|
||||
if (is_leaking)
|
||||
ex_act(2.0)
|
||||
else if (temperature > T0C+500)
|
||||
|
||||
@@ -145,7 +145,9 @@
|
||||
if(H)
|
||||
H.apply_damage(Proj.damage, DAMAGE_PAIN)
|
||||
|
||||
/obj/item/poppet/fire_act()
|
||||
/obj/item/poppet/fire_act(exposed_temperature, exposed_volume)
|
||||
. = ..()
|
||||
|
||||
var/mob/living/carbon/human/H = target.resolve()
|
||||
if(H)
|
||||
H.adjust_fire_stacks(2)
|
||||
|
||||
Reference in New Issue
Block a user