From 2a4d088dae9d292fdbafe58798cf7bf7e68eafa4 Mon Sep 17 00:00:00 2001 From: Gurge44 Date: Tue, 11 Nov 2025 16:57:57 +0100 Subject: [PATCH] more optimization --- Patches/CheckGameEndPatch.cs | 5 ----- Roles/Neutral/Arsonist.cs | 6 +++--- Roles/Neutral/Revolutionist.cs | 12 ++++++------ Roles/Neutral/Specter.cs | 2 +- 4 files changed, 10 insertions(+), 15 deletions(-) diff --git a/Patches/CheckGameEndPatch.cs b/Patches/CheckGameEndPatch.cs index 3e4d57653..8d9e69c4e 100644 --- a/Patches/CheckGameEndPatch.cs +++ b/Patches/CheckGameEndPatch.cs @@ -202,11 +202,6 @@ internal static class GameEndChecker ResetAndSetWinner(CustomWinner.Stalker); WinnerIds.Add(pc.PlayerId); break; - case CustomRoles.Specter when pc.GetTaskState().RemainingTasksCount <= 0 && !pc.IsAlive() && Options.PhantomSnatchesWin.GetBool(): - reason = GameOverReason.ImpostorsByKill; - ResetAndSetWinner(CustomWinner.Specter); - WinnerIds.Add(pc.PlayerId); - break; case CustomRoles.Specter when pc.GetTaskState().RemainingTasksCount <= 0 && !pc.IsAlive() && !Options.PhantomSnatchesWin.GetBool(): WinnerIds.Add(pc.PlayerId); AdditionalWinnerTeams.Add(AdditionalWinners.Specter); diff --git a/Roles/Neutral/Arsonist.cs b/Roles/Neutral/Arsonist.cs index 4ed7389fb..47c0be5c7 100644 --- a/Roles/Neutral/Arsonist.cs +++ b/Roles/Neutral/Arsonist.cs @@ -181,9 +181,9 @@ internal class Arsonist : RoleBase { byte playerId = player.PlayerId; - if (GameStates.IsInTask && ArsonistTimer.ContainsKey(playerId)) + if (GameStates.IsInTask && ArsonistTimer.TryGetValue(playerId, out var value)) { - PlayerControl arTarget = ArsonistTimer[playerId].Player; + PlayerControl arTarget = value.Player; if (!player.IsAlive() || Pelican.IsEaten(playerId)) { @@ -193,7 +193,7 @@ internal class Arsonist : RoleBase } else { - float arTime = ArsonistTimer[playerId].Timer; + float arTime = value.Timer; if (!arTarget.IsAlive()) ArsonistTimer.Remove(playerId); diff --git a/Roles/Neutral/Revolutionist.cs b/Roles/Neutral/Revolutionist.cs index f18b43a95..d34e97f92 100644 --- a/Roles/Neutral/Revolutionist.cs +++ b/Roles/Neutral/Revolutionist.cs @@ -140,9 +140,9 @@ internal class Revolutionist : RoleBase { byte playerId = player.PlayerId; - if (GameStates.IsInTask && RevolutionistTimer.ContainsKey(playerId)) + if (GameStates.IsInTask && RevolutionistTimer.TryGetValue(playerId, out var value)) { - PlayerControl rvTarget = RevolutionistTimer[playerId].Player; + PlayerControl rvTarget = value.Player; if (!player.IsAlive() || Pelican.IsEaten(playerId)) { @@ -152,7 +152,7 @@ internal class Revolutionist : RoleBase } else { - float rvTime = RevolutionistTimer[playerId].Timer; + float rvTime = value.Timer; if (!rvTarget.IsAlive()) RevolutionistTimer.Remove(playerId); @@ -195,13 +195,13 @@ internal class Revolutionist : RoleBase if (GameStates.IsInTask && player.IsDrawDone() && player.IsAlive() && !player.Data.IsDead) { - if (RevolutionistStart.ContainsKey(playerId)) + if (RevolutionistStart.TryGetValue(playerId, out var start)) { if (RevolutionistLastTime.ContainsKey(playerId)) { long nowtime = Utils.TimeStamp; RevolutionistLastTime[playerId] = nowtime; - var time = (int)(RevolutionistLastTime[playerId] - RevolutionistStart[playerId]); + var time = (int)(RevolutionistLastTime[playerId] - start); int countdown = RevolutionistVentCountDown.GetInt() - time; RevolutionistCountdown.Clear(); @@ -225,7 +225,7 @@ internal class Revolutionist : RoleBase } else RevolutionistCountdown[playerId] = countdown; } - else RevolutionistLastTime.TryAdd(playerId, RevolutionistStart[playerId]); + else RevolutionistLastTime.TryAdd(playerId, start); } else RevolutionistStart.TryAdd(playerId, Utils.TimeStamp); } diff --git a/Roles/Neutral/Specter.cs b/Roles/Neutral/Specter.cs index 3f0440aa2..ec14c5a33 100644 --- a/Roles/Neutral/Specter.cs +++ b/Roles/Neutral/Specter.cs @@ -28,7 +28,7 @@ internal class Specter : RoleBase public override void OnTaskComplete(PlayerControl pc, int completedTaskCount, int totalTaskCount) { - if (completedTaskCount + 1 >= totalTaskCount) + if (completedTaskCount + 1 >= totalTaskCount && !pc.IsAlive() && PhantomSnatchesWin.GetBool()) { CustomWinnerHolder.ResetAndSetWinner(CustomWinner.Specter); CustomWinnerHolder.WinnerIds.Add(pc.PlayerId);