Add SpiritGuide role

This commit is contained in:
miniduikboot committed 2026-10-02 22:13:22 +02:00
1 parent 4f372ecabb
commit 8bbe6be4b0
5 files changed
+35 -4

No files matched your search

@@ -12,5 +12,6 @@
"Tracker": 10,
"Detective": 12,
"Viper": 18,
"Judge": 19
}
"Judge": 19,
"SpiritGuide": 21
}
@@ -2,7 +2,7 @@ namespace Impostor.Api.Innersloth.GameOptions;
public class HideNSeekGameOptions : IGameOptions
{
public const int LatestVersion = 11;
public const int LatestVersion = 12;
public HideNSeekGameOptions(byte version = LatestVersion)
{
@@ -4,7 +4,7 @@ namespace Impostor.Api.Innersloth.GameOptions;
public class NormalGameOptions : IGameOptions
{
public const int LatestVersion = 11;
public const int LatestVersion = 12;
public NormalGameOptions(byte version = LatestVersion)
{
@@ -35,6 +35,7 @@ public class RoleOptionsCollection
RoleTypes.Detective => DetectiveRoleOptions.Deserialize(roleOptionsReader, Version),
RoleTypes.Viper => ViperRoleOptions.Deserialize(roleOptionsReader, Version),
RoleTypes.Judge => JudgeRoleOptions.Deserialize(roleOptionsReader, Version),
RoleTypes.SpiritGuide => SpiritGuideRoleOptions.Deserialize(roleOptionsReader, Version),
_ => throw new ArgumentOutOfRangeException(nameof(roleType), roleType, null),
};
@@ -0,0 +1,29 @@
namespace Impostor.Api.Innersloth.GameOptions.RoleOptions;
public class SpiritGuideRoleOptions : IRoleOptions
{
public SpiritGuideRoleOptions(byte version)
{
Version = version;
}
public byte Version { get; }
public RoleTypes Type => RoleTypes.SpiritGuide;
public float SpiritGuideCooldownSeconds { get; set; } = 20f;
public static SpiritGuideRoleOptions Deserialize(IMessageReader reader, byte version)
{
var options = new SpiritGuideRoleOptions(version);
options.SpiritGuideCooldownSeconds = (int)reader.ReadByte();
return options;
}
public void Serialize(IMessageWriter writer)
{
writer.Write((byte)SpiritGuideCooldownSeconds);
}
}