diff options
author | Shauren <shauren.trinity@gmail.com> | 2023-07-22 00:18:05 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2023-07-22 00:18:05 +0200 |
commit | 970a274be131e694b2fdf6f2b4d572dfc7151b56 (patch) | |
tree | 2aa9a8868aa46543da3af4a75fe1a8699f079457 /src | |
parent | d3bc5ebf1627527de638c4e686d5b42ebfd849b3 (diff) |
Scripts/Spells: Fixed Entangling Roots periodic damage
Closes #28752
Co-authored-by: ModoX <moardox@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Spells/spell_druid.cpp | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp index b4070dda867..ad8a35fa3c2 100644 --- a/src/server/scripts/Spells/spell_druid.cpp +++ b/src/server/scripts/Spells/spell_druid.cpp @@ -47,6 +47,7 @@ enum DruidSpells SPELL_DRUID_BRAMBLES_REFLECT = 203958, SPELL_DRUID_BRISTLING_FUR_GAIN_RAGE = 204031, SPELL_DRUID_CAT_FORM = 768, + SPELL_DRUID_CURIOUS_BRAMBLEPATCH = 330670, SPELL_DRUID_EARTHWARDEN_AURA = 203975, SPELL_DRUID_ECLIPSE_DUMMY = 79577, SPELL_DRUID_ECLIPSE_LUNAR_AURA = 48518, @@ -54,6 +55,7 @@ enum DruidSpells SPELL_DRUID_ECLIPSE_OOC = 329910, SPELL_DRUID_ECLIPSE_SOLAR_AURA = 48517, SPELL_DRUID_ECLIPSE_SOLAR_SPELL_CNT = 326053, + SPELL_DRUID_ENTANGLING_ROOTS = 339, SPELL_DRUID_EXHILARATE = 28742, SPELL_DRUID_FORM_AQUATIC_PASSIVE = 276012, SPELL_DRUID_FORM_AQUATIC = 1066, @@ -80,6 +82,7 @@ enum DruidSpells SPELL_DRUID_LIFEBLOOM_FINAL_HEAL = 33778, SPELL_DRUID_LUNAR_INSPIRATION_OVERRIDE = 155627, SPELL_DRUID_MANGLE = 33917, + SPELL_DRUID_MASS_ENTANGLEMENT = 102359, SPELL_DRUID_MOONFIRE_DAMAGE = 164812, SPELL_DRUID_PROWL = 5215, SPELL_DRUID_REJUVENATION_T10_PROC = 70691, @@ -478,6 +481,63 @@ class spell_dru_earthwarden : public AuraScript } }; +// 339 - Entangling Roots +// 102359 - Mass Entanglement +class spell_dru_entangling_roots : public SpellScript +{ + PrepareSpellScript(spell_dru_entangling_roots); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_DRUID_CURIOUS_BRAMBLEPATCH }); + } + + void HandleCuriousBramblepatch(WorldObject*& target) + { + if (!GetCaster()->HasAura(SPELL_DRUID_CURIOUS_BRAMBLEPATCH)) + target = nullptr; + } + + void HandleCuriousBramblepatchAOE(std::list<WorldObject*>& targets) + { + if (!GetCaster()->HasAura(SPELL_DRUID_CURIOUS_BRAMBLEPATCH)) + targets.clear(); + } + + void Register() override + { + OnObjectTargetSelect += SpellObjectTargetSelectFn(spell_dru_entangling_roots::HandleCuriousBramblepatch, EFFECT_1, TARGET_UNIT_TARGET_ENEMY); + if (m_scriptSpellId == SPELL_DRUID_MASS_ENTANGLEMENT) + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_dru_entangling_roots::HandleCuriousBramblepatchAOE, EFFECT_1, TARGET_UNIT_DEST_AREA_ENEMY); + } +}; + +class spell_dru_entangling_roots_aura : public AuraScript +{ + PrepareAuraScript(spell_dru_entangling_roots_aura); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_DRUID_ENTANGLING_ROOTS, SPELL_DRUID_MASS_ENTANGLEMENT }); + } + + bool CheckProc(ProcEventInfo& eventInfo) + { + if (SpellInfo const* spellInfo = eventInfo.GetSpellInfo()) + { + // dont subtract dmg caused by roots from dmg required to break root + if (spellInfo->Id == SPELL_DRUID_ENTANGLING_ROOTS || spellInfo->Id == SPELL_DRUID_MASS_ENTANGLEMENT) + return false; + } + return true; + } + + void Register() override + { + DoCheckProc += AuraCheckProcFn(spell_dru_entangling_roots_aura::CheckProc); + } +}; + // 22568 - Ferocious Bite class spell_dru_ferocious_bite : public SpellScript { @@ -1722,6 +1782,7 @@ void AddSC_druid_spell_scripts() RegisterSpellScript(spell_dru_eclipse_aura); RegisterSpellScript(spell_dru_eclipse_dummy); RegisterSpellScript(spell_dru_eclipse_ooc); + RegisterSpellAndAuraScriptPair(spell_dru_entangling_roots, spell_dru_entangling_roots_aura); RegisterSpellScript(spell_dru_ferocious_bite); RegisterSpellScript(spell_dru_forms_trinket); RegisterSpellScript(spell_dru_galactic_guardian); |