diff options
author | Aqua Deus <95978183+aquadeus@users.noreply.github.com> | 2024-12-20 16:02:57 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-12-20 16:02:57 +0100 |
commit | a2371c84672320c07d00b481ccdb7c852d24dbdf (patch) | |
tree | 65f57e5c2d8c2b6ab829dc60d0f1f5cb7bb87da0 | |
parent | ad06dcaaec6b55e3c2e6ae8214a44074f343c8ca (diff) |
Scripts/Spells: Implement demon hunter talent "Furious Gaze" (#30530)
-rw-r--r-- | sql/updates/world/master/2024_12_20_00_world.sql | 3 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_dh.cpp | 34 |
2 files changed, 37 insertions, 0 deletions
diff --git a/sql/updates/world/master/2024_12_20_00_world.sql b/sql/updates/world/master/2024_12_20_00_world.sql new file mode 100644 index 00000000000..f85eccdaa76 --- /dev/null +++ b/sql/updates/world/master/2024_12_20_00_world.sql @@ -0,0 +1,3 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_dh_furious_gaze'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(198013, 'spell_dh_furious_gaze'); diff --git a/src/server/scripts/Spells/spell_dh.cpp b/src/server/scripts/Spells/spell_dh.cpp index 60d24c6d756..eb5d5a6882a 100644 --- a/src/server/scripts/Spells/spell_dh.cpp +++ b/src/server/scripts/Spells/spell_dh.cpp @@ -107,6 +107,8 @@ enum DemonHunterSpells SPELL_DH_FIRST_BLOOD = 206416, SPELL_DH_FLAME_CRASH = 227322, SPELL_DH_FRAILTY = 224509, + SPELL_DH_FURIOUS_GAZE = 343311, + SPELL_DH_FURIOUS_GAZE_BUFF = 343312, SPELL_DH_GLIDE = 131347, SPELL_DH_GLIDE_DURATION = 197154, SPELL_DH_GLIDE_KNOCKBACK = 196353, @@ -550,6 +552,37 @@ private: ObjectGuid _firstTargetGUID; }; +// Called by 198013 - Eye Beam +class spell_dh_furious_gaze : public AuraScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_DH_FURIOUS_GAZE, SPELL_DH_FURIOUS_GAZE_BUFF }); + } + + bool Load() override + { + return GetUnitOwner()->HasAura(SPELL_DH_FURIOUS_GAZE); + } + + void HandleAfterRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) const + { + if (GetTargetApplication()->GetRemoveMode() != AURA_REMOVE_BY_EXPIRE) + return; + + Unit* target = GetTarget(); + target->CastSpell(target, SPELL_DH_FURIOUS_GAZE_BUFF, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringAura = aurEff + }); + } + + void Register() override + { + AfterEffectRemove += AuraEffectRemoveFn(spell_dh_furious_gaze::HandleAfterRemove, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL); + } +}; + // 188499 - Blade Dance // 210152 - Death Sweep class spell_dh_blade_dance : public SpellScript @@ -875,6 +908,7 @@ void AddSC_demon_hunter_spell_scripts() RegisterSpellScript(spell_dh_felblade); RegisterSpellScript(spell_dh_felblade_charge); RegisterSpellScript(spell_dh_felblade_cooldown_reset_proc); + RegisterSpellScript(spell_dh_furious_gaze); RegisterSpellScript(spell_dh_sigil_of_chains); RegisterSpellScript(spell_dh_tactical_retreat); RegisterSpellScript(spell_dh_vengeful_retreat_damage); |