1
0

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)

This commit is contained in:
Emagi 2025-04-26 08:14:35 -04:00
parent 73e9e01ae9
commit c861e103d9

View File

@ -6096,7 +6096,8 @@ map<string, int8>* 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;
}