diff options
Diffstat (limited to 'src/game/Unit.cpp')
-rw-r--r-- | src/game/Unit.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index eba87182585..8cd2fc5c0d6 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -1615,6 +1615,7 @@ uint32 Unit::CalcArmorReducedDamage(Unit* pVictim, const uint32 damage, SpellEnt { uint32 newdamage = 0; float armor = pVictim->GetArmor(); + // Ignore enemy armor by SPELL_AURA_MOD_TARGET_RESISTANCE aura armor += GetTotalAuraModifierByMiscMask(SPELL_AURA_MOD_TARGET_RESISTANCE, SPELL_SCHOOL_MASK_NORMAL); @@ -1679,19 +1680,24 @@ uint32 Unit::CalcArmorReducedDamage(Unit* pVictim, const uint32 damage, SpellEnt armor -= armorPen; } - if (armor < 0.0f) armor=0.0f; + // Ignore enemy armor by SPELL_AURA_MOD_TARGET_ARMOR_PCT + //armor *= 1.0f - GetTotalAuraModifier(SPELL_AURA_MOD_ARMOR_PENETRATION_PCT) / 100.0f; + + if (armor < 0.0f) + armor = 0.0f; float levelModifier = getLevel(); - if ( levelModifier > 59 ) + if (levelModifier > 59) levelModifier = levelModifier + (4.5f * (levelModifier-59)); float tmpvalue = 0.1f * armor / (8.5f * levelModifier + 40); tmpvalue = tmpvalue/(1.0f + tmpvalue); - if(tmpvalue < 0.0f) + if (tmpvalue < 0.0f) tmpvalue = 0.0f; - if(tmpvalue > 0.75f) + if (tmpvalue > 0.75f) tmpvalue = 0.75f; + newdamage = uint32(damage - (damage * tmpvalue)); return (newdamage > 1) ? newdamage : 1; |