mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-09 16:14:13 +00:00
@@ -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("<span class='danger'>[user] walks into \the [src], and is set alight!</span>", "<span class='danger'>You walk into \the [src], and are set alight!</span>")
|
||||
|
||||
/obj/machinery/space_heater/campfire/stove/fireplace
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -1402,7 +1402,7 @@ var/list/arcane_tomes = list()
|
||||
|
||||
next_extinguish = world.time + extinguish_cooldown
|
||||
to_chat(H, "<span class='warning'>Your armor automatically extinguishes the fire.</span>")
|
||||
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, "<span class='warning'>Your armor automatically extinguishes the fire.</span>")
|
||||
H.ExtinguishMob()
|
||||
H.extinguish()
|
||||
|
||||
//plasmaman stuff
|
||||
/obj/item/clothing/suit/space/cult/regulate_temp_of_wearer(var/mob/living/carbon/human/H)
|
||||
|
||||
@@ -407,7 +407,7 @@
|
||||
else if(prob(35))
|
||||
to_chat(H, "<span class='danger'>The holy flames continue to burn your flesh!</span>")
|
||||
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, "<span class='danger'>You continue to burn!</span>")
|
||||
fire_stacks += 5
|
||||
IgniteMob()
|
||||
ignite()
|
||||
audible_scream()
|
||||
else
|
||||
switch(health)
|
||||
if((-INFINITY) to 60)
|
||||
fire_stacks++
|
||||
IgniteMob()
|
||||
ignite()
|
||||
adjustFireLoss(3)
|
||||
|
||||
/*
|
||||
|
||||
@@ -261,7 +261,7 @@ var/list/tgui_religion_data
|
||||
if (B.my_rel != src) // BLASPHEMY
|
||||
to_chat(preacher, "<span class='warning'>You are a heathen to this God. You feel [B.my_rel.deity_name]'s wrath strike you for this blasphemy.</span>")
|
||||
preacher.fire_stacks += 5
|
||||
preacher.IgniteMob()
|
||||
preacher.ignite()
|
||||
preacher.audible_scream()
|
||||
return FALSE
|
||||
if (preacher != religiousLeader.current)
|
||||
|
||||
@@ -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("<span class='warning'>A cloud of fine ice crystals engulfs [target]!</span>")
|
||||
|
||||
|
||||
@@ -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, "<span class = 'warning'>The book sets you alight!</span>")
|
||||
|
||||
/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, "<span class = 'warning'>You burst into flames!</span>")
|
||||
user.adjust_fire_stacks(0.5)
|
||||
user.IgniteMob()
|
||||
user.ignite()
|
||||
|
||||
/obj/item/weapon/spellbook/oneuse/snakes
|
||||
spell = /spell/aoe_turf/conjure/snakes
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
return SUICIDE_ACT_BRUTELOSS
|
||||
else if (is_hot())
|
||||
user.visible_message("<span class='danger'>[user] is immolating \himself with \the [src]! It looks like \he's trying to commit suicide.</span>")
|
||||
user.IgniteMob()
|
||||
user.ignite()
|
||||
return SUICIDE_ACT_FIRELOSS
|
||||
else if (force >= 10)
|
||||
user.visible_message("<span class='danger'>[user] is bludgeoning \himself with \the [src]! It looks like \he's trying to commit suicide.</span>")
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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, "<span class='danger'>You are lit on fire from the intense heat of the [name]!</span>")
|
||||
|
||||
/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)
|
||||
..()
|
||||
..()
|
||||
|
||||
@@ -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, "<span class='warning'>Your [name] is about to go out.</span>")
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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, "<span class='danger'>[my_rel.deity_name] channels through \the [src] and sets you ablaze for your blasphemy!</span>")
|
||||
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, "<span class='danger'>[my_rel.deity_name] channels through \the [src] and sets you ablaze for your blasphemy!</span>")
|
||||
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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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("<span class='danger'>[user] is immolating \himself on \the [src]! It looks like \he's trying to commit suicide.</span>")
|
||||
user.IgniteMob()
|
||||
user.ignite()
|
||||
return SUICIDE_ACT_FIRELOSS
|
||||
else if (sharpness >= 1)
|
||||
user.visible_message("<span class='danger'>[user] impales himself on \the [src]! It looks like \he's trying to commit suicide.</span>")
|
||||
|
||||
@@ -582,7 +582,7 @@
|
||||
else
|
||||
visible_message("<span class='warning'>\The [user] attempts to put out the fire on \the [target] with \the [src].</span>")
|
||||
if(prob(extinguishingProb))
|
||||
M.ExtinguishMob()
|
||||
M.extinguish()
|
||||
visible_message("<span class='notice'>\The [user] puts out the fire on \the [target].</span>")
|
||||
return
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
|
||||
next_extinguish = world.time + extinguish_cooldown
|
||||
to_chat(H, "<span class='warning'>Your suit automatically extinguishes the fire.</span>")
|
||||
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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
if(!host.on_fire)
|
||||
to_chat(host, "<span class='warning'>Your body reacts with the atmosphere and bursts into flame!</span>")
|
||||
host.adjust_fire_stacks(0.5)
|
||||
host.IgniteMob()
|
||||
host.ignite()
|
||||
else
|
||||
var/obj/item/clothing/suit/PS=host.wear_suit
|
||||
if(istype(PS))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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("<span class='danger'>[CM] has successfully extinguished themselves!</span>","<span class='notice'>You extinguish yourself.</span>")
|
||||
ExtinguishMob()
|
||||
extinguish()
|
||||
return
|
||||
|
||||
CM.resist_restraints()
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user