aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAqua Deus <95978183+aquadeus@users.noreply.github.com>2024-12-20 16:02:57 +0100
committerGitHub <noreply@github.com>2024-12-20 16:02:57 +0100
commita2371c84672320c07d00b481ccdb7c852d24dbdf (patch)
tree65f57e5c2d8c2b6ab829dc60d0f1f5cb7bb87da0
parentad06dcaaec6b55e3c2e6ae8214a44074f343c8ca (diff)
Scripts/Spells: Implement demon hunter talent "Furious Gaze" (#30530)
-rw-r--r--sql/updates/world/master/2024_12_20_00_world.sql3
-rw-r--r--src/server/scripts/Spells/spell_dh.cpp34
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);