diff options
author | Shauren <shauren.trinity@gmail.com> | 2014-12-14 16:11:33 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2014-12-14 16:11:33 +0100 |
commit | 25ff9daab1f0e96db128ef85fe2dbbc8ca34468b (patch) | |
tree | 0149572eaa13a0f9d8fc1d86b5ffa5144476a1cb /src/server/game/Spells/SpellMgr.cpp | |
parent | ee496b96a177f638701ac16f6af3325c31846013 (diff) |
Core/Spells: Optimized spell effect info loading
Diffstat (limited to 'src/server/game/Spells/SpellMgr.cpp')
-rw-r--r-- | src/server/game/Spells/SpellMgr.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 4ba129b4946..f4b9ea394e7 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -2760,15 +2760,18 @@ void SpellMgr::LoadSpellInfoStore() SpellEffectEntry const* effect = sSpellEffectStore.LookupEntry(i); if (!effect) continue; - + if (effect->EffectIndex >= MAX_SPELL_EFFECTS) { TC_LOG_ERROR("server.loading", "Spell %u has invalid EffectIndex %u, max is %u, skipped", i, effect->EffectIndex, uint32(MAX_SPELL_EFFECTS)); continue; } - effectsBySpell[effect->SpellID][effect->DifficultyID].resize(MAX_SPELL_EFFECTS); - effectsBySpell[effect->SpellID][effect->DifficultyID][effect->EffectIndex] = effect; + SpellEffectEntryVector& effectsForDifficulty = effectsBySpell[effect->SpellID][effect->DifficultyID]; + if (effectsForDifficulty.size() <= effect->EffectIndex) + effectsForDifficulty.resize(effect->EffectIndex + 1); + + effectsForDifficulty[effect->EffectIndex] = effect; } for (uint32 i = 0; i < sSpellStore.GetNumRows(); ++i) |