diff options
author | aquadeus <efectokoleos13@gmail.com> | 2024-12-20 21:35:32 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2024-12-20 21:35:32 +0100 |
commit | 07bf6bff8946d24b202b20a846cbb9d7267abde5 (patch) | |
tree | 60da3de9d2254a3a636d8d0081fbfd3a875d495e /src/server/scripts | |
parent | 92260903567c51e9df11c48655e771a10c66b63f (diff) |
Scripts/Spells: Fix demon hunter talent "Collective Anguish"
Closes #30503
Diffstat (limited to 'src/server/scripts')
-rw-r--r-- | src/server/scripts/Spells/spell_dh.cpp | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/server/scripts/Spells/spell_dh.cpp b/src/server/scripts/Spells/spell_dh.cpp index eb5d5a6882a..e9dc3f5c2c0 100644 --- a/src/server/scripts/Spells/spell_dh.cpp +++ b/src/server/scripts/Spells/spell_dh.cpp @@ -58,6 +58,10 @@ enum DemonHunterSpells SPELL_DH_CHAOS_STRIKE_OH = 199547, SPELL_DH_CHAOTIC_TRANSFORMATION = 388112, SPELL_DH_CHARRED_WARBLADES_HEAL = 213011, + SPELL_DH_COLLECTIVE_ANGUISH = 390152, + SPELL_DH_COLLECTIVE_ANGUISH_EYE_BEAM = 391057, + SPELL_DH_COLLECTIVE_ANGUISH_EYE_BEAM_DAMAGE = 391058, + SPELL_DH_COLLECTIVE_ANGUISH_FEL_DEVASTATION = 393831, SPELL_DH_CONSUME_SOUL_HAVOC = 228542, SPELL_DH_CONSUME_SOUL_HAVOC_DEMON = 228556, SPELL_DH_CONSUME_SOUL_HAVOC_SHATTERED = 228540, @@ -285,6 +289,67 @@ private: uint32 _healAmount = 0; }; +// Called by 212084 - Fel Devastation and 198013 - Eye Beam +class spell_dh_collective_anguish : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_DH_COLLECTIVE_ANGUISH, SPELL_DH_FEL_DEVASTATION, SPELL_DH_COLLECTIVE_ANGUISH_EYE_BEAM, SPELL_DH_COLLECTIVE_ANGUISH_FEL_DEVASTATION }); + } + + bool Load() override + { + return GetCaster()->HasAura(SPELL_DH_COLLECTIVE_ANGUISH); + } + + void HandleEyeBeam() const + { + GetCaster()->CastSpell(GetCaster(), SPELL_DH_COLLECTIVE_ANGUISH_EYE_BEAM, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringSpell = GetSpell() + }); + } + + void HandleFelDevastation() const + { + GetCaster()->CastSpell(GetCaster(), SPELL_DH_COLLECTIVE_ANGUISH_FEL_DEVASTATION, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringSpell = GetSpell() + }); + } + + void Register() override + { + if (m_scriptSpellId == SPELL_DH_FEL_DEVASTATION) + AfterCast += SpellCastFn(spell_dh_collective_anguish::HandleEyeBeam); + else + AfterCast += SpellCastFn(spell_dh_collective_anguish::HandleFelDevastation); + } +}; + +// 391057 - Eye Beam +class spell_dh_collective_anguish_eye_beam : public AuraScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_DH_COLLECTIVE_ANGUISH_EYE_BEAM_DAMAGE }); + } + + void HandleEffectPeriodic(AuraEffect const* aurEff) const + { + if (Unit* caster = GetCaster()) + caster->CastSpell(nullptr, SPELL_DH_COLLECTIVE_ANGUISH_EYE_BEAM_DAMAGE, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringAura = aurEff + }); + } + + void Register() override + { + OnEffectPeriodic += AuraEffectPeriodicFn(spell_dh_collective_anguish_eye_beam::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL); + } +}; + // Called by 212084 - Fel Devastation class spell_dh_darkglare_boon : public AuraScript { @@ -900,6 +965,8 @@ void AddSC_demon_hunter_spell_scripts() RegisterSpellScript(spell_dh_chaos_strike); RegisterSpellScript(spell_dh_chaotic_transformation); RegisterSpellScript(spell_dh_charred_warblades); + RegisterSpellScript(spell_dh_collective_anguish); + RegisterSpellScript(spell_dh_collective_anguish_eye_beam); RegisterSpellScript(spell_dh_darkglare_boon); RegisterSpellScript(spell_dh_darkness); RegisterSpellScript(spell_dh_eye_beam); |