diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.cpp b/src/server/game/Battlegrounds/BattlegroundMgr.cpp index b6716c248a..af81984453 100644 --- a/src/server/game/Battlegrounds/BattlegroundMgr.cpp +++ b/src/server/game/Battlegrounds/BattlegroundMgr.cpp @@ -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; diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h index af3b738fda..3fc6200178 100644 --- a/src/server/game/DataStores/DBCEnums.h +++ b/src/server/game/DataStores/DBCEnums.h @@ -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, }; diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 1a0988a1cf..a5e1c5f611 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -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(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; diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index b1da88d5c5..9c0714375e 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -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) { diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index bb5a8acf7c..91b449eb15 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -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 }, diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist index 13644915c5..806ddd763f 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -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