mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-22 18:15:31 +01:00
Core/Spells: Fixed Divine Storm (#19031)
This commit is contained in:
@@ -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<WorldObject*>& 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();
|
||||
|
||||
Reference in New Issue
Block a user