diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 18adf1551..15a13c7da 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -2377,6 +2377,19 @@ void Aura::HandleAuraDummy(bool apply, bool Real) ((Player*)m_target)->AddSpellMod(m_spellmod, apply); return; } + case 52610: // Savage Roar + { + if(apply) + { + if(m_target->m_form != FORM_CAT) + return; + + m_target->CastSpell(m_target, 62071, true); + } + else + m_target-> RemoveAurasDueToSpell(62071); + return; + } case 61336: // Survival Instincts { if(apply) @@ -5356,7 +5369,9 @@ void Aura::HandleShapeshiftBoosts(bool apply) uint32 HotWSpellId = 0; uint32 MasterShaperSpellId = 0; - switch(GetModifier()->m_miscvalue) + uint32 form = GetModifier()->m_miscvalue; + + switch(form) { case FORM_CAT: spellId = 3025; @@ -5428,8 +5443,6 @@ void Aura::HandleShapeshiftBoosts(bool apply) break; } - uint32 form = GetModifier()->m_miscvalue-1; - if(apply) { if (spellId) m_target->CastSpell(m_target, spellId, true, NULL, this ); @@ -5445,7 +5458,7 @@ void Aura::HandleShapeshiftBoosts(bool apply) SpellEntry const *spellInfo = sSpellStore.LookupEntry(itr->first); if (!spellInfo || !(spellInfo->Attributes & (SPELL_ATTR_PASSIVE | (1<<7)))) continue; - if (spellInfo->Stances & (1<Stances & (1<<(form-1))) m_target->CastSpell(m_target, itr->first, true, NULL, this); } @@ -5468,10 +5481,14 @@ void Aura::HandleShapeshiftBoosts(bool apply) if (((Player*)m_target)->HasSpell(17007)) { SpellEntry const *spellInfo = sSpellStore.LookupEntry(24932); - if (spellInfo && spellInfo->Stances & (1<Stances & (1<<(form-1))) m_target->CastSpell(m_target, 24932, true, NULL, this); } + // Savage Roar + if (((Player*)m_target)->HasAura(52610) && form == FORM_CAT) + m_target->CastSpell(m_target, 62071, true); + // Heart of the Wild if (HotWSpellId) { @@ -5509,9 +5526,6 @@ void Aura::HandleShapeshiftBoosts(bool apply) ++itr; } } - - /*double healthPercentage = (double)m_target->GetHealth() / (double)m_target->GetMaxHealth(); - m_target->SetHealth(uint32(ceil((double)m_target->GetMaxHealth() * healthPercentage)));*/ } void Aura::HandleSpellSpecificBoosts(bool apply) diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index a2d9a291c..36db6af7d 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -1414,6 +1414,10 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons // Survival Instincts and Survival Instincts if( spellInfo_1->Id == 61336 && spellInfo_2->Id == 50322 || spellInfo_2->Id == 61336 && spellInfo_1->Id == 50322 ) return false; + + // Savage Roar and Savage Roar (triggered) + if (spellInfo_1->SpellIconID == 2865 && spellInfo_2->SpellIconID == 2865) + return false; } // Leader of the Pack and Scroll of Stamina (multi-family check) diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 8fa015563..74062c515 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 "8362" + #define REVISION_NR "8363" #endif // __REVISION_NR_H__