diff options
| -rw-r--r-- | sql/updates/world/master/9999_99_99_99_world.sql | 1 | ||||
| -rw-r--r-- | src/server/scripts/Spells/spell_paladin.cpp | 89 |
2 files changed, 18 insertions, 72 deletions
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,96 +416,39 @@ 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 Register() override + void HandleDummy(SpellEffIndex /* effIndex */) { - AfterHit += SpellHitFn(spell_pal_divine_storm_SpellScript::TriggerHeal); - } - }; - - SpellScript* GetSpellScript() const override - { - return new spell_pal_divine_storm_SpellScript(); - } -}; - -// 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<WorldObject*>& targetList) - { - _targetCount = targetList.size(); - } - - void HandleDummy(SpellEffIndex /*effIndex*/) - { - if (!_targetCount || ! GetHitUnit()) + Unit* caster = GetCaster(); + Unit* target = GetHitUnit(); + if (!target) return; - int32 heal = GetEffectValue() / _targetCount; - GetCaster()->CastCustomSpell(GetHitUnit(), SPELL_PALADIN_DIVINE_STORM_HEAL, &heal, NULL, NULL, true); + caster->CastSpell(target, SPELL_PALADIN_DIVINE_STORM_DAMAGE, 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); + OnCast += SpellCastFn(spell_pal_divine_storm_SpellScript::HandleOnCast); + OnEffectHitTarget += SpellEffectFn(spell_pal_divine_storm_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; SpellScript* GetSpellScript() const override { - return new spell_pal_divine_storm_dummy_SpellScript(); + return new spell_pal_divine_storm_SpellScript(); } }; @@ -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(); |
