Core/Spell: Validate spell_dbc DB data on startup

Validate spell_dbc DB data on startup (max effect type, max aura type, max target type).
Delete some invalid spells from spell_dbc table. Make sure to apply the SQL script or worldserver will assert on startup.
This commit is contained in:
jackpoz
2017-12-02 16:08:48 +01:00
committed by Aokromes
parent 2a6cf1e6b7
commit d9501acb3f
2 changed files with 7 additions and 6 deletions

View File

@@ -0,0 +1 @@
DELETE FROM `spell_dbc` WHERE `Effect1` >= 165 OR `Effect2` >= 165 OR `Effect3` >= 165 OR `EffectApplyAuraName1` >= 317 OR `EffectApplyAuraName2` >= 317 OR `EffectApplyAuraName3` >= 317 OR `EffectImplicitTargetA1` >= 111 OR `EffectImplicitTargetA2` >= 111 OR `EffectImplicitTargetA3` >= 111 OR `EffectImplicitTargetB1` >= 111 OR `EffectImplicitTargetB2` >= 111 OR `EffectImplicitTargetB3` >= 111;

View File

@@ -2622,13 +2622,13 @@ void SpellMgr::LoadSpellInfoStore()
if (!mSpellInfoMap[spellIndex])
continue;
for (uint32 effectIndex = 0; effectIndex < MAX_SPELL_EFFECTS; ++effectIndex)
for (auto const& effect : mSpellInfoMap[spellIndex]->Effects)
{
if (mSpellInfoMap[spellIndex]->Effects[effectIndex].Effect >= TOTAL_SPELL_EFFECTS)
{
TC_LOG_ERROR("sql.sql", "Spell (Entry: %u) has `Effect` '%u' greater than max allowed value '%u', removing", spellIndex, mSpellInfoMap[spellIndex]->Effects[effectIndex].Effect, (TOTAL_SPELL_EFFECTS - 1));
mSpellInfoMap[spellIndex]->Effects[effectIndex].Effect = 0;
}
//ASSERT(effect.EffectIndex < MAX_SPELL_EFFECTS, "MAX_SPELL_EFFECTS must be at least %u", effect.EffectIndex + 1);
ASSERT(effect.Effect < TOTAL_SPELL_EFFECTS, "TOTAL_SPELL_EFFECTS must be at least %u", effect.Effect + 1);
ASSERT(effect.ApplyAuraName < TOTAL_AURAS, "TOTAL_AURAS must be at least %u", effect.ApplyAuraName + 1);
ASSERT(effect.TargetA.GetTarget() < TOTAL_SPELL_TARGETS, "TOTAL_SPELL_TARGETS must be at least %u", effect.TargetA.GetTarget() + 1);
ASSERT(effect.TargetB.GetTarget() < TOTAL_SPELL_TARGETS, "TOTAL_SPELL_TARGETS must be at least %u", effect.TargetB.GetTarget() + 1);
}
}