aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAqua Deus <95978183+aquadeus@users.noreply.github.com>2025-05-25 21:55:27 +0200
committerGitHub <noreply@github.com>2025-05-25 21:55:27 +0200
commit0f7e72a5f6a3d693a6e107dc680cc00f2dce1322 (patch)
tree7ac8e83b03f6fa4470736ef29383ddb9f76208bc /src
parenta8800c4e67418c84e050be363a02c9c6987d682f (diff)
Scripts/Spells: Implement demon hunter talent Violent Transformation (#30969)
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Spells/spell_dh.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/server/scripts/Spells/spell_dh.cpp b/src/server/scripts/Spells/spell_dh.cpp
index edbe36f6ac8..8808655cd23 100644
--- a/src/server/scripts/Spells/spell_dh.cpp
+++ b/src/server/scripts/Spells/spell_dh.cpp
@@ -137,6 +137,7 @@ enum DemonHunterSpells
SPELL_DH_ILLIDANS_GRASP = 205630,
SPELL_DH_ILLIDANS_GRASP_DAMAGE = 208618,
SPELL_DH_ILLIDANS_GRASP_JUMP_DEST = 208175,
+ SPELL_DH_IMMOLATION_AURA = 258920,
SPELL_DH_INNER_DEMON_BUFF = 390145,
SPELL_DH_INNER_DEMON_DAMAGE = 390137,
SPELL_DH_INNER_DEMON_TALENT = 389693,
@@ -186,6 +187,7 @@ enum DemonHunterSpells
SPELL_DH_SIGIL_OF_CHAINS_SNARE = 204843,
SPELL_DH_SIGIL_OF_CHAINS_TARGET_SELECT = 204834,
SPELL_DH_SIGIL_OF_CHAINS_VISUAL = 208673,
+ SPELL_DH_SIGIL_OF_FLAME = 204596,
SPELL_DH_SIGIL_OF_FLAME_AOE = 204598,
SPELL_DH_SIGIL_OF_FLAME_FLAME_CRASH = 228973,
SPELL_DH_SIGIL_OF_FLAME_VISUAL = 208710,
@@ -208,6 +210,7 @@ enum DemonHunterSpells
SPELL_DH_TACTICAL_RETREAT_TALENT = 389688,
SPELL_DH_THROW_GLAIVE = 185123,
SPELL_DH_UNCONTAINED_FEL = 209261,
+ SPELL_DH_VENGEANCE_DEMON_HUNTER = 212613,
SPELL_DH_VENGEFUL_BONDS = 320635,
SPELL_DH_VENGEFUL_RETREAT = 198813,
SPELL_DH_VENGEFUL_RETREAT_TRIGGER = 198793,
@@ -1655,6 +1658,31 @@ class spell_dh_vengeful_retreat_damage : public SpellScript
}
};
+// 452409 - Violent Transformation
+class spell_dh_violent_transformation : public AuraScript
+{
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_DH_SIGIL_OF_FLAME, SPELL_DH_VENGEANCE_DEMON_HUNTER, SPELL_DH_FEL_DEVASTATION, SPELL_DH_IMMOLATION_AURA });
+ }
+
+ void HandleOnProc(AuraEffect const* /*aurEff*/, ProcEventInfo const& /*eventInfo*/) const
+ {
+ Unit* target = GetTarget();
+ target->GetSpellHistory()->RestoreCharge(sSpellMgr->AssertSpellInfo(SPELL_DH_SIGIL_OF_FLAME, GetCastDifficulty())->ChargeCategoryId);
+
+ if (target->HasAura(SPELL_DH_VENGEANCE_DEMON_HUNTER))
+ target->GetSpellHistory()->ResetCooldown(SPELL_DH_FEL_DEVASTATION, true);
+ else
+ target->GetSpellHistory()->RestoreCharge(sSpellMgr->AssertSpellInfo(SPELL_DH_IMMOLATION_AURA, GetCastDifficulty())->ChargeCategoryId);
+ }
+
+ void Register() override
+ {
+ OnEffectProc += AuraEffectProcFn(spell_dh_violent_transformation::HandleOnProc, EFFECT_0, SPELL_AURA_DUMMY);
+ }
+};
+
void AddSC_demon_hunter_spell_scripts()
{
RegisterSpellScript(spell_dh_army_unto_oneself);
@@ -1699,6 +1727,7 @@ void AddSC_demon_hunter_spell_scripts()
RegisterSpellScript(spell_dh_tactical_retreat);
RegisterSpellScript(spell_dh_unhindered_assault);
RegisterSpellScript(spell_dh_vengeful_retreat_damage);
+ RegisterSpellScript(spell_dh_violent_transformation);
RegisterAreaTriggerAI(areatrigger_dh_darkness);
new GenericAreaTriggerEntityScript<areatrigger_dh_generic_sigil<SPELL_DH_SIGIL_OF_CHAINS_TARGET_SELECT, SPELL_DH_SIGIL_OF_CHAINS_VISUAL>>("areatrigger_dh_sigil_of_chains");