diff options
author | Aqua Deus <95978183+aquadeus@users.noreply.github.com> | 2025-01-17 15:21:03 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-01-17 15:21:03 +0100 |
commit | 73ef7d166ec99148f8c41182b799928851ddbf9a (patch) | |
tree | d878649fffdf992e2ce3cd7cea592d48854a9a41 | |
parent | a3b36597d08ea23eafb3ba8da837194e9427dda6 (diff) |
Scripts/Spells: Implement demon hunter talent "Monster Rising" (#30546)
-rw-r--r-- | sql/updates/world/master/2025_01_17_04_world.sql | 3 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_dh.cpp | 35 |
2 files changed, 38 insertions, 0 deletions
diff --git a/sql/updates/world/master/2025_01_17_04_world.sql b/sql/updates/world/master/2025_01_17_04_world.sql new file mode 100644 index 00000000000..f157f5d51d9 --- /dev/null +++ b/sql/updates/world/master/2025_01_17_04_world.sql @@ -0,0 +1,3 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_dh_monster_rising'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(452414, 'spell_dh_monster_rising'); diff --git a/src/server/scripts/Spells/spell_dh.cpp b/src/server/scripts/Spells/spell_dh.cpp index f8572d8fb66..a04d03adb3f 100644 --- a/src/server/scripts/Spells/spell_dh.cpp +++ b/src/server/scripts/Spells/spell_dh.cpp @@ -152,6 +152,7 @@ enum DemonHunterSpells SPELL_DH_METAMORPHOSIS_TRANSFORM = 162264, SPELL_DH_METAMORPHOSIS_VENGEANCE_TRANSFORM = 187827, SPELL_DH_MOMENTUM = 208628, + SPELL_DH_MONSTER_RISING_AGILITY = 452550, SPELL_DH_NEMESIS_ABERRATIONS = 208607, SPELL_DH_NEMESIS_BEASTS = 208608, SPELL_DH_NEMESIS_CRITTERS = 208609, @@ -1080,6 +1081,39 @@ class spell_dh_last_resort : public AuraScript } }; +// 452414 - Monster Rising +class spell_dh_monster_rising : public AuraScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_DH_MONSTER_RISING_AGILITY, SPELL_DH_METAMORPHOSIS_TRANSFORM, SPELL_DH_METAMORPHOSIS_VENGEANCE_TRANSFORM }); + } + + void HandlePeriodic(AuraEffect const* aurEff) const + { + Unit* target = GetTarget(); + AuraApplication* statBuff = target->GetAuraApplication(SPELL_DH_MONSTER_RISING_AGILITY); + + if (target->HasAura(SPELL_DH_METAMORPHOSIS_TRANSFORM) || target->HasAura(SPELL_DH_METAMORPHOSIS_VENGEANCE_TRANSFORM)) + { + if (statBuff) + target->RemoveAura(statBuff); + } + else if (!statBuff) + { + target->CastSpell(target, SPELL_DH_MONSTER_RISING_AGILITY, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringAura = aurEff + }); + } + } + + void Register() override + { + OnEffectPeriodic += AuraEffectPeriodicFn(spell_dh_monster_rising::HandlePeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY); + } +}; + // 188499 - Blade Dance // 210152 - Death Sweep class spell_dh_blade_dance : public SpellScript @@ -1521,6 +1555,7 @@ void AddSC_demon_hunter_spell_scripts() RegisterAreaTriggerAI(at_dh_inner_demon); RegisterSpellScript(spell_dh_know_your_enemy); RegisterSpellScript(spell_dh_last_resort); + RegisterSpellScript(spell_dh_monster_rising); RegisterSpellScript(spell_dh_restless_hunter); RegisterSpellScript(spell_dh_shattered_destiny); RegisterSpellScript(spell_dh_sigil_of_chains); |