--- /dev/null
+namespace Impostor.Api.Net.Messages.Rpcs
+{
+ public static class Rpc53TriggerSpores
+ {
+ public static void Serialize(IMessageWriter writer, int mushroomId)
+ {
+ writer.WritePacked(mushroomId);
+ }
+
+ public static void Deserialize(IMessageReader reader, out int mushroomId)
+ {
+ mushroomId = reader.ReadPackedInt32();
+ }
+ }
+}
--- /dev/null
+namespace Impostor.Api.Net.Messages.Rpcs
+{
+ public static class Rpc54CheckSpore
+ {
+ public static void Serialize(IMessageWriter writer, int mushroomId)
+ {
+ writer.WritePacked(mushroomId);
+ }
+
+ public static void Deserialize(IMessageReader reader, out int mushroomId)
+ {
+ mushroomId = reader.ReadPackedInt32();
+ }
+ }
+}
--- /dev/null
+using Impostor.Api.Games;
+using Impostor.Api.Net.Inner.Objects;
+
+namespace Impostor.Api.Net.Messages.Rpcs
+{
+ public static class Rpc55CheckShapeshift
+ {
+ public static void Serialize(IMessageWriter writer, IInnerPlayerControl playerControl, bool shouldAnimate)
+ {
+ writer.Write(playerControl);
+ writer.Write(shouldAnimate);
+ }
+
+ public static void Deserialize(IMessageReader reader, IGame game, out IInnerPlayerControl? playerControl, out bool shouldAnimate)
+ {
+ playerControl = reader.ReadNetObject<IInnerPlayerControl>(game);
+ shouldAnimate = reader.ReadBoolean();
+ }
+ }
+}
case RpcCalls.Shapeshift:
{
+ if (!await ValidateHost(call, sender))
+ {
+ return false;
+ }
+
if (!await ValidateRole(call, sender, PlayerInfo, RoleTypes.Shapeshifter))
{
return false;
case RpcCalls.CheckMurder:
{
+ if (!await ValidateOwnership(call, sender))
+ {
+ return false;
+ }
+
if (!await ValidateImpostor(call, sender, PlayerInfo))
{
return false;
case RpcCalls.CheckProtect:
{
+ if (!await ValidateOwnership(call, sender))
+ {
+ return false;
+ }
+
if (!await ValidateRole(call, sender, PlayerInfo, RoleTypes.GuardianAngel))
{
return false;
break;
}
+ case RpcCalls.CheckZipline:
+ {
+ if (!await ValidateOwnership(call, sender))
+ {
+ return false;
+ }
+
+ Rpc51CheckZipline.Deserialize(reader, out var fromTop);
+ break;
+ }
+
+ case RpcCalls.UseZipline:
+ {
+ if (!await ValidateHost(call, sender))
+ {
+ return false;
+ }
+
+ Rpc52UseZipline.Deserialize(reader, out var fromTop);
+ break;
+ }
+
+ case RpcCalls.TriggerSpores:
+ {
+ if (!await ValidateHost(call, sender))
+ {
+ return false;
+ }
+
+ Rpc53TriggerSpores.Deserialize(reader, out var mushroomId);
+ break;
+ }
+
+ case RpcCalls.CheckSpore:
+ {
+ if (!await ValidateOwnership(call, sender))
+ {
+ return false;
+ }
+
+ Rpc54CheckSpore.Deserialize(reader, out var mushroomId);
+ break;
+ }
+
+ case RpcCalls.CheckShapeshift:
+ {
+ if (!await ValidateOwnership(call, sender))
+ {
+ return false;
+ }
+
+ Rpc46Shapeshift.Deserialize(reader, Game, out var playerControl, out var shouldAnimate);
+ break;
+ }
+
+ case RpcCalls.RejectShapeshift:
+ {
+ if (!await ValidateHost(call, sender))
+ {
+ return false;
+ }
+
+ Rpc56RejectShapeshift.Deserialize(reader);
+ break;
+ }
+
default:
return await base.HandleRpcAsync(sender, target, call, reader);
}