diff --git a/sql/updates/world/master/9999_99_99_99_world.sql b/sql/updates/world/master/9999_99_99_99_world.sql new file mode 100644 index 00000000000..a2759d4eab3 --- /dev/null +++ b/sql/updates/world/master/9999_99_99_99_world.sql @@ -0,0 +1 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_pal_divine_storm_dummy'; diff --git a/src/server/scripts/Spells/spell_paladin.cpp b/src/server/scripts/Spells/spell_paladin.cpp index a26ecf5120e..195ead6b4ab 100644 --- a/src/server/scripts/Spells/spell_paladin.cpp +++ b/src/server/scripts/Spells/spell_paladin.cpp @@ -45,9 +45,7 @@ enum PaladinSpells SPELL_PALADIN_DIVINE_STEED_DRAENEI = 221887, SPELL_PALADIN_DIVINE_STEED_BLOODELF = 221886, SPELL_PALADIN_DIVINE_STEED_TAUREN = 221885, - SPELL_PALADIN_DIVINE_STORM = 53385, - SPELL_PALADIN_DIVINE_STORM_DUMMY = 54171, - SPELL_PALADIN_DIVINE_STORM_HEAL = 54172, + SPELL_PALADIN_DIVINE_STORM_DAMAGE = 224239, SPELL_PALADIN_EYE_FOR_AN_EYE_RANK_1 = 9799, SPELL_PALADIN_EYE_FOR_AN_EYE_DAMAGE = 25997, SPELL_PALADIN_FORBEARANCE = 25771, @@ -82,6 +80,11 @@ enum PaladinSpellIcons PALADIN_ICON_ID_RETRIBUTION_AURA = 555 }; +enum PaladinSpellVisualKit +{ + PALADIN_VISUAL_KIT_DIVINE_STORM = 73892 +}; + /* // 31850 - Ardent Defender class spell_pal_ardent_defender : public SpellScriptLoader @@ -413,37 +416,33 @@ class spell_pal_divine_storm : public SpellScriptLoader { PrepareSpellScript(spell_pal_divine_storm_SpellScript); - public: - spell_pal_divine_storm_SpellScript() - { - healPct = 0; - } - - private: - uint32 healPct; - bool Validate(SpellInfo const* /*spellInfo*/) override { - if (!sSpellMgr->GetSpellInfo(SPELL_PALADIN_DIVINE_STORM_DUMMY)) + if (!sSpellMgr->GetSpellInfo(SPELL_PALADIN_DIVINE_STORM_DAMAGE)) return false; return true; } - bool Load() override - { - healPct = GetSpellInfo()->GetEffect(EFFECT_1)->CalcValue(GetCaster()); - return true; - } - - void TriggerHeal() + void HandleOnCast() { Unit* caster = GetCaster(); - caster->CastCustomSpell(SPELL_PALADIN_DIVINE_STORM_DUMMY, SPELLVALUE_BASE_POINT0, (GetHitDamage() * healPct) / 100, caster, true); + caster->SendPlaySpellVisualKit(PALADIN_VISUAL_KIT_DIVINE_STORM, 0); + } + + void HandleDummy(SpellEffIndex /* effIndex */) + { + Unit* caster = GetCaster(); + Unit* target = GetHitUnit(); + if (!target) + return; + + caster->CastSpell(target, SPELL_PALADIN_DIVINE_STORM_DAMAGE, true); } void Register() override { - AfterHit += SpellHitFn(spell_pal_divine_storm_SpellScript::TriggerHeal); + OnCast += SpellCastFn(spell_pal_divine_storm_SpellScript::HandleOnCast); + OnEffectHitTarget += SpellEffectFn(spell_pal_divine_storm_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; @@ -453,59 +452,6 @@ class spell_pal_divine_storm : public SpellScriptLoader } }; -// 54171 - Divine Storm (Dummy) -class spell_pal_divine_storm_dummy : public SpellScriptLoader -{ - public: - spell_pal_divine_storm_dummy() : SpellScriptLoader("spell_pal_divine_storm_dummy") { } - - class spell_pal_divine_storm_dummy_SpellScript : public SpellScript - { - PrepareSpellScript(spell_pal_divine_storm_dummy_SpellScript); - - public: - spell_pal_divine_storm_dummy_SpellScript() - { - _targetCount = 0; - } - - private: - bool Validate(SpellInfo const* /*spellInfo*/) override - { - if (!sSpellMgr->GetSpellInfo(SPELL_PALADIN_DIVINE_STORM_HEAL)) - return false; - return true; - } - - void CountTargets(std::list& targetList) - { - _targetCount = targetList.size(); - } - - void HandleDummy(SpellEffIndex /*effIndex*/) - { - if (!_targetCount || ! GetHitUnit()) - return; - - int32 heal = GetEffectValue() / _targetCount; - GetCaster()->CastCustomSpell(GetHitUnit(), SPELL_PALADIN_DIVINE_STORM_HEAL, &heal, NULL, NULL, true); - } - private: - uint32 _targetCount; - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_pal_divine_storm_dummy_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_pal_divine_storm_dummy_SpellScript::CountTargets, EFFECT_0, TARGET_UNIT_CASTER_AREA_RAID); - } - }; - - SpellScript* GetSpellScript() const override - { - return new spell_pal_divine_storm_dummy_SpellScript(); - } -}; - // 33695 - Exorcism and Holy Wrath Damage class spell_pal_exorcism_and_holy_wrath_damage : public SpellScriptLoader { @@ -1286,7 +1232,6 @@ void AddSC_paladin_spell_scripts() new spell_pal_blessing_of_faith(); new spell_pal_divine_steed(); new spell_pal_divine_storm(); - new spell_pal_divine_storm_dummy(); new spell_pal_exorcism_and_holy_wrath_damage(); new spell_pal_eye_for_an_eye(); new spell_pal_glyph_of_holy_light();