mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Scripts/Spells: Changed palading spell scripts to use RegisterSpellScript and RegisterAuraScript (#26149)
This commit is contained in:
@@ -161,63 +161,52 @@ class spell_pal_ardent_defender : public SpellScriptLoader
|
||||
*/
|
||||
|
||||
// 37877 - Blessing of Faith
|
||||
class spell_pal_blessing_of_faith : public SpellScriptLoader
|
||||
class spell_pal_blessing_of_faith : public SpellScript
|
||||
{
|
||||
public:
|
||||
spell_pal_blessing_of_faith() : SpellScriptLoader("spell_pal_blessing_of_faith") { }
|
||||
PrepareSpellScript(spell_pal_blessing_of_faith);
|
||||
|
||||
class spell_pal_blessing_of_faith_SpellScript : public SpellScript
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo(
|
||||
{
|
||||
PrepareSpellScript(spell_pal_blessing_of_faith_SpellScript);
|
||||
SPELL_PALADIN_BLESSING_OF_LOWER_CITY_DRUID,
|
||||
SPELL_PALADIN_BLESSING_OF_LOWER_CITY_PALADIN,
|
||||
SPELL_PALADIN_BLESSING_OF_LOWER_CITY_PRIEST,
|
||||
SPELL_PALADIN_BLESSING_OF_LOWER_CITY_SHAMAN
|
||||
});
|
||||
}
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo(
|
||||
{
|
||||
SPELL_PALADIN_BLESSING_OF_LOWER_CITY_DRUID,
|
||||
SPELL_PALADIN_BLESSING_OF_LOWER_CITY_PALADIN,
|
||||
SPELL_PALADIN_BLESSING_OF_LOWER_CITY_PRIEST,
|
||||
SPELL_PALADIN_BLESSING_OF_LOWER_CITY_SHAMAN
|
||||
});
|
||||
}
|
||||
|
||||
void HandleDummy(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
if (Unit* unitTarget = GetHitUnit())
|
||||
{
|
||||
uint32 spell_id = 0;
|
||||
switch (unitTarget->getClass())
|
||||
{
|
||||
case CLASS_DRUID:
|
||||
spell_id = SPELL_PALADIN_BLESSING_OF_LOWER_CITY_DRUID;
|
||||
break;
|
||||
case CLASS_PALADIN:
|
||||
spell_id = SPELL_PALADIN_BLESSING_OF_LOWER_CITY_PALADIN;
|
||||
break;
|
||||
case CLASS_PRIEST:
|
||||
spell_id = SPELL_PALADIN_BLESSING_OF_LOWER_CITY_PRIEST;
|
||||
break;
|
||||
case CLASS_SHAMAN:
|
||||
spell_id = SPELL_PALADIN_BLESSING_OF_LOWER_CITY_SHAMAN;
|
||||
break;
|
||||
default:
|
||||
return; // ignore for non-healing classes
|
||||
}
|
||||
Unit* caster = GetCaster();
|
||||
caster->CastSpell(caster, spell_id, true);
|
||||
}
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_pal_blessing_of_faith_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const override
|
||||
void HandleDummy(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
if (Unit* unitTarget = GetHitUnit())
|
||||
{
|
||||
return new spell_pal_blessing_of_faith_SpellScript();
|
||||
uint32 spell_id = 0;
|
||||
switch (unitTarget->getClass())
|
||||
{
|
||||
case CLASS_DRUID:
|
||||
spell_id = SPELL_PALADIN_BLESSING_OF_LOWER_CITY_DRUID;
|
||||
break;
|
||||
case CLASS_PALADIN:
|
||||
spell_id = SPELL_PALADIN_BLESSING_OF_LOWER_CITY_PALADIN;
|
||||
break;
|
||||
case CLASS_PRIEST:
|
||||
spell_id = SPELL_PALADIN_BLESSING_OF_LOWER_CITY_PRIEST;
|
||||
break;
|
||||
case CLASS_SHAMAN:
|
||||
spell_id = SPELL_PALADIN_BLESSING_OF_LOWER_CITY_SHAMAN;
|
||||
break;
|
||||
default:
|
||||
return; // ignore for non-healing classes
|
||||
}
|
||||
Unit* caster = GetCaster();
|
||||
caster->CastSpell(caster, spell_id, true);
|
||||
}
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_pal_blessing_of_faith::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
// 1022 - Blessing of Protection
|
||||
@@ -330,107 +319,85 @@ class spell_pal_divine_shield : public SpellScript
|
||||
};
|
||||
|
||||
// 190784 - Divine Steed
|
||||
class spell_pal_divine_steed : public SpellScriptLoader
|
||||
class spell_pal_divine_steed : public SpellScript
|
||||
{
|
||||
public:
|
||||
spell_pal_divine_steed() : SpellScriptLoader("spell_pal_divine_steed") { }
|
||||
PrepareSpellScript(spell_pal_divine_steed);
|
||||
|
||||
class spell_pal_divine_steed_SpellScript : public SpellScript
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
PrepareSpellScript(spell_pal_divine_steed_SpellScript);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
return ValidateSpellInfo(
|
||||
{
|
||||
return ValidateSpellInfo(
|
||||
{
|
||||
SPELL_PALADIN_DIVINE_STEED_HUMAN,
|
||||
SPELL_PALADIN_DIVINE_STEED_DRAENEI,
|
||||
SPELL_PALADIN_DIVINE_STEED_BLOODELF,
|
||||
SPELL_PALADIN_DIVINE_STEED_TAUREN
|
||||
});
|
||||
}
|
||||
SPELL_PALADIN_DIVINE_STEED_HUMAN,
|
||||
SPELL_PALADIN_DIVINE_STEED_DRAENEI,
|
||||
SPELL_PALADIN_DIVINE_STEED_BLOODELF,
|
||||
SPELL_PALADIN_DIVINE_STEED_TAUREN
|
||||
});
|
||||
}
|
||||
|
||||
void HandleOnCast()
|
||||
{
|
||||
Unit* caster = GetCaster();
|
||||
|
||||
uint32 spellId = SPELL_PALADIN_DIVINE_STEED_HUMAN;
|
||||
switch (caster->getRace())
|
||||
{
|
||||
case RACE_HUMAN:
|
||||
case RACE_DWARF:
|
||||
spellId = SPELL_PALADIN_DIVINE_STEED_HUMAN;
|
||||
break;
|
||||
case RACE_DRAENEI:
|
||||
spellId = SPELL_PALADIN_DIVINE_STEED_DRAENEI;
|
||||
break;
|
||||
case RACE_BLOODELF:
|
||||
spellId = SPELL_PALADIN_DIVINE_STEED_BLOODELF;
|
||||
break;
|
||||
case RACE_TAUREN:
|
||||
spellId = SPELL_PALADIN_DIVINE_STEED_TAUREN;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
caster->CastSpell(caster, spellId, true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnCast += SpellCastFn(spell_pal_divine_steed_SpellScript::HandleOnCast);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const override
|
||||
void HandleOnCast()
|
||||
{
|
||||
return new spell_pal_divine_steed_SpellScript();
|
||||
Unit* caster = GetCaster();
|
||||
|
||||
uint32 spellId = SPELL_PALADIN_DIVINE_STEED_HUMAN;
|
||||
switch (caster->getRace())
|
||||
{
|
||||
case RACE_HUMAN:
|
||||
case RACE_DWARF:
|
||||
spellId = SPELL_PALADIN_DIVINE_STEED_HUMAN;
|
||||
break;
|
||||
case RACE_DRAENEI:
|
||||
spellId = SPELL_PALADIN_DIVINE_STEED_DRAENEI;
|
||||
break;
|
||||
case RACE_BLOODELF:
|
||||
spellId = SPELL_PALADIN_DIVINE_STEED_BLOODELF;
|
||||
break;
|
||||
case RACE_TAUREN:
|
||||
spellId = SPELL_PALADIN_DIVINE_STEED_TAUREN;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
caster->CastSpell(caster, spellId, true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnCast += SpellCastFn(spell_pal_divine_steed::HandleOnCast);
|
||||
}
|
||||
};
|
||||
|
||||
// 53385 - Divine Storm
|
||||
class spell_pal_divine_storm : public SpellScriptLoader
|
||||
class spell_pal_divine_storm : public SpellScript
|
||||
{
|
||||
public:
|
||||
spell_pal_divine_storm() : SpellScriptLoader("spell_pal_divine_storm") { }
|
||||
PrepareSpellScript(spell_pal_divine_storm);
|
||||
|
||||
class spell_pal_divine_storm_SpellScript : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_pal_divine_storm_SpellScript);
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_PALADIN_DIVINE_STORM_DAMAGE });
|
||||
}
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_PALADIN_DIVINE_STORM_DAMAGE });
|
||||
}
|
||||
void HandleOnCast()
|
||||
{
|
||||
Unit* caster = GetCaster();
|
||||
caster->SendPlaySpellVisualKit(PALADIN_VISUAL_KIT_DIVINE_STORM, 0, 0);
|
||||
}
|
||||
|
||||
void HandleOnCast()
|
||||
{
|
||||
Unit* caster = GetCaster();
|
||||
caster->SendPlaySpellVisualKit(PALADIN_VISUAL_KIT_DIVINE_STORM, 0, 0);
|
||||
}
|
||||
void HandleDummy(SpellEffIndex /* effIndex */)
|
||||
{
|
||||
Unit* caster = GetCaster();
|
||||
Unit* target = GetHitUnit();
|
||||
if (!target)
|
||||
return;
|
||||
|
||||
void HandleDummy(SpellEffIndex /* effIndex */)
|
||||
{
|
||||
Unit* caster = GetCaster();
|
||||
Unit* target = GetHitUnit();
|
||||
if (!target)
|
||||
return;
|
||||
caster->CastSpell(target, SPELL_PALADIN_DIVINE_STORM_DAMAGE, true);
|
||||
}
|
||||
|
||||
caster->CastSpell(target, SPELL_PALADIN_DIVINE_STORM_DAMAGE, true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
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_SpellScript();
|
||||
}
|
||||
void Register() override
|
||||
{
|
||||
OnCast += SpellCastFn(spell_pal_divine_storm::HandleOnCast);
|
||||
OnEffectHitTarget += SpellEffectFn(spell_pal_divine_storm::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
// -75806 - Grand Crusader
|
||||
@@ -472,36 +439,25 @@ class spell_pal_grand_crusader : public SpellScriptLoader
|
||||
};
|
||||
|
||||
// 54968 - Glyph of Holy Light
|
||||
class spell_pal_glyph_of_holy_light : public SpellScriptLoader
|
||||
class spell_pal_glyph_of_holy_light : public SpellScript
|
||||
{
|
||||
public:
|
||||
spell_pal_glyph_of_holy_light() : SpellScriptLoader("spell_pal_glyph_of_holy_light") { }
|
||||
PrepareSpellScript(spell_pal_glyph_of_holy_light);
|
||||
|
||||
class spell_pal_glyph_of_holy_light_SpellScript : public SpellScript
|
||||
void FilterTargets(std::list<WorldObject*>& targets)
|
||||
{
|
||||
uint32 const maxTargets = GetSpellInfo()->MaxAffectedTargets;
|
||||
|
||||
if (targets.size() > maxTargets)
|
||||
{
|
||||
PrepareSpellScript(spell_pal_glyph_of_holy_light_SpellScript);
|
||||
|
||||
void FilterTargets(std::list<WorldObject*>& targets)
|
||||
{
|
||||
uint32 const maxTargets = GetSpellInfo()->MaxAffectedTargets;
|
||||
|
||||
if (targets.size() > maxTargets)
|
||||
{
|
||||
targets.sort(Trinity::HealthPctOrderPred());
|
||||
targets.resize(maxTargets);
|
||||
}
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_pal_glyph_of_holy_light_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_DEST_AREA_ALLY);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const override
|
||||
{
|
||||
return new spell_pal_glyph_of_holy_light_SpellScript();
|
||||
targets.sort(Trinity::HealthPctOrderPred());
|
||||
targets.resize(maxTargets);
|
||||
}
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_pal_glyph_of_holy_light::FilterTargets, EFFECT_0, TARGET_UNIT_DEST_AREA_ALLY);
|
||||
}
|
||||
};
|
||||
|
||||
// 6940 - Hand of Sacrifice
|
||||
@@ -556,168 +512,135 @@ class spell_pal_hand_of_sacrifice : public SpellScriptLoader
|
||||
};
|
||||
|
||||
// 20473 - Holy Shock
|
||||
class spell_pal_holy_shock : public SpellScriptLoader
|
||||
class spell_pal_holy_shock : public SpellScript
|
||||
{
|
||||
public:
|
||||
spell_pal_holy_shock() : SpellScriptLoader("spell_pal_holy_shock") { }
|
||||
PrepareSpellScript(spell_pal_holy_shock);
|
||||
|
||||
class spell_pal_holy_shock_SpellScript : public SpellScript
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
SpellInfo const* firstRankSpellInfo = sSpellMgr->GetSpellInfo(SPELL_PALADIN_HOLY_SHOCK_R1, DIFFICULTY_NONE);
|
||||
if (!firstRankSpellInfo)
|
||||
return false;
|
||||
|
||||
// can't use other spell than holy shock due to spell_ranks dependency
|
||||
if (!spellInfo->IsRankOf(firstRankSpellInfo))
|
||||
return false;
|
||||
|
||||
uint8 rank = spellInfo->GetRank();
|
||||
if (!sSpellMgr->GetSpellWithRank(SPELL_PALADIN_HOLY_SHOCK_R1_DAMAGE, rank, true) || !sSpellMgr->GetSpellWithRank(SPELL_PALADIN_HOLY_SHOCK_R1_HEALING, rank, true))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void HandleDummy(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
Unit* caster = GetCaster();
|
||||
if (Unit* unitTarget = GetHitUnit())
|
||||
{
|
||||
PrepareSpellScript(spell_pal_holy_shock_SpellScript);
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
SpellInfo const* firstRankSpellInfo = sSpellMgr->GetSpellInfo(SPELL_PALADIN_HOLY_SHOCK_R1, DIFFICULTY_NONE);
|
||||
if (!firstRankSpellInfo)
|
||||
return false;
|
||||
|
||||
// can't use other spell than holy shock due to spell_ranks dependency
|
||||
if (!spellInfo->IsRankOf(firstRankSpellInfo))
|
||||
return false;
|
||||
|
||||
uint8 rank = spellInfo->GetRank();
|
||||
if (!sSpellMgr->GetSpellWithRank(SPELL_PALADIN_HOLY_SHOCK_R1_DAMAGE, rank, true) || !sSpellMgr->GetSpellWithRank(SPELL_PALADIN_HOLY_SHOCK_R1_HEALING, rank, true))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void HandleDummy(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
Unit* caster = GetCaster();
|
||||
if (Unit* unitTarget = GetHitUnit())
|
||||
{
|
||||
uint8 rank = GetSpellInfo()->GetRank();
|
||||
if (caster->IsFriendlyTo(unitTarget))
|
||||
caster->CastSpell(unitTarget, sSpellMgr->GetSpellWithRank(SPELL_PALADIN_HOLY_SHOCK_R1_HEALING, rank), true);
|
||||
else
|
||||
caster->CastSpell(unitTarget, sSpellMgr->GetSpellWithRank(SPELL_PALADIN_HOLY_SHOCK_R1_DAMAGE, rank), true);
|
||||
}
|
||||
}
|
||||
|
||||
SpellCastResult CheckCast()
|
||||
{
|
||||
Unit* caster = GetCaster();
|
||||
if (Unit* target = GetExplTargetUnit())
|
||||
{
|
||||
if (!caster->IsFriendlyTo(target))
|
||||
{
|
||||
if (!caster->IsValidAttackTarget(target))
|
||||
return SPELL_FAILED_BAD_TARGETS;
|
||||
|
||||
if (!caster->isInFront(target))
|
||||
return SPELL_FAILED_UNIT_NOT_INFRONT;
|
||||
}
|
||||
}
|
||||
else
|
||||
return SPELL_FAILED_BAD_TARGETS;
|
||||
return SPELL_CAST_OK;
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnCheckCast += SpellCheckCastFn(spell_pal_holy_shock_SpellScript::CheckCast);
|
||||
OnEffectHitTarget += SpellEffectFn(spell_pal_holy_shock_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const override
|
||||
{
|
||||
return new spell_pal_holy_shock_SpellScript();
|
||||
uint8 rank = GetSpellInfo()->GetRank();
|
||||
if (caster->IsFriendlyTo(unitTarget))
|
||||
caster->CastSpell(unitTarget, sSpellMgr->GetSpellWithRank(SPELL_PALADIN_HOLY_SHOCK_R1_HEALING, rank), true);
|
||||
else
|
||||
caster->CastSpell(unitTarget, sSpellMgr->GetSpellWithRank(SPELL_PALADIN_HOLY_SHOCK_R1_DAMAGE, rank), true);
|
||||
}
|
||||
}
|
||||
|
||||
SpellCastResult CheckCast()
|
||||
{
|
||||
Unit* caster = GetCaster();
|
||||
if (Unit* target = GetExplTargetUnit())
|
||||
{
|
||||
if (!caster->IsFriendlyTo(target))
|
||||
{
|
||||
if (!caster->IsValidAttackTarget(target))
|
||||
return SPELL_FAILED_BAD_TARGETS;
|
||||
|
||||
if (!caster->isInFront(target))
|
||||
return SPELL_FAILED_UNIT_NOT_INFRONT;
|
||||
}
|
||||
}
|
||||
else
|
||||
return SPELL_FAILED_BAD_TARGETS;
|
||||
return SPELL_CAST_OK;
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnCheckCast += SpellCheckCastFn(spell_pal_holy_shock::CheckCast);
|
||||
OnEffectHitTarget += SpellEffectFn(spell_pal_holy_shock::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
// 37705 - Healing Discount
|
||||
class spell_pal_item_healing_discount : public SpellScriptLoader
|
||||
class spell_pal_item_healing_discount : public AuraScript
|
||||
{
|
||||
public:
|
||||
spell_pal_item_healing_discount() : SpellScriptLoader("spell_pal_item_healing_discount") { }
|
||||
PrepareAuraScript(spell_pal_item_healing_discount);
|
||||
|
||||
class spell_pal_item_healing_discount_AuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_pal_item_healing_discount_AuraScript);
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_PALADIN_ITEM_HEALING_TRANCE });
|
||||
}
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_PALADIN_ITEM_HEALING_TRANCE });
|
||||
}
|
||||
void HandleProc(AuraEffect* aurEff, ProcEventInfo& /*eventInfo*/)
|
||||
{
|
||||
PreventDefaultAction();
|
||||
GetTarget()->CastSpell(GetTarget(), SPELL_PALADIN_ITEM_HEALING_TRANCE, true, nullptr, aurEff);
|
||||
}
|
||||
|
||||
void HandleProc(AuraEffect* aurEff, ProcEventInfo& /*eventInfo*/)
|
||||
{
|
||||
PreventDefaultAction();
|
||||
GetTarget()->CastSpell(GetTarget(), SPELL_PALADIN_ITEM_HEALING_TRANCE, true, nullptr, aurEff);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectProc += AuraEffectProcFn(spell_pal_item_healing_discount_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const override
|
||||
{
|
||||
return new spell_pal_item_healing_discount_AuraScript();
|
||||
}
|
||||
void Register() override
|
||||
{
|
||||
OnEffectProc += AuraEffectProcFn(spell_pal_item_healing_discount::HandleProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL);
|
||||
}
|
||||
};
|
||||
|
||||
// 40470 - Paladin Tier 6 Trinket
|
||||
class spell_pal_item_t6_trinket : public SpellScriptLoader
|
||||
class spell_pal_item_t6_trinket : public AuraScript
|
||||
{
|
||||
public:
|
||||
spell_pal_item_t6_trinket() : SpellScriptLoader("spell_pal_item_t6_trinket") { }
|
||||
PrepareAuraScript(spell_pal_item_t6_trinket);
|
||||
|
||||
class spell_pal_item_t6_trinket_AuraScript : public AuraScript
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo(
|
||||
{
|
||||
PrepareAuraScript(spell_pal_item_t6_trinket_AuraScript);
|
||||
SPELL_PALADIN_ENDURING_LIGHT,
|
||||
SPELL_PALADIN_ENDURING_JUDGEMENT
|
||||
});
|
||||
}
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo(
|
||||
{
|
||||
SPELL_PALADIN_ENDURING_LIGHT,
|
||||
SPELL_PALADIN_ENDURING_JUDGEMENT
|
||||
});
|
||||
}
|
||||
void HandleProc(AuraEffect* aurEff, ProcEventInfo& eventInfo)
|
||||
{
|
||||
PreventDefaultAction();
|
||||
SpellInfo const* spellInfo = eventInfo.GetSpellInfo();
|
||||
if (!spellInfo)
|
||||
return;
|
||||
|
||||
void HandleProc(AuraEffect* aurEff, ProcEventInfo& eventInfo)
|
||||
{
|
||||
PreventDefaultAction();
|
||||
SpellInfo const* spellInfo = eventInfo.GetSpellInfo();
|
||||
if (!spellInfo)
|
||||
return;
|
||||
uint32 spellId;
|
||||
int32 chance;
|
||||
|
||||
uint32 spellId;
|
||||
int32 chance;
|
||||
|
||||
// Holy Light & Flash of Light
|
||||
if (spellInfo->SpellFamilyFlags[0] & 0xC0000000)
|
||||
{
|
||||
spellId = SPELL_PALADIN_ENDURING_LIGHT;
|
||||
chance = 15;
|
||||
}
|
||||
// Judgements
|
||||
else if (spellInfo->SpellFamilyFlags[0] & 0x00800000)
|
||||
{
|
||||
spellId = SPELL_PALADIN_ENDURING_JUDGEMENT;
|
||||
chance = 50;
|
||||
}
|
||||
else
|
||||
return;
|
||||
|
||||
if (roll_chance_i(chance))
|
||||
eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), spellId, true, nullptr, aurEff);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectProc += AuraEffectProcFn(spell_pal_item_t6_trinket_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const override
|
||||
// Holy Light & Flash of Light
|
||||
if (spellInfo->SpellFamilyFlags[0] & 0xC0000000)
|
||||
{
|
||||
return new spell_pal_item_t6_trinket_AuraScript();
|
||||
spellId = SPELL_PALADIN_ENDURING_LIGHT;
|
||||
chance = 15;
|
||||
}
|
||||
// Judgements
|
||||
else if (spellInfo->SpellFamilyFlags[0] & 0x00800000)
|
||||
{
|
||||
spellId = SPELL_PALADIN_ENDURING_JUDGEMENT;
|
||||
chance = 50;
|
||||
}
|
||||
else
|
||||
return;
|
||||
|
||||
if (roll_chance_i(chance))
|
||||
eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), spellId, true, nullptr, aurEff);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectProc += AuraEffectProcFn(spell_pal_item_t6_trinket::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
// 20271 - Judgement
|
||||
@@ -873,67 +796,56 @@ class spell_pal_light_s_beacon : public SpellScriptLoader
|
||||
|
||||
// 85256 - Templar's Verdict
|
||||
/// Updated 4.3.4
|
||||
class spell_pal_templar_s_verdict : public SpellScriptLoader
|
||||
class spell_pal_templar_s_verdict : public SpellScript
|
||||
{
|
||||
public:
|
||||
spell_pal_templar_s_verdict() : SpellScriptLoader("spell_pal_templar_s_verdict") { }
|
||||
PrepareSpellScript(spell_pal_templar_s_verdict);
|
||||
|
||||
class spell_pal_templar_s_verdict_SpellScript : public SpellScript
|
||||
bool Validate (SpellInfo const* /*spellEntry*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_PALADIN_DIVINE_PURPOSE_PROC });
|
||||
}
|
||||
|
||||
bool Load() override
|
||||
{
|
||||
if (GetCaster()->GetTypeId() != TYPEID_PLAYER)
|
||||
return false;
|
||||
|
||||
if (GetCaster()->ToPlayer()->getClass() != CLASS_PALADIN)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void ChangeDamage(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
Unit* caster = GetCaster();
|
||||
int32 damage = GetHitDamage();
|
||||
|
||||
if (caster->HasAura(SPELL_PALADIN_DIVINE_PURPOSE_PROC))
|
||||
damage *= 7.5; // 7.5*30% = 225%
|
||||
else
|
||||
{
|
||||
PrepareSpellScript(spell_pal_templar_s_verdict_SpellScript);
|
||||
|
||||
bool Validate (SpellInfo const* /*spellEntry*/) override
|
||||
switch (caster->GetPower(POWER_HOLY_POWER))
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_PALADIN_DIVINE_PURPOSE_PROC });
|
||||
}
|
||||
|
||||
bool Load() override
|
||||
{
|
||||
if (GetCaster()->GetTypeId() != TYPEID_PLAYER)
|
||||
return false;
|
||||
|
||||
if (GetCaster()->ToPlayer()->getClass() != CLASS_PALADIN)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void ChangeDamage(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
Unit* caster = GetCaster();
|
||||
int32 damage = GetHitDamage();
|
||||
|
||||
if (caster->HasAura(SPELL_PALADIN_DIVINE_PURPOSE_PROC))
|
||||
case 0: // 1 Holy Power
|
||||
// same damage
|
||||
break;
|
||||
case 1: // 2 Holy Power
|
||||
damage *= 3; // 3*30 = 90%
|
||||
break;
|
||||
case 2: // 3 Holy Power
|
||||
damage *= 7.5; // 7.5*30% = 225%
|
||||
else
|
||||
{
|
||||
switch (caster->GetPower(POWER_HOLY_POWER))
|
||||
{
|
||||
case 0: // 1 Holy Power
|
||||
// same damage
|
||||
break;
|
||||
case 1: // 2 Holy Power
|
||||
damage *= 3; // 3*30 = 90%
|
||||
break;
|
||||
case 2: // 3 Holy Power
|
||||
damage *= 7.5; // 7.5*30% = 225%
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
SetHitDamage(damage);
|
||||
break;
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_pal_templar_s_verdict_SpellScript::ChangeDamage, EFFECT_0, SPELL_EFFECT_WEAPON_PERCENT_DAMAGE);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const override
|
||||
{
|
||||
return new spell_pal_templar_s_verdict_SpellScript();
|
||||
}
|
||||
|
||||
SetHitDamage(damage);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_pal_templar_s_verdict::ChangeDamage, EFFECT_0, SPELL_EFFECT_WEAPON_PERCENT_DAMAGE);
|
||||
}
|
||||
};
|
||||
|
||||
// 28789 - Holy Power
|
||||
@@ -1053,22 +965,22 @@ class spell_pal_t8_2p_bonus : public SpellScriptLoader
|
||||
void AddSC_paladin_spell_scripts()
|
||||
{
|
||||
//new spell_pal_ardent_defender();
|
||||
new spell_pal_blessing_of_faith();
|
||||
RegisterSpellScript(spell_pal_blessing_of_faith);
|
||||
RegisterSpellScript(spell_pal_blessing_of_protection);
|
||||
RegisterSpellScript(spell_pal_blinding_light);
|
||||
RegisterSpellScript(spell_pal_divine_shield);
|
||||
new spell_pal_divine_steed();
|
||||
new spell_pal_divine_storm();
|
||||
new spell_pal_glyph_of_holy_light();
|
||||
RegisterSpellScript(spell_pal_divine_steed);
|
||||
RegisterSpellScript(spell_pal_divine_storm);
|
||||
RegisterSpellScript(spell_pal_glyph_of_holy_light);
|
||||
new spell_pal_grand_crusader();
|
||||
new spell_pal_hand_of_sacrifice();
|
||||
new spell_pal_holy_shock();
|
||||
new spell_pal_item_healing_discount();
|
||||
new spell_pal_item_t6_trinket();
|
||||
RegisterSpellScript(spell_pal_holy_shock);
|
||||
RegisterAuraScript(spell_pal_item_healing_discount);
|
||||
RegisterAuraScript(spell_pal_item_t6_trinket);
|
||||
new spell_pal_judgement();
|
||||
RegisterSpellScript(spell_pal_lay_on_hands);
|
||||
new spell_pal_light_s_beacon();
|
||||
new spell_pal_templar_s_verdict();
|
||||
RegisterSpellScript(spell_pal_templar_s_verdict);
|
||||
new spell_pal_t3_6p_bonus();
|
||||
new spell_pal_t8_2p_bonus();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user