aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/server/game/Entities/Creature/Creature.cpp28
-rwxr-xr-xsrc/server/game/Entities/Creature/Creature.h4
-rwxr-xr-xsrc/server/game/Entities/Totem/Totem.cpp22
-rwxr-xr-xsrc/server/game/Events/GameEventMgr.cpp12
-rwxr-xr-xsrc/server/game/Globals/ObjectMgr.cpp107
-rwxr-xr-xsrc/server/game/Globals/ObjectMgr.h6
-rwxr-xr-xsrc/server/game/Spells/Auras/SpellAuraEffects.cpp27
-rwxr-xr-xsrc/server/shared/Database/SQLStorage.cpp2
8 files changed, 107 insertions, 101 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index 7080e35538c..7a591d5660e 100755
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -299,18 +299,16 @@ bool Creature::InitEntry(uint32 Entry, uint32 /*team*/, const CreatureData *data
return false;
}
- uint32 display_id = sObjectMgr->ChooseDisplayId(0, GetCreatureInfo(), data);
- CreatureModelInfo const *minfo = sObjectMgr->GetCreatureModelRandomGender(display_id);
+ uint32 displayID = sObjectMgr->ChooseDisplayId(0, GetCreatureInfo(), data);
+ CreatureModelInfo const *minfo = sObjectMgr->GetCreatureModelRandomGender(displayID);
if (!minfo) // Cancel load if no model defined
{
sLog->outErrorDb("Creature (Entry: %u) has no model defined in table `creature_template`, can't load. ",Entry);
return false;
}
- display_id = minfo->modelid; // it can be different (for another gender)
-
- SetDisplayId(display_id);
- SetNativeDisplayId(display_id);
+ SetDisplayId(displayID);
+ SetNativeDisplayId(displayID);
SetByteValue(UNIT_FIELD_BYTES_0, 2, minfo->gender);
// Load creature equipment
@@ -780,13 +778,12 @@ bool Creature::Create(uint32 guidlow, Map *map, uint32 phaseMask, uint32 Entry,
}
LoadCreaturesAddon();
- CreatureModelInfo const *minfo = sObjectMgr->GetCreatureModelRandomGender(GetNativeDisplayId());
+ uint32 displayID = 0;
+ CreatureModelInfo const *minfo = sObjectMgr->GetCreatureModelRandomGender(displayID = GetNativeDisplayId());
if (minfo && !isTotem()) // Cancel load if no model defined or if totem
{
- uint32 display_id = minfo->modelid; // it can be different (for another gender)
-
- SetDisplayId(display_id);
- SetNativeDisplayId(display_id);
+ SetDisplayId(displayID);
+ SetNativeDisplayId(displayID);
SetByteValue(UNIT_FIELD_BYTES_0, 2, minfo->gender);
}
@@ -1620,13 +1617,12 @@ void Creature::Respawn(bool force)
else
setDeathState(JUST_ALIVED);
- CreatureModelInfo const *minfo = sObjectMgr->GetCreatureModelRandomGender(GetNativeDisplayId());
+ uint32 displayID = 0;
+ CreatureModelInfo const *minfo = sObjectMgr->GetCreatureModelRandomGender(displayID = GetNativeDisplayId());
if (minfo) // Cancel load if no model defined
{
- uint32 display_id = minfo->modelid; // it can be different (for another gender)
-
- SetDisplayId(display_id);
- SetNativeDisplayId(display_id);
+ SetDisplayId(displayID);
+ SetNativeDisplayId(displayID);
SetByteValue(UNIT_FIELD_BYTES_0, 2, minfo->gender);
}
diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h
index 4933428bf4e..6dac9dd9d12 100755
--- a/src/server/game/Entities/Creature/Creature.h
+++ b/src/server/game/Entities/Creature/Creature.h
@@ -281,13 +281,15 @@ struct CreatureDataAddon
struct CreatureModelInfo
{
- uint32 modelid;
float bounding_radius;
float combat_reach;
uint8 gender;
uint32 modelid_other_gender;
};
+// Benchmarked: Faster than std::map (insert/find)
+typedef UNORDERED_MAP<uint16, CreatureModelInfo> CreatureModelContainer;
+
enum InhabitTypeValues
{
INHABIT_GROUND = 1,
diff --git a/src/server/game/Entities/Totem/Totem.cpp b/src/server/game/Entities/Totem/Totem.cpp
index d9f8ba939bb..be36cdd441c 100755
--- a/src/server/game/Entities/Totem/Totem.cpp
+++ b/src/server/game/Entities/Totem/Totem.cpp
@@ -57,34 +57,32 @@ void Totem::InitStats(uint32 duration)
CreatureInfo const *cinfo = GetCreatureInfo();
if (m_owner->GetTypeId() == TYPEID_PLAYER && cinfo)
{
- uint32 display_id = sObjectMgr->ChooseDisplayId(m_owner->ToPlayer()->GetTeam(), cinfo);
- CreatureModelInfo const *minfo = sObjectMgr->GetCreatureModelRandomGender(display_id);
- if (minfo)
- display_id = minfo->modelid;
+ uint32 displayID = sObjectMgr->ChooseDisplayId(m_owner->ToPlayer()->GetTeam(), cinfo);
+ CreatureModelInfo const *minfo = sObjectMgr->GetCreatureModelRandomGender(displayID);
switch (m_owner->ToPlayer()->GetTeam())
{
case ALLIANCE:
- display_id = cinfo->Modelid1;
+ displayID = cinfo->Modelid1;
break;
case HORDE:
if (cinfo->Modelid3)
- display_id = cinfo->Modelid3;
+ displayID = cinfo->Modelid3;
else
- display_id = cinfo->Modelid1;
+ displayID = cinfo->Modelid1;
switch (((Player*)m_owner)->getRace())
{
case RACE_ORC:
if (cinfo->Modelid2)
- display_id = cinfo->Modelid2;
+ displayID = cinfo->Modelid2;
else
- display_id = cinfo->Modelid1;
+ displayID = cinfo->Modelid1;
break;
case RACE_TROLL:
if (cinfo->Modelid4)
- display_id = cinfo->Modelid4;
+ displayID = cinfo->Modelid4;
else
- display_id = cinfo->Modelid1;
+ displayID = cinfo->Modelid1;
break;
default:
break;
@@ -93,7 +91,7 @@ void Totem::InitStats(uint32 duration)
default:
break;
}
- SetDisplayId(display_id);
+ SetDisplayId(displayID);
}
// Get spell casted by totem
diff --git a/src/server/game/Events/GameEventMgr.cpp b/src/server/game/Events/GameEventMgr.cpp
index a857bd94965..654d69e4e4b 100755
--- a/src/server/game/Events/GameEventMgr.cpp
+++ b/src/server/game/Events/GameEventMgr.cpp
@@ -1299,7 +1299,7 @@ void GameEventMgr::ChangeEquipOrModel(int16 event_id, bool activate)
pCreature->LoadEquipment(itr->second.equipment_id, true);
if (itr->second.modelid >0 && itr->second.modelid_prev != itr->second.modelid)
{
- CreatureModelInfo const *minfo = sObjectMgr->GetCreatureModelInfo(itr->second.modelid);
+ CreatureModelInfo const* minfo = sObjectMgr->GetCreatureModelInfo(itr->second.modelid);
if (minfo)
{
pCreature->SetDisplayId(itr->second.modelid);
@@ -1314,7 +1314,7 @@ void GameEventMgr::ChangeEquipOrModel(int16 event_id, bool activate)
pCreature->LoadEquipment(itr->second.equipement_id_prev, true);
if (itr->second.modelid_prev >0 && itr->second.modelid_prev != itr->second.modelid)
{
- CreatureModelInfo const *minfo = sObjectMgr->GetCreatureModelInfo(itr->second.modelid_prev);
+ CreatureModelInfo const* minfo = sObjectMgr->GetCreatureModelInfo(itr->second.modelid_prev);
if (minfo)
{
pCreature->SetDisplayId(itr->second.modelid_prev);
@@ -1331,16 +1331,14 @@ void GameEventMgr::ChangeEquipOrModel(int16 event_id, bool activate)
if (data2 && activate)
{
CreatureInfo const *cinfo = ObjectMgr::GetCreatureTemplate(data2->id);
- uint32 display_id = sObjectMgr->ChooseDisplayId(0,cinfo,data2);
- CreatureModelInfo const *minfo = sObjectMgr->GetCreatureModelRandomGender(display_id);
- if (minfo)
- display_id = minfo->modelid;
+ uint32 displayID = sObjectMgr->ChooseDisplayId(0,cinfo,data2);
+ CreatureModelInfo const *minfo = sObjectMgr->GetCreatureModelRandomGender(displayID);
if (data2->equipmentId == 0)
itr->second.equipement_id_prev = cinfo->equipmentId;
else if (data2->equipmentId != -1)
itr->second.equipement_id_prev = data->equipmentId;
- itr->second.modelid_prev = display_id;
+ itr->second.modelid_prev = displayID;
}
}
// now last step: put in data
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index 36b8b4099fa..f5cbff826ca 100755
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -687,8 +687,8 @@ void ObjectMgr::CheckCreatureTemplate(CreatureInfo const* cInfo)
else if (!displayScaleEntry)
displayScaleEntry = displayEntry;
- CreatureModelInfo const* minfo = sCreatureModelStorage.LookupEntry<CreatureModelInfo>(cInfo->Modelid1);
- if (!minfo)
+ CreatureModelInfo const* modelInfo = GetCreatureModelInfo(cInfo->Modelid1);
+ if (!modelInfo)
sLog->outErrorDb("No model data exist for `Modelid1` = %u listed by creature (Entry: %u).", cInfo->Modelid1, cInfo->Entry);
}
@@ -703,8 +703,8 @@ void ObjectMgr::CheckCreatureTemplate(CreatureInfo const* cInfo)
else if (!displayScaleEntry)
displayScaleEntry = displayEntry;
- CreatureModelInfo const* minfo = sCreatureModelStorage.LookupEntry<CreatureModelInfo>(cInfo->Modelid2);
- if (!minfo)
+ CreatureModelInfo const* modelInfo = GetCreatureModelInfo(cInfo->Modelid2);;
+ if (!modelInfo)
sLog->outErrorDb("No model data exist for `Modelid2` = %u listed by creature (Entry: %u).", cInfo->Modelid2, cInfo->Entry);
}
@@ -719,8 +719,8 @@ void ObjectMgr::CheckCreatureTemplate(CreatureInfo const* cInfo)
else if (!displayScaleEntry)
displayScaleEntry = displayEntry;
- CreatureModelInfo const* minfo = sCreatureModelStorage.LookupEntry<CreatureModelInfo>(cInfo->Modelid3);
- if (!minfo)
+ CreatureModelInfo const* modelInfo = GetCreatureModelInfo(cInfo->Modelid3);
+ if (!modelInfo)
sLog->outErrorDb("No model data exist for `Modelid3` = %u listed by creature (Entry: %u).", cInfo->Modelid3, cInfo->Entry);
}
@@ -735,8 +735,8 @@ void ObjectMgr::CheckCreatureTemplate(CreatureInfo const* cInfo)
else if (!displayScaleEntry)
displayScaleEntry = displayEntry;
- CreatureModelInfo const* minfo = sCreatureModelStorage.LookupEntry<CreatureModelInfo>(cInfo->Modelid4);
- if (!minfo)
+ CreatureModelInfo const* modelInfo = GetCreatureModelInfo(cInfo->Modelid4);;
+ if (!modelInfo)
sLog->outErrorDb("No model data exist for `Modelid4` = %u listed by creature (Entry: %u).", cInfo->Modelid4, cInfo->Entry);
}
@@ -1073,9 +1073,13 @@ void ObjectMgr::LoadEquipmentTemplates()
sLog->outString();
}
-CreatureModelInfo const* ObjectMgr::GetCreatureModelInfo(uint32 modelid)
+CreatureModelInfo const* ObjectMgr::GetCreatureModelInfo(uint32 modelId)
{
- return sCreatureModelStorage.LookupEntry<CreatureModelInfo>(modelid);
+ CreatureModelContainer::const_iterator itr = CreatureModelStore.find(modelId);
+ if (itr != CreatureModelStore.end())
+ return &(itr->second);
+
+ return NULL;
}
uint32 ObjectMgr::ChooseDisplayId(uint32 /*team*/, const CreatureInfo *cinfo, const CreatureData *data /*= NULL*/)
@@ -1112,9 +1116,9 @@ void ObjectMgr::ChooseCreatureFlags(const CreatureInfo *cinfo, uint32& npcflag,
}
}
-CreatureModelInfo const* ObjectMgr::GetCreatureModelRandomGender(uint32 display_id)
+CreatureModelInfo const* ObjectMgr::GetCreatureModelRandomGender(uint32 &displayID)
{
- CreatureModelInfo const *minfo = GetCreatureModelInfo(display_id);
+ CreatureModelInfo const* minfo = GetCreatureModelInfo(displayID);
if (!minfo)
return NULL;
@@ -1124,60 +1128,76 @@ CreatureModelInfo const* ObjectMgr::GetCreatureModelRandomGender(uint32 display_
CreatureModelInfo const *minfo_tmp = GetCreatureModelInfo(minfo->modelid_other_gender);
if (!minfo_tmp)
{
- sLog->outErrorDb("Model (Entry: %u) has modelid_other_gender %u not found in table `creature_model_info`. ", minfo->modelid, minfo->modelid_other_gender);
- return minfo; // not fatal, just use the previous one
+ sLog->outErrorDb("Model (Entry: %u) has modelid_other_gender %u not found in table `creature_model_info`. ", displayID, minfo->modelid_other_gender);
}
else
+ {
+ // Model ID changed
+ displayID = minfo->modelid_other_gender;
return minfo_tmp;
+ }
}
- else
- return minfo;
+
+ return minfo;
}
void ObjectMgr::LoadCreatureModelInfo()
{
uint32 oldMSTime = getMSTime();
- sCreatureModelStorage.Load();
+ QueryResult result = WorldDatabase.Query("SELECT modelid, bounding_radius, combat_reach, gender, modelid_other_gender FROM creature_model_info");
- // post processing
- for (uint32 i = 1; i < sCreatureModelStorage.MaxEntry; ++i)
+ if (!result)
{
- CreatureModelInfo const *minfo = sCreatureModelStorage.LookupEntry<CreatureModelInfo>(i);
- if (!minfo)
- continue;
+ sLog->outString(">> Loaded 0 creature model definitions. DB table `creature_model_info` is empty.");
+ sLog->outString();
+ return;
+ }
- if (!sCreatureDisplayInfoStore.LookupEntry(minfo->modelid))
- sLog->outErrorDb("Table `creature_model_info` has model for not existed display id (%u).", minfo->modelid);
+ uint32 count = 0;
- if (minfo->gender > GENDER_NONE)
+ do
+ {
+ Field *fields = result->Fetch();
+
+ uint32 modelId = fields[0].GetUInt32();
+
+ CreatureModelInfo modelInfo;
+
+ modelInfo.bounding_radius = fields[1].GetFloat();
+ modelInfo.combat_reach = fields[2].GetFloat();
+ modelInfo.gender = fields[3].GetUInt8();
+ modelInfo.modelid_other_gender = fields[4].GetUInt32();
+
+ // Checks
+
+ if (!sCreatureDisplayInfoStore.LookupEntry(modelId))
+ sLog->outErrorDb("Table `creature_model_info` has model for not existed display id (%u).", modelId);
+
+ if (modelInfo.gender > GENDER_NONE)
{
- sLog->outErrorDb("Table `creature_model_info` has wrong gender (%u) for display id (%u).", uint32(minfo->gender), minfo->modelid);
- const_cast<CreatureModelInfo*>(minfo)->gender = GENDER_MALE;
+ sLog->outErrorDb("Table `creature_model_info` has wrong gender (%u) for display id (%u).", uint32(modelInfo.gender), modelId);
+ modelInfo.gender = GENDER_MALE;
}
- if (minfo->modelid_other_gender && !sCreatureDisplayInfoStore.LookupEntry(minfo->modelid_other_gender))
+ if (modelInfo.modelid_other_gender && !sCreatureDisplayInfoStore.LookupEntry(modelInfo.modelid_other_gender))
{
- sLog->outErrorDb("Table `creature_model_info` has not existed alt.gender model (%u) for existed display id (%u).", minfo->modelid_other_gender, minfo->modelid);
- const_cast<CreatureModelInfo*>(minfo)->modelid_other_gender = 0;
+ sLog->outErrorDb("Table `creature_model_info` has not existed alt.gender model (%u) for existed display id (%u).", modelInfo.modelid_other_gender, modelId);
+ modelInfo.modelid_other_gender = 0;
}
- }
- // check if combat_reach is valid
- for (uint32 i = 1; i < sCreatureModelStorage.MaxEntry; ++i)
- {
- CreatureModelInfo const* mInfo = sCreatureModelStorage.LookupEntry<CreatureModelInfo>(i);
- if (!mInfo)
- continue;
-
- if (mInfo->combat_reach < 0.1f)
+ if (modelInfo.combat_reach < 0.1f)
{
- //sLog->outErrorDb("Creature model (Entry: %u) has invalid combat reach (%f), setting it to 0.5", mInfo->modelid, mInfo->combat_reach);
- const_cast<CreatureModelInfo*>(mInfo)->combat_reach = DEFAULT_COMBAT_REACH;
+ modelInfo.combat_reach = DEFAULT_COMBAT_REACH;
}
+
+ CreatureModelStore[modelId] = modelInfo;
+
+ ++count;
}
+ while (result->NextRow());
- sLog->outString(">> Loaded %u creature model based info in %u ms", sCreatureModelStorage.RecordCount, GetMSTimeDiffToNow(oldMSTime));
+ sLog->outString(">> Loaded %u creature model based info in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
sLog->outString();
}
@@ -6141,9 +6161,8 @@ uint32 ObjectMgr::GetTaxiMountDisplayId(uint32 id, uint32 team, bool allowed_alt
}
}
+ // minfo is not actually used but the mount_id was updated
CreatureModelInfo const *minfo = sObjectMgr->GetCreatureModelRandomGender(mount_id);
- if (minfo)
- mount_id = minfo->modelid;
return mount_id;
}
diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h
index e2c3ea88630..94953a68159 100755
--- a/src/server/game/Globals/ObjectMgr.h
+++ b/src/server/game/Globals/ObjectMgr.h
@@ -46,7 +46,6 @@
extern SQLStorage sCreatureStorage;
extern SQLStorage sCreatureDataAddonStorage;
extern SQLStorage sCreatureInfoAddonStorage;
-extern SQLStorage sCreatureModelStorage;
extern SQLStorage sEquipmentStorage;
extern SQLStorage sGOStorage;
extern SQLStorage sPageTextStore;
@@ -652,8 +651,8 @@ class ObjectMgr
ArenaTeamMap::iterator GetArenaTeamMapEnd() { return mArenaTeamMap.end(); }
static CreatureInfo const *GetCreatureTemplate(uint32 id) { return sCreatureStorage.LookupEntry<CreatureInfo>(id); }
- CreatureModelInfo const *GetCreatureModelInfo(uint32 modelid);
- CreatureModelInfo const* GetCreatureModelRandomGender(uint32 display_id);
+ CreatureModelInfo const* GetCreatureModelInfo(uint32 modelId);
+ CreatureModelInfo const* GetCreatureModelRandomGender(uint32 &displayID);
uint32 ChooseDisplayId(uint32 team, const CreatureInfo *cinfo, const CreatureData *data = NULL);
static void ChooseCreatureFlags(const CreatureInfo *cinfo, uint32& npcflag, uint32& unit_flags, uint32& dynamicflags, const CreatureData *data = NULL);
EquipmentInfo const *GetEquipmentInfo(uint32 entry);
@@ -1383,6 +1382,7 @@ class ObjectMgr
MapObjectGuids mMapObjectGuids;
CreatureDataMap mCreatureDataMap;
+ CreatureModelContainer CreatureModelStore;
LinkedRespawnMap mLinkedRespawnMap;
CreatureLocaleMap mCreatureLocaleMap;
GameObjectDataMap mGameObjectDataMap;
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index dfb3c54a254..2b384325426 100755
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -3416,12 +3416,11 @@ void AuraEffect::HandleAuraTransform(AuraApplication const * aurApp, uint8 mode,
if (target->GetTypeId() == TYPEID_PLAYER)
team = target->ToPlayer()->GetTeam();
- uint32 display_id = sObjectMgr->ChooseDisplayId(team,ci);
- CreatureModelInfo const *minfo = sObjectMgr->GetCreatureModelRandomGender(display_id);
- if (minfo)
- display_id = minfo->modelid;
+ uint32 displayID = sObjectMgr->ChooseDisplayId(team,ci);
- target->SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID,display_id);
+ CreatureModelInfo const *minfo = sObjectMgr->GetCreatureModelRandomGender(displayID);
+
+ target->SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID,displayID);
}
}
}
@@ -3878,18 +3877,16 @@ void AuraEffect::HandleAuraMounted(AuraApplication const * aurApp, uint8 mode, b
if (target->GetTypeId() == TYPEID_PLAYER)
team = target->ToPlayer()->GetTeam();
- uint32 display_id = sObjectMgr->ChooseDisplayId(team,ci);
- CreatureModelInfo const *minfo = sObjectMgr->GetCreatureModelRandomGender(display_id);
- if (minfo)
- display_id = minfo->modelid;
+ uint32 displayID = sObjectMgr->ChooseDisplayId(team,ci);
+ CreatureModelInfo const *minfo = sObjectMgr->GetCreatureModelRandomGender(displayID);
//some spell has one aura of mount and one of vehicle
for (uint32 i = 0; i < MAX_SPELL_EFFECTS; ++i)
if (GetSpellProto()->Effect[i] == SPELL_EFFECT_SUMMON
&& GetSpellProto()->EffectMiscValue[i] == GetMiscValue())
- display_id = 0;
+ displayID = 0;
- target->Mount(display_id, ci->VehicleId, GetMiscValue());
+ target->Mount(displayID, ci->VehicleId, GetMiscValue());
}
else
{
@@ -6156,12 +6153,10 @@ void AuraEffect::HandleAuraDummy(AuraApplication const * aurApp, uint8 mode, boo
if (target->GetTypeId() == TYPEID_PLAYER)
team = target->ToPlayer()->GetTeam();
- uint32 display_id = sObjectMgr->ChooseDisplayId(team, creatureInfo);
- CreatureModelInfo const *minfo = sObjectMgr->GetCreatureModelRandomGender(display_id);
- if (minfo)
- display_id = minfo->modelid;
+ uint32 displayID = sObjectMgr->ChooseDisplayId(team, creatureInfo);
+ CreatureModelInfo const *minfo = sObjectMgr->GetCreatureModelRandomGender(displayID);
- target->SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID, display_id);
+ target->SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID, displayID);
}
}
break;
diff --git a/src/server/shared/Database/SQLStorage.cpp b/src/server/shared/Database/SQLStorage.cpp
index c568fe9a74e..4a31859ae8d 100755
--- a/src/server/shared/Database/SQLStorage.cpp
+++ b/src/server/shared/Database/SQLStorage.cpp
@@ -22,7 +22,6 @@
const char CreatureInfosrcfmt[]="iiiiiiiiiisssiiiiiiifffiffiifiiiiiiiiiiffiiiiiiiiiiiiiiiiiiiiiiiisiifffliiiiiiiliiisi";
const char CreatureInfodstfmt[]="iiiiiiiiiisssibbiiiifffiffiifiiiiiiiiiiffiiiiiiiiiiiiiiiiiiiiiiiisiifffliiiiiiiliiiii";
const char CreatureDataAddonInfofmt[]="iiiiiis";
-const char CreatureModelfmt[]="iffbi";
const char CreatureInfoAddonInfofmt[]="iiiiiis";
const char EquipmentInfofmt[]="iiii";
const char GameObjectInfosrcfmt[]="iiissssiifiiiiiiiiiiiiiiiiiiiiiiiiiiiiiissi";
@@ -35,7 +34,6 @@ const char InstanceTemplatedstfmt[]="iiffffib";
SQLStorage sCreatureStorage(CreatureInfosrcfmt, CreatureInfodstfmt, "entry","creature_template");
SQLStorage sCreatureDataAddonStorage(CreatureDataAddonInfofmt,"guid","creature_addon");
-SQLStorage sCreatureModelStorage(CreatureModelfmt,"modelid","creature_model_info");
SQLStorage sCreatureInfoAddonStorage(CreatureInfoAddonInfofmt,"entry","creature_template_addon");
SQLStorage sEquipmentStorage(EquipmentInfofmt,"entry","creature_equip_template");
SQLStorage sGOStorage(GameObjectInfosrcfmt, GameObjectInfodstfmt, "entry","gameobject_template");