diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index cbf381b55..21e0270e1 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -5383,16 +5383,19 @@ void Aura::HandleShapeshiftBoosts(bool apply) uint32 spellId = 0; uint32 spellId2 = 0; uint32 HotWSpellId = 0; + uint32 MasterShaperSpellId = 0; switch(GetModifier()->m_miscvalue) { case FORM_CAT: spellId = 3025; HotWSpellId = 24900; + MasterShaperSpellId = 48420; break; case FORM_TREE: spellId = 5420; spellId2 = 34123; + MasterShaperSpellId = 48422; break; case FORM_TRAVEL: spellId = 5419; @@ -5404,11 +5407,13 @@ void Aura::HandleShapeshiftBoosts(bool apply) spellId = 1178; spellId2 = 21178; HotWSpellId = 24899; + MasterShaperSpellId = 48418; break; case FORM_DIREBEAR: spellId = 9635; spellId2 = 21178; HotWSpellId = 24899; + MasterShaperSpellId = 48418; break; case FORM_BATTLESTANCE: spellId = 21156; @@ -5423,6 +5428,7 @@ void Aura::HandleShapeshiftBoosts(bool apply) spellId = 24905; // aura from effect trigger spell spellId2 = 24907; + MasterShaperSpellId = 48421; break; case FORM_FLIGHT: spellId = 33948; @@ -5471,14 +5477,31 @@ void Aura::HandleShapeshiftBoosts(bool apply) if (spellInfo->Stances & (1<CastSpell(m_target, itr->first, true, NULL, this); } - //LotP + + // Master Shapeshifter + if (MasterShaperSpellId) + { + Unit::AuraList const& ShapeShifterAuras = m_target->GetAurasByType(SPELL_AURA_DUMMY); + for(Unit::AuraList::const_iterator i = ShapeShifterAuras.begin(); i != ShapeShifterAuras.end(); i++) + { + if ((*i)->GetSpellProto()->SpellIconID == 2851) + { + int32 ShiftMod = (*i)->GetModifier()->m_amount; + m_target->CastCustomSpell(m_target, MasterShaperSpellId, &ShiftMod, NULL, NULL, true); + break; + } + } + } + + // Leader of the Pack if (((Player*)m_target)->HasSpell(17007)) { SpellEntry const *spellInfo = sSpellStore.LookupEntry(24932); if (spellInfo && spellInfo->Stances & (1<CastSpell(m_target, 24932, true, NULL, this); } - // HotW + + // Heart of the Wild if (HotWSpellId) { Unit::AuraList const& mModTotalStatPct = m_target->GetAurasByType(SPELL_AURA_MOD_TOTAL_STAT_PERCENTAGE); @@ -5501,6 +5524,7 @@ void Aura::HandleShapeshiftBoosts(bool apply) { m_target->RemoveAurasDueToSpell(spellId); m_target->RemoveAurasDueToSpell(spellId2); + m_target->RemoveAurasDueToSpell(MasterShaperSpellId); Unit::AuraMap& tAuras = m_target->GetAuras(); for (Unit::AuraMap::iterator itr = tAuras.begin(); itr != tAuras.end();) @@ -5511,9 +5535,7 @@ void Aura::HandleShapeshiftBoosts(bool apply) itr = tAuras.begin(); } else - { ++itr; - } } } diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index ba2a37c5d..1af9c788d 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 "8262" + #define REVISION_NR "8263" #endif // __REVISION_NR_H__