mirror of
https://github.com/D1GQ/BetterAmongUs.git
synced 2026-10-20 01:46:19 +00:00
54 lines
1.5 KiB
C#
54 lines
1.5 KiB
C#
using BetterAmongUs.Helpers;
|
|
using BetterAmongUs.Items.Attributes;
|
|
using Hazel;
|
|
using InnerNet;
|
|
|
|
namespace BetterAmongUs.Modules.AntiCheat;
|
|
|
|
[RegisterRPCHandler]
|
|
internal sealed class CheckMurderHandler : RPCHandler
|
|
{
|
|
internal override byte CallId => (byte)RpcCalls.CheckMurder;
|
|
|
|
internal override bool BetterHandle(PlayerControl? sender, MessageReader reader)
|
|
{
|
|
PlayerControl target = reader.ReadNetObject<PlayerControl>();
|
|
|
|
if (target != null)
|
|
{
|
|
if (sender.IsAlive()
|
|
&& sender.IsImpostorTeam()
|
|
&& !sender.inMovingPlat
|
|
&& !sender.IsInVent()
|
|
&& !sender.IsInVanish()
|
|
&& !sender.shapeshifting
|
|
&& !sender.onLadder
|
|
&& !sender.MyPhysics.Animations.IsPlayingAnyLadderAnimation()
|
|
&& CheckRange(sender.GetCustomPosition(), target.GetCustomPosition(), 3f))
|
|
{
|
|
if (target.IsAlive()
|
|
&& !target.IsImpostorTeam()
|
|
&& !target.inMovingPlat
|
|
&& !target.IsInVent()
|
|
&& !target.onLadder
|
|
&& !target.MyPhysics.Animations.IsPlayingAnyLadderAnimation())
|
|
{
|
|
sender.RpcMurderPlayer(target, true);
|
|
}
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
internal override bool HandleAntiCheatCancel(PlayerControl? sender, MessageReader reader)
|
|
{
|
|
if (!GameState.IsHost)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
}
|