diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/game/Spell.cpp | 13 | ||||
| -rw-r--r-- | src/game/Unit.cpp | 20 |
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) { |
