}
Rpc38SetLevel.Deserialize(reader, out var level);
- return true;
+ return await HandleSetLevel(sender, level);
}
case RpcCalls.ReportDeadBody:
return true;
}
+ private async ValueTask<bool> HandleSetLevel(ClientPlayer sender, uint level)
+ {
+ if (Game.GameState == GameStates.Started &&
+ await sender.Client.ReportCheatAsync(RpcCalls.SetLevel, CheatCategory.GameFlow, "Client tried to set level while not in game"))
+ {
+ return false;
+ }
+
+ PlayerInfo.PlayerLevel = level;
+
+ return true;
+ }
+
private async ValueTask<bool> HandleCheckMurder(ClientPlayer sender, InnerPlayerControl? target)
{
if (!PlayerInfo.CanMurder(Game, _dateTimeProvider))