Scripts/Spells: Added spell effect validation helper

This commit is contained in:
Shauren
2023-05-30 19:34:19 +02:00
parent 3ca9e1253a
commit f8a6a9b017
23 changed files with 110 additions and 65 deletions
+18
View File
@@ -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;
+26
View File
@@ -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*/)
+2 -3
View File
@@ -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*/)
+6 -5
View File
@@ -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)
+2 -3
View File
@@ -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;
}
+7 -5
View File
@@ -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*/)
+5 -5
View File
@@ -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)
+4 -4
View File
@@ -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)
+1 -1
View File
@@ -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*/)
+12 -11
View File
@@ -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)
+1 -1
View File
@@ -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()));
}
+2 -2
View File
@@ -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()
+8 -7
View File
@@ -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*/)
+1 -1
View File
@@ -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*/)
+4 -6
View File
@@ -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