diff options
author | Teleqraph <nyrdeveloper@gmail.com> | 2022-02-06 16:19:25 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-06 16:19:25 +0100 |
commit | 3fa4c049193a756873be2bf49c1ce467c7396082 (patch) | |
tree | a3ac046c9082e0159100522ef055cb22fb6e9a0a /src | |
parent | e5417e9ce747d92822538da77d32cf7d0f26ce8a (diff) |
Scripts/Spells: Implemented Ashen Hallow script (#27682)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Spells/spell_paladin.cpp | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/server/scripts/Spells/spell_paladin.cpp b/src/server/scripts/Spells/spell_paladin.cpp index a4422b84949..5749661271e 100644 --- a/src/server/scripts/Spells/spell_paladin.cpp +++ b/src/server/scripts/Spells/spell_paladin.cpp @@ -93,6 +93,14 @@ enum PaladinSpells SPELL_PALADIN_ZEAL_AURA = 269571, }; +enum PaladinCovenantSpells +{ + SPELL_PALADIN_ASHEN_HALLOW = 316958, + SPELL_PALADIN_ASHEN_HALLOW_DAMAGE = 317221, + SPELL_PALADIN_ASHEN_HALLOW_HEAL = 317223, + SPELL_PALADIN_ASHEN_HALLOW_ALLOW_HAMMER = 330382 +}; + enum PaladinSpellVisualKit { PALADIN_VISUAL_KIT_DIVINE_STORM = 73892 @@ -106,6 +114,61 @@ enum PaladinSpellVisual PALADIN_VISUAL_SPELL_HOLY_SHOCK_HEAL_CRIT = 83880, }; +// 19042 - Ashen Hallow +struct areatrigger_pal_ashen_hallow : AreaTriggerAI +{ + areatrigger_pal_ashen_hallow(AreaTrigger* areatrigger) : AreaTriggerAI(areatrigger) {} + + void RefreshPeriod() + { + if (Unit* caster = at->GetCaster()) + { + if (AuraEffect const* ashen = caster->GetAuraEffect(SPELL_PALADIN_ASHEN_HALLOW, EFFECT_1)) + _period = Milliseconds(ashen->GetPeriod()); + } + } + + void OnCreate() override + { + RefreshPeriod(); + _refreshTimer = _period; + } + + void OnUpdate(uint32 diff) override + { + _refreshTimer -= Milliseconds(diff); + + while (_refreshTimer <= 0s) + { + if (Unit* caster = at->GetCaster()) + { + caster->CastSpell(at->GetPosition(), SPELL_PALADIN_ASHEN_HALLOW_HEAL); + caster->CastSpell(at->GetPosition(), SPELL_PALADIN_ASHEN_HALLOW_DAMAGE); + } + + RefreshPeriod(); + + _refreshTimer += _period; + } + } + + void OnUnitEnter(Unit* unit) override + { + if (unit->GetGUID() == at->GetCasterGuid()) + unit->CastSpell(unit, SPELL_PALADIN_ASHEN_HALLOW_ALLOW_HAMMER, true); + } + + void OnUnitExit(Unit* unit) override + { + if (unit->GetGUID() == at->GetCasterGuid()) + unit->RemoveAura(SPELL_PALADIN_ASHEN_HALLOW_ALLOW_HAMMER); + } + +private: + Milliseconds _refreshTimer; + Milliseconds _period; +}; + /* // 31850 - Ardent Defender class spell_pal_ardent_defender : public SpellScriptLoader @@ -1308,6 +1371,7 @@ class spell_pal_zeal : public AuraScript void AddSC_paladin_spell_scripts() { //new spell_pal_ardent_defender(); + RegisterAreaTriggerAI(areatrigger_pal_ashen_hallow); RegisterSpellScript(spell_pal_blessing_of_protection); RegisterSpellScript(spell_pal_blinding_light); RegisterSpellScript(spell_pal_crusader_might); |