diff --git a/Patches/ChatPatch.cs b/Patches/ChatPatch.cs index 9c12c13..579dfe3 100644 --- a/Patches/ChatPatch.cs +++ b/Patches/ChatPatch.cs @@ -19,6 +19,11 @@ class ChatPatch public static List ChatHistory = []; public static int CurrentHistorySelection = -1; + public static void ClearChat() + { + HudManager.Instance.Chat.chatBubblePool.ReclaimAll(); + } + [HarmonyPatch(typeof(PlayerControl), nameof(PlayerControl.RpcSendChat))] class RpcSendChatPatch { diff --git a/Patches/CommandsPatch.cs b/Patches/CommandsPatch.cs index 3753ba2..d082e54 100644 --- a/Patches/CommandsPatch.cs +++ b/Patches/CommandsPatch.cs @@ -36,9 +36,11 @@ class CommandsPatch return true; } + bool IsOnCooldown = 3f - __instance.timeSinceLastMessage > 0f; + string text = __instance.freeChatField.textArea.text; - if (!text.StartsWith(CommandPrefix) || 3f - __instance.timeSinceLastMessage > 0f) + if (!text.StartsWith(CommandPrefix) || IsOnCooldown) { if (GameState.IsInGame && !GameState.IsLobby && !GameState.IsFreePlay && !GameState.IsMeeting && !GameState.IsExilling && PlayerControl.LocalPlayer.IsAlive()) return false; diff --git a/Patches/MeetingHudPatch.cs b/Patches/MeetingHudPatch.cs index 3e6dd3d..0568219 100644 --- a/Patches/MeetingHudPatch.cs +++ b/Patches/MeetingHudPatch.cs @@ -2,6 +2,7 @@ using AmongUs.GameOptions; using BetterAmongUs.Helpers; using BetterAmongUs.Modules; using BetterAmongUs.Modules.AntiCheat; +using BetterAmongUs.Patches; using HarmonyLib; using System.Text; using TMPro; @@ -220,5 +221,10 @@ class MeetingHudPatch { timeOpen = 0f; Logger.LogHeader("Meeting Has Ended"); + + if (Main.ChatInGameplay.Value && !GameState.IsFreePlay && PlayerControl.LocalPlayer.IsAlive()) + { + ChatPatch.ClearChat(); + } } } \ No newline at end of file