diff options
Diffstat (limited to 'src/game/Spell.cpp')
| -rw-r--r-- | src/game/Spell.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 4d1e0db0b5d..89f22ae5e1c 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -5396,8 +5396,17 @@ int32 Spell::CalculateDamageDone(Unit *unit, const uint32 effectMask, float *mul break; } - if(m_damage > 0 && m_originalCaster) - m_damage = m_originalCaster->SpellDamageBonus(unit, m_spellInfo, m_damage, SPELL_DIRECT_DAMAGE); + if(m_damage > 0) + { + if(m_originalCaster) + m_damage = m_originalCaster->SpellDamageBonus(unit, m_spellInfo, m_damage, SPELL_DIRECT_DAMAGE); + + if(IsAreaEffectTarget[m_spellInfo->EffectImplicitTargetA[i]] || IsAreaEffectTarget[m_spellInfo->EffectImplicitTargetB[i]]) + { + if(int32 reducedPct = unit->GetMaxNegativeAuraModifier(SPELL_AURA_MOD_AOE_DAMAGE_AVOIDANCE)) + m_damage = m_damage * (100 + reducedPct) / 100; + } + } if(m_applyMultiplierMask & (1 << i)) { m_damage *= m_damageMultipliers[i]; |
