From 0e0e74ce64419c2332af8eec1a7c31c6edeb73ad Mon Sep 17 00:00:00 2001 From: Liza Carvelli Date: Fri, 2 Aug 2024 13:47:00 +0200 Subject: [PATCH] Don't return completed main scenario quest --- Questionable/GameFunctions.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Questionable/GameFunctions.cs b/Questionable/GameFunctions.cs index 76b03cfa..ee975acc 100644 --- a/Questionable/GameFunctions.cs +++ b/Questionable/GameFunctions.cs @@ -149,10 +149,7 @@ internal sealed unsafe class GameFunctions // always prioritize accepting MSQ quests, to make sure we don't turn in one MSQ quest and then go off to do // side quests until the end of time. var msqQuest = GetMainScenarioQuest(questManager); - if (msqQuest.CurrentQuest != 0 && - _questRegistry.IsKnownQuest(msqQuest.CurrentQuest) && - IsReadyToAcceptQuest(msqQuest.CurrentQuest) && - !questManager->IsQuestAccepted(msqQuest.CurrentQuest)) + if (msqQuest.CurrentQuest != 0 && _questRegistry.IsKnownQuest(msqQuest.CurrentQuest)) return msqQuest; // Use the quests in the same order as they're shown in the to-do list, e.g. if the MSQ is the first item, @@ -224,6 +221,11 @@ internal sealed unsafe class GameFunctions if (questManager->IsQuestAccepted(currentQuest) && questManager->GetQuestById(currentQuest)->IsHidden) return default; + // it can sometimes happen (although this isn't reliably reproducible) that the quest returned here + // is one you've just completed. + if (!IsReadyToAcceptQuest(currentQuest)) + return default; + // if we're not at a high enough level to continue, we also ignore it var currentLevel = _clientState.LocalPlayer?.Level ?? 0; if (currentLevel != 0 &&