diff --git a/Questionable/Questionable.Controller/QuestController.cs b/Questionable/Questionable.Controller/QuestController.cs index c903ac6..3eaca69 100644 --- a/Questionable/Questionable.Controller/QuestController.cs +++ b/Questionable/Questionable.Controller/QuestController.cs @@ -513,9 +513,17 @@ internal sealed class QuestController : MiniTaskController } if (_startedQuest != null && !_questFunctions.IsQuestAccepted(_startedQuest.Quest.Id)) { + if (!_startedQuest.Quest.Info.IsRepeatable && !_questFunctions.IsQuestComplete(_startedQuest.Quest.Id) && _questFunctions.IsReadyToAcceptQuest(_startedQuest.Quest.Id)) + { + _logger.LogInformation("Quest {QuestId} is ready to accept but not yet accepted, moving to next quest", _startedQuest.Quest.Id); + SetNextQuest(_startedQuest.Quest); + _startedQuest = null; + return; + } if (_startedQuest.Quest.Info.IsRepeatable) { _logger.LogInformation("Repeatable quest {QuestId} is no longer accepted, clearing started quest", _startedQuest.Quest.Id); + _startedQuest = null; } else if (!_questFunctions.IsQuestComplete(_startedQuest.Quest.Id)) { @@ -608,7 +616,7 @@ internal sealed class QuestController : MiniTaskController if ((object)valueOrDefault2.Item1 != null) { (elementId, b) = valueOrDefault2; - goto IL_0813; + goto IL_08b5; } } Quest quest2 = ManualPriorityQuests.FirstOrDefault((Quest x) => _questFunctions.IsReadyToAcceptQuest(x.Id)); @@ -618,7 +626,7 @@ internal sealed class QuestController : MiniTaskController SetNextQuest(quest2); return; } - goto IL_0813; + goto IL_08b5; } questProgress = _startedQuest; b = _startedQuest.Sequence; @@ -665,8 +673,8 @@ internal sealed class QuestController : MiniTaskController } } } - goto IL_0b43; - IL_0b43: + goto IL_0be5; + IL_0be5: if (questProgress == null) { DebugState = "No quest active"; @@ -725,7 +733,7 @@ internal sealed class QuestController : MiniTaskController DebugState = null; } return; - IL_0813: + IL_08b5: if (elementId == null || elementId.Value == 0) { if (_startedQuest != null) @@ -785,7 +793,7 @@ internal sealed class QuestController : MiniTaskController } questProgress = _startedQuest; } - goto IL_0b43; + goto IL_0be5; } }