diff --git a/sql/updates/world/4.3.4/2017_11_30_11_world.sql b/sql/updates/world/4.3.4/2017_11_30_11_world.sql new file mode 100644 index 00000000000..8f8b248fbae --- /dev/null +++ b/sql/updates/world/4.3.4/2017_11_30_11_world.sql @@ -0,0 +1,8 @@ +-- +DELETE FROM `spell_script_names` WHERE `ScriptName`= 'spell_pri_echo_of_light'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(77485, 'spell_pri_echo_of_light'); + +DELETE FROM `spell_proc` WHERE `SpellID`= 77485; +INSERT INTO `spell_proc` (`SpellID`, `SpellFamilyName`, `SpellFamilyMask0`, `ProcFlags`, `SpellTypeMask`, `SpellPhaseMask`, `HitMask`, `AttributesMask`) VALUES +(77485, 6, 0, 0x00004000, 2, 2, 0, 0x0000020); diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index e21a1a06736..2408abe20d0 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -37,6 +37,7 @@ enum PriestSpells SPELL_PRIEST_DISPEL_MAGIC_HOSTILE = 97691, SPELL_PRIEST_DIVINE_AEGIS = 47753, SPELL_PRIEST_DIVINE_TOUCH = 63544, + SPELL_PRIEST_ECHO_OF_LIGHT = 77489, SPELL_PRIEST_GLYPH_OF_CIRCLE_OF_HEALING = 55675, SPELL_PRIEST_GLYPH_OF_DISPEL_MAGIC = 55677, SPELL_PRIEST_GLYPH_OF_DISPEL_MAGIC_HEAL = 56131, @@ -1247,6 +1248,47 @@ class spell_pri_vampiric_touch : public SpellScriptLoader } }; +class spell_pri_echo_of_light : public SpellScriptLoader +{ + public: + spell_pri_echo_of_light() : SpellScriptLoader("spell_pri_echo_of_light") { } + + class spell_pri_echo_of_light_AuraScript : public AuraScript + { + PrepareAuraScript(spell_pri_echo_of_light_AuraScript); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_PRIEST_ECHO_OF_LIGHT }); + } + + void HandleEffectProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo) + { + PreventDefaultAction(); + if (Unit* caster = GetCaster()) + { + if (Unit* target = eventInfo.GetProcTarget()) + { + uint32 healAmount = CalculatePct(eventInfo.GetHealInfo()->GetHeal(), aurEff->GetAmount()); + uint8 tickNumber = sSpellMgr->GetSpellInfo(SPELL_PRIEST_ECHO_OF_LIGHT)->GetMaxTicks(); + if (healAmount && tickNumber) + caster->CastCustomSpell(SPELL_PRIEST_ECHO_OF_LIGHT, SPELLVALUE_BASE_POINT0, healAmount / tickNumber, target, true, NULL, aurEff); + } + } + } + + void Register() override + { + OnEffectProc += AuraEffectProcFn(spell_pri_echo_of_light_AuraScript::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY); + } + }; + + AuraScript* GetAuraScript() const override + { + return new spell_pri_echo_of_light_AuraScript(); + } +}; + void AddSC_priest_spell_scripts() { new spell_pri_body_and_soul(); @@ -1254,6 +1296,7 @@ void AddSC_priest_spell_scripts() new spell_pri_dispel_magic(); new spell_pri_divine_aegis(); new spell_pri_divine_hymn(); + new spell_pri_echo_of_light(); new spell_pri_glyph_of_prayer_of_healing(); new spell_pri_hymn_of_hope(); new spell_pri_improved_power_word_shield();