From 85937eb0dd5d7ddcc4dcf67d4d4cf22c9563a2ea Mon Sep 17 00:00:00 2001 From: Gurge44 Date: Sat, 23 May 2026 13:29:00 +0200 Subject: [PATCH] fix stalker --- CHANGELOG.md | 1 + Roles/Standard/Neutral/Killing/Stalker.cs | 52 +++++++++-------------- 2 files changed, 20 insertions(+), 33 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 930c786c7..a24f68a6c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,6 +37,7 @@ Alright, let's get into it: - Fixed lovers chat not clearing on meeting call if lovers died during the round - Fixed some neutral benigns being uncategorized - Fixed Venerer showing the player's name while camouflaged +- Fixed Stalker ## Changes & Improvements - Improved compatibility with LevelImposter diff --git a/Roles/Standard/Neutral/Killing/Stalker.cs b/Roles/Standard/Neutral/Killing/Stalker.cs index 414b43a25..fd1a4ee45 100644 --- a/Roles/Standard/Neutral/Killing/Stalker.cs +++ b/Roles/Standard/Neutral/Killing/Stalker.cs @@ -73,24 +73,14 @@ public class Stalker : RoleBase dh.IsWinKill = IsKillerKill; } - private void DRpcSetKillCount(PlayerControl player, CustomRpcSender sender = null) + private void DRpcSetKillCount(PlayerControl player) { if (!IsEnable || !Utils.DoRPC || !AmongUsClient.Instance.AmHost) return; - if (sender == null) - { - MessageWriter writer = AmongUsClient.Instance.StartRpcImmediately(PlayerControl.LocalPlayer.NetId, (byte)CustomRPC.SetStalkerKillCount, SendOption.Reliable); - writer.Write(player.PlayerId); - writer.Write(IsWinKill); - AmongUsClient.Instance.FinishRpcImmediately(writer); - } - else - { - sender.AutoStartRpc(PlayerControl.LocalPlayer.NetId, (byte)CustomRPC.SetStalkerKillCount); - sender.Write(player.PlayerId); - sender.Write(IsWinKill); - sender.EndRpc(); - } + MessageWriter writer = AmongUsClient.Instance.StartRpcImmediately(PlayerControl.LocalPlayer.NetId, (byte)CustomRPC.SetStalkerKillCount, SendOption.Reliable); + writer.Write(player.PlayerId); + writer.Write(IsWinKill); + AmongUsClient.Instance.FinishRpcImmediately(writer); } public override void SetKillCooldown(byte id) @@ -121,24 +111,20 @@ public class Stalker : RoleBase if (succeeded && SnatchesWin.GetBool()) IsWinKill = true; - var sender = CustomRpcSender.Create("Stalker.OnCheckMurder", SendOption.Reliable); - DRpcSetKillCount(killer, sender); - sender.AutoStartRpc(ShipStatus.Instance.NetId, RpcCalls.UpdateSystem, killer.OwnerId); - sender.Write((byte)SystemTypes.Electrical); - sender.WriteNetObject(killer); - sender.EndRpc(); - - foreach (PlayerControl target in Main.EnumeratePlayerControls()) - { - if (target.PlayerId == killer.PlayerId || target.Data.Disconnected) continue; - - sender.AutoStartRpc(ShipStatus.Instance.NetId, RpcCalls.UpdateSystem, target.OwnerId); - sender.Write((byte)SystemTypes.Electrical); - sender.WriteNetObject(target); - sender.EndRpc(); - } - - sender.SendMessage(); + DRpcSetKillCount(killer); return true; } + + public override void OnMurder(PlayerControl killer, PlayerControl target) + { + byte num = 4; + + for (var index = 0; index < 5; ++index) + { + if (BoolRange.Next()) + num |= (byte)(1 << index); + } + + ShipStatus.Instance.RpcUpdateSystem(SystemTypes.Electrical, (byte)(num | 128U)); + } } \ No newline at end of file