aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAqua Deus <95978183+aquadeus@users.noreply.github.com>2025-01-17 15:21:03 +0100
committerGitHub <noreply@github.com>2025-01-17 15:21:03 +0100
commit73ef7d166ec99148f8c41182b799928851ddbf9a (patch)
treed878649fffdf992e2ce3cd7cea592d48854a9a41
parenta3b36597d08ea23eafb3ba8da837194e9427dda6 (diff)
Scripts/Spells: Implement demon hunter talent "Monster Rising" (#30546)
-rw-r--r--sql/updates/world/master/2025_01_17_04_world.sql3
-rw-r--r--src/server/scripts/Spells/spell_dh.cpp35
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);