diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index eef4b9311..6963655c1 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -279,7 +279,7 @@ pAuraHandler AuraHandler[TOTAL_AURAS]= &Aura::HandleAuraPeriodicDummy, //226 SPELL_AURA_PERIODIC_DUMMY &Aura::HandlePeriodicTriggerSpellWithValue, //227 SPELL_AURA_PERIODIC_TRIGGER_SPELL_WITH_VALUE &Aura::HandleNoImmediateEffect, //228 stealth detection - &Aura::HandleNULL, //229 SPELL_AURA_MOD_AOE_DAMAGE_AVOIDANCE + &Aura::HandleNoImmediateEffect, //229 SPELL_AURA_MOD_AOE_DAMAGE_AVOIDANCE implemented in Unit::SpellDamageBonus &Aura::HandleAuraModIncreaseMaxHealth, //230 Commanding Shout &Aura::HandleNoImmediateEffect, //231 SPELL_AURA_PROC_TRIGGER_SPELL_WITH_VALUE &Aura::HandleNoImmediateEffect, //232 SPELL_AURA_MECHANIC_DURATION_MOD implement in Unit::CalculateSpellDuration diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 7bd089463..339f57130 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -7894,6 +7894,14 @@ uint32 Unit::SpellDamageBonus(Unit *pVictim, SpellEntry const *spellProto, uint3 TakenTotalMod *= ((*i)->GetModifier()->m_amount+100.0f)/100.0f; } + // Mod damage taken from AoE spells + if(IsAreaOfEffectSpell(spellProto)) + { + AuraList const& avoidAuras = pVictim->GetAurasByType(SPELL_AURA_MOD_AOE_DAMAGE_AVOIDANCE); + for(AuraList::const_iterator itr = avoidAuras.begin(); itr != avoidAuras.end(); ++itr) + TakenTotalMod *= ((*itr)->GetModifier()->m_amount+100.0f)/100.0f; + } + // Taken/Done fixed damage bonus auras int32 DoneAdvertisedBenefit = SpellBaseDamageBonus(GetSpellSchoolMask(spellProto)); int32 TakenAdvertisedBenefit = SpellBaseDamageBonusForVictim(GetSpellSchoolMask(spellProto), pVictim); @@ -8737,6 +8745,14 @@ void Unit::MeleeDamageBonus(Unit *pVictim, uint32 *pdamage,WeaponAttackType attT TakenTotalMod *= ((*i)->GetModifier()->m_amount+100.0f)/100.0f; } + // Mod damage taken from AoE spells + if(spellProto && IsAreaOfEffectSpell(spellProto)) + { + AuraList const& avoidAuras = pVictim->GetAurasByType(SPELL_AURA_MOD_AOE_DAMAGE_AVOIDANCE); + for(AuraList::const_iterator itr = avoidAuras.begin(); itr != avoidAuras.end(); ++itr) + TakenTotalMod *= ((*itr)->GetModifier()->m_amount+100.0f)/100.0f; + } + float tmpDamage = float(int32(*pdamage) + DoneFlatBenefit) * DoneTotalMod; // apply spellmod to Done damage diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 5c4aba584..d5bedb68d 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "8109" + #define REVISION_NR "8110" #endif // __REVISION_NR_H__