Fix Crystal Tower quests ignoring 'NextQuestId'
authorLiza Carvelli <liza@carvel.li>
Sat, 22 Feb 2025 18:52:10 +0000 (19:52 +0100)
committerLiza Carvelli <liza@carvel.li>
Sat, 22 Feb 2025 18:52:10 +0000 (19:52 +0100)
Questionable/Controller/Steps/Common/NextQuest.cs
Questionable/Functions/QuestFunctions.cs

index 3ac7758..8262a9e 100644 (file)
@@ -1,4 +1,6 @@
-using Microsoft.Extensions.Logging;
+using System.Linq;
+using Microsoft.Extensions.Logging;
+using Questionable.Data;
 using Questionable.Functions;
 using Questionable.Model;
 using Questionable.Model.Questing;
@@ -21,7 +23,7 @@ internal static class NextQuest
                 return null;
 
             // probably irrelevant, since pick up is handled elsewhere (and, in particular, checks for aetherytes and stuff)
-            if (questFunctions.GetPriorityQuests().Contains(step.NextQuestId))
+            if (questFunctions.GetPriorityQuests(onlyClassAndRoleQuests: true).Contains(step.NextQuestId))
                 return null;
 
             return new SetQuestTask(step.NextQuestId, quest.Id);
index f0e6d15..6107e25 100644 (file)
@@ -401,14 +401,15 @@ internal sealed unsafe class QuestFunctions
             return 1000 * quest.AllSteps().Count(x => x.Step.AetheryteShortcut != null);
     }
 
-    public List<ElementId> GetPriorityQuests()
-    {
-        List<ElementId> priorityQuests =
-        [
-            new QuestId(1157), // Garuda (Hard)
-            new QuestId(1158), // Titan (Hard)
-            ..QuestData.CrystalTowerQuests
-        ];
+    public List<ElementId> GetPriorityQuests(bool onlyClassAndRoleQuests = false)
+    {
+        List<ElementId> priorityQuests = [];
+        if (!onlyClassAndRoleQuests)
+        {
+            priorityQuests.Add(new QuestId(1157)); // Garuda (Hard)
+            priorityQuests.Add(new QuestId(1158)); // Titan (Hard)
+            priorityQuests.AddRange(QuestData.CrystalTowerQuests);
+        }
 
         EClassJob classJob = (EClassJob?)_clientState.LocalPlayer?.ClassJob.RowId ?? EClassJob.Adventurer;
         uint[] shadowbringersRoleQuestChapters = QuestData.AllRoleQuestChapters.Select(x => x[0]).ToArray();