From f4fcb7dcffd59de874e53639bd3ca2cec5bcf350 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Tue, 17 Jun 2014 00:45:05 -0400 Subject: [PATCH] Fixes apply_damage ignoring species mods Also adds some adjust*Loss type procs for adjusting the damage on specific body parts. apply_damage() should be the standard way to deal damage to a mob, though. --- .../mob/living/carbon/human/human_damage.dm | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index b4edd9401fc..9665bda7ab3 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -60,6 +60,36 @@ heal_overall_damage(0, -amount) hud_updateflag |= 1 << HEALTH_HUD +/mob/living/carbon/human/proc/adjustBruteLossByPart(var/amount, var/organ_name, var/obj/damage_source = null) + if(species && species.brute_mod) + amount = amount*species.brute_mod + + if (organ_name in organs_by_name) + var/datum/organ/external/O = get_organ(organ_name) + + if(amount > 0) + O.take_damage(amount, 0, sharp=is_sharp(damage_source), edge=has_edge(damage_source), used_weapon=damage_source) + else + //if you don't want to heal robot organs, they you will have to check that yourself before using this proc. + O.heal_damage(-amount, 0, internal=0, robo_repair=(O.status & ORGAN_ROBOT)) + + hud_updateflag |= 1 << HEALTH_HUD + +/mob/living/carbon/human/proc/adjustFireLossByPart(var/amount, var/organ_name, var/obj/damage_source = null) + if(species && species.burn_mod) + amount = amount*species.burn_mod + + if (organ_name in organs_by_name) + var/datum/organ/external/O = get_organ(organ_name) + + if(amount > 0) + O.take_damage(0, amount, sharp=is_sharp(damage_source), edge=has_edge(damage_source), used_weapon=damage_source) + else + //if you don't want to heal robot organs, they you will have to check that yourself before using this proc. + O.heal_damage(0, -amount, internal=0, robo_repair=(O.status & ORGAN_ROBOT)) + + hud_updateflag |= 1 << HEALTH_HUD + /mob/living/carbon/human/Stun(amount) if(M_HULK in mutations) return ..() @@ -252,6 +282,8 @@ This function restores all organs. switch(damagetype) if(BRUTE) damageoverlaytemp = 20 + if(species && species.brute_mod) + damage = damage*species.brute_mod if(organ.take_damage(damage, 0, sharp, edge, used_weapon)) UpdateDamageIcon() var/list/attack_bubble_recipients = list() @@ -267,6 +299,8 @@ This function restores all organs. flick_overlay(dmgIcon, attack_bubble_recipients, 9) if(BURN) damageoverlaytemp = 20 + if(species && species.burn_mod) + damage = damage*species.burn_mod if(organ.take_damage(0, damage, sharp, edge, used_weapon)) UpdateDamageIcon()