diff --git a/code/ATMOSPHERICS/hvac/spaceheater.dm b/code/ATMOSPHERICS/hvac/spaceheater.dm
index c1f2a28779c..bfe9124636f 100644
--- a/code/ATMOSPHERICS/hvac/spaceheater.dm
+++ b/code/ATMOSPHERICS/hvac/spaceheater.dm
@@ -411,7 +411,7 @@
if(istype(user,/mob/living/carbon) && on)
var/mob/living/carbon/absolutemadman = user
absolutemadman.adjust_fire_stacks(1)
- if(absolutemadman.IgniteMob())
+ if(absolutemadman.ignite())
absolutemadman.visible_message("[user] walks into \the [src], and is set alight!", "You walk into \the [src], and are set alight!")
/obj/machinery/space_heater/campfire/stove/fireplace
diff --git a/code/ZAS/Fire.dm b/code/ZAS/Fire.dm
index 4c26ca0574b..14785fee075 100644
--- a/code/ZAS/Fire.dm
+++ b/code/ZAS/Fire.dm
@@ -613,6 +613,10 @@ var/ZAS_fuel_energy_release_rate = zas_settings.Get(/datum/ZAS_Setting/fire_fuel
/obj/effect/fire/burnLiquidFuel()
return 0
+/obj/effect/fire/Crossed(atom/movable/AM)
+ AM.ignite()
+ ..()
+
/obj/effect/fire/process()
if(timestopped)
return 0
@@ -657,7 +661,7 @@ var/ZAS_fuel_energy_release_rate = zas_settings.Get(/datum/ZAS_Setting/fire_fuel
for(var/mob/living/carbon/human/M in S)
if(M.mutations.Find(M_UNBURNABLE))
continue
- M.FireBurn(firelevel, FLAME_TEMPERATURE_PLASTIC, air_contents.return_pressure())
+ M.fire_act(air_contents, FLAME_TEMPERATURE_PLASTIC, air_contents.return_volume())
//Burn items in the turf.
for(var/atom/A in S)
@@ -880,53 +884,3 @@ var/ZAS_fuel_energy_release_rate = zas_settings.Get(/datum/ZAS_Setting/fire_fuel
firelevel = ZAS_firelevel_multiplier * mix_multiplier * dampening_multiplier
return max(0, firelevel)
-
-
-///////////////////////////////////////////////
-// BURNING MOBS
-///////////////////////////////////////////////
-/mob/living/proc/FireBurn(var/firelevel, var/last_temperature, var/pressure)
- var/mx = 5 * firelevel/ZAS_firelevel_multiplier * min(pressure / ONE_ATMOSPHERE, 1)
- apply_damage(2.5*mx, BURN)
-
-/mob/living/carbon/human/FireBurn(var/firelevel, var/last_temperature, var/pressure)
- var/head_exposure = 1
- var/chest_exposure = 1
- var/groin_exposure = 1
- var/legs_exposure = 1
- var/arms_exposure = 1
-
- //Get heat transfer coefficients for clothing.
- for(var/obj/item/clothing/C in src)
- if(is_holding_item(C))
- continue
- if(C.max_heat_protection_temperature >= last_temperature)
- if(!is_slot_hidden(C.body_parts_covered,FULL_HEAD))
- head_exposure = 0
- if(!is_slot_hidden(C.body_parts_covered,UPPER_TORSO))
- chest_exposure = 0
- if(!is_slot_hidden(C.body_parts_covered,LOWER_TORSO))
- groin_exposure = 0
- if(!is_slot_hidden(C.body_parts_covered,LEGS))
- legs_exposure = 0
- if(!is_slot_hidden(C.body_parts_covered,ARMS))
- arms_exposure = 0
-
- //minimize this for low-pressure enviroments
- var/mx = 5 * max(firelevel,1.5)/ZAS_firelevel_multiplier * min(pressure / ONE_ATMOSPHERE, 1)
-
- //Always check these damage procs first if fire damage isn't working. They're probably what's wrong.
- var/fire_tile_modifier = 4 //multiplier for damage received while standing on a fire tile
- apply_damage(fire_tile_modifier*HEAD_FIRE_DAMAGE_MULTIPLIER*mx*head_exposure, BURN, LIMB_HEAD, 0, 0, used_weapon = "Fire")
- apply_damage(fire_tile_modifier*CHEST_FIRE_DAMAGE_MULTIPLIER*mx*chest_exposure, BURN, LIMB_CHEST, 0, 0, used_weapon ="Fire")
- apply_damage(fire_tile_modifier*GROIN_FIRE_DAMAGE_MULTIPLIER*mx*groin_exposure, BURN, LIMB_GROIN, 0, 0, used_weapon ="Fire")
- apply_damage(fire_tile_modifier*LEGS_FIRE_DAMAGE_MULTIPLIER*mx*legs_exposure, BURN, LIMB_LEFT_LEG, 0, 0, used_weapon = "Fire")
- apply_damage(fire_tile_modifier*LEGS_FIRE_DAMAGE_MULTIPLIER*mx*legs_exposure, BURN, LIMB_RIGHT_LEG, 0, 0, used_weapon = "Fire")
- apply_damage(fire_tile_modifier*ARMS_FIRE_DAMAGE_MULTIPLIER*mx*arms_exposure, BURN, LIMB_LEFT_ARM, 0, 0, used_weapon = "Fire")
- apply_damage(fire_tile_modifier*ARMS_FIRE_DAMAGE_MULTIPLIER*mx*arms_exposure, BURN, LIMB_RIGHT_ARM, 0, 0, used_weapon = "Fire")
-
- if(head_exposure || chest_exposure || groin_exposure || legs_exposure || arms_exposure)
- dizziness = 5
- confused = 5
- if(prob(25))
- audible_scream()
diff --git a/code/datums/gamemode/factions/bloodcult/bloodcult_items.dm b/code/datums/gamemode/factions/bloodcult/bloodcult_items.dm
index c3ae1767941..4e91d6d2bc0 100644
--- a/code/datums/gamemode/factions/bloodcult/bloodcult_items.dm
+++ b/code/datums/gamemode/factions/bloodcult/bloodcult_items.dm
@@ -1402,7 +1402,7 @@ var/list/arcane_tomes = list()
next_extinguish = world.time + extinguish_cooldown
to_chat(H, "Your armor automatically extinguishes the fire.")
- H.ExtinguishMob()
+ H.extinguish()
//plasmaman stuff
/obj/item/clothing/suit/cultrobes/regulate_temp_of_wearer(var/mob/living/carbon/human/H)
@@ -1519,7 +1519,7 @@ var/list/arcane_tomes = list()
next_extinguish = world.time + extinguish_cooldown
to_chat(H, "Your armor automatically extinguishes the fire.")
- H.ExtinguishMob()
+ H.extinguish()
//plasmaman stuff
/obj/item/clothing/suit/space/cult/regulate_temp_of_wearer(var/mob/living/carbon/human/H)
diff --git a/code/datums/gamemode/role/vampire_role.dm b/code/datums/gamemode/role/vampire_role.dm
index 71f001c9ed2..63a35bb0e64 100644
--- a/code/datums/gamemode/role/vampire_role.dm
+++ b/code/datums/gamemode/role/vampire_role.dm
@@ -407,7 +407,7 @@
else if(prob(35))
to_chat(H, "The holy flames continue to burn your flesh!")
H.fire_stacks += 5
- H.IgniteMob()
+ H.ignite()
/datum/role/vampire/proc/remove_blood(var/amount)
blood_usable = max(0, blood_usable - amount)
@@ -532,13 +532,13 @@
else
to_chat(src, "You continue to burn!")
fire_stacks += 5
- IgniteMob()
+ ignite()
audible_scream()
else
switch(health)
if((-INFINITY) to 60)
fire_stacks++
- IgniteMob()
+ ignite()
adjustFireLoss(3)
/*
diff --git a/code/datums/religions.dm b/code/datums/religions.dm
index 84acf148585..ba62b11fb64 100755
--- a/code/datums/religions.dm
+++ b/code/datums/religions.dm
@@ -261,7 +261,7 @@ var/list/tgui_religion_data
if (B.my_rel != src) // BLASPHEMY
to_chat(preacher, "You are a heathen to this God. You feel [B.my_rel.deity_name]'s wrath strike you for this blasphemy.")
preacher.fire_stacks += 5
- preacher.IgniteMob()
+ preacher.ignite()
preacher.audible_scream()
return FALSE
if (preacher != religiousLeader.current)
diff --git a/code/game/dna/genes/goon_powers.dm b/code/game/dna/genes/goon_powers.dm
index 07ee1be8327..75b8b20aac0 100644
--- a/code/game/dna/genes/goon_powers.dm
+++ b/code/game/dna/genes/goon_powers.dm
@@ -182,7 +182,7 @@
if(!handle_suit)
target.bodytemperature = max(T0C + 29, target.bodytemperature - 5)
target.adjustFireLoss(10)
- target.ExtinguishMob()
+ target.extinguish()
target.visible_message("A cloud of fine ice crystals engulfs [target]!")
diff --git a/code/game/gamemodes/wizard/spellbook_oneuse.dm b/code/game/gamemodes/wizard/spellbook_oneuse.dm
index 562cf20868b..86cfeeee661 100644
--- a/code/game/gamemodes/wizard/spellbook_oneuse.dm
+++ b/code/game/gamemodes/wizard/spellbook_oneuse.dm
@@ -419,7 +419,7 @@
/obj/item/weapon/spellbook/oneuse/ringoffire/recoil(mob/living/carbon/user as mob)
user.adjust_fire_stacks(10)
- user.IgniteMob()
+ user.ignite()
to_chat(user, "The book sets you alight!")
/obj/item/weapon/spellbook/oneuse/mirror_of_pain
@@ -462,7 +462,7 @@
/obj/item/weapon/spellbook/oneuse/firebreath/recoil(mob/living/carbon/user)
to_chat(user, "You burst into flames!")
user.adjust_fire_stacks(0.5)
- user.IgniteMob()
+ user.ignite()
/obj/item/weapon/spellbook/oneuse/snakes
spell = /spell/aoe_turf/conjure/snakes
diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm
index 456f37db0e2..03f3b050025 100644
--- a/code/game/machinery/cryo.dm
+++ b/code/game/machinery/cryo.dm
@@ -33,7 +33,7 @@ var/global/list/cryo_health_indicator = list( "full" = image("icon" = 'icons/obj
/obj/machinery/atmospherics/unary/cryo_cell/Entered(var/atom/movable/Obj, var/atom/OldLoc)
. = ..()
-
+
if(OldLoc.type != src.type)
spawn(rand(0,6))
if(OldLoc.type != src.type)
@@ -641,7 +641,7 @@ var/global/list/cryo_health_indicator = list( "full" = image("icon" = 'icons/obj
M.drop_item(I) // to avoid visual fuckery bobing. Doesn't do anything to items with cant_drop to avoid magic healing tube abuse.
update_icon()
nanomanager.update_uis(src)
- M.ExtinguishMob()
+ M.extinguish()
M.throw_alert(SCREEN_ALARM_CRYO, /obj/abstract/screen/alert/object/cryo, new_master = src)
if(user)
if(M == user)
diff --git a/code/game/machinery/firefoam_popper.dm b/code/game/machinery/firefoam_popper.dm
index 307b29931a4..b98185f163a 100644
--- a/code/game/machinery/firefoam_popper.dm
+++ b/code/game/machinery/firefoam_popper.dm
@@ -165,7 +165,7 @@
if(F.reagents.has_reagent(WATER))
if(isliving(atm))
var/mob/living/M = atm
- M.ExtinguishMob()
+ M.extinguish()
if(atm.on_fire)
atm.extinguish()
explosion(get_turf(src),0,0,0)
diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm
index f0fbeeaf201..0cb04d9dc38 100644
--- a/code/game/mecha/equipment/tools/tools.dm
+++ b/code/game/mecha/equipment/tools/tools.dm
@@ -388,7 +388,7 @@
if(W.reagents.has_reagent(WATER))
if(isliving(atm)) // For extinguishing mobs on fire
var/mob/living/M = atm // Why isn't this handled by the reagent? - N3X
- M.ExtinguishMob()
+ M.extinguish()
if(atm.on_fire) // For extinguishing objects on fire
atm.extinguish()
if(atm.molten) // Molten shit.
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index 4124d52ce8b..1c6a1a07429 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -775,7 +775,7 @@
for(var/mob/living/cookedalive as anything in occupant)
if(cookedalive.fire_stacks < 5)
cookedalive.adjust_fire_stacks(1)
- cookedalive.IgniteMob()
+ cookedalive.ignite()
return
@@ -802,7 +802,7 @@
if(equipment.len >= max_equip)
return 0
return max_equip - equipment.len
-
+
/obj/mecha/proc/is_killdozer()
for(var/obj/I in equipment)
if(istype(I, /obj/item/mecha_parts/mecha_equipment/passive/killdozer_kit))
diff --git a/code/game/objects/effects/fire_blast.dm b/code/game/objects/effects/fire_blast.dm
index 03bf0872304..e4b8c23835f 100644
--- a/code/game/objects/effects/fire_blast.dm
+++ b/code/game/objects/effects/fire_blast.dm
@@ -105,7 +105,7 @@
/obj/effect/fire_blast/proc/burn_mob(mob/living/L, var/adjusted_fire_damage)
if(!L.on_fire)
L.adjust_fire_stacks(0.5)
- L.IgniteMob()
+ L.ignite()
if(L.mutations.Find(M_RESIST_HEAT)) //Heat resistance protects you from damage, but you still get set on fire
return
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index a63d0e47abf..9f6e02a5dbc 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -194,7 +194,7 @@
return SUICIDE_ACT_BRUTELOSS
else if (is_hot())
user.visible_message("[user] is immolating \himself with \the [src]! It looks like \he's trying to commit suicide.")
- user.IgniteMob()
+ user.ignite()
return SUICIDE_ACT_FIRELOSS
else if (force >= 10)
user.visible_message("[user] is bludgeoning \himself with \the [src]! It looks like \he's trying to commit suicide.")
diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm
index 4a7bf05f8e6..bc9d5a1846a 100644
--- a/code/game/objects/items/devices/flashlight.dm
+++ b/code/game/objects/items/devices/flashlight.dm
@@ -390,7 +390,7 @@ var/list/obj/item/device/flashlight/lamp/lamps = list()
qdel(src)
if(!fuel)
return (SUICIDE_ACT_TOXLOSS)
- user.IgniteMob()
+ user.ignite()
return (SUICIDE_ACT_TOXLOSS|SUICIDE_ACT_FIRELOSS)
/obj/item/device/flashlight/flare/ever_bright/New()
diff --git a/code/game/objects/items/robot/robot_items/robot_axe.dm b/code/game/objects/items/robot/robot_items/robot_axe.dm
index 02fc63970bb..fda3ff4bcbc 100644
--- a/code/game/objects/items/robot/robot_items/robot_axe.dm
+++ b/code/game/objects/items/robot/robot_items/robot_axe.dm
@@ -64,7 +64,7 @@
/obj/item/weapon/pickaxe/plasmacutter/heat_axe/proc/HellFire(var/mob/living/victim)
if(isliving(victim) && active) //Just to be sure.
victim.adjust_fire_stacks(1)
- if(victim.IgniteMob())
+ if(victim.ignite())
to_chat(victim, "You are lit on fire from the intense heat of the [name]!")
/obj/item/weapon/pickaxe/plasmacutter/heat_axe/preattack(atom/target, mob/user, proximity_flag)
@@ -79,4 +79,4 @@
/obj/item/weapon/pickaxe/plasmacutter/heat_axe/attack(mob/living/target, mob/living/user)
if(target)
HellFire(target)
- ..()
\ No newline at end of file
+ ..()
diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm
index afa9cd8093d..d9195c5dbe7 100644
--- a/code/game/objects/items/weapons/cigs_lighters.dm
+++ b/code/game/objects/items/weapons/cigs_lighters.dm
@@ -467,7 +467,7 @@ MATCHBOXES ARE ALSO IN FANCY.DM
var/turf/location = get_turf(src)
var/mob/living/M = get_holder_of_type(src,/mob/living)
if(isliving(loc))
- M.IgniteMob()
+ M.ignite()
smoketime--
if (smoketime == 5 && ismob(loc))
to_chat(M, "Your [name] is about to go out.")
diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm
index af008ebb23d..97b5b25a92f 100644
--- a/code/game/objects/items/weapons/extinguisher.dm
+++ b/code/game/objects/items/weapons/extinguisher.dm
@@ -294,7 +294,7 @@
if(W.reagents.has_reagent(WATER))
if(isliving(atm)) // For extinguishing mobs on fire
var/mob/living/M = atm // Why isn't this handled by the reagent? - N3X
- M.ExtinguishMob()
+ M.extinguish()
if(atm.on_fire) // For extinguishing objects on fire
atm.extinguish()
if(atm.molten) // Molten shit.
diff --git a/code/game/objects/items/weapons/storage/bible.dm b/code/game/objects/items/weapons/storage/bible.dm
index 6b846bb0995..99d574eb49f 100644
--- a/code/game/objects/items/weapons/storage/bible.dm
+++ b/code/game/objects/items/weapons/storage/bible.dm
@@ -23,7 +23,7 @@
user.emote("fart")
sleep(1 SECONDS) //Wait for it
user.fire_stacks += 5
- user.IgniteMob()
+ user.ignite()
user.audible_scream()
return SUICIDE_ACT_FIRELOSS //Set ablaze and burned to crisps
@@ -127,13 +127,13 @@
if(V) //Vampire trying to use it
to_chat(user, "[my_rel.deity_name] channels through \the [src] and sets you ablaze for your blasphemy!")
user.fire_stacks += 5
- user.IgniteMob()
+ user.ignite()
user.audible_scream()
V.smitecounter += 50 //Once we are extinguished, we will be quite vulnerable regardless
else if(isanycultist(user)) //Cultist trying to use it
to_chat(user, "[my_rel.deity_name] channels through \the [src] and sets you ablaze for your blasphemy!")
user.fire_stacks += 5
- user.IgniteMob()
+ user.ignite()
user.audible_scream()
else //Literally anyone else than a Cultist using it, at this point it's just a big book
..() //WHACK
diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm
index 112e843c8b6..65cdb4eeb3c 100644
--- a/code/game/objects/items/weapons/tools.dm
+++ b/code/game/objects/items/weapons/tools.dm
@@ -437,7 +437,7 @@
if (src.welding)
if(isliving(A))
var/mob/living/L = A
- L.IgniteMob()
+ L.ignite()
remove_fuel(1)
/obj/item/tool/weldingtool/attack_self(mob/user as mob)
diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm
index 0050bb82526..368dc7cd3f1 100644
--- a/code/game/objects/objs.dm
+++ b/code/game/objects/objs.dm
@@ -411,7 +411,7 @@ var/global/list/reagents_to_log = list(FUEL, PLASMA, PACID, SACID, AMUTATIONTOXI
/obj/suicide_act(var/mob/living/user)
if (is_hot())
user.visible_message("[user] is immolating \himself on \the [src]! It looks like \he's trying to commit suicide.")
- user.IgniteMob()
+ user.ignite()
return SUICIDE_ACT_FIRELOSS
else if (sharpness >= 1)
user.visible_message("[user] impales himself on \the [src]! It looks like \he's trying to commit suicide.")
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 9243490cdba..5a5b0ed02a2 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -582,7 +582,7 @@
else
visible_message("\The [user] attempts to put out the fire on \the [target] with \the [src].")
if(prob(extinguishingProb))
- M.ExtinguishMob()
+ M.extinguish()
visible_message("\The [user] puts out the fire on \the [target].")
return
diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm
index 492e54b1c68..70e311bd96c 100644
--- a/code/modules/clothing/spacesuits/plasmamen.dm
+++ b/code/modules/clothing/spacesuits/plasmamen.dm
@@ -26,7 +26,7 @@
next_extinguish = world.time + extinguish_cooldown
to_chat(H, "Your suit automatically extinguishes the fire.")
- H.ExtinguishMob()
+ H.extinguish()
/obj/item/clothing/suit/space/plasmaman/regulate_temp_of_wearer(var/mob/living/carbon/human/H)
if(H.bodytemperature < T0C+37)
diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm
index 93b5e751883..c53a00c5032 100644
--- a/code/modules/mining/ores_coins.dm
+++ b/code/modules/mining/ores_coins.dm
@@ -75,7 +75,7 @@
for(var/atom/atm in T) //extinguishing things
if(isliving(atm)) // For extinguishing mobs on fire
var/mob/living/M = atm
- M.ExtinguishMob()
+ M.extinguish()
if(atm.on_fire) // For extinguishing objects on fire
atm.extinguish()
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index 1d0d44325af..16784dae7be 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -624,3 +624,45 @@ emp_act
/mob/living/carbon/human/beam_defense(var/obj/effect/beam/B)
return is_wearing_item(/obj/item/clothing/suit/reticulatedvest) ? 0.4 : 1
+
+/mob/living/carbon/human/FireBurn(firelevel = 0, temperature, pressure)
+ var/head_exposure = 1
+ var/chest_exposure = 1
+ var/groin_exposure = 1
+ var/legs_exposure = 1
+ var/arms_exposure = 1
+
+ //Get heat transfer coefficients for clothing.
+ for(var/obj/item/clothing/C in src)
+ if(is_holding_item(C))
+ continue
+ if(C.max_heat_protection_temperature >= temperature)
+ if(!is_slot_hidden(C.body_parts_covered,FULL_HEAD))
+ head_exposure = 0
+ if(!is_slot_hidden(C.body_parts_covered,UPPER_TORSO))
+ chest_exposure = 0
+ if(!is_slot_hidden(C.body_parts_covered,LOWER_TORSO))
+ groin_exposure = 0
+ if(!is_slot_hidden(C.body_parts_covered,LEGS))
+ legs_exposure = 0
+ if(!is_slot_hidden(C.body_parts_covered,ARMS))
+ arms_exposure = 0
+
+ //minimize this for low-pressure enviroments
+ var/mx = 5 * max(firelevel,1.5)/ZAS_firelevel_multiplier * min(pressure / ONE_ATMOSPHERE, 1)
+
+ //Always check these damage procs first if fire damage isn't working. They're probably what's wrong.
+ var/fire_tile_modifier = 4 //multiplier for damage received while standing on a fire tile
+ apply_damage(fire_tile_modifier*HEAD_FIRE_DAMAGE_MULTIPLIER*mx*head_exposure, BURN, LIMB_HEAD, 0, 0, used_weapon = "Fire")
+ apply_damage(fire_tile_modifier*CHEST_FIRE_DAMAGE_MULTIPLIER*mx*chest_exposure, BURN, LIMB_CHEST, 0, 0, used_weapon ="Fire")
+ apply_damage(fire_tile_modifier*GROIN_FIRE_DAMAGE_MULTIPLIER*mx*groin_exposure, BURN, LIMB_GROIN, 0, 0, used_weapon ="Fire")
+ apply_damage(fire_tile_modifier*LEGS_FIRE_DAMAGE_MULTIPLIER*mx*legs_exposure, BURN, LIMB_LEFT_LEG, 0, 0, used_weapon = "Fire")
+ apply_damage(fire_tile_modifier*LEGS_FIRE_DAMAGE_MULTIPLIER*mx*legs_exposure, BURN, LIMB_RIGHT_LEG, 0, 0, used_weapon = "Fire")
+ apply_damage(fire_tile_modifier*ARMS_FIRE_DAMAGE_MULTIPLIER*mx*arms_exposure, BURN, LIMB_LEFT_ARM, 0, 0, used_weapon = "Fire")
+ apply_damage(fire_tile_modifier*ARMS_FIRE_DAMAGE_MULTIPLIER*mx*arms_exposure, BURN, LIMB_RIGHT_ARM, 0, 0, used_weapon = "Fire")
+
+ if(head_exposure || chest_exposure || groin_exposure || legs_exposure || arms_exposure)
+ dizziness = 5
+ confused = 5
+ if(prob(25))
+ audible_scream()
diff --git a/code/modules/mob/living/carbon/human/species/plasmaman.dm b/code/modules/mob/living/carbon/human/species/plasmaman.dm
index 3b9443e03a3..a4fab8819d3 100644
--- a/code/modules/mob/living/carbon/human/species/plasmaman.dm
+++ b/code/modules/mob/living/carbon/human/species/plasmaman.dm
@@ -69,7 +69,7 @@
if(!host.on_fire)
to_chat(host, "Your body reacts with the atmosphere and bursts into flame!")
host.adjust_fire_stacks(0.5)
- host.IgniteMob()
+ host.ignite()
else
var/obj/item/clothing/suit/PS=host.wear_suit
if(istype(PS))
diff --git a/code/modules/mob/living/carbon/slime/slime.dm b/code/modules/mob/living/carbon/slime/slime.dm
index d33594e3a62..f25b4ea2eb3 100644
--- a/code/modules/mob/living/carbon/slime/slime.dm
+++ b/code/modules/mob/living/carbon/slime/slime.dm
@@ -1022,7 +1022,7 @@
qdel (src)
-/mob/living/carbon/slime/IgniteMob()
+/mob/living/carbon/slime/ignite()
return 0
/mob/living/carbon/slime/ApplySlip(var/obj/effect/overlay/puddle/P)
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 14472604b62..dec23dbc91a 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -86,7 +86,7 @@
if(istype(get_turf(src),/turf/unsimulated/floor/brimstone))
FireBurn(11, 9001, ONE_ATMOSPHERE) // lag free weird way of doing it
fire_stacks = 11
- IgniteMob() // ffffFIRE!!!! FIRE!!! FIRE!!
+ ignite() // ffffFIRE!!!! FIRE!!! FIRE!!
return 1
// Apply connect damage
@@ -567,7 +567,7 @@ Thanks.
else
reagents.clear_reagents()
heal_overall_damage(1000, 1000)
- ExtinguishMob()
+ extinguish()
fire_stacks = 0
/*
if(locked_to)
@@ -1136,7 +1136,7 @@ Thanks.
sleep(1 SECONDS)
CM.fire_stacks = 0
CM.visible_message("[CM] has successfully extinguished themselves!","You extinguish yourself.")
- ExtinguishMob()
+ extinguish()
return
CM.resist_restraints()
diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm
index d7fecbe3e47..88091a85391 100644
--- a/code/modules/mob/living/living_defense.dm
+++ b/code/modules/mob/living/living_defense.dm
@@ -277,21 +277,30 @@
// End BS12 momentum-transfer code.
//Mobs on Fire
-/mob/living/proc/IgniteMob()
- if(fire_stacks > 0 && !on_fire)
- on_fire = 1
- set_light(src.light_range + 3)
- update_fire()
+/mob/living/ignite()
+ if(on_fire)
+ return 0
+ if(check_fire_protection())
+ return 0
+ if(!firelightdummy)
+ firelightdummy = new (src)
+ on_fire = 1
+ update_fire()
+ return 1
+
+/mob/living/extinguish()
+ ..()
+ update_fire()
+
+/mob/living/check_fire_protection()
+ if(fire_stacks<0)
+ fire_stacks++
return 1
else
return 0
-/mob/living/proc/ExtinguishMob()
- if(on_fire)
- on_fire = 0
- fire_stacks = 0
- set_light(src.light_range - 3)
- update_fire()
+/mob/living/burnSolidFuel()
+ return
/mob/living/proc/update_fire()
return
@@ -313,23 +322,31 @@
return 1
var/oxy=0
- var/turf/T=loc
+ var/turf/T=get_turf(src)
if(istype(T))
- var/datum/gas_mixture/G = loc.return_air() // Check if we're standing in an oxygenless environment
+ var/datum/gas_mixture/G = T.return_air() // Check if we're standing in an oxygenless environment
if(G)
oxy = G.molar_density(GAS_OXYGEN)
- if(oxy < (1 / CELL_VOLUME) || fire_stacks <= 0)
- ExtinguishMob() //If there's no oxygen in the tile we're on, put out the fire
+ if(oxy < (1 / CELL_VOLUME) || fire_stacks < 0)
+ extinguish() //If there's no oxygen in the tile we're on, put out the fire
return 1
- var/turf/location = get_turf(src)
- location.hotspot_expose(700, SMALL_FLAME, 1)
+ T.hotspot_expose(700, SMALL_FLAME, 1)
-/mob/living/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+/mob/living/fire_act(datum/gas_mixture/air, temperature, exposed_volume)
if(mutations.Find(M_UNBURNABLE))
return
adjust_fire_stacks(0.5)
- IgniteMob()
+ ignite()
+
+ var/turf/T = get_turf(src)
+ var/flevel = air.calculate_firelevel(T)
+ var/pressure = air.return_pressure()
+ FireBurn(flevel,temperature, pressure)
+
+/mob/living/proc/FireBurn(var/firelevel = 0, var/temperature, var/pressure)
+ var/mx = 5 * max(firelevel,1.5)/ZAS_firelevel_multiplier * min(pressure / ONE_ATMOSPHERE, 1)
+ apply_damage(2.5*mx, BURN)
//Mobs on Fire end
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm
index 89998a3229c..a909b23d70a 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm
@@ -819,7 +819,7 @@
/mob/living/simple_animal/hostile/asteroid/magmaw/fire_act(var/datum/gas_mixture/air, var/exposed_temperature, var/exposed_volume)
fire_resurrect(exposed_temperature)
-/mob/living/simple_animal/hostile/asteroid/magmaw/IgniteMob()
+/mob/living/simple_animal/hostile/asteroid/magmaw/ignite()
fire_resurrect(PLASMA_MINIMUM_BURN_TEMPERATURE)
/mob/living/simple_animal/hostile/asteroid/magmaw/FireBurn(var/firelevel, var/last_temperature, var/pressure)
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index 49afb944580..8bc61cd7d62 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -710,9 +710,9 @@ var/global/list/animal_count = list() //Stores types, and amount of animals of t
/mob/living/simple_animal/update_fire()
return
-/mob/living/simple_animal/IgniteMob()
+/mob/living/simple_animal/ignite()
return 0
-/mob/living/simple_animal/ExtinguishMob()
+/mob/living/simple_animal/extinguish()
return
/mob/living/simple_animal/revive(refreshbutcher = 1)
diff --git a/code/modules/reagents/reagents/reagents_basic.dm b/code/modules/reagents/reagents/reagents_basic.dm
index 1b8f8de4b29..824fc95a30c 100644
--- a/code/modules/reagents/reagents/reagents_basic.dm
+++ b/code/modules/reagents/reagents/reagents_basic.dm
@@ -265,7 +265,7 @@
M.remove_silence()
if(isliving(M))
var/mob/living/L = M
- L.ExtinguishMob()
+ L.extinguish()
//Water now directly damages slimes instead of being a turf check
if(isslime(M))
diff --git a/code/modules/reagents/reagents/reagents_religious.dm b/code/modules/reagents/reagents/reagents_religious.dm
index abf127968f3..a7eb0cf67a4 100644
--- a/code/modules/reagents/reagents/reagents_religious.dm
+++ b/code/modules/reagents/reagents/reagents_religious.dm
@@ -33,7 +33,7 @@
M.make_visible(INVISIBLESPRAY)
if(isliving(M))
var/mob/living/L = M
- L.ExtinguishMob()
+ L.extinguish()
//Water now directly damages slimes instead of being a turf check
if(isslime(M))
diff --git a/code/modules/spells/targeted/ethereal_jaunt.dm b/code/modules/spells/targeted/ethereal_jaunt.dm
index 8533af3aaae..93908195d14 100644
--- a/code/modules/spells/targeted/ethereal_jaunt.dm
+++ b/code/modules/spells/targeted/ethereal_jaunt.dm
@@ -53,7 +53,7 @@
//Begin jaunting with an animation
anim(location = mobloc, a_icon = 'icons/mob/mob.dmi', flick_anim = enteranim, direction = target.dir, name = target.name,lay = target.layer+1,plane = target.plane)
if(mist)
- target.ExtinguishMob()
+ target.extinguish()
var/datum/effect/system/steam_spread/steam = new /datum/effect/system/steam_spread()
steam.set_up(10, 0, mobloc)
steam.start()
diff --git a/code/modules/spells/targeted/feint.dm b/code/modules/spells/targeted/feint.dm
index 9c08377a6e3..ed93ce94128 100644
--- a/code/modules/spells/targeted/feint.dm
+++ b/code/modules/spells/targeted/feint.dm
@@ -23,7 +23,7 @@
L.unlock_from()
anim(location = mobloc, target = L, a_icon = 'icons/mob/mob.dmi', flick_anim = "liquify", direction = L.dir, name = "water")
- L.ExtinguishMob()
+ L.extinguish()
var/datum/effect/system/steam_spread/steam = new /datum/effect/system/steam_spread()
steam.set_up(10, 0, mobloc)
steam.start()