aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjackpoz <giacomopoz@gmail.com>2017-12-02 16:08:48 +0100
committerjackpoz <giacomopoz@gmail.com>2017-12-02 16:08:48 +0100
commit8e1c74d95a79a366ca755c9ebdc2fdd24c135284 (patch)
tree3fc8f4bac9063b5489a549bc92b48f7646fef225 /src
parent3d1ba42f428c6b920240e208c854b0bcd5d664b1 (diff)
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.
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Spells/SpellMgr.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index b3a37a2073c..ac0bfb0c41d 100644
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -2547,13 +2547,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);
}
}