From e6d38f4b72a047a052c766fa31f657926af26df0 Mon Sep 17 00:00:00 2001 From: miniduikboot Date: Fri, 12 Nov 2021 22:57:29 +0100 Subject: [PATCH] Allow Engineers to vent --- .../Net/Inner/InnerNetObject.Anticheat.cs | 13 +++++++++++++ .../Inner/Objects/Components/InnerPlayerPhysics.cs | 2 +- .../Net/Inner/Objects/InnerPlayerInfo.cs | 2 ++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/Impostor.Server/Net/Inner/InnerNetObject.Anticheat.cs b/src/Impostor.Server/Net/Inner/InnerNetObject.Anticheat.cs index 28b3457..64a8201 100644 --- a/src/Impostor.Server/Net/Inner/InnerNetObject.Anticheat.cs +++ b/src/Impostor.Server/Net/Inner/InnerNetObject.Anticheat.cs @@ -85,6 +85,19 @@ namespace Impostor.Server.Net.Inner return true; } + protected async ValueTask 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 UnregisteredCall(CheatContext context, IClientPlayer sender) { if (await sender.Client.ReportCheatAsync(context, "Client sent unregistered call")) diff --git a/src/Impostor.Server/Net/Inner/Objects/Components/InnerPlayerPhysics.cs b/src/Impostor.Server/Net/Inner/Objects/Components/InnerPlayerPhysics.cs index b27ee2f..e914d7e 100644 --- a/src/Impostor.Server/Net/Inner/Objects/Components/InnerPlayerPhysics.cs +++ b/src/Impostor.Server/Net/Inner/Objects/Components/InnerPlayerPhysics.cs @@ -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; } diff --git a/src/Impostor.Server/Net/Inner/Objects/InnerPlayerInfo.cs b/src/Impostor.Server/Net/Inner/Objects/InnerPlayerInfo.cs index 7130f4b..287e374 100644 --- a/src/Impostor.Server/Net/Inner/Objects/InnerPlayerInfo.cs +++ b/src/Impostor.Server/Net/Inner/Objects/InnerPlayerInfo.cs @@ -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; } -- 2.39.5