Add basic implementation of judge overruling

This commit is contained in:
miniduikboot committed 2026-08-30 18:48:37 +02:00
1 parent caab877c80
commit a161aa7045
2 files changed
+32 -2

No files matched your search

@@ -59,5 +59,6 @@
"CheckVanish": 62,
"StartVanish": 63,
"CheckAppear": 64,
"StartAppear": 65
}
"StartAppear": 65,
"QueueOverruleVotes": 66
}
@@ -22,6 +22,8 @@ namespace Impostor.Server.Net.Inner.Objects
{
internal partial class InnerMeetingHud : InnerNetObject
{
private static readonly GameVersion JudgeMinVersion = new GameVersion(2026, 7, 15); // 18.0
private readonly ILogger<InnerMeetingHud> _logger;
private readonly IEventManager _eventManager;
@@ -108,6 +110,17 @@ namespace Impostor.Server.Net.Inner.Objects
}
}
}
if (sender.Client.GameVersion >= JudgeMinVersion)
{
var overruleQueueListLength = reader.ReadPackedInt32();
for (var i = 0; i < overruleQueueListLength; i++)
{
var msg = reader.ReadMessage();
// TODO parse and handle JudgeOverrule
}
}
}
public override async ValueTask<bool> HandleRpcAsync(ClientPlayer sender, ClientPlayer? target, RpcCalls call, IMessageReader reader)
@@ -161,6 +174,22 @@ namespace Impostor.Server.Net.Inner.Objects
break;
}
case RpcCalls.QueueOverruleVotes:
{
if (!await ValidateRole(call, sender, sender.Character!.PlayerInfo, RoleTypes.Judge) ||
!await ValidateTarget(call, sender, target) ||
!await ValidateHost(call, target!))
{
return false;
}
var judgePlayerId = reader.ReadByte();
var targetPlayerId = reader.ReadByte();
var overruleNonce = reader.ReadUInt16();
break;
}
default:
return await base.HandleRpcAsync(sender, target, call, reader);
}