]> git.deb.at Git - rhonda/impostor.git/commitdiff
Allow Engineers to vent
authorminiduikboot <mini@duikbo.at>
Fri, 12 Nov 2021 21:57:29 +0000 (22:57 +0100)
committerminiduikboot <mini@duikbo.at>
Fri, 12 Nov 2021 21:57:29 +0000 (22:57 +0100)
src/Impostor.Server/Net/Inner/InnerNetObject.Anticheat.cs
src/Impostor.Server/Net/Inner/Objects/Components/InnerPlayerPhysics.cs
src/Impostor.Server/Net/Inner/Objects/InnerPlayerInfo.cs

index 28b3457e47588bc3289099b9d106ffc5f6c8f431..64a82016065c34e291af2db375b449dbd263c300 100644 (file)
@@ -85,6 +85,19 @@ namespace Impostor.Server.Net.Inner
             return true;
         }
 
+        protected async ValueTask<bool> ValidateCanVent(CheatContext context, IClientPlayer sender, InnerPlayerInfo playerInfo, bool value = true)
+        {
+            if (playerInfo.CanVent != value)
+            {
+                if (await sender.Client.ReportCheatAsync(context, "Failed can vent check"))
+                {
+                    return false;
+                }
+            }
+
+            return true;
+        }
+
         protected async ValueTask<bool> UnregisteredCall(CheatContext context, IClientPlayer sender)
         {
             if (await sender.Client.ReportCheatAsync(context, "Client sent unregistered call"))
index b27ee2f48b142842bf2eb39fb6c6b0c9b178584a..e914d7eb3ff225e6125bc694b551068deb8a8d6d 100644 (file)
@@ -47,7 +47,7 @@ namespace Impostor.Server.Net.Inner.Objects.Components
                 case RpcCalls.EnterVent:
                 case RpcCalls.ExitVent:
                 {
-                    if (!await ValidateImpostor(call, sender, _playerControl.PlayerInfo))
+                    if (!await ValidateCanVent(call, sender, _playerControl.PlayerInfo))
                     {
                         return false;
                     }
index 7130f4b3e46e0ca928dfe2b9ae2f547c6d688de9..287e374b060d16b1195e999948104540fd2c5ee5 100644 (file)
@@ -36,6 +36,8 @@ namespace Impostor.Server.Net.Inner.Objects
 
         public bool IsImpostor => RoleType is RoleTypes.Impostor or RoleTypes.Shapeshifter;
 
+        public bool CanVent => RoleType is RoleTypes.Impostor or RoleTypes.Shapeshifter or RoleTypes.Engineer;
+
         public bool IsDead { get; internal set; }
 
         public DeathReason LastDeathReason { get; internal set; }