diff options
-rw-r--r-- | sql/updates/world/master/2022_02_13_00_world.sql | 8 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_paladin.cpp | 43 |
2 files changed, 50 insertions, 1 deletions
diff --git a/sql/updates/world/master/2022_02_13_00_world.sql b/sql/updates/world/master/2022_02_13_00_world.sql new file mode 100644 index 00000000000..93c1c217653 --- /dev/null +++ b/sql/updates/world/master/2022_02_13_00_world.sql @@ -0,0 +1,8 @@ +DELETE FROM `spell_proc` WHERE `SpellId` IN (53576,54149); +INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES +(53576,0x00,10,0x00200000,0x00010000,0x00000000,0x00000000,0x0,0x0,0x0,0x2,0x2,0x0,0x0,0,0,0,0), -- Infusion of Light (proc from holy shock) +(54149,0x00,10,0x40000000,0x00000000,0x00000400,0x00000000,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0,0,0,0); -- Infusion of Light (buff) + +DELETE FROM `spell_script_names` WHERE `spell_id`=54149 AND `ScriptName`='spell_pal_infusion_of_light'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(54149, 'spell_pal_infusion_of_light'); diff --git a/src/server/scripts/Spells/spell_paladin.cpp b/src/server/scripts/Spells/spell_paladin.cpp index 45f1737bfc3..a476c4d799a 100644 --- a/src/server/scripts/Spells/spell_paladin.cpp +++ b/src/server/scripts/Spells/spell_paladin.cpp @@ -82,6 +82,8 @@ enum PaladinSpells SPELL_PALADIN_HOLY_SHOCK = 20473, SPELL_PALADIN_HOLY_SHOCK_DAMAGE = 25912, SPELL_PALADIN_HOLY_SHOCK_HEALING = 25914, + SPELL_PALADIN_HOLY_LIGHT = 82326, + SPELL_PALADIN_INFUSION_OF_LIGHT_ENERGIZE = 356717, SPELL_PALADIN_IMMUNE_SHIELD_MARKER = 61988, SPELL_PALADIN_ITEM_HEALING_TRANCE = 37706, SPELL_PALADIN_JUDGMENT_GAIN_HOLY_POWER = 220637, @@ -96,7 +98,7 @@ enum PaladinSpells SPELL_PALADIN_RIGHTEOUS_VERDICT_AURA = 267611, SPELL_PALADIN_SEAL_OF_RIGHTEOUSNESS = 25742, SPELL_PALADIN_TEMPLAR_VERDICT_DAMAGE = 224266, - SPELL_PALADIN_ZEAL_AURA = 269571, + SPELL_PALADIN_ZEAL_AURA = 269571 }; enum PaladinCovenantSpells @@ -821,6 +823,44 @@ class spell_pal_hand_of_sacrifice : public SpellScriptLoader } }; +// 54149 - Infusion of Light +class spell_pal_infusion_of_light : public AuraScript +{ + PrepareAuraScript(spell_pal_infusion_of_light); + + static constexpr flag128 HolyLightSpellClassMask = { 0, 0, 0x400 }; + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_PALADIN_INFUSION_OF_LIGHT_ENERGIZE }); + } + + bool CheckFlashOfLightProc(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo) + { + return eventInfo.GetProcSpell() && eventInfo.GetProcSpell()->m_appliedMods.find(GetAura()) != eventInfo.GetProcSpell()->m_appliedMods.end(); + } + + bool CheckHolyLightProc(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo) + { + return eventInfo.GetSpellInfo() && eventInfo.GetSpellInfo()->IsAffected(SPELLFAMILY_PALADIN, HolyLightSpellClassMask); + } + + void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& eventInfo) + { + eventInfo.GetActor()->CastSpell(eventInfo.GetActor(), SPELL_PALADIN_INFUSION_OF_LIGHT_ENERGIZE, + CastSpellExtraArgs(TRIGGERED_FULL_MASK).SetTriggeringSpell(eventInfo.GetProcSpell())); + } + + void Register() override + { + DoCheckEffectProc += AuraCheckEffectProcFn(spell_pal_infusion_of_light::CheckFlashOfLightProc, EFFECT_0, SPELL_AURA_ADD_PCT_MODIFIER); + DoCheckEffectProc += AuraCheckEffectProcFn(spell_pal_infusion_of_light::CheckFlashOfLightProc, EFFECT_2, SPELL_AURA_ADD_FLAT_MODIFIER); + + DoCheckEffectProc += AuraCheckEffectProcFn(spell_pal_infusion_of_light::CheckHolyLightProc, EFFECT_1, SPELL_AURA_DUMMY); + OnEffectProc += AuraEffectProcFn(spell_pal_infusion_of_light::HandleProc, EFFECT_1, SPELL_AURA_DUMMY); + } +}; + // 327193 - Moment of Glory class spell_pal_moment_of_glory : public SpellScript { @@ -1563,6 +1603,7 @@ void AddSC_paladin_spell_scripts() new spell_pal_grand_crusader(); new spell_pal_hand_of_sacrifice(); RegisterSpellScript(spell_pal_hammer_of_the_righteous); + RegisterSpellScript(spell_pal_infusion_of_light); RegisterSpellScript(spell_pal_moment_of_glory); RegisterSpellScript(spell_pal_judgment); RegisterSpellScript(spell_pal_holy_prism); |