]> git.deb.at Git - rhonda/impostor.git/commitdiff
Move down target AC check in InnerShipStatus
authorminiduikboot <mini@duikbo.at>
Sat, 4 Jan 2025 12:46:29 +0000 (13:46 +0100)
committerminiduikboot <mini@duikbo.at>
Sun, 26 Jan 2025 16:41:13 +0000 (17:41 +0100)
Mods may send RPC's on a ShipStatus that aren't broadcasts. Previously
Impostor would forbid that, which doesn't make sense to me. By moving
down the check it'll allow mods to broadcast RPC's on ShipStatus.

Reported-By: xtracube
src/Impostor.Server/Net/Inner/Objects/ShipStatus/InnerShipStatus.cs

index c81cd8b715488832a836aebae6bcce0593bc4b76..46d8db3b76a479eddc2cdba154351bdf99428d5f 100644 (file)
@@ -74,16 +74,12 @@ namespace Impostor.Server.Net.Inner.Objects.ShipStatus
 
         public override async ValueTask<bool> HandleRpcAsync(ClientPlayer sender, ClientPlayer? target, RpcCalls call, IMessageReader reader)
         {
-            if (!await ValidateCmd(call, sender, target))
-            {
-                return false;
-            }
-
             switch (call)
             {
                 case RpcCalls.CloseDoorsOfType:
                 {
-                    if (!await ValidateImpostor(call, sender, sender.Character!.PlayerInfo))
+                    if (!await ValidateCmd(call, sender, target) ||
+                        !await ValidateImpostor(call, sender, sender.Character!.PlayerInfo))
                     {
                         return false;
                     }
@@ -94,6 +90,11 @@ namespace Impostor.Server.Net.Inner.Objects.ShipStatus
 
                 case RpcCalls.UpdateSystem:
                 {
+                    if (!await ValidateCmd(call, sender, target))
+                    {
+                        return false;
+                    }
+
                     // TODO: properly deserialize this RPC
                     // Rpc35UpdateSystem.Deserialize(reader, Game, out var systemType, out var playerControl, out var sequenceId, out var state, out var ventId);
                     break;