diff options
author | megamage <none@none> | 2009-02-02 09:53:01 -0600 |
---|---|---|
committer | megamage <none@none> | 2009-02-02 09:53:01 -0600 |
commit | 5299225a8bb052e808fc749ff65d7208da54c866 (patch) | |
tree | 30b47714f9192dcbf09adc45031871efa8927100 /src | |
parent | 617dc4b64c1e0a861ff1d7f28a725bc8561875fd (diff) |
[7220] Check creature spells data at server startup. Author: VladimirMangos
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/game/Creature.cpp | 6 | ||||
-rw-r--r-- | src/game/Creature.h | 5 | ||||
-rw-r--r-- | src/game/ObjectMgr.cpp | 9 | ||||
-rw-r--r-- | src/shared/revision_nr.h | 2 |
4 files changed, 13 insertions, 9 deletions
diff --git a/src/game/Creature.cpp b/src/game/Creature.cpp index 8134cd71de5..9ff0e7a1f8e 100644 --- a/src/game/Creature.cpp +++ b/src/game/Creature.cpp @@ -360,10 +360,8 @@ bool Creature::UpdateEntry(uint32 Entry, uint32 team, const CreatureData *data ) SetPvP(true); } - m_spells[0] = GetCreatureInfo()->spell1; - m_spells[1] = GetCreatureInfo()->spell2; - m_spells[2] = GetCreatureInfo()->spell3; - m_spells[3] = GetCreatureInfo()->spell4; + for(int i=0; i < CREATURE_MAX_SPELLS; ++i) + m_spells[i] = GetCreatureInfo()->spells[i]; // HACK: trigger creature is always not selectable if(isTrigger()) diff --git a/src/game/Creature.h b/src/game/Creature.h index ca0ebf88b08..d2a4ff9fd20 100644 --- a/src/game/Creature.h +++ b/src/game/Creature.h @@ -195,10 +195,7 @@ struct CreatureInfo int32 resistance4; int32 resistance5; int32 resistance6; - uint32 spell1; - uint32 spell2; - uint32 spell3; - uint32 spell4; + uint32 spells[CREATURE_MAX_SPELLS]; uint32 PetSpellDataId; uint32 mingold; uint32 maxgold; diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp index 9203436f527..c4cdc057815 100644 --- a/src/game/ObjectMgr.cpp +++ b/src/game/ObjectMgr.cpp @@ -869,6 +869,15 @@ void ObjectMgr::LoadCreatureTemplates() sLog.outErrorDb("Creature (Entry: %u) has non-existing PetSpellDataId (%u)", cInfo->Entry, cInfo->PetSpellDataId); } + for(int i = 0; i < CREATURE_MAX_SPELLS; ++i) + { + if(cInfo->spells[i] && !sSpellStore.LookupEntry(cInfo->spells[i])) + { + sLog.outErrorDb("Creature (Entry: %u) has non-existing Spell%d (%u), set to 0", cInfo->Entry, i+1,cInfo->spells[i]); + const_cast<CreatureInfo*>(cInfo)->spells[i] = 0; + } + } + if(cInfo->MovementType >= MAX_DB_MOTION_TYPE) { sLog.outErrorDb("Creature (Entry: %u) has wrong movement generator type (%u), ignore and set to IDLE.",cInfo->Entry,cInfo->MovementType); diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index e998ebc1e34..2305f767755 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "7219" + #define REVISION_NR "7220" #endif // __REVISION_NR_H__ |