diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Spells/SpellMgr.cpp | 3 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_druid.cpp | 70 |
2 files changed, 71 insertions, 2 deletions
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index fd5fb17fe92..cb281f37de1 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -3756,6 +3756,9 @@ void SpellMgr::LoadSpellInfoCorrections() case 5420: // Tree of Life (Passive) spellInfo->Stances = 1 << (FORM_TREE - 1); break; + case 49376: // Feral Charge (Cat Form) + spellInfo->AttributesEx3 &= ~SPELL_ATTR3_CANT_TRIGGER_PROC; + break; default: break; } diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp index d8e48862a15..33f336baf76 100644 --- a/src/server/scripts/Spells/spell_druid.cpp +++ b/src/server/scripts/Spells/spell_druid.cpp @@ -39,12 +39,15 @@ enum DruidSpells SPELL_DRUID_SOLAR_ECLIPSE = 48517, SPELL_DRUID_LUNAR_ECLIPSE = 48518, SPELL_DRUID_ENRAGE_MOD_DAMAGE = 51185, + SPELL_DRUID_FERAL_CHARGE_BEAR = 16979, + SPELL_DRUID_FERAL_CHARGE_CAT = 49376, SPELL_DRUID_GLYPH_OF_INNERVATE = 54833, SPELL_DRUID_GLYPH_OF_STARFIRE = 54846, SPELL_DRUID_GLYPH_OF_TYPHOON = 62135, SPELL_DRUID_IDOL_OF_FERAL_SHADOWS = 34241, SPELL_DRUID_IDOL_OF_WORSHIP = 60774, SPELL_DRUID_INCREASED_MOONFIRE_DURATION = 38414, + SPELL_DRUID_ITEM_T8_BALANCE_RELIC = 64950, SPELL_DRUID_KING_OF_THE_JUNGLE = 48492, SPELL_DRUID_LIFEBLOOM_ENERGIZE = 64372, SPELL_DRUID_LIFEBLOOM_FINAL_HEAL = 33778, @@ -52,8 +55,10 @@ enum DruidSpells SPELL_DRUID_LIVING_SEED_PROC = 48504, SPELL_DRUID_SURVIVAL_INSTINCTS = 50322, SPELL_DRUID_SAVAGE_ROAR = 62071, - SPELL_DRUID_TIGER_S_FURY_ENERGIZE = 51178, - SPELL_DRUID_ITEM_T8_BALANCE_RELIC = 64950 + SPELL_DRUID_STAMPEDE_BAER_RANK_1 = 81016, + SPELL_DRUID_STAMPEDE_CAT_RANK_1 = 81021, + SPELL_DRUID_STAMPEDE_CAT_STATE = 109881, + SPELL_DRUID_TIGER_S_FURY_ENERGIZE = 51178 }; // 2912, 5176, 78674 - Starfire, Wrath, and Starsurge @@ -834,6 +839,66 @@ class spell_dru_starfall_dummy : public SpellScriptLoader } }; +// -78892 - Stampede +class spell_dru_stampede : public SpellScriptLoader +{ + public: + spell_dru_stampede() : SpellScriptLoader("spell_dru_stampede") { } + + class spell_dru_stampede_AuraScript : public AuraScript + { + PrepareAuraScript(spell_dru_stampede_AuraScript); + + bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE + { + if (!sSpellMgr->GetSpellInfo(SPELL_DRUID_STAMPEDE_BAER_RANK_1) || + !sSpellMgr->GetSpellInfo(SPELL_DRUID_STAMPEDE_CAT_RANK_1) || + !sSpellMgr->GetSpellInfo(SPELL_DRUID_STAMPEDE_CAT_STATE) || + !sSpellMgr->GetSpellInfo(SPELL_DRUID_FERAL_CHARGE_CAT) || + !sSpellMgr->GetSpellInfo(SPELL_DRUID_FERAL_CHARGE_BEAR)) + return false; + return true; + } + + bool CheckProc(ProcEventInfo& eventInfo) + { + TC_LOG_ERROR(LOG_FILTER_SPELLS_AURAS, "procSpell: %u", eventInfo.GetDamageInfo()->GetSpellInfo()->Id); + return true; + } + + void HandleEffectCatProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo) + { + PreventDefaultAction(); + if (GetTarget()->GetShapeshiftForm() != FORM_CAT || eventInfo.GetDamageInfo()->GetSpellInfo()->Id != SPELL_DRUID_FERAL_CHARGE_CAT) + return; + + GetTarget()->CastSpell(GetTarget(), sSpellMgr->GetSpellWithRank(SPELL_DRUID_STAMPEDE_CAT_RANK_1, GetSpellInfo()->GetRank()), true, NULL, aurEff); + GetTarget()->CastSpell(GetTarget(), SPELL_DRUID_STAMPEDE_CAT_STATE, true, NULL, aurEff); + } + + void HandleEffectBearProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo) + { + PreventDefaultAction(); + if (GetTarget()->GetShapeshiftForm() != FORM_BEAR || eventInfo.GetDamageInfo()->GetSpellInfo()->Id != SPELL_DRUID_FERAL_CHARGE_BEAR) + return; + + GetTarget()->CastSpell(GetTarget(), sSpellMgr->GetSpellWithRank(SPELL_DRUID_STAMPEDE_BAER_RANK_1, GetSpellInfo()->GetRank()), true, NULL, aurEff); + } + + void Register() OVERRIDE + { + DoCheckProc += AuraCheckProcFn(spell_dru_stampede_AuraScript::CheckProc); + OnEffectProc += AuraEffectProcFn(spell_dru_stampede_AuraScript::HandleEffectCatProc, EFFECT_0, SPELL_AURA_DUMMY); + OnEffectProc += AuraEffectProcFn(spell_dru_stampede_AuraScript::HandleEffectBearProc, EFFECT_1, SPELL_AURA_DUMMY); + } + }; + + AuraScript* GetAuraScript() const OVERRIDE + { + return new spell_dru_stampede_AuraScript(); + } +}; + // 61336 - Survival Instincts class spell_dru_survival_instincts : public SpellScriptLoader { @@ -1065,6 +1130,7 @@ void AddSC_druid_spell_scripts() new spell_dru_savage_defense(); new spell_dru_savage_roar(); new spell_dru_starfall_dummy(); + new spell_dru_stampede(); new spell_dru_survival_instincts(); new spell_dru_swift_flight_passive(); new spell_dru_tiger_s_fury(); |