aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/master/2024_12_30_01_world.sql7
-rw-r--r--src/server/scripts/Spells/spell_dh.cpp35
2 files changed, 42 insertions, 0 deletions
diff --git a/sql/updates/world/master/2024_12_30_01_world.sql b/sql/updates/world/master/2024_12_30_01_world.sql
new file mode 100644
index 00000000000..616ae4089fa
--- /dev/null
+++ b/sql/updates/world/master/2024_12_30_01_world.sql
@@ -0,0 +1,7 @@
+DELETE FROM `spell_proc` WHERE `SpellId` IN (390212);
+INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES
+(390212,0x00,107,0x00001000,0x00000040,0x00000000,0x00000000,0x0,0x0,0x1,0x1,0x0,0x12,0x0,0,0,0,0); -- Restless Hunter
+
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_dh_restless_hunter';
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(162264, 'spell_dh_restless_hunter');
diff --git a/src/server/scripts/Spells/spell_dh.cpp b/src/server/scripts/Spells/spell_dh.cpp
index 62c129622c4..b929db487aa 100644
--- a/src/server/scripts/Spells/spell_dh.cpp
+++ b/src/server/scripts/Spells/spell_dh.cpp
@@ -154,6 +154,8 @@ enum DemonHunterSpells
SPELL_DH_RAIN_OF_CHAOS = 205628,
SPELL_DH_RAIN_OF_CHAOS_IMPACT = 232538,
SPELL_DH_RAZOR_SPIKES = 210003,
+ SPELL_DH_RESTLESS_HUNTER_TALENT = 390142,
+ SPELL_DH_RESTLESS_HUNTER_BUFF = 390212,
SPELL_DH_SEVER = 235964,
SPELL_DH_SHATTER_SOUL = 209980,
SPELL_DH_SHATTER_SOUL_1 = 209981,
@@ -964,6 +966,38 @@ class spell_dh_glide_timer : public AuraScript
}
};
+// Called by 162264 - Metamorphosis
+class spell_dh_restless_hunter : public AuraScript
+{
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_DH_RESTLESS_HUNTER_TALENT, SPELL_DH_RESTLESS_HUNTER_BUFF, SPELL_DH_FEL_RUSH })
+ && sSpellCategoryStore.HasRecord(sSpellMgr->AssertSpellInfo(SPELL_DH_FEL_RUSH, DIFFICULTY_NONE)->ChargeCategoryId);
+ }
+
+ bool Load() override
+ {
+ return GetCaster()->HasAura(SPELL_DH_RESTLESS_HUNTER_TALENT);
+ }
+
+ void OnRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) const
+ {
+ Unit* target = GetTarget();
+
+ target->CastSpell(target, SPELL_DH_RESTLESS_HUNTER_BUFF, CastSpellExtraArgsInit{
+ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR,
+ .TriggeringAura = aurEff
+ });
+
+ target->GetSpellHistory()->RestoreCharge(sSpellMgr->AssertSpellInfo(SPELL_DH_FEL_RUSH, GetCastDifficulty())->ChargeCategoryId);
+ }
+
+ void Register() override
+ {
+ AfterEffectRemove += AuraEffectRemoveFn(spell_dh_restless_hunter::OnRemove, EFFECT_0, SPELL_AURA_TRANSFORM, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK);
+ }
+};
+
// 388116 - Shattered Destiny
class spell_dh_shattered_destiny : public AuraScript
{
@@ -1191,6 +1225,7 @@ void AddSC_demon_hunter_spell_scripts()
RegisterSpellScript(spell_dh_felblade_cooldown_reset_proc);
RegisterSpellScript(spell_dh_furious_gaze);
RegisterSpellScript(spell_dh_last_resort);
+ RegisterSpellScript(spell_dh_restless_hunter);
RegisterSpellScript(spell_dh_shattered_destiny);
RegisterSpellScript(spell_dh_sigil_of_chains);
RegisterSpellScript(spell_dh_tactical_retreat);