aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/master/2022_02_06_01_world.sql10
-rw-r--r--src/server/scripts/Spells/spell_paladin.cpp70
2 files changed, 80 insertions, 0 deletions
diff --git a/sql/updates/world/master/2022_02_06_01_world.sql b/sql/updates/world/master/2022_02_06_01_world.sql
new file mode 100644
index 00000000000..7eb9e8a16f6
--- /dev/null
+++ b/sql/updates/world/master/2022_02_06_01_world.sql
@@ -0,0 +1,10 @@
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_pal_light_hammer_periodic';
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(122773,'spell_pal_light_hammer_init_summon'),
+(114918,'spell_pal_light_hammer_periodic');
+
+UPDATE `creature_template` SET `unit_flags`=0x2000000, `unit_flags2`=0x4008800, `unit_flags3`=0x1 WHERE `entry`=59738;
+
+DELETE FROM `creature_template_movement` WHERE `CreatureId`=59738;
+INSERT INTO `creature_template_movement` (`CreatureId`,`Flight`,`Rooted`) VALUES
+(59738,1,1);
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);