diff options
| -rw-r--r-- | sql/updates/world/master/2022_01_09_02_world_shaman_ghost_wolf.sql | 4 | ||||
| -rw-r--r-- | src/server/scripts/Spells/spell_shaman.cpp | 36 |
2 files changed, 40 insertions, 0 deletions
diff --git a/sql/updates/world/master/2022_01_09_02_world_shaman_ghost_wolf.sql b/sql/updates/world/master/2022_01_09_02_world_shaman_ghost_wolf.sql new file mode 100644 index 00000000000..c1c0f0607e3 --- /dev/null +++ b/sql/updates/world/master/2022_01_09_02_world_shaman_ghost_wolf.sql @@ -0,0 +1,4 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_sha_spirit_wolf'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(2645,'spell_sha_spirit_wolf'), +(260878,'spell_sha_spirit_wolf'); diff --git a/src/server/scripts/Spells/spell_shaman.cpp b/src/server/scripts/Spells/spell_shaman.cpp index 56e3faab36b..0cc7f438a24 100644 --- a/src/server/scripts/Spells/spell_shaman.cpp +++ b/src/server/scripts/Spells/spell_shaman.cpp @@ -63,6 +63,7 @@ enum ShamanSpells SPELL_SHAMAN_FLAMETONGUE_WEAPON_AURA = 319778, SPELL_SHAMAN_GATHERING_STORMS = 198299, SPELL_SHAMAN_GATHERING_STORMS_BUFF = 198300, + SPELL_SHAMAN_GHOST_WOLF = 2645, SPELL_SHAMAN_HEALING_RAIN_VISUAL = 147490, SPELL_SHAMAN_HEALING_RAIN_HEAL = 73921, SPELL_SHAMAN_ITEM_LIGHTNING_SHIELD = 23552, @@ -79,6 +80,9 @@ enum ShamanSpells SPELL_SHAMAN_PATH_OF_FLAMES_TALENT = 201909, SPELL_SHAMAN_POWER_SURGE = 40466, SPELL_SHAMAN_SATED = 57724, + SPELL_SHAMAN_SPIRIT_WOLF_TALENT = 260878, + SPELL_SHAMAN_SPIRIT_WOLF_PERIODIC = 260882, + SPELL_SHAMAN_SPIRIT_WOLF_AURA = 260881, SPELL_SHAMAN_TIDAL_WAVES = 53390, SPELL_SHAMAN_TOTEMIC_POWER_MP5 = 28824, SPELL_SHAMAN_TOTEMIC_POWER_SPELL_POWER = 28825, @@ -1062,6 +1066,37 @@ class spell_sha_path_of_flames_spread : public SpellScript } }; +// 2645 - Ghost Wolf +// 260878 - Spirit Wolf +class spell_sha_spirit_wolf : public AuraScript +{ + PrepareAuraScript(spell_sha_spirit_wolf); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_SHAMAN_GHOST_WOLF, SPELL_SHAMAN_SPIRIT_WOLF_TALENT, SPELL_SHAMAN_SPIRIT_WOLF_PERIODIC, SPELL_SHAMAN_SPIRIT_WOLF_AURA }); + } + + void OnApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) + { + Unit* target = GetTarget(); + if (target->HasAura(SPELL_SHAMAN_SPIRIT_WOLF_TALENT) && target->HasAura(SPELL_SHAMAN_GHOST_WOLF)) + target->CastSpell(target, SPELL_SHAMAN_SPIRIT_WOLF_PERIODIC, aurEff); + } + + void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->RemoveAurasDueToSpell(SPELL_SHAMAN_SPIRIT_WOLF_PERIODIC); + GetTarget()->RemoveAurasDueToSpell(SPELL_SHAMAN_SPIRIT_WOLF_AURA); + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_sha_spirit_wolf::OnApply, EFFECT_0, SPELL_AURA_ANY, AURA_EFFECT_HANDLE_REAL); + AfterEffectRemove += AuraEffectRemoveFn(spell_sha_spirit_wolf::OnRemove, EFFECT_0, SPELL_AURA_ANY, AURA_EFFECT_HANDLE_REAL); + } +}; + // 51564 - Tidal Waves class spell_sha_tidal_waves : public AuraScript { @@ -1443,6 +1478,7 @@ void AddSC_shaman_spell_scripts() RegisterSpellScript(spell_sha_liquid_magma_totem); RegisterAuraScript(spell_sha_natures_guardian); RegisterSpellScript(spell_sha_path_of_flames_spread); + RegisterAuraScript(spell_sha_spirit_wolf); RegisterAuraScript(spell_sha_tidal_waves); RegisterAuraScript(spell_sha_t3_6p_bonus); RegisterAuraScript(spell_sha_t3_8p_bonus); |
