Scripts/Spells: Added spell effect validation helper
This commit is contained in:
@@ -52,6 +52,24 @@ bool _SpellScript::_ValidateSpellInfo(uint32 spellId)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool _SpellScript::_ValidateSpellEffect(uint32 spellId, SpellEffIndex effectIndex)
|
||||
{
|
||||
SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellId, DIFFICULTY_NONE);
|
||||
if (!spellInfo)
|
||||
{
|
||||
TC_LOG_ERROR("scripts.spells", "_SpellScript::_ValidateSpellEffect: Spell {} does not exist.", spellId);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (spellInfo->GetEffects().size() <= effectIndex)
|
||||
{
|
||||
TC_LOG_ERROR("scripts.spells", "_SpellScript::_ValidateSpellEffect: Spell {} does not have EFFECT_{}.", spellId, uint32(effectIndex));
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void _SpellScript::_Register()
|
||||
{
|
||||
m_currentScriptState = SPELL_SCRIPT_STATE_REGISTRATION;
|
||||
|
||||
@@ -178,6 +178,17 @@ class TC_GAME_API _SpellScript
|
||||
return _ValidateSpellInfo(std::cbegin(spellIds), std::cend(spellIds));
|
||||
}
|
||||
|
||||
static bool ValidateSpellEffect(std::initializer_list<std::pair<uint32, SpellEffIndex>> effects)
|
||||
{
|
||||
return _ValidateSpellEffects(effects.begin(), effects.end());
|
||||
}
|
||||
|
||||
template <class T>
|
||||
static bool ValidateSpellEffect(T const& spellEffects)
|
||||
{
|
||||
return _ValidateSpellEffects(std::cbegin(spellEffects), std::cend(spellEffects));
|
||||
}
|
||||
|
||||
private:
|
||||
template<typename Iterator>
|
||||
static bool _ValidateSpellInfo(Iterator begin, Iterator end)
|
||||
@@ -193,7 +204,22 @@ class TC_GAME_API _SpellScript
|
||||
return allValid;
|
||||
}
|
||||
|
||||
template<typename Iterator>
|
||||
static bool _ValidateSpellEffects(Iterator begin, Iterator end)
|
||||
{
|
||||
bool allValid = true;
|
||||
while (begin != end)
|
||||
{
|
||||
if (!_ValidateSpellEffect(begin->first, begin->second))
|
||||
allValid = false;
|
||||
|
||||
++begin;
|
||||
}
|
||||
return allValid;
|
||||
}
|
||||
|
||||
static bool _ValidateSpellInfo(uint32 spellId);
|
||||
static bool _ValidateSpellEffect(uint32 spellId, SpellEffIndex effectIndex);
|
||||
};
|
||||
|
||||
// SpellScript interface - enum used for runtime checks of script function calls
|
||||
|
||||
@@ -416,10 +416,8 @@ class spell_baleroc_decimating_strike : public SpellScript
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
if (spellInfo->GetEffects().size() <= EFFECT_2)
|
||||
return false;
|
||||
SpellEffectInfo const& spellEffectInfo = spellInfo->GetEffect(EFFECT_2);
|
||||
return ValidateSpellInfo({ uint32(spellEffectInfo.CalcValue()) });
|
||||
return ValidateSpellEffect({ { spellInfo->Id, EFFECT_2 } })
|
||||
&& ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_2).CalcValue()) });
|
||||
}
|
||||
|
||||
void ChangeDamage()
|
||||
|
||||
@@ -34,7 +34,8 @@ class spell_ooze_zap : public SpellScript
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return spellInfo->GetEffects().size() > EFFECT_1 && ValidateSpellInfo({ SPELL_OOZE_ZAP });
|
||||
return ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } })
|
||||
&& ValidateSpellInfo({ SPELL_OOZE_ZAP });
|
||||
}
|
||||
|
||||
SpellCastResult CheckRequirement()
|
||||
|
||||
@@ -1026,7 +1026,7 @@ class spell_putricide_ooze_tank_protection : public AuraScript
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return spellInfo->GetEffects().size() > EFFECT_1
|
||||
return ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } })
|
||||
&& ValidateSpellInfo({ spellInfo->GetEffect(EFFECT_0).TriggerSpell, spellInfo->GetEffect(EFFECT_1).TriggerSpell });
|
||||
}
|
||||
|
||||
|
||||
@@ -492,7 +492,8 @@ class spell_rotface_mutated_infection_aura : public AuraScript
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return spellInfo->GetEffects().size() > EFFECT_2 && ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_2).CalcValue()) });
|
||||
return ValidateSpellEffect({ { spellInfo->Id, EFFECT_2 } })
|
||||
&& ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_2).CalcValue()) });
|
||||
}
|
||||
|
||||
void HandleEffectRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
|
||||
|
||||
@@ -1438,7 +1438,7 @@ class spell_frostwarden_handler_focus_fire_aura : public AuraScript
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return spellInfo->GetEffects().size() > EFFECT_1;
|
||||
return ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } });
|
||||
}
|
||||
|
||||
void PeriodicTick(AuraEffect const* /*aurEff*/)
|
||||
|
||||
@@ -455,7 +455,7 @@ class spell_ulduar_cancel_stone_grip : public SpellScriptLoader
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return spellInfo->GetEffects().size() > EFFECT_1;
|
||||
return ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } });
|
||||
}
|
||||
|
||||
void HandleScript(SpellEffIndex /*effIndex*/)
|
||||
|
||||
@@ -248,7 +248,7 @@ class spell_mother_shahraz_saber_lash : public AuraScript
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return spellInfo->GetEffects().size() > EFFECT_1
|
||||
return ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } })
|
||||
&& ValidateSpellInfo({ spellInfo->GetEffect(EFFECT_1).TriggerSpell });
|
||||
}
|
||||
|
||||
|
||||
@@ -483,7 +483,7 @@ class spell_astromancer_wrath_of_the_astromancer : public AuraScript
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_WRATH_OF_THE_ASTROMANCER_DOT })
|
||||
&& spellInfo->GetEffects().size() > EFFECT_1;
|
||||
&& ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } });
|
||||
}
|
||||
|
||||
void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
|
||||
@@ -31,7 +31,7 @@ class spell_azerite_gen_aura_calc_from_2nd_effect_triggered_spell : public AuraS
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return spellInfo->GetEffects().size() > EFFECT_1 && ValidateSpellInfo({ spellInfo->GetEffect(EFFECT_1).TriggerSpell });
|
||||
return ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } }) && ValidateSpellInfo({ spellInfo->GetEffect(EFFECT_1).TriggerSpell });
|
||||
}
|
||||
|
||||
void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& canBeRecalculated)
|
||||
@@ -459,8 +459,7 @@ class spell_item_echoing_blades_damage : public SpellScript
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_ECHOING_BLADES_TRAIT })
|
||||
&& sSpellMgr->AssertSpellInfo(SPELL_ECHOING_BLADES_TRAIT, DIFFICULTY_NONE)->GetEffects().size() > EFFECT_2;
|
||||
return ValidateSpellEffect({ { SPELL_ECHOING_BLADES_TRAIT, EFFECT_2 } });
|
||||
}
|
||||
|
||||
void CalculateDamage(SpellEffIndex /*effIndex*/)
|
||||
|
||||
@@ -128,7 +128,8 @@ public:
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_DK_RUNIC_POWER_ENERGIZE, SPELL_DK_VOLATILE_SHIELDING }) && spellInfo->GetEffects().size() > EFFECT_1;
|
||||
return ValidateSpellInfo({ SPELL_DK_RUNIC_POWER_ENERGIZE, SPELL_DK_VOLATILE_SHIELDING })
|
||||
&& ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } });
|
||||
}
|
||||
|
||||
bool Load() override
|
||||
@@ -470,7 +471,7 @@ class spell_dk_death_strike : public SpellScript
|
||||
SPELL_DK_FROST,
|
||||
SPELL_DK_DEATH_STRIKE_OFFHAND
|
||||
})
|
||||
&& spellInfo->GetEffects().size() > EFFECT_2;
|
||||
&& ValidateSpellEffect({ { spellInfo->Id, EFFECT_2 } });
|
||||
}
|
||||
|
||||
void HandleDummy(SpellEffIndex /*effIndex*/)
|
||||
@@ -578,7 +579,7 @@ class spell_dk_ghoul_explode : public SpellScript
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_DK_CORPSE_EXPLOSION_TRIGGERED }) && spellInfo->GetEffects().size() > EFFECT_2;
|
||||
return ValidateSpellInfo({ SPELL_DK_CORPSE_EXPLOSION_TRIGGERED }) && ValidateSpellEffect({ { spellInfo->Id, EFFECT_2 } });
|
||||
}
|
||||
|
||||
void HandleDamage(SpellEffIndex /*effIndex*/)
|
||||
@@ -716,7 +717,7 @@ class spell_dk_obliteration : public AuraScript
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_DK_OBLITERATION, SPELL_DK_OBLITERATION_RUNE_ENERGIZE, SPELL_DK_KILLING_MACHINE_PROC })
|
||||
&& sSpellMgr->AssertSpellInfo(SPELL_DK_OBLITERATION, DIFFICULTY_NONE)->GetEffects().size() > EFFECT_1;
|
||||
&& ValidateSpellEffect({ { SPELL_DK_OBLITERATION, EFFECT_1 } });
|
||||
}
|
||||
|
||||
void HandleProc(AuraEffect* aurEff, ProcEventInfo& /*eventInfo*/)
|
||||
@@ -857,7 +858,7 @@ class spell_dk_rime : public AuraScript
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return spellInfo->GetEffects().size() > EFFECT_1 && ValidateSpellInfo({ SPELL_DK_FROST_SCYTHE });
|
||||
return ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } }) && ValidateSpellInfo({ SPELL_DK_FROST_SCYTHE });
|
||||
}
|
||||
|
||||
bool CheckProc(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo)
|
||||
|
||||
@@ -481,8 +481,7 @@ class spell_dru_ferocious_bite : public SpellScript
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_DRUID_INCARNATION_KING_OF_THE_JUNGLE })
|
||||
&& sSpellMgr->AssertSpellInfo(SPELL_DRUID_INCARNATION_KING_OF_THE_JUNGLE, DIFFICULTY_NONE)->GetEffects().size() > EFFECT_1;
|
||||
return ValidateSpellEffect({ { SPELL_DRUID_INCARNATION_KING_OF_THE_JUNGLE, EFFECT_1 } });
|
||||
}
|
||||
|
||||
void HandleHitTargetBurn(SpellEffIndex /*effIndex*/)
|
||||
@@ -1543,7 +1542,7 @@ class spell_dru_wild_growth : public SpellScript
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
if (spellInfo->GetEffects().size() <= EFFECT_2 || spellInfo->GetEffect(EFFECT_2).IsEffect() || spellInfo->GetEffect(EFFECT_2).CalcValue() <= 0)
|
||||
if (!ValidateSpellEffect({ { spellInfo->Id, EFFECT_2 } }) || spellInfo->GetEffect(EFFECT_2).IsEffect() || spellInfo->GetEffect(EFFECT_2).CalcValue() <= 0)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -774,7 +774,8 @@ class spell_gen_burning_depths_necrolyte_image : public AuraScript
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return spellInfo->GetEffects().size() > EFFECT_2 && ValidateSpellInfo({ static_cast<uint32>(spellInfo->GetEffect(EFFECT_2).CalcValue()) });
|
||||
return ValidateSpellEffect({ { spellInfo->Id, EFFECT_2 } })
|
||||
&& ValidateSpellInfo({ static_cast<uint32>(spellInfo->GetEffect(EFFECT_2).CalcValue()) });
|
||||
}
|
||||
|
||||
void HandleApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
@@ -2019,7 +2020,7 @@ class spell_gen_gift_of_naaru : public AuraScript
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return spellInfo->GetEffects().size() > EFFECT_1;
|
||||
return ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } });
|
||||
}
|
||||
|
||||
void CalculateAmount(AuraEffect const* aurEff, int32& amount, bool& /*canBeRecalculated*/)
|
||||
@@ -2637,7 +2638,7 @@ class spell_gen_oracle_wolvar_reputation : public SpellScript
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return spellInfo->GetEffects().size() > EFFECT_1;
|
||||
return ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } });
|
||||
}
|
||||
|
||||
bool Load() override
|
||||
@@ -3088,7 +3089,7 @@ class spell_gen_remove_on_health_pct : public AuraScript
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return spellInfo->GetEffects().size() > EFFECT_1;
|
||||
return ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } });
|
||||
}
|
||||
|
||||
void PeriodicTick(AuraEffect const* /*aurEff*/)
|
||||
@@ -4857,7 +4858,8 @@ class spell_gen_face_rage : public AuraScript
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_FACE_RAGE }) && spellInfo->GetEffects().size() > EFFECT_2;
|
||||
return ValidateSpellInfo({ SPELL_FACE_RAGE })
|
||||
&& ValidateSpellEffect({ { spellInfo->Id, EFFECT_2 } });
|
||||
}
|
||||
|
||||
void OnRemove(AuraEffect const* /*effect*/, AuraEffectHandleModes /*mode*/)
|
||||
|
||||
@@ -4151,7 +4151,7 @@ class spell_item_artifical_stamina : public AuraScript
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return spellInfo->GetEffects().size() > EFFECT_1;
|
||||
return ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } });
|
||||
}
|
||||
|
||||
bool Load() override
|
||||
@@ -4177,7 +4177,7 @@ class spell_item_artifical_damage : public AuraScript
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return spellInfo->GetEffects().size() > EFFECT_1;
|
||||
return ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } });
|
||||
}
|
||||
|
||||
bool Load() override
|
||||
@@ -4302,7 +4302,7 @@ class spell_item_water_strider : public AuraScript
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return spellInfo->GetEffects().size() > EFFECT_1;
|
||||
return ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } });
|
||||
}
|
||||
|
||||
void OnRemove(AuraEffect const* /*effect*/, AuraEffectHandleModes /*mode*/)
|
||||
@@ -4609,7 +4609,7 @@ class spell_item_seal_of_darkshire_nobility : public AuraScript
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return spellInfo->GetEffects().size() > EFFECT_1
|
||||
return ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } })
|
||||
&& ValidateSpellInfo({ spellInfo->GetEffect(EFFECT_1).TriggerSpell });
|
||||
}
|
||||
|
||||
@@ -4734,7 +4734,7 @@ class spell_item_grips_of_forsaken_sanity : public AuraScript
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return spellInfo->GetEffects().size() > EFFECT_1;
|
||||
return ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } });
|
||||
}
|
||||
|
||||
bool CheckHealth(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo)
|
||||
|
||||
@@ -177,7 +177,7 @@ class spell_mage_arcane_barrage : public SpellScript
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_MAGE_ARCANE_BARRAGE_R3, SPELL_MAGE_ARCANE_BARRAGE_ENERGIZE })
|
||||
&& spellInfo->GetEffects().size() > EFFECT_1;
|
||||
&& ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } });
|
||||
}
|
||||
|
||||
void ConsumeArcaneCharges()
|
||||
@@ -242,7 +242,7 @@ class spell_mage_arcane_explosion : public SpellScript
|
||||
if (!ValidateSpellInfo({ SPELL_MAGE_ARCANE_MAGE, SPELL_MAGE_REVERBERATE }))
|
||||
return false;
|
||||
|
||||
if (spellInfo->GetEffects().size() <= EFFECT_1)
|
||||
if (!ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } }))
|
||||
return false;
|
||||
|
||||
return spellInfo->GetEffect(EFFECT_1).IsEffect(SPELL_EFFECT_SCHOOL_DAMAGE);
|
||||
@@ -403,7 +403,7 @@ class spell_mage_cauterize_AuraScript : public AuraScript
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return spellInfo->GetEffects().size() > EFFECT_2 && ValidateSpellInfo
|
||||
return ValidateSpellEffect({ { spellInfo->Id, EFFECT_2 } }) && ValidateSpellInfo
|
||||
({
|
||||
SPELL_MAGE_CAUTERIZE_DOT,
|
||||
SPELL_MAGE_CAUTERIZED,
|
||||
@@ -681,7 +681,7 @@ class spell_mage_flame_on : public AuraScript
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_MAGE_FIRE_BLAST })
|
||||
&& sSpellCategoryStore.HasRecord(sSpellMgr->AssertSpellInfo(SPELL_MAGE_FIRE_BLAST, DIFFICULTY_NONE)->ChargeCategoryId)
|
||||
&& spellInfo->GetEffects().size() > EFFECT_2;
|
||||
&& ValidateSpellEffect({ { spellInfo->Id, EFFECT_2 } });
|
||||
}
|
||||
|
||||
void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& canBeRecalculated)
|
||||
|
||||
@@ -296,7 +296,7 @@ class spell_pal_awakening : public AuraScript
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_PALADIN_AVENGING_WRATH })
|
||||
&& spellInfo->GetEffects().size() >= EFFECT_1;
|
||||
&& ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } });
|
||||
}
|
||||
|
||||
bool CheckProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
|
||||
|
||||
@@ -250,8 +250,7 @@ class spell_pri_atonement : public AuraScript
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_PRIEST_ATONEMENT_HEAL, SPELL_PRIEST_SINS_OF_THE_MANY })
|
||||
&& spellInfo->GetEffects().size() > EFFECT_1
|
||||
&& sSpellMgr->AssertSpellInfo(SPELL_PRIEST_SINS_OF_THE_MANY, DIFFICULTY_NONE)->GetEffects().size() > EFFECT_2;
|
||||
&& ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 }, { SPELL_PRIEST_SINS_OF_THE_MANY, EFFECT_2 } });
|
||||
}
|
||||
|
||||
bool CheckProc(ProcEventInfo& eventInfo)
|
||||
@@ -518,7 +517,7 @@ class spell_pri_guardian_spirit : public AuraScript
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_PRIEST_GUARDIAN_SPIRIT_HEAL }) && spellInfo->GetEffects().size() > EFFECT_1;
|
||||
return ValidateSpellInfo({ SPELL_PRIEST_GUARDIAN_SPIRIT_HEAL }) && ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } });
|
||||
}
|
||||
|
||||
bool Load() override
|
||||
@@ -601,8 +600,8 @@ class spell_pri_holy_words : public AuraScript
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo
|
||||
({
|
||||
return ValidateSpellInfo(
|
||||
{
|
||||
SPELL_PRIEST_HEAL,
|
||||
SPELL_PRIEST_FLASH_HEAL,
|
||||
SPELL_PRIEST_PRAYER_OF_HEALING,
|
||||
@@ -611,10 +610,12 @@ class spell_pri_holy_words : public AuraScript
|
||||
SPELL_PRIEST_HOLY_WORD_CHASTISE,
|
||||
SPELL_PRIEST_HOLY_WORD_SANCTIFY,
|
||||
SPELL_PRIEST_HOLY_WORD_SERENITY
|
||||
})
|
||||
&& sSpellMgr->AssertSpellInfo(SPELL_PRIEST_HOLY_WORD_SERENITY, DIFFICULTY_NONE)->GetEffects().size() > EFFECT_1
|
||||
&& sSpellMgr->AssertSpellInfo(SPELL_PRIEST_HOLY_WORD_SANCTIFY, DIFFICULTY_NONE)->GetEffects().size() > EFFECT_3
|
||||
&& sSpellMgr->AssertSpellInfo(SPELL_PRIEST_HOLY_WORD_CHASTISE, DIFFICULTY_NONE)->GetEffects().size() > EFFECT_1;
|
||||
}) && ValidateSpellEffect(
|
||||
{
|
||||
{ SPELL_PRIEST_HOLY_WORD_SERENITY, EFFECT_1 },
|
||||
{ SPELL_PRIEST_HOLY_WORD_SANCTIFY, EFFECT_3 },
|
||||
{ SPELL_PRIEST_HOLY_WORD_CHASTISE, EFFECT_1 }
|
||||
});
|
||||
}
|
||||
|
||||
void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& eventInfo)
|
||||
@@ -975,7 +976,7 @@ class spell_pri_power_word_radiance : public SpellScript
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_PRIEST_ATONEMENT, SPELL_PRIEST_ATONEMENT_TRIGGERED, SPELL_PRIEST_TRINITY })
|
||||
&& spellInfo->GetEffects().size() > EFFECT_3;
|
||||
&& ValidateSpellEffect({ { spellInfo->Id, EFFECT_3 } });
|
||||
}
|
||||
|
||||
void OnTargetSelect(std::list<WorldObject*>& targets)
|
||||
@@ -1363,7 +1364,7 @@ class spell_pri_purge_the_wicked_dummy : public SpellScript
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_PRIEST_PURGE_THE_WICKED_PERIODIC, SPELL_PRIEST_REVEL_IN_PURITY })
|
||||
&& sSpellMgr->AssertSpellInfo(SPELL_PRIEST_REVEL_IN_PURITY, DIFFICULTY_NONE)->GetEffects().size() > EFFECT_1;
|
||||
&& ValidateSpellEffect({ { SPELL_PRIEST_REVEL_IN_PURITY, EFFECT_1 } });
|
||||
}
|
||||
|
||||
void FilterTargets(std::list<WorldObject*>& targets)
|
||||
|
||||
@@ -1886,7 +1886,7 @@ class spell_quest_portal_with_condition : public SpellScript
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return spellInfo->GetEffects().size() > EFFECT_1
|
||||
return ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } })
|
||||
&& ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) })
|
||||
&& sObjectMgr->GetQuestTemplate(uint32(spellInfo->GetEffect(EFFECT_1).CalcValue()));
|
||||
}
|
||||
|
||||
@@ -102,7 +102,7 @@ class spell_rog_backstab : public SpellScript
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return spellInfo->GetEffects().size() > EFFECT_3;
|
||||
return ValidateSpellEffect({ { spellInfo->Id, EFFECT_3 } });
|
||||
}
|
||||
|
||||
void HandleHitDamage(SpellEffIndex /*effIndex*/)
|
||||
@@ -677,7 +677,7 @@ class spell_rog_shadowstrike : public SpellScript
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_ROGUE_PREMEDITATION_AURA, SPELL_ROGUE_SLICE_AND_DICE, SPELL_ROGUE_PREMEDITATION_PASSIVE })
|
||||
&& sSpellMgr->AssertSpellInfo(SPELL_ROGUE_PREMEDITATION_PASSIVE, DIFFICULTY_NONE)->GetEffects().size() > EFFECT_0;
|
||||
&& ValidateSpellEffect({ { SPELL_ROGUE_PREMEDITATION_PASSIVE, EFFECT_0 } });
|
||||
}
|
||||
|
||||
SpellCastResult HandleCheckCast()
|
||||
|
||||
@@ -221,7 +221,7 @@ class spell_sha_chain_lightning : public SpellScript
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_SHAMAN_CHAIN_LIGHTNING_ENERGIZE, SPELL_SHAMAN_MAELSTROM_CONTROLLER })
|
||||
&& sSpellMgr->AssertSpellInfo(SPELL_SHAMAN_MAELSTROM_CONTROLLER, DIFFICULTY_NONE)->GetEffects().size() > EFFECT_4;
|
||||
&& ValidateSpellEffect({ { SPELL_SHAMAN_MAELSTROM_CONTROLLER, EFFECT_4 } });
|
||||
}
|
||||
|
||||
void HandleScript(SpellEffIndex /*effIndex*/)
|
||||
@@ -245,7 +245,7 @@ class spell_sha_chain_lightning_overload : public SpellScript
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_SHAMAN_CHAIN_LIGHTNING_OVERLOAD_ENERGIZE, SPELL_SHAMAN_MAELSTROM_CONTROLLER })
|
||||
&& sSpellMgr->AssertSpellInfo(SPELL_SHAMAN_MAELSTROM_CONTROLLER, DIFFICULTY_NONE)->GetEffects().size() > EFFECT_5;
|
||||
&& ValidateSpellEffect({ { SPELL_SHAMAN_MAELSTROM_CONTROLLER, EFFECT_5 } });
|
||||
}
|
||||
|
||||
void HandleScript(SpellEffIndex /*effIndex*/)
|
||||
@@ -305,7 +305,7 @@ class spell_sha_downpour : public SpellScript
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return spellInfo->GetEffects().size() > EFFECT_1;
|
||||
return ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } });
|
||||
}
|
||||
|
||||
void FilterTargets(std::list<WorldObject*>& targets)
|
||||
@@ -475,7 +475,8 @@ class spell_sha_earthquake_tick : public SpellScript
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_SHAMAN_EARTHQUAKE_KNOCKING_DOWN }) && spellInfo->GetEffects().size() > EFFECT_1;
|
||||
return ValidateSpellInfo({ SPELL_SHAMAN_EARTHQUAKE_KNOCKING_DOWN })
|
||||
&& ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } });
|
||||
}
|
||||
|
||||
void HandleDamageCalc(SpellEffIndex /*effIndex*/)
|
||||
@@ -526,7 +527,7 @@ class spell_sha_elemental_blast : public SpellScript
|
||||
SPELL_SHAMAN_ELEMENTAL_BLAST_MASTERY,
|
||||
SPELL_SHAMAN_ELEMENTAL_BLAST_ENERGIZE,
|
||||
SPELL_SHAMAN_MAELSTROM_CONTROLLER
|
||||
}) && sSpellMgr->AssertSpellInfo(SPELL_SHAMAN_MAELSTROM_CONTROLLER, DIFFICULTY_NONE)->GetEffects().size() > EFFECT_10;
|
||||
}) && ValidateSpellEffect({ { SPELL_SHAMAN_MAELSTROM_CONTROLLER, EFFECT_10 } });
|
||||
}
|
||||
|
||||
void HandleEnergize(SpellEffIndex /*effIndex*/)
|
||||
@@ -1049,7 +1050,7 @@ class spell_sha_lightning_bolt : public SpellScript
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_SHAMAN_LIGHTNING_BOLT_ENERGIZE, SPELL_SHAMAN_MAELSTROM_CONTROLLER })
|
||||
&& sSpellMgr->AssertSpellInfo(SPELL_SHAMAN_MAELSTROM_CONTROLLER, DIFFICULTY_NONE)->GetEffects().size() > EFFECT_0;
|
||||
&& ValidateSpellEffect({ { SPELL_SHAMAN_MAELSTROM_CONTROLLER, EFFECT_0 } });
|
||||
}
|
||||
|
||||
void HandleScript(SpellEffIndex /*effIndex*/)
|
||||
@@ -1073,7 +1074,7 @@ class spell_sha_lightning_bolt_overload : public SpellScript
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_SHAMAN_LIGHTNING_BOLT_OVERLOAD_ENERGIZE, SPELL_SHAMAN_MAELSTROM_CONTROLLER })
|
||||
&& sSpellMgr->AssertSpellInfo(SPELL_SHAMAN_MAELSTROM_CONTROLLER, DIFFICULTY_NONE)->GetEffects().size() > EFFECT_1;
|
||||
&& ValidateSpellEffect({ { SPELL_SHAMAN_MAELSTROM_CONTROLLER, EFFECT_1 } });
|
||||
}
|
||||
|
||||
void HandleScript(SpellEffIndex /*effIndex*/)
|
||||
|
||||
@@ -259,7 +259,7 @@ class spell_warl_devour_magic : public SpellScript
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_WARLOCK_GLYPH_OF_DEMON_TRAINING, SPELL_WARLOCK_DEVOUR_MAGIC_HEAL })
|
||||
&& spellInfo->GetEffects().size() > EFFECT_1;
|
||||
&& ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } });
|
||||
}
|
||||
|
||||
void OnSuccessfulDispel(SpellEffIndex /*effIndex*/)
|
||||
|
||||
@@ -230,7 +230,7 @@ class spell_warr_colossus_smash : public SpellScript
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_WARRIOR_COLOSSUS_SMASH_AURA, SPELL_WARRIOR_IN_FOR_THE_KILL, SPELL_WARRIOR_IN_FOR_THE_KILL_HASTE })
|
||||
&& sSpellMgr->AssertSpellInfo(SPELL_WARRIOR_IN_FOR_THE_KILL, DIFFICULTY_NONE)->GetEffects().size() > EFFECT_2;
|
||||
&& ValidateSpellEffect({ { SPELL_WARRIOR_IN_FOR_THE_KILL, EFFECT_2 } });
|
||||
}
|
||||
|
||||
void HandleHit()
|
||||
@@ -467,7 +467,7 @@ class spell_warr_item_t10_prot_4p_bonus : public AuraScript
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_WARRIOR_STOICISM })
|
||||
&& spellInfo->GetEffects().size() > EFFECT_1;
|
||||
&& ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } });
|
||||
}
|
||||
|
||||
void HandleProc(ProcEventInfo& eventInfo)
|
||||
@@ -587,10 +587,8 @@ class spell_warr_shockwave : public SpellScript
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
if (!ValidateSpellInfo({ SPELL_WARRIOR_SHOCKWAVE, SPELL_WARRIOR_SHOCKWAVE_STUN }))
|
||||
return false;
|
||||
|
||||
return spellInfo->GetEffects().size() > EFFECT_3;
|
||||
return !ValidateSpellInfo({ SPELL_WARRIOR_SHOCKWAVE, SPELL_WARRIOR_SHOCKWAVE_STUN })
|
||||
&& ValidateSpellEffect({ { spellInfo->Id, EFFECT_3 } });
|
||||
}
|
||||
|
||||
bool Load() override
|
||||
|
||||
Reference in New Issue
Block a user