diff --git a/Helpers/Debugger.cs b/Helpers/Debugger.cs index b2f5e73..cc91ce8 100644 --- a/Helpers/Debugger.cs +++ b/Helpers/Debugger.cs @@ -1,5 +1,6 @@  using BepInEx; +using BetterAmongUs.Managers; using BetterAmongUs.Modules; namespace BetterAmongUs; diff --git a/Helpers/PlayerControlHelper.cs b/Helpers/PlayerControlHelper.cs index 8b1c60c..618a258 100644 --- a/Helpers/PlayerControlHelper.cs +++ b/Helpers/PlayerControlHelper.cs @@ -218,7 +218,7 @@ static class PlayerControlHelper return string.Empty; } // Check if player is Shapeshifting - public static bool IsInShapeshift(this PlayerControl player) => player != null && (player.shapeshiftTargetPlayerId > -1 || player.shapeshifting); + public static bool IsInShapeshift(this PlayerControl player) => player != null && (player.shapeshiftTargetPlayerId > -1 || player.shapeshifting) && !player.waitingForShapeshiftResponse; // Check if player is in vanish as Phantom public static bool IsInVanish(this PlayerControl player) { diff --git a/Items/OptionItems/BetterOptionCheckboxItem.cs b/Items/OptionItems/BetterOptionCheckboxItem.cs index c2eeea4..3d13499 100644 --- a/Items/OptionItems/BetterOptionCheckboxItem.cs +++ b/Items/OptionItems/BetterOptionCheckboxItem.cs @@ -1,4 +1,4 @@ -using BetterAmongUs.Modules; +using BetterAmongUs.Managers; using UnityEngine; namespace BetterAmongUs.Items.OptionItems; diff --git a/Items/OptionItems/BetterOptionFloatItem.cs b/Items/OptionItems/BetterOptionFloatItem.cs index 5f2c121..1f6b996 100644 --- a/Items/OptionItems/BetterOptionFloatItem.cs +++ b/Items/OptionItems/BetterOptionFloatItem.cs @@ -1,4 +1,4 @@ -using BetterAmongUs.Modules; +using BetterAmongUs.Managers; using UnityEngine; namespace BetterAmongUs.Items.OptionItems; diff --git a/Items/OptionItems/BetterOptionIntItem.cs b/Items/OptionItems/BetterOptionIntItem.cs index b9819a6..95cc5b8 100644 --- a/Items/OptionItems/BetterOptionIntItem.cs +++ b/Items/OptionItems/BetterOptionIntItem.cs @@ -1,4 +1,4 @@ -using BetterAmongUs.Modules; +using BetterAmongUs.Managers; using UnityEngine; namespace BetterAmongUs.Items.OptionItems; diff --git a/Items/OptionItems/BetterOptionStringItem.cs b/Items/OptionItems/BetterOptionStringItem.cs index c38084a..99ebf04 100644 --- a/Items/OptionItems/BetterOptionStringItem.cs +++ b/Items/OptionItems/BetterOptionStringItem.cs @@ -1,4 +1,4 @@ -using BetterAmongUs.Modules; +using BetterAmongUs.Managers; using UnityEngine; namespace BetterAmongUs.Items.OptionItems; diff --git a/Modules/BetterDataManager.cs b/Managers/BetterDataManager.cs similarity index 99% rename from Modules/BetterDataManager.cs rename to Managers/BetterDataManager.cs index c3ab46f..4c234ed 100644 --- a/Modules/BetterDataManager.cs +++ b/Managers/BetterDataManager.cs @@ -1,6 +1,7 @@ -using System.Text.Json; +using BetterAmongUs.Modules; +using System.Text.Json; -namespace BetterAmongUs.Modules; +namespace BetterAmongUs.Managers; class BetterDataManager { diff --git a/Modules/BetterHostManager.cs b/Managers/BetterHostManager.cs similarity index 96% rename from Modules/BetterHostManager.cs rename to Managers/BetterHostManager.cs index 9c0c341..3b9e450 100644 --- a/Modules/BetterHostManager.cs +++ b/Managers/BetterHostManager.cs @@ -1,312 +1,313 @@ -using AmongUs.GameOptions; -using BetterAmongUs.Helpers; -using Hazel; -using InnerNet; -using System.Text; -using UnityEngine; - -namespace BetterAmongUs.Modules; - -class BetterHostManager -{ - private static readonly List VentStuck = []; - - public static void PlayerUpdate(PlayerControl player) - { - // Lock up player vent button if it's invalid vent - if (!VentStuck.Contains(player) && player.inVent && !player.Is(RoleTypes.Engineer) && !player.IsImpostorTeam()) - { - player.MyPhysics.RpcEnterVent(player.GetPlayerVentId()); - player.MyPhysics.RpcBootFromVent(player.GetPlayerVentId()); - VentStuck.Add(player); - } - } - - public static bool CheckRange(Vector2 pos1, Vector2 pos2, float range) => Vector2.Distance(pos1, pos2) <= range; - - public static bool CheckRPCAsHost(PlayerControl player, byte callId, MessageReader reader, ref bool canceled) - { - if (player == null || !GameState.IsHost) return true; - - bool shouldReturn = false; - - switch (callId) - { - case (byte)RpcCalls.CheckProtect: - { - PlayerControl target = reader.ReadNetObject(); - if (target != null) - { - if (player.Is(RoleTypes.GuardianAngel) - && !player.IsAlive() - && !player.IsImpostorTeam() - && CheckRange(player.GetCustomPosition(), target.GetCustomPosition(), 3f)) - { - if (target.IsAlive()) - { - player.RpcProtectPlayer(target, player.Data.DefaultOutfit.ColorId); - break; - } - } - } - - canceled = true; - } - break; - - case (byte)RpcCalls.CheckMurder: - { - PlayerControl target = reader.ReadNetObject(); - - if (target != null) - { - if (player.IsAlive() - && player.IsImpostorTeam() - && !player.inMovingPlat - && !player.IsInVent() - && !player.IsInVanish() - && !player.shapeshifting - && !player.onLadder - && !player.MyPhysics.Animations.IsPlayingAnyLadderAnimation() - && CheckRange(player.GetCustomPosition(), target.GetCustomPosition(), 3f)) - { - if (target.IsAlive() - && !target.IsImpostorTeam() - && !target.inMovingPlat - && !target.IsInVent() - && !target.onLadder - && !target.MyPhysics.Animations.IsPlayingAnyLadderAnimation()) - { - player.RpcMurderPlayer(target, true); - break; - } - } - } - - canceled = true; - } - break; - - case (byte)RpcCalls.CheckShapeshift: - { - PlayerControl target = reader.ReadNetObject(); - bool flag = reader.ReadBoolean(); - - if (target != null) - { - if (player.Is(RoleTypes.Shapeshifter) - && player.IsAlive() - && player.IsImpostorTeam() - && !player.inMovingPlat - && !player.shapeshifting - && !player.onLadder - && !player.MyPhysics.Animations.IsPlayingAnyLadderAnimation()) - { - if (!target.IsInVent() && !GameState.IsMeeting && !GameState.IsExilling && flag == false) - { - break; - } - - player.RpcShapeshift(target, !target.IsInVent() && !GameState.IsMeeting && !GameState.IsExilling); - break; - } - } - - canceled = true; - } - break; - - case (byte)RpcCalls.CheckVanish: - { - if (player.Is(RoleTypes.Phantom) - && player.IsAlive() - && player.IsImpostorTeam() - && !player.IsInVent() - && !player.inMovingPlat - && !player.onLadder - && !player.MyPhysics.Animations.IsPlayingAnyLadderAnimation()) - { - - if (AmongUsClient.Instance.AmClient) - { - player.SetRoleInvisibility(true, true, true); - } - player.RpcVanish(); - - break; - } - - canceled = true; - } - break; - - case (byte)RpcCalls.CheckAppear: - { - bool flag = reader.ReadBoolean(); - - if (player.Is(RoleTypes.Phantom) - && player.IsAlive() && player.IsImpostorTeam() - && !player.inMovingPlat - && !player.onLadder - && !player.MyPhysics.Animations.IsPlayingAnyLadderAnimation()) - { - if (!player.IsInVent() && flag == false) - { - break; - } - - if (AmongUsClient.Instance.AmClient) - { - player.SetRoleInvisibility(false, !player.IsInVent(), true); - } - player.RpcAppear(!player.IsInVent()); - - break; - } - - canceled = true; - } - break; - - case (byte)RpcCalls.CompleteTask: - { - _ = new LateTask(() => - { - RPC.SyncAllNames(force: true); - }, 1f, shoudLog: false); - - shouldReturn = true; - } - break; - - default: - shouldReturn = true; - break; - } - - - return shouldReturn; - } - - // Set player names for better host - public static void SetPlayersInfoAsHost(PlayerControl player, bool forMeeting = false, bool force = false, bool IsBetterHost = true) - { - if (player == null) return; - - if (!Main.BetterHost.Value || forMeeting) - { - if (player.Data.PlayerName != player.CurrentOutfit.PlayerName && !player.IsInShapeshift() || force) - { - player.RpcSetName(player.Data.PlayerName); - Logger.LogPrivate($"Reset {player.Data.PlayerName} name", "RPC"); - } - return; - } - - if (!IsBetterHost && !force) return; - - foreach (PlayerControl target in Main.AllPlayerControls) - { - if (target == null || target.IsLocalPlayer()) continue; - - string NewName = !player.IsInShapeshift() ? player.Data.PlayerName : GameData.Instance.AllPlayers.ToArray().First(data => data.PlayerId == player.shapeshiftTargetPlayerId).PlayerName; - - StringBuilder sbTopTag = new StringBuilder(); - - if (!player.BetterData().IsBetterUser) - { - if (GameState.IsLobby) - { - NewName = player.Data.PlayerName; - - if (player.IsHost()) - NewName = player.GetPlayerNameAndColor(); - - if (player.IsDev()) - sbTopTag.Append("(Dev)+++"); - - if (player.IsLocalPlayer()) - sbTopTag.Append($"Better Host+++"); - else if (player.BetterData().IsBetterUser) - sbTopTag.Append("Better User+++"); - } - else if (GameState.IsInGamePlay && !GameState.IsHideNSeek) - { - string Role = $"{player.GetRoleName()}"; - if (!player.IsImpostorTeam() && player.myTasks.Count > 0) - { - Role += $" ({player.Data.Tasks.ToArray().Where(task => task.Complete).Count()}/{player.Data.Tasks.Count})"; - } - if (player.IsImpostorTeam() is false || target.IsImpostorTeam() is false) - { - if (target.IsAlive() && player != target) - { - Role = ""; - } - } - - sbTopTag.Append($"{Role}+++"); - } - else if (GameState.IsInGamePlay) - { - if (player == target) - { - if (player.IsImpostorTeam()) - { - sbTopTag.Append($"Seeker+++"); - } - else - { - sbTopTag.Append($"Hider+++"); - } - } - } - - // Put +++ at the end of each tag - static StringBuilder FormatInfo(StringBuilder source) - { - var sb = new StringBuilder(); - if (source.Length > 0) - { - string text = source.ToString(); - string[] parts = text.Split("+++"); - for (int i = 0; i < parts.Length; i++) - { - if (!string.IsNullOrEmpty(Utils.RemoveHtmlText(parts[i]))) - { - sb.Append(parts[i]); - if (i != parts.Length - 2) - { - sb.Append(" - "); - } - } - } - } - - return sb; - } - - sbTopTag = FormatInfo(sbTopTag); - - if (sbTopTag.Length > 0) - NewName = $"{sbTopTag}\n{NewName}"; - else - NewName = $"{NewName}"; - - // Don't send rpc if name is the same! - if (player.BetterData().LastNameSetFor.TryGetValue(target.PlayerId, out var lastName)) - { - if (lastName == NewName || !force) - { - return; - } - } - - player.BetterData().LastNameSetFor[target.PlayerId] = NewName; - } - - player.RpcSetNamePrivate(NewName, target); - Logger.LogPrivate($"Set {player.Data.PlayerName} name to {NewName.Replace("\n", "-")} for {target.Data.PlayerName}", "RPC"); - } - } -} +using AmongUs.GameOptions; +using BetterAmongUs.Helpers; +using BetterAmongUs.Modules; +using Hazel; +using InnerNet; +using System.Text; +using UnityEngine; + +namespace BetterAmongUs.Managers; + +class BetterHostManager +{ + private static readonly List VentStuck = []; + + public static void PlayerUpdate(PlayerControl player) + { + // Lock up player vent button if it's invalid vent + if (!VentStuck.Contains(player) && player.inVent && !player.Is(RoleTypes.Engineer) && !player.IsImpostorTeam()) + { + player.MyPhysics.RpcEnterVent(player.GetPlayerVentId()); + player.MyPhysics.RpcBootFromVent(player.GetPlayerVentId()); + VentStuck.Add(player); + } + } + + public static bool CheckRange(Vector2 pos1, Vector2 pos2, float range) => Vector2.Distance(pos1, pos2) <= range; + + public static bool CheckRPCAsHost(PlayerControl player, byte callId, MessageReader reader, ref bool canceled) + { + if (player == null || !GameState.IsHost) return true; + + bool shouldReturn = false; + + switch (callId) + { + case (byte)RpcCalls.CheckProtect: + { + PlayerControl target = reader.ReadNetObject(); + if (target != null) + { + if (player.Is(RoleTypes.GuardianAngel) + && !player.IsAlive() + && !player.IsImpostorTeam() + && CheckRange(player.GetCustomPosition(), target.GetCustomPosition(), 3f)) + { + if (target.IsAlive()) + { + player.RpcProtectPlayer(target, player.Data.DefaultOutfit.ColorId); + break; + } + } + } + + canceled = true; + } + break; + + case (byte)RpcCalls.CheckMurder: + { + PlayerControl target = reader.ReadNetObject(); + + if (target != null) + { + if (player.IsAlive() + && player.IsImpostorTeam() + && !player.inMovingPlat + && !player.IsInVent() + && !player.IsInVanish() + && !player.shapeshifting + && !player.onLadder + && !player.MyPhysics.Animations.IsPlayingAnyLadderAnimation() + && CheckRange(player.GetCustomPosition(), target.GetCustomPosition(), 3f)) + { + if (target.IsAlive() + && !target.IsImpostorTeam() + && !target.inMovingPlat + && !target.IsInVent() + && !target.onLadder + && !target.MyPhysics.Animations.IsPlayingAnyLadderAnimation()) + { + player.RpcMurderPlayer(target, true); + break; + } + } + } + + canceled = true; + } + break; + + case (byte)RpcCalls.CheckShapeshift: + { + PlayerControl target = reader.ReadNetObject(); + bool flag = reader.ReadBoolean(); + + if (target != null) + { + if (player.Is(RoleTypes.Shapeshifter) + && player.IsAlive() + && player.IsImpostorTeam() + && !player.inMovingPlat + && !player.shapeshifting + && !player.onLadder + && !player.MyPhysics.Animations.IsPlayingAnyLadderAnimation()) + { + if (!target.IsInVent() && !GameState.IsMeeting && !GameState.IsExilling && flag == false) + { + break; + } + + player.RpcShapeshift(target, !target.IsInVent() && !GameState.IsMeeting && !GameState.IsExilling); + break; + } + } + + canceled = true; + } + break; + + case (byte)RpcCalls.CheckVanish: + { + if (player.Is(RoleTypes.Phantom) + && player.IsAlive() + && player.IsImpostorTeam() + && !player.IsInVent() + && !player.inMovingPlat + && !player.onLadder + && !player.MyPhysics.Animations.IsPlayingAnyLadderAnimation()) + { + + if (AmongUsClient.Instance.AmClient) + { + player.SetRoleInvisibility(true, true, true); + } + player.RpcVanish(); + + break; + } + + canceled = true; + } + break; + + case (byte)RpcCalls.CheckAppear: + { + bool flag = reader.ReadBoolean(); + + if (player.Is(RoleTypes.Phantom) + && player.IsAlive() && player.IsImpostorTeam() + && !player.inMovingPlat + && !player.onLadder + && !player.MyPhysics.Animations.IsPlayingAnyLadderAnimation()) + { + if (!player.IsInVent() && flag == false) + { + break; + } + + if (AmongUsClient.Instance.AmClient) + { + player.SetRoleInvisibility(false, !player.IsInVent(), true); + } + player.RpcAppear(!player.IsInVent()); + + break; + } + + canceled = true; + } + break; + + case (byte)RpcCalls.CompleteTask: + { + _ = new LateTask(() => + { + RPC.SyncAllNames(force: true); + }, 1f, shoudLog: false); + + shouldReturn = true; + } + break; + + default: + shouldReturn = true; + break; + } + + + return shouldReturn; + } + + // Set player names for better host + public static void SetPlayersInfoAsHost(PlayerControl player, bool forMeeting = false, bool force = false, bool IsBetterHost = true) + { + if (player == null) return; + + if (!Main.BetterHost.Value || forMeeting) + { + if (player.Data.PlayerName != player.CurrentOutfit.PlayerName && !player.IsInShapeshift() || force) + { + player.RpcSetName(player.Data.PlayerName); + Logger.LogPrivate($"Reset {player.Data.PlayerName} name", "RPC"); + } + return; + } + + if (!IsBetterHost && !force) return; + + foreach (PlayerControl target in Main.AllPlayerControls) + { + if (target == null || target.IsLocalPlayer()) continue; + + string NewName = !player.IsInShapeshift() ? player.Data.PlayerName : Utils.PlayerDataFromPlayerId(player.shapeshiftTargetPlayerId).PlayerName; + + StringBuilder sbTopTag = new StringBuilder(); + + if (!player.BetterData().IsBetterUser) + { + if (GameState.IsLobby) + { + NewName = player.Data.PlayerName; + + if (player.IsHost()) + NewName = player.GetPlayerNameAndColor(); + + if (player.IsDev()) + sbTopTag.Append("(Dev)+++"); + + if (player.IsLocalPlayer()) + sbTopTag.Append($"Better Host+++"); + else if (player.BetterData().IsBetterUser) + sbTopTag.Append("Better User+++"); + } + else if (GameState.IsInGamePlay && !GameState.IsHideNSeek) + { + string Role = $"{player.GetRoleName()}"; + if (!player.IsImpostorTeam() && player.myTasks.Count > 0) + { + Role += $" ({player.Data.Tasks.ToArray().Where(task => task.Complete).Count()}/{player.Data.Tasks.Count})"; + } + if (player.IsImpostorTeam() is false || target.IsImpostorTeam() is false) + { + if (target.IsAlive() && player != target) + { + Role = ""; + } + } + + sbTopTag.Append($"{Role}+++"); + } + else if (GameState.IsInGamePlay) + { + if (player == target) + { + if (player.IsImpostorTeam()) + { + sbTopTag.Append($"Seeker+++"); + } + else + { + sbTopTag.Append($"Hider+++"); + } + } + } + + // Put +++ at the end of each tag + static StringBuilder FormatInfo(StringBuilder source) + { + var sb = new StringBuilder(); + if (source.Length > 0) + { + string text = source.ToString(); + string[] parts = text.Split("+++"); + for (int i = 0; i < parts.Length; i++) + { + if (!string.IsNullOrEmpty(Utils.RemoveHtmlText(parts[i]))) + { + sb.Append(parts[i]); + if (i != parts.Length - 2) + { + sb.Append(" - "); + } + } + } + } + + return sb; + } + + sbTopTag = FormatInfo(sbTopTag); + + if (sbTopTag.Length > 0) + NewName = $"{sbTopTag}\n{NewName}"; + else + NewName = $"{NewName}"; + + // Don't send rpc if name is the same! + if (player.BetterData().LastNameSetFor.TryGetValue(target.PlayerId, out var lastName)) + { + if (lastName == NewName || !force) + { + return; + } + } + + player.BetterData().LastNameSetFor[target.PlayerId] = NewName; + } + + player.RpcSetNamePrivate(NewName, target); + Logger.LogPrivate($"Set {player.Data.PlayerName} name to {NewName.Replace("\n", "-")} for {target.Data.PlayerName}", "RPC"); + } + } +} diff --git a/Modules/BetterNotificationManager.cs b/Managers/BetterNotificationManager.cs similarity index 98% rename from Modules/BetterNotificationManager.cs rename to Managers/BetterNotificationManager.cs index 3d60b91..b61475e 100644 --- a/Modules/BetterNotificationManager.cs +++ b/Managers/BetterNotificationManager.cs @@ -1,10 +1,11 @@ using BetterAmongUs.Helpers; +using BetterAmongUs.Modules; using BetterAmongUs.Patches; using Cpp2IL.Core.Extensions; using TMPro; using UnityEngine; -namespace BetterAmongUs.Modules; +namespace BetterAmongUs.Managers; class BetterNotificationManager { diff --git a/Modules/AntiCheat.cs b/Modules/AntiCheat.cs index 7cba625..7503e01 100644 --- a/Modules/AntiCheat.cs +++ b/Modules/AntiCheat.cs @@ -1,5 +1,6 @@ using AmongUs.GameOptions; using BetterAmongUs.Helpers; +using BetterAmongUs.Managers; using BetterAmongUs.Patches; using HarmonyLib; using Hazel; diff --git a/Modules/DebugMenu.cs b/Modules/DebugMenu.cs index 5bd3e4a..26d07b9 100644 --- a/Modules/DebugMenu.cs +++ b/Modules/DebugMenu.cs @@ -1,4 +1,5 @@ -using BetterAmongUs.Resources; +using BetterAmongUs.Managers; +using BetterAmongUs.Resources; using Il2CppInterop.Runtime.Attributes; using UnityEngine; diff --git a/Modules/RPC.cs b/Modules/RPC.cs index b3d6624..ab1e9fb 100644 --- a/Modules/RPC.cs +++ b/Modules/RPC.cs @@ -1,4 +1,5 @@ using BetterAmongUs.Helpers; +using BetterAmongUs.Managers; using BetterAmongUs.Patches; using HarmonyLib; using Hazel; diff --git a/Patches/ClientOptionsPatch.cs b/Patches/ClientOptionsPatch.cs index d7f95d6..ce0539c 100644 --- a/Patches/ClientOptionsPatch.cs +++ b/Patches/ClientOptionsPatch.cs @@ -1,5 +1,6 @@ using BepInEx; using BetterAmongUs.Helpers; +using BetterAmongUs.Managers; using BetterAmongUs.Modules; using HarmonyLib; using UnityEngine; diff --git a/Patches/ClientPatch.cs b/Patches/ClientPatch.cs index e399e8f..2dd4420 100644 --- a/Patches/ClientPatch.cs +++ b/Patches/ClientPatch.cs @@ -1,4 +1,5 @@ using BetterAmongUs.Helpers; +using BetterAmongUs.Managers; using BetterAmongUs.Modules; using HarmonyLib; using InnerNet; diff --git a/Patches/CommandsPatch.cs b/Patches/CommandsPatch.cs index 2ec7403..8832803 100644 --- a/Patches/CommandsPatch.cs +++ b/Patches/CommandsPatch.cs @@ -1,6 +1,7 @@ using AmongUs.Data; using AmongUs.GameOptions; using BetterAmongUs.Helpers; +using BetterAmongUs.Managers; using BetterAmongUs.Modules; using HarmonyLib; using Hazel; diff --git a/Patches/HudManagerPatch.cs b/Patches/HudManagerPatch.cs index f287648..276bb51 100644 --- a/Patches/HudManagerPatch.cs +++ b/Patches/HudManagerPatch.cs @@ -1,4 +1,5 @@ using BetterAmongUs.Helpers; +using BetterAmongUs.Managers; using BetterAmongUs.Modules; using HarmonyLib; using TMPro; diff --git a/Patches/ModManagerPatch.cs b/Patches/ModManagerPatch.cs index 8aff226..6ccd337 100644 --- a/Patches/ModManagerPatch.cs +++ b/Patches/ModManagerPatch.cs @@ -1,4 +1,5 @@ using BetterAmongUs.Helpers; +using BetterAmongUs.Managers; using BetterAmongUs.Modules; using HarmonyLib; using UnityEngine; diff --git a/Patches/PlayerControlPatch.cs b/Patches/PlayerControlPatch.cs index b5bfaef..3a523c7 100644 --- a/Patches/PlayerControlPatch.cs +++ b/Patches/PlayerControlPatch.cs @@ -1,6 +1,7 @@ using AmongUs.Data; using AmongUs.GameOptions; using BetterAmongUs.Helpers; +using BetterAmongUs.Managers; using BetterAmongUs.Modules; using HarmonyLib; using Il2CppSystem.Linq; @@ -133,7 +134,7 @@ class PlayerControlPatch { player.RawSetName(newName); } - else if (!player.shapeshifting) + else { var targetData = Utils.PlayerDataFromPlayerId(player.shapeshiftTargetPlayerId); if (targetData != null) player.RawSetName(targetData.BetterData().RealName); @@ -313,6 +314,11 @@ class PlayerControlPatch { if (target == null) return; + if (GameState.IsHost) + { + RPC.SyncAllNames(); + } + if (__instance != target) Logger.LogPrivate($"{__instance.Data.PlayerName} Has Shapeshifted into {target.Data.PlayerName}, did animate: {animate}", "EventLog"); else diff --git a/Patches/PlayerJoinAndLeftPatch.cs b/Patches/PlayerJoinAndLeftPatch.cs index b469e66..868d27f 100644 --- a/Patches/PlayerJoinAndLeftPatch.cs +++ b/Patches/PlayerJoinAndLeftPatch.cs @@ -1,4 +1,5 @@ using BetterAmongUs.Helpers; +using BetterAmongUs.Managers; using BetterAmongUs.Modules; using BetterAmongUs.Patches; using HarmonyLib; diff --git a/main.cs b/main.cs index 086bf99..5cfddcf 100644 --- a/main.cs +++ b/main.cs @@ -3,6 +3,7 @@ using BepInEx.Configuration; using BepInEx.Logging; using BepInEx.Unity.IL2CPP; using BetterAmongUs.Helpers; +using BetterAmongUs.Managers; using BetterAmongUs.Modules; using BetterAmongUs.Patches; using HarmonyLib;