diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsTimer.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsTimer.cs index 05726fffa..47bb7d8ca 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsTimer.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsTimer.cs @@ -59,24 +59,21 @@ namespace Barotrauma public void Update() { - while (timedActions.Count > 0) + List timedActionsToRemove = new List(); + for (int i = 0; i < timedActions.Count; i++) { - if (timedActions == null) - { - throw new Exception($"timedActions was null, how is this possible? On MainThread: {GameMain.MainThread == System.Threading.Thread.CurrentThread}"); - } - TimedAction timedAction = timedActions[0]; if (Time >= timedAction.executionTime) { timedAction.action(); - timedActions.RemoveAt(0); - } - else - { - break; + timedActionsToRemove.Add(timedAction); } } + + foreach (TimedAction timedAction in timedActionsToRemove) + { + timedActions.Remove(timedAction); + } } public void Clear()