diff options
author | offl <11556157+offl@users.noreply.github.com> | 2022-06-26 21:44:40 +0300 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-09-05 19:37:13 +0200 |
commit | 496eba4e8d579816895c11060f896faa4523623e (patch) | |
tree | 2be9d713c43f0350202517347057fcc2b7c20a4c /src/server/scripts/Outland | |
parent | 249f55a483d49fa52d0d60aadd4a927084317a67 (diff) |
Scripts/Spells: Correctly implement Murmur's Touch & Dire Brew (#28058)
(cherry picked from commit f0d2418e5f2dabfae97a481fde52bc20ba93c72e)
Diffstat (limited to 'src/server/scripts/Outland')
-rw-r--r-- | src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp | 83 |
1 files changed, 79 insertions, 4 deletions
diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp index f995ff53986..c091efd21c9 100644 --- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp +++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp @@ -25,11 +25,16 @@ EndScriptData */ #include "ScriptMgr.h" #include "ScriptedCreature.h" #include "shadow_labyrinth.h" +#include "SpellAuraEffects.h" #include "SpellScript.h" -enum Murmur +enum Texts +{ + EMOTE_SONIC_BOOM = 0 +}; + +enum Spells { - // Spell SPELL_RESONANCE = 33657, SPELL_MAGNETIC_PULL = 33689, SPELL_SONIC_SHOCK = 38797, @@ -37,8 +42,11 @@ enum Murmur SPELL_SONIC_BOOM_CAST = 33923, SPELL_SONIC_BOOM_EFFECT = 33666, SPELL_MURMURS_TOUCH = 33711, - // Text - EMOTE_SONIC_BOOM = 0 + SPELL_MURMURS_TOUCH_H = 38794, + + SPELL_MURMURS_TOUCH_DUMMY = 33760, + SPELL_SHOCKWAVE = 33686, + SPELL_SHOCKWAVE_KNOCK_BACK = 33673 }; enum Events @@ -214,10 +222,77 @@ class spell_murmur_thundering_storm : public SpellScript } }; +// 33711, 38794 - Murmur's Touch +class spell_murmur_murmurs_touch : public AuraScript +{ + PrepareAuraScript(spell_murmur_murmurs_touch); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo( + { + SPELL_MURMURS_TOUCH_DUMMY, + SPELL_SHOCKWAVE, + SPELL_SHOCKWAVE_KNOCK_BACK + }); + } + + void OnPeriodic(AuraEffect const* aurEff) + { + Unit* target = GetTarget(); + + switch (GetId()) + { + case SPELL_MURMURS_TOUCH: + switch (aurEff->GetTickNumber()) + { + case 7: + case 10: + case 12: + case 13: + target->CastSpell(target, SPELL_MURMURS_TOUCH_DUMMY, true); + break; + case 14: + target->CastSpell(target, SPELL_MURMURS_TOUCH_DUMMY, true); + target->CastSpell(target, SPELL_SHOCKWAVE, true); + target->CastSpell(target, SPELL_SHOCKWAVE_KNOCK_BACK, true); + break; + default: + break; + } + break; + case SPELL_MURMURS_TOUCH_H: + switch (aurEff->GetTickNumber()) + { + case 3: + case 6: + target->CastSpell(target, SPELL_MURMURS_TOUCH_DUMMY, true); + break; + case 7: + target->CastSpell(target, SPELL_MURMURS_TOUCH_DUMMY, true); + target->CastSpell(target, SPELL_SHOCKWAVE, true); + target->CastSpell(target, SPELL_SHOCKWAVE_KNOCK_BACK, true); + break; + default: + break; + } + break; + default: + break; + } + } + + void Register() override + { + OnEffectPeriodic += AuraEffectPeriodicFn(spell_murmur_murmurs_touch::OnPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL); + } +}; + void AddSC_boss_murmur() { RegisterShadowLabyrinthCreatureAI(boss_murmur); RegisterSpellScript(spell_murmur_sonic_boom); RegisterSpellScript(spell_murmur_sonic_boom_effect); RegisterSpellScript(spell_murmur_thundering_storm); + RegisterSpellScript(spell_murmur_murmurs_touch); } |