aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Spells/spell_paladin.cpp70
1 files changed, 70 insertions, 0 deletions
diff --git a/src/server/scripts/Spells/spell_paladin.cpp b/src/server/scripts/Spells/spell_paladin.cpp
index 5749661271e..c8f99a607bc 100644
--- a/src/server/scripts/Spells/spell_paladin.cpp
+++ b/src/server/scripts/Spells/spell_paladin.cpp
@@ -86,6 +86,10 @@ enum PaladinSpells
SPELL_PALADIN_JUDGMENT_HOLY_R3 = 231644,
SPELL_PALADIN_JUDGMENT_HOLY_R3_DEBUFF = 214222,
SPELL_PALADIN_JUDGMENT_PROT_RET_R3 = 315867,
+ SPELL_PALADIN_LIGHT_HAMMER_COSMETIC = 122257,
+ SPELL_PALADIN_LIGHT_HAMMER_DAMAGE = 114919,
+ SPELL_PALADIN_LIGHT_HAMMER_HEALING = 119952,
+ SPELL_PALADIN_LIGHT_HAMMER_PERIODIC = 114918,
SPELL_PALADIN_RIGHTEOUS_DEFENSE_TAUNT = 31790,
SPELL_PALADIN_RIGHTEOUS_VERDICT_AURA = 267611,
SPELL_PALADIN_SEAL_OF_RIGHTEOUSNESS = 25742,
@@ -1130,6 +1134,70 @@ class spell_pal_light_s_beacon : public SpellScriptLoader
}
};
+// 122773 - Light's Hammer
+class spell_pal_light_hammer_init_summon : public SpellScript
+{
+ PrepareSpellScript(spell_pal_light_hammer_init_summon);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo
+ ({
+ SPELL_PALADIN_LIGHT_HAMMER_COSMETIC,
+ SPELL_PALADIN_LIGHT_HAMMER_PERIODIC
+ });
+ }
+
+ void InitSummon()
+ {
+ for (SpellLogEffectGenericVictimParams const& summonedObject : GetSpell()->GetExecuteLogEffectTargets(SPELL_EFFECT_SUMMON, &SpellLogEffect::GenericVictimTargets))
+ {
+ if (Unit* hammer = ObjectAccessor::GetUnit(*GetCaster(), summonedObject.Victim))
+ {
+ hammer->CastSpell(hammer, SPELL_PALADIN_LIGHT_HAMMER_COSMETIC,
+ CastSpellExtraArgs(TRIGGERED_IGNORE_CAST_IN_PROGRESS).SetTriggeringSpell(GetSpell()));
+ hammer->CastSpell(hammer, SPELL_PALADIN_LIGHT_HAMMER_PERIODIC,
+ CastSpellExtraArgs(TRIGGERED_IGNORE_CAST_IN_PROGRESS).SetTriggeringSpell(GetSpell()));
+ }
+ }
+ }
+
+ void Register() override
+ {
+ AfterCast += SpellCastFn(spell_pal_light_hammer_init_summon::InitSummon);
+ }
+};
+
+// 114918 - Light's Hammer (Periodic)
+class spell_pal_light_hammer_periodic : public AuraScript
+{
+ PrepareAuraScript(spell_pal_light_hammer_periodic);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo
+ ({
+ SPELL_PALADIN_LIGHT_HAMMER_HEALING,
+ SPELL_PALADIN_LIGHT_HAMMER_DAMAGE
+ });
+ }
+
+ void HandleEffectPeriodic(AuraEffect const* /*aurEff*/)
+ {
+ Unit* lightHammer = GetTarget();
+ if (Unit* originalCaster = lightHammer->GetOwner())
+ {
+ originalCaster->CastSpell(lightHammer->GetPosition(), SPELL_PALADIN_LIGHT_HAMMER_DAMAGE, TRIGGERED_IGNORE_CAST_IN_PROGRESS);
+ originalCaster->CastSpell(lightHammer->GetPosition(), SPELL_PALADIN_LIGHT_HAMMER_HEALING, TRIGGERED_IGNORE_CAST_IN_PROGRESS);
+ }
+ }
+
+ void Register() override
+ {
+ OnEffectPeriodic += AuraEffectPeriodicFn(spell_pal_light_hammer_periodic::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
+ }
+};
+
// 204074 - Righteous Protector
class spell_pal_righteous_protector : public AuraScript
{
@@ -1397,6 +1465,8 @@ void AddSC_paladin_spell_scripts()
RegisterSpellScript(spell_pal_item_t6_trinket);
RegisterSpellScript(spell_pal_lay_on_hands);
new spell_pal_light_s_beacon();
+ RegisterSpellScript(spell_pal_light_hammer_init_summon);
+ RegisterSpellScript(spell_pal_light_hammer_periodic);
RegisterSpellScript(spell_pal_righteous_protector);
RegisterSpellScript(spell_pal_righteous_verdict);
RegisterSpellScript(spell_pal_selfless_healer);