Ignore NextQuestId for job quests
authorLiza Carvelli <liza@carvel.li>
Sat, 31 Aug 2024 17:41:59 +0000 (19:41 +0200)
committerLiza Carvelli <liza@carvel.li>
Sat, 31 Aug 2024 17:41:59 +0000 (19:41 +0200)
Questionable/Controller/Steps/Common/NextQuest.cs
Questionable/Functions/QuestFunctions.cs

index e7fd2b626576d2f7b3dc8f2299573d9c1b18107d..574c76ae7d4559e54258ef6031dd23e81f653a33 100644 (file)
@@ -20,6 +20,10 @@ internal static class NextQuest
             if (step.NextQuestId == quest.Id)
                 return null;
 
+            // probably irrelevant, since pick up is handled elsewhere (and, in particular, checks for aetherytes and stuff)
+            if (questFunctions.GetPriorityQuests().Contains(step.NextQuestId))
+                return null;
+
             return new SetQuest(step.NextQuestId, quest.Id, questRegistry, questController, questFunctions, loggerFactory.CreateLogger<SetQuest>());
         }
     }
index 4bfdce001bd41ec74c56b2eda444670c80be3233..b36e7c36b05e0aca5bba9ff795ae1bafb86bf063 100644 (file)
@@ -254,7 +254,8 @@ internal sealed unsafe class QuestFunctions
         InventoryManager* inventoryManager = InventoryManager.Instance();
         int gil = inventoryManager->GetItemCountInContainer(1, InventoryType.Currency);
 
-        return GetPriorityQuestsThatCanBeAccepted()
+        return GetPriorityQuests()
+            .Where(IsReadyToAcceptQuest)
             .Where(x =>
             {
                 if (!_questRegistry.TryGetQuest(x, out Quest? quest))
@@ -311,7 +312,7 @@ internal sealed unsafe class QuestFunctions
             return 1000 * quest.AllSteps().Count(x => x.Step.AetheryteShortcut != null);
     }
 
-    private List<ElementId> GetPriorityQuestsThatCanBeAccepted()
+    public List<ElementId> GetPriorityQuests()
     {
         List<ElementId> priorityQuests =
         [
@@ -349,7 +350,6 @@ internal sealed unsafe class QuestFunctions
 
         return priorityQuests
             .Where(_questRegistry.IsKnownQuest)
-            .Where(IsReadyToAcceptQuest)
             .ToList();
     }