From 7ae14cf8b8bffaaa8511d7a3e64c010875ed16f8 Mon Sep 17 00:00:00 2001 From: alydev Date: Sat, 20 Dec 2025 04:56:36 +1000 Subject: [PATCH] muffin v7.4.1 --- LLib/LLib.Gear/ExtendedBaseParam.cs | 4 + LLib/LLib.csproj | 12 +- LLib/LLib/QuestDialogueText.cs | 4 + .../AssemblyQuestLoader.cs | 1884 +++++++++++++++++ .../InteractionUiController.cs | 1 - .../Dive.cs | 22 +- .../SinglePlayerDuty.cs | 1 - .../CombatController.cs | 1 - .../Questionable.Controller/CommandHandler.cs | 1 - .../MovementController.cs | 17 +- .../QuestController.cs | 7 +- .../Questionable.Data/ChangelogData.cs | 1325 ++++++------ Questionable/Questionable.Data/JournalData.cs | 43 +- .../Questionable.Functions/ChatFunctions.cs | 2 - .../Questionable.Functions/ExcelFunctions.cs | 2 +- .../Questionable.Functions/GameFunctions.cs | 2 - .../Questionable.Functions/QuestFunctions.cs | 21 +- Questionable/Questionable.Model/ItemReward.cs | 6 +- Questionable/Questionable.Model/QuestInfo.cs | 2 - .../QuestJournalComponent.cs | 12 +- .../CreationUtilsComponent.cs | 1 - .../EventInfoComponent.cs | 7 +- Questionable/Questionable.csproj | 16 +- .../Questionable/QuestionablePlugin.cs | 2 - 24 files changed, 2673 insertions(+), 722 deletions(-) diff --git a/LLib/LLib.Gear/ExtendedBaseParam.cs b/LLib/LLib.Gear/ExtendedBaseParam.cs index 4eb276c..31ecdd8 100644 --- a/LLib/LLib.Gear/ExtendedBaseParam.cs +++ b/LLib/LLib.Gear/ExtendedBaseParam.cs @@ -10,6 +10,10 @@ public readonly struct ExtendedBaseParam : IExcelRow public uint RowId => _003Crow_003EP; + public ExcelPage ExcelPage => _003Cpage_003EP; + + public uint RowOffset => _003Coffset_003EP; + public BaseParam BaseParam => new BaseParam(_003Cpage_003EP, _003Coffset_003EP, _003Crow_003EP); public unsafe Collection EquipSlotCategoryPct => new Collection(_003Cpage_003EP, _003Coffset_003EP, _003Coffset_003EP, (delegate*)(&EquipSlotCategoryPctCtor), 23); diff --git a/LLib/LLib.csproj b/LLib/LLib.csproj index d2d3af0..96585ea 100644 --- a/LLib/LLib.csproj +++ b/LLib/LLib.csproj @@ -14,22 +14,22 @@ - ..\..\..\..\..\ffxiv\alyssile-xivl\addon\Hooks\dev\Dalamud.dll + C:\Users\Aly\AppData\Roaming\XIVLauncher\addon\Hooks\dev\Dalamud.dll - ..\..\..\..\..\ffxiv\alyssile-xivl\addon\Hooks\dev\Lumina.dll + C:\Users\Aly\AppData\Roaming\XIVLauncher\addon\Hooks\dev\Lumina.dll - ..\..\..\..\..\ffxiv\alyssile-xivl\addon\Hooks\dev\FFXIVClientStructs.dll + C:\Users\Aly\AppData\Roaming\XIVLauncher\addon\Hooks\dev\FFXIVClientStructs.dll - ..\..\..\..\..\ffxiv\alyssile-xivl\addon\Hooks\dev\Dalamud.Bindings.ImGui.dll + C:\Users\Aly\AppData\Roaming\XIVLauncher\addon\Hooks\dev\Dalamud.Bindings.ImGui.dll - ..\..\..\..\..\ffxiv\alyssile-xivl\addon\Hooks\dev\Lumina.Excel.dll + C:\Users\Aly\AppData\Roaming\XIVLauncher\addon\Hooks\dev\Lumina.Excel.dll - ..\..\..\..\..\ffxiv\alyssile-xivl\addon\Hooks\dev\InteropGenerator.Runtime.dll + C:\Users\Aly\AppData\Roaming\XIVLauncher\addon\Hooks\dev\InteropGenerator.Runtime.dll \ No newline at end of file diff --git a/LLib/LLib/QuestDialogueText.cs b/LLib/LLib/QuestDialogueText.cs index 95f8b5d..054f28d 100644 --- a/LLib/LLib/QuestDialogueText.cs +++ b/LLib/LLib/QuestDialogueText.cs @@ -8,6 +8,10 @@ public readonly struct QuestDialogueText : IQuestDialogueText, IExcelRow _003Crow_003EP; + public ExcelPage ExcelPage => _003Cpage_003EP; + + public uint RowOffset => _003Coffset_003EP; + public ReadOnlySeString Key => _003Cpage_003EP.ReadString(_003Coffset_003EP, _003Coffset_003EP); public ReadOnlySeString Value => _003Cpage_003EP.ReadString(_003Coffset_003EP + 4, _003Coffset_003EP); diff --git a/QuestPaths/Questionable.QuestPaths/AssemblyQuestLoader.cs b/QuestPaths/Questionable.QuestPaths/AssemblyQuestLoader.cs index a6f5389..82bc855 100644 --- a/QuestPaths/Questionable.QuestPaths/AssemblyQuestLoader.cs +++ b/QuestPaths/Questionable.QuestPaths/AssemblyQuestLoader.cs @@ -473068,5 +473068,1889 @@ public static class AssemblyQuestLoader reference48 = obj39; questRoot9.QuestSequence = list59; AddQuest(questId9, questRoot9); + QuestId questId10 = new QuestId(5426); + QuestRoot questRoot10 = new QuestRoot(); + num = 1; + List list68 = new List(num); + CollectionsMarshal.SetCount(list68, num); + Span span68 = CollectionsMarshal.AsSpan(list68); + index = 0; + span68[index] = "WigglyMuffin"; + questRoot10.Author = list68; + index = 5; + List list69 = new List(index); + CollectionsMarshal.SetCount(list69, index); + Span span69 = CollectionsMarshal.AsSpan(list69); + num = 0; + ref QuestSequence reference49 = ref span69[num]; + QuestSequence obj40 = new QuestSequence + { + Sequence = 0 + }; + num2 = 1; + List list70 = new List(num2); + CollectionsMarshal.SetCount(list70, num2); + Span span70 = CollectionsMarshal.AsSpan(list70); + index2 = 0; + span70[index2] = new QuestStep(EInteractionType.AcceptQuest, 1056011u, new Vector3(-22.568176f, 38.056595f, -389.05933f), 1186) + { + AetheryteShortcut = EAetheryteLocation.SolutionNine, + AethernetShortcut = new AethernetShortcut + { + From = EAetheryteLocation.SolutionNine, + To = EAetheryteLocation.SolutionNineResolution + } + }; + obj40.Steps = list70; + reference49 = obj40; + num++; + ref QuestSequence reference50 = ref span69[num]; + QuestSequence obj41 = new QuestSequence + { + Sequence = 1 + }; + index2 = 2; + List list71 = new List(index2); + CollectionsMarshal.SetCount(list71, index2); + Span span71 = CollectionsMarshal.AsSpan(list71); + num2 = 0; + ref QuestStep reference51 = ref span71[num2]; + QuestStep obj42 = new QuestStep(EInteractionType.Interact, 1048083u, new Vector3(302.05237f, 51.199978f, 205.0354f), 1186) + { + TargetTerritoryId = (ushort)1207, + AetheryteShortcut = EAetheryteLocation.SolutionNine, + AethernetShortcut = new AethernetShortcut + { + From = EAetheryteLocation.SolutionNineResolution, + To = EAetheryteLocation.SolutionNineNeonStein + } + }; + SkipConditions skipConditions = new SkipConditions(); + SkipStepConditions skipStepConditions = new SkipStepConditions(); + index3 = 1; + List list72 = new List(index3); + CollectionsMarshal.SetCount(list72, index3); + Span span72 = CollectionsMarshal.AsSpan(list72); + num3 = 0; + span72[num3] = 1207; + skipStepConditions.InTerritory = list72; + skipConditions.StepIf = skipStepConditions; + SkipAetheryteCondition obj43 = new SkipAetheryteCondition + { + InSameTerritory = true + }; + num3 = 1; + List list73 = new List(num3); + CollectionsMarshal.SetCount(list73, num3); + Span span73 = CollectionsMarshal.AsSpan(list73); + index3 = 0; + span73[index3] = 1207; + obj43.InTerritory = list73; + skipConditions.AetheryteShortcutIf = obj43; + obj42.SkipConditions = skipConditions; + reference51 = obj42; + num2++; + span71[num2] = new QuestStep(EInteractionType.Interact, 1048161u, new Vector3(-5.874817f, -3.6188258E-08f, 6.8512573f), 1207); + obj41.Steps = list71; + reference50 = obj41; + num++; + ref QuestSequence reference52 = ref span69[num]; + QuestSequence obj44 = new QuestSequence + { + Sequence = 2 + }; + num2 = 1; + List list74 = new List(num2); + CollectionsMarshal.SetCount(list74, num2); + Span span74 = CollectionsMarshal.AsSpan(list74); + index2 = 0; + span74[index2] = new QuestStep(EInteractionType.Interact, 1056119u, new Vector3(130.41882f, -16.560858f, 165.85034f), 1185) + { + AetheryteShortcut = EAetheryteLocation.Tuliyollal + }; + obj44.Steps = list74; + reference52 = obj44; + num++; + ref QuestSequence reference53 = ref span69[num]; + QuestSequence obj45 = new QuestSequence + { + Sequence = 3 + }; + index2 = 1; + List list75 = new List(index2); + CollectionsMarshal.SetCount(list75, index2); + Span span75 = CollectionsMarshal.AsSpan(list75); + num2 = 0; + span75[num2] = new QuestStep(EInteractionType.Interact, 2014993u, new Vector3(129.9068f, -16.56085f, 163.5934f), 1185); + obj45.Steps = list75; + reference53 = obj45; + num++; + ref QuestSequence reference54 = ref span69[num]; + QuestSequence obj46 = new QuestSequence + { + Sequence = byte.MaxValue + }; + num2 = 1; + List list76 = new List(num2); + CollectionsMarshal.SetCount(list76, num2); + Span span76 = CollectionsMarshal.AsSpan(list76); + index2 = 0; + span76[index2] = new QuestStep(EInteractionType.CompleteQuest, 1056126u, new Vector3(132.6466f, -15.89986f, 176.01282f), 1185); + obj46.Steps = list76; + reference54 = obj46; + questRoot10.QuestSequence = list69; + AddQuest(questId10, questRoot10); + QuestId questId11 = new QuestId(5427); + QuestRoot questRoot11 = new QuestRoot(); + num = 1; + List list77 = new List(num); + CollectionsMarshal.SetCount(list77, num); + Span span77 = CollectionsMarshal.AsSpan(list77); + index = 0; + span77[index] = "WigglyMuffin"; + questRoot11.Author = list77; + index = 5; + List list78 = new List(index); + CollectionsMarshal.SetCount(list78, index); + Span span78 = CollectionsMarshal.AsSpan(list78); + num = 0; + ref QuestSequence reference55 = ref span78[num]; + QuestSequence obj47 = new QuestSequence + { + Sequence = 0 + }; + index2 = 1; + List list79 = new List(index2); + CollectionsMarshal.SetCount(list79, index2); + Span span79 = CollectionsMarshal.AsSpan(list79); + num2 = 0; + span79[num2] = new QuestStep(EInteractionType.AcceptQuest, 1056126u, new Vector3(132.6466f, -15.89986f, 176.01282f), 1185) + { + AetheryteShortcut = EAetheryteLocation.Tuliyollal + }; + obj47.Steps = list79; + reference55 = obj47; + num++; + ref QuestSequence reference56 = ref span78[num]; + QuestSequence obj48 = new QuestSequence + { + Sequence = 1 + }; + num2 = 1; + List list80 = new List(num2); + CollectionsMarshal.SetCount(list80, num2); + Span span80 = CollectionsMarshal.AsSpan(list80); + index2 = 0; + span80[index2] = new QuestStep(EInteractionType.Interact, 1056131u, new Vector3(14.663879f, -19.587986f, 195.11707f), 1185); + obj48.Steps = list80; + reference56 = obj48; + num++; + ref QuestSequence reference57 = ref span78[num]; + QuestSequence obj49 = new QuestSequence + { + Sequence = 2 + }; + index2 = 1; + List list81 = new List(index2); + CollectionsMarshal.SetCount(list81, index2); + Span span81 = CollectionsMarshal.AsSpan(list81); + num2 = 0; + span81[num2] = new QuestStep(EInteractionType.Interact, 1056136u, new Vector3(6.3324585f, 50.700012f, 725.6428f), 1192) + { + Fly = true, + AetheryteShortcut = EAetheryteLocation.LivingMemoryLeynodeMnemo + }; + obj49.Steps = list81; + reference57 = obj49; + num++; + ref QuestSequence reference58 = ref span78[num]; + QuestSequence obj50 = new QuestSequence + { + Sequence = 3 + }; + num2 = 1; + List list82 = new List(num2); + CollectionsMarshal.SetCount(list82, num2); + Span span82 = CollectionsMarshal.AsSpan(list82); + index2 = 0; + span82[index2] = new QuestStep(EInteractionType.Interact, 1056140u, new Vector3(7.7057495f, 50.700012f, 723.781f), 1192); + obj50.Steps = list82; + reference58 = obj50; + num++; + ref QuestSequence reference59 = ref span78[num]; + QuestSequence obj51 = new QuestSequence + { + Sequence = byte.MaxValue + }; + index2 = 1; + List list83 = new List(index2); + CollectionsMarshal.SetCount(list83, index2); + Span span83 = CollectionsMarshal.AsSpan(list83); + num2 = 0; + span83[num2] = new QuestStep(EInteractionType.CompleteQuest, 1056141u, new Vector3(-7.5532227f, -0.003462526f, -7.950012f), 1334); + obj51.Steps = list83; + reference59 = obj51; + questRoot11.QuestSequence = list78; + AddQuest(questId11, questRoot11); + QuestId questId12 = new QuestId(5428); + QuestRoot questRoot12 = new QuestRoot(); + num = 1; + List list84 = new List(num); + CollectionsMarshal.SetCount(list84, num); + Span span84 = CollectionsMarshal.AsSpan(list84); + index = 0; + span84[index] = "WigglyMuffin"; + questRoot12.Author = list84; + index = 7; + List list85 = new List(index); + CollectionsMarshal.SetCount(list85, index); + Span span85 = CollectionsMarshal.AsSpan(list85); + num = 0; + ref QuestSequence reference60 = ref span85[num]; + QuestSequence obj52 = new QuestSequence + { + Sequence = 0 + }; + num2 = 1; + List list86 = new List(num2); + CollectionsMarshal.SetCount(list86, num2); + Span span86 = CollectionsMarshal.AsSpan(list86); + index2 = 0; + ref QuestStep reference61 = ref span86[index2]; + QuestStep obj53 = new QuestStep(EInteractionType.AcceptQuest, 1056141u, new Vector3(-7.5532227f, -0.003462526f, -7.950012f), 1192) + { + TargetTerritoryId = (ushort)1334, + AetheryteShortcut = EAetheryteLocation.LivingMemoryLeynodeMnemo + }; + SkipConditions skipConditions2 = new SkipConditions(); + SkipStepConditions skipStepConditions2 = new SkipStepConditions(); + index3 = 1; + List list87 = new List(index3); + CollectionsMarshal.SetCount(list87, index3); + Span span87 = CollectionsMarshal.AsSpan(list87); + num3 = 0; + span87[num3] = 1334; + skipStepConditions2.InTerritory = list87; + skipConditions2.StepIf = skipStepConditions2; + SkipAetheryteCondition obj54 = new SkipAetheryteCondition + { + InSameTerritory = true + }; + num3 = 1; + List list88 = new List(num3); + CollectionsMarshal.SetCount(list88, num3); + Span span88 = CollectionsMarshal.AsSpan(list88); + index3 = 0; + span88[index3] = 1334; + obj54.InTerritory = list88; + skipConditions2.AetheryteShortcutIf = obj54; + obj53.SkipConditions = skipConditions2; + reference61 = obj53; + obj52.Steps = list86; + reference60 = obj52; + num++; + ref QuestSequence reference62 = ref span85[num]; + QuestSequence obj55 = new QuestSequence + { + Sequence = 1 + }; + index2 = 1; + List list89 = new List(index2); + CollectionsMarshal.SetCount(list89, index2); + Span span89 = CollectionsMarshal.AsSpan(list89); + num2 = 0; + span89[num2] = new QuestStep(EInteractionType.Interact, 1056145u, new Vector3(-2.1210327f, 4.3585896E-07f, -43.808716f), 1334); + obj55.Steps = list89; + reference62 = obj55; + num++; + ref QuestSequence reference63 = ref span85[num]; + QuestSequence obj56 = new QuestSequence + { + Sequence = 2 + }; + num2 = 1; + List list90 = new List(num2); + CollectionsMarshal.SetCount(list90, num2); + Span span90 = CollectionsMarshal.AsSpan(list90); + index2 = 0; + span90[index2] = new QuestStep(EInteractionType.Duty, null, null, 1334) + { + DutyOptions = new DutyOptions + { + ContentFinderConditionId = 1064u + } + }; + obj56.Steps = list90; + reference63 = obj56; + num++; + span85[num] = new QuestSequence + { + Sequence = 3 + }; + num++; + ref QuestSequence reference64 = ref span85[num]; + QuestSequence obj57 = new QuestSequence + { + Sequence = 4 + }; + index2 = 1; + List list91 = new List(index2); + CollectionsMarshal.SetCount(list91, index2); + Span span91 = CollectionsMarshal.AsSpan(list91); + num2 = 0; + span91[num2] = new QuestStep(EInteractionType.Interact, 1056149u, new Vector3(274.6471f, -115.97899f, -460.83777f), 1332); + obj57.Steps = list91; + reference64 = obj57; + num++; + ref QuestSequence reference65 = ref span85[num]; + QuestSequence obj58 = new QuestSequence + { + Sequence = 5 + }; + num2 = 1; + List list92 = new List(num2); + CollectionsMarshal.SetCount(list92, num2); + Span span92 = CollectionsMarshal.AsSpan(list92); + index2 = 0; + span92[index2] = new QuestStep(EInteractionType.UseItem, null, new Vector3(274.6471f, -115.97899f, -460.83777f), 1332) + { + ItemId = 2003793u + }; + obj58.Steps = list92; + reference65 = obj58; + num++; + ref QuestSequence reference66 = ref span85[num]; + QuestSequence obj59 = new QuestSequence + { + Sequence = byte.MaxValue + }; + index2 = 1; + List list93 = new List(index2); + CollectionsMarshal.SetCount(list93, index2); + Span span93 = CollectionsMarshal.AsSpan(list93); + num2 = 0; + span93[num2] = new QuestStep(EInteractionType.CompleteQuest, 1056149u, new Vector3(274.6471f, -115.97899f, -460.83777f), 1332); + obj59.Steps = list93; + reference66 = obj59; + questRoot12.QuestSequence = list85; + AddQuest(questId12, questRoot12); + QuestId questId13 = new QuestId(5429); + QuestRoot questRoot13 = new QuestRoot(); + num = 1; + List list94 = new List(num); + CollectionsMarshal.SetCount(list94, num); + Span span94 = CollectionsMarshal.AsSpan(list94); + index = 0; + span94[index] = "WigglyMuffin"; + questRoot13.Author = list94; + index = 4; + List list95 = new List(index); + CollectionsMarshal.SetCount(list95, index); + Span span95 = CollectionsMarshal.AsSpan(list95); + num = 0; + ref QuestSequence reference67 = ref span95[num]; + QuestSequence obj60 = new QuestSequence + { + Sequence = 0 + }; + num2 = 3; + List list96 = new List(num2); + CollectionsMarshal.SetCount(list96, num2); + Span span96 = CollectionsMarshal.AsSpan(list96); + index2 = 0; + ref QuestStep reference68 = ref span96[index2]; + QuestStep obj61 = new QuestStep(EInteractionType.Interact, 1056205u, new Vector3(-7.5532227f, -0.003462526f, -7.950012f), 1192) + { + TargetTerritoryId = (ushort)1334, + AetheryteShortcut = EAetheryteLocation.LivingMemoryLeynodeMnemo + }; + SkipConditions skipConditions3 = new SkipConditions(); + SkipStepConditions skipStepConditions3 = new SkipStepConditions(); + index3 = 2; + List list97 = new List(index3); + CollectionsMarshal.SetCount(list97, index3); + Span span97 = CollectionsMarshal.AsSpan(list97); + num3 = 0; + span97[num3] = 1334; + num3++; + span97[num3] = 1332; + skipStepConditions3.InTerritory = list97; + skipConditions3.StepIf = skipStepConditions3; + SkipAetheryteCondition obj62 = new SkipAetheryteCondition + { + InSameTerritory = true + }; + num3 = 2; + List list98 = new List(num3); + CollectionsMarshal.SetCount(list98, num3); + Span span98 = CollectionsMarshal.AsSpan(list98); + index3 = 0; + span98[index3] = 1334; + index3++; + span98[index3] = 1332; + obj62.InTerritory = list98; + skipConditions3.AetheryteShortcutIf = obj62; + obj61.SkipConditions = skipConditions3; + reference68 = obj61; + index2++; + ref QuestStep reference69 = ref span96[index2]; + QuestStep obj63 = new QuestStep(EInteractionType.Interact, 2014999u, new Vector3(1.124277f, 0.9640547f, -56.99698f), 1334) + { + TargetTerritoryId = (ushort)1332 + }; + SkipConditions skipConditions4 = new SkipConditions(); + SkipStepConditions skipStepConditions4 = new SkipStepConditions(); + index3 = 1; + List list99 = new List(index3); + CollectionsMarshal.SetCount(list99, index3); + Span span99 = CollectionsMarshal.AsSpan(list99); + num3 = 0; + span99[num3] = 1332; + skipStepConditions4.InTerritory = list99; + skipConditions4.StepIf = skipStepConditions4; + obj63.SkipConditions = skipConditions4; + reference69 = obj63; + index2++; + span96[index2] = new QuestStep(EInteractionType.AcceptQuest, 1056149u, new Vector3(274.6471f, -115.97899f, -460.83777f), 1332); + obj60.Steps = list96; + reference67 = obj60; + num++; + ref QuestSequence reference70 = ref span95[num]; + QuestSequence obj64 = new QuestSequence + { + Sequence = 1 + }; + index2 = 1; + List list100 = new List(index2); + CollectionsMarshal.SetCount(list100, index2); + Span span100 = CollectionsMarshal.AsSpan(list100); + num2 = 0; + ref QuestStep reference71 = ref span100[num2]; + QuestStep questStep10 = new QuestStep(EInteractionType.Interact, 1056159u, new Vector3(273.67053f, -115.97899f, -458.3963f), 1332); + num3 = 1; + List list101 = new List(num3); + CollectionsMarshal.SetCount(list101, num3); + Span span101 = CollectionsMarshal.AsSpan(list101); + index3 = 0; + span101[index3] = new DialogueChoice + { + Type = EDialogChoiceType.List, + Prompt = new ExcelRef("TEXT_KINGMJ104_05429_Q1_000_032"), + Answer = new ExcelRef("TEXT_KINGMJ104_05429_A1_000_001") + }; + questStep10.DialogueChoices = list101; + reference71 = questStep10; + obj64.Steps = list100; + reference70 = obj64; + num++; + ref QuestSequence reference72 = ref span95[num]; + QuestSequence obj65 = new QuestSequence + { + Sequence = 2 + }; + num2 = 3; + List list102 = new List(num2); + CollectionsMarshal.SetCount(list102, num2); + Span span102 = CollectionsMarshal.AsSpan(list102); + index2 = 0; + ref QuestStep reference73 = ref span102[index2]; + QuestStep questStep11 = new QuestStep(EInteractionType.Interact, 1056152u, new Vector3(246.3263f, -115.9987f, -389.57812f), 1332); + index3 = 6; + List list103 = new List(index3); + CollectionsMarshal.SetCount(list103, index3); + Span span103 = CollectionsMarshal.AsSpan(list103); + num3 = 0; + span103[num3] = null; + num3++; + span103[num3] = null; + num3++; + span103[num3] = null; + num3++; + span103[num3] = null; + num3++; + span103[num3] = null; + num3++; + span103[num3] = new QuestWorkValue((byte)8, null, EQuestWorkMode.Bitwise); + questStep11.CompletionQuestVariablesFlags = list103; + reference73 = questStep11; + index2++; + ref QuestStep reference74 = ref span102[index2]; + QuestStep questStep12 = new QuestStep(EInteractionType.Interact, 1056153u, new Vector3(219.25684f, -115.53908f, -402.7619f), 1332); + num3 = 6; + List list104 = new List(num3); + CollectionsMarshal.SetCount(list104, num3); + Span span104 = CollectionsMarshal.AsSpan(list104); + index3 = 0; + span104[index3] = null; + index3++; + span104[index3] = null; + index3++; + span104[index3] = null; + index3++; + span104[index3] = null; + index3++; + span104[index3] = null; + index3++; + span104[index3] = new QuestWorkValue((byte)12, null, EQuestWorkMode.Bitwise); + questStep12.CompletionQuestVariablesFlags = list104; + reference74 = questStep12; + index2++; + span102[index2] = new QuestStep(EInteractionType.Interact, 1056154u, new Vector3(193.86584f, -115.92868f, -388.99823f), 1332); + obj65.Steps = list102; + reference72 = obj65; + num++; + ref QuestSequence reference75 = ref span95[num]; + QuestSequence obj66 = new QuestSequence + { + Sequence = byte.MaxValue + }; + index2 = 1; + List list105 = new List(index2); + CollectionsMarshal.SetCount(list105, index2); + Span span105 = CollectionsMarshal.AsSpan(list105); + num2 = 0; + span105[num2] = new QuestStep(EInteractionType.CompleteQuest, 1056159u, new Vector3(273.67053f, -115.97899f, -458.3963f), 1332); + obj66.Steps = list105; + reference75 = obj66; + questRoot13.QuestSequence = list95; + AddQuest(questId13, questRoot13); + QuestId questId14 = new QuestId(5430); + QuestRoot questRoot14 = new QuestRoot(); + num = 1; + List list106 = new List(num); + CollectionsMarshal.SetCount(list106, num); + Span span106 = CollectionsMarshal.AsSpan(list106); + index = 0; + span106[index] = "WigglyMuffin"; + questRoot14.Author = list106; + index = 8; + List list107 = new List(index); + CollectionsMarshal.SetCount(list107, index); + Span span107 = CollectionsMarshal.AsSpan(list107); + num = 0; + ref QuestSequence reference76 = ref span107[num]; + QuestSequence obj67 = new QuestSequence + { + Sequence = 0 + }; + num2 = 1; + List list108 = new List(num2); + CollectionsMarshal.SetCount(list108, num2); + Span span108 = CollectionsMarshal.AsSpan(list108); + index2 = 0; + span108[index2] = new QuestStep(EInteractionType.AcceptQuest, 1056149u, new Vector3(274.6471f, -115.97899f, -460.83777f), 1332); + obj67.Steps = list108; + reference76 = obj67; + num++; + ref QuestSequence reference77 = ref span107[num]; + QuestSequence obj68 = new QuestSequence + { + Sequence = 1 + }; + index2 = 1; + List list109 = new List(index2); + CollectionsMarshal.SetCount(list109, index2); + Span span109 = CollectionsMarshal.AsSpan(list109); + num2 = 0; + span109[num2] = new QuestStep(EInteractionType.Interact, 1056165u, new Vector3(245.89917f, -116.025f, -533.71484f), 1332); + obj68.Steps = list109; + reference77 = obj68; + num++; + ref QuestSequence reference78 = ref span107[num]; + QuestSequence obj69 = new QuestSequence + { + Sequence = 2 + }; + num2 = 1; + List list110 = new List(num2); + CollectionsMarshal.SetCount(list110, num2); + Span span110 = CollectionsMarshal.AsSpan(list110); + index2 = 0; + span110[index2] = new QuestStep(EInteractionType.Interact, 1056165u, new Vector3(245.89917f, -116.025f, -533.71484f), 1332); + obj69.Steps = list110; + reference78 = obj69; + num++; + ref QuestSequence reference79 = ref span107[num]; + QuestSequence obj70 = new QuestSequence + { + Sequence = 3 + }; + index2 = 1; + List list111 = new List(index2); + CollectionsMarshal.SetCount(list111, index2); + Span span111 = CollectionsMarshal.AsSpan(list111); + num2 = 0; + span111[num2] = new QuestStep(EInteractionType.Interact, 2015170u, new Vector3(246.3972f, -118.5233f, -455.0817f), 1332); + obj70.Steps = list111; + reference79 = obj70; + num++; + ref QuestSequence reference80 = ref span107[num]; + QuestSequence obj71 = new QuestSequence + { + Sequence = 4 + }; + num2 = 1; + List list112 = new List(num2); + CollectionsMarshal.SetCount(list112, num2); + Span span112 = CollectionsMarshal.AsSpan(list112); + index2 = 0; + span112[index2] = new QuestStep(EInteractionType.Interact, 2015171u, new Vector3(275.1151f, -115.979f, -433.4405f), 1332); + obj71.Steps = list112; + reference80 = obj71; + num++; + ref QuestSequence reference81 = ref span107[num]; + QuestSequence obj72 = new QuestSequence + { + Sequence = 5 + }; + index2 = 1; + List list113 = new List(index2); + CollectionsMarshal.SetCount(list113, index2); + Span span113 = CollectionsMarshal.AsSpan(list113); + num2 = 0; + span113[num2] = new QuestStep(EInteractionType.Interact, 2015172u, new Vector3(267.0141f, -116.05f, -394.9687f), 1332); + obj72.Steps = list113; + reference81 = obj72; + num++; + ref QuestSequence reference82 = ref span107[num]; + QuestSequence obj73 = new QuestSequence + { + Sequence = 6 + }; + num2 = 3; + List list114 = new List(num2); + CollectionsMarshal.SetCount(list114, num2); + Span span114 = CollectionsMarshal.AsSpan(list114); + index2 = 0; + ref QuestStep reference83 = ref span114[index2]; + QuestStep obj74 = new QuestStep(EInteractionType.UseItem, 1056483u, new Vector3(236.04175f, -113.757126f, -352.92596f), 1332) + { + ItemId = 2003804u, + GroundTarget = true + }; + index3 = 6; + List list115 = new List(index3); + CollectionsMarshal.SetCount(list115, index3); + Span span115 = CollectionsMarshal.AsSpan(list115); + num3 = 0; + span115[num3] = null; + num3++; + span115[num3] = null; + num3++; + span115[num3] = null; + num3++; + span115[num3] = null; + num3++; + span115[num3] = null; + num3++; + span115[num3] = new QuestWorkValue((byte)2, null, EQuestWorkMode.Bitwise); + obj74.CompletionQuestVariablesFlags = list115; + reference83 = obj74; + index2++; + ref QuestStep reference84 = ref span114[index2]; + QuestStep obj75 = new QuestStep(EInteractionType.UseItem, 1056482u, new Vector3(209.09436f, -115.990005f, -411.64264f), 1332) + { + ItemId = 2003804u, + GroundTarget = true + }; + num3 = 6; + List list116 = new List(num3); + CollectionsMarshal.SetCount(list116, num3); + Span span116 = CollectionsMarshal.AsSpan(list116); + index3 = 0; + span116[index3] = null; + index3++; + span116[index3] = null; + index3++; + span116[index3] = null; + index3++; + span116[index3] = null; + index3++; + span116[index3] = null; + index3++; + span116[index3] = new QuestWorkValue((byte)6, null, EQuestWorkMode.Bitwise); + obj75.CompletionQuestVariablesFlags = list116; + reference84 = obj75; + index2++; + span114[index2] = new QuestStep(EInteractionType.UseItem, 1056481u, new Vector3(194.23206f, -115.99002f, -415.76257f), 1332) + { + ItemId = 2003804u, + GroundTarget = true + }; + obj73.Steps = list114; + reference82 = obj73; + num++; + ref QuestSequence reference85 = ref span107[num]; + QuestSequence obj76 = new QuestSequence + { + Sequence = byte.MaxValue + }; + index2 = 1; + List list117 = new List(index2); + CollectionsMarshal.SetCount(list117, index2); + Span span117 = CollectionsMarshal.AsSpan(list117); + num2 = 0; + span117[num2] = new QuestStep(EInteractionType.CompleteQuest, 1056165u, new Vector3(245.89917f, -116.025f, -533.71484f), 1332); + obj76.Steps = list117; + reference85 = obj76; + questRoot14.QuestSequence = list107; + AddQuest(questId14, questRoot14); + QuestId questId15 = new QuestId(5431); + QuestRoot questRoot15 = new QuestRoot(); + num = 1; + List list118 = new List(num); + CollectionsMarshal.SetCount(list118, num); + Span span118 = CollectionsMarshal.AsSpan(list118); + index = 0; + span118[index] = "WigglyMuffin"; + questRoot15.Author = list118; + index = 6; + List list119 = new List(index); + CollectionsMarshal.SetCount(list119, index); + Span span119 = CollectionsMarshal.AsSpan(list119); + num = 0; + ref QuestSequence reference86 = ref span119[num]; + QuestSequence obj77 = new QuestSequence + { + Sequence = 0 + }; + num2 = 1; + List list120 = new List(num2); + CollectionsMarshal.SetCount(list120, num2); + Span span120 = CollectionsMarshal.AsSpan(list120); + index2 = 0; + span120[index2] = new QuestStep(EInteractionType.AcceptQuest, 1056165u, new Vector3(245.89917f, -116.025f, -533.71484f), 1332); + obj77.Steps = list120; + reference86 = obj77; + num++; + ref QuestSequence reference87 = ref span119[num]; + QuestSequence obj78 = new QuestSequence + { + Sequence = 1 + }; + index2 = 1; + List list121 = new List(index2); + CollectionsMarshal.SetCount(list121, index2); + Span span121 = CollectionsMarshal.AsSpan(list121); + num2 = 0; + span121[num2] = new QuestStep(EInteractionType.Interact, 2014994u, new Vector3(281.166f, -115.979f, -530.4824f), 1332); + obj78.Steps = list121; + reference87 = obj78; + num++; + ref QuestSequence reference88 = ref span119[num]; + QuestSequence obj79 = new QuestSequence + { + Sequence = 2 + }; + num2 = 1; + List list122 = new List(num2); + CollectionsMarshal.SetCount(list122, num2); + Span span122 = CollectionsMarshal.AsSpan(list122); + index2 = 0; + span122[index2] = new QuestStep(EInteractionType.Interact, 1056166u, new Vector3(272.5719f, -115.979004f, -551.0491f), 1332); + obj79.Steps = list122; + reference88 = obj79; + num++; + ref QuestSequence reference89 = ref span119[num]; + QuestSequence obj80 = new QuestSequence + { + Sequence = 3 + }; + index2 = 1; + List list123 = new List(index2); + CollectionsMarshal.SetCount(list123, index2); + Span span123 = CollectionsMarshal.AsSpan(list123); + num2 = 0; + span123[num2] = new QuestStep(EInteractionType.Interact, 1056167u, new Vector3(323.84216f, -117.47925f, -489.37213f), 1332); + obj80.Steps = list123; + reference89 = obj80; + num++; + ref QuestSequence reference90 = ref span119[num]; + QuestSequence obj81 = new QuestSequence + { + Sequence = 4 + }; + num2 = 1; + List list124 = new List(num2); + CollectionsMarshal.SetCount(list124, num2); + Span span124 = CollectionsMarshal.AsSpan(list124); + index2 = 0; + span124[index2] = new QuestStep(EInteractionType.Interact, 1056267u, new Vector3(325.18494f, -117.5f, -489.28055f), 1332); + obj81.Steps = list124; + reference90 = obj81; + num++; + ref QuestSequence reference91 = ref span119[num]; + QuestSequence obj82 = new QuestSequence + { + Sequence = byte.MaxValue + }; + index2 = 1; + List list125 = new List(index2); + CollectionsMarshal.SetCount(list125, index2); + Span span125 = CollectionsMarshal.AsSpan(list125); + num2 = 0; + span125[num2] = new QuestStep(EInteractionType.CompleteQuest, 1056165u, new Vector3(245.89917f, -116.025f, -533.71484f), 1332); + obj82.Steps = list125; + reference91 = obj82; + questRoot15.QuestSequence = list119; + AddQuest(questId15, questRoot15); + QuestId questId16 = new QuestId(5432); + QuestRoot questRoot16 = new QuestRoot(); + num = 1; + List list126 = new List(num); + CollectionsMarshal.SetCount(list126, num); + Span span126 = CollectionsMarshal.AsSpan(list126); + index = 0; + span126[index] = "WigglyMuffin"; + questRoot16.Author = list126; + index = 4; + List list127 = new List(index); + CollectionsMarshal.SetCount(list127, index); + Span span127 = CollectionsMarshal.AsSpan(list127); + num = 0; + ref QuestSequence reference92 = ref span127[num]; + QuestSequence obj83 = new QuestSequence + { + Sequence = 0 + }; + num2 = 1; + List list128 = new List(num2); + CollectionsMarshal.SetCount(list128, num2); + Span span128 = CollectionsMarshal.AsSpan(list128); + index2 = 0; + span128[index2] = new QuestStep(EInteractionType.AcceptQuest, 1056168u, new Vector3(245.89917f, -116.02501f, -531.57855f), 1332); + obj83.Steps = list128; + reference92 = obj83; + num++; + ref QuestSequence reference93 = ref span127[num]; + QuestSequence obj84 = new QuestSequence + { + Sequence = 1 + }; + index2 = 1; + List list129 = new List(index2); + CollectionsMarshal.SetCount(list129, index2); + Span span129 = CollectionsMarshal.AsSpan(list129); + num2 = 0; + span129[num2] = new QuestStep(EInteractionType.Interact, 2014995u, new Vector3(247.3097f, -116.025f, -532.7819f), 1332); + obj84.Steps = list129; + reference93 = obj84; + num++; + ref QuestSequence reference94 = ref span127[num]; + QuestSequence obj85 = new QuestSequence + { + Sequence = 2 + }; + num2 = 1; + List list130 = new List(num2); + CollectionsMarshal.SetCount(list130, num2); + Span span130 = CollectionsMarshal.AsSpan(list130); + index2 = 0; + span130[index2] = new QuestStep(EInteractionType.Interact, 1056194u, new Vector3(245.16663f, -116.02501f, -532.00586f), 1332); + obj85.Steps = list130; + reference94 = obj85; + num++; + ref QuestSequence reference95 = ref span127[num]; + QuestSequence obj86 = new QuestSequence + { + Sequence = byte.MaxValue + }; + index2 = 1; + List list131 = new List(index2); + CollectionsMarshal.SetCount(list131, index2); + Span span131 = CollectionsMarshal.AsSpan(list131); + num2 = 0; + span131[num2] = new QuestStep(EInteractionType.CompleteQuest, 1056172u, new Vector3(292.1034f, -98f, -283.25323f), 1332); + obj86.Steps = list131; + reference95 = obj86; + questRoot16.QuestSequence = list127; + AddQuest(questId16, questRoot16); + QuestId questId17 = new QuestId(5433); + QuestRoot questRoot17 = new QuestRoot(); + num = 1; + List list132 = new List(num); + CollectionsMarshal.SetCount(list132, num); + Span span132 = CollectionsMarshal.AsSpan(list132); + index = 0; + span132[index] = "WigglyMuffin"; + questRoot17.Author = list132; + index = 8; + List list133 = new List(index); + CollectionsMarshal.SetCount(list133, index); + Span span133 = CollectionsMarshal.AsSpan(list133); + num = 0; + ref QuestSequence reference96 = ref span133[num]; + QuestSequence obj87 = new QuestSequence + { + Sequence = 0 + }; + num2 = 1; + List list134 = new List(num2); + CollectionsMarshal.SetCount(list134, num2); + Span span134 = CollectionsMarshal.AsSpan(list134); + index2 = 0; + span134[index2] = new QuestStep(EInteractionType.AcceptQuest, 1056172u, new Vector3(292.1034f, -98f, -283.25323f), 1332); + obj87.Steps = list134; + reference96 = obj87; + num++; + ref QuestSequence reference97 = ref span133[num]; + QuestSequence obj88 = new QuestSequence + { + Sequence = 1 + }; + index2 = 1; + List list135 = new List(index2); + CollectionsMarshal.SetCount(list135, index2); + Span span135 = CollectionsMarshal.AsSpan(list135); + num2 = 0; + ref QuestStep reference98 = ref span135[num2]; + QuestStep questStep13 = new QuestStep(EInteractionType.Interact, 1056173u, new Vector3(293.96497f, -98f, -281.6358f), 1332); + index3 = 1; + List list136 = new List(index3); + CollectionsMarshal.SetCount(list136, index3); + Span span136 = CollectionsMarshal.AsSpan(list136); + num3 = 0; + span136[num3] = new DialogueChoice + { + Type = EDialogChoiceType.YesNo, + Prompt = new ExcelRef("TEXT_KINGMJ108_05433_SYSTEM_000_045") + }; + questStep13.DialogueChoices = list136; + reference98 = questStep13; + obj88.Steps = list135; + reference97 = obj88; + num++; + span133[num] = new QuestSequence + { + Sequence = 2 + }; + num++; + ref QuestSequence reference99 = ref span133[num]; + QuestSequence obj89 = new QuestSequence + { + Sequence = 3 + }; + num2 = 1; + List list137 = new List(num2); + CollectionsMarshal.SetCount(list137, num2); + Span span137 = CollectionsMarshal.AsSpan(list137); + index2 = 0; + span137[index2] = new QuestStep(EInteractionType.Duty, null, null, 1338) + { + DutyOptions = new DutyOptions + { + ContentFinderConditionId = 1076u + } + }; + obj89.Steps = list137; + reference99 = obj89; + num++; + span133[num] = new QuestSequence + { + Sequence = 4 + }; + num++; + ref QuestSequence reference100 = ref span133[num]; + QuestSequence obj90 = new QuestSequence + { + Sequence = 5 + }; + index2 = 1; + List list138 = new List(index2); + CollectionsMarshal.SetCount(list138, index2); + Span span138 = CollectionsMarshal.AsSpan(list138); + num2 = 0; + ref QuestStep reference101 = ref span138[num2]; + QuestStep questStep14 = new QuestStep(EInteractionType.SinglePlayerDuty, 1056268u, new Vector3(264.7898f, -115f, -630.7317f), 1332); + SinglePlayerDutyOptions singlePlayerDutyOptions = new SinglePlayerDutyOptions(); + num3 = 1; + List list139 = new List(num3); + CollectionsMarshal.SetCount(list139, num3); + Span span139 = CollectionsMarshal.AsSpan(list139); + index3 = 0; + span139[index3] = "Not implemented in Boss Mod yet."; + singlePlayerDutyOptions.Notes = list139; + questStep14.SinglePlayerDutyOptions = singlePlayerDutyOptions; + reference101 = questStep14; + obj90.Steps = list138; + reference100 = obj90; + num++; + span133[num] = new QuestSequence + { + Sequence = 6 + }; + num++; + ref QuestSequence reference102 = ref span133[num]; + QuestSequence obj91 = new QuestSequence + { + Sequence = byte.MaxValue + }; + num2 = 1; + List list140 = new List(num2); + CollectionsMarshal.SetCount(list140, num2); + Span span140 = CollectionsMarshal.AsSpan(list140); + index2 = 0; + span140[index2] = new QuestStep(EInteractionType.CompleteQuest, 1056175u, new Vector3(280.59814f, -115.97899f, -422.78174f), 1332); + obj91.Steps = list140; + reference102 = obj91; + questRoot17.QuestSequence = list133; + AddQuest(questId17, questRoot17); + QuestId questId18 = new QuestId(5434); + QuestRoot questRoot18 = new QuestRoot(); + num = 1; + List list141 = new List(num); + CollectionsMarshal.SetCount(list141, num); + Span span141 = CollectionsMarshal.AsSpan(list141); + index = 0; + span141[index] = "WigglyMuffin"; + questRoot18.Author = list141; + index = 5; + List list142 = new List(index); + CollectionsMarshal.SetCount(list142, index); + Span span142 = CollectionsMarshal.AsSpan(list142); + num = 0; + ref QuestSequence reference103 = ref span142[num]; + QuestSequence obj92 = new QuestSequence + { + Sequence = 0 + }; + index2 = 1; + List list143 = new List(index2); + CollectionsMarshal.SetCount(list143, index2); + Span span143 = CollectionsMarshal.AsSpan(list143); + num2 = 0; + span143[num2] = new QuestStep(EInteractionType.AcceptQuest, 1056175u, new Vector3(280.59814f, -115.97899f, -422.78174f), 1332); + obj92.Steps = list143; + reference103 = obj92; + num++; + ref QuestSequence reference104 = ref span142[num]; + QuestSequence obj93 = new QuestSequence + { + Sequence = 1 + }; + num2 = 1; + List list144 = new List(num2); + CollectionsMarshal.SetCount(list144, num2); + Span span144 = CollectionsMarshal.AsSpan(list144); + index2 = 0; + span144[index2] = new QuestStep(EInteractionType.Interact, 1056179u, new Vector3(281.17798f, -115f, -643.061f), 1332); + obj93.Steps = list144; + reference104 = obj93; + num++; + ref QuestSequence reference105 = ref span142[num]; + QuestSequence obj94 = new QuestSequence + { + Sequence = 2 + }; + index2 = 1; + List list145 = new List(index2); + CollectionsMarshal.SetCount(list145, index2); + Span span145 = CollectionsMarshal.AsSpan(list145); + num2 = 0; + span145[num2] = new QuestStep(EInteractionType.Interact, 2014998u, new Vector3(281.0471f, -98f, -277.821f), 1332); + obj94.Steps = list145; + reference105 = obj94; + num++; + ref QuestSequence reference106 = ref span142[num]; + QuestSequence obj95 = new QuestSequence + { + Sequence = 3 + }; + num2 = 1; + List list146 = new List(num2); + CollectionsMarshal.SetCount(list146, num2); + Span span146 = CollectionsMarshal.AsSpan(list146); + index2 = 0; + span146[index2] = new QuestStep(EInteractionType.Interact, 1056190u, new Vector3(-1.8158569f, 53.200012f, 768.24585f), 1192); + obj95.Steps = list146; + reference106 = obj95; + num++; + ref QuestSequence reference107 = ref span142[num]; + QuestSequence obj96 = new QuestSequence + { + Sequence = byte.MaxValue + }; + index2 = 1; + List list147 = new List(index2); + CollectionsMarshal.SetCount(list147, index2); + Span span147 = CollectionsMarshal.AsSpan(list147); + num2 = 0; + span147[num2] = new QuestStep(EInteractionType.CompleteQuest, 1056199u, new Vector3(17.31897f, 38.80659f, -410.5135f), 1186) + { + AetheryteShortcut = EAetheryteLocation.SolutionNine, + AethernetShortcut = new AethernetShortcut + { + From = EAetheryteLocation.SolutionNine, + To = EAetheryteLocation.SolutionNineResolution + } + }; + obj96.Steps = list147; + reference107 = obj96; + questRoot18.QuestSequence = list142; + AddQuest(questId18, questRoot18); + QuestId questId19 = new QuestId(5435); + QuestRoot questRoot19 = new QuestRoot(); + num = 1; + List list148 = new List(num); + CollectionsMarshal.SetCount(list148, num); + Span span148 = CollectionsMarshal.AsSpan(list148); + index = 0; + span148[index] = "WigglyMuffin"; + questRoot19.Author = list148; + index = 4; + List list149 = new List(index); + CollectionsMarshal.SetCount(list149, index); + Span span149 = CollectionsMarshal.AsSpan(list149); + num = 0; + ref QuestSequence reference108 = ref span149[num]; + QuestSequence obj97 = new QuestSequence + { + Sequence = 0 + }; + num2 = 1; + List list150 = new List(num2); + CollectionsMarshal.SetCount(list150, num2); + Span span150 = CollectionsMarshal.AsSpan(list150); + index2 = 0; + span150[index2] = new QuestStep(EInteractionType.AcceptQuest, 1050471u, new Vector3(494.7433f, 59.55f, 125.10864f), 1186) + { + AetheryteShortcut = EAetheryteLocation.SolutionNine, + AethernetShortcut = new AethernetShortcut + { + From = EAetheryteLocation.SolutionNine, + To = EAetheryteLocation.SolutionNineTrueVue + }, + SkipConditions = new SkipConditions + { + AetheryteShortcutIf = new SkipAetheryteCondition + { + InSameTerritory = true + } + } + }; + obj97.Steps = list150; + reference108 = obj97; + num++; + ref QuestSequence reference109 = ref span149[num]; + QuestSequence obj98 = new QuestSequence + { + Sequence = 1 + }; + index2 = 2; + List list151 = new List(index2); + CollectionsMarshal.SetCount(list151, index2); + Span span151 = CollectionsMarshal.AsSpan(list151); + num2 = 0; + span151[num2] = new QuestStep(EInteractionType.Interact, 2013724u, new Vector3(498.34436f, 60.593506f, 129.13708f), 1186) + { + TargetTerritoryId = (ushort)1223 + }; + num2++; + span151[num2] = new QuestStep(EInteractionType.Interact, 1056301u, new Vector3(5.5999756f, 0f, 2.822876f), 1223); + obj98.Steps = list151; + reference109 = obj98; + num++; + ref QuestSequence reference110 = ref span149[num]; + QuestSequence obj99 = new QuestSequence + { + Sequence = 2 + }; + num2 = 1; + List list152 = new List(num2); + CollectionsMarshal.SetCount(list152, num2); + Span span152 = CollectionsMarshal.AsSpan(list152); + index2 = 0; + span152[index2] = new QuestStep(EInteractionType.Interact, 1056301u, new Vector3(5.5999756f, 0f, 2.822876f), 1223); + obj99.Steps = list152; + reference110 = obj99; + num++; + ref QuestSequence reference111 = ref span149[num]; + QuestSequence obj100 = new QuestSequence + { + Sequence = byte.MaxValue + }; + index2 = 2; + List list153 = new List(index2); + CollectionsMarshal.SetCount(list153, index2); + Span span153 = CollectionsMarshal.AsSpan(list153); + num2 = 0; + ref QuestStep reference112 = ref span153[num2]; + QuestStep obj101 = new QuestStep(EInteractionType.Interact, 1049793u, new Vector3(364.3396f, 60.125f, 357.1068f), 1186) + { + TargetTerritoryId = (ushort)1224 + }; + SkipConditions skipConditions5 = new SkipConditions(); + SkipStepConditions skipStepConditions5 = new SkipStepConditions(); + index3 = 1; + List list154 = new List(index3); + CollectionsMarshal.SetCount(list154, index3); + Span span154 = CollectionsMarshal.AsSpan(list154); + num3 = 0; + span154[num3] = 1224; + skipStepConditions5.NotInTerritory = list154; + skipConditions5.StepIf = skipStepConditions5; + obj101.SkipConditions = skipConditions5; + reference112 = obj101; + num2++; + span153[num2] = new QuestStep(EInteractionType.CompleteQuest, 1056303u, new Vector3(0.2288208f, -2.3919762E-12f, -13.229614f), 1224) + { + NextQuestId = new QuestId(5436) + }; + obj100.Steps = list153; + reference111 = obj100; + questRoot19.QuestSequence = list149; + AddQuest(questId19, questRoot19); + QuestId questId20 = new QuestId(5436); + QuestRoot questRoot20 = new QuestRoot(); + num = 1; + List list155 = new List(num); + CollectionsMarshal.SetCount(list155, num); + Span span155 = CollectionsMarshal.AsSpan(list155); + index = 0; + span155[index] = "WigglyMuffin"; + questRoot20.Author = list155; + index = 3; + List list156 = new List(index); + CollectionsMarshal.SetCount(list156, index); + Span span156 = CollectionsMarshal.AsSpan(list156); + num = 0; + ref QuestSequence reference113 = ref span156[num]; + QuestSequence obj102 = new QuestSequence + { + Sequence = 0 + }; + num2 = 2; + List list157 = new List(num2); + CollectionsMarshal.SetCount(list157, num2); + Span span157 = CollectionsMarshal.AsSpan(list157); + index2 = 0; + span157[index2] = new QuestStep(EInteractionType.Interact, 1049793u, new Vector3(364.3396f, 60.125f, 357.1068f), 1186) + { + TargetTerritoryId = (ushort)1224, + AetheryteShortcut = EAetheryteLocation.SolutionNine, + AethernetShortcut = new AethernetShortcut + { + From = EAetheryteLocation.SolutionNine, + To = EAetheryteLocation.SolutionNineTheArcadion + }, + SkipConditions = new SkipConditions + { + AetheryteShortcutIf = new SkipAetheryteCondition + { + InSameTerritory = true + } + } + }; + index2++; + span157[index2] = new QuestStep(EInteractionType.AcceptQuest, 1053745u, new Vector3(1.6326294f, -2.9191749E-12f, -12.466675f), 1224); + obj102.Steps = list157; + reference113 = obj102; + num++; + ref QuestSequence reference114 = ref span156[num]; + QuestSequence obj103 = new QuestSequence + { + Sequence = 1 + }; + index2 = 1; + List list158 = new List(index2); + CollectionsMarshal.SetCount(list158, index2); + Span span158 = CollectionsMarshal.AsSpan(list158); + num2 = 0; + span158[num2] = new QuestStep(EInteractionType.Duty, null, null, 1224) + { + DutyOptions = new DutyOptions + { + ContentFinderConditionId = 1068u + } + }; + obj103.Steps = list158; + reference114 = obj103; + num++; + ref QuestSequence reference115 = ref span156[num]; + QuestSequence obj104 = new QuestSequence + { + Sequence = byte.MaxValue + }; + num2 = 2; + List list159 = new List(num2); + CollectionsMarshal.SetCount(list159, num2); + Span span159 = CollectionsMarshal.AsSpan(list159); + index2 = 0; + ref QuestStep reference116 = ref span159[index2]; + QuestStep obj105 = new QuestStep(EInteractionType.Interact, 1049793u, new Vector3(364.3396f, 60.125f, 357.1068f), 1186) + { + TargetTerritoryId = (ushort)1224 + }; + SkipConditions skipConditions6 = new SkipConditions(); + SkipStepConditions skipStepConditions6 = new SkipStepConditions(); + num3 = 1; + List list160 = new List(num3); + CollectionsMarshal.SetCount(list160, num3); + Span span160 = CollectionsMarshal.AsSpan(list160); + index3 = 0; + span160[index3] = 1224; + skipStepConditions6.NotInTerritory = list160; + skipConditions6.StepIf = skipStepConditions6; + obj105.SkipConditions = skipConditions6; + reference116 = obj105; + index2++; + span159[index2] = new QuestStep(EInteractionType.CompleteQuest, 1053792u, new Vector3(1.9683228f, -2.3974921E-12f, -11.12384f), 1224) + { + NextQuestId = new QuestId(5437) + }; + obj104.Steps = list159; + reference115 = obj104; + questRoot20.QuestSequence = list156; + AddQuest(questId20, questRoot20); + QuestId questId21 = new QuestId(5437); + QuestRoot questRoot21 = new QuestRoot(); + num = 1; + List list161 = new List(num); + CollectionsMarshal.SetCount(list161, num); + Span span161 = CollectionsMarshal.AsSpan(list161); + index = 0; + span161[index] = "WigglyMuffin"; + questRoot21.Author = list161; + index = 5; + List list162 = new List(index); + CollectionsMarshal.SetCount(list162, index); + Span span162 = CollectionsMarshal.AsSpan(list162); + num = 0; + ref QuestSequence reference117 = ref span162[num]; + QuestSequence obj106 = new QuestSequence + { + Sequence = 0 + }; + index2 = 2; + List list163 = new List(index2); + CollectionsMarshal.SetCount(list163, index2); + Span span163 = CollectionsMarshal.AsSpan(list163); + num2 = 0; + span163[num2] = new QuestStep(EInteractionType.Interact, 1049793u, new Vector3(364.3396f, 60.125f, 357.1068f), 1186) + { + TargetTerritoryId = (ushort)1224, + AetheryteShortcut = EAetheryteLocation.SolutionNine, + AethernetShortcut = new AethernetShortcut + { + From = EAetheryteLocation.SolutionNine, + To = EAetheryteLocation.SolutionNineTheArcadion + }, + SkipConditions = new SkipConditions + { + AetheryteShortcutIf = new SkipAetheryteCondition + { + InSameTerritory = true + } + } + }; + num2++; + span163[num2] = new QuestStep(EInteractionType.AcceptQuest, 1053792u, new Vector3(1.9683228f, -2.3974921E-12f, -11.12384f), 1224); + obj106.Steps = list163; + reference117 = obj106; + num++; + ref QuestSequence reference118 = ref span162[num]; + QuestSequence obj107 = new QuestSequence + { + Sequence = 1 + }; + num2 = 1; + List list164 = new List(num2); + CollectionsMarshal.SetCount(list164, num2); + Span span164 = CollectionsMarshal.AsSpan(list164); + index2 = 0; + span164[index2] = new QuestStep(EInteractionType.Interact, 1056304u, new Vector3(491.32507f, 59.55f, 128.09949f), 1186) + { + AetheryteShortcut = EAetheryteLocation.SolutionNine, + AethernetShortcut = new AethernetShortcut + { + From = EAetheryteLocation.SolutionNine, + To = EAetheryteLocation.SolutionNineTrueVue + }, + SkipConditions = new SkipConditions + { + AetheryteShortcutIf = new SkipAetheryteCondition + { + InSameTerritory = true + } + } + }; + obj107.Steps = list164; + reference118 = obj107; + num++; + ref QuestSequence reference119 = ref span162[num]; + QuestSequence obj108 = new QuestSequence + { + Sequence = 2 + }; + index2 = 2; + List list165 = new List(index2); + CollectionsMarshal.SetCount(list165, index2); + Span span165 = CollectionsMarshal.AsSpan(list165); + num2 = 0; + span165[num2] = new QuestStep(EInteractionType.Interact, 1049793u, new Vector3(364.3396f, 60.125f, 357.1068f), 1186) + { + TargetTerritoryId = (ushort)1224, + AetheryteShortcut = EAetheryteLocation.SolutionNine, + AethernetShortcut = new AethernetShortcut + { + From = EAetheryteLocation.SolutionNine, + To = EAetheryteLocation.SolutionNineTheArcadion + }, + SkipConditions = new SkipConditions + { + AetheryteShortcutIf = new SkipAetheryteCondition + { + InSameTerritory = true + } + } + }; + num2++; + span165[num2] = new QuestStep(EInteractionType.Interact, 1053745u, new Vector3(1.6326294f, -2.9191749E-12f, -12.466675f), 1224); + obj108.Steps = list165; + reference119 = obj108; + num++; + ref QuestSequence reference120 = ref span162[num]; + QuestSequence obj109 = new QuestSequence + { + Sequence = 3 + }; + num2 = 1; + List list166 = new List(num2); + CollectionsMarshal.SetCount(list166, num2); + Span span166 = CollectionsMarshal.AsSpan(list166); + index2 = 0; + span166[index2] = new QuestStep(EInteractionType.Duty, null, null, 1224) + { + DutyOptions = new DutyOptions + { + ContentFinderConditionId = 1070u + } + }; + obj109.Steps = list166; + reference120 = obj109; + num++; + ref QuestSequence reference121 = ref span162[num]; + QuestSequence obj110 = new QuestSequence + { + Sequence = byte.MaxValue + }; + index2 = 2; + List list167 = new List(index2); + CollectionsMarshal.SetCount(list167, index2); + Span span167 = CollectionsMarshal.AsSpan(list167); + num2 = 0; + ref QuestStep reference122 = ref span167[num2]; + QuestStep obj111 = new QuestStep(EInteractionType.Interact, 1049793u, new Vector3(364.3396f, 60.125f, 357.1068f), 1186) + { + TargetTerritoryId = (ushort)1224 + }; + SkipConditions skipConditions7 = new SkipConditions(); + SkipStepConditions skipStepConditions7 = new SkipStepConditions(); + index3 = 1; + List list168 = new List(index3); + CollectionsMarshal.SetCount(list168, index3); + Span span168 = CollectionsMarshal.AsSpan(list168); + num3 = 0; + span168[num3] = 1224; + skipStepConditions7.NotInTerritory = list168; + skipConditions7.StepIf = skipStepConditions7; + obj111.SkipConditions = skipConditions7; + reference122 = obj111; + num2++; + span167[num2] = new QuestStep(EInteractionType.CompleteQuest, 1053792u, new Vector3(1.9683228f, -2.3974921E-12f, -11.12384f), 1224) + { + NextQuestId = new QuestId(5438) + }; + obj110.Steps = list167; + reference121 = obj110; + questRoot21.QuestSequence = list162; + AddQuest(questId21, questRoot21); + QuestId questId22 = new QuestId(5438); + QuestRoot questRoot22 = new QuestRoot(); + num = 1; + List list169 = new List(num); + CollectionsMarshal.SetCount(list169, num); + Span span169 = CollectionsMarshal.AsSpan(list169); + index = 0; + span169[index] = "WigglyMuffin"; + questRoot22.Author = list169; + index = 5; + List list170 = new List(index); + CollectionsMarshal.SetCount(list170, index); + Span span170 = CollectionsMarshal.AsSpan(list170); + num = 0; + ref QuestSequence reference123 = ref span170[num]; + QuestSequence obj112 = new QuestSequence + { + Sequence = 0 + }; + num2 = 2; + List list171 = new List(num2); + CollectionsMarshal.SetCount(list171, num2); + Span span171 = CollectionsMarshal.AsSpan(list171); + index2 = 0; + span171[index2] = new QuestStep(EInteractionType.Interact, 1049793u, new Vector3(364.3396f, 60.125f, 357.1068f), 1186) + { + TargetTerritoryId = (ushort)1224, + AetheryteShortcut = EAetheryteLocation.SolutionNine, + AethernetShortcut = new AethernetShortcut + { + From = EAetheryteLocation.SolutionNine, + To = EAetheryteLocation.SolutionNineTheArcadion + }, + SkipConditions = new SkipConditions + { + AetheryteShortcutIf = new SkipAetheryteCondition + { + InSameTerritory = true + } + } + }; + index2++; + span171[index2] = new QuestStep(EInteractionType.AcceptQuest, 1053792u, new Vector3(1.9683228f, -2.3974921E-12f, -11.12384f), 1224); + obj112.Steps = list171; + reference123 = obj112; + num++; + ref QuestSequence reference124 = ref span170[num]; + QuestSequence obj113 = new QuestSequence + { + Sequence = 1 + }; + index2 = 1; + List list172 = new List(index2); + CollectionsMarshal.SetCount(list172, index2); + Span span172 = CollectionsMarshal.AsSpan(list172); + num2 = 0; + span172[num2] = new QuestStep(EInteractionType.Interact, 1056307u, new Vector3(4.257263f, 0f, -6.4851074f), 1344); + obj113.Steps = list172; + reference124 = obj113; + num++; + ref QuestSequence reference125 = ref span170[num]; + QuestSequence obj114 = new QuestSequence + { + Sequence = 2 + }; + num2 = 2; + List list173 = new List(num2); + CollectionsMarshal.SetCount(list173, num2); + Span span173 = CollectionsMarshal.AsSpan(list173); + index2 = 0; + span173[index2] = new QuestStep(EInteractionType.Interact, 2015047u, new Vector3(4.0749f, 0.81f, 10.5759f), 1344) + { + TargetTerritoryId = (ushort)1186 + }; + index2++; + span173[index2] = new QuestStep(EInteractionType.Interact, 1056308u, new Vector3(491.1726f, 59.549995f, 123.91846f), 1186); + obj114.Steps = list173; + reference125 = obj114; + num++; + ref QuestSequence reference126 = ref span170[num]; + QuestSequence obj115 = new QuestSequence + { + Sequence = 3 + }; + index2 = 3; + List list174 = new List(index2); + CollectionsMarshal.SetCount(list174, index2); + Span span174 = CollectionsMarshal.AsSpan(list174); + num2 = 0; + ref QuestStep reference127 = ref span174[num2]; + QuestStep questStep15 = new QuestStep(EInteractionType.Interact, 1056310u, new Vector3(391.4701f, 60f, 75.42529f), 1186); + num3 = 6; + List list175 = new List(num3); + CollectionsMarshal.SetCount(list175, num3); + Span span175 = CollectionsMarshal.AsSpan(list175); + index3 = 0; + span175[index3] = null; + index3++; + span175[index3] = null; + index3++; + span175[index3] = null; + index3++; + span175[index3] = null; + index3++; + span175[index3] = null; + index3++; + span175[index3] = new QuestWorkValue((byte)8, null, EQuestWorkMode.Bitwise); + questStep15.CompletionQuestVariablesFlags = list175; + reference127 = questStep15; + num2++; + ref QuestStep reference128 = ref span174[num2]; + QuestStep questStep16 = new QuestStep(EInteractionType.Interact, 1056311u, new Vector3(379.99524f, 50.749996f, 172.0149f), 1186); + index3 = 6; + List list176 = new List(index3); + CollectionsMarshal.SetCount(list176, index3); + Span span176 = CollectionsMarshal.AsSpan(list176); + num3 = 0; + span176[num3] = null; + num3++; + span176[num3] = null; + num3++; + span176[num3] = null; + num3++; + span176[num3] = null; + num3++; + span176[num3] = null; + num3++; + span176[num3] = new QuestWorkValue((byte)12, null, EQuestWorkMode.Bitwise); + questStep16.CompletionQuestVariablesFlags = list176; + reference128 = questStep16; + num2++; + span174[num2] = new QuestStep(EInteractionType.Interact, 1056312u, new Vector3(340.81018f, 50.75f, 278.43127f), 1186); + obj115.Steps = list174; + reference126 = obj115; + num++; + ref QuestSequence reference129 = ref span170[num]; + QuestSequence obj116 = new QuestSequence + { + Sequence = byte.MaxValue + }; + num2 = 1; + List list177 = new List(num2); + CollectionsMarshal.SetCount(list177, num2); + Span span177 = CollectionsMarshal.AsSpan(list177); + index2 = 0; + span177[index2] = new QuestStep(EInteractionType.CompleteQuest, 1049787u, new Vector3(364.3396f, 60.125f, 357.1068f), 1186) + { + NextQuestId = new QuestId(5439) + }; + obj116.Steps = list177; + reference129 = obj116; + questRoot22.QuestSequence = list170; + AddQuest(questId22, questRoot22); + QuestId questId23 = new QuestId(5439); + QuestRoot questRoot23 = new QuestRoot(); + num = 1; + List list178 = new List(num); + CollectionsMarshal.SetCount(list178, num); + Span span178 = CollectionsMarshal.AsSpan(list178); + index = 0; + span178[index] = "WigglyMuffin"; + questRoot23.Author = list178; + index = 4; + List list179 = new List(index); + CollectionsMarshal.SetCount(list179, index); + Span span179 = CollectionsMarshal.AsSpan(list179); + num = 0; + ref QuestSequence reference130 = ref span179[num]; + QuestSequence obj117 = new QuestSequence + { + Sequence = 0 + }; + index2 = 2; + List list180 = new List(index2); + CollectionsMarshal.SetCount(list180, index2); + Span span180 = CollectionsMarshal.AsSpan(list180); + num2 = 0; + span180[num2] = new QuestStep(EInteractionType.Interact, 1049793u, new Vector3(364.3396f, 60.125f, 357.1068f), 1186) + { + TargetTerritoryId = (ushort)1224, + AetheryteShortcut = EAetheryteLocation.SolutionNine, + AethernetShortcut = new AethernetShortcut + { + From = EAetheryteLocation.SolutionNine, + To = EAetheryteLocation.SolutionNineTheArcadion + }, + SkipConditions = new SkipConditions + { + AetheryteShortcutIf = new SkipAetheryteCondition + { + InSameTerritory = true + } + } + }; + num2++; + span180[num2] = new QuestStep(EInteractionType.AcceptQuest, 1053745u, new Vector3(1.6326294f, -2.9191749E-12f, -12.466675f), 1224); + obj117.Steps = list180; + reference130 = obj117; + num++; + ref QuestSequence reference131 = ref span179[num]; + QuestSequence obj118 = new QuestSequence + { + Sequence = 1 + }; + num2 = 1; + List list181 = new List(num2); + CollectionsMarshal.SetCount(list181, num2); + Span span181 = CollectionsMarshal.AsSpan(list181); + index2 = 0; + span181[index2] = new QuestStep(EInteractionType.Duty, null, null, 1224) + { + DutyOptions = new DutyOptions + { + ContentFinderConditionId = 1072u + } + }; + obj118.Steps = list181; + reference131 = obj118; + num++; + span179[num] = new QuestSequence + { + Sequence = 2 + }; + num++; + ref QuestSequence reference132 = ref span179[num]; + QuestSequence obj119 = new QuestSequence + { + Sequence = byte.MaxValue + }; + index2 = 1; + List list182 = new List(index2); + CollectionsMarshal.SetCount(list182, index2); + Span span182 = CollectionsMarshal.AsSpan(list182); + num2 = 0; + span182[num2] = new QuestStep(EInteractionType.CompleteQuest, 1053792u, new Vector3(1.9683228f, -2.3974921E-12f, -11.12384f), 1224) + { + NextQuestId = new QuestId(5440) + }; + obj119.Steps = list182; + reference132 = obj119; + questRoot23.QuestSequence = list179; + AddQuest(questId23, questRoot23); + QuestId questId24 = new QuestId(5440); + QuestRoot questRoot24 = new QuestRoot(); + num = 1; + List list183 = new List(num); + CollectionsMarshal.SetCount(list183, num); + Span span183 = CollectionsMarshal.AsSpan(list183); + index = 0; + span183[index] = "WigglyMuffin"; + questRoot24.Author = list183; + index = 6; + List list184 = new List(index); + CollectionsMarshal.SetCount(list184, index); + Span span184 = CollectionsMarshal.AsSpan(list184); + num = 0; + ref QuestSequence reference133 = ref span184[num]; + QuestSequence obj120 = new QuestSequence + { + Sequence = 0 + }; + num2 = 2; + List list185 = new List(num2); + CollectionsMarshal.SetCount(list185, num2); + Span span185 = CollectionsMarshal.AsSpan(list185); + index2 = 0; + span185[index2] = new QuestStep(EInteractionType.Interact, 1049793u, new Vector3(364.3396f, 60.125f, 357.1068f), 1186) + { + TargetTerritoryId = (ushort)1224, + AetheryteShortcut = EAetheryteLocation.SolutionNine, + AethernetShortcut = new AethernetShortcut + { + From = EAetheryteLocation.SolutionNine, + To = EAetheryteLocation.SolutionNineTheArcadion + }, + SkipConditions = new SkipConditions + { + AetheryteShortcutIf = new SkipAetheryteCondition + { + InSameTerritory = true + } + } + }; + index2++; + span185[index2] = new QuestStep(EInteractionType.AcceptQuest, 1053792u, new Vector3(1.9683228f, -2.3974921E-12f, -11.12384f), 1224); + obj120.Steps = list185; + reference133 = obj120; + num++; + ref QuestSequence reference134 = ref span184[num]; + QuestSequence obj121 = new QuestSequence + { + Sequence = 1 + }; + index2 = 1; + List list186 = new List(index2); + CollectionsMarshal.SetCount(list186, index2); + Span span186 = CollectionsMarshal.AsSpan(list186); + num2 = 0; + span186[num2] = new QuestStep(EInteractionType.Duty, null, null, 1224) + { + DutyOptions = new DutyOptions + { + ContentFinderConditionId = 1074u + } + }; + obj121.Steps = list186; + reference134 = obj121; + num++; + span184[num] = new QuestSequence + { + Sequence = 2 + }; + num++; + ref QuestSequence reference135 = ref span184[num]; + QuestSequence obj122 = new QuestSequence + { + Sequence = 3 + }; + num2 = 1; + List list187 = new List(num2); + CollectionsMarshal.SetCount(list187, num2); + Span span187 = CollectionsMarshal.AsSpan(list187); + index2 = 0; + span187[index2] = new QuestStep(EInteractionType.Interact, 1056316u, new Vector3(-3.5858765f, 0.25695172f, -4.3793945f), 1223); + obj122.Steps = list187; + reference135 = obj122; + num++; + ref QuestSequence reference136 = ref span184[num]; + QuestSequence obj123 = new QuestSequence + { + Sequence = 4 + }; + index2 = 2; + List list188 = new List(index2); + CollectionsMarshal.SetCount(list188, index2); + Span span188 = CollectionsMarshal.AsSpan(list188); + num2 = 0; + span188[num2] = new QuestStep(EInteractionType.Interact, 1049793u, new Vector3(364.3396f, 60.125f, 357.1068f), 1186) + { + TargetTerritoryId = (ushort)1224, + AetheryteShortcut = EAetheryteLocation.SolutionNine, + AethernetShortcut = new AethernetShortcut + { + From = EAetheryteLocation.SolutionNine, + To = EAetheryteLocation.SolutionNineTheArcadion + }, + SkipConditions = new SkipConditions + { + AetheryteShortcutIf = new SkipAetheryteCondition + { + InSameTerritory = true + } + } + }; + num2++; + ref QuestStep reference137 = ref span188[num2]; + QuestStep questStep17 = new QuestStep(EInteractionType.Interact, 1058423u, new Vector3(-0.015319824f, -3.1291775E-12f, -15.42688f), 1224); + num3 = 1; + List list189 = new List(num3); + CollectionsMarshal.SetCount(list189, num3); + Span span189 = CollectionsMarshal.AsSpan(list189); + index3 = 0; + span189[index3] = new DialogueChoice + { + Type = EDialogChoiceType.YesNo, + Prompt = new ExcelRef("TEXT_KINGRA306_05440_Q3_000_000") + }; + questStep17.DialogueChoices = list189; + reference137 = questStep17; + obj123.Steps = list188; + reference136 = obj123; + num++; + ref QuestSequence reference138 = ref span184[num]; + QuestSequence obj124 = new QuestSequence + { + Sequence = byte.MaxValue + }; + num2 = 1; + List list190 = new List(num2); + CollectionsMarshal.SetCount(list190, num2); + Span span190 = CollectionsMarshal.AsSpan(list190); + index2 = 0; + span190[index2] = new QuestStep(EInteractionType.CompleteQuest, 1058424u, new Vector3(494.7433f, 59.55f, 125.10864f), 1186); + obj124.Steps = list190; + reference138 = obj124; + questRoot24.QuestSequence = list184; + AddQuest(questId24, questRoot24); } } diff --git a/Questionable/Questionable.Controller.GameUi/InteractionUiController.cs b/Questionable/Questionable.Controller.GameUi/InteractionUiController.cs index 6b7c434..3ec2f5d 100644 --- a/Questionable/Questionable.Controller.GameUi/InteractionUiController.cs +++ b/Questionable/Questionable.Controller.GameUi/InteractionUiController.cs @@ -6,7 +6,6 @@ using System.Runtime.InteropServices; using System.Text.RegularExpressions; using Dalamud.Game.Addon.Lifecycle; using Dalamud.Game.Addon.Lifecycle.AddonArgTypes; -using Dalamud.Game.ClientState.Objects; using Dalamud.Game.ClientState.Objects.Types; using Dalamud.Plugin.Services; using FFXIVClientStructs.FFXIV.Client.Game.Event; diff --git a/Questionable/Questionable.Controller.Steps.Interactions/Dive.cs b/Questionable/Questionable.Controller.Steps.Interactions/Dive.cs index 0b7b8b1..80a6ac2 100644 --- a/Questionable/Questionable.Controller.Steps.Interactions/Dive.cs +++ b/Questionable/Questionable.Controller.Steps.Interactions/Dive.cs @@ -94,18 +94,22 @@ internal static class Dive private unsafe void Descend() { - UIInputData.Keybind keybind = default(UIInputData.Keybind); + byte* ptr = stackalloc byte[16]; Utf8String* name = Utf8String.FromString("MOVE_DESCENT"); - UIInputData.Instance()->GetKeybindByName(name, (Keybind*)(&keybind)); - logger.LogInformation("Dive keybind: {Key1} + {Modifier1}, {Key2} + {Modifier2}", keybind.Key, keybind.Modifier, keybind.AltKey, keybind.AltModifier); + UIInputData.Instance()->GetKeybindByName(name, (Keybind*)ptr); + SeVirtualKey seVirtualKey = (SeVirtualKey)(*(uint*)ptr); + byte b = ptr[4]; + SeVirtualKey seVirtualKey2 = (SeVirtualKey)((uint*)ptr)[2]; + byte b2 = ptr[12]; + logger.LogInformation("Dive keybind: {Key1} + {Modifier1}, {Key2} + {Modifier2}", seVirtualKey, b, seVirtualKey2, b2); int num = 2; List> list = new List>(num); CollectionsMarshal.SetCount(list, num); Span> span = CollectionsMarshal.AsSpan(list); int num2 = 0; - span[num2] = GetKeysToPress(keybind.Key, keybind.Modifier); + span[num2] = GetKeysToPress(seVirtualKey, b); num2++; - span[num2] = GetKeysToPress(keybind.AltKey, keybind.AltModifier); + span[num2] = GetKeysToPress(seVirtualKey2, b2); List list2 = (from x in list where x != null select (x)).MinBy((List x) => x.Count); @@ -142,18 +146,18 @@ internal static class Dive public static extern nint SendMessage(nint hWnd, uint Msg, nint wParam, nint lParam); } - private static List? GetKeysToPress(SeVirtualKey key, ModifierFlag modifier) + private static List? GetKeysToPress(SeVirtualKey key, byte modifier) { List list = new List(); - if (modifier.HasFlag(ModifierFlag.Ctrl)) + if ((modifier & 1) != 0) { list.Add(17); } - if (modifier.HasFlag(ModifierFlag.Shift)) + if ((modifier & 2) != 0) { list.Add(16); } - if (modifier.HasFlag(ModifierFlag.Alt)) + if ((modifier & 4) != 0) { list.Add(18); } diff --git a/Questionable/Questionable.Controller.Steps.Interactions/SinglePlayerDuty.cs b/Questionable/Questionable.Controller.Steps.Interactions/SinglePlayerDuty.cs index da963d0..5fa1820 100644 --- a/Questionable/Questionable.Controller.Steps.Interactions/SinglePlayerDuty.cs +++ b/Questionable/Questionable.Controller.Steps.Interactions/SinglePlayerDuty.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Linq; using System.Numerics; using Dalamud.Game.ClientState.Conditions; -using Dalamud.Game.ClientState.Objects; using Dalamud.Game.ClientState.Objects.Types; using Dalamud.Plugin.Services; using FFXIVClientStructs.FFXIV.Client.Game; diff --git a/Questionable/Questionable.Controller/CombatController.cs b/Questionable/Questionable.Controller/CombatController.cs index bffe604..c2a2294 100644 --- a/Questionable/Questionable.Controller/CombatController.cs +++ b/Questionable/Questionable.Controller/CombatController.cs @@ -4,7 +4,6 @@ using System.Linq; using System.Numerics; using System.Runtime.InteropServices; using Dalamud.Game.ClientState.Conditions; -using Dalamud.Game.ClientState.Objects; using Dalamud.Game.ClientState.Objects.Enums; using Dalamud.Game.ClientState.Objects.Types; using Dalamud.Plugin.Services; diff --git a/Questionable/Questionable.Controller/CommandHandler.cs b/Questionable/Questionable.Controller/CommandHandler.cs index 3e7678c..3da8782 100644 --- a/Questionable/Questionable.Controller/CommandHandler.cs +++ b/Questionable/Questionable.Controller/CommandHandler.cs @@ -1,5 +1,4 @@ using System; -using Dalamud.Game.ClientState.Objects; using Dalamud.Game.Command; using Dalamud.Plugin.Services; using Questionable.Functions; diff --git a/Questionable/Questionable.Controller/MovementController.cs b/Questionable/Questionable.Controller/MovementController.cs index 5e68569..be5b48d 100644 --- a/Questionable/Questionable.Controller/MovementController.cs +++ b/Questionable/Questionable.Controller/MovementController.cs @@ -13,6 +13,7 @@ using Dalamud.Game.ClientState.Objects.SubKinds; using Dalamud.Game.ClientState.Objects.Types; using Dalamud.Plugin.Ipc.Exceptions; using Dalamud.Plugin.Services; +using FFXIVClientStructs.FFXIV.Client.Enums; using FFXIVClientStructs.FFXIV.Client.Game; using FFXIVClientStructs.FFXIV.Client.Game.Control; using Microsoft.Extensions.Logging; @@ -689,14 +690,14 @@ internal sealed class MovementController : IDisposable bool flag2; switch (GameMain.Instance()->CurrentTerritoryIntendedUseId) { - case 0: - case 7: - case 13: - case 14: - case 15: - case 19: - case 23: - case 29: + case TerritoryIntendedUse.Town: + case TerritoryIntendedUse.BeforeTrialDung: + case TerritoryIntendedUse.HousingOutdoor: + case TerritoryIntendedUse.HousingIndoor: + case TerritoryIntendedUse.SoloOverworldInstances: + case TerritoryIntendedUse.ChocoboSquareOld: + case TerritoryIntendedUse.GoldSaucer: + case TerritoryIntendedUse.SoloDuty: flag2 = true; break; default: diff --git a/Questionable/Questionable.Controller/QuestController.cs b/Questionable/Questionable.Controller/QuestController.cs index 8cf8137..c0f2935 100644 --- a/Questionable/Questionable.Controller/QuestController.cs +++ b/Questionable/Questionable.Controller/QuestController.cs @@ -99,6 +99,8 @@ internal sealed class QuestController : MiniTaskController private readonly QuestRegistry _questRegistry; + private readonly JournalData _journalData; + private readonly IKeyState _keyState; private readonly IChatGui _chatGui; @@ -234,7 +236,7 @@ internal sealed class QuestController : MiniTaskController public event AutomationTypeChangedEventHandler? AutomationTypeChanged; - public QuestController(IClientState clientState, IObjectTable objectTable, GameFunctions gameFunctions, QuestFunctions questFunctions, MovementController movementController, CombatController combatController, GatheringController gatheringController, ILogger logger, QuestRegistry questRegistry, IKeyState keyState, IChatGui chatGui, ICondition condition, IToastGui toastGui, Configuration configuration, TaskCreator taskCreator, IServiceProvider serviceProvider, InterruptHandler interruptHandler, IDataManager dataManager, SinglePlayerDutyConfigComponent singlePlayerDutyConfigComponent) + public QuestController(IClientState clientState, IObjectTable objectTable, GameFunctions gameFunctions, QuestFunctions questFunctions, MovementController movementController, CombatController combatController, GatheringController gatheringController, ILogger logger, QuestRegistry questRegistry, JournalData journalData, IKeyState keyState, IChatGui chatGui, ICondition condition, IToastGui toastGui, Configuration configuration, TaskCreator taskCreator, IServiceProvider serviceProvider, InterruptHandler interruptHandler, IDataManager dataManager, SinglePlayerDutyConfigComponent singlePlayerDutyConfigComponent) : base(chatGui, condition, serviceProvider, interruptHandler, dataManager, logger) { _clientState = clientState; @@ -245,6 +247,7 @@ internal sealed class QuestController : MiniTaskController _combatController = combatController; _gatheringController = gatheringController; _questRegistry = questRegistry; + _journalData = journalData; _keyState = keyState; _chatGui = chatGui; _condition = condition; @@ -1231,7 +1234,7 @@ internal sealed class QuestController : MiniTaskController _logger.LogDebug("Excluding allied society quest {QuestId} from bulk add", quest.Id); return false; } - if (quest.Info is QuestInfo { MoogleDeliveryLevel: >0 }) + if (quest.Info is QuestInfo questInfo && _journalData.MoogleDeliveryGenreId.HasValue && questInfo.JournalGenre == _journalData.MoogleDeliveryGenreId.Value) { _logger.LogDebug("Excluding moogle delivery quest {QuestId} from bulk add", quest.Id); return false; diff --git a/Questionable/Questionable.Data/ChangelogData.cs b/Questionable/Questionable.Data/ChangelogData.cs index 407407e..d40ec80 100644 --- a/Questionable/Questionable.Data/ChangelogData.cs +++ b/Questionable/Questionable.Data/ChangelogData.cs @@ -11,7 +11,7 @@ internal static class ChangelogData static ChangelogData() { - int num = 45; + int num = 46; List list = new List(num); CollectionsMarshal.SetCount(list, num); Span span = CollectionsMarshal.AsSpan(list); @@ -23,862 +23,856 @@ internal static class ChangelogData CollectionsMarshal.SetCount(list2, num3); Span span2 = CollectionsMarshal.AsSpan(list2); int index = 0; - span2[index] = new ChangeEntry(EChangeCategory.Changed, "Api 14 update"); - reference = new ChangelogEntry("7.4.0", releaseDate, list2); - num2++; - ref ChangelogEntry reference2 = ref span[num2]; - DateOnly releaseDate2 = new DateOnly(2025, 12, 6); - index = 2; - List list3 = new List(index); - CollectionsMarshal.SetCount(list3, index); - Span span3 = CollectionsMarshal.AsSpan(list3); - num3 = 0; - ref ChangeEntry reference3 = ref span3[num3]; - int num4 = 4; - List list4 = new List(num4); - CollectionsMarshal.SetCount(list4, num4); - Span span4 = CollectionsMarshal.AsSpan(list4); + ref ChangeEntry reference2 = ref span2[index]; + int num4 = 2; + List list3 = new List(num4); + CollectionsMarshal.SetCount(list3, num4); + Span span3 = CollectionsMarshal.AsSpan(list3); int num5 = 0; - span4[num5] = "Added reloading and rebuilding to movement system"; + span3[num5] = "Add 7.4 MSQ"; num5++; - span4[num5] = "Improved interrupts and refresh states to allow continuation of questing"; - num5++; - span4[num5] = "Added player input detection to stop automation when manually moving character"; - num5++; - span4[num5] = "Added various missing quest sequences"; - reference3 = new ChangeEntry(EChangeCategory.Changed, "Improvements", list4); - num3++; - ref ChangeEntry reference4 = ref span3[num3]; - num5 = 1; - List list5 = new List(num5); - CollectionsMarshal.SetCount(list5, num5); - Span span5 = CollectionsMarshal.AsSpan(list5); - num4 = 0; - span5[num4] = "Fixed reset task state to prevent stuck interactions after interruption"; - reference4 = new ChangeEntry(EChangeCategory.Fixed, "Fixes", list5); - reference2 = new ChangelogEntry("7.38.9", releaseDate2, list3); + span3[num5] = "Add 7.4 Arcadion Raid quests"; + reference2 = new ChangeEntry(EChangeCategory.QuestUpdates, "New Quest Paths", list3); + reference = new ChangelogEntry("7.4.1", releaseDate, list2); num2++; - ref ChangelogEntry reference5 = ref span[num2]; - DateOnly releaseDate3 = new DateOnly(2025, 11, 29); + ref ChangelogEntry reference3 = ref span[num2]; + DateOnly releaseDate2 = new DateOnly(2025, 12, 17); + index = 1; + List list4 = new List(index); + CollectionsMarshal.SetCount(list4, index); + Span span4 = CollectionsMarshal.AsSpan(list4); + num3 = 0; + span4[num3] = new ChangeEntry(EChangeCategory.Changed, "Api 14 update"); + reference3 = new ChangelogEntry("7.4.0", releaseDate2, list4); + num2++; + ref ChangelogEntry reference4 = ref span[num2]; + DateOnly releaseDate3 = new DateOnly(2025, 12, 6); num3 = 2; - List list6 = new List(num3); - CollectionsMarshal.SetCount(list6, num3); - Span span6 = CollectionsMarshal.AsSpan(list6); + List list5 = new List(num3); + CollectionsMarshal.SetCount(list5, num3); + Span span5 = CollectionsMarshal.AsSpan(list5); index = 0; - ref ChangeEntry reference6 = ref span6[index]; - num4 = 3; + ref ChangeEntry reference5 = ref span5[index]; + num5 = 4; + List list6 = new List(num5); + CollectionsMarshal.SetCount(list6, num5); + Span span6 = CollectionsMarshal.AsSpan(list6); + num4 = 0; + span6[num4] = "Added reloading and rebuilding to movement system"; + num4++; + span6[num4] = "Improved interrupts and refresh states to allow continuation of questing"; + num4++; + span6[num4] = "Added player input detection to stop automation when manually moving character"; + num4++; + span6[num4] = "Added various missing quest sequences"; + reference5 = new ChangeEntry(EChangeCategory.Changed, "Improvements", list6); + index++; + ref ChangeEntry reference6 = ref span5[index]; + num4 = 1; List list7 = new List(num4); CollectionsMarshal.SetCount(list7, num4); Span span7 = CollectionsMarshal.AsSpan(list7); num5 = 0; - span7[num5] = "Movement update with automatic retrying if character can't reach target position"; - num5++; - span7[num5] = "Added Hunt mob data"; - num5++; - span7[num5] = "Refactored commands"; - reference6 = new ChangeEntry(EChangeCategory.Changed, "Improvements", list7); - index++; - ref ChangeEntry reference7 = ref span6[index]; - num5 = 3; - List list8 = new List(num5); - CollectionsMarshal.SetCount(list8, num5); - Span span8 = CollectionsMarshal.AsSpan(list8); - num4 = 0; - span8[num4] = "Fixed quest (Way of the Archer)"; - num4++; - span8[num4] = "Fixed quest (Spirithold Broken)"; - num4++; - span8[num4] = "Fixed quest (It's Probably Not Pirates)"; - reference7 = new ChangeEntry(EChangeCategory.Fixed, "Bug fixes", list8); - reference5 = new ChangelogEntry("7.38.8", releaseDate3, list6); + span7[num5] = "Fixed reset task state to prevent stuck interactions after interruption"; + reference6 = new ChangeEntry(EChangeCategory.Fixed, "Fixes", list7); + reference4 = new ChangelogEntry("7.38.9", releaseDate3, list5); num2++; - ref ChangelogEntry reference8 = ref span[num2]; - DateOnly releaseDate4 = new DateOnly(2025, 11, 25); + ref ChangelogEntry reference7 = ref span[num2]; + DateOnly releaseDate4 = new DateOnly(2025, 11, 29); index = 2; - List list9 = new List(index); - CollectionsMarshal.SetCount(list9, index); - Span span9 = CollectionsMarshal.AsSpan(list9); + List list8 = new List(index); + CollectionsMarshal.SetCount(list8, index); + Span span8 = CollectionsMarshal.AsSpan(list8); num3 = 0; - ref ChangeEntry reference9 = ref span9[num3]; - num4 = 2; + ref ChangeEntry reference8 = ref span8[num3]; + num5 = 3; + List list9 = new List(num5); + CollectionsMarshal.SetCount(list9, num5); + Span span9 = CollectionsMarshal.AsSpan(list9); + num4 = 0; + span9[num4] = "Movement update with automatic retrying if character can't reach target position"; + num4++; + span9[num4] = "Added Hunt mob data"; + num4++; + span9[num4] = "Refactored commands"; + reference8 = new ChangeEntry(EChangeCategory.Changed, "Improvements", list9); + num3++; + ref ChangeEntry reference9 = ref span8[num3]; + num4 = 3; List list10 = new List(num4); CollectionsMarshal.SetCount(list10, num4); Span span10 = CollectionsMarshal.AsSpan(list10); num5 = 0; - span10[num5] = "Added individual sequence stop condition for each quest"; + span10[num5] = "Fixed quest (Way of the Archer)"; num5++; - span10[num5] = "Added Trials to Duties tab in config"; - reference9 = new ChangeEntry(EChangeCategory.Added, "Major features", list10); - num3++; - ref ChangeEntry reference10 = ref span9[num3]; - num5 = 1; - List list11 = new List(num5); - CollectionsMarshal.SetCount(list11, num5); - Span span11 = CollectionsMarshal.AsSpan(list11); - num4 = 0; - span11[num4] = "Added IPC for stop conditions: GetQuestSequenceStopCondition, SetQuestSequenceStopCondition, RemoveQuestSequenceStopCondition, GetAllQuestSequenceStopConditions"; - reference10 = new ChangeEntry(EChangeCategory.Added, "IPC changes", list11); - reference8 = new ChangelogEntry("7.38.7", releaseDate4, list9); + span10[num5] = "Fixed quest (Spirithold Broken)"; + num5++; + span10[num5] = "Fixed quest (It's Probably Not Pirates)"; + reference9 = new ChangeEntry(EChangeCategory.Fixed, "Bug fixes", list10); + reference7 = new ChangelogEntry("7.38.8", releaseDate4, list8); num2++; - ref ChangelogEntry reference11 = ref span[num2]; + ref ChangelogEntry reference10 = ref span[num2]; DateOnly releaseDate5 = new DateOnly(2025, 11, 25); - num3 = 3; - List list12 = new List(num3); - CollectionsMarshal.SetCount(list12, num3); - Span span12 = CollectionsMarshal.AsSpan(list12); + num3 = 2; + List list11 = new List(num3); + CollectionsMarshal.SetCount(list11, num3); + Span span11 = CollectionsMarshal.AsSpan(list11); index = 0; - ref ChangeEntry reference12 = ref span12[index]; - num4 = 2; + ref ChangeEntry reference11 = ref span11[index]; + num5 = 2; + List list12 = new List(num5); + CollectionsMarshal.SetCount(list12, num5); + Span span12 = CollectionsMarshal.AsSpan(list12); + num4 = 0; + span12[num4] = "Added individual sequence stop condition for each quest"; + num4++; + span12[num4] = "Added Trials to Duties tab in config"; + reference11 = new ChangeEntry(EChangeCategory.Added, "Major features", list12); + index++; + ref ChangeEntry reference12 = ref span11[index]; + num4 = 1; List list13 = new List(num4); CollectionsMarshal.SetCount(list13, num4); Span span13 = CollectionsMarshal.AsSpan(list13); num5 = 0; - span13[num5] = "Updated Allied Society journal text"; - num5++; - span13[num5] = "Improved Allied Society rank handling"; - reference12 = new ChangeEntry(EChangeCategory.Changed, "Improvements", list13); - index++; - ref ChangeEntry reference13 = ref span12[index]; - num5 = 1; - List list14 = new List(num5); - CollectionsMarshal.SetCount(list14, num5); - Span span14 = CollectionsMarshal.AsSpan(list14); - num4 = 0; - span14[num4] = "Added IPC for Allied Society: AddAlliedSocietyOptimalQuests, GetAlliedSocietyOptimalQuests"; - reference13 = new ChangeEntry(EChangeCategory.Added, "IPC changes", list14); - index++; - ref ChangeEntry reference14 = ref span12[index]; - num4 = 1; - List list15 = new List(num4); - CollectionsMarshal.SetCount(list15, num4); - Span span15 = CollectionsMarshal.AsSpan(list15); - num5 = 0; - span15[num5] = "Fixed quest (We Come in Peace)"; - reference14 = new ChangeEntry(EChangeCategory.Fixed, "Bug fixes", list15); - reference11 = new ChangelogEntry("7.38.6", releaseDate5, list12); + span13[num5] = "Added IPC for stop conditions: GetQuestSequenceStopCondition, SetQuestSequenceStopCondition, RemoveQuestSequenceStopCondition, GetAllQuestSequenceStopConditions"; + reference12 = new ChangeEntry(EChangeCategory.Added, "IPC changes", list13); + reference10 = new ChangelogEntry("7.38.7", releaseDate5, list11); num2++; - ref ChangelogEntry reference15 = ref span[num2]; - DateOnly releaseDate6 = new DateOnly(2025, 11, 24); - index = 2; - List list16 = new List(index); - CollectionsMarshal.SetCount(list16, index); - Span span16 = CollectionsMarshal.AsSpan(list16); + ref ChangelogEntry reference13 = ref span[num2]; + DateOnly releaseDate6 = new DateOnly(2025, 11, 25); + index = 3; + List list14 = new List(index); + CollectionsMarshal.SetCount(list14, index); + Span span14 = CollectionsMarshal.AsSpan(list14); num3 = 0; - ref ChangeEntry reference16 = ref span16[num3]; + ref ChangeEntry reference14 = ref span14[num3]; + num5 = 2; + List list15 = new List(num5); + CollectionsMarshal.SetCount(list15, num5); + Span span15 = CollectionsMarshal.AsSpan(list15); + num4 = 0; + span15[num4] = "Updated Allied Society journal text"; + num4++; + span15[num4] = "Improved Allied Society rank handling"; + reference14 = new ChangeEntry(EChangeCategory.Changed, "Improvements", list15); + num3++; + ref ChangeEntry reference15 = ref span14[num3]; + num4 = 1; + List list16 = new List(num4); + CollectionsMarshal.SetCount(list16, num4); + Span span16 = CollectionsMarshal.AsSpan(list16); + num5 = 0; + span16[num5] = "Added IPC for Allied Society: AddAlliedSocietyOptimalQuests, GetAlliedSocietyOptimalQuests"; + reference15 = new ChangeEntry(EChangeCategory.Added, "IPC changes", list16); + num3++; + ref ChangeEntry reference16 = ref span14[num3]; num5 = 1; List list17 = new List(num5); CollectionsMarshal.SetCount(list17, num5); Span span17 = CollectionsMarshal.AsSpan(list17); num4 = 0; - span17[num4] = "Added Allied Society daily allowance tracker with bulk quest adding buttons"; - reference16 = new ChangeEntry(EChangeCategory.Added, "Major features", list17); - num3++; - ref ChangeEntry reference17 = ref span16[num3]; - num4 = 1; - List list18 = new List(num4); - CollectionsMarshal.SetCount(list18, num4); - Span span18 = CollectionsMarshal.AsSpan(list18); - num5 = 0; - span18[num5] = "Added IPC for Allied Society: GetRemainingAllowances, GetTimeUntilReset, GetAvailableQuestIds, GetAllAvailableQuestCounts, IsMaxRank, GetCurrentRank, GetSocietiesWithAvailableQuests"; - reference17 = new ChangeEntry(EChangeCategory.Added, "IPC changes", list18); - reference15 = new ChangelogEntry("7.38.5", releaseDate6, list16); + span17[num4] = "Fixed quest (We Come in Peace)"; + reference16 = new ChangeEntry(EChangeCategory.Fixed, "Bug fixes", list17); + reference13 = new ChangelogEntry("7.38.6", releaseDate6, list14); num2++; - ref ChangelogEntry reference18 = ref span[num2]; - DateOnly releaseDate7 = new DateOnly(2025, 11, 23); + ref ChangelogEntry reference17 = ref span[num2]; + DateOnly releaseDate7 = new DateOnly(2025, 11, 24); num3 = 2; - List list19 = new List(num3); - CollectionsMarshal.SetCount(list19, num3); - Span span19 = CollectionsMarshal.AsSpan(list19); + List list18 = new List(num3); + CollectionsMarshal.SetCount(list18, num3); + Span span18 = CollectionsMarshal.AsSpan(list18); index = 0; - ref ChangeEntry reference19 = ref span19[index]; + ref ChangeEntry reference18 = ref span18[index]; + num4 = 1; + List list19 = new List(num4); + CollectionsMarshal.SetCount(list19, num4); + Span span19 = CollectionsMarshal.AsSpan(list19); + num5 = 0; + span19[num5] = "Added Allied Society daily allowance tracker with bulk quest adding buttons"; + reference18 = new ChangeEntry(EChangeCategory.Added, "Major features", list19); + index++; + ref ChangeEntry reference19 = ref span18[index]; num5 = 1; List list20 = new List(num5); CollectionsMarshal.SetCount(list20, num5); Span span20 = CollectionsMarshal.AsSpan(list20); num4 = 0; - span20[num4] = "Explicitly declare support for BMR singleplayer duty (The Rematch)"; - reference19 = new ChangeEntry(EChangeCategory.Changed, "Improvements", list20); - index++; - ref ChangeEntry reference20 = ref span19[index]; - num4 = 8; - List list21 = new List(num4); - CollectionsMarshal.SetCount(list21, num4); - Span span21 = CollectionsMarshal.AsSpan(list21); - num5 = 0; - span21[num5] = "Fixed quest (Microbrewing) to not get stuck near ramp"; - num5++; - span21[num5] = "Fixed quest (The Illuminated Land) where pathing would kill the player due to fall damage"; - num5++; - span21[num5] = "Fixed quest (It's Probably Not Pirates) improper pathing and removed unneeded step"; - num5++; - span21[num5] = "Fixed quest (The Black Wolf's Ultimatum) not exiting landing area"; - num5++; - span21[num5] = "Fixed quest (Magiteknical Failure) from not interacting with NPC due to being mounted"; - num5++; - span21[num5] = "Fixed quest (We Come in Peace) shortcut navigation"; - num5++; - span21[num5] = "Fixed quest (Poisoned Hearts) where incorrect pathing caused the player to die"; - num5++; - span21[num5] = "Fixed quests (Savage Snares) and (An Apple a Day) not detecting kills"; - reference20 = new ChangeEntry(EChangeCategory.Fixed, "Bug fixes", list21); - reference18 = new ChangelogEntry("7.38.4", releaseDate7, list19); + span20[num4] = "Added IPC for Allied Society: GetRemainingAllowances, GetTimeUntilReset, GetAvailableQuestIds, GetAllAvailableQuestCounts, IsMaxRank, GetCurrentRank, GetSocietiesWithAvailableQuests"; + reference19 = new ChangeEntry(EChangeCategory.Added, "IPC changes", list20); + reference17 = new ChangelogEntry("7.38.5", releaseDate7, list18); num2++; - ref ChangelogEntry reference21 = ref span[num2]; + ref ChangelogEntry reference20 = ref span[num2]; DateOnly releaseDate8 = new DateOnly(2025, 11, 23); - index = 3; - List list22 = new List(index); - CollectionsMarshal.SetCount(list22, index); - Span span22 = CollectionsMarshal.AsSpan(list22); + index = 2; + List list21 = new List(index); + CollectionsMarshal.SetCount(list21, index); + Span span21 = CollectionsMarshal.AsSpan(list21); num3 = 0; - ref ChangeEntry reference22 = ref span22[num3]; - num5 = 2; + ref ChangeEntry reference21 = ref span21[num3]; + num4 = 1; + List list22 = new List(num4); + CollectionsMarshal.SetCount(list22, num4); + Span span22 = CollectionsMarshal.AsSpan(list22); + num5 = 0; + span22[num5] = "Explicitly declare support for BMR singleplayer duty (The Rematch)"; + reference21 = new ChangeEntry(EChangeCategory.Changed, "Improvements", list22); + num3++; + ref ChangeEntry reference22 = ref span21[num3]; + num5 = 8; List list23 = new List(num5); CollectionsMarshal.SetCount(list23, num5); Span span23 = CollectionsMarshal.AsSpan(list23); num4 = 0; - span23[num4] = "Added RequireHq to crafting InteractionType"; + span23[num4] = "Fixed quest (Microbrewing) to not get stuck near ramp"; num4++; - span23[num4] = "Mark GC quests as Locked if rank not achieved"; - reference22 = new ChangeEntry(EChangeCategory.Changed, "Improvements", list23); - num3++; - ref ChangeEntry reference23 = ref span22[num3]; - num4 = 2; - List list24 = new List(num4); - CollectionsMarshal.SetCount(list24, num4); - Span span24 = CollectionsMarshal.AsSpan(list24); - num5 = 0; - span24[num5] = "Added IPC for stop conditions: GetStopConditionsEnabled, SetStopConditionsEnabled, GetStopQuestList, AddStopQuest, RemoveStopQuest, ClearStopQuests, GetLevelStopCondition, SetLevelStopCondition, GetSequenceStopCondition, SetSequenceStopCondition"; - num5++; - span24[num5] = "Added IPC for priority quests: GetPriorityQuests, RemovePriorityQuest, ReorderPriorityQuest, GetAvailablePresets, GetPresetQuests, AddPresetToPriority, IsPresetAvailable, IsQuestInPriority, GetQuestPriorityIndex, HasAvailablePriorityQuests"; - reference23 = new ChangeEntry(EChangeCategory.Added, "IPC changes", list24); - num3++; - ref ChangeEntry reference24 = ref span22[num3]; - num5 = 3; - List list25 = new List(num5); - CollectionsMarshal.SetCount(list25, num5); - Span span25 = CollectionsMarshal.AsSpan(list25); - num4 = 0; - span25[num4] = "Fixed line breaks not working in dialog strings"; + span23[num4] = "Fixed quest (The Illuminated Land) where pathing would kill the player due to fall damage"; num4++; - span25[num4] = "Fixed quest (Labor of Love)"; + span23[num4] = "Fixed quest (It's Probably Not Pirates) improper pathing and removed unneeded step"; num4++; - span25[num4] = "Fixed quest (Sea of Sorrow)"; - reference24 = new ChangeEntry(EChangeCategory.Fixed, "Bug fixes", list25); - reference21 = new ChangelogEntry("7.38.3", releaseDate8, list22); + span23[num4] = "Fixed quest (The Black Wolf's Ultimatum) not exiting landing area"; + num4++; + span23[num4] = "Fixed quest (Magiteknical Failure) from not interacting with NPC due to being mounted"; + num4++; + span23[num4] = "Fixed quest (We Come in Peace) shortcut navigation"; + num4++; + span23[num4] = "Fixed quest (Poisoned Hearts) where incorrect pathing caused the player to die"; + num4++; + span23[num4] = "Fixed quests (Savage Snares) and (An Apple a Day) not detecting kills"; + reference22 = new ChangeEntry(EChangeCategory.Fixed, "Bug fixes", list23); + reference20 = new ChangelogEntry("7.38.4", releaseDate8, list21); num2++; - ref ChangelogEntry reference25 = ref span[num2]; - DateOnly releaseDate9 = new DateOnly(2025, 11, 18); + ref ChangelogEntry reference23 = ref span[num2]; + DateOnly releaseDate9 = new DateOnly(2025, 11, 23); num3 = 3; - List list26 = new List(num3); - CollectionsMarshal.SetCount(list26, num3); - Span span26 = CollectionsMarshal.AsSpan(list26); + List list24 = new List(num3); + CollectionsMarshal.SetCount(list24, num3); + Span span24 = CollectionsMarshal.AsSpan(list24); index = 0; - ref ChangeEntry reference26 = ref span26[index]; + ref ChangeEntry reference24 = ref span24[index]; num4 = 2; + List list25 = new List(num4); + CollectionsMarshal.SetCount(list25, num4); + Span span25 = CollectionsMarshal.AsSpan(list25); + num5 = 0; + span25[num5] = "Added RequireHq to crafting InteractionType"; + num5++; + span25[num5] = "Mark GC quests as Locked if rank not achieved"; + reference24 = new ChangeEntry(EChangeCategory.Changed, "Improvements", list25); + index++; + ref ChangeEntry reference25 = ref span24[index]; + num5 = 2; + List list26 = new List(num5); + CollectionsMarshal.SetCount(list26, num5); + Span span26 = CollectionsMarshal.AsSpan(list26); + num4 = 0; + span26[num4] = "Added IPC for stop conditions: GetStopConditionsEnabled, SetStopConditionsEnabled, GetStopQuestList, AddStopQuest, RemoveStopQuest, ClearStopQuests, GetLevelStopCondition, SetLevelStopCondition, GetSequenceStopCondition, SetSequenceStopCondition"; + num4++; + span26[num4] = "Added IPC for priority quests: GetPriorityQuests, RemovePriorityQuest, ReorderPriorityQuest, GetAvailablePresets, GetPresetQuests, AddPresetToPriority, IsPresetAvailable, IsQuestInPriority, GetQuestPriorityIndex, HasAvailablePriorityQuests"; + reference25 = new ChangeEntry(EChangeCategory.Added, "IPC changes", list26); + index++; + ref ChangeEntry reference26 = ref span24[index]; + num4 = 3; List list27 = new List(num4); CollectionsMarshal.SetCount(list27, num4); Span span27 = CollectionsMarshal.AsSpan(list27); num5 = 0; - span27[num5] = "Auto Duty unsync options for each duty (Duty Support, Unsync Solo, Unsync Party)"; + span27[num5] = "Fixed line breaks not working in dialog strings"; num5++; - span27[num5] = "Added Auto Duty unsync options to quest schema and updated quests using old unsync method"; - reference26 = new ChangeEntry(EChangeCategory.Added, "Major features", list27); - index++; - ref ChangeEntry reference27 = ref span26[index]; - num5 = 3; - List list28 = new List(num5); - CollectionsMarshal.SetCount(list28, num5); - Span span28 = CollectionsMarshal.AsSpan(list28); - num4 = 0; - span28[num4] = "Added IPC for duty sync handling: GetDefaultDutyMode, SetDefaultDutyMode"; - num4++; - span28[num4] = "Added IPC for duty mode overrides: GetDutyModeOverride, SetDutyModeOverride"; - num4++; - span28[num4] = "Added IPC for clearing overrides: ClearDutyModeOverride, ClearAllDutyModeOverrides"; - reference27 = new ChangeEntry(EChangeCategory.Added, "IPC changes", list28); - index++; - span26[index] = new ChangeEntry(EChangeCategory.Fixed, "Fixed quest (Constant Cravings)"); - reference25 = new ChangelogEntry("7.38.2", releaseDate9, list26); + span27[num5] = "Fixed quest (Labor of Love)"; + num5++; + span27[num5] = "Fixed quest (Sea of Sorrow)"; + reference26 = new ChangeEntry(EChangeCategory.Fixed, "Bug fixes", list27); + reference23 = new ChangelogEntry("7.38.3", releaseDate9, list24); num2++; - ref ChangelogEntry reference28 = ref span[num2]; + ref ChangelogEntry reference27 = ref span[num2]; DateOnly releaseDate10 = new DateOnly(2025, 11, 18); index = 3; - List list29 = new List(index); - CollectionsMarshal.SetCount(list29, index); - Span span29 = CollectionsMarshal.AsSpan(list29); + List list28 = new List(index); + CollectionsMarshal.SetCount(list28, index); + Span span28 = CollectionsMarshal.AsSpan(list28); num3 = 0; - ref ChangeEntry reference29 = ref span29[num3]; - num4 = 1; + ref ChangeEntry reference28 = ref span28[num3]; + num5 = 2; + List list29 = new List(num5); + CollectionsMarshal.SetCount(list29, num5); + Span span29 = CollectionsMarshal.AsSpan(list29); + num4 = 0; + span29[num4] = "Auto Duty unsync options for each duty (Duty Support, Unsync Solo, Unsync Party)"; + num4++; + span29[num4] = "Added Auto Duty unsync options to quest schema and updated quests using old unsync method"; + reference28 = new ChangeEntry(EChangeCategory.Added, "Major features", list29); + num3++; + ref ChangeEntry reference29 = ref span28[num3]; + num4 = 3; List list30 = new List(num4); CollectionsMarshal.SetCount(list30, num4); Span span30 = CollectionsMarshal.AsSpan(list30); num5 = 0; - span30[num5] = "Added new fields to quest schema"; - reference29 = new ChangeEntry(EChangeCategory.Changed, "Improvements", list30); - num3++; - ref ChangeEntry reference30 = ref span29[num3]; - num5 = 3; - List list31 = new List(num5); - CollectionsMarshal.SetCount(list31, num5); - Span span31 = CollectionsMarshal.AsSpan(list31); - num4 = 0; - span31[num4] = "A Faerie Tale Come True"; - num4++; - span31[num4] = "Constant Cravings"; - num4++; - span31[num4] = "A Bridge Too Full"; - reference30 = new ChangeEntry(EChangeCategory.QuestUpdates, "Added new quest paths", list31); - num3++; - ref ChangeEntry reference31 = ref span29[num3]; - num4 = 3; - List list32 = new List(num4); - CollectionsMarshal.SetCount(list32, num4); - Span span32 = CollectionsMarshal.AsSpan(list32); - num5 = 0; - span32[num5] = "Fixed various quest schemas"; + span30[num5] = "Added IPC for duty sync handling: GetDefaultDutyMode, SetDefaultDutyMode"; num5++; - span32[num5] = "Fixed changelog bullet point encoding"; + span30[num5] = "Added IPC for duty mode overrides: GetDutyModeOverride, SetDutyModeOverride"; num5++; - span32[num5] = "Fixed item use to wait until item is used before next action"; - reference31 = new ChangeEntry(EChangeCategory.Fixed, "Bug fixes", list32); - reference28 = new ChangelogEntry("7.38.1", releaseDate10, list29); + span30[num5] = "Added IPC for clearing overrides: ClearDutyModeOverride, ClearAllDutyModeOverrides"; + reference29 = new ChangeEntry(EChangeCategory.Added, "IPC changes", list30); + num3++; + span28[num3] = new ChangeEntry(EChangeCategory.Fixed, "Fixed quest (Constant Cravings)"); + reference27 = new ChangelogEntry("7.38.2", releaseDate10, list28); num2++; - ref ChangelogEntry reference32 = ref span[num2]; - DateOnly releaseDate11 = new DateOnly(2025, 11, 17); - num3 = 5; - List list33 = new List(num3); - CollectionsMarshal.SetCount(list33, num3); - Span span33 = CollectionsMarshal.AsSpan(list33); + ref ChangelogEntry reference30 = ref span[num2]; + DateOnly releaseDate11 = new DateOnly(2025, 11, 18); + num3 = 3; + List list31 = new List(num3); + CollectionsMarshal.SetCount(list31, num3); + Span span31 = CollectionsMarshal.AsSpan(list31); index = 0; - ref ChangeEntry reference33 = ref span33[index]; - num5 = 2; + ref ChangeEntry reference31 = ref span31[index]; + num5 = 1; + List list32 = new List(num5); + CollectionsMarshal.SetCount(list32, num5); + Span span32 = CollectionsMarshal.AsSpan(list32); + num4 = 0; + span32[num4] = "Added new fields to quest schema"; + reference31 = new ChangeEntry(EChangeCategory.Changed, "Improvements", list32); + index++; + ref ChangeEntry reference32 = ref span31[index]; + num4 = 3; + List list33 = new List(num4); + CollectionsMarshal.SetCount(list33, num4); + Span span33 = CollectionsMarshal.AsSpan(list33); + num5 = 0; + span33[num5] = "A Faerie Tale Come True"; + num5++; + span33[num5] = "Constant Cravings"; + num5++; + span33[num5] = "A Bridge Too Full"; + reference32 = new ChangeEntry(EChangeCategory.QuestUpdates, "Added new quest paths", list33); + index++; + ref ChangeEntry reference33 = ref span31[index]; + num5 = 3; List list34 = new List(num5); CollectionsMarshal.SetCount(list34, num5); Span span34 = CollectionsMarshal.AsSpan(list34); num4 = 0; - span34[num4] = "Quest sequence window to show expected sequences in each quest (with quest searching)"; + span34[num4] = "Fixed various quest schemas"; num4++; - span34[num4] = "Changelog"; - reference33 = new ChangeEntry(EChangeCategory.Added, "Major features", list34); - index++; - ref ChangeEntry reference34 = ref span33[index]; - num4 = 2; - List list35 = new List(num4); - CollectionsMarshal.SetCount(list35, num4); - Span span35 = CollectionsMarshal.AsSpan(list35); - num5 = 0; - span35[num5] = "Updated quest schemas"; - num5++; - span35[num5] = "Added search bar to preferred mounts and capitalization to mirror game mount names"; - reference34 = new ChangeEntry(EChangeCategory.Changed, "Improvements", list35); - index++; - ref ChangeEntry reference35 = ref span33[index]; - num5 = 3; - List list36 = new List(num5); - CollectionsMarshal.SetCount(list36, num5); - Span span36 = CollectionsMarshal.AsSpan(list36); - num4 = 0; - span36[num4] = "Renamed IsQuestCompleted → IsQuestComplete"; + span34[num4] = "Fixed changelog bullet point encoding"; num4++; - span36[num4] = "Renamed IsQuestAvailable → IsReadyToAcceptQuest"; - num4++; - span36[num4] = "Added GetCurrentTask IPC"; - reference35 = new ChangeEntry(EChangeCategory.Changed, "IPC changes", list36); - index++; - span33[index] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added all Hildibrand quests"); - index++; - span33[index] = new ChangeEntry(EChangeCategory.Fixed, "Fixed credits/cutscenes playback"); - reference32 = new ChangelogEntry("7.38.0", releaseDate11, list33); + span34[num4] = "Fixed item use to wait until item is used before next action"; + reference33 = new ChangeEntry(EChangeCategory.Fixed, "Bug fixes", list34); + reference30 = new ChangelogEntry("7.38.1", releaseDate11, list31); num2++; - ref ChangelogEntry reference36 = ref span[num2]; - DateOnly releaseDate12 = new DateOnly(2025, 11, 8); - index = 1; - List list37 = new List(index); - CollectionsMarshal.SetCount(list37, index); - Span span37 = CollectionsMarshal.AsSpan(list37); + ref ChangelogEntry reference34 = ref span[num2]; + DateOnly releaseDate12 = new DateOnly(2025, 11, 17); + index = 5; + List list35 = new List(index); + CollectionsMarshal.SetCount(list35, index); + Span span35 = CollectionsMarshal.AsSpan(list35); num3 = 0; - span37[num3] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added Fall Guys quest (Just Crowning Around)"); - reference36 = new ChangelogEntry("6.38", releaseDate12, list37); - num2++; - ref ChangelogEntry reference37 = ref span[num2]; - DateOnly releaseDate13 = new DateOnly(2025, 11, 8); - num3 = 1; - List list38 = new List(num3); - CollectionsMarshal.SetCount(list38, num3); - Span span38 = CollectionsMarshal.AsSpan(list38); - index = 0; - span38[index] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added Cosmic Exploration and various unlock quests"); - reference37 = new ChangelogEntry("6.37", releaseDate13, list38); + ref ChangeEntry reference35 = ref span35[num3]; + num4 = 2; + List list36 = new List(num4); + CollectionsMarshal.SetCount(list36, num4); + Span span36 = CollectionsMarshal.AsSpan(list36); + num5 = 0; + span36[num5] = "Quest sequence window to show expected sequences in each quest (with quest searching)"; + num5++; + span36[num5] = "Changelog"; + reference35 = new ChangeEntry(EChangeCategory.Added, "Major features", list36); + num3++; + ref ChangeEntry reference36 = ref span35[num3]; + num5 = 2; + List list37 = new List(num5); + CollectionsMarshal.SetCount(list37, num5); + Span span37 = CollectionsMarshal.AsSpan(list37); + num4 = 0; + span37[num4] = "Updated quest schemas"; + num4++; + span37[num4] = "Added search bar to preferred mounts and capitalization to mirror game mount names"; + reference36 = new ChangeEntry(EChangeCategory.Changed, "Improvements", list37); + num3++; + ref ChangeEntry reference37 = ref span35[num3]; + num4 = 3; + List list38 = new List(num4); + CollectionsMarshal.SetCount(list38, num4); + Span span38 = CollectionsMarshal.AsSpan(list38); + num5 = 0; + span38[num5] = "Renamed IsQuestCompleted → IsQuestComplete"; + num5++; + span38[num5] = "Renamed IsQuestAvailable → IsReadyToAcceptQuest"; + num5++; + span38[num5] = "Added GetCurrentTask IPC"; + reference37 = new ChangeEntry(EChangeCategory.Changed, "IPC changes", list38); + num3++; + span35[num3] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added all Hildibrand quests"); + num3++; + span35[num3] = new ChangeEntry(EChangeCategory.Fixed, "Fixed credits/cutscenes playback"); + reference34 = new ChangelogEntry("7.38.0", releaseDate12, list35); num2++; ref ChangelogEntry reference38 = ref span[num2]; - DateOnly releaseDate14 = new DateOnly(2025, 11, 2); - index = 1; - List list39 = new List(index); - CollectionsMarshal.SetCount(list39, index); + DateOnly releaseDate13 = new DateOnly(2025, 11, 8); + num3 = 1; + List list39 = new List(num3); + CollectionsMarshal.SetCount(list39, num3); Span span39 = CollectionsMarshal.AsSpan(list39); - num3 = 0; - span39[num3] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added 7.35 Yok Huy Rank 6 quest (With High Spirits)"); - reference38 = new ChangelogEntry("6.36", releaseDate14, list39); + index = 0; + span39[index] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added Fall Guys quest (Just Crowning Around)"); + reference38 = new ChangelogEntry("6.38", releaseDate13, list39); num2++; ref ChangelogEntry reference39 = ref span[num2]; - DateOnly releaseDate15 = new DateOnly(2025, 10, 28); - num3 = 1; - List list40 = new List(num3); - CollectionsMarshal.SetCount(list40, num3); + DateOnly releaseDate14 = new DateOnly(2025, 11, 8); + index = 1; + List list40 = new List(index); + CollectionsMarshal.SetCount(list40, index); Span span40 = CollectionsMarshal.AsSpan(list40); - index = 0; - span40[index] = new ChangeEntry(EChangeCategory.Fixed, "Fixed level 3 MSQ handling if character started on non-XP buff world"); - reference39 = new ChangelogEntry("6.35", releaseDate15, list40); + num3 = 0; + span40[num3] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added Cosmic Exploration and various unlock quests"); + reference39 = new ChangelogEntry("6.37", releaseDate14, list40); num2++; ref ChangelogEntry reference40 = ref span[num2]; - DateOnly releaseDate16 = new DateOnly(2025, 10, 23); - index = 2; - List list41 = new List(index); - CollectionsMarshal.SetCount(list41, index); + DateOnly releaseDate15 = new DateOnly(2025, 11, 2); + num3 = 1; + List list41 = new List(num3); + CollectionsMarshal.SetCount(list41, num3); Span span41 = CollectionsMarshal.AsSpan(list41); - num3 = 0; - span41[num3] = new ChangeEntry(EChangeCategory.Added, "Added clear priority quests on logout and on completion config settings"); - num3++; - span41[num3] = new ChangeEntry(EChangeCategory.Fixed, "Fixed priority quest importing to respect import order"); - reference40 = new ChangelogEntry("6.34", releaseDate16, list41); + index = 0; + span41[index] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added 7.35 Yok Huy Rank 6 quest (With High Spirits)"); + reference40 = new ChangelogEntry("6.36", releaseDate15, list41); num2++; ref ChangelogEntry reference41 = ref span[num2]; - DateOnly releaseDate17 = new DateOnly(2025, 10, 23); - num3 = 1; - List list42 = new List(num3); - CollectionsMarshal.SetCount(list42, num3); + DateOnly releaseDate16 = new DateOnly(2025, 10, 28); + index = 1; + List list42 = new List(index); + CollectionsMarshal.SetCount(list42, index); Span span42 = CollectionsMarshal.AsSpan(list42); - index = 0; - span42[index] = new ChangeEntry(EChangeCategory.Fixed, "Fixed RSR combat module"); - reference41 = new ChangelogEntry("6.33", releaseDate17, list42); + num3 = 0; + span42[num3] = new ChangeEntry(EChangeCategory.Fixed, "Fixed level 3 MSQ handling if character started on non-XP buff world"); + reference41 = new ChangelogEntry("6.35", releaseDate16, list42); num2++; ref ChangelogEntry reference42 = ref span[num2]; - DateOnly releaseDate18 = new DateOnly(2025, 10, 23); - index = 1; - List list43 = new List(index); - CollectionsMarshal.SetCount(list43, index); + DateOnly releaseDate17 = new DateOnly(2025, 10, 23); + num3 = 2; + List list43 = new List(num3); + CollectionsMarshal.SetCount(list43, num3); Span span43 = CollectionsMarshal.AsSpan(list43); - num3 = 0; - span43[num3] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added 7.35 Yok Huy Rank 5 quest (Forged in Corn)"); - reference42 = new ChangelogEntry("6.32", releaseDate18, list43); + index = 0; + span43[index] = new ChangeEntry(EChangeCategory.Added, "Added clear priority quests on logout and on completion config settings"); + index++; + span43[index] = new ChangeEntry(EChangeCategory.Fixed, "Fixed priority quest importing to respect import order"); + reference42 = new ChangelogEntry("6.34", releaseDate17, list43); num2++; ref ChangelogEntry reference43 = ref span[num2]; - DateOnly releaseDate19 = new DateOnly(2025, 10, 21); - num3 = 1; - List list44 = new List(num3); - CollectionsMarshal.SetCount(list44, num3); + DateOnly releaseDate18 = new DateOnly(2025, 10, 23); + index = 1; + List list44 = new List(index); + CollectionsMarshal.SetCount(list44, index); Span span44 = CollectionsMarshal.AsSpan(list44); - index = 0; - span44[index] = new ChangeEntry(EChangeCategory.Changed, "Added checks for moogle and allied society quests when using add all available quests"); - reference43 = new ChangelogEntry("6.31", releaseDate19, list44); + num3 = 0; + span44[num3] = new ChangeEntry(EChangeCategory.Fixed, "Fixed RSR combat module"); + reference43 = new ChangelogEntry("6.33", releaseDate18, list44); num2++; ref ChangelogEntry reference44 = ref span[num2]; - DateOnly releaseDate20 = new DateOnly(2025, 10, 21); - index = 1; - List list45 = new List(index); - CollectionsMarshal.SetCount(list45, index); + DateOnly releaseDate19 = new DateOnly(2025, 10, 23); + num3 = 1; + List list45 = new List(num3); + CollectionsMarshal.SetCount(list45, num3); Span span45 = CollectionsMarshal.AsSpan(list45); - num3 = 0; - span45[num3] = new ChangeEntry(EChangeCategory.Added, "Added button to journal that allows adding all available quests to priority"); - reference44 = new ChangelogEntry("6.30", releaseDate20, list45); + index = 0; + span45[index] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added 7.35 Yok Huy Rank 5 quest (Forged in Corn)"); + reference44 = new ChangelogEntry("6.32", releaseDate19, list45); num2++; ref ChangelogEntry reference45 = ref span[num2]; - DateOnly releaseDate21 = new DateOnly(2025, 10, 20); - num3 = 2; - List list46 = new List(num3); - CollectionsMarshal.SetCount(list46, num3); + DateOnly releaseDate20 = new DateOnly(2025, 10, 21); + index = 1; + List list46 = new List(index); + CollectionsMarshal.SetCount(list46, index); Span span46 = CollectionsMarshal.AsSpan(list46); + num3 = 0; + span46[num3] = new ChangeEntry(EChangeCategory.Changed, "Added checks for moogle and allied society quests when using add all available quests"); + reference45 = new ChangelogEntry("6.31", releaseDate20, list46); + num2++; + ref ChangelogEntry reference46 = ref span[num2]; + DateOnly releaseDate21 = new DateOnly(2025, 10, 21); + num3 = 1; + List list47 = new List(num3); + CollectionsMarshal.SetCount(list47, num3); + Span span47 = CollectionsMarshal.AsSpan(list47); index = 0; - ref ChangeEntry reference46 = ref span46[index]; - num4 = 2; - List list47 = new List(num4); - CollectionsMarshal.SetCount(list47, num4); - Span span47 = CollectionsMarshal.AsSpan(list47); - num5 = 0; - span47[num5] = "Added item count to combat handling rework"; - num5++; - span47[num5] = "Updated Pandora conflicting features"; - reference46 = new ChangeEntry(EChangeCategory.Changed, "Combat handling improvements", list47); - index++; - span46[index] = new ChangeEntry(EChangeCategory.Fixed, "Fixed quest to purchase Gysahl Greens if not in inventory"); - reference45 = new ChangelogEntry("6.29", releaseDate21, list46); + span47[index] = new ChangeEntry(EChangeCategory.Added, "Added button to journal that allows adding all available quests to priority"); + reference46 = new ChangelogEntry("6.30", releaseDate21, list47); num2++; ref ChangelogEntry reference47 = ref span[num2]; - DateOnly releaseDate22 = new DateOnly(2025, 10, 19); - index = 1; + DateOnly releaseDate22 = new DateOnly(2025, 10, 20); + index = 2; List list48 = new List(index); CollectionsMarshal.SetCount(list48, index); Span span48 = CollectionsMarshal.AsSpan(list48); num3 = 0; - span48[num3] = new ChangeEntry(EChangeCategory.Changed, "Reworked kill count combat handling - combat and enemy kills are now processed instantly"); - reference47 = new ChangelogEntry("6.28", releaseDate22, list48); - num2++; - ref ChangelogEntry reference48 = ref span[num2]; - DateOnly releaseDate23 = new DateOnly(2025, 10, 18); - num3 = 2; - List list49 = new List(num3); - CollectionsMarshal.SetCount(list49, num3); - Span span49 = CollectionsMarshal.AsSpan(list49); - index = 0; - span49[index] = new ChangeEntry(EChangeCategory.Changed, "Improved Aether Current checking logic"); - index++; - span49[index] = new ChangeEntry(EChangeCategory.Fixed, "Fixed Chocobo Taxi Stand CheckSkip error and Patch 7.3 Fantasia unlock quest date/time"); - reference48 = new ChangelogEntry("6.27", releaseDate23, list49); + ref ChangeEntry reference48 = ref span48[num3]; + num5 = 2; + List list49 = new List(num5); + CollectionsMarshal.SetCount(list49, num5); + Span span49 = CollectionsMarshal.AsSpan(list49); + num4 = 0; + span49[num4] = "Added item count to combat handling rework"; + num4++; + span49[num4] = "Updated Pandora conflicting features"; + reference48 = new ChangeEntry(EChangeCategory.Changed, "Combat handling improvements", list49); + num3++; + span48[num3] = new ChangeEntry(EChangeCategory.Fixed, "Fixed quest to purchase Gysahl Greens if not in inventory"); + reference47 = new ChangelogEntry("6.29", releaseDate22, list48); num2++; ref ChangelogEntry reference49 = ref span[num2]; - DateOnly releaseDate24 = new DateOnly(2025, 10, 18); - index = 1; - List list50 = new List(index); - CollectionsMarshal.SetCount(list50, index); + DateOnly releaseDate23 = new DateOnly(2025, 10, 19); + num3 = 1; + List list50 = new List(num3); + CollectionsMarshal.SetCount(list50, num3); Span span50 = CollectionsMarshal.AsSpan(list50); - num3 = 0; - span50[num3] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added 7.35 Yok Huy rank 4 quests"); - reference49 = new ChangelogEntry("6.26", releaseDate24, list50); + index = 0; + span50[index] = new ChangeEntry(EChangeCategory.Changed, "Reworked kill count combat handling - combat and enemy kills are now processed instantly"); + reference49 = new ChangelogEntry("6.28", releaseDate23, list50); num2++; ref ChangelogEntry reference50 = ref span[num2]; - DateOnly releaseDate25 = new DateOnly(2025, 10, 17); - num3 = 1; - List list51 = new List(num3); - CollectionsMarshal.SetCount(list51, num3); + DateOnly releaseDate24 = new DateOnly(2025, 10, 18); + index = 2; + List list51 = new List(index); + CollectionsMarshal.SetCount(list51, index); Span span51 = CollectionsMarshal.AsSpan(list51); - index = 0; - span51[index] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added All Saints' Wake 2025 quests and 7.35 Yok Huy rank 4 quests"); - reference50 = new ChangelogEntry("6.25", releaseDate25, list51); + num3 = 0; + span51[num3] = new ChangeEntry(EChangeCategory.Changed, "Improved Aether Current checking logic"); + num3++; + span51[num3] = new ChangeEntry(EChangeCategory.Fixed, "Fixed Chocobo Taxi Stand CheckSkip error and Patch 7.3 Fantasia unlock quest date/time"); + reference50 = new ChangelogEntry("6.27", releaseDate24, list51); num2++; ref ChangelogEntry reference51 = ref span[num2]; - DateOnly releaseDate26 = new DateOnly(2025, 10, 16); - index = 1; - List list52 = new List(index); - CollectionsMarshal.SetCount(list52, index); + DateOnly releaseDate25 = new DateOnly(2025, 10, 18); + num3 = 1; + List list52 = new List(num3); + CollectionsMarshal.SetCount(list52, num3); Span span52 = CollectionsMarshal.AsSpan(list52); - num3 = 0; - span52[num3] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added 7.35 Yok Huy rank 4 quests and Deep Dungeon quest"); - reference51 = new ChangelogEntry("6.24", releaseDate26, list52); + index = 0; + span52[index] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added 7.35 Yok Huy rank 4 quests"); + reference51 = new ChangelogEntry("6.26", releaseDate25, list52); num2++; ref ChangelogEntry reference52 = ref span[num2]; - DateOnly releaseDate27 = new DateOnly(2025, 10, 13); - num3 = 1; - List list53 = new List(num3); - CollectionsMarshal.SetCount(list53, num3); + DateOnly releaseDate26 = new DateOnly(2025, 10, 17); + index = 1; + List list53 = new List(index); + CollectionsMarshal.SetCount(list53, index); Span span53 = CollectionsMarshal.AsSpan(list53); - index = 0; - span53[index] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added 7.35 Yok Huy rank 3 quest (Larder Logistics)"); - reference52 = new ChangelogEntry("6.23", releaseDate27, list53); + num3 = 0; + span53[num3] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added All Saints' Wake 2025 quests and 7.35 Yok Huy rank 4 quests"); + reference52 = new ChangelogEntry("6.25", releaseDate26, list53); num2++; ref ChangelogEntry reference53 = ref span[num2]; - DateOnly releaseDate28 = new DateOnly(2025, 10, 12); - index = 3; - List list54 = new List(index); - CollectionsMarshal.SetCount(list54, index); + DateOnly releaseDate27 = new DateOnly(2025, 10, 16); + num3 = 1; + List list54 = new List(num3); + CollectionsMarshal.SetCount(list54, num3); Span span54 = CollectionsMarshal.AsSpan(list54); - num3 = 0; - span54[num3] = new ChangeEntry(EChangeCategory.Changed, "Prevent disabled or Locked quests from being started as 'Start as next quest'"); - num3++; - span54[num3] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added 7.35 Yok Huy rank 3 quests"); - num3++; - span54[num3] = new ChangeEntry(EChangeCategory.Fixed, "Fixed Yok Huy quest and journal quest chain priority issues"); - reference53 = new ChangelogEntry("6.22", releaseDate28, list54); + index = 0; + span54[index] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added 7.35 Yok Huy rank 4 quests and Deep Dungeon quest"); + reference53 = new ChangelogEntry("6.24", releaseDate27, list54); num2++; ref ChangelogEntry reference54 = ref span[num2]; - DateOnly releaseDate29 = new DateOnly(2025, 10, 12); - num3 = 2; - List list55 = new List(num3); - CollectionsMarshal.SetCount(list55, num3); + DateOnly releaseDate28 = new DateOnly(2025, 10, 13); + index = 1; + List list55 = new List(index); + CollectionsMarshal.SetCount(list55, index); Span span55 = CollectionsMarshal.AsSpan(list55); - index = 0; - span55[index] = new ChangeEntry(EChangeCategory.Added, "Added expansion abbreviation to journal window"); - index++; - span55[index] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added 7.35 Yok Huy rank 3 quests"); - reference54 = new ChangelogEntry("6.21", releaseDate29, list55); + num3 = 0; + span55[num3] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added 7.35 Yok Huy rank 3 quest (Larder Logistics)"); + reference54 = new ChangelogEntry("6.23", releaseDate28, list55); num2++; ref ChangelogEntry reference55 = ref span[num2]; - DateOnly releaseDate30 = new DateOnly(2025, 10, 10); - index = 2; - List list56 = new List(index); - CollectionsMarshal.SetCount(list56, index); + DateOnly releaseDate29 = new DateOnly(2025, 10, 12); + num3 = 3; + List list56 = new List(num3); + CollectionsMarshal.SetCount(list56, num3); Span span56 = CollectionsMarshal.AsSpan(list56); - num3 = 0; - span56[num3] = new ChangeEntry(EChangeCategory.Changed, "Allow completed repeatable quests to be used with 'Add quest and requirements to priority' feature"); - num3++; - span56[num3] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added 7.35 Yok Huy rank 1 quest (A Work of Cart)"); - reference55 = new ChangelogEntry("6.20", releaseDate30, list56); + index = 0; + span56[index] = new ChangeEntry(EChangeCategory.Changed, "Prevent disabled or Locked quests from being started as 'Start as next quest'"); + index++; + span56[index] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added 7.35 Yok Huy rank 3 quests"); + index++; + span56[index] = new ChangeEntry(EChangeCategory.Fixed, "Fixed Yok Huy quest and journal quest chain priority issues"); + reference55 = new ChangelogEntry("6.22", releaseDate29, list56); num2++; ref ChangelogEntry reference56 = ref span[num2]; - DateOnly releaseDate31 = new DateOnly(2025, 10, 9); - num3 = 3; - List list57 = new List(num3); - CollectionsMarshal.SetCount(list57, num3); + DateOnly releaseDate30 = new DateOnly(2025, 10, 12); + index = 2; + List list57 = new List(index); + CollectionsMarshal.SetCount(list57, index); Span span57 = CollectionsMarshal.AsSpan(list57); - index = 0; - span57[index] = new ChangeEntry(EChangeCategory.Added, "Added config to batch Allied Society quest turn-ins"); - index++; - span57[index] = new ChangeEntry(EChangeCategory.Changed, "Repeatable quests now show correct availability state in journal"); - index++; - span57[index] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added 7.35 Yok Huy rank 2 quests"); - reference56 = new ChangelogEntry("6.19", releaseDate31, list57); + num3 = 0; + span57[num3] = new ChangeEntry(EChangeCategory.Added, "Added expansion abbreviation to journal window"); + num3++; + span57[num3] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added 7.35 Yok Huy rank 3 quests"); + reference56 = new ChangelogEntry("6.21", releaseDate30, list57); num2++; ref ChangelogEntry reference57 = ref span[num2]; - DateOnly releaseDate32 = new DateOnly(2025, 10, 9); - index = 2; - List list58 = new List(index); - CollectionsMarshal.SetCount(list58, index); + DateOnly releaseDate31 = new DateOnly(2025, 10, 10); + num3 = 2; + List list58 = new List(num3); + CollectionsMarshal.SetCount(list58, num3); Span span58 = CollectionsMarshal.AsSpan(list58); - num3 = 0; - span58[num3] = new ChangeEntry(EChangeCategory.Changed, "Show once completed quests with improved state display"); - num3++; - span58[num3] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added 7.35 Yok Huy daily quest and improvements to various Yok Huy quests"); - reference57 = new ChangelogEntry("6.18", releaseDate32, list58); + index = 0; + span58[index] = new ChangeEntry(EChangeCategory.Changed, "Allow completed repeatable quests to be used with 'Add quest and requirements to priority' feature"); + index++; + span58[index] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added 7.35 Yok Huy rank 1 quest (A Work of Cart)"); + reference57 = new ChangelogEntry("6.20", releaseDate31, list58); num2++; ref ChangelogEntry reference58 = ref span[num2]; - DateOnly releaseDate33 = new DateOnly(2025, 10, 8); - num3 = 1; - List list59 = new List(num3); - CollectionsMarshal.SetCount(list59, num3); + DateOnly releaseDate32 = new DateOnly(2025, 10, 9); + index = 3; + List list59 = new List(index); + CollectionsMarshal.SetCount(list59, index); Span span59 = CollectionsMarshal.AsSpan(list59); - index = 0; - span59[index] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added 7.35 Yok Huy rank 1 and rank 2 quests"); - reference58 = new ChangelogEntry("6.17", releaseDate33, list59); + num3 = 0; + span59[num3] = new ChangeEntry(EChangeCategory.Added, "Added config to batch Allied Society quest turn-ins"); + num3++; + span59[num3] = new ChangeEntry(EChangeCategory.Changed, "Repeatable quests now show correct availability state in journal"); + num3++; + span59[num3] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added 7.35 Yok Huy rank 2 quests"); + reference58 = new ChangelogEntry("6.19", releaseDate32, list59); num2++; ref ChangelogEntry reference59 = ref span[num2]; - DateOnly releaseDate34 = new DateOnly(2025, 10, 8); - index = 1; - List list60 = new List(index); - CollectionsMarshal.SetCount(list60, index); + DateOnly releaseDate33 = new DateOnly(2025, 10, 9); + num3 = 2; + List list60 = new List(num3); + CollectionsMarshal.SetCount(list60, num3); Span span60 = CollectionsMarshal.AsSpan(list60); - num3 = 0; - span60[num3] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added 7.35 Deep Dungeon quest (Faerie Tale)"); - reference59 = new ChangelogEntry("6.16", releaseDate34, list60); + index = 0; + span60[index] = new ChangeEntry(EChangeCategory.Changed, "Show once completed quests with improved state display"); + index++; + span60[index] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added 7.35 Yok Huy daily quest and improvements to various Yok Huy quests"); + reference59 = new ChangelogEntry("6.18", releaseDate33, list60); num2++; ref ChangelogEntry reference60 = ref span[num2]; - DateOnly releaseDate35 = new DateOnly(2025, 10, 8); - num3 = 2; - List list61 = new List(num3); - CollectionsMarshal.SetCount(list61, num3); + DateOnly releaseDate34 = new DateOnly(2025, 10, 8); + index = 1; + List list61 = new List(index); + CollectionsMarshal.SetCount(list61, index); Span span61 = CollectionsMarshal.AsSpan(list61); - index = 0; - span61[index] = new ChangeEntry(EChangeCategory.Changed, "Dalamud cleanup"); - index++; - span61[index] = new ChangeEntry(EChangeCategory.Fixed, "Fixed quest level requirement check log spam"); - reference60 = new ChangelogEntry("6.15", releaseDate35, list61); + num3 = 0; + span61[num3] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added 7.35 Yok Huy rank 1 and rank 2 quests"); + reference60 = new ChangelogEntry("6.17", releaseDate34, list61); num2++; ref ChangelogEntry reference61 = ref span[num2]; - DateOnly releaseDate36 = new DateOnly(2025, 10, 8); - index = 1; - List list62 = new List(index); - CollectionsMarshal.SetCount(list62, index); + DateOnly releaseDate35 = new DateOnly(2025, 10, 8); + num3 = 1; + List list62 = new List(num3); + CollectionsMarshal.SetCount(list62, num3); Span span62 = CollectionsMarshal.AsSpan(list62); - num3 = 0; - span62[num3] = new ChangeEntry(EChangeCategory.Fixed, "Fixed abandoned quest check logic if quest were MSQ"); - reference61 = new ChangelogEntry("6.14", releaseDate36, list62); + index = 0; + span62[index] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added 7.35 Deep Dungeon quest (Faerie Tale)"); + reference61 = new ChangelogEntry("6.16", releaseDate35, list62); num2++; ref ChangelogEntry reference62 = ref span[num2]; - DateOnly releaseDate37 = new DateOnly(2025, 10, 8); - num3 = 2; - List list63 = new List(num3); - CollectionsMarshal.SetCount(list63, num3); + DateOnly releaseDate36 = new DateOnly(2025, 10, 8); + index = 2; + List list63 = new List(index); + CollectionsMarshal.SetCount(list63, index); Span span63 = CollectionsMarshal.AsSpan(list63); + num3 = 0; + span63[num3] = new ChangeEntry(EChangeCategory.Changed, "Dalamud cleanup"); + num3++; + span63[num3] = new ChangeEntry(EChangeCategory.Fixed, "Fixed quest level requirement check log spam"); + reference62 = new ChangelogEntry("6.15", releaseDate36, list63); + num2++; + ref ChangelogEntry reference63 = ref span[num2]; + DateOnly releaseDate37 = new DateOnly(2025, 10, 8); + num3 = 1; + List list64 = new List(num3); + CollectionsMarshal.SetCount(list64, num3); + Span span64 = CollectionsMarshal.AsSpan(list64); index = 0; - ref ChangeEntry reference63 = ref span63[index]; - num5 = 3; - List list64 = new List(num5); - CollectionsMarshal.SetCount(list64, num5); - Span span64 = CollectionsMarshal.AsSpan(list64); - num4 = 0; - span64[num4] = "Context menu option to add required quests and their chain to priority list"; - num4++; - span64[num4] = "AetheryteShortcut to multiple quests"; - num4++; - span64[num4] = "Artisan as a recommended plugin/dependency"; - reference63 = new ChangeEntry(EChangeCategory.Added, "Quest improvements", list64); - index++; - span63[index] = new ChangeEntry(EChangeCategory.Fixed, "Fixed abandoned quest check and priority list issues"); - reference62 = new ChangelogEntry("6.13", releaseDate37, list63); + span64[index] = new ChangeEntry(EChangeCategory.Fixed, "Fixed abandoned quest check logic if quest were MSQ"); + reference63 = new ChangelogEntry("6.14", releaseDate37, list64); num2++; ref ChangelogEntry reference64 = ref span[num2]; - DateOnly releaseDate38 = new DateOnly(2025, 10, 7); - index = 4; + DateOnly releaseDate38 = new DateOnly(2025, 10, 8); + index = 2; List list65 = new List(index); CollectionsMarshal.SetCount(list65, index); Span span65 = CollectionsMarshal.AsSpan(list65); num3 = 0; ref ChangeEntry reference65 = ref span65[num3]; - num4 = 4; + num4 = 3; List list66 = new List(num4); CollectionsMarshal.SetCount(list66, num4); Span span66 = CollectionsMarshal.AsSpan(list66); num5 = 0; - span66[num5] = "FATE combat handling with auto level syncing"; + span66[num5] = "Context menu option to add required quests and their chain to priority list"; num5++; - span66[num5] = "Start accepted quests from journal with 'Start as next quest'"; + span66[num5] = "AetheryteShortcut to multiple quests"; num5++; - span66[num5] = "Update quest tracking when quests are hidden or prioritised in game"; - num5++; - span66[num5] = "QuestMap as a recommended plugin/dependency"; - reference65 = new ChangeEntry(EChangeCategory.Added, "FATE and quest tracking", list66); + span66[num5] = "Artisan as a recommended plugin/dependency"; + reference65 = new ChangeEntry(EChangeCategory.Added, "Quest improvements", list66); num3++; - ref ChangeEntry reference66 = ref span65[num3]; - num5 = 3; - List list67 = new List(num5); - CollectionsMarshal.SetCount(list67, num5); - Span span67 = CollectionsMarshal.AsSpan(list67); - num4 = 0; - span67[num4] = "Always prioritise next quest during teleportation/zone transitions"; - num4++; - span67[num4] = "Improved accepted quest logic with abandoned quest detection"; - num4++; - span67[num4] = "Show quests without quest paths as Locked"; - reference66 = new ChangeEntry(EChangeCategory.Changed, "Quest prioritisation improvements", list67); - num3++; - span65[num3] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added 7.35 Deep Dungeon, Hildibrand, Yok Huy, Monster Hunter Wilds Collab, and Doman Enclave quests"); - num3++; - span65[num3] = new ChangeEntry(EChangeCategory.Fixed, "Fixed accepted/active quest display and Hildibrand quest issues"); - reference64 = new ChangelogEntry("6.12", releaseDate38, list65); + span65[num3] = new ChangeEntry(EChangeCategory.Fixed, "Fixed abandoned quest check and priority list issues"); + reference64 = new ChangelogEntry("6.13", releaseDate38, list65); num2++; - ref ChangelogEntry reference67 = ref span[num2]; - DateOnly releaseDate39 = new DateOnly(2025, 10, 3); - num3 = 1; - List list68 = new List(num3); - CollectionsMarshal.SetCount(list68, num3); - Span span68 = CollectionsMarshal.AsSpan(list68); + ref ChangelogEntry reference66 = ref span[num2]; + DateOnly releaseDate39 = new DateOnly(2025, 10, 7); + num3 = 4; + List list67 = new List(num3); + CollectionsMarshal.SetCount(list67, num3); + Span span67 = CollectionsMarshal.AsSpan(list67); index = 0; - span68[index] = new ChangeEntry(EChangeCategory.Changed, "Added remaining checks for quest priority to prevent infinite teleport looping"); - reference67 = new ChangelogEntry("6.11", releaseDate39, list68); - num2++; - ref ChangelogEntry reference68 = ref span[num2]; - DateOnly releaseDate40 = new DateOnly(2025, 10, 2); - index = 1; - List list69 = new List(index); - CollectionsMarshal.SetCount(list69, index); - Span span69 = CollectionsMarshal.AsSpan(list69); - num3 = 0; - ref ChangeEntry reference69 = ref span69[num3]; - num4 = 2; - List list70 = new List(num4); - CollectionsMarshal.SetCount(list70, num4); - Span span70 = CollectionsMarshal.AsSpan(list70); + ref ChangeEntry reference67 = ref span67[index]; + num5 = 4; + List list68 = new List(num5); + CollectionsMarshal.SetCount(list68, num5); + Span span68 = CollectionsMarshal.AsSpan(list68); + num4 = 0; + span68[num4] = "FATE combat handling with auto level syncing"; + num4++; + span68[num4] = "Start accepted quests from journal with 'Start as next quest'"; + num4++; + span68[num4] = "Update quest tracking when quests are hidden or prioritised in game"; + num4++; + span68[num4] = "QuestMap as a recommended plugin/dependency"; + reference67 = new ChangeEntry(EChangeCategory.Added, "FATE and quest tracking", list68); + index++; + ref ChangeEntry reference68 = ref span67[index]; + num4 = 3; + List list69 = new List(num4); + CollectionsMarshal.SetCount(list69, num4); + Span span69 = CollectionsMarshal.AsSpan(list69); num5 = 0; - span70[num5] = "Don't show quests as available if player doesn't meet level requirements"; + span69[num5] = "Always prioritise next quest during teleportation/zone transitions"; num5++; - span70[num5] = "Updated 'required for MSQ' text in Crystal Tower quest preset window"; - reference69 = new ChangeEntry(EChangeCategory.Changed, "Quest window improvements", list70); - reference68 = new ChangelogEntry("6.10", releaseDate40, list69); + span69[num5] = "Improved accepted quest logic with abandoned quest detection"; + num5++; + span69[num5] = "Show quests without quest paths as Locked"; + reference68 = new ChangeEntry(EChangeCategory.Changed, "Quest prioritisation improvements", list69); + index++; + span67[index] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added 7.35 Deep Dungeon, Hildibrand, Yok Huy, Monster Hunter Wilds Collab, and Doman Enclave quests"); + index++; + span67[index] = new ChangeEntry(EChangeCategory.Fixed, "Fixed accepted/active quest display and Hildibrand quest issues"); + reference66 = new ChangelogEntry("6.12", releaseDate39, list67); + num2++; + ref ChangelogEntry reference69 = ref span[num2]; + DateOnly releaseDate40 = new DateOnly(2025, 10, 3); + index = 1; + List list70 = new List(index); + CollectionsMarshal.SetCount(list70, index); + Span span70 = CollectionsMarshal.AsSpan(list70); + num3 = 0; + span70[num3] = new ChangeEntry(EChangeCategory.Changed, "Added remaining checks for quest priority to prevent infinite teleport looping"); + reference69 = new ChangelogEntry("6.11", releaseDate40, list70); num2++; ref ChangelogEntry reference70 = ref span[num2]; - DateOnly releaseDate41 = new DateOnly(2025, 9, 21); - num3 = 5; + DateOnly releaseDate41 = new DateOnly(2025, 10, 2); + num3 = 1; List list71 = new List(num3); CollectionsMarshal.SetCount(list71, num3); Span span71 = CollectionsMarshal.AsSpan(list71); index = 0; ref ChangeEntry reference71 = ref span71[index]; - num5 = 4; + num5 = 2; List list72 = new List(num5); CollectionsMarshal.SetCount(list72, num5); Span span72 = CollectionsMarshal.AsSpan(list72); num4 = 0; - span72[num4] = "Reworked event quest handling - automatically displays when events are active"; + span72[num4] = "Don't show quests as available if player doesn't meet level requirements"; num4++; - span72[num4] = "Reworked journal system with improved filtering and display"; - num4++; - span72[num4] = "Reworked Priority Quests tab (Manual Priority and Quest Presets)"; - num4++; - span72[num4] = "Quest path viewer site (https://wigglymuffin.github.io/FFXIV-Tools/)"; - reference71 = new ChangeEntry(EChangeCategory.Added, "Major system reworks", list72); - index++; - ref ChangeEntry reference72 = ref span71[index]; - num4 = 4; - List list73 = new List(num4); - CollectionsMarshal.SetCount(list73, num4); - Span span73 = CollectionsMarshal.AsSpan(list73); - num5 = 0; - span73[num5] = "Questionable.IsQuestCompleted"; - num5++; - span73[num5] = "Questionable.IsQuestAvailable"; - num5++; - span73[num5] = "Questionable.IsQuestAccepted"; - num5++; - span73[num5] = "Questionable.IsQuestUnobtainable"; - reference72 = new ChangeEntry(EChangeCategory.Added, "New IPC commands", list73); - index++; - ref ChangeEntry reference73 = ref span71[index]; - num5 = 5; - List list74 = new List(num5); - CollectionsMarshal.SetCount(list74, num5); - Span span74 = CollectionsMarshal.AsSpan(list74); - num4 = 0; - span74[num4] = "Improved JSON quest validation with specific error reasons"; - num4++; - span74[num4] = "Added stop at sequence stop condition"; - num4++; - span74[num4] = "Improved Pandora plugin conflict detection"; - num4++; - span74[num4] = "Improved DialogueChoices regex matching"; - num4++; - span74[num4] = "Improved refresh checker for all quest states"; - reference73 = new ChangeEntry(EChangeCategory.Changed, "Various improvements", list74); - index++; - span71[index] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added 7.31 Occult Crescent quests"); - index++; - span71[index] = new ChangeEntry(EChangeCategory.Fixed, "Fixed cutscene crashes, Single Player Duty triggers, and various quest issues"); - reference70 = new ChangelogEntry("6.9", releaseDate41, list71); + span72[num4] = "Updated 'required for MSQ' text in Crystal Tower quest preset window"; + reference71 = new ChangeEntry(EChangeCategory.Changed, "Quest window improvements", list72); + reference70 = new ChangelogEntry("6.10", releaseDate41, list71); num2++; - ref ChangelogEntry reference74 = ref span[num2]; - DateOnly releaseDate42 = new DateOnly(2025, 9, 2); - index = 4; - List list75 = new List(index); - CollectionsMarshal.SetCount(list75, index); - Span span75 = CollectionsMarshal.AsSpan(list75); + ref ChangelogEntry reference72 = ref span[num2]; + DateOnly releaseDate42 = new DateOnly(2025, 9, 21); + index = 5; + List list73 = new List(index); + CollectionsMarshal.SetCount(list73, index); + Span span73 = CollectionsMarshal.AsSpan(list73); num3 = 0; - ref ChangeEntry reference75 = ref span75[num3]; + ref ChangeEntry reference73 = ref span73[num3]; num4 = 4; + List list74 = new List(num4); + CollectionsMarshal.SetCount(list74, num4); + Span span74 = CollectionsMarshal.AsSpan(list74); + num5 = 0; + span74[num5] = "Reworked event quest handling - automatically displays when events are active"; + num5++; + span74[num5] = "Reworked journal system with improved filtering and display"; + num5++; + span74[num5] = "Reworked Priority Quests tab (Manual Priority and Quest Presets)"; + num5++; + span74[num5] = "Quest path viewer site (https://wigglymuffin.github.io/FFXIV-Tools/)"; + reference73 = new ChangeEntry(EChangeCategory.Added, "Major system reworks", list74); + num3++; + ref ChangeEntry reference74 = ref span73[num3]; + num5 = 4; + List list75 = new List(num5); + CollectionsMarshal.SetCount(list75, num5); + Span span75 = CollectionsMarshal.AsSpan(list75); + num4 = 0; + span75[num4] = "Questionable.IsQuestCompleted"; + num4++; + span75[num4] = "Questionable.IsQuestAvailable"; + num4++; + span75[num4] = "Questionable.IsQuestAccepted"; + num4++; + span75[num4] = "Questionable.IsQuestUnobtainable"; + reference74 = new ChangeEntry(EChangeCategory.Added, "New IPC commands", list75); + num3++; + ref ChangeEntry reference75 = ref span73[num3]; + num4 = 5; List list76 = new List(num4); CollectionsMarshal.SetCount(list76, num4); Span span76 = CollectionsMarshal.AsSpan(list76); num5 = 0; - span76[num5] = "Help commands and priority quest command"; + span76[num5] = "Improved JSON quest validation with specific error reasons"; num5++; - span76[num5] = "Prevent 'CompleteQuest' step setting"; + span76[num5] = "Added stop at sequence stop condition"; num5++; - span76[num5] = "Duty counts and controls in 'Quest Battles' tab"; + span76[num5] = "Improved Pandora plugin conflict detection"; num5++; - span76[num5] = "'Refresh quest timer' setting (WIP)"; - reference75 = new ChangeEntry(EChangeCategory.Added, "Command and UI improvements", list76); + span76[num5] = "Improved DialogueChoices regex matching"; + num5++; + span76[num5] = "Improved refresh checker for all quest states"; + reference75 = new ChangeEntry(EChangeCategory.Changed, "Various improvements", list76); num3++; - span75[num3] = new ChangeEntry(EChangeCategory.Changed, "Improved 'Clear All' buttons to require CTRL being held"); + span73[num3] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added 7.31 Occult Crescent quests"); num3++; - span75[num3] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added Zodiac quests and 7.31 Cosmic/Occult Crescent quests"); - num3++; - span75[num3] = new ChangeEntry(EChangeCategory.Fixed, "Fixed Fishing for Friendship and Cosmic Exploration quests"); - reference74 = new ChangelogEntry("6.8", releaseDate42, list75); + span73[num3] = new ChangeEntry(EChangeCategory.Fixed, "Fixed cutscene crashes, Single Player Duty triggers, and various quest issues"); + reference72 = new ChangelogEntry("6.9", releaseDate42, list73); num2++; ref ChangelogEntry reference76 = ref span[num2]; - DateOnly releaseDate43 = new DateOnly(2025, 8, 27); + DateOnly releaseDate43 = new DateOnly(2025, 9, 2); num3 = 4; List list77 = new List(num3); CollectionsMarshal.SetCount(list77, num3); Span span77 = CollectionsMarshal.AsSpan(list77); index = 0; ref ChangeEntry reference77 = ref span77[index]; - num5 = 2; + num5 = 4; List list78 = new List(num5); CollectionsMarshal.SetCount(list78, num5); Span span78 = CollectionsMarshal.AsSpan(list78); num4 = 0; - span78[num4] = "Icon to 'Clear All' button in stop conditions"; + span78[num4] = "Help commands and priority quest command"; num4++; - span78[num4] = "Duty counts and 'Enable All' button in 'Duties' tab"; - reference77 = new ChangeEntry(EChangeCategory.Added, "UI improvements", list78); + span78[num4] = "Prevent 'CompleteQuest' step setting"; + num4++; + span78[num4] = "Duty counts and controls in 'Quest Battles' tab"; + num4++; + span78[num4] = "'Refresh quest timer' setting (WIP)"; + reference77 = new ChangeEntry(EChangeCategory.Added, "Command and UI improvements", list78); index++; - span77[index] = new ChangeEntry(EChangeCategory.Changed, "Renamed 'Clear' button to 'Clear All' in priority window"); + span77[index] = new ChangeEntry(EChangeCategory.Changed, "Improved 'Clear All' buttons to require CTRL being held"); index++; - span77[index] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added Rising 2025 Event Quests"); + span77[index] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added Zodiac quests and 7.31 Cosmic/Occult Crescent quests"); index++; - span77[index] = new ChangeEntry(EChangeCategory.Fixed, "Fixed clipboard assigning blacklist to whitelist in 'Duties' tab"); - reference76 = new ChangelogEntry("6.7", releaseDate43, list77); + span77[index] = new ChangeEntry(EChangeCategory.Fixed, "Fixed Fishing for Friendship and Cosmic Exploration quests"); + reference76 = new ChangelogEntry("6.8", releaseDate43, list77); num2++; ref ChangelogEntry reference78 = ref span[num2]; - DateOnly releaseDate44 = new DateOnly(2025, 8, 25); - index = 2; + DateOnly releaseDate44 = new DateOnly(2025, 8, 27); + index = 4; List list79 = new List(index); CollectionsMarshal.SetCount(list79, index); Span span79 = CollectionsMarshal.AsSpan(list79); @@ -889,13 +883,17 @@ internal static class ChangelogData CollectionsMarshal.SetCount(list80, num4); Span span80 = CollectionsMarshal.AsSpan(list80); num5 = 0; - span80[num5] = "Missing emotes to schema and emote handler"; + span80[num5] = "Icon to 'Clear All' button in stop conditions"; num5++; - span80[num5] = "Improved stop conditions with 'Clear All' button"; - reference79 = new ChangeEntry(EChangeCategory.Added, "Emote support and stop conditions", list80); + span80[num5] = "Duty counts and 'Enable All' button in 'Duties' tab"; + reference79 = new ChangeEntry(EChangeCategory.Added, "UI improvements", list80); num3++; - span79[num3] = new ChangeEntry(EChangeCategory.Changed, "Stop at level functionality"); - reference78 = new ChangelogEntry("6.6", releaseDate44, list79); + span79[num3] = new ChangeEntry(EChangeCategory.Changed, "Renamed 'Clear' button to 'Clear All' in priority window"); + num3++; + span79[num3] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added Rising 2025 Event Quests"); + num3++; + span79[num3] = new ChangeEntry(EChangeCategory.Fixed, "Fixed clipboard assigning blacklist to whitelist in 'Duties' tab"); + reference78 = new ChangelogEntry("6.7", releaseDate44, list79); num2++; ref ChangelogEntry reference80 = ref span[num2]; DateOnly releaseDate45 = new DateOnly(2025, 8, 25); @@ -904,10 +902,31 @@ internal static class ChangelogData CollectionsMarshal.SetCount(list81, num3); Span span81 = CollectionsMarshal.AsSpan(list81); index = 0; - span81[index] = new ChangeEntry(EChangeCategory.Fixed, "Potential fix to single/solo duties softlocking"); + ref ChangeEntry reference81 = ref span81[index]; + num5 = 2; + List list82 = new List(num5); + CollectionsMarshal.SetCount(list82, num5); + Span span82 = CollectionsMarshal.AsSpan(list82); + num4 = 0; + span82[num4] = "Missing emotes to schema and emote handler"; + num4++; + span82[num4] = "Improved stop conditions with 'Clear All' button"; + reference81 = new ChangeEntry(EChangeCategory.Added, "Emote support and stop conditions", list82); index++; - span81[index] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added San d'Oria: The Second Walk and various side quests"); - reference80 = new ChangelogEntry("6.5", releaseDate45, list81); + span81[index] = new ChangeEntry(EChangeCategory.Changed, "Stop at level functionality"); + reference80 = new ChangelogEntry("6.6", releaseDate45, list81); + num2++; + ref ChangelogEntry reference82 = ref span[num2]; + DateOnly releaseDate46 = new DateOnly(2025, 8, 25); + index = 2; + List list83 = new List(index); + CollectionsMarshal.SetCount(list83, index); + Span span83 = CollectionsMarshal.AsSpan(list83); + num3 = 0; + span83[num3] = new ChangeEntry(EChangeCategory.Fixed, "Potential fix to single/solo duties softlocking"); + num3++; + span83[num3] = new ChangeEntry(EChangeCategory.QuestUpdates, "Added San d'Oria: The Second Walk and various side quests"); + reference82 = new ChangelogEntry("6.5", releaseDate46, list83); Changelogs = list; } } diff --git a/Questionable/Questionable.Data/JournalData.cs b/Questionable/Questionable.Data/JournalData.cs index 5837b7a..25f06e6 100644 --- a/Questionable/Questionable.Data/JournalData.cs +++ b/Questionable/Questionable.Data/JournalData.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Linq; using Dalamud.Plugin.Services; +using Lumina.Excel; using Lumina.Excel.Sheets; using Microsoft.Extensions.Logging; using Questionable.Model; @@ -85,6 +86,12 @@ internal sealed class JournalData private readonly ILogger _logger; + public uint? SeasonalEventsCategoryId { get; } + + public IReadOnlySet SeasonalEventGenreIds { get; } + + public uint? MoogleDeliveryGenreId { get; } + public List Genres { get; } public List Categories { get; } @@ -97,7 +104,41 @@ internal sealed class JournalData { JournalData journalData = this; _logger = logger; - List list = (from x in dataManager.GetExcelSheet() + ExcelSheet excelSheet = dataManager.GetExcelSheet(); + JournalCategory journalCategory = dataManager.GetExcelSheet().FirstOrDefault((JournalCategory x) => x.Name.ToString().Equals("Seasonal Events", StringComparison.OrdinalIgnoreCase)); + if (journalCategory.RowId != 0) + { + SeasonalEventsCategoryId = journalCategory.RowId; + _logger.LogInformation("Resolved 'Seasonal Events' JournalCategory ID: {CategoryId}", SeasonalEventsCategoryId); + } + else + { + SeasonalEventsCategoryId = null; + _logger.LogWarning("Could not find 'Seasonal Events' JournalCategory - seasonal event detection may not work correctly"); + } + if (SeasonalEventsCategoryId.HasValue) + { + SeasonalEventGenreIds = (from x in excelSheet + where x.RowId != 0 && x.JournalCategory.RowId == journalData.SeasonalEventsCategoryId.Value + select x.RowId).ToHashSet(); + _logger.LogInformation("Resolved {Count} seasonal event JournalGenre IDs from JournalCategory {CategoryId}: [{Ids}]", SeasonalEventGenreIds.Count, SeasonalEventsCategoryId.Value, string.Join(", ", SeasonalEventGenreIds.OrderBy((uint x) => x))); + } + else + { + SeasonalEventGenreIds = new HashSet(); + } + JournalGenre journalGenre = excelSheet.FirstOrDefault((JournalGenre x) => x.Name.ToString().Equals("Delivery Moogle Quests", StringComparison.OrdinalIgnoreCase)); + if (journalGenre.RowId != 0) + { + MoogleDeliveryGenreId = journalGenre.RowId; + _logger.LogInformation("Resolved 'Delivery Moogle Quests' JournalGenre ID: {GenreId}", MoogleDeliveryGenreId); + } + else + { + MoogleDeliveryGenreId = null; + _logger.LogWarning("Could not find 'Delivery Moogle Quests' JournalGenre - moogle delivery quest detection may not work correctly"); + } + List list = (from x in excelSheet where x.RowId != 0 && x.Icon > 0 select new Genre(x, questData.GetAllByJournalGenre(x.RowId))).ToList(); QuestRedo row = dataManager.GetExcelSheet().GetRow(1u); diff --git a/Questionable/Questionable.Functions/ChatFunctions.cs b/Questionable/Questionable.Functions/ChatFunctions.cs index bd71d4a..a32c14d 100644 --- a/Questionable/Questionable.Functions/ChatFunctions.cs +++ b/Questionable/Questionable.Functions/ChatFunctions.cs @@ -4,8 +4,6 @@ using System.Collections.ObjectModel; using System.Linq; using System.Runtime.InteropServices; using System.Text; -using Dalamud.Game; -using Dalamud.Game.ClientState.Objects; using Dalamud.Game.ClientState.Objects.Types; using Dalamud.Plugin.Services; using FFXIVClientStructs.FFXIV.Client.System.Framework; diff --git a/Questionable/Questionable.Functions/ExcelFunctions.cs b/Questionable/Questionable.Functions/ExcelFunctions.cs index 7f56002..96ee27e 100644 --- a/Questionable/Questionable.Functions/ExcelFunctions.cs +++ b/Questionable/Questionable.Functions/ExcelFunctions.cs @@ -74,7 +74,7 @@ internal sealed class ExcelFunctions switch (excelSheet) { case "GimmickYesNo": - return _dataManager.GetExcelSheet().GetRowOrDefault(rowId)?.Unknown0; + return _dataManager.GetExcelSheet().GetRowOrDefault(rowId)?.Message; case "Warp": return _dataManager.GetExcelSheet().GetRowOrDefault(rowId)?.Name; case "Addon": diff --git a/Questionable/Questionable.Functions/GameFunctions.cs b/Questionable/Questionable.Functions/GameFunctions.cs index 86a8e16..d1198f9 100644 --- a/Questionable/Questionable.Functions/GameFunctions.cs +++ b/Questionable/Questionable.Functions/GameFunctions.cs @@ -4,9 +4,7 @@ using System.Collections.ObjectModel; using System.Linq; using System.Numerics; using System.Runtime.InteropServices; -using Dalamud.Game; using Dalamud.Game.ClientState.Conditions; -using Dalamud.Game.ClientState.Objects; using Dalamud.Game.ClientState.Objects.Enums; using Dalamud.Game.ClientState.Objects.SubKinds; using Dalamud.Game.ClientState.Objects.Types; diff --git a/Questionable/Questionable.Functions/QuestFunctions.cs b/Questionable/Questionable.Functions/QuestFunctions.cs index 76ebe78..7fa1670 100644 --- a/Questionable/Questionable.Functions/QuestFunctions.cs +++ b/Questionable/Questionable.Functions/QuestFunctions.cs @@ -32,6 +32,8 @@ internal sealed class QuestFunctions private readonly QuestData _questData; + private readonly JournalData _journalData; + private readonly AetheryteFunctions _aetheryteFunctions; private readonly AlliedSocietyQuestFunctions _alliedSocietyQuestFunctions; @@ -70,10 +72,11 @@ internal sealed class QuestFunctions private ElementId? _lastLoggedAcceptedHiddenMsq; - public QuestFunctions(QuestRegistry questRegistry, QuestData questData, AetheryteFunctions aetheryteFunctions, AlliedSocietyQuestFunctions alliedSocietyQuestFunctions, AlliedSocietyData alliedSocietyData, AetheryteData aetheryteData, Configuration configuration, IDataManager dataManager, IObjectTable objectTable, IClientState clientState, IGameGui gameGui, IAetheryteList aetheryteList, ILogger logger) + public QuestFunctions(QuestRegistry questRegistry, QuestData questData, JournalData journalData, AetheryteFunctions aetheryteFunctions, AlliedSocietyQuestFunctions alliedSocietyQuestFunctions, AlliedSocietyData alliedSocietyData, AetheryteData aetheryteData, Configuration configuration, IDataManager dataManager, IObjectTable objectTable, IClientState clientState, IGameGui gameGui, IAetheryteList aetheryteList, ILogger logger) { _questRegistry = questRegistry; _questData = questData; + _journalData = journalData; _aetheryteFunctions = aetheryteFunctions; _alliedSocietyQuestFunctions = alliedSocietyQuestFunctions; _alliedSocietyData = alliedSocietyData; @@ -870,7 +873,7 @@ internal sealed class QuestFunctions { if (IsQuestUnobtainable(questId, extraCompletedQuest)) { - return true; + return false; } QuestInfo questInfo = (QuestInfo)_questData.GetQuestInfo(questId); if (questInfo.GrandCompany != FFXIVClientStructs.FFXIV.Client.UI.Agent.GrandCompany.None) @@ -891,10 +894,10 @@ internal sealed class QuestFunctions { return !IsDailyAlliedSocietyQuestAndAvailableToday(questId); } - if (questInfo.IsMoogleDeliveryQuest) + if (_journalData.MoogleDeliveryGenreId.HasValue && questInfo.JournalGenre == _journalData.MoogleDeliveryGenreId.Value) { byte b = PlayerState.Instance()->DeliveryLevel; - if (extraCompletedQuest != null && _questData.TryGetQuestInfo(extraCompletedQuest, out IQuestInfo questInfo2) && questInfo2 is QuestInfo { IsMoogleDeliveryQuest: not false }) + if (extraCompletedQuest != null && _questData.TryGetQuestInfo(extraCompletedQuest, out IQuestInfo questInfo2) && questInfo2 is QuestInfo questInfo3 && _journalData.MoogleDeliveryGenreId.HasValue && questInfo3.JournalGenre == _journalData.MoogleDeliveryGenreId.Value) { b++; } @@ -1033,25 +1036,25 @@ internal sealed class QuestFunctions { return true; } - if (questInfo2.JournalGenre >= 234 && questInfo2.JournalGenre <= 247) + if (questInfo2.JournalGenre.HasValue && _journalData.SeasonalEventGenreIds.Contains(questInfo2.JournalGenre.Value)) { if (_questRegistry.TryGetQuest(questId, out Questionable.Model.Quest quest)) { List list = quest?.Root?.QuestSequence; if (list != null && list.Count > 0) { - goto IL_0288; + goto IL_027a; } } if (_alreadyLoggedUnobtainableQuestsDetailed.Add(questId.Value)) { _questData.ApplySeasonalOverride(questId, isSeasonal: true, null); - _logger.LogDebug("Quest {QuestId} unobtainable: journal genre is 'event (seasonal)' and no quest path", questId); + _logger.LogDebug("Quest {QuestId} unobtainable: journal genre {Genre} is 'event (seasonal)' and no quest path", questId, questInfo2.JournalGenre); } return true; } - goto IL_0288; - IL_0288: + goto IL_027a; + IL_027a: if (questInfo2.QuestLocks.Count > 0) { int num = questInfo2.QuestLocks.Count((QuestId x) => IsQuestComplete(x) || x.Equals(extraCompletedQuest)); diff --git a/Questionable/Questionable.Model/ItemReward.cs b/Questionable/Questionable.Model/ItemReward.cs index 09b48cf..204ce18 100644 --- a/Questionable/Questionable.Model/ItemReward.cs +++ b/Questionable/Questionable.Model/ItemReward.cs @@ -18,12 +18,12 @@ public abstract record ItemReward(ItemRewardDetails Item) internal static ItemReward? CreateFromItem(Item item, ElementId elementId) { - ushort? num = item.ItemAction.ValueNullable?.Type; + uint? num = item.ItemAction.ValueNullable?.RowId; if (num.HasValue && num == 1322) { return new MountReward(new ItemRewardDetails(item, elementId), item.ItemAction.Value.Data[0]); } - num = item.ItemAction.ValueNullable?.Type; + num = item.ItemAction.ValueNullable?.RowId; if (num.HasValue && num == 853) { return new MinionReward(new ItemRewardDetails(item, elementId), item.ItemAction.Value.Data[0]); @@ -40,7 +40,7 @@ public abstract record ItemReward(ItemRewardDetails Item) TripleTriadCard valueOrDefault4 = valueOrDefault3.GetValueOrDefault(); return new TripleTriadCardReward(new ItemRewardDetails(item, elementId), (ushort)valueOrDefault4.RowId); } - num = item.ItemAction.ValueNullable?.Type; + num = item.ItemAction.ValueNullable?.RowId; if (num.HasValue && num == 20086) { return new FashionAccessoryReward(new ItemRewardDetails(item, elementId), item.ItemAction.Value.Data[0]); diff --git a/Questionable/Questionable.Model/QuestInfo.cs b/Questionable/Questionable.Model/QuestInfo.cs index 319e5a2..1fde388 100644 --- a/Questionable/Questionable.Model/QuestInfo.cs +++ b/Questionable/Questionable.Model/QuestInfo.cs @@ -60,8 +60,6 @@ internal sealed class QuestInfo : IQuestInfo public byte MoogleDeliveryLevel { get; } - public bool IsMoogleDeliveryQuest => JournalGenre == 87; - public IReadOnlyList ItemRewards { get; } public EExpansionVersion Expansion { get; } diff --git a/Questionable/Questionable.Windows.JournalComponents/QuestJournalComponent.cs b/Questionable/Questionable.Windows.JournalComponents/QuestJournalComponent.cs index 132fd5d..3bcf1b1 100644 --- a/Questionable/Questionable.Windows.JournalComponents/QuestJournalComponent.cs +++ b/Questionable/Questionable.Windows.JournalComponents/QuestJournalComponent.cs @@ -96,8 +96,6 @@ internal sealed class QuestJournalComponent private readonly ILogger _logger; - private const uint SeasonalJournalCategoryRowId = 96u; - private List _filteredSections = new List(); private bool _lastHideSeasonalGlobally; @@ -458,14 +456,14 @@ internal sealed class QuestJournalComponent private FilteredSection FilterSection(JournalData.Section section, FilterConfiguration filter) { IEnumerable enumerable; - if (!_configuration.General.HideSeasonalEventsFromJournalProgress) + if (!_configuration.General.HideSeasonalEventsFromJournalProgress || !_journalData.SeasonalEventsCategoryId.HasValue) { IEnumerable categories = section.Categories; enumerable = categories; } else { - enumerable = section.Categories.Where((JournalData.Category c) => c.Id != 96); + enumerable = section.Categories.Where((JournalData.Category c) => c.Id != _journalData.SeasonalEventsCategoryId.Value); } IEnumerable source = enumerable; return new FilteredSection(Categories: ((!IsCategorySectionGenreMatch(filter, section.Name)) ? source.Select((JournalData.Category category) => FilterCategory(category, filter, section)) : source.Select((JournalData.Category x) => FilterCategory(x, filter.WithoutName(), section))).Where((FilteredCategory x) => x.Genres.Count > 0).ToList(), Section: section); @@ -481,7 +479,7 @@ internal sealed class QuestJournalComponent { bool hideSeasonalEventsFromJournalProgress = _configuration.General.HideSeasonalEventsFromJournalProgress; IEnumerable source = ((!IsCategorySectionGenreMatch(filter, genre.Name)) ? genre.Quests.Where((IQuestInfo x) => IsQuestMatch(filter, x)) : genre.Quests.Where((IQuestInfo x) => IsQuestMatch(filter.WithoutName(), x))); - if (hideSeasonalEventsFromJournalProgress && genre.CategoryId == 96) + if (hideSeasonalEventsFromJournalProgress && _journalData.SeasonalEventsCategoryId.HasValue && genre.CategoryId == _journalData.SeasonalEventsCategoryId.Value) { source = source.Where((IQuestInfo q) => !IsSeasonal(q)); } @@ -497,7 +495,7 @@ internal sealed class QuestJournalComponent _logger.LogInformation("Refreshing journal counts. HideSeasonalEventsFromJournalProgress={Hide}", hideSeasonalEventsFromJournalProgress); foreach (JournalData.Genre genre in _journalData.Genres) { - List source = ((hideSeasonalEventsFromJournalProgress && genre.CategoryId == 96) ? genre.Quests.Where((IQuestInfo q) => !IsSeasonal(q)).ToList() : genre.Quests.ToList()); + List source = ((hideSeasonalEventsFromJournalProgress && _journalData.SeasonalEventsCategoryId.HasValue && genre.CategoryId == _journalData.SeasonalEventsCategoryId.Value) ? genre.Quests.Where((IQuestInfo q) => !IsSeasonal(q)).ToList() : genre.Quests.ToList()); Quest quest; int available = source.Count((IQuestInfo x) => _questRegistry.TryGetQuest(x.QuestId, out quest) && !quest.Root.Disabled && !_questFunctions.IsQuestRemoved(x.QuestId)); int total = source.Count((IQuestInfo x) => !_questFunctions.IsQuestRemoved(x.QuestId)); @@ -507,7 +505,7 @@ internal sealed class QuestJournalComponent } foreach (JournalData.Category category in _journalData.Categories) { - if (!hideSeasonalEventsFromJournalProgress || category.Id != 96) + if (!hideSeasonalEventsFromJournalProgress || !_journalData.SeasonalEventsCategoryId.HasValue || category.Id != _journalData.SeasonalEventsCategoryId.Value) { List source2 = _genre_counts_or_default(category); int available2 = source2.Sum((JournalCounts x) => x.Available); diff --git a/Questionable/Questionable.Windows.QuestComponents/CreationUtilsComponent.cs b/Questionable/Questionable.Windows.QuestComponents/CreationUtilsComponent.cs index 2c6d91a..7a51ae6 100644 --- a/Questionable/Questionable.Windows.QuestComponents/CreationUtilsComponent.cs +++ b/Questionable/Questionable.Windows.QuestComponents/CreationUtilsComponent.cs @@ -4,7 +4,6 @@ using System.Numerics; using System.Runtime.CompilerServices; using Dalamud.Bindings.ImGui; using Dalamud.Game.ClientState.Conditions; -using Dalamud.Game.ClientState.Objects; using Dalamud.Game.ClientState.Objects.Enums; using Dalamud.Game.ClientState.Objects.Types; using Dalamud.Game.Text; diff --git a/Questionable/Questionable.Windows.QuestComponents/EventInfoComponent.cs b/Questionable/Questionable.Windows.QuestComponents/EventInfoComponent.cs index 7af29e7..b337dcc 100644 --- a/Questionable/Questionable.Windows.QuestComponents/EventInfoComponent.cs +++ b/Questionable/Questionable.Windows.QuestComponents/EventInfoComponent.cs @@ -37,6 +37,8 @@ internal sealed class EventInfoComponent private readonly IDataManager _dataManager; + private readonly JournalData _journalData; + private List _cachedActiveSeasonalQuests = new List(); private DateTime _cachedAtUtc = DateTime.MinValue; @@ -60,7 +62,7 @@ internal sealed class EventInfoComponent } } - public EventInfoComponent(QuestData questData, QuestRegistry questRegistry, QuestFunctions questFunctions, UiUtils uiUtils, QuestController questController, QuestTooltipComponent questTooltipComponent, Configuration configuration, IDataManager dataManager, ILogger logger) + public EventInfoComponent(QuestData questData, QuestRegistry questRegistry, QuestFunctions questFunctions, UiUtils uiUtils, QuestController questController, QuestTooltipComponent questTooltipComponent, Configuration configuration, IDataManager dataManager, JournalData journalData, ILogger logger) { _questData = questData; _questRegistry = questRegistry; @@ -70,6 +72,7 @@ internal sealed class EventInfoComponent _questTooltipComponent = questTooltipComponent; _configuration = configuration; _dataManager = dataManager; + _journalData = journalData; _logger = logger ?? throw new ArgumentNullException("logger"); } @@ -254,7 +257,7 @@ internal sealed class EventInfoComponent DateTime? dateTime = null; if (questInfo is QuestInfo questInfo2) { - flag = questInfo2.IsSeasonalQuest || questInfo2.IsSeasonalEvent || questInfo2.SeasonalQuestExpiry is DateTime || (questInfo2.JournalGenre >= 234 && questInfo2.JournalGenre <= 247); + flag = questInfo2.IsSeasonalQuest || questInfo2.IsSeasonalEvent || questInfo2.SeasonalQuestExpiry is DateTime || (questInfo2.JournalGenre.HasValue && _journalData.SeasonalEventGenreIds.Contains(questInfo2.JournalGenre.Value)); dateTime = questInfo2.SeasonalQuestExpiry; } if (flag) diff --git a/Questionable/Questionable.csproj b/Questionable/Questionable.csproj index b31203e..d2099f0 100644 --- a/Questionable/Questionable.csproj +++ b/Questionable/Questionable.csproj @@ -21,25 +21,25 @@ - ..\..\..\..\..\ffxiv\alyssile-xivl\addon\Hooks\dev\Dalamud.dll + C:\Users\Aly\AppData\Roaming\XIVLauncher\addon\Hooks\dev\Dalamud.dll ..\..\LLib.dll - ..\..\..\..\..\ffxiv\alyssile-xivl\addon\Hooks\dev\FFXIVClientStructs.dll + C:\Users\Aly\AppData\Roaming\XIVLauncher\addon\Hooks\dev\FFXIVClientStructs.dll ..\..\Questionable.Model.dll - ..\..\..\..\..\ffxiv\alyssile-xivl\addon\Hooks\dev\Newtonsoft.Json.dll + C:\Users\Aly\AppData\Roaming\XIVLauncher\addon\Hooks\dev\Newtonsoft.Json.dll ..\..\Microsoft.Extensions.Logging.Abstractions.dll - ..\..\..\..\..\ffxiv\alyssile-xivl\addon\Hooks\dev\Serilog.dll + C:\Users\Aly\AppData\Roaming\XIVLauncher\addon\Hooks\dev\Serilog.dll ..\..\Microsoft.Extensions.DependencyInjection.dll @@ -48,19 +48,19 @@ ..\..\Microsoft.Extensions.DependencyInjection.Abstractions.dll - ..\..\..\..\..\ffxiv\alyssile-xivl\addon\Hooks\dev\Dalamud.Bindings.ImGui.dll + C:\Users\Aly\AppData\Roaming\XIVLauncher\addon\Hooks\dev\Dalamud.Bindings.ImGui.dll - ..\..\..\..\..\ffxiv\alyssile-xivl\addon\Hooks\dev\Lumina.Excel.dll + C:\Users\Aly\AppData\Roaming\XIVLauncher\addon\Hooks\dev\Lumina.Excel.dll - ..\..\..\..\..\ffxiv\alyssile-xivl\addon\Hooks\dev\Lumina.dll + C:\Users\Aly\AppData\Roaming\XIVLauncher\addon\Hooks\dev\Lumina.dll ..\..\JsonSchema.Net.dll - ..\..\..\..\..\ffxiv\alyssile-xivl\addon\Hooks\dev\InteropGenerator.Runtime.dll + C:\Users\Aly\AppData\Roaming\XIVLauncher\addon\Hooks\dev\InteropGenerator.Runtime.dll ..\..\Microsoft.Extensions.Logging.dll diff --git a/Questionable/Questionable/QuestionablePlugin.cs b/Questionable/Questionable/QuestionablePlugin.cs index 8532df7..d826f26 100644 --- a/Questionable/Questionable/QuestionablePlugin.cs +++ b/Questionable/Questionable/QuestionablePlugin.cs @@ -1,7 +1,5 @@ using System; using System.Linq; -using Dalamud.Game; -using Dalamud.Game.ClientState.Objects; using Dalamud.Interface.Windowing; using Dalamud.Plugin; using Dalamud.Plugin.Services;