using System.Collections.Generic; using System.Collections.Immutable; using LLib.GameData; using Lumina.Excel.Sheets; using Questionable.Model.Questing; namespace Questionable.Model; internal sealed class SatisfactionSupplyInfo : IQuestInfo { public SatisfactionSupplyInfo(SatisfactionNpc npc) { QuestId = new SatisfactionSupplyNpcId((ushort)npc.RowId); Name = npc.Npc.Value.Singular.ToString(); IssuerDataId = npc.Npc.RowId; Level = npc.LevelUnlock; SortKey = QuestId.Value; Expansion = (EExpansionVersion)npc.QuestRequired.Value.Expansion.RowId; PreviousQuests = [new PreviousQuestInfo(new QuestId((ushort)(npc.QuestRequired.RowId & 0xFFFF)))]; } public ElementId QuestId { get; } public string Name { get; } public uint IssuerDataId { get; } public bool IsRepeatable => true; public ImmutableList PreviousQuests { get; } public EQuestJoin PreviousQuestJoin => EQuestJoin.All; public ushort Level { get; } public EAlliedSociety AlliedSociety => EAlliedSociety.None; public uint? JournalGenre => null; public ushort SortKey { get; } public bool IsMainScenarioQuest => false; public EExpansionVersion Expansion { get; } /// /// We don't have collectables implemented for any other class. /// public IReadOnlyList ClassJobs { get; } = [EClassJob.Miner, EClassJob.Botanist]; }