diff --git a/src/Impostor.Api/Innersloth/Data/enums/RpcCalls.json b/src/Impostor.Api/Innersloth/Data/enums/RpcCalls.json index 33fd15ed..6b0df294 100644 --- a/src/Impostor.Api/Innersloth/Data/enums/RpcCalls.json +++ b/src/Impostor.Api/Innersloth/Data/enums/RpcCalls.json @@ -60,5 +60,6 @@ "StartVanish": 63, "CheckAppear": 64, "StartAppear": 65, - "QueueOverruleVotes": 66 -} \ No newline at end of file + "QueueOverruleVotes": 66, + "SpiritGuideMessage": 67 +} diff --git a/src/Impostor.Api/Net/Messages/Rpcs/Rpc67SpiritGuideMessage.cs b/src/Impostor.Api/Net/Messages/Rpcs/Rpc67SpiritGuideMessage.cs new file mode 100644 index 00000000..3c2e42f3 --- /dev/null +++ b/src/Impostor.Api/Net/Messages/Rpcs/Rpc67SpiritGuideMessage.cs @@ -0,0 +1,17 @@ +using System; + +namespace Impostor.Api.Net.Messages.Rpcs +{ + public static class Rpc67SpiritGuideMessage + { + public static void Serialize(IMessageWriter writer, byte[] images) + { + writer.WriteBytesAndSize(images); + } + + public static void Deserialize(IMessageReader reader, out ReadOnlyMemory images) + { + images = reader.ReadBytesAndSize(); + } + } +} diff --git a/src/Impostor.Server/Net/Inner/Objects/ShipStatus/InnerShipStatus.cs b/src/Impostor.Server/Net/Inner/Objects/ShipStatus/InnerShipStatus.cs index 46d8db3b..7fe06da7 100644 --- a/src/Impostor.Server/Net/Inner/Objects/ShipStatus/InnerShipStatus.cs +++ b/src/Impostor.Server/Net/Inner/Objects/ShipStatus/InnerShipStatus.cs @@ -79,7 +79,7 @@ namespace Impostor.Server.Net.Inner.Objects.ShipStatus case RpcCalls.CloseDoorsOfType: { if (!await ValidateCmd(call, sender, target) || - !await ValidateImpostor(call, sender, sender.Character!.PlayerInfo)) + !await ValidateImpostor(call, sender, sender.Character?.PlayerInfo)) { return false; } @@ -100,6 +100,18 @@ namespace Impostor.Server.Net.Inner.Objects.ShipStatus break; } + case RpcCalls.SpiritGuideMessage: + { + if (!await ValidateTarget(call, sender, target) || + !await ValidateRole(call, sender, sender.Character?.PlayerInfo, RoleTypes.SpiritGuide)) + { + return false; + } + + Rpc67SpiritGuideMessage.Deserialize(reader, out var images); + break; + } + default: return await base.HandleRpcAsync(sender, target, call, reader); }