From c861e103d990da8a756828ef481e9ce7fe351f11 Mon Sep 17 00:00:00 2001 From: Emagi Date: Sat, 26 Apr 2025 08:14:35 -0400 Subject: [PATCH] Fix #8 info struct has a int16 max_level, when set greater than 0 will restrict the max level a player can reach (does not impact already set level or GM commands, lua changelevel, only XP gain for Adventure/Tradeskill level) --- source/WorldServer/Player.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/WorldServer/Player.cpp b/source/WorldServer/Player.cpp index 9bcccb3..99224f0 100644 --- a/source/WorldServer/Player.cpp +++ b/source/WorldServer/Player.cpp @@ -6096,7 +6096,8 @@ map* Player::GetIgnoredPlayers(){ bool Player::CheckLevelStatus(int16 new_level) { int16 LevelCap = rule_manager.GetGlobalRule(R_Player, MaxLevel)->GetInt16(); int16 LevelCapOverrideStatus = rule_manager.GetGlobalRule(R_Player, MaxLevelOverrideStatus)->GetInt16(); - if ( GetClient() && (LevelCap < new_level) && (LevelCapOverrideStatus > GetClient()->GetAdminStatus()) ) + int16 MaxLevelPlayer = GetInfoStruct()->get_max_level(); + if ( GetClient() && (LevelCap < new_level) && (LevelCapOverrideStatus > GetClient()->GetAdminStatus()) && (MaxLevelPlayer < 1 || MaxLevelPlayer < new_level) ) return false; return true; }