private readonly ILogger<T> _logger;
private readonly string _actionCanceledText;
+ private readonly string _eventCanceledText;
private readonly string _cantExecuteDueToStatusText;
protected MiniTaskController(IChatGui chatGui, ICondition condition, IServiceProvider serviceProvider,
_interruptHandler = interruptHandler;
_condition = condition;
+ _eventCanceledText = dataManager.GetString<LogMessage>(1318, x => x.Text)!;
_actionCanceledText = dataManager.GetString<LogMessage>(1314, x => x.Text)!;
_cantExecuteDueToStatusText = dataManager.GetString<LogMessage>(7728, x => x.Text)!;
_interruptHandler.Interrupted += HandleInterruption;
private void InterruptWithoutCombat()
{
- _logger.LogWarning("Interrupted, attempting to redo previous tasks (not in combat)");
- _taskQueue.InterruptWith([new WaitAtEnd.WaitDelay()]);
+ if (_taskQueue.CurrentTaskExecutor is not SinglePlayerDuty.WaitSinglePlayerDutyExecutor)
+ {
+ _logger.LogWarning("Interrupted, attempting to redo previous tasks (not in combat)");
- LogTasksAfterInterruption();
+ _taskQueue.InterruptWith([new WaitAtEnd.WaitDelay()]);
+ LogTasksAfterInterruption();
+ }
}
private void LogTasksAfterInterruption()
!_condition[ConditionFlag.InFlight] &&
_taskQueue.CurrentTaskExecutor?.ShouldInterruptOnDamage() == true)
InterruptQueueWithCombat();
- else if (GameFunctions.GameStringEquals(_cantExecuteDueToStatusText, message.TextValue))
+ else if (GameFunctions.GameStringEquals(_cantExecuteDueToStatusText, message.TextValue) ||
+ GameFunctions.GameStringEquals(_eventCanceledText, message.TextValue))
InterruptWithoutCombat();
}
}