aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.cpp18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 7af71cf7144..6510d60101e 100755
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -1573,7 +1573,7 @@ uint32 Unit::CalcArmorReducedDamage(Unit* victim, const uint32 damage, SpellInfo
return (newdamage > 1) ? newdamage : 1;
}
-void Unit::CalcAbsorbResist(Unit* victim, SpellSchoolMask schoolMask, DamageEffectType damagetype, const uint32 damage, uint32 *absorb, uint32 *resist, SpellInfo const* spellInfo)
+void Unit::CalcAbsorbResist(Unit* victim, SpellSchoolMask schoolMask, DamageEffectType damagetype, uint32 const damage, uint32 *absorb, uint32 *resist, SpellInfo const* spellInfo)
{
if (!victim || !victim->isAlive() || !damage)
return;
@@ -1583,14 +1583,18 @@ void Unit::CalcAbsorbResist(Unit* victim, SpellSchoolMask schoolMask, DamageEffe
// Magic damage, check for resists
if ((schoolMask & SPELL_SCHOOL_MASK_NORMAL) == 0)
{
- float baseVictimResistance = float(victim->GetResistance(GetFirstSchoolInMask(schoolMask)));
- float ignoredResistance = float(GetTotalAuraModifierByMiscMask(SPELL_AURA_MOD_TARGET_RESISTANCE, schoolMask));
+ float victimResistance = float(victim->GetResistance(GetFirstSchoolInMask(schoolMask)));
+ victimResistance += float(GetTotalAuraModifierByMiscMask(SPELL_AURA_MOD_TARGET_RESISTANCE, schoolMask));
+
if (Player* player = ToPlayer())
- ignoredResistance += float(player->GetSpellPenetrationItemMod());
- float victimResistance = baseVictimResistance + ignoredResistance;
+ victimResistance -= float(player->GetSpellPenetrationItemMod());
+
+ // Resistance can't be lower then 0.
+ if (victimResistance < 0.0f)
+ victimResistance = 0.0f;
- static const uint32 BOSS_LEVEL = 83;
- static const float BOSS_RESISTANCE_CONSTANT = 510.0;
+ static uint32 const BOSS_LEVEL = 83;
+ static float const BOSS_RESISTANCE_CONSTANT = 510.0f;
uint32 level = getLevel();
float resistanceConstant = 0.0f;