aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTeleqraph <nyrdeveloper@gmail.com>2022-02-06 16:19:25 +0100
committerGitHub <noreply@github.com>2022-02-06 16:19:25 +0100
commit3fa4c049193a756873be2bf49c1ce467c7396082 (patch)
treea3ac046c9082e0159100522ef055cb22fb6e9a0a /src
parente5417e9ce747d92822538da77d32cf7d0f26ce8a (diff)
Scripts/Spells: Implemented Ashen Hallow script (#27682)
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Spells/spell_paladin.cpp64
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);