aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/Spell.cpp13
-rw-r--r--src/game/Unit.cpp20
2 files changed, 15 insertions, 18 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];
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index 291e1aae367..fc76eadfe45 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -1487,17 +1487,14 @@ uint32 Unit::SpellNonMeleeDamageLog(Unit *pVictim, uint32 spellID, uint32 damage
void Unit::CalculateSpellDamageTaken(SpellNonMeleeDamage *damageInfo, int32 damage, SpellEntry const *spellInfo, WeaponAttackType attackType)
{
- SpellSchoolMask damageSchoolMask = SpellSchoolMask(damageInfo->schoolMask);
- Unit *pVictim = damageInfo->target;
-
if (damage < 0)
return;
- if(!this || !pVictim)
- return;
- if(!this->isAlive() || !pVictim->isAlive())
+ Unit *pVictim = damageInfo->target;
+ if(!pVictim || !pVictim->isAlive())
return;
+ SpellSchoolMask damageSchoolMask = SpellSchoolMask(damageInfo->schoolMask);
uint32 crTypeMask = pVictim->GetCreatureTypeMask();
// Check spell crit chance
bool crit = isSpellCrit(pVictim, spellInfo, damageSchoolMask, attackType);
@@ -1512,17 +1509,10 @@ void Unit::CalculateSpellDamageTaken(SpellNonMeleeDamage *damageInfo, int32 dama
// Physical Damage
if ( damageSchoolMask & SPELL_SCHOOL_MASK_NORMAL )
{
- //Calculate armor mitigation
- //damage = CalcArmorReducedDamage(pVictim, damage);
// Get blocked status
blocked = isSpellBlocked(pVictim, spellInfo, attackType);
}
- // Magical Damage
- /*else
- {
- // Calculate damage bonus
- damage = SpellDamageBonus(pVictim, spellInfo, damage, SPELL_DIRECT_DAMAGE);
- }*/
+
if (crit)
{
damageInfo->HitInfo|= SPELL_HIT_TYPE_CRIT;
@@ -1567,8 +1557,6 @@ void Unit::CalculateSpellDamageTaken(SpellNonMeleeDamage *damageInfo, int32 dama
case SPELL_DAMAGE_CLASS_NONE:
case SPELL_DAMAGE_CLASS_MAGIC:
{
- // Calculate damage bonus
- //damage = SpellDamageBonus(pVictim, spellInfo, damage, SPELL_DIRECT_DAMAGE);
// If crit add critical bonus
if (crit)
{