diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 38d040707..155efcaac 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -2254,14 +2254,54 @@ void Aura::HandleAuraDummy(bool apply, bool Real) return; } - // Earth Shield - if (GetSpellProto()->SpellFamilyName == SPELLFAMILY_SHAMAN && (GetSpellProto()->SpellFamilyFlags & UI64LIT(0x40000000000))) + switch(m_spellProto->SpellFamilyName) { - // prevent double apply bonuses - if(m_target->GetTypeId() != TYPEID_PLAYER || !((Player*)m_target)->GetSession()->PlayerLoading()) - if (Unit* caster = GetCaster()) - m_modifier.m_amount = caster->SpellHealingBonus(m_target, GetSpellProto(), m_modifier.m_amount, SPELL_DIRECT_DAMAGE); - return; + case SPELLFAMILY_WARRIOR: + // Overpower + if(m_spellProto->SpellFamilyFlags & UI64LIT(0x0000000000000004)) + { + // Must be casting target + if (!m_target->IsNonMeleeSpellCasted(false)) + return; + + Unit* caster = GetCaster(); + if (!caster) + return; + + Unit::AuraList const& modifierAuras = caster->GetAurasByType(SPELL_AURA_ADD_FLAT_MODIFIER); + for(Unit::AuraList::const_iterator itr = modifierAuras.begin(); itr != modifierAuras.end(); ++itr) + { + // Unrelenting Assault + if((*itr)->GetSpellProto()->SpellFamilyName==SPELLFAMILY_WARRIOR && (*itr)->GetSpellProto()->SpellIconID == 2775) + { + switch ((*itr)->GetSpellProto()->Id) + { + case 46859: // Unrelenting Assault, rank 1 + m_target->CastSpell(m_target,64849,true,NULL,(*itr)); + break; + case 46860: // Unrelenting Assault, rank 2 + m_target->CastSpell(m_target,64850,true,NULL,(*itr)); + break; + default: + break; + } + break; + } + } + return; + } + break; + case SPELLFAMILY_SHAMAN: + // Earth Shield + if ((GetSpellProto()->SpellFamilyFlags & UI64LIT(0x40000000000))) + { + // prevent double apply bonuses + if(m_target->GetTypeId() != TYPEID_PLAYER || !((Player*)m_target)->GetSession()->PlayerLoading()) + if (Unit* caster = GetCaster()) + m_modifier.m_amount = caster->SpellHealingBonus(m_target, GetSpellProto(), m_modifier.m_amount, SPELL_DIRECT_DAMAGE); + return; + } + break; } } // AT REMOVE diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index e61fb7dff..acdfc33b8 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -1491,6 +1491,7 @@ void Spell::EffectDummy(uint32 i) m_damage+= uint32(damage * m_caster->GetTotalAttackPowerValue(BASE_ATTACK) / 100); return; } + switch(m_spellInfo->Id) { // Warrior's Wrath diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index fb4fe1e1d..e7f5055be 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 "8921" + #define REVISION_NR "8922" #endif // __REVISION_NR_H__