Core/Creature: Implemented negative levels for creatures having -1 as expansion
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -88,9 +88,9 @@ struct CreatureTemplate
|
||||
std::string SubName;
|
||||
std::string IconName;
|
||||
uint32 GossipMenuId;
|
||||
uint8 minlevel;
|
||||
uint8 maxlevel;
|
||||
uint32 expansion;
|
||||
int16 minlevel;
|
||||
int16 maxlevel;
|
||||
int32 expansion;
|
||||
uint32 expansionUnknown; // either 0 or 3, sent to the client / wdb
|
||||
uint32 faction;
|
||||
uint32 npcflag;
|
||||
|
||||
@@ -482,8 +482,8 @@ void ObjectMgr::LoadCreatureTemplate(Field* fields)
|
||||
creatureTemplate.SubName = fields[12].GetString();
|
||||
creatureTemplate.IconName = fields[13].GetString();
|
||||
creatureTemplate.GossipMenuId = fields[14].GetUInt32();
|
||||
creatureTemplate.minlevel = fields[15].GetUInt8();
|
||||
creatureTemplate.maxlevel = fields[16].GetUInt8();
|
||||
creatureTemplate.minlevel = fields[15].GetInt16();
|
||||
creatureTemplate.maxlevel = fields[16].GetInt16();
|
||||
creatureTemplate.expansion = uint32(fields[17].GetInt16());
|
||||
creatureTemplate.expansionUnknown = uint32(fields[18].GetUInt16());
|
||||
creatureTemplate.faction = uint32(fields[19].GetUInt16());
|
||||
@@ -674,18 +674,6 @@ void ObjectMgr::CheckCreatureTemplate(CreatureTemplate const* cInfo)
|
||||
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).",
|
||||
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).",
|
||||
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).",
|
||||
@@ -983,6 +971,27 @@ void ObjectMgr::CheckCreatureTemplate(CreatureTemplate const* cInfo)
|
||||
const_cast<CreatureTemplate*>(cInfo)->flags_extra &= CREATURE_FLAG_EXTRA_DB_ALLOWED;
|
||||
}
|
||||
|
||||
// -1 is used in the client for auto-updating the levels
|
||||
// having their expansion set to it to the latest one
|
||||
if (cInfo->expansion == -1)
|
||||
{
|
||||
const_cast<CreatureTemplate*>(cInfo)->minlevel = (MAX_LEVEL + cInfo->minlevel);
|
||||
const_cast<CreatureTemplate*>(cInfo)->maxlevel = (MAX_LEVEL + cInfo->maxlevel);
|
||||
const_cast<CreatureTemplate*>(cInfo)->expansion = EXPANSION_WARLORDS_OF_DRAENOR;
|
||||
}
|
||||
|
||||
if (cInfo->minlevel < 1 || cInfo->minlevel > STRONG_MAX_LEVEL)
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "Creature (ID: %u): MinLevel %i is not within [1, 255], value has been set to 1.", cInfo->Entry, cInfo->minlevel);
|
||||
const_cast<CreatureTemplate*>(cInfo)->minlevel = 1;
|
||||
}
|
||||
|
||||
if (cInfo->maxlevel < 1 || cInfo->maxlevel > STRONG_MAX_LEVEL)
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "Creature (ID: %u): MaxLevel %i is not within [1, 255], value has been set to 1.", cInfo->Entry, cInfo->maxlevel);
|
||||
const_cast<CreatureTemplate*>(cInfo)->maxlevel = 1;
|
||||
}
|
||||
|
||||
const_cast<CreatureTemplate*>(cInfo)->ModDamage *= Creature::_GetDamageMod(cInfo->rank);
|
||||
}
|
||||
|
||||
|
||||
@@ -1672,7 +1672,7 @@ void SpellMgr::LoadSpellTargetPositions()
|
||||
|
||||
mSpellTargetPositions.clear(); // need for reload case
|
||||
|
||||
// 0 1 2 3 4 5
|
||||
// 0 1 2 3 4 5
|
||||
QueryResult result = WorldDatabase.Query("SELECT ID, EffectIndex, MapID, PositionX, PositionY, PositionZ FROM spell_target_position");
|
||||
if (!result)
|
||||
{
|
||||
|
||||
@@ -954,7 +954,7 @@ public:
|
||||
|
||||
sObjectMgr->LoadGraveyardZones();
|
||||
|
||||
handler->SendGlobalGMSysMessage("DB table `game_graveyard_zone` reloaded.");
|
||||
handler->SendGlobalGMSysMessage("DB table `graveyard_zone` reloaded.");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -93,7 +93,7 @@ LogsDir = ""
|
||||
# Default: "127.0.0.1;3306;trinity;trinity;auth" - (LoginDatabaseInfo)
|
||||
# "127.0.0.1;3306;trinity;trinity;world" - (WorldDatabaseInfo)
|
||||
# "127.0.0.1;3306;trinity;trinity;characters" - (CharacterDatabaseInfo)
|
||||
# "127.0.0.1;3306;trinity;trinity;hotfixes" - (HotfixDatabaseInfo)
|
||||
# "127.0.0.1;3306;trinity;trinity;hotfixes" - (HotfixDatabaseInfo)
|
||||
|
||||
LoginDatabaseInfo = "127.0.0.1;3306;trinity;trinity;auth"
|
||||
WorldDatabaseInfo = "127.0.0.1;3306;trinity;trinity;world"
|
||||
|
||||
Reference in New Issue
Block a user