Set PlayerLevel in PlayerInfo on RPC SetLevel

Previously this used to be done by the host, but this is now the
server's responsibility.
This commit is contained in:
miniduikboot committed 2024-08-20 21:41:38 +02:00
1 parent fc79bd1536
commit 01e9cccdf5
1 file changed
+14 -1
@@ -251,7 +251,7 @@ namespace Impostor.Server.Net.Inner.Objects
}
Rpc38SetLevel.Deserialize(reader, out var level);
return true;
return await HandleSetLevel(sender, level);
}
case RpcCalls.ReportDeadBody:
@@ -834,6 +834,19 @@ namespace Impostor.Server.Net.Inner.Objects
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))