From 3e7c72b2538ea87b5b7dee1c5a41d8d2509cc8b6 Mon Sep 17 00:00:00 2001 From: Gurge44 Date: Thu, 2 Jan 2025 16:15:23 +0100 Subject: [PATCH] a few fixes --- .gitignore | 1 - Modules/OptionHolder.cs | 4 +- Modules/Utils.cs | 2 + Roles/Impostor/AntiAdminer.cs | 69 +++++++++++++++++------------------ Roles/Neutral/Maverick.cs | 8 ++++ 5 files changed, 45 insertions(+), 39 deletions(-) diff --git a/.gitignore b/.gitignore index f133fa028..bd97e8675 100644 --- a/.gitignore +++ b/.gitignore @@ -398,6 +398,5 @@ FodyWeavers.xml # JetBrains Rider *.sln.iml /.idea/.idea.EHR/.idea -.idea/ /Resources/Config/URL.txt \ No newline at end of file diff --git a/Modules/OptionHolder.cs b/Modules/OptionHolder.cs index 0d75cd774..ada25bd48 100644 --- a/Modules/OptionHolder.cs +++ b/Modules/OptionHolder.cs @@ -1938,12 +1938,12 @@ public static class Options .SetGameMode(CustomGameMode.Standard) .SetColor(new Color32(255, 44, 44, byte.MaxValue)); - UsePhantomBasis = new BooleanOptionItem(23851, "UsePhantomBasis", false, TabGroup.TaskSettings) + UsePhantomBasis = new BooleanOptionItem(23851, "UsePhantomBasis", true, TabGroup.TaskSettings) .SetGameMode(CustomGameMode.Standard) .SetHeader(true) .SetColor(new Color32(255, 255, 44, byte.MaxValue)); - UsePhantomBasisForNKs = new BooleanOptionItem(23864, "UsePhantomBasisForNKs", false, TabGroup.TaskSettings) + UsePhantomBasisForNKs = new BooleanOptionItem(23864, "UsePhantomBasisForNKs", true, TabGroup.TaskSettings) .SetGameMode(CustomGameMode.Standard) .SetParent(UsePhantomBasis) .SetColor(new Color32(255, 255, 44, byte.MaxValue)); diff --git a/Modules/Utils.cs b/Modules/Utils.cs index ad7cb8987..17940d74b 100644 --- a/Modules/Utils.cs +++ b/Modules/Utils.cs @@ -1673,6 +1673,8 @@ public static class Utils public static void SendMessage(string text, byte sendTo = byte.MaxValue, string title = "", bool noSplit = false) { + if (sendTo.GetPlayer() == null) return; + if (!AmongUsClient.Instance.AmHost) { if (sendTo == PlayerControl.LocalPlayer.PlayerId) diff --git a/Roles/Impostor/AntiAdminer.cs b/Roles/Impostor/AntiAdminer.cs index d48b9c0c7..06515d224 100644 --- a/Roles/Impostor/AntiAdminer.cs +++ b/Roles/Impostor/AntiAdminer.cs @@ -144,6 +144,7 @@ internal class AntiAdminer : RoleBase Count = notify || ExtraAbilityStartTimeStamp > 0 ? 1 : 5; + var oldPlayersNearDevices = PlayersNearDevices.ToDictionary(x => x.Key, x => x.Value); PlayersNearDevices = []; bool Admin = false, Camera = false, DoorLog = false, Vital = false; float usableDistance = DisableDevice.UsableDistance; @@ -159,104 +160,103 @@ internal class AntiAdminer : RoleBase switch (Main.NormalOptions.MapId) { case 0: - if (!Options.DisableSkeldAdmin.GetBool()) + if (!Options.DisableSkeldAdmin.GetBool() && Vector2.Distance(PlayerPos, DisableDevice.DevicePos["SkeldAdmin"]) <= usableDistance) { - Admin |= Vector2.Distance(PlayerPos, DisableDevice.DevicePos["SkeldAdmin"]) <= usableDistance; + Admin = true; AddDeviceUse(pc.PlayerId, Device.Admin); } - if (!Options.DisableSkeldCamera.GetBool()) + if (!Options.DisableSkeldCamera.GetBool() && Vector2.Distance(PlayerPos, DisableDevice.DevicePos["SkeldCamera"]) <= usableDistance) { - Camera |= Vector2.Distance(PlayerPos, DisableDevice.DevicePos["SkeldCamera"]) <= usableDistance; + Camera = true; AddDeviceUse(pc.PlayerId, Device.Camera); } break; case 1: - if (!Options.DisableMiraHQAdmin.GetBool()) + if (!Options.DisableMiraHQAdmin.GetBool() && Vector2.Distance(PlayerPos, DisableDevice.DevicePos["MiraHQAdmin"]) <= usableDistance) { - Admin |= Vector2.Distance(PlayerPos, DisableDevice.DevicePos["MiraHQAdmin"]) <= usableDistance; + Admin = true; AddDeviceUse(pc.PlayerId, Device.Admin); } - if (!Options.DisableMiraHQDoorLog.GetBool()) + if (!Options.DisableMiraHQDoorLog.GetBool() && Vector2.Distance(PlayerPos, DisableDevice.DevicePos["MiraHQDoorLog"]) <= usableDistance) { - DoorLog |= Vector2.Distance(PlayerPos, DisableDevice.DevicePos["MiraHQDoorLog"]) <= usableDistance; + DoorLog = true; AddDeviceUse(pc.PlayerId, Device.DoorLog); } break; case 2: - if (!Options.DisablePolusAdmin.GetBool()) + if (!Options.DisablePolusAdmin.GetBool() && (Vector2.Distance(PlayerPos, DisableDevice.DevicePos["PolusLeftAdmin"]) <= usableDistance || Vector2.Distance(PlayerPos, DisableDevice.DevicePos["PolusRightAdmin"]) <= usableDistance)) { - Admin |= Vector2.Distance(PlayerPos, DisableDevice.DevicePos["PolusLeftAdmin"]) <= usableDistance; - Admin |= Vector2.Distance(PlayerPos, DisableDevice.DevicePos["PolusRightAdmin"]) <= usableDistance; + Admin = true; AddDeviceUse(pc.PlayerId, Device.Admin); } - if (!Options.DisablePolusCamera.GetBool()) + if (!Options.DisablePolusCamera.GetBool() && Vector2.Distance(PlayerPos, DisableDevice.DevicePos["PolusCamera"]) <= usableDistance) { - Camera |= Vector2.Distance(PlayerPos, DisableDevice.DevicePos["PolusCamera"]) <= usableDistance; + Camera = true; AddDeviceUse(pc.PlayerId, Device.Camera); } - if (!Options.DisablePolusVital.GetBool()) + if (!Options.DisablePolusVital.GetBool() && Vector2.Distance(PlayerPos, DisableDevice.DevicePos["PolusVital"]) <= usableDistance) { - Vital |= Vector2.Distance(PlayerPos, DisableDevice.DevicePos["PolusVital"]) <= usableDistance; + Vital = true; AddDeviceUse(pc.PlayerId, Device.Vitals); } break; case 3: - if (!Options.DisableSkeldAdmin.GetBool()) + if (!Options.DisableSkeldAdmin.GetBool() && Vector2.Distance(PlayerPos, DisableDevice.DevicePos["DleksAdmin"]) <= usableDistance) { - Admin |= Vector2.Distance(PlayerPos, DisableDevice.DevicePos["DleksAdmin"]) <= usableDistance; + Admin = true; AddDeviceUse(pc.PlayerId, Device.Admin); } - if (!Options.DisableSkeldCamera.GetBool()) + if (!Options.DisableSkeldCamera.GetBool() && Vector2.Distance(PlayerPos, DisableDevice.DevicePos["DleksCamera"]) <= usableDistance) { - Camera |= Vector2.Distance(PlayerPos, DisableDevice.DevicePos["DleksCamera"]) <= usableDistance; + Camera = true; AddDeviceUse(pc.PlayerId, Device.Camera); } break; case 4: - if (!Options.DisableAirshipCockpitAdmin.GetBool()) + if (!Options.DisableAirshipCockpitAdmin.GetBool() && Vector2.Distance(PlayerPos, DisableDevice.DevicePos["AirshipCockpitAdmin"]) <= usableDistance) { - Admin |= Vector2.Distance(PlayerPos, DisableDevice.DevicePos["AirshipCockpitAdmin"]) <= usableDistance; + Admin = true; AddDeviceUse(pc.PlayerId, Device.Admin); } - if (!Options.DisableAirshipRecordsAdmin.GetBool()) + if (!Options.DisableAirshipRecordsAdmin.GetBool() && Vector2.Distance(PlayerPos, DisableDevice.DevicePos["AirshipRecordsAdmin"]) <= usableDistance) { - Admin |= Vector2.Distance(PlayerPos, DisableDevice.DevicePos["AirshipRecordsAdmin"]) <= usableDistance; + Admin = true; AddDeviceUse(pc.PlayerId, Device.Admin); } - if (!Options.DisableAirshipCamera.GetBool()) + if (!Options.DisableAirshipCamera.GetBool() && Vector2.Distance(PlayerPos, DisableDevice.DevicePos["AirshipCamera"]) <= usableDistance) { - Camera |= Vector2.Distance(PlayerPos, DisableDevice.DevicePos["AirshipCamera"]) <= usableDistance; + Camera = true; AddDeviceUse(pc.PlayerId, Device.Camera); } - if (!Options.DisableAirshipVital.GetBool()) + if (!Options.DisableAirshipVital.GetBool() && Vector2.Distance(PlayerPos, DisableDevice.DevicePos["AirshipVital"]) <= usableDistance) { - Vital |= Vector2.Distance(PlayerPos, DisableDevice.DevicePos["AirshipVital"]) <= usableDistance; + Vital = true; AddDeviceUse(pc.PlayerId, Device.Vitals); } break; case 5: - if (!Options.DisableFungleCamera.GetBool()) + if (!Options.DisableFungleCamera.GetBool() && Vector2.Distance(PlayerPos, DisableDevice.DevicePos["FungleCamera"]) <= usableDistance) { - Camera |= Vector2.Distance(PlayerPos, DisableDevice.DevicePos["FungleCamera"]) <= usableDistance; + Camera = true; AddDeviceUse(pc.PlayerId, Device.Camera); } - if (!Options.DisableFungleVital.GetBool()) + if (!Options.DisableFungleVital.GetBool() && Vector2.Distance(PlayerPos, DisableDevice.DevicePos["FungleVital"]) <= usableDistance) { - Vital |= Vector2.Distance(PlayerPos, DisableDevice.DevicePos["FungleVital"]) <= usableDistance; + Vital = true; AddDeviceUse(pc.PlayerId, Device.Vitals); } @@ -281,6 +281,8 @@ internal class AntiAdminer : RoleBase IsCameraWatch = Camera; } + if (IsMonitor) notify |= oldPlayersNearDevices.Count != PlayersNearDevices.Count || oldPlayersNearDevices.Any(x => !PlayersNearDevices.TryGetValue(x.Key, out var c) || !x.Value.SetEquals(c)); + if (notify || change) Utils.NotifyRoles(SpecifySeer: player, SpecifyTarget: player); return; @@ -317,9 +319,4 @@ internal class AntiAdminer : RoleBase return aa == null ? string.Empty : $"<#ffff00>\u26a0 {Delay.GetInt() - (Utils.TimeStamp - aa.ExtraAbilityStartTimeStamp):N0}"; } - - public override bool CanUseVent(PlayerControl pc, int ventId) - { - return !IsMonitor || pc.GetClosestVent()?.Id == ventId; - } } \ No newline at end of file diff --git a/Roles/Neutral/Maverick.cs b/Roles/Neutral/Maverick.cs index 3f23f9022..5394cda8d 100644 --- a/Roles/Neutral/Maverick.cs +++ b/Roles/Neutral/Maverick.cs @@ -1,4 +1,6 @@ using AmongUs.GameOptions; +using EHR.Modules; +using Hazel; using UnityEngine; using static EHR.Options; @@ -86,5 +88,11 @@ public class Maverick : RoleBase public override void OnMurder(PlayerControl killer, PlayerControl target) { NumOfKills++; + Utils.SendRPC(CustomRPC.SyncRoleData, MaverickId, NumOfKills); + } + + public void ReceiveRPC(MessageReader reader) + { + NumOfKills = reader.ReadPackedInt32(); } } \ No newline at end of file