Core/Spells: Add assertions validating various spell enums

This commit is contained in:
Shauren
2016-06-03 16:45:01 +02:00
parent 7f21c2979e
commit 3ab3a667ed
4 changed files with 20 additions and 6 deletions

View File

@@ -1263,7 +1263,11 @@ enum SpellEffectName
SPELL_EFFECT_249 = 249,
SPELL_EFFECT_TAKE_SCREENSHOT = 250, // Serverside marker for selfie screenshot - achievement check
SPELL_EFFECT_SET_GARRISON_CACHE_SIZE = 251,
TOTAL_SPELL_EFFECTS = 252,
SPELL_EFFECT_252 = 252,
SPELL_EFFECT_253 = 253,
SPELL_EFFECT_254 = 254,
SPELL_EFFECT_255 = 255,
TOTAL_SPELL_EFFECTS = 256,
};
enum SpellCastResult // 21355
@@ -2017,6 +2021,7 @@ enum Targets
TARGET_UNK_145 = 145,
TARGET_UNK_146 = 146,
TARGET_UNK_147 = 147,
TARGET_UNK_148 = 148,
TOTAL_SPELL_TARGETS
};

View File

@@ -317,6 +317,10 @@ pEffect SpellEffects[TOTAL_SPELL_EFFECTS]=
&Spell::EffectNULL, //249 SPELL_EFFECT_249
&Spell::EffectNULL, //250 SPELL_EFFECT_TAKE_SCREENSHOT
&Spell::EffectNULL, //251 SPELL_EFFECT_SET_GARRISON_CACHE_SIZE
&Spell::EffectNULL, //252 SPELL_EFFECT_252
&Spell::EffectNULL, //253 SPELL_EFFECT_253
&Spell::EffectNULL, //254 SPELL_EFFECT_254
&Spell::EffectNULL, //255 SPELL_EFFECT_255
};
void Spell::EffectNULL(SpellEffIndex /*effIndex*/)

View File

@@ -358,6 +358,7 @@ SpellImplicitTargetInfo::StaticData SpellImplicitTargetInfo::_data[TOTAL_SPELL_
{TARGET_OBJECT_TYPE_NONE, TARGET_REFERENCE_TYPE_NONE, TARGET_SELECT_CATEGORY_NYI, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 145
{TARGET_OBJECT_TYPE_NONE, TARGET_REFERENCE_TYPE_NONE, TARGET_SELECT_CATEGORY_NYI, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 146
{TARGET_OBJECT_TYPE_NONE, TARGET_REFERENCE_TYPE_NONE, TARGET_SELECT_CATEGORY_NYI, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 147
{TARGET_OBJECT_TYPE_NONE, TARGET_REFERENCE_TYPE_NONE, TARGET_SELECT_CATEGORY_NYI, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 148
};
SpellEffectInfo::SpellEffectInfo(SpellEffectScalingEntry const* spellEffectScaling, SpellInfo const* spellInfo, uint8 effIndex, SpellEffectEntry const* _effect)
@@ -971,6 +972,10 @@ SpellEffectInfo::StaticData SpellEffectInfo::_data[TOTAL_SPELL_EFFECTS] =
{EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 249 SPELL_EFFECT_249
{EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 250 SPELL_EFFECT_TAKE_SCREENSHOT
{EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 251 SPELL_EFFECT_SET_GARRISON_CACHE_SIZE
{EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 252 SPELL_EFFECT_252
{EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 253 SPELL_EFFECT_253
{EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 254 SPELL_EFFECT_254
{EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 255 SPELL_EFFECT_255
};
SpellInfo::SpellInfo(SpellInfoLoadHelper const& data, SpellEffectEntryMap const& effectsMap, SpellVisualMap&& visuals,

View File

@@ -2697,11 +2697,11 @@ void SpellMgr::LoadSpellInfoStore()
for (SpellEffectEntry const* effect : sSpellEffectStore)
{
if (effect->EffectIndex >= MAX_SPELL_EFFECTS)
{
TC_LOG_ERROR("server.loading", "Spell %u has invalid EffectIndex %u, max is %u, skipped", effect->SpellID, effect->EffectIndex, uint32(MAX_SPELL_EFFECTS));
continue;
}
ASSERT(effect->EffectIndex < MAX_SPELL_EFFECTS, "MAX_SPELL_EFFECTS must be at least %u", effect->EffectIndex);
ASSERT(effect->Effect < TOTAL_SPELL_EFFECTS, "TOTAL_SPELL_EFFECTS must be at least %u", effect->Effect);
ASSERT(effect->EffectAura < TOTAL_AURAS, "TOTAL_AURAS must be at least %u", effect->EffectAura);
ASSERT(effect->ImplicitTarget[0] < TOTAL_SPELL_TARGETS, "TOTAL_SPELL_TARGETS must be at least %u", effect->ImplicitTarget[0]);
ASSERT(effect->ImplicitTarget[1] < TOTAL_SPELL_TARGETS, "TOTAL_SPELL_TARGETS must be at least %u", effect->ImplicitTarget[1]);
SpellEffectEntryVector& effectsForDifficulty = effectsBySpell[effect->SpellID][effect->DifficultyID];
if (effectsForDifficulty.size() <= effect->EffectIndex)