diff options
-rw-r--r-- | sql/updates/world/master/2024_12_30_01_world.sql | 7 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_dh.cpp | 35 |
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); |