diff --git a/QuestPaths/Questionable.QuestPaths/AssemblyQuestLoader.cs b/QuestPaths/Questionable.QuestPaths/AssemblyQuestLoader.cs index 0b955f7..2a512ab 100644 --- a/QuestPaths/Questionable.QuestPaths/AssemblyQuestLoader.cs +++ b/QuestPaths/Questionable.QuestPaths/AssemblyQuestLoader.cs @@ -461833,7 +461833,15 @@ public static class AssemblyQuestLoader span3[index2] = new QuestStep(EInteractionType.Interact, 1055817u, new Vector3(458.15198f, 114.935f, 657.3739f), 1187) { Fly = true, - Land = true + Land = true, + AetheryteShortcut = EAetheryteLocation.UrqopachaWorlarsEcho, + SkipConditions = new SkipConditions + { + AetheryteShortcutIf = new SkipAetheryteCondition + { + InSameTerritory = true + } + } }; obj145.Steps = list218; reference164 = obj145; @@ -462417,6 +462425,916 @@ public static class AssemblyQuestLoader reference190 = obj168; questRoot30.QuestSequence = list247; AddQuest(questId30, questRoot30); + QuestId questId31 = new QuestId(5343); + QuestRoot questRoot31 = new QuestRoot(); + num = 1; + List list253 = new List(num); + CollectionsMarshal.SetCount(list253, num); + span = CollectionsMarshal.AsSpan(list253); + index = 0; + span[index] = "WigglyMuffin"; + questRoot31.Author = list253; + index = 4; + List list254 = new List(index); + CollectionsMarshal.SetCount(list254, index); + span2 = CollectionsMarshal.AsSpan(list254); + num = 0; + ref QuestSequence reference191 = ref span2[num]; + QuestSequence obj169 = new QuestSequence + { + Sequence = 0 + }; + num2 = 1; + List list255 = new List(num2); + CollectionsMarshal.SetCount(list255, num2); + span3 = CollectionsMarshal.AsSpan(list255); + index2 = 0; + span3[index2] = new QuestStep(EInteractionType.AcceptQuest, 1054635u, new Vector3(493.2173f, 142.24991f, 783.0471f), 1187) + { + Fly = true, + AetheryteShortcut = EAetheryteLocation.UrqopachaWorlarsEcho, + SkipConditions = new SkipConditions + { + AetheryteShortcutIf = new SkipAetheryteCondition + { + InSameTerritory = true + } + } + }; + obj169.Steps = list255; + reference191 = obj169; + num++; + ref QuestSequence reference192 = ref span2[num]; + QuestSequence obj170 = new QuestSequence + { + Sequence = 1 + }; + index2 = 3; + List list256 = new List(index2); + CollectionsMarshal.SetCount(list256, index2); + span3 = CollectionsMarshal.AsSpan(list256); + num2 = 0; + ref QuestStep reference193 = ref span3[num2]; + QuestStep obj171 = new QuestStep(EInteractionType.Interact, 1054640u, new Vector3(496.11658f, 142.24991f, 801.6022f), 1187) + { + TargetTerritoryId = (ushort)1297 + }; + SkipConditions skipConditions17 = new SkipConditions(); + SkipStepConditions skipStepConditions16 = new SkipStepConditions(); + index3 = 1; + List list257 = new List(index3); + CollectionsMarshal.SetCount(list257, index3); + span4 = CollectionsMarshal.AsSpan(list257); + num3 = 0; + span4[num3] = 1187; + skipStepConditions16.NotInTerritory = list257; + skipConditions17.StepIf = skipStepConditions16; + obj171.SkipConditions = skipConditions17; + reference193 = obj171; + num2++; + span3[num2] = new QuestStep(EInteractionType.WalkTo, null, new Vector3(52.610603f, 0f, 68.19062f), 1297) + { + Fly = false + }; + num2++; + span3[num2] = new QuestStep(EInteractionType.Interact, 1055786u, new Vector3(97.24573f, 4.942853f, 198.19934f), 1297); + obj170.Steps = list256; + reference192 = obj170; + num++; + ref QuestSequence reference194 = ref span2[num]; + QuestSequence obj172 = new QuestSequence + { + Sequence = 2 + }; + num2 = 3; + List list258 = new List(num2); + CollectionsMarshal.SetCount(list258, num2); + span3 = CollectionsMarshal.AsSpan(list258); + index2 = 0; + ref QuestStep reference195 = ref span3[index2]; + QuestStep obj173 = new QuestStep(EInteractionType.UseItem, 2014944u, new Vector3(162.2566f, 3.905f, 88.95158f), 1297) + { + ItemId = 2003777u + }; + num3 = 6; + List list259 = new List(num3); + CollectionsMarshal.SetCount(list259, num3); + span7 = CollectionsMarshal.AsSpan(list259); + index3 = 0; + span7[index3] = null; + index3++; + span7[index3] = null; + index3++; + span7[index3] = null; + index3++; + span7[index3] = null; + index3++; + span7[index3] = null; + index3++; + span7[index3] = new QuestWorkValue((byte)8, null, EQuestWorkMode.Bitwise); + obj173.CompletionQuestVariablesFlags = list259; + reference195 = obj173; + index2++; + ref QuestStep reference196 = ref span3[index2]; + QuestStep obj174 = new QuestStep(EInteractionType.UseItem, 2014946u, new Vector3(99.3091f, 5.821984f, 15.11211f), 1297) + { + ItemId = 2003777u + }; + index3 = 6; + List list260 = new List(index3); + CollectionsMarshal.SetCount(list260, index3); + span7 = CollectionsMarshal.AsSpan(list260); + num3 = 0; + span7[num3] = null; + num3++; + span7[num3] = null; + num3++; + span7[num3] = null; + num3++; + span7[num3] = null; + num3++; + span7[num3] = null; + num3++; + span7[num3] = new QuestWorkValue((byte)10, null, EQuestWorkMode.Bitwise); + obj174.CompletionQuestVariablesFlags = list260; + reference196 = obj174; + index2++; + span3[index2] = new QuestStep(EInteractionType.UseItem, 2014945u, new Vector3(72.99576f, 3.579935f, 29.1846f), 1297) + { + ItemId = 2003777u + }; + obj172.Steps = list258; + reference194 = obj172; + num++; + ref QuestSequence reference197 = ref span2[num]; + QuestSequence obj175 = new QuestSequence + { + Sequence = byte.MaxValue + }; + index2 = 1; + List list261 = new List(index2); + CollectionsMarshal.SetCount(list261, index2); + span3 = CollectionsMarshal.AsSpan(list261); + num2 = 0; + span3[num2] = new QuestStep(EInteractionType.CompleteQuest, 1054635u, new Vector3(493.2173f, 142.24991f, 783.0471f), 1187) + { + Fly = true, + Land = true, + AetheryteShortcut = EAetheryteLocation.UrqopachaWorlarsEcho, + SkipConditions = new SkipConditions + { + AetheryteShortcutIf = new SkipAetheryteCondition + { + InSameTerritory = true + } + } + }; + obj175.Steps = list261; + reference197 = obj175; + questRoot31.QuestSequence = list254; + AddQuest(questId31, questRoot31); + QuestId questId32 = new QuestId(5344); + QuestRoot questRoot32 = new QuestRoot(); + num = 1; + List list262 = new List(num); + CollectionsMarshal.SetCount(list262, num); + span = CollectionsMarshal.AsSpan(list262); + index = 0; + span[index] = "WigglyMuffin"; + questRoot32.Author = list262; + index = 4; + List list263 = new List(index); + CollectionsMarshal.SetCount(list263, index); + span2 = CollectionsMarshal.AsSpan(list263); + num = 0; + ref QuestSequence reference198 = ref span2[num]; + QuestSequence obj176 = new QuestSequence + { + Sequence = 0 + }; + num2 = 1; + List list264 = new List(num2); + CollectionsMarshal.SetCount(list264, num2); + span3 = CollectionsMarshal.AsSpan(list264); + index2 = 0; + span3[index2] = new QuestStep(EInteractionType.AcceptQuest, 1054635u, new Vector3(493.2173f, 142.24991f, 783.0471f), 1187) + { + Fly = true, + AetheryteShortcut = EAetheryteLocation.UrqopachaWorlarsEcho, + SkipConditions = new SkipConditions + { + AetheryteShortcutIf = new SkipAetheryteCondition + { + InSameTerritory = true + } + } + }; + obj176.Steps = list264; + reference198 = obj176; + num++; + ref QuestSequence reference199 = ref span2[num]; + QuestSequence obj177 = new QuestSequence + { + Sequence = 1 + }; + index2 = 1; + List list265 = new List(index2); + CollectionsMarshal.SetCount(list265, index2); + span3 = CollectionsMarshal.AsSpan(list265); + num2 = 0; + span3[num2] = new QuestStep(EInteractionType.Interact, 1055787u, new Vector3(521.8126f, 111.135f, 713.4049f), 1187) + { + Fly = true, + AetheryteShortcut = EAetheryteLocation.UrqopachaWorlarsEcho, + SkipConditions = new SkipConditions + { + AetheryteShortcutIf = new SkipAetheryteCondition + { + InSameTerritory = true + } + } + }; + obj177.Steps = list265; + reference199 = obj177; + num++; + ref QuestSequence reference200 = ref span2[num]; + QuestSequence obj178 = new QuestSequence + { + Sequence = 2 + }; + num2 = 2; + List list266 = new List(num2); + CollectionsMarshal.SetCount(list266, num2); + span3 = CollectionsMarshal.AsSpan(list266); + index2 = 0; + span3[index2] = new QuestStep(EInteractionType.Craft, null, null, 1187) + { + ItemId = 46220u, + ItemCount = 1 + }; + index2++; + span3[index2] = new QuestStep(EInteractionType.Interact, 1055787u, new Vector3(521.8126f, 111.135f, 713.4049f), 1187); + obj178.Steps = list266; + reference200 = obj178; + num++; + ref QuestSequence reference201 = ref span2[num]; + QuestSequence obj179 = new QuestSequence + { + Sequence = byte.MaxValue + }; + index2 = 1; + List list267 = new List(index2); + CollectionsMarshal.SetCount(list267, index2); + span3 = CollectionsMarshal.AsSpan(list267); + num2 = 0; + span3[num2] = new QuestStep(EInteractionType.CompleteQuest, 1054635u, new Vector3(493.2173f, 142.24991f, 783.0471f), 1187) + { + Fly = true + }; + obj179.Steps = list267; + reference201 = obj179; + questRoot32.QuestSequence = list263; + AddQuest(questId32, questRoot32); + QuestId questId33 = new QuestId(5345); + QuestRoot questRoot33 = new QuestRoot(); + num = 1; + List list268 = new List(num); + CollectionsMarshal.SetCount(list268, num); + span = CollectionsMarshal.AsSpan(list268); + index = 0; + span[index] = "CryoTechnic"; + questRoot33.Author = list268; + index = 4; + List list269 = new List(index); + CollectionsMarshal.SetCount(list269, index); + span2 = CollectionsMarshal.AsSpan(list269); + num = 0; + ref QuestSequence reference202 = ref span2[num]; + QuestSequence obj180 = new QuestSequence + { + Sequence = 0 + }; + num2 = 1; + List list270 = new List(num2); + CollectionsMarshal.SetCount(list270, num2); + span3 = CollectionsMarshal.AsSpan(list270); + index2 = 0; + span3[index2] = new QuestStep(EInteractionType.AcceptQuest, 1054635u, new Vector3(493.2173f, 142.24991f, 783.0471f), 1187) + { + Fly = true, + AetheryteShortcut = EAetheryteLocation.UrqopachaWorlarsEcho, + SkipConditions = new SkipConditions + { + AetheryteShortcutIf = new SkipAetheryteCondition + { + InSameTerritory = true + } + } + }; + obj180.Steps = list270; + reference202 = obj180; + num++; + ref QuestSequence reference203 = ref span2[num]; + QuestSequence obj181 = new QuestSequence + { + Sequence = 1 + }; + index2 = 2; + List list271 = new List(index2); + CollectionsMarshal.SetCount(list271, index2); + span3 = CollectionsMarshal.AsSpan(list271); + num2 = 0; + ref QuestStep reference204 = ref span3[num2]; + QuestStep obj182 = new QuestStep(EInteractionType.Interact, 1054640u, new Vector3(496.11658f, 142.24991f, 801.6022f), 1187) + { + TargetTerritoryId = (ushort)1297 + }; + SkipConditions skipConditions18 = new SkipConditions(); + SkipStepConditions skipStepConditions17 = new SkipStepConditions(); + num3 = 1; + List list272 = new List(num3); + CollectionsMarshal.SetCount(list272, num3); + span4 = CollectionsMarshal.AsSpan(list272); + index3 = 0; + span4[index3] = 1187; + skipStepConditions17.NotInTerritory = list272; + skipConditions18.StepIf = skipStepConditions17; + obj182.SkipConditions = skipConditions18; + reference204 = obj182; + num2++; + span3[num2] = new QuestStep(EInteractionType.Interact, 1055788u, new Vector3(97.8866f, 4.942851f, 160.66211f), 1297); + obj181.Steps = list271; + reference203 = obj181; + num++; + ref QuestSequence reference205 = ref span2[num]; + QuestSequence obj183 = new QuestSequence + { + Sequence = 2 + }; + num2 = 2; + List list273 = new List(num2); + CollectionsMarshal.SetCount(list273, num2); + span3 = CollectionsMarshal.AsSpan(list273); + index2 = 0; + span3[index2] = new QuestStep(EInteractionType.Craft, null, null, 1297) + { + ItemId = 46222u, + ItemCount = 4 + }; + index2++; + span3[index2] = new QuestStep(EInteractionType.Interact, 1055788u, new Vector3(97.8866f, 4.942851f, 160.66211f), 1297); + obj183.Steps = list273; + reference205 = obj183; + num++; + ref QuestSequence reference206 = ref span2[num]; + QuestSequence obj184 = new QuestSequence + { + Sequence = byte.MaxValue + }; + index2 = 1; + List list274 = new List(index2); + CollectionsMarshal.SetCount(list274, index2); + span3 = CollectionsMarshal.AsSpan(list274); + num2 = 0; + span3[num2] = new QuestStep(EInteractionType.CompleteQuest, 1054635u, new Vector3(493.2173f, 142.24991f, 783.0471f), 1187) + { + Fly = true, + Land = true, + AetheryteShortcut = EAetheryteLocation.UrqopachaWorlarsEcho, + SkipConditions = new SkipConditions + { + AetheryteShortcutIf = new SkipAetheryteCondition + { + InSameTerritory = true + } + } + }; + obj184.Steps = list274; + reference206 = obj184; + questRoot33.QuestSequence = list269; + AddQuest(questId33, questRoot33); + QuestId questId34 = new QuestId(5346); + QuestRoot questRoot34 = new QuestRoot(); + num = 1; + List list275 = new List(num); + CollectionsMarshal.SetCount(list275, num); + span = CollectionsMarshal.AsSpan(list275); + index = 0; + span[index] = "WigglyMuffin"; + questRoot34.Author = list275; + index = 3; + List list276 = new List(index); + CollectionsMarshal.SetCount(list276, index); + span2 = CollectionsMarshal.AsSpan(list276); + num = 0; + ref QuestSequence reference207 = ref span2[num]; + QuestSequence obj185 = new QuestSequence + { + Sequence = 0 + }; + num2 = 1; + List list277 = new List(num2); + CollectionsMarshal.SetCount(list277, num2); + span3 = CollectionsMarshal.AsSpan(list277); + index2 = 0; + span3[index2] = new QuestStep(EInteractionType.AcceptQuest, 1054635u, new Vector3(493.2173f, 142.24991f, 783.0471f), 1187) + { + Fly = true, + AetheryteShortcut = EAetheryteLocation.UrqopachaWorlarsEcho, + SkipConditions = new SkipConditions + { + AetheryteShortcutIf = new SkipAetheryteCondition + { + InSameTerritory = true + } + } + }; + obj185.Steps = list277; + reference207 = obj185; + num++; + ref QuestSequence reference208 = ref span2[num]; + QuestSequence obj186 = new QuestSequence + { + Sequence = 1 + }; + index2 = 4; + List list278 = new List(index2); + CollectionsMarshal.SetCount(list278, index2); + span3 = CollectionsMarshal.AsSpan(list278); + num2 = 0; + ref QuestStep reference209 = ref span3[num2]; + QuestStep obj187 = new QuestStep(EInteractionType.Emote, 1055796u, new Vector3(-486.8086f, 60.107265f, 138.56714f), 1187) + { + Fly = true, + Emote = EEmote.Poke + }; + index3 = 6; + List> list279 = new List>(index3); + CollectionsMarshal.SetCount(list279, index3); + span8 = CollectionsMarshal.AsSpan(list279); + num3 = 0; + span8[num3] = null; + num3++; + ref List reference210 = ref span8[num3]; + index4 = 1; + List list280 = new List(index4); + CollectionsMarshal.SetCount(list280, index4); + span7 = CollectionsMarshal.AsSpan(list280); + num4 = 0; + span7[num4] = new QuestWorkValue((byte)3, null, EQuestWorkMode.Bitwise); + reference210 = list280; + num3++; + span8[num3] = null; + num3++; + span8[num3] = null; + num3++; + span8[num3] = null; + num3++; + span8[num3] = null; + obj187.RequiredQuestVariables = list279; + reference209 = obj187; + num2++; + ref QuestStep reference211 = ref span3[num2]; + QuestStep obj188 = new QuestStep(EInteractionType.Emote, 1055797u, new Vector3(-195.02557f, 40.181572f, 15.518433f), 1187) + { + Fly = true, + AetheryteShortcut = EAetheryteLocation.UrqopachaWachunpelo, + Emote = EEmote.Poke, + SkipConditions = new SkipConditions + { + AetheryteShortcutIf = new SkipAetheryteCondition + { + NearPosition = new NearPositionCondition + { + Position = new Vector3(-203.61337f, 40.316097f, 6.7655187f), + MaximumDistance = 500f, + TerritoryId = 1187 + } + } + } + }; + num3 = 6; + List> list281 = new List>(num3); + CollectionsMarshal.SetCount(list281, num3); + span8 = CollectionsMarshal.AsSpan(list281); + index3 = 0; + span8[index3] = null; + index3++; + ref List reference212 = ref span8[index3]; + num4 = 1; + List list282 = new List(num4); + CollectionsMarshal.SetCount(list282, num4); + span7 = CollectionsMarshal.AsSpan(list282); + index4 = 0; + span7[index4] = new QuestWorkValue((byte)1, null, EQuestWorkMode.Bitwise); + reference212 = list282; + index3++; + span8[index3] = null; + index3++; + span8[index3] = null; + index3++; + span8[index3] = null; + index3++; + span8[index3] = null; + obj188.RequiredQuestVariables = list281; + reference211 = obj188; + num2++; + ref QuestStep reference213 = ref span3[num2]; + QuestStep obj189 = new QuestStep(EInteractionType.Emote, 1055798u, new Vector3(-434.40912f, 118.59887f, 553.8567f), 1187) + { + Fly = true, + Emote = EEmote.Poke + }; + index3 = 6; + List> list283 = new List>(index3); + CollectionsMarshal.SetCount(list283, index3); + span8 = CollectionsMarshal.AsSpan(list283); + num3 = 0; + span8[num3] = null; + num3++; + ref List reference214 = ref span8[num3]; + index4 = 1; + List list284 = new List(index4); + CollectionsMarshal.SetCount(list284, index4); + span7 = CollectionsMarshal.AsSpan(list284); + num4 = 0; + span7[num4] = new QuestWorkValue((byte)4, null, EQuestWorkMode.Bitwise); + reference214 = list284; + num3++; + span8[num3] = null; + num3++; + span8[num3] = null; + num3++; + span8[num3] = null; + num3++; + span8[num3] = null; + obj189.RequiredQuestVariables = list283; + reference213 = obj189; + num2++; + ref QuestStep reference215 = ref span3[num2]; + QuestStep obj190 = new QuestStep(EInteractionType.Emote, 1055789u, new Vector3(509.69702f, 111.134995f, 693.78186f), 1187) + { + Fly = true, + Emote = EEmote.Poke + }; + num3 = 6; + List> list285 = new List>(num3); + CollectionsMarshal.SetCount(list285, num3); + span8 = CollectionsMarshal.AsSpan(list285); + index3 = 0; + span8[index3] = null; + index3++; + ref List reference216 = ref span8[index3]; + num4 = 1; + List list286 = new List(num4); + CollectionsMarshal.SetCount(list286, num4); + span7 = CollectionsMarshal.AsSpan(list286); + index4 = 0; + span7[index4] = new QuestWorkValue((byte)2, null, EQuestWorkMode.Bitwise); + reference216 = list286; + index3++; + span8[index3] = null; + index3++; + span8[index3] = null; + index3++; + span8[index3] = null; + index3++; + span8[index3] = null; + obj190.RequiredQuestVariables = list285; + reference215 = obj190; + obj186.Steps = list278; + reference208 = obj186; + num++; + ref QuestSequence reference217 = ref span2[num]; + QuestSequence obj191 = new QuestSequence + { + Sequence = byte.MaxValue + }; + num2 = 1; + List list287 = new List(num2); + CollectionsMarshal.SetCount(list287, num2); + span3 = CollectionsMarshal.AsSpan(list287); + index2 = 0; + span3[index2] = new QuestStep(EInteractionType.CompleteQuest, 1054635u, new Vector3(493.2173f, 142.24991f, 783.0471f), 1187) + { + Fly = true, + AetheryteShortcut = EAetheryteLocation.UrqopachaWorlarsEcho + }; + obj191.Steps = list287; + reference217 = obj191; + questRoot34.QuestSequence = list276; + AddQuest(questId34, questRoot34); + QuestId questId35 = new QuestId(5347); + QuestRoot questRoot35 = new QuestRoot(); + num = 1; + List list288 = new List(num); + CollectionsMarshal.SetCount(list288, num); + span = CollectionsMarshal.AsSpan(list288); + index = 0; + span[index] = "CryoTechnic"; + questRoot35.Author = list288; + index = 4; + List list289 = new List(index); + CollectionsMarshal.SetCount(list289, index); + span2 = CollectionsMarshal.AsSpan(list289); + num = 0; + ref QuestSequence reference218 = ref span2[num]; + QuestSequence obj192 = new QuestSequence + { + Sequence = 0 + }; + index2 = 1; + List list290 = new List(index2); + CollectionsMarshal.SetCount(list290, index2); + span3 = CollectionsMarshal.AsSpan(list290); + num2 = 0; + span3[num2] = new QuestStep(EInteractionType.AcceptQuest, 1054635u, new Vector3(493.2173f, 142.24991f, 783.0471f), 1187) + { + Fly = true, + AetheryteShortcut = EAetheryteLocation.UrqopachaWorlarsEcho, + SkipConditions = new SkipConditions + { + AetheryteShortcutIf = new SkipAetheryteCondition + { + InSameTerritory = true + } + } + }; + obj192.Steps = list290; + reference218 = obj192; + num++; + ref QuestSequence reference219 = ref span2[num]; + QuestSequence obj193 = new QuestSequence + { + Sequence = 1 + }; + num2 = 2; + List list291 = new List(num2); + CollectionsMarshal.SetCount(list291, num2); + span3 = CollectionsMarshal.AsSpan(list291); + index2 = 0; + ref QuestStep reference220 = ref span3[index2]; + QuestStep obj194 = new QuestStep(EInteractionType.Interact, 1054640u, new Vector3(496.11658f, 142.24991f, 801.6022f), 1187) + { + TargetTerritoryId = (ushort)1297 + }; + SkipConditions skipConditions19 = new SkipConditions(); + SkipStepConditions skipStepConditions18 = new SkipStepConditions(); + index3 = 1; + List list292 = new List(index3); + CollectionsMarshal.SetCount(list292, index3); + span4 = CollectionsMarshal.AsSpan(list292); + num3 = 0; + span4[num3] = 1187; + skipStepConditions18.NotInTerritory = list292; + skipConditions19.StepIf = skipStepConditions18; + obj194.SkipConditions = skipConditions19; + reference220 = obj194; + index2++; + span3[index2] = new QuestStep(EInteractionType.Interact, 1055790u, new Vector3(124.98657f, 3.9429288f, 184.6189f), 1297); + obj193.Steps = list291; + reference219 = obj193; + num++; + ref QuestSequence reference221 = ref span2[num]; + QuestSequence obj195 = new QuestSequence + { + Sequence = 2 + }; + index2 = 2; + List list293 = new List(index2); + CollectionsMarshal.SetCount(list293, index2); + span3 = CollectionsMarshal.AsSpan(list293); + num2 = 0; + span3[num2] = new QuestStep(EInteractionType.Craft, null, null, 1297) + { + ItemId = 46224u, + ItemCount = 2 + }; + num2++; + span3[num2] = new QuestStep(EInteractionType.Interact, 1055790u, new Vector3(124.98657f, 3.9429288f, 184.6189f), 1297); + obj195.Steps = list293; + reference221 = obj195; + num++; + ref QuestSequence reference222 = ref span2[num]; + QuestSequence obj196 = new QuestSequence + { + Sequence = byte.MaxValue + }; + num2 = 1; + List list294 = new List(num2); + CollectionsMarshal.SetCount(list294, num2); + span3 = CollectionsMarshal.AsSpan(list294); + index2 = 0; + span3[index2] = new QuestStep(EInteractionType.CompleteQuest, 1054635u, new Vector3(493.2173f, 142.24991f, 783.0471f), 1187) + { + Fly = true, + Land = true, + AetheryteShortcut = EAetheryteLocation.UrqopachaWorlarsEcho, + SkipConditions = new SkipConditions + { + AetheryteShortcutIf = new SkipAetheryteCondition + { + InSameTerritory = true + } + } + }; + obj196.Steps = list294; + reference222 = obj196; + questRoot35.QuestSequence = list289; + AddQuest(questId35, questRoot35); + QuestId questId36 = new QuestId(5348); + QuestRoot questRoot36 = new QuestRoot(); + num = 1; + List list295 = new List(num); + CollectionsMarshal.SetCount(list295, num); + span = CollectionsMarshal.AsSpan(list295); + index = 0; + span[index] = "CryoTechnic"; + questRoot36.Author = list295; + index = 3; + List list296 = new List(index); + CollectionsMarshal.SetCount(list296, index); + span2 = CollectionsMarshal.AsSpan(list296); + num = 0; + ref QuestSequence reference223 = ref span2[num]; + QuestSequence obj197 = new QuestSequence + { + Sequence = 0 + }; + index2 = 1; + List list297 = new List(index2); + CollectionsMarshal.SetCount(list297, index2); + span3 = CollectionsMarshal.AsSpan(list297); + num2 = 0; + span3[num2] = new QuestStep(EInteractionType.AcceptQuest, 1054635u, new Vector3(493.2173f, 142.24991f, 783.0471f), 1187) + { + Fly = true, + AetheryteShortcut = EAetheryteLocation.UrqopachaWorlarsEcho, + SkipConditions = new SkipConditions + { + AetheryteShortcutIf = new SkipAetheryteCondition + { + InSameTerritory = true + } + } + }; + obj197.Steps = list297; + reference223 = obj197; + num++; + ref QuestSequence reference224 = ref span2[num]; + QuestSequence obj198 = new QuestSequence + { + Sequence = 1 + }; + num2 = 1; + List list298 = new List(num2); + CollectionsMarshal.SetCount(list298, num2); + span3 = CollectionsMarshal.AsSpan(list298); + index2 = 0; + span3[index2] = new QuestStep(EInteractionType.Interact, 1054676u, new Vector3(500.93835f, 142.24991f, 782.22314f), 1187); + obj198.Steps = list298; + reference224 = obj198; + num++; + ref QuestSequence reference225 = ref span2[num]; + QuestSequence obj199 = new QuestSequence + { + Sequence = byte.MaxValue + }; + index2 = 2; + List list299 = new List(index2); + CollectionsMarshal.SetCount(list299, index2); + span3 = CollectionsMarshal.AsSpan(list299); + num2 = 0; + span3[num2] = new QuestStep(EInteractionType.Craft, null, null, 1187) + { + ItemId = 46226u, + ItemCount = 1 + }; + num2++; + span3[num2] = new QuestStep(EInteractionType.CompleteQuest, 1054635u, new Vector3(493.2173f, 142.24991f, 783.0471f), 1187) + { + Fly = true, + Land = true, + AetheryteShortcut = EAetheryteLocation.UrqopachaWorlarsEcho, + SkipConditions = new SkipConditions + { + AetheryteShortcutIf = new SkipAetheryteCondition + { + InSameTerritory = true + } + } + }; + obj199.Steps = list299; + reference225 = obj199; + questRoot36.QuestSequence = list296; + AddQuest(questId36, questRoot36); + QuestId questId37 = new QuestId(5349); + QuestRoot questRoot37 = new QuestRoot(); + num = 1; + List list300 = new List(num); + CollectionsMarshal.SetCount(list300, num); + span = CollectionsMarshal.AsSpan(list300); + index = 0; + span[index] = "CryoTechnic"; + questRoot37.Author = list300; + index = 3; + List list301 = new List(index); + CollectionsMarshal.SetCount(list301, index); + span2 = CollectionsMarshal.AsSpan(list301); + num = 0; + ref QuestSequence reference226 = ref span2[num]; + QuestSequence obj200 = new QuestSequence + { + Sequence = 0 + }; + num2 = 1; + List list302 = new List(num2); + CollectionsMarshal.SetCount(list302, num2); + span3 = CollectionsMarshal.AsSpan(list302); + index2 = 0; + span3[index2] = new QuestStep(EInteractionType.AcceptQuest, 1054635u, new Vector3(493.2173f, 142.24991f, 783.0471f), 1187) + { + Fly = true, + AetheryteShortcut = EAetheryteLocation.UrqopachaWorlarsEcho, + SkipConditions = new SkipConditions + { + AetheryteShortcutIf = new SkipAetheryteCondition + { + InSameTerritory = true + } + } + }; + obj200.Steps = list302; + reference226 = obj200; + num++; + ref QuestSequence reference227 = ref span2[num]; + QuestSequence obj201 = new QuestSequence + { + Sequence = 1 + }; + index2 = 3; + List list303 = new List(index2); + CollectionsMarshal.SetCount(list303, index2); + span3 = CollectionsMarshal.AsSpan(list303); + num2 = 0; + span3[num2] = new QuestStep(EInteractionType.Say, 1055825u, new Vector3(254.56616f, 34.20388f, 156.60327f), 1187) + { + Fly = true, + Land = true, + ChatMessage = new ChatMessage + { + Key = "TEXT_BANYOK114_05349_SAYTODO_000_010" + } + }; + num2++; + span3[num2] = new QuestStep(EInteractionType.WalkTo, null, new Vector3(145.29918f, 34.203415f, 104.64879f), 1187) + { + Fly = true, + Land = true + }; + num2++; + span3[num2] = new QuestStep(EInteractionType.Say, 1055826u, new Vector3(145.76941f, 34.203403f, 101.548706f), 1187) + { + ChatMessage = new ChatMessage + { + Key = "TEXT_BANYOK114_05349_SAYTODO_000_010" + } + }; + obj201.Steps = list303; + reference227 = obj201; + num++; + ref QuestSequence reference228 = ref span2[num]; + QuestSequence obj202 = new QuestSequence + { + Sequence = byte.MaxValue + }; + num2 = 1; + List list304 = new List(num2); + CollectionsMarshal.SetCount(list304, num2); + span3 = CollectionsMarshal.AsSpan(list304); + index2 = 0; + span3[index2] = new QuestStep(EInteractionType.CompleteQuest, 1054635u, new Vector3(493.2173f, 142.24991f, 783.0471f), 1187) + { + Fly = true, + Land = true, + AetheryteShortcut = EAetheryteLocation.UrqopachaWorlarsEcho, + SkipConditions = new SkipConditions + { + AetheryteShortcutIf = new SkipAetheryteCondition + { + NearPosition = new NearPositionCondition + { + Position = new Vector3(503.1118f, 142.24991f, 787.5082f), + MaximumDistance = 500f, + TerritoryId = 1187 + } + } + } + }; + obj202.Steps = list304; + reference228 = obj202; + questRoot37.QuestSequence = list301; + AddQuest(questId37, questRoot37); } private static void LoadQuests107() diff --git a/Questionable/Questionable.Controller/QuestController.cs b/Questionable/Questionable.Controller/QuestController.cs index 18dc6cd..b5ff8a7 100644 --- a/Questionable/Questionable.Controller/QuestController.cs +++ b/Questionable/Questionable.Controller/QuestController.cs @@ -142,6 +142,8 @@ internal sealed class QuestController : MiniTaskController private DateTime _lastAutoRefresh = DateTime.MinValue; + private readonly AlliedSocietyData _alliedSocietyData = new AlliedSocietyData(); + private const char ClipboardSeparator = ';'; public EAutomationType AutomationType @@ -944,9 +946,16 @@ internal sealed class QuestController : MiniTaskController _gatheringController.Stop("Execute next step"); try { - foreach (ITask item in _taskCreator.CreateTasks(CurrentQuest.Quest, CurrentQuest.Sequence, questSequence, step)) + if (CurrentQuest.Sequence == byte.MaxValue && CurrentQuest.Quest.Info.AlliedSociety != EAlliedSociety.None && _configuration.General.BatchAlliedSocietyTurnIns) { - _taskQueue.Enqueue(item); + EnqueueBatchedAlliedSocietyTurnIns(questSequence, step); + } + else + { + foreach (ITask item in _taskCreator.CreateTasks(CurrentQuest.Quest, CurrentQuest.Sequence, questSequence, step)) + { + _taskQueue.Enqueue(item); + } } ResetAutoRefreshState(); return; @@ -966,6 +975,86 @@ internal sealed class QuestController : MiniTaskController goto IL_01e8; } + private void EnqueueBatchedAlliedSocietyTurnIns(QuestSequence seq, QuestStep? step) + { + QuestProgress currentQuest = CurrentQuest; + if (currentQuest == null) + { + return; + } + EAlliedSociety alliedSociety = currentQuest.Quest.Info.AlliedSociety; + if (alliedSociety == EAlliedSociety.None) + { + return; + } + List<(QuestId, byte, int)> list = new List<(QuestId, byte, int)>(); + foreach (Quest allQuest in _questRegistry.AllQuests) + { + if (allQuest == null || allQuest.Info.AlliedSociety != alliedSociety || !_questFunctions.IsQuestAccepted(allQuest.Id)) + { + continue; + } + QuestProgressInfo questProgressInfo = _questFunctions.GetQuestProgressInfo(allQuest.Id); + if (questProgressInfo != null) + { + int item = 0; + if (allQuest.Id is QuestId item2) + { + list.Add((item2, questProgressInfo.Sequence, item)); + } + } + } + if (list.Count == 0) + { + return; + } + foreach (var (questId, b, num) in list.Where<(QuestId, byte, int)>(((QuestId Id, byte Sequence, int StepIndex) x) => x.Sequence < byte.MaxValue)) + { + if (!_questRegistry.TryGetQuest(questId, out Quest quest)) + { + continue; + } + QuestSequence questSequence = quest.FindSequence(b); + if (questSequence == null) + { + continue; + } + QuestStep step2 = null; + if (num >= 0 && num < questSequence.Steps.Count) + { + step2 = questSequence.FindStep(num); + } + foreach (ITask item3 in _taskCreator.CreateTasks(quest, b, questSequence, step2)) + { + _taskQueue.Enqueue(item3); + } + } + foreach (KeyValuePair> item4 in _alliedSocietyData.GroupQuestsByTurnInIssuer(list.Select<(QuestId, byte, int), QuestId>(((QuestId Id, byte Sequence, int StepIndex) x) => x.Id))) + { + _ = item4.Key; + List value = item4.Value; + if (value.Count == 0) + { + continue; + } + QuestId questId2 = value[0]; + if (!_questRegistry.TryGetQuest(questId2, out Quest quest2)) + { + continue; + } + QuestSequence questSequence2 = quest2.FindSequence(byte.MaxValue); + if (questSequence2 == null) + { + continue; + } + QuestStep step3 = questSequence2.FindStep(0); + foreach (ITask item5 in _taskCreator.CreateTasks(quest2, byte.MaxValue, questSequence2, step3)) + { + _taskQueue.Enqueue(item5); + } + } + } + public string ToStatString() { ITask task = _taskQueue.CurrentTaskExecutor?.CurrentTask; diff --git a/Questionable/Questionable.Data/AlliedSocietyData.cs b/Questionable/Questionable.Data/AlliedSocietyData.cs index 2640344..c1d4d7b 100644 --- a/Questionable/Questionable.Data/AlliedSocietyData.cs +++ b/Questionable/Questionable.Data/AlliedSocietyData.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Runtime.InteropServices; using Questionable.Model; using Questionable.Model.Common; using Questionable.Model.Questing; @@ -260,4 +261,53 @@ internal sealed class AlliedSocietyData break; } } + + public bool TryGetTurnInIssuers(ElementId elementId, out uint[] issuerDataIds) + { + EAlliedSociety commonAlliedSocietyTurnIn = GetCommonAlliedSocietyTurnIn(elementId); + if (commonAlliedSocietyTurnIn == EAlliedSociety.None) + { + issuerDataIds = Array.Empty(); + return false; + } + GetCommonAlliedSocietyNpcs(commonAlliedSocietyTurnIn, out uint[] normalNpcs, out uint[] mountNpcs); + if (normalNpcs.Length != 0) + { + issuerDataIds = normalNpcs; + } + else if (mountNpcs.Length != 0) + { + issuerDataIds = mountNpcs; + } + else + { + issuerDataIds = Array.Empty(); + } + return issuerDataIds.Length != 0; + } + + public Dictionary> GroupQuestsByTurnInIssuer(IEnumerable quests) + { + Dictionary> dictionary = new Dictionary>(); + foreach (QuestId quest in quests) + { + if (TryGetTurnInIssuers(quest, out uint[] issuerDataIds) && issuerDataIds.Length != 0) + { + uint key = issuerDataIds[0]; + if (dictionary.TryGetValue(key, out var value)) + { + value.Add(quest); + continue; + } + int num = 1; + List list = new List(num); + CollectionsMarshal.SetCount(list, num); + Span span = CollectionsMarshal.AsSpan(list); + int index = 0; + span[index] = quest; + dictionary[key] = list; + } + } + return dictionary; + } } diff --git a/Questionable/Questionable.Model/AlliedSocietyDailyInfo.cs b/Questionable/Questionable.Model/AlliedSocietyDailyInfo.cs index 8346f36..9eb661c 100644 --- a/Questionable/Questionable.Model/AlliedSocietyDailyInfo.cs +++ b/Questionable/Questionable.Model/AlliedSocietyDailyInfo.cs @@ -41,51 +41,63 @@ internal sealed class AlliedSocietyDailyInfo : IQuestInfo { QuestId = new AlliedSocietyDailyId((byte)beastTribe.RowId, rank); Name = beastTribe.Name.ToString(); - List list2; - switch ((EAlliedSociety)(byte)beastTribe.RowId) + IReadOnlyList readOnlyList = null; + try { - case EAlliedSociety.Amaljaa: - case EAlliedSociety.Sylphs: - case EAlliedSociety.Kobolds: - case EAlliedSociety.Sahagin: - case EAlliedSociety.VanuVanu: - case EAlliedSociety.Vath: - case EAlliedSociety.Kojin: - case EAlliedSociety.Ananta: - case EAlliedSociety.Pixies: - case EAlliedSociety.Arkasodara: - case EAlliedSociety.Pelupelu: + List list2; + switch ((EAlliedSociety)(byte)beastTribe.RowId) + { + case EAlliedSociety.Amaljaa: + case EAlliedSociety.Sylphs: + case EAlliedSociety.Kobolds: + case EAlliedSociety.Sahagin: + case EAlliedSociety.VanuVanu: + case EAlliedSociety.Vath: + case EAlliedSociety.Kojin: + case EAlliedSociety.Ananta: + case EAlliedSociety.Pixies: + case EAlliedSociety.Arkasodara: + case EAlliedSociety.Pelupelu: + { + List list3 = new List(); + list3.AddRange(classJobUtils.AsIndividualJobs(EExtendedClassJob.DoW, null)); + list3.AddRange(classJobUtils.AsIndividualJobs(EExtendedClassJob.DoM, null)); + list2 = list3; + break; + } + case EAlliedSociety.Ixal: + case EAlliedSociety.Moogles: + case EAlliedSociety.Dwarves: + case EAlliedSociety.Loporrits: + case EAlliedSociety.YokHuy: + list2 = classJobUtils.AsIndividualJobs(EExtendedClassJob.DoH, null).ToList(); + break; + case EAlliedSociety.Qitari: + case EAlliedSociety.Omicrons: + case EAlliedSociety.MamoolJa: + list2 = classJobUtils.AsIndividualJobs(EExtendedClassJob.DoL, null).ToList(); + break; + case EAlliedSociety.Namazu: + { + List list = new List(); + list.AddRange(classJobUtils.AsIndividualJobs(EExtendedClassJob.DoH, null)); + list.AddRange(classJobUtils.AsIndividualJobs(EExtendedClassJob.DoL, null)); + list2 = list; + break; + } + default: + throw new ArgumentOutOfRangeException("beastTribe"); + } + readOnlyList = list2; + } + catch (ArgumentOutOfRangeException) { - List list3 = new List(); - list3.AddRange(classJobUtils.AsIndividualJobs(EExtendedClassJob.DoW, null)); - list3.AddRange(classJobUtils.AsIndividualJobs(EExtendedClassJob.DoM, null)); - list2 = list3; - break; + List list4 = new List(); + list4.AddRange(classJobUtils.AsIndividualJobs(EExtendedClassJob.DoW, null)); + list4.AddRange(classJobUtils.AsIndividualJobs(EExtendedClassJob.DoM, null)); + readOnlyList = new _003C_003Ez__ReadOnlyList(list4); } - case EAlliedSociety.Ixal: - case EAlliedSociety.Moogles: - case EAlliedSociety.Dwarves: - case EAlliedSociety.Loporrits: - case EAlliedSociety.YokHuy: - list2 = classJobUtils.AsIndividualJobs(EExtendedClassJob.DoH, null).ToList(); - break; - case EAlliedSociety.Qitari: - case EAlliedSociety.Omicrons: - case EAlliedSociety.MamoolJa: - list2 = classJobUtils.AsIndividualJobs(EExtendedClassJob.DoL, null).ToList(); - break; - case EAlliedSociety.Namazu: - { - List list = new List(); - list.AddRange(classJobUtils.AsIndividualJobs(EExtendedClassJob.DoH, null)); - list.AddRange(classJobUtils.AsIndividualJobs(EExtendedClassJob.DoL, null)); - list2 = list; - break; - } - default: - throw new ArgumentOutOfRangeException("beastTribe"); - } - ClassJobs = list2; + ClassJobs = readOnlyList; Expansion = (EExpansionVersion)beastTribe.Expansion.RowId; } } diff --git a/Questionable/Questionable.Validation.Validators/UniqueStartStopValidator.cs b/Questionable/Questionable.Validation.Validators/UniqueStartStopValidator.cs index 1ad8967..c6aa388 100644 --- a/Questionable/Questionable.Validation.Validators/UniqueStartStopValidator.cs +++ b/Questionable/Questionable.Validation.Validators/UniqueStartStopValidator.cs @@ -1,7 +1,5 @@ -using System; using System.Collections.Generic; using System.Linq; -using System.Runtime.InteropServices; using Questionable.Model; using Questionable.Model.Questing; @@ -11,18 +9,15 @@ internal sealed class UniqueStartStopValidator : IQuestValidator { public IEnumerable Validate(Quest quest) { - ElementId id = quest.Id; - if ((id is SatisfactionSupplyNpcId || id is AlliedSocietyDailyId) ? true : false) + bool flag = !(quest.Id is QuestId); + if (!flag) { - yield break; + ElementId id = quest.Id; + bool flag2 = ((id is SatisfactionSupplyNpcId || id is AlliedSocietyDailyId) ? true : false); + flag = flag2; } - int num = 1; - List list = new List(num); - CollectionsMarshal.SetCount(list, num); - Span span = CollectionsMarshal.AsSpan(list); - int index = 0; - span[index] = EInteractionType.AcceptQuest; - List<(QuestSequence Sequence, int StepId, QuestStep Step)> questAccepts = (from x in FindQuestStepsWithInteractionType(quest, list) + bool skipMissingStartStop = flag; + List<(QuestSequence Sequence, int StepId, QuestStep Step)> questAccepts = (from x in FindQuestStepsWithInteractionType(quest, new List { EInteractionType.AcceptQuest }) where x.Step.PickUpQuestId == null select x).ToList(); foreach (var item in questAccepts) @@ -40,7 +35,7 @@ internal sealed class UniqueStartStopValidator : IQuestValidator }; } } - if (quest.FindSequence(0) != null && questAccepts.Count == 0) + if (!skipMissingStartStop && quest.FindSequence(0) != null && questAccepts.Count == 0) { yield return new ValidationIssue { @@ -52,13 +47,7 @@ internal sealed class UniqueStartStopValidator : IQuestValidator Description = "No AcceptQuest step" }; } - index = 1; - List list2 = new List(index); - CollectionsMarshal.SetCount(list2, index); - span = CollectionsMarshal.AsSpan(list2); - num = 0; - span[num] = EInteractionType.CompleteQuest; - List<(QuestSequence Sequence, int StepId, QuestStep Step)> questCompletes = (from x in FindQuestStepsWithInteractionType(quest, list2) + List<(QuestSequence Sequence, int StepId, QuestStep Step)> questCompletes = (from x in FindQuestStepsWithInteractionType(quest, new List { EInteractionType.CompleteQuest }) where x.Step.TurnInQuestId == null select x).ToList(); foreach (var item2 in questCompletes) @@ -76,7 +65,7 @@ internal sealed class UniqueStartStopValidator : IQuestValidator }; } } - if (quest.FindSequence(byte.MaxValue) != null && questCompletes.Count == 0) + if (!skipMissingStartStop && quest.FindSequence(byte.MaxValue) != null && questCompletes.Count == 0) { yield return new ValidationIssue { diff --git a/Questionable/Questionable.Windows.ConfigComponents/GeneralConfigComponent.cs b/Questionable/Questionable.Windows.ConfigComponents/GeneralConfigComponent.cs index 03c1cda..d2476da 100644 --- a/Questionable/Questionable.Windows.ConfigComponents/GeneralConfigComponent.cs +++ b/Questionable/Questionable.Windows.ConfigComponents/GeneralConfigComponent.cs @@ -212,6 +212,26 @@ internal sealed class GeneralConfigComponent : ConfigComponent ImGui.TextColored(in col, text); ImGui.Unindent(); } + bool v9 = base.Configuration.General.BatchAlliedSocietyTurnIns; + if (ImGui.Checkbox("Batch allied society turn-ins", ref v9)) + { + base.Configuration.General.BatchAlliedSocietyTurnIns = v9; + Save(); + } + ImGui.SameLine(); + using (ImRaii.PushFont(UiBuilder.IconFont)) + { + ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString()); + } + if (ImGui.IsItemHovered()) + { + using (ImRaii.Tooltip()) + { + ImGui.TextUnformatted("When enabled, allied society quests that share the same NPC will be turned in in a single conversation (batched)."); + ImGui.TextUnformatted("If disabled, each allied society quest will be turned in individually."); + return; + } + } } } diff --git a/Questionable/Questionable.Windows.JournalComponents/AlliedSocietyJournalComponent.cs b/Questionable/Questionable.Windows.JournalComponents/AlliedSocietyJournalComponent.cs index 81eac18..e3c0726 100644 --- a/Questionable/Questionable.Windows.JournalComponents/AlliedSocietyJournalComponent.cs +++ b/Questionable/Questionable.Windows.JournalComponents/AlliedSocietyJournalComponent.cs @@ -84,12 +84,13 @@ internal sealed class AlliedSocietyJournalComponent private void DrawQuest(QuestInfo questInfo) { - var (color, icon, text) = _uiUtils.GetQuestStyle(questInfo.QuestId); + var (color, icon, value) = _uiUtils.GetQuestStyle(questInfo.QuestId); if (!_questRegistry.TryGetQuest(questInfo.QuestId, out Quest quest) || quest.Root.Disabled) { color = ImGuiColors.DalamudGrey; } - if (_uiUtils.ChecklistItem(questInfo.Name + " (" + text + ")", color, icon)) + string text = $"{questInfo.Name} ({value}) [{questInfo.QuestId}]"; + if (_uiUtils.ChecklistItem(text, color, icon)) { _questTooltipComponent.Draw(questInfo); } diff --git a/Questionable/Questionable.Windows.JournalComponents/QuestJournalComponent.cs b/Questionable/Questionable.Windows.JournalComponents/QuestJournalComponent.cs index f86cdd8..5f283c9 100644 --- a/Questionable/Questionable.Windows.JournalComponents/QuestJournalComponent.cs +++ b/Questionable/Questionable.Windows.JournalComponents/QuestJournalComponent.cs @@ -318,9 +318,18 @@ internal sealed class QuestJournalComponent } if (_questFunctions.IsQuestComplete(questInfo.QuestId)) { - if (questInfo.IsRepeatable && _questFunctions.IsReadyToAcceptQuest(questInfo.QuestId)) + if (questInfo.IsRepeatable) { - _uiUtils.ChecklistItem("Complete", ImGuiColors.ParsedBlue, FontAwesomeIcon.Check); + bool num2 = _questFunctions.IsQuestLocked(questInfo.QuestId); + bool flag = _questFunctions.IsReadyToAcceptQuest(questInfo.QuestId); + if (!num2 && flag) + { + _uiUtils.ChecklistItem("Available", ImGuiColors.ParsedBlue, FontAwesomeIcon.Running); + } + else + { + _uiUtils.ChecklistItem("Complete", ImGuiColors.ParsedGreen, FontAwesomeIcon.Check); + } } else { @@ -328,10 +337,10 @@ internal sealed class QuestJournalComponent } return; } - bool flag = false; - bool flag2 = _questFunctions.IsQuestUnobtainable(questInfo.QuestId); - bool flag3 = _questFunctions.IsQuestLocked(questInfo.QuestId); - bool flag4 = _questFunctions.IsReadyToAcceptQuest(questInfo.QuestId); + bool flag2 = false; + bool flag3 = _questFunctions.IsQuestUnobtainable(questInfo.QuestId); + bool flag4 = _questFunctions.IsQuestLocked(questInfo.QuestId); + bool flag5 = _questFunctions.IsReadyToAcceptQuest(questInfo.QuestId); DateTime? seasonalQuestExpiry = questInfo.SeasonalQuestExpiry; if (seasonalQuestExpiry.HasValue) { @@ -339,14 +348,14 @@ internal sealed class QuestJournalComponent DateTime dateTime = ((valueOrDefault.Kind == DateTimeKind.Utc) ? valueOrDefault : valueOrDefault.ToUniversalTime()); if (DateTime.UtcNow > dateTime) { - flag = true; + flag2 = true; } } - if (flag || flag2) + if (flag2 || flag3) { _uiUtils.ChecklistItem("Unobtainable", ImGuiColors.DalamudGrey, FontAwesomeIcon.Minus); } - else if (flag3 || !flag4 || !_questRegistry.IsKnownQuest(questInfo.QuestId)) + else if (flag4 || !flag5 || !_questRegistry.IsKnownQuest(questInfo.QuestId)) { _uiUtils.ChecklistItem("Locked", ImGuiColors.DalamudRed, FontAwesomeIcon.Times); } diff --git a/Questionable/Questionable/Configuration.cs b/Questionable/Questionable/Configuration.cs index a2bacac..ad7c94b 100644 --- a/Questionable/Questionable/Configuration.cs +++ b/Questionable/Questionable/Configuration.cs @@ -37,6 +37,8 @@ internal sealed class Configuration : IPluginConfiguration public int AutoStepRefreshDelaySeconds { get; set; } = 10; public bool HideSeasonalEventsFromJournalProgress { get; set; } + + public bool BatchAlliedSocietyTurnIns { get; set; } = true; } internal sealed class StopConfiguration