public void Tick() { if (_coroutine == null) { _coroutine = new Coroutine(() => MainCoroutine()); } ExilePather.Reload(); Events.Tick(); CombatAreaCache.Tick(); _taskManager.Tick(); PluginManager.Tick(); RoutineManager.Tick(); PlayerMoverManager.Tick(); StuckDetection.Tick(); Statistics.Instance.Tick(); // Check to see if the coroutine is finished. If it is, stop the bot. if (_coroutine.IsFinished) { Log.Debug($"The bot coroutine has finished in a state of {_coroutine.Status}"); BotManager.Stop(); return; } try { _coroutine.Resume(); } catch { var c = _coroutine; _coroutine = null; c.Dispose(); throw; } }