From bbfeff0e5f3c0288d32d980d5c13ab234e94cc8f Mon Sep 17 00:00:00 2001 From: Gurge44 Date: Wed, 28 May 2025 17:14:29 +0200 Subject: [PATCH] more fixes --- Modules/AFKDetector.cs | 2 +- Modules/ExtendedPlayerControl.cs | 3 +-- Patches/ShipStatusPatch.cs | 3 +-- Roles/Crewmate/Enigma.cs | 26 ++++++++------------------ 4 files changed, 11 insertions(+), 23 deletions(-) diff --git a/Modules/AFKDetector.cs b/Modules/AFKDetector.cs index ab616f0ad..1c268965e 100644 --- a/Modules/AFKDetector.cs +++ b/Modules/AFKDetector.cs @@ -44,7 +44,7 @@ public static class AFKDetector { if (!EnableDetector.GetBool() || !GameStates.IsInTask || pc == null || ExemptedPlayers.Contains(pc.PlayerId)) return; - float waitingTime = 10f; + float waitingTime = 15f; if (MeetingStates.FirstMeeting) waitingTime += 5f; if (!pc.IsAlive()) waitingTime += 5f; if (pc.Is(CustomRoles.Truant) && !MeetingStates.FirstMeeting) waitingTime += Options.TruantWaitingTime.GetFloat(); diff --git a/Modules/ExtendedPlayerControl.cs b/Modules/ExtendedPlayerControl.cs index af0f35a92..e3a850bc4 100644 --- a/Modules/ExtendedPlayerControl.cs +++ b/Modules/ExtendedPlayerControl.cs @@ -1002,6 +1002,7 @@ internal static class ExtendedPlayerControl { CheckInvalidMovementPatch.ExemptedPlayers.UnionWith([pc.PlayerId, dummyGhost.PlayerId]); AFKDetector.TempIgnoredPlayers.UnionWith([pc.PlayerId, dummyGhost.PlayerId]); + LateTask.New(() => AFKDetector.TempIgnoredPlayers.ExceptWith([pc.PlayerId, dummyGhost.PlayerId]), 3f, log: false); var murderPos = Pelican.GetBlackRoomPS(); @@ -1050,8 +1051,6 @@ internal static class ExtendedPlayerControl sender.WriteVector2(ghostPos); sender.Write((ushort)(dummyGhost.NetTransform.lastSequenceId + 8)); sender.EndRpc(); - - LateTask.New(() => AFKDetector.TempIgnoredPlayers.ExceptWith([pc.PlayerId, dummyGhost.PlayerId]), 1f, log: false); } sender.SendMessage(); diff --git a/Patches/ShipStatusPatch.cs b/Patches/ShipStatusPatch.cs index 0961b3776..fec6d1265 100644 --- a/Patches/ShipStatusPatch.cs +++ b/Patches/ShipStatusPatch.cs @@ -307,8 +307,7 @@ public static class HauntMenuMinigameSetFilterTextPatch { if (__instance.HauntTarget != null && Options.GhostCanSeeOtherRoles.GetBool() && (!Main.DiedThisRound.Contains(PlayerControl.LocalPlayer.PlayerId) || !Utils.IsRevivingRoleAlive())) { - byte id = __instance.HauntTarget.PlayerId; - __instance.FilterText.text = Utils.GetDisplayRoleName(id) + Utils.GetProgressText(id); + __instance.FilterText.text = __instance.HauntTarget.GetCustomRole().ToColoredString(); return false; } diff --git a/Roles/Crewmate/Enigma.cs b/Roles/Crewmate/Enigma.cs index 8f1430eb6..38d8e50c5 100644 --- a/Roles/Crewmate/Enigma.cs +++ b/Roles/Crewmate/Enigma.cs @@ -135,9 +135,7 @@ public class Enigma : RoleBase } else if (tasksCompleted >= EnigmaClueStage1Tasks.GetInt()) stage = 1; - List clues = EnigmaClues.Where(a => a.ClueStage <= stage && - !ShownClues[playerId].Any(b => b.EnigmaClueType == a.EnigmaClueType && b.ClueStage == a.ClueStage)) - .ToList(); + List clues = EnigmaClues.FindAll(a => a.ClueStage <= stage && !ShownClues[playerId].Any(b => b.EnigmaClueType == a.EnigmaClueType && b.ClueStage == a.ClueStage)); if (clues.Count == 0) continue; @@ -249,7 +247,7 @@ public class Enigma : RoleBase public override string GetMessage(PlayerControl killer, bool showStageClue) { string killerName = killer.GetRealName(); - string letter = killerName[rd.Next(0, killerName.Length - 1)].ToString().ToLower(); + string letter = killerName.Where(char.IsLetter).RandomElement().ToString().ToLower(); switch (ClueStage) { @@ -257,14 +255,10 @@ public class Enigma : RoleBase return GetStage1Clue(killer, letter); case 2: if (showStageClue) GetStage2Clue(letter); - return GetStage1Clue(killer, letter); case 3: if (showStageClue) return GetStage3Clue(killerName, letter); - - if (rd.Next(0, 100) < EnigmaClueStage2Probability.GetInt()) return GetStage2Clue(letter); - - return GetStage1Clue(killer, letter); + return rd.Next(100) < EnigmaClueStage2Probability.GetInt() ? GetStage2Clue(letter) : GetStage1Clue(killer, letter); } return null; @@ -273,7 +267,7 @@ public class Enigma : RoleBase private string GetStage1Clue(PlayerControl killer, string letter) { string randomLetter = GetRandomLetter(killer, letter); - int random = rd.Next(1, 2); + int random = rd.Next(2); return random == 1 ? string.Format(GetString("EnigmaClueName1"), letter, randomLetter) : string.Format(GetString("EnigmaClueName1"), randomLetter, letter); } @@ -282,22 +276,18 @@ public class Enigma : RoleBase return string.Format(GetString("EnigmaClueName2"), letter); } - private string GetStage3Clue(string killerName, string letter) + private static string GetStage3Clue(string killerName, string letter) { var letter2 = string.Empty; string tmpName = killerName.Replace(letter, string.Empty); - if (!string.IsNullOrEmpty(tmpName)) letter2 = tmpName[rd.Next(0, tmpName.Length - 1)].ToString().ToLower(); + if (!string.IsNullOrEmpty(tmpName)) letter2 = tmpName.Where(char.IsLetter).RandomElement().ToString().ToLower(); return string.Format(GetString("EnigmaClueName3"), letter, letter2); } - private string GetRandomLetter(PlayerControl killer, string letter) + private static string GetRandomLetter(PlayerControl killer, string letter) { - PlayerControl[] alivePlayers = Main.AllAlivePlayerControls.Where(a => a.PlayerId != killer.PlayerId).ToArray(); - PlayerControl rndPlayer = alivePlayers[rd.Next(0, alivePlayers.Length - 1)]; - string rndPlayerName = rndPlayer.GetRealName().Replace(letter, ""); - string letter2 = rndPlayerName[rd.Next(0, rndPlayerName.Length - 1)].ToString().ToLower(); - return letter2; + return Main.AllAlivePlayerControls.Without(killer).RandomElement().GetRealName().Replace(letter, "").Where(char.IsLetter).RandomElement().ToString().ToLower(); } }