aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormegamage <none@none>2009-02-02 09:53:01 -0600
committermegamage <none@none>2009-02-02 09:53:01 -0600
commit5299225a8bb052e808fc749ff65d7208da54c866 (patch)
tree30b47714f9192dcbf09adc45031871efa8927100 /src
parent617dc4b64c1e0a861ff1d7f28a725bc8561875fd (diff)
[7220] Check creature spells data at server startup. Author: VladimirMangos
--HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/game/Creature.cpp6
-rw-r--r--src/game/Creature.h5
-rw-r--r--src/game/ObjectMgr.cpp9
-rw-r--r--src/shared/revision_nr.h2
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__