Fix Crystal Tower quests ignoring 'NextQuestId'

This commit is contained in:
Liza 2025-02-22 19:52:10 +01:00
parent dcdc288b08
commit 22aa81cf75
Signed by: liza
GPG Key ID: 2C41B84815CF6445
2 changed files with 12 additions and 9 deletions

View 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);

View File

@ -401,14 +401,15 @@ internal sealed unsafe class QuestFunctions
return 1000 * quest.AllSteps().Count(x => x.Step.AetheryteShortcut != null);
}
public List<ElementId> GetPriorityQuests()
public List<ElementId> GetPriorityQuests(bool onlyClassAndRoleQuests = false)
{
List<ElementId> priorityQuests =
[
new QuestId(1157), // Garuda (Hard)
new QuestId(1158), // Titan (Hard)
..QuestData.CrystalTowerQuests
];
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();