aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2023-07-22 00:18:05 +0200
committerShauren <shauren.trinity@gmail.com>2023-07-22 00:18:05 +0200
commit970a274be131e694b2fdf6f2b4d572dfc7151b56 (patch)
tree2aa9a8868aa46543da3af4a75fe1a8699f079457 /src
parentd3bc5ebf1627527de638c4e686d5b42ebfd849b3 (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.cpp61
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);