Core/Misc: Replace DEFAULT_MAX_LEVEL with GetMaxLevelForExpansion and update MaxPlayerLevel to 90

This commit is contained in:
Meji
2026-03-06 19:15:37 +01:00
parent f64d1eebc9
commit 17d4317883
6 changed files with 13 additions and 17 deletions

View File

@@ -162,7 +162,7 @@ void BattlegroundMgr::BuildBattlegroundStatusHeader(WorldPackets::Battleground::
header->Ticket.Time = joinTime;
header->QueueID.push_back(queueId.GetPacked());
header->RangeMin = 0; // seems to always be 0
header->RangeMax = DEFAULT_MAX_LEVEL; // alwyas max level of current expansion. Might be limited to account
header->RangeMax = GetMaxLevelForExpansion(CURRENT_EXPANSION); // alwyas max level of current expansion. Might be limited to account
header->TeamSize = queueId.TeamSize;
header->InstanceID = 0; // seems to always be 0
header->RegisteredMatch = queueId.Rated;

View File

@@ -41,17 +41,11 @@ struct DBCPosition3D
enum LevelLimit
{
// Client expected level limitation, like as used in DBC item max levels for "until max player level"
// use as default max player level, must be fit max level for used client
// also see MAX_LEVEL and STRONG_MAX_LEVEL define
DEFAULT_MAX_LEVEL = 80,
// client supported max level for player/pets/etc. Avoid overflow or client stability affected.
// also see GT_MAX_LEVEL define
MAX_LEVEL = 123,
// Server side limitation. Base at used code requirements.
// also see MAX_LEVEL and GT_MAX_LEVEL define
// also see MAX_LEVEL
STRONG_MAX_LEVEL = 255,
};

View File

@@ -2408,7 +2408,7 @@ void Player::InitStatsForLevel(bool reapplyMods)
uint8 exp_max_lvl = GetMaxLevelForExpansion(GetSession()->GetExpansion());
uint8 conf_max_lvl = sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL);
if (exp_max_lvl == DEFAULT_MAX_LEVEL || exp_max_lvl >= conf_max_lvl)
if (exp_max_lvl == GetMaxLevelForExpansion(CURRENT_EXPANSION) || exp_max_lvl >= conf_max_lvl)
SetUpdateFieldValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::MaxLevel), conf_max_lvl);
else
SetUpdateFieldValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::MaxLevel), exp_max_lvl);
@@ -10845,7 +10845,7 @@ InventoryResult Player::CanEquipItem(uint8 slot, uint16 &dest, Item* pItem, bool
if (pItem->GetQuality() == ITEM_QUALITY_HEIRLOOM)
requiredLevels = sDB2Manager.GetContentTuningData(pItem->GetScalingContentTuningId(), {}, true);
if (requiredLevels && requiredLevels->MaxLevel < DEFAULT_MAX_LEVEL && requiredLevels->MaxLevel < GetLevel() && !sDB2Manager.GetHeirloomByItemId(pProto->GetId()))
if (requiredLevels && static_cast<uint32>(requiredLevels->MaxLevel) < GetMaxLevelForExpansion(CURRENT_EXPANSION) && requiredLevels->MaxLevel < GetLevel() && !sDB2Manager.GetHeirloomByItemId(pProto->GetId()))
return EQUIP_ERR_NOT_EQUIPPABLE;
uint8 eslot = FindEquipSlot(pItem, slot, swap);
@@ -25601,8 +25601,9 @@ bool Player::GetBGAccessByLevel(BattlegroundTypeId bgTypeId) const
// limit check leel to dbc compatible level range
uint32 level = GetLevel();
if (level > DEFAULT_MAX_LEVEL)
level = DEFAULT_MAX_LEVEL;
uint32 maxLevel = GetMaxLevelForExpansion(CURRENT_EXPANSION);
if (level > maxLevel)
level = maxLevel;
if (level < bg->GetMinLevel() || level > bg->GetMaxLevel())
return false;

View File

@@ -10132,7 +10132,8 @@ void ObjectMgr::LoadCreatureClassLevelStats()
}
while (result->NextRow());
for (uint8 unitLevel = 1; unitLevel <= DEFAULT_MAX_LEVEL + 3; ++unitLevel)
uint32 maxLevel = GetMaxLevelForExpansion(CURRENT_EXPANSION);
for (uint8 unitLevel = 1; unitLevel <= maxLevel + 3; ++unitLevel)
{
for (uint8 unitClass = 1; unitClass <= MAX_UNIT_CLASSES; ++unitClass)
{

View File

@@ -745,7 +745,7 @@ void World::LoadConfigSettings(bool reload)
{ .Name = "CharacterCreating.MinLevelForDemonHunter"sv, .DefaultValue = 0, .Index = CONFIG_CHARACTER_CREATING_MIN_LEVEL_FOR_DEMON_HUNTER },
{ .Name = "CharacterCreating.MinLevelForEvoker"sv, .DefaultValue = 50, .Index = CONFIG_CHARACTER_CREATING_MIN_LEVEL_FOR_EVOKER },
{ .Name = "SkipCinematics"sv, .DefaultValue = 0, .Index = CONFIG_SKIP_CINEMATICS, .Min = 0, .Max = 2 },
{ .Name = "MaxPlayerLevel"sv, .DefaultValue = DEFAULT_MAX_LEVEL, .Index = CONFIG_MAX_PLAYER_LEVEL, .Min = 1, .Max = MAX_LEVEL, .Reloadable = false },
{ .Name = "MaxPlayerLevel"sv, .DefaultValue = GetMaxLevelForExpansion(CURRENT_EXPANSION), .Index = CONFIG_MAX_PLAYER_LEVEL, .Min = 1, .Max = MAX_LEVEL, .Reloadable = false },
{ .Name = "MinDualSpecLevel"sv, .DefaultValue = 40, .Index = CONFIG_MIN_DUALSPEC_LEVEL },
{ .Name = "StartPlayerLevel"sv, .DefaultValue = 1, .Index = CONFIG_START_PLAYER_LEVEL, .Min = 1 },
{ .Name = "StartDeathKnightPlayerLevel"sv, .DefaultValue = 8, .Index = CONFIG_START_DEATH_KNIGHT_PLAYER_LEVEL, .Min = 1 },
@@ -755,7 +755,7 @@ void World::LoadConfigSettings(bool reload)
{ .Name = "Currency.ResetHour"sv, .DefaultValue = 3, .Index = CONFIG_CURRENCY_RESET_HOUR, .Min = 0, .Max = 23 },
{ .Name = "Currency.ResetDay"sv, .DefaultValue = 3, .Index = CONFIG_CURRENCY_RESET_DAY, .Min = 0, .Max = 6 },
{ .Name = "Currency.ResetInterval"sv, .DefaultValue = 7, .Index = CONFIG_CURRENCY_RESET_INTERVAL, .Min = 1 },
{ .Name = "RecruitAFriend.MaxLevel"sv, .DefaultValue = DEFAULT_MAX_LEVEL, .Index = CONFIG_MAX_RECRUIT_A_FRIEND_BONUS_PLAYER_LEVEL, .Min = 1 },
{ .Name = "RecruitAFriend.MaxLevel"sv, .DefaultValue = GetMaxLevelForExpansion(CURRENT_EXPANSION), .Index = CONFIG_MAX_RECRUIT_A_FRIEND_BONUS_PLAYER_LEVEL, .Min = 1 },
{ .Name = "RecruitAFriend.MaxDifference"sv, .DefaultValue = 4, .Index = CONFIG_MAX_RECRUIT_A_FRIEND_BONUS_PLAYER_LEVEL_DIFFERENCE },
{ .Name = "ResetSchedule.WeekDay"sv, .DefaultValue = 2, .Index = CONFIG_RESET_SCHEDULE_WEEK_DAY, .Min = 0, .Max = 6 },
{ .Name = "ResetSchedule.Hour"sv, .DefaultValue = 8, .Index = CONFIG_RESET_SCHEDULE_HOUR, .Min = 0, .Max = 23 },

View File

@@ -898,9 +898,9 @@ SkipCinematics = 0
# Description: Maximum level that can be reached by players.
# Important: Levels beyond 110 are not recommended at all.
# Range: 1-255
# Default: 80
# Default: 90
MaxPlayerLevel = 80
MaxPlayerLevel = 90
#
# MinDualSpecLevel