Core/Mechanic: Fix spell penetration from items.

This commit is contained in:
kaelima
2011-10-17 15:54:19 +01:00
parent 512503c2b8
commit 27e1a5d7b6
+12 -8
View File
@@ -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));
if (Player* player = ToPlayer())
ignoredResistance += float(player->GetSpellPenetrationItemMod());
float victimResistance = baseVictimResistance + ignoredResistance;
float victimResistance = float(victim->GetResistance(GetFirstSchoolInMask(schoolMask)));
victimResistance += float(GetTotalAuraModifierByMiscMask(SPELL_AURA_MOD_TARGET_RESISTANCE, schoolMask));
static const uint32 BOSS_LEVEL = 83;
static const float BOSS_RESISTANCE_CONSTANT = 510.0;
if (Player* player = ToPlayer())
victimResistance -= float(player->GetSpellPenetrationItemMod());
// Resistance can't be lower then 0.
if (victimResistance < 0.0f)
victimResistance = 0.0f;
static uint32 const BOSS_LEVEL = 83;
static float const BOSS_RESISTANCE_CONSTANT = 510.0f;
uint32 level = getLevel();
float resistanceConstant = 0.0f;