[10120] Check expected creature_model_info data for player races

This commit is contained in:
VladimirMangos 2010-06-29 11:53:20 +04:00
parent b8942160be
commit fdcbd7d5f5
2 changed files with 59 additions and 1 deletions

View file

@ -1030,6 +1030,64 @@ void ObjectMgr::LoadCreatureModelInfo()
}
}
// character races expected have model info data in table
for(uint32 race = 1; race < sChrRacesStore.GetNumRows(); ++race)
{
ChrRacesEntry const* raceEntry = sChrRacesStore.LookupEntry(race);
if (!raceEntry)
continue;
if (!((1 << (race-1)) & RACEMASK_ALL_PLAYABLE))
continue;
if (CreatureModelInfo const *minfo = GetCreatureModelInfo(raceEntry->model_f))
{
if (minfo->gender != GENDER_FEMALE)
sLog.outErrorDb("Table `creature_model_info` have wrong gender %u for character race %u female model id %u", minfo->gender, race, raceEntry->model_f);
if (minfo->modelid_other_gender != raceEntry->model_m)
sLog.outErrorDb("Table `creature_model_info` have wrong other gender model id %u for character race %u female model id %u", minfo->modelid_other_gender, race, raceEntry->model_f);
if (minfo->bounding_radius <= 0.0f)
{
sLog.outErrorDb("Table `creature_model_info` have wrong bounding_radius %f for character race %u female model id %u, use %f instead", minfo->bounding_radius, race, raceEntry->model_f, DEFAULT_WORLD_OBJECT_SIZE);
const_cast<CreatureModelInfo*>(minfo)->bounding_radius = DEFAULT_WORLD_OBJECT_SIZE;
}
if (minfo->combat_reach != 1.5f)
{
sLog.outErrorDb("Table `creature_model_info` have wrong combat_reach %f for character race %u female model id %u, expected always 1.5f", minfo->combat_reach, race, raceEntry->model_f);
const_cast<CreatureModelInfo*>(minfo)->combat_reach = 1.5f;
}
}
else
sLog.outErrorDb("Table `creature_model_info` expect have data for character race %u female model id %u", race, raceEntry->model_f);
if (CreatureModelInfo const *minfo = GetCreatureModelInfo(raceEntry->model_m))
{
if (minfo->gender != GENDER_MALE)
sLog.outErrorDb("Table `creature_model_info` have wrong gender %u for character race %u male model id %u", minfo->gender, race, raceEntry->model_m);
if (minfo->modelid_other_gender != raceEntry->model_f)
sLog.outErrorDb("Table `creature_model_info` have wrong other gender model id %u for character race %u male model id %u", minfo->modelid_other_gender, race, raceEntry->model_m);
if (minfo->bounding_radius <= 0.0f)
{
sLog.outErrorDb("Table `creature_model_info` have wrong bounding_radius %f for character race %u male model id %u, use %f instead", minfo->bounding_radius, race, raceEntry->model_f, DEFAULT_WORLD_OBJECT_SIZE);
const_cast<CreatureModelInfo*>(minfo)->bounding_radius = DEFAULT_WORLD_OBJECT_SIZE;
}
if (minfo->combat_reach != 1.5f)
{
sLog.outErrorDb("Table `creature_model_info` have wrong combat_reach %f for character race %u male model id %u, expected always 1.5f", minfo->combat_reach, race, raceEntry->model_m);
const_cast<CreatureModelInfo*>(minfo)->combat_reach = 1.5f;
}
}
else
sLog.outErrorDb("Table `creature_model_info` expect have data for character race %u male model id %u", race, raceEntry->model_m);
}
sLog.outString( ">> Loaded %u creature model based info", sCreatureModelStorage.RecordCount );
sLog.outString();
}