Skip to content

Commit

Permalink
Fire damage improvments
Browse files Browse the repository at this point in the history
some fixes

should fix this stuff
  • Loading branch information
Coxswain-Navigator committed Feb 5, 2025
1 parent bdcddd9 commit 409709f
Show file tree
Hide file tree
Showing 11 changed files with 28 additions and 40 deletions.
26 changes: 4 additions & 22 deletions code/datums/status_effects/debuffs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1108,7 +1108,6 @@
tick_interval = 5 SECONDS
consumed_on_threshold = FALSE
var/new_stack = FALSE
var/burn_res = 0
var/safety = TRUE

/atom/movable/screen/alert/status_effect/lc_burn
Expand All @@ -1131,12 +1130,10 @@
qdel(src)
to_chat(owner, "<span class='warning'>The flame consumes you!!</span>")
owner.playsound_local(owner, 'sound/effects/burn.ogg', 50, TRUE)
Check_Resist(owner)
if(ishuman(owner))
owner.adjustFireLoss(max(0, stacks - burn_res))
owner.apply_damage(stacks, BURN, null, owner.run_armor_check(null, BURN))
else
owner.adjustBruteLoss(stacks*4) // x4 on non humans (Average burn stack is 20. 80/5 sec, extra 16 pure dps)
new /obj/effect/temp_visual/damage_effect/burn(get_turf(owner))
owner.apply_damage(stacks*4, BURN, null, owner.run_armor_check(null, BURN)) // x4 on non humans (Average burn stack is 20. 80/5 sec, extra 16 pure dps)

//Deletes itself after 2 tick if no new burn stack was given
if(safety)
Expand All @@ -1147,24 +1144,10 @@
else
qdel(src)

//Check armor
/datum/status_effect/stacking/lc_burn/proc/Check_Resist(mob/living/owner)
//I was hesistant to put a new var for this check in suit.dm, so I just check for each armor instead
var/mob/living/carbon/human/H = owner
var/obj/item/clothing/suit/armor/ego_gear/aleph/waxen/C = H.get_item_by_slot(ITEM_SLOT_OCLOTHING)
var/obj/item/clothing/suit/armor/ego_gear/realization/desperation/D = H.get_item_by_slot(ITEM_SLOT_OCLOTHING)
if(istype(C))
burn_res = 15
else if(istype(D))
burn_res = 25
else
burn_res = 0

//Update burn appearance
/datum/status_effect/stacking/lc_burn/proc/Update_Burn_Overlay(mob/living/owner)
Check_Resist(owner)
if(stacks > burn_res && !(owner.on_fire) && ishuman(owner))
if(stacks >= 50)
if(stacks && !(owner.on_fire) && ishuman(owner))
if(stacks >= 15)
owner.cut_overlay(mutable_appearance('icons/mob/OnFire.dmi', "Generic_mob_burning", -FIRE_LAYER))
owner.cut_overlay(mutable_appearance('icons/mob/OnFire.dmi', "Standing", -FIRE_LAYER))
owner.add_overlay(mutable_appearance('icons/mob/OnFire.dmi', "Standing", -FIRE_LAYER))
Expand Down Expand Up @@ -1195,7 +1178,6 @@
tick_interval = 5 SECONDS
consumed_on_threshold = FALSE
var/new_stack = FALSE
var/burn_res = 0
var/safety = TRUE
var/bleed_cooldown = 20
var/bleed_time
Expand Down
6 changes: 3 additions & 3 deletions code/modules/clothing/suits/ego_gear/aleph.dm
Original file line number Diff line number Diff line change
Expand Up @@ -340,15 +340,15 @@ Any attempt to code risk class armor will result in a 10 day Github ban.*/
src.armor = new(red = 50, white = 70, black = 30, pale = 50) //200
warning_message = "Fall has come, the leaves on your armor wither and die."
if("summer")
src.armor = new(red = 80, white = 40, black = 60, pale = 60)
src.armor = new(red = 80, white = 40, black = 60, pale = 60, FIRE = 80)
if(stored_season != current_season) //Our drip is out of season
src.armor = new(red = 80, white = 40, black = 50, pale = 50)
weakened = TRUE
if(current_season == "winter")
src.armor = new(red = 70, white = 30, black = 50, pale = 50)
warning_message = "Winter is here. Your armor reacts, becoming stiff and brittle."
if("fall")
src.armor = new(red = 40, white = 60, black = 80, pale = 60)
src.armor = new(red = 40, white = 60, black = 80, pale = 60, FIRE = 80)
if(stored_season != current_season) //Our drip is out of season
src.armor = new(red = 40, white = 50, black = 80, pale = 50)
weakened = TRUE
Expand Down Expand Up @@ -399,7 +399,7 @@ Any attempt to code risk class armor will result in a 10 day Github ban.*/
name = "distortion"
desc = "To my eyes, I’m the only one who doesn’t appear distorted. In a world full of distorted people, could the one person who remains unchanged be the \"distorted\" one?"
icon_state = "distortion"
armor = list(RED_DAMAGE = 80, WHITE_DAMAGE = 70, BLACK_DAMAGE = 80, PALE_DAMAGE = 50) // 280
armor = list(RED_DAMAGE = 80, WHITE_DAMAGE = 70, BLACK_DAMAGE = 80, PALE_DAMAGE = 50, FIRE = 80) // 280
attribute_requirements = list(
FORTITUDE_ATTRIBUTE = 100,
PRUDENCE_ATTRIBUTE = 100,
Expand Down
4 changes: 2 additions & 2 deletions code/modules/clothing/suits/ego_gear/he.dm
Original file line number Diff line number Diff line change
Expand Up @@ -405,7 +405,7 @@ Any attempt to code risk class armor will result in a 10 day Github ban.*/
name = "lifetime stew"
desc = "A soup fit for a king - and all from a few stones. It seemed like magic!"
icon_state = "lifestew"
armor = list(RED_DAMAGE = 20, WHITE_DAMAGE = -20, BLACK_DAMAGE = 60, PALE_DAMAGE = -20) // 40
armor = list(RED_DAMAGE = 20, WHITE_DAMAGE = -20, BLACK_DAMAGE = 60, PALE_DAMAGE = -20, FIRE = 20) // 40
attribute_requirements = list(
TEMPERANCE_ATTRIBUTE = 40
)
Expand Down Expand Up @@ -468,7 +468,7 @@ Any attempt to code risk class armor will result in a 10 day Github ban.*/
name = "ardor blossom star"
desc = "A dress with a bright orange jacket. Warm to the touch."
icon_state = "ardor_blossom"
armor = list(RED_DAMAGE = 50, WHITE_DAMAGE = 0, BLACK_DAMAGE = 10, PALE_DAMAGE = 10) // 70
armor = list(RED_DAMAGE = 50, WHITE_DAMAGE = 0, BLACK_DAMAGE = 10, PALE_DAMAGE = 10, FIRE = 50) // 70
attribute_requirements = list(
PRUDENCE_ATTRIBUTE = 40
)
Expand Down
4 changes: 2 additions & 2 deletions code/modules/clothing/suits/ego_gear/realized.dm
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ No Ability 250
name = "ember matchlight"
desc = "If I must perish, then I'll make you meet the same fate."
icon_state = "ember_matchlight"
armor = list(RED_DAMAGE = 80, WHITE_DAMAGE = 40, BLACK_DAMAGE = 50, PALE_DAMAGE = 60) //Melee
armor = list(RED_DAMAGE = 80, WHITE_DAMAGE = 40, BLACK_DAMAGE = 50, PALE_DAMAGE = 60, FIRE = 80) //Melee
realized_ability = /obj/effect/proc_holder/ability/fire_explosion

/obj/item/clothing/suit/armor/ego_gear/realization/sakura_bloom
Expand Down Expand Up @@ -511,7 +511,7 @@ No Ability 250
name = "Scorching Desperation"
desc = "Those feelings only become more dull over time."
icon_state = "desperation"
armor = list(RED_DAMAGE = 70, WHITE_DAMAGE = 40, BLACK_DAMAGE = 60, PALE_DAMAGE = 60)
armor = list(RED_DAMAGE = 70, WHITE_DAMAGE = 40, BLACK_DAMAGE = 60, PALE_DAMAGE = 60, FIRE = 90)
realized_ability = /obj/effect/proc_holder/ability/overheat

/obj/item/clothing/suit/armor/ego_gear/realization/gasharpoon
Expand Down
4 changes: 2 additions & 2 deletions code/modules/clothing/suits/ego_gear/teth.dm
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ Any attempt to code risk class armor will result in a 10 day Github ban.*/
desc = "The archetype was already charred from the moment of extraction. \
Although the exterior is scorched, it has no adverse effects on the E.G.O’s performance."
icon_state = "match"
armor = list(RED_DAMAGE = 40, WHITE_DAMAGE = -20, BLACK_DAMAGE = -20, PALE_DAMAGE = 0) // 20
armor = list(RED_DAMAGE = 40, WHITE_DAMAGE = -20, BLACK_DAMAGE = -20, PALE_DAMAGE = 0, FIRE = 40) // 20

/obj/item/clothing/suit/armor/ego_gear/teth/fragment
name = "fragments from somewhere"
Expand Down Expand Up @@ -206,7 +206,7 @@ Any attempt to code risk class armor will result in a 10 day Github ban.*/
name = "capote"
desc = "It suffered for such a long time... Unable to do anything about the raging thirst, the flesh endlessly burning and searing."
icon_state = "capote"
armor = list(RED_DAMAGE = 40, WHITE_DAMAGE = -30, BLACK_DAMAGE = -10, PALE_DAMAGE = 0) // 0
armor = list(RED_DAMAGE = 40, WHITE_DAMAGE = -30, BLACK_DAMAGE = -10, PALE_DAMAGE = 0, FIRE = 40) // 0

/obj/item/clothing/suit/armor/ego_gear/teth/fourleaf_clover
name = "four-leaf clover"
Expand Down
2 changes: 1 addition & 1 deletion code/modules/clothing/suits/ego_gear/tools.dm
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@
desc = "Company P wished to construct the safest place on Earth. However, this shelter, while perfectly safe on the inside, \
alters the reality of the outside to be even more hopeless. It literally makes itself into \"the safest place on Earth.\""
icon_state = "shelter"
armor = list(RED_DAMAGE = 30, WHITE_DAMAGE = 20, BLACK_DAMAGE = 0, PALE_DAMAGE = 20) // 70
armor = list(RED_DAMAGE = 30, WHITE_DAMAGE = 20, BLACK_DAMAGE = 0, PALE_DAMAGE = 20, FIRE = 50) // 70
attribute_requirements = list(
FORTITUDE_ATTRIBUTE = 40
)
Expand Down
4 changes: 2 additions & 2 deletions code/modules/clothing/suits/ego_gear/waw.dm
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@ Any attempt to code risk class armor will result in a 10 day Github ban.*/
desc = "Bright as the abnormality it was extracted from, but somehow does not give off any heat. \
Maybe keep it away from the cold..."
icon_state = "featherofhonor"
armor = list(RED_DAMAGE = 50, WHITE_DAMAGE = 50, BLACK_DAMAGE = 30, PALE_DAMAGE = 10) //140
armor = list(RED_DAMAGE = 50, WHITE_DAMAGE = 50, BLACK_DAMAGE = 30, PALE_DAMAGE = 10, FIRE = 60) //140
attribute_requirements = list(
FORTITUDE_ATTRIBUTE = 80,
)
Expand Down Expand Up @@ -303,7 +303,7 @@ Any attempt to code risk class armor will result in a 10 day Github ban.*/
name = "pharaoh"
desc = "What creature walks on four legs in the morning, two legs at noon, and three in the evening?"
icon_state = "pharaoh"
armor = list(RED_DAMAGE = 30, WHITE_DAMAGE = 60, BLACK_DAMAGE = 50, PALE_DAMAGE = 0) // 140
armor = list(RED_DAMAGE = 30, WHITE_DAMAGE = 60, BLACK_DAMAGE = 50, PALE_DAMAGE = 0, FIRE = 40) // 140
attribute_requirements = list(
PRUDENCE_ATTRIBUTE = 80
)
Expand Down
4 changes: 4 additions & 0 deletions code/modules/mob/living/carbon/human/species.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1622,6 +1622,10 @@ GLOBAL_LIST_EMPTY(roundstart_races)
if(BURN, FIRE, LASER, ENERGY, RAD)
H.damageoverlaytemp = 20
var/damage_amount = forced ? damage : damage * hit_percent * burnmod * H.physiology.burn_mod
var/redarmor = (100-(H.run_armor_check(def_zone, RED_DAMAGE, silent = TRUE) * 0.5))/100
if(hit_percent > redarmor) // Damage formula for burn in LC13 is 1/2 red armor or burn armor, if burn armor is unmodified.
hit_percent = redarmor
damage_amount = forced ? damage : damage * hit_percent
if(BP)
if(BP.receive_damage(0, damage_amount, wound_bonus = wound_bonus, bare_wound_bonus = bare_wound_bonus, sharpness = sharpness))
H.update_damage_overlays()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
icon = 'code/modules/mob/living/simple_animal/abnormality/_auxiliary_modes/community/!icons/ego_armor.dmi'
worn_icon = 'code/modules/mob/living/simple_animal/abnormality/_auxiliary_modes/community/!icons/ego_worn.dmi'
flags_inv = NONE
armor = list(RED_DAMAGE = -10, WHITE_DAMAGE = 10, BLACK_DAMAGE = -20, PALE_DAMAGE = 0) // -20
armor = list(RED_DAMAGE = -10, WHITE_DAMAGE = 10, BLACK_DAMAGE = -20, PALE_DAMAGE = 0, FIRE = 10) // -20
slowdown = -0.1

// He
Expand All @@ -27,7 +27,7 @@
icon = 'code/modules/mob/living/simple_animal/abnormality/_auxiliary_modes/community/!icons/ego_armor.dmi'
worn_icon = 'code/modules/mob/living/simple_animal/abnormality/_auxiliary_modes/community/!icons/ego_worn.dmi'
flags_inv = NONE
armor = list(RED_DAMAGE = 50, WHITE_DAMAGE = -30, BLACK_DAMAGE = -10, PALE_DAMAGE = 20) // 70
armor = list(RED_DAMAGE = 50, WHITE_DAMAGE = -30, BLACK_DAMAGE = -10, PALE_DAMAGE = 20, FIRE = 50) // 70
attribute_requirements = list(
FORTITUDE_ATTRIBUTE = 40
)
Expand Down Expand Up @@ -87,7 +87,7 @@
icon = 'code/modules/mob/living/simple_animal/abnormality/_auxiliary_modes/community/!icons/ego_armor.dmi'
worn_icon = 'code/modules/mob/living/simple_animal/abnormality/_auxiliary_modes/community/!icons/ego_worn.dmi'
flags_inv = null
armor = list(RED_DAMAGE = 80, WHITE_DAMAGE = 40, BLACK_DAMAGE = 60, PALE_DAMAGE = 60)
armor = list(RED_DAMAGE = 80, WHITE_DAMAGE = 40, BLACK_DAMAGE = 60, PALE_DAMAGE = 60, FIRE = 80)
attribute_requirements = list(
FORTITUDE_ATTRIBUTE = 100,
PRUDENCE_ATTRIBUTE = 80,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@
/obj/item/ego_weapon/sunspit
name = "sunspit"
desc = "Goodness gracious, great mauls of fire!"
special = "Use in hand to prepare a powerful area attack. This attack becomes more powerful when charged."
special = "Use in hand to prepare a powerful area attack. This attack requires charge to use, but deals armor-piercing burn damage."
icon_state = "sunspit"
icon = 'code/modules/mob/living/simple_animal/abnormality/_auxiliary_modes/community/!icons/ego_weapons.dmi'
lefthand_file = 'icons/mob/inhands/64x64_lefthand.dmi'
Expand Down Expand Up @@ -248,7 +248,7 @@
if(!can_spin)
to_chat(user,span_warning("You attacked too recently."))
return
if(do_after(user, 12, src))
if(do_after(user, 8, src))
charge_amount -= charge_cost
addtimer(CALLBACK(src, PROC_REF(spin_reset)), 12)
playsound(src, 'sound/abnormalities/seasons/summer_attack.ogg', 75, FALSE, 4)
Expand Down Expand Up @@ -288,7 +288,7 @@
playsound(T, 'sound/weapons/fixer/generic/fire3.ogg', 30, TRUE, 3)
new /obj/effect/temp_visual/smash_effect(T)
new /obj/effect/temp_visual/fire/fast(T)
been_hit = user.HurtInTurf(T, been_hit, aoe_damage, RED_DAMAGE, check_faction = TRUE)
been_hit = user.HurtInTurf(T, been_hit, aoe_damage, BURN, check_faction = TRUE)

/obj/item/ego_weapon/sunspit/get_clamped_volume()
return 40
Expand Down
2 changes: 2 additions & 0 deletions code/modules/mob/living/simple_animal/damage_procs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
/mob/living/simple_animal/adjustFireLoss(amount, updating_health = TRUE, forced = FALSE)
if(forced)
. = adjustHealth(amount * CONFIG_GET(number/damage_multiplier), updating_health, forced)
if(damage_coeff.fire == 1) // If fire damage is unchanged, damage dealt is based on red armor, and is raised by 50% towards base damage if the target is not weak to red.
. = adjustHealth(amount * clamp((damage_coeff.red * 1.5), damage_coeff.fire, damage_coeff.red) * CONFIG_GET(number/damage_multiplier), updating_health, forced)
else
. = adjustHealth(amount * damage_coeff.fire * CONFIG_GET(number/damage_multiplier), updating_health, forced)

Expand Down

0 comments on commit 409709f

Please sign in to comment.