aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoctorKraft <david.serdobbel.bizness@gmail.com>2017-02-03 20:49:30 +0100
committerShauren <shauren.trinity@gmail.com>2017-02-03 20:49:30 +0100
commit4075bd16e4ae0dcd98c1e0a786a66e5ae321c35c (patch)
tree08440a0d5f2a3976855375c3792c8dea4da86589
parentd9eb79c3c509fa07a2c4a59d3aa324c4a1de7d8d (diff)
Core/Spells: Fixed Divine Storm (#19031)
-rw-r--r--sql/updates/world/master/9999_99_99_99_world.sql1
-rw-r--r--src/server/scripts/Spells/spell_paladin.cpp89
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();