]> git.deb.at Git - rhonda/impostor.git/commitdiff
Add broadcast
authorNiko233 <139348239+NikoCat233@users.noreply.github.com>
Sun, 21 Apr 2024 06:48:54 +0000 (14:48 +0800)
committerNiko233 <139348239+NikoCat233@users.noreply.github.com>
Sun, 21 Apr 2024 06:48:54 +0000 (14:48 +0800)
src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs

index 34263178d8f53b0f99fe2af48850dbeec0cedeb5..68cbbb1173b8be40e28095b446711071e31ff4bf 100644 (file)
@@ -118,6 +118,11 @@ namespace Impostor.Server.Net.Inner.Objects
                         return false;
                     }
 
+                    if (!await ValidateBroadcast(call, sender, target))
+                    {
+                        return false;
+                    }
+
                     Rpc00PlayAnimation.Deserialize(reader, out var task);
                     break;
                 }
@@ -129,6 +134,11 @@ namespace Impostor.Server.Net.Inner.Objects
                         return false;
                     }
 
+                    if (!await ValidateBroadcast(call, sender, target))
+                    {
+                        return false;
+                    }
+
                     Rpc01CompleteTask.Deserialize(reader, out var taskId);
                     await HandleCompleteTask(sender, taskId);
                     break;
@@ -263,6 +273,11 @@ namespace Impostor.Server.Net.Inner.Objects
                         return false;
                     }
 
+                    if (!await ValidateBroadcast(call, sender, target))
+                    {
+                        return false;
+                    }
+
                     Rpc11ReportDeadBody.Deserialize(reader, out var targetId);
                     break;
                 }
@@ -274,6 +289,11 @@ namespace Impostor.Server.Net.Inner.Objects
                         return false;
                     }
 
+                    if (!await ValidateBroadcast(call, sender, target))
+                    {
+                        return false;
+                    }
+
                     Rpc12MurderPlayer.Deserialize(reader, Game, out var murdered, out var result);
                     return await HandleMurderPlayer(sender, (InnerPlayerControl?)murdered, result);
                 }
@@ -285,6 +305,11 @@ namespace Impostor.Server.Net.Inner.Objects
                         return false;
                     }
 
+                    if (!await ValidateBroadcast(call, sender, target))
+                    {
+                        return false;
+                    }
+
                     Rpc13SendChat.Deserialize(reader, out var message);
                     return await HandleSendChat(sender, message);
                 }
@@ -296,6 +321,11 @@ namespace Impostor.Server.Net.Inner.Objects
                         return false;
                     }
 
+                    if (!await ValidateBroadcast(call, sender, target))
+                    {
+                        return false;
+                    }
+
                     Rpc14StartMeeting.Deserialize(reader, out var targetId);
                     await HandleStartMeeting(targetId);
                     break;
@@ -308,6 +338,11 @@ namespace Impostor.Server.Net.Inner.Objects
                         return false;
                     }
 
+                    if (!await ValidateBroadcast(call, sender, target))
+                    {
+                        return false;
+                    }
+
                     Rpc15SetScanner.Deserialize(reader, out var on, out var scannerCount);
                     break;
                 }
@@ -319,6 +354,11 @@ namespace Impostor.Server.Net.Inner.Objects
                         return false;
                     }
 
+                    if (!await ValidateBroadcast(call, sender, target))
+                    {
+                        return false;
+                    }
+
                     Rpc16SendChatNote.Deserialize(reader, out var playerId, out var chatNoteType);
                     break;
                 }
@@ -363,6 +403,11 @@ namespace Impostor.Server.Net.Inner.Objects
                         return false;
                     }
 
+                    if (!await ValidateBroadcast(call, sender, target))
+                    {
+                        return false;
+                    }
+
                     // TODO: deserialize and expose the result in an API
                     break;
                 }
@@ -374,6 +419,11 @@ namespace Impostor.Server.Net.Inner.Objects
                         return false;
                     }
 
+                    if (!await ValidateBroadcast(call, sender, target))
+                    {
+                        return false;
+                    }
+
                     Rpc44SetRole.Deserialize(reader, out var role);
                     PlayerInfo.RoleType = role;
 
@@ -392,6 +442,11 @@ namespace Impostor.Server.Net.Inner.Objects
                         return false;
                     }
 
+                    if (!await ValidateBroadcast(call, sender, target))
+                    {
+                        return false;
+                    }
+
                     Rpc45ProtectPlayer.Deserialize(reader, Game, out var protectTarget, out _);
                     return await HandleProtectPlayer(sender, protectTarget);
                 }
@@ -408,6 +463,11 @@ namespace Impostor.Server.Net.Inner.Objects
                         return false;
                     }
 
+                    if (!await ValidateBroadcast(call, sender, target))
+                    {
+                        return false;
+                    }
+
                     Rpc46Shapeshift.Deserialize(reader, Game, out _, out _);
 
                     break;
@@ -425,6 +485,11 @@ namespace Impostor.Server.Net.Inner.Objects
                         return false;
                     }
 
+                    if (!await ValidateBroadcast(call, sender, target))
+                    {
+                        return false;
+                    }
+
                     Rpc47CheckMurder.Deserialize(reader, Game, out var murdered);
                     return await HandleCheckMurder(sender, (InnerPlayerControl?)murdered);
                 }
@@ -441,6 +506,12 @@ namespace Impostor.Server.Net.Inner.Objects
                         return false;
                     }
 
+                    if (!await ValidateBroadcast(call, sender, target))
+                    {
+                        return false;
+                    }
+
+                    // CheckProtect should only be passed to Host
                     Rpc48CheckProtect.Deserialize(reader, Game, out _);
                     break;
                 }
@@ -452,6 +523,11 @@ namespace Impostor.Server.Net.Inner.Objects
                         return false;
                     }
 
+                    if (!await ValidateCmd(call, sender, target))
+                    {
+                        return false;
+                    }
+
                     Rpc51CheckZipline.Deserialize(reader, out var fromTop);
                     break;
                 }
@@ -485,6 +561,11 @@ namespace Impostor.Server.Net.Inner.Objects
                         return false;
                     }
 
+                    if (!await ValidateCmd(call, sender, target))
+                    {
+                        return false;
+                    }
+
                     Rpc54CheckSpore.Deserialize(reader, out var mushroomId);
                     break;
                 }
@@ -496,6 +577,16 @@ namespace Impostor.Server.Net.Inner.Objects
                         return false;
                     }
 
+                    if (!await ValidateRole(call, sender, PlayerInfo, RoleTypes.Shapeshifter))
+                    {
+                        return false;
+                    }
+
+                    if (!await ValidateCmd(call, sender ,target))
+                    {
+                        return false;
+                    }
+
                     Rpc46Shapeshift.Deserialize(reader, Game, out var playerControl, out var shouldAnimate);
                     break;
                 }