"ImpostorGhost": 7,
"Noisemaker": 8,
"Phantom": 9,
- "Tracker": 10
-}
\ No newline at end of file
+ "Tracker": 10,
+ "Detective": 12,
+ "Viper": 18
+}
public class HideNSeekGameOptions : IGameOptions
{
- public const int LatestVersion = 9;
+ public const int LatestVersion = 10;
public HideNSeekGameOptions(byte version = LatestVersion)
{
public class NormalGameOptions : IGameOptions
{
- public const int LatestVersion = 9;
+ public const int LatestVersion = 10;
public NormalGameOptions(byte version = LatestVersion)
{
--- /dev/null
+namespace Impostor.Api.Innersloth.GameOptions.RoleOptions;
+
+public class DetectiveRoleOptions : IRoleOptions
+{
+ public DetectiveRoleOptions(byte version)
+ {
+ Version = version;
+ }
+
+ public byte Version { get; }
+
+ public RoleTypes Type => RoleTypes.Detective;
+
+ public byte DetectiveSuspectLimit { get; set; } = 3;
+
+ public static DetectiveRoleOptions Deserialize(IMessageReader reader, byte version)
+ {
+ var options = new DetectiveRoleOptions(version);
+
+ options.DetectiveSuspectLimit = reader.ReadByte();
+
+ return options;
+ }
+
+ public void Serialize(IMessageWriter writer)
+ {
+ writer.Write((byte)DetectiveSuspectLimit);
+ }
+}
RoleTypes.Noisemaker => NoisemakerRoleOptions.Deserialize(roleOptionsReader, Version),
RoleTypes.Phantom => PhantomRoleOptions.Deserialize(roleOptionsReader, Version),
RoleTypes.Tracker => TrackerRoleOptions.Deserialize(roleOptionsReader, Version),
+ RoleTypes.Detective => DetectiveRoleOptions.Deserialize(roleOptionsReader, Version),
+ RoleTypes.Viper => ViperRoleOptions.Deserialize(roleOptionsReader, Version),
_ => throw new ArgumentOutOfRangeException(nameof(roleType), roleType, null),
};
--- /dev/null
+namespace Impostor.Api.Innersloth.GameOptions.RoleOptions;
+
+public class ViperRoleOptions : IRoleOptions
+{
+ public ViperRoleOptions(byte version)
+ {
+ Version = version;
+ }
+
+ public byte Version { get; }
+
+ public RoleTypes Type => RoleTypes.Viper;
+
+ public byte ViperDissolveTime { get; set; } = 15;
+
+ public static ViperRoleOptions Deserialize(IMessageReader reader, byte version)
+ {
+ var options = new ViperRoleOptions(version);
+
+ options.ViperDissolveTime = reader.ReadByte();
+
+ return options;
+ }
+
+ public void Serialize(IMessageWriter writer)
+ {
+ writer.Write((byte)ViperDissolveTime);
+ }
+}