Scripts/Spells: Fixed Entangling Roots periodic damage

Closes #28752

Co-authored-by: ModoX <moardox@gmail.com>
This commit is contained in:
Shauren
2023-07-22 00:18:05 +02:00
parent d3bc5ebf16
commit 970a274be1
2 changed files with 65 additions and 0 deletions

View File

@@ -0,0 +1,4 @@
DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_dru_entangling_roots';
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
(339,'spell_dru_entangling_roots'),
(102359,'spell_dru_entangling_roots');

View File

@@ -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);