mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-18 00:18:43 +01:00
Core/ObjectMgr: added some more sanity checks to creature templates
- Extra: throwed semicolons around - Clarified meaning for a vehicleId check (what it said didn't correspond to what was actually checked)
This commit is contained in:
@@ -643,25 +643,25 @@ void ObjectMgr::CheckCreatureTemplate(CreatureTemplate const* cInfo)
|
||||
|
||||
if (cInfo->expansion > difficultyInfo->expansion)
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "Creature (Entry: %u, exp %u) has different `exp` in difficulty %u mode (Entry: %u, exp %u).",
|
||||
TC_LOG_ERROR("sql.sql", "Creature (Entry: %u, exp: %u) has different `exp` in difficulty %u mode (Entry: %u, exp: %u).",
|
||||
cInfo->Entry, cInfo->expansion, diff + 1, cInfo->DifficultyEntry[diff], difficultyInfo->expansion);
|
||||
}
|
||||
|
||||
if (cInfo->minlevel > difficultyInfo->minlevel)
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "Creature (Entry: %u, minlevel %u) has lower `minlevel` in difficulty %u mode (Entry: %u, minlevel %u).",
|
||||
TC_LOG_ERROR("sql.sql", "Creature (Entry: %u, minlevel: %u) has lower `minlevel` in difficulty %u mode (Entry: %u, minlevel: %u).",
|
||||
cInfo->Entry, cInfo->minlevel, diff + 1, cInfo->DifficultyEntry[diff], difficultyInfo->minlevel);
|
||||
}
|
||||
|
||||
if (cInfo->maxlevel > difficultyInfo->maxlevel)
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "Creature (Entry: %u, maxlevel %u) has lower `maxlevel` in difficulty %u mode (Entry: %u, maxlevel %u).",
|
||||
TC_LOG_ERROR("sql.sql", "Creature (Entry: %u, maxlevel: %u) has lower `maxlevel` in difficulty %u mode (Entry: %u, maxlevel: %u).",
|
||||
cInfo->Entry, cInfo->maxlevel, diff + 1, cInfo->DifficultyEntry[diff], difficultyInfo->maxlevel);
|
||||
}
|
||||
|
||||
if (cInfo->faction != difficultyInfo->faction)
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "Creature (Entry: %u, faction %u) has different `faction` in difficulty %u mode (Entry: %u, faction %u).",
|
||||
TC_LOG_ERROR("sql.sql", "Creature (Entry: %u, faction: %u) has different `faction` in difficulty %u mode (Entry: %u, faction: %u).",
|
||||
cInfo->Entry, cInfo->faction, diff + 1, cInfo->DifficultyEntry[diff], difficultyInfo->faction);
|
||||
TC_LOG_ERROR("sql.sql", "Possible FIX: UPDATE `creature_template` SET `faction`=%u WHERE `entry`=%u;",
|
||||
cInfo->faction, cInfo->DifficultyEntry[diff]);
|
||||
@@ -669,25 +669,51 @@ void ObjectMgr::CheckCreatureTemplate(CreatureTemplate const* cInfo)
|
||||
|
||||
if (cInfo->unit_class != difficultyInfo->unit_class)
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "Creature (Entry: %u, class %u) has different `unit_class` in difficulty %u mode (Entry: %u, class %u).",
|
||||
TC_LOG_ERROR("sql.sql", "Creature (Entry: %u, class: %u) has different `unit_class` in difficulty %u mode (Entry: %u, class: %u).",
|
||||
cInfo->Entry, cInfo->unit_class, diff + 1, cInfo->DifficultyEntry[diff], difficultyInfo->unit_class);
|
||||
TC_LOG_ERROR("sql.sql", "Possible FIX: UPDATE `creature_template` SET `unit_class`=%u WHERE `entry`=%u;",
|
||||
cInfo->unit_class, cInfo->DifficultyEntry[diff]);
|
||||
continue;
|
||||
}
|
||||
|
||||
uint32 differenceMask = cInfo->npcflag ^ difficultyInfo->npcflag;
|
||||
if (cInfo->npcflag != difficultyInfo->npcflag)
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "Creature (Entry: %u, `npcflag`: %u) has different `npcflag` in difficulty %u mode (Entry: %u, `npcflag`: %u).",
|
||||
cInfo->Entry, cInfo->npcflag, diff + 1, cInfo->DifficultyEntry[diff], difficultyInfo->npcflag);
|
||||
TC_LOG_ERROR("sql.sql", "Possible FIX: UPDATE `creature_template` SET `npcflag`=%u WHERE `entry`=%u;",
|
||||
cInfo->npcflag, cInfo->DifficultyEntry[diff]);
|
||||
continue;
|
||||
TC_LOG_ERROR("sql.sql", "Possible FIX: UPDATE `creature_template` SET `npcflag`=`npcflag`|%u WHERE `entry`=%u;",
|
||||
differenceMask, cInfo->DifficultyEntry[diff]);
|
||||
}
|
||||
|
||||
if (cInfo->dmgschool != difficultyInfo->dmgschool)
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "Creature (Entry: %u, `dmgschool`: %u) has different `dmgschool` in difficulty %u mode (Entry: %u, `dmgschool`: %u).",
|
||||
cInfo->Entry, cInfo->dmgschool, diff + 1, cInfo->DifficultyEntry[diff], difficultyInfo->dmgschool);
|
||||
TC_LOG_ERROR("sql.sql", "Possible FIX: UPDATE `creature_template` SET `dmgschool`=%u WHERE `entry`=%u;",
|
||||
cInfo->dmgschool, cInfo->DifficultyEntry[diff]);
|
||||
}
|
||||
|
||||
differenceMask = cInfo->unit_flags ^ difficultyInfo->unit_flags;
|
||||
if (cInfo->unit_flags != difficultyInfo->unit_flags)
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "Creature (Entry: %u, `unit_flags`: %u) has different `unit_flags` in difficulty %u mode (Entry: %u, `unit_flags`: %u).",
|
||||
cInfo->Entry, cInfo->unit_flags, diff + 1, cInfo->DifficultyEntry[diff], difficultyInfo->unit_flags);
|
||||
TC_LOG_ERROR("sql.sql", "Possible FIX: UPDATE `creature_template` SET `unit_flags`=`unit_flags`|%u WHERE `entry`=%u;",
|
||||
differenceMask, cInfo->DifficultyEntry[diff]);
|
||||
}
|
||||
|
||||
differenceMask = cInfo->unit_flags2 ^ difficultyInfo->unit_flags2;
|
||||
if (cInfo->unit_flags2 != difficultyInfo->unit_flags2)
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "Creature (Entry: %u, `unit_flags2`: %u) has different `unit_flags2` in difficulty %u mode (Entry: %u, `unit_flags2`: %u).",
|
||||
cInfo->Entry, cInfo->unit_flags2, diff + 1, cInfo->DifficultyEntry[diff], difficultyInfo->unit_flags2);
|
||||
TC_LOG_ERROR("sql.sql", "Possible FIX: UPDATE `creature_template` SET `unit_flags2`=`unit_flags2`|%u WHERE `entry`=%u;",
|
||||
differenceMask, cInfo->DifficultyEntry[diff]);
|
||||
}
|
||||
|
||||
if (cInfo->family != difficultyInfo->family)
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "Creature (Entry: %u, family %u) has different `family` in difficulty %u mode (Entry: %u, family %u).",
|
||||
TC_LOG_ERROR("sql.sql", "Creature (Entry: %u, family: %u) has different `family` in difficulty %u mode (Entry: %u, family: %u).",
|
||||
cInfo->Entry, cInfo->family, diff + 1, cInfo->DifficultyEntry[diff], difficultyInfo->family);
|
||||
TC_LOG_ERROR("sql.sql", "Possible FIX: UPDATE `creature_template` SET `family`=%u WHERE `entry`=%u;",
|
||||
cInfo->family, cInfo->DifficultyEntry[diff]);
|
||||
@@ -728,7 +754,7 @@ void ObjectMgr::CheckCreatureTemplate(CreatureTemplate const* cInfo)
|
||||
|
||||
if (cInfo->type != difficultyInfo->type)
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "Creature (Entry: %u, type %u) has different `type` in difficulty %u mode (Entry: %u, type %u).",
|
||||
TC_LOG_ERROR("sql.sql", "Creature (Entry: %u, type: %u) has different `type` in difficulty %u mode (Entry: %u, type: %u).",
|
||||
cInfo->Entry, cInfo->type, diff + 1, cInfo->DifficultyEntry[diff], difficultyInfo->type);
|
||||
TC_LOG_ERROR("sql.sql", "Possible FIX: UPDATE `creature_template` SET `type`=%u WHERE `entry`=%u;",
|
||||
cInfo->type, cInfo->DifficultyEntry[diff]);
|
||||
@@ -736,10 +762,36 @@ void ObjectMgr::CheckCreatureTemplate(CreatureTemplate const* cInfo)
|
||||
|
||||
if (!cInfo->VehicleId && difficultyInfo->VehicleId)
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "Creature (Entry: %u, VehicleId %u) has different `VehicleId` in difficulty %u mode (Entry: %u, VehicleId %u).",
|
||||
TC_LOG_ERROR("sql.sql", "Non-vehicle Creature (Entry: %u, VehicleId: %u) has `VehicleId` set in difficulty %u mode (Entry: %u, VehicleId: %u).",
|
||||
cInfo->Entry, cInfo->VehicleId, diff + 1, cInfo->DifficultyEntry[diff], difficultyInfo->VehicleId);
|
||||
}
|
||||
|
||||
if (cInfo->RegenHealth != difficultyInfo->RegenHealth)
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "Creature (Entry: %u, RegenHealth: %u) has different `RegenHealth` in difficulty %u mode (Entry: %u, RegenHealth: %u).",
|
||||
cInfo->Entry, cInfo->RegenHealth, diff + 1, cInfo->DifficultyEntry[diff], difficultyInfo->RegenHealth);
|
||||
TC_LOG_ERROR("sql.sql", "Possible FIX: UPDATE `creature_template` SET `RegenHealth`=%u WHERE `entry`=%u;",
|
||||
cInfo->RegenHealth, cInfo->DifficultyEntry[diff]);
|
||||
}
|
||||
|
||||
differenceMask = cInfo->MechanicImmuneMask ^ difficultyInfo->MechanicImmuneMask;
|
||||
if ((difficultyInfo->MechanicImmuneMask & differenceMask) != differenceMask)
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "Creature (Entry: %u, mechanic_immune_mask: %u) has weaker immunities in difficulty %u mode (Entry: %u, mechanic_immune_mask: %u).",
|
||||
cInfo->Entry, cInfo->MechanicImmuneMask, diff + 1, cInfo->DifficultyEntry[diff], difficultyInfo->MechanicImmuneMask);
|
||||
TC_LOG_ERROR("sql.sql", "Possible FIX: UPDATE `creature_template` SET `mechanic_immune_mask`=`mechanic_immune_mask`|%u WHERE `entry`=%u;",
|
||||
differenceMask, cInfo->DifficultyEntry[diff]);
|
||||
}
|
||||
|
||||
differenceMask = cInfo->flags_extra ^ difficultyInfo->flags_extra;
|
||||
if (cInfo->flags_extra != difficultyInfo->flags_extra)
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "Creature (Entry: %u, flags_extra: %u) has different `flags_extra` in difficulty %u mode (Entry: %u, flags_extra: %u).",
|
||||
cInfo->Entry, cInfo->flags_extra, diff + 1, cInfo->DifficultyEntry[diff], difficultyInfo->flags_extra);
|
||||
TC_LOG_ERROR("sql.sql", "Possible FIX: UPDATE `creature_template` SET `flags_extra`=`flags_extra`|%u WHERE `entry`=%u;",
|
||||
differenceMask, cInfo->DifficultyEntry[diff]);
|
||||
}
|
||||
|
||||
if (!difficultyInfo->AIName.empty())
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "Creature (Entry: %u) lists difficulty %u mode entry %u with `AIName` filled in. `AIName` of difficulty 0 mode creature is always used instead.",
|
||||
|
||||
Reference in New Issue
Block a user