private static async Task LeaveArea() { GlobalLog.Error("[HandleBlockingObjectTask] Fail to remove a blocking object. Now requesting a new instance."); EXtensions.AbandonCurrentArea(); if (!await PlayerAction.TpToTown()) { ErrorManager.ReportError(); } }
private static void HandleStuck() { if (StopBotOnStuck) { GlobalLog.Warn("[StuckDetection] StopBotOnStuck is true. Now reseting stuck counters and stopping the bot."); Reset(); BotManager.Stop(); return; } var cache = CombatAreaCache.Current; ++cache.StuckCount; GlobalLog.Error($"[StuckDetection] Stuck incidents in current area: {cache.StuckCount}"); if (cache.StuckCount >= Settings.Instance.MaxStucksPerInstance) { GlobalLog.Error($"[StuckDetection] Too many stuck incidents in current area ({World.CurrentArea.Name}). Now requesting a new instance."); EXtensions.AbandonCurrentArea(); } var err = LokiPoe.EscapeState.LogoutToTitleScreen(); if (err != LokiPoe.EscapeState.LogoutError.None) { GlobalLog.Error($"[StuckDetection] Logout error: \"{err}\"."); //stuck incident was not properly handled if we did not logout --cache.StuckCount; } else { GlobalLog.Info($"[StuckDetection] Triggered event ({cache.StuckCount})"); Triggered?.Invoke(cache.StuckCount); Utility.BroadcastMessage(null, TriggeredMessage); Reset(); } }