diff --git a/src/Impostor.Server/Net/Inner/Objects/InnerPlayerInfo.cs b/src/Impostor.Server/Net/Inner/Objects/InnerPlayerInfo.cs index 412f865a..6361fabe 100644 --- a/src/Impostor.Server/Net/Inner/Objects/InnerPlayerInfo.cs +++ b/src/Impostor.Server/Net/Inner/Objects/InnerPlayerInfo.cs @@ -160,7 +160,10 @@ namespace Impostor.Server.Net.Inner.Objects Disconnected = (flag & 1) != 0; IsDead = (flag & 4) != 0; - RoleType = (RoleTypes)reader.ReadUInt16(); // TODO ignore the RoleType here and only trust the SetRole rpc? + // Ignore the RoleType here and only trust the SetRole RPC, as + // RoleType is not nullable in vanilla, while Impostor checks game + // starts based on assigned roles. + _ = (RoleTypes)reader.ReadUInt16(); if (reader.ReadBoolean()) { diff --git a/src/Impostor.Server/Net/State/Game.Data.cs b/src/Impostor.Server/Net/State/Game.Data.cs index 38ae4b10..f0890a32 100644 --- a/src/Impostor.Server/Net/State/Game.Data.cs +++ b/src/Impostor.Server/Net/State/Game.Data.cs @@ -398,7 +398,7 @@ namespace Impostor.Server.Net.State control.PlayerInfo = playerInfo; // Reset PlayerInfo - playerInfo.RoleType = RoleTypes.Crewmate; + playerInfo.RoleType = null; playerInfo.RoleWhenAlive = null; playerInfo.Tasks.Clear(); playerInfo.IsDead = false;