muffin v6.19

This commit is contained in:
alydev 2025-10-10 10:13:06 +10:00
parent 5bd47e3d16
commit bb6fd2f2bf
9 changed files with 1167 additions and 77 deletions

View file

@ -461833,7 +461833,15 @@ public static class AssemblyQuestLoader
span3[index2] = new QuestStep(EInteractionType.Interact, 1055817u, new Vector3(458.15198f, 114.935f, 657.3739f), 1187) span3[index2] = new QuestStep(EInteractionType.Interact, 1055817u, new Vector3(458.15198f, 114.935f, 657.3739f), 1187)
{ {
Fly = true, Fly = true,
Land = true Land = true,
AetheryteShortcut = EAetheryteLocation.UrqopachaWorlarsEcho,
SkipConditions = new SkipConditions
{
AetheryteShortcutIf = new SkipAetheryteCondition
{
InSameTerritory = true
}
}
}; };
obj145.Steps = list218; obj145.Steps = list218;
reference164 = obj145; reference164 = obj145;
@ -462417,6 +462425,916 @@ public static class AssemblyQuestLoader
reference190 = obj168; reference190 = obj168;
questRoot30.QuestSequence = list247; questRoot30.QuestSequence = list247;
AddQuest(questId30, questRoot30); AddQuest(questId30, questRoot30);
QuestId questId31 = new QuestId(5343);
QuestRoot questRoot31 = new QuestRoot();
num = 1;
List<string> list253 = new List<string>(num);
CollectionsMarshal.SetCount(list253, num);
span = CollectionsMarshal.AsSpan(list253);
index = 0;
span[index] = "WigglyMuffin";
questRoot31.Author = list253;
index = 4;
List<QuestSequence> list254 = new List<QuestSequence>(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<QuestStep> list255 = new List<QuestStep>(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<QuestStep> list256 = new List<QuestStep>(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<ushort> list257 = new List<ushort>(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<QuestStep> list258 = new List<QuestStep>(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<QuestWorkValue> list259 = new List<QuestWorkValue>(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<QuestWorkValue> list260 = new List<QuestWorkValue>(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<QuestStep> list261 = new List<QuestStep>(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<string> list262 = new List<string>(num);
CollectionsMarshal.SetCount(list262, num);
span = CollectionsMarshal.AsSpan(list262);
index = 0;
span[index] = "WigglyMuffin";
questRoot32.Author = list262;
index = 4;
List<QuestSequence> list263 = new List<QuestSequence>(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<QuestStep> list264 = new List<QuestStep>(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<QuestStep> list265 = new List<QuestStep>(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<QuestStep> list266 = new List<QuestStep>(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<QuestStep> list267 = new List<QuestStep>(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<string> list268 = new List<string>(num);
CollectionsMarshal.SetCount(list268, num);
span = CollectionsMarshal.AsSpan(list268);
index = 0;
span[index] = "CryoTechnic";
questRoot33.Author = list268;
index = 4;
List<QuestSequence> list269 = new List<QuestSequence>(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<QuestStep> list270 = new List<QuestStep>(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<QuestStep> list271 = new List<QuestStep>(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<ushort> list272 = new List<ushort>(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<QuestStep> list273 = new List<QuestStep>(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<QuestStep> list274 = new List<QuestStep>(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<string> list275 = new List<string>(num);
CollectionsMarshal.SetCount(list275, num);
span = CollectionsMarshal.AsSpan(list275);
index = 0;
span[index] = "WigglyMuffin";
questRoot34.Author = list275;
index = 3;
List<QuestSequence> list276 = new List<QuestSequence>(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<QuestStep> list277 = new List<QuestStep>(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<QuestStep> list278 = new List<QuestStep>(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<List<QuestWorkValue>> list279 = new List<List<QuestWorkValue>>(index3);
CollectionsMarshal.SetCount(list279, index3);
span8 = CollectionsMarshal.AsSpan(list279);
num3 = 0;
span8[num3] = null;
num3++;
ref List<QuestWorkValue> reference210 = ref span8[num3];
index4 = 1;
List<QuestWorkValue> list280 = new List<QuestWorkValue>(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<List<QuestWorkValue>> list281 = new List<List<QuestWorkValue>>(num3);
CollectionsMarshal.SetCount(list281, num3);
span8 = CollectionsMarshal.AsSpan(list281);
index3 = 0;
span8[index3] = null;
index3++;
ref List<QuestWorkValue> reference212 = ref span8[index3];
num4 = 1;
List<QuestWorkValue> list282 = new List<QuestWorkValue>(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<List<QuestWorkValue>> list283 = new List<List<QuestWorkValue>>(index3);
CollectionsMarshal.SetCount(list283, index3);
span8 = CollectionsMarshal.AsSpan(list283);
num3 = 0;
span8[num3] = null;
num3++;
ref List<QuestWorkValue> reference214 = ref span8[num3];
index4 = 1;
List<QuestWorkValue> list284 = new List<QuestWorkValue>(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<List<QuestWorkValue>> list285 = new List<List<QuestWorkValue>>(num3);
CollectionsMarshal.SetCount(list285, num3);
span8 = CollectionsMarshal.AsSpan(list285);
index3 = 0;
span8[index3] = null;
index3++;
ref List<QuestWorkValue> reference216 = ref span8[index3];
num4 = 1;
List<QuestWorkValue> list286 = new List<QuestWorkValue>(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<QuestStep> list287 = new List<QuestStep>(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<string> list288 = new List<string>(num);
CollectionsMarshal.SetCount(list288, num);
span = CollectionsMarshal.AsSpan(list288);
index = 0;
span[index] = "CryoTechnic";
questRoot35.Author = list288;
index = 4;
List<QuestSequence> list289 = new List<QuestSequence>(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<QuestStep> list290 = new List<QuestStep>(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<QuestStep> list291 = new List<QuestStep>(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<ushort> list292 = new List<ushort>(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<QuestStep> list293 = new List<QuestStep>(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<QuestStep> list294 = new List<QuestStep>(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<string> list295 = new List<string>(num);
CollectionsMarshal.SetCount(list295, num);
span = CollectionsMarshal.AsSpan(list295);
index = 0;
span[index] = "CryoTechnic";
questRoot36.Author = list295;
index = 3;
List<QuestSequence> list296 = new List<QuestSequence>(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<QuestStep> list297 = new List<QuestStep>(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<QuestStep> list298 = new List<QuestStep>(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<QuestStep> list299 = new List<QuestStep>(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<string> list300 = new List<string>(num);
CollectionsMarshal.SetCount(list300, num);
span = CollectionsMarshal.AsSpan(list300);
index = 0;
span[index] = "CryoTechnic";
questRoot37.Author = list300;
index = 3;
List<QuestSequence> list301 = new List<QuestSequence>(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<QuestStep> list302 = new List<QuestStep>(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<QuestStep> list303 = new List<QuestStep>(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<QuestStep> list304 = new List<QuestStep>(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() private static void LoadQuests107()

View file

@ -142,6 +142,8 @@ internal sealed class QuestController : MiniTaskController<QuestController>
private DateTime _lastAutoRefresh = DateTime.MinValue; private DateTime _lastAutoRefresh = DateTime.MinValue;
private readonly AlliedSocietyData _alliedSocietyData = new AlliedSocietyData();
private const char ClipboardSeparator = ';'; private const char ClipboardSeparator = ';';
public EAutomationType AutomationType public EAutomationType AutomationType
@ -944,9 +946,16 @@ internal sealed class QuestController : MiniTaskController<QuestController>
_gatheringController.Stop("Execute next step"); _gatheringController.Stop("Execute next step");
try 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(); ResetAutoRefreshState();
return; return;
@ -966,6 +975,86 @@ internal sealed class QuestController : MiniTaskController<QuestController>
goto IL_01e8; 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<uint, List<QuestId>> item4 in _alliedSocietyData.GroupQuestsByTurnInIssuer(list.Select<(QuestId, byte, int), QuestId>(((QuestId Id, byte Sequence, int StepIndex) x) => x.Id)))
{
_ = item4.Key;
List<QuestId> 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() public string ToStatString()
{ {
ITask task = _taskQueue.CurrentTaskExecutor?.CurrentTask; ITask task = _taskQueue.CurrentTaskExecutor?.CurrentTask;

View file

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Runtime.InteropServices;
using Questionable.Model; using Questionable.Model;
using Questionable.Model.Common; using Questionable.Model.Common;
using Questionable.Model.Questing; using Questionable.Model.Questing;
@ -260,4 +261,53 @@ internal sealed class AlliedSocietyData
break; break;
} }
} }
public bool TryGetTurnInIssuers(ElementId elementId, out uint[] issuerDataIds)
{
EAlliedSociety commonAlliedSocietyTurnIn = GetCommonAlliedSocietyTurnIn(elementId);
if (commonAlliedSocietyTurnIn == EAlliedSociety.None)
{
issuerDataIds = Array.Empty<uint>();
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<uint>();
}
return issuerDataIds.Length != 0;
}
public Dictionary<uint, List<QuestId>> GroupQuestsByTurnInIssuer(IEnumerable<QuestId> quests)
{
Dictionary<uint, List<QuestId>> dictionary = new Dictionary<uint, List<QuestId>>();
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<QuestId> list = new List<QuestId>(num);
CollectionsMarshal.SetCount(list, num);
Span<QuestId> span = CollectionsMarshal.AsSpan(list);
int index = 0;
span[index] = quest;
dictionary[key] = list;
}
}
return dictionary;
}
} }

View file

@ -41,51 +41,63 @@ internal sealed class AlliedSocietyDailyInfo : IQuestInfo
{ {
QuestId = new AlliedSocietyDailyId((byte)beastTribe.RowId, rank); QuestId = new AlliedSocietyDailyId((byte)beastTribe.RowId, rank);
Name = beastTribe.Name.ToString(); Name = beastTribe.Name.ToString();
List<EClassJob> list2; IReadOnlyList<EClassJob> readOnlyList = null;
switch ((EAlliedSociety)(byte)beastTribe.RowId) try
{ {
case EAlliedSociety.Amaljaa: List<EClassJob> list2;
case EAlliedSociety.Sylphs: switch ((EAlliedSociety)(byte)beastTribe.RowId)
case EAlliedSociety.Kobolds: {
case EAlliedSociety.Sahagin: case EAlliedSociety.Amaljaa:
case EAlliedSociety.VanuVanu: case EAlliedSociety.Sylphs:
case EAlliedSociety.Vath: case EAlliedSociety.Kobolds:
case EAlliedSociety.Kojin: case EAlliedSociety.Sahagin:
case EAlliedSociety.Ananta: case EAlliedSociety.VanuVanu:
case EAlliedSociety.Pixies: case EAlliedSociety.Vath:
case EAlliedSociety.Arkasodara: case EAlliedSociety.Kojin:
case EAlliedSociety.Pelupelu: case EAlliedSociety.Ananta:
case EAlliedSociety.Pixies:
case EAlliedSociety.Arkasodara:
case EAlliedSociety.Pelupelu:
{
List<EClassJob> list3 = new List<EClassJob>();
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<EClassJob> list = new List<EClassJob>();
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<EClassJob> list3 = new List<EClassJob>(); List<EClassJob> list4 = new List<EClassJob>();
list3.AddRange(classJobUtils.AsIndividualJobs(EExtendedClassJob.DoW, null)); list4.AddRange(classJobUtils.AsIndividualJobs(EExtendedClassJob.DoW, null));
list3.AddRange(classJobUtils.AsIndividualJobs(EExtendedClassJob.DoM, null)); list4.AddRange(classJobUtils.AsIndividualJobs(EExtendedClassJob.DoM, null));
list2 = list3; readOnlyList = new _003C_003Ez__ReadOnlyList<EClassJob>(list4);
break;
} }
case EAlliedSociety.Ixal: ClassJobs = readOnlyList;
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<EClassJob> list = new List<EClassJob>();
list.AddRange(classJobUtils.AsIndividualJobs(EExtendedClassJob.DoH, null));
list.AddRange(classJobUtils.AsIndividualJobs(EExtendedClassJob.DoL, null));
list2 = list;
break;
}
default:
throw new ArgumentOutOfRangeException("beastTribe");
}
ClassJobs = list2;
Expansion = (EExpansionVersion)beastTribe.Expansion.RowId; Expansion = (EExpansionVersion)beastTribe.Expansion.RowId;
} }
} }

View file

@ -1,7 +1,5 @@
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Runtime.InteropServices;
using Questionable.Model; using Questionable.Model;
using Questionable.Model.Questing; using Questionable.Model.Questing;
@ -11,18 +9,15 @@ internal sealed class UniqueStartStopValidator : IQuestValidator
{ {
public IEnumerable<ValidationIssue> Validate(Quest quest) public IEnumerable<ValidationIssue> Validate(Quest quest)
{ {
ElementId id = quest.Id; bool flag = !(quest.Id is QuestId);
if ((id is SatisfactionSupplyNpcId || id is AlliedSocietyDailyId) ? true : false) if (!flag)
{ {
yield break; ElementId id = quest.Id;
bool flag2 = ((id is SatisfactionSupplyNpcId || id is AlliedSocietyDailyId) ? true : false);
flag = flag2;
} }
int num = 1; bool skipMissingStartStop = flag;
List<EInteractionType> list = new List<EInteractionType>(num); List<(QuestSequence Sequence, int StepId, QuestStep Step)> questAccepts = (from x in FindQuestStepsWithInteractionType(quest, new List<EInteractionType> { EInteractionType.AcceptQuest })
CollectionsMarshal.SetCount(list, num);
Span<EInteractionType> 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)
where x.Step.PickUpQuestId == null where x.Step.PickUpQuestId == null
select x).ToList(); select x).ToList();
foreach (var item in questAccepts) 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 yield return new ValidationIssue
{ {
@ -52,13 +47,7 @@ internal sealed class UniqueStartStopValidator : IQuestValidator
Description = "No AcceptQuest step" Description = "No AcceptQuest step"
}; };
} }
index = 1; List<(QuestSequence Sequence, int StepId, QuestStep Step)> questCompletes = (from x in FindQuestStepsWithInteractionType(quest, new List<EInteractionType> { EInteractionType.CompleteQuest })
List<EInteractionType> list2 = new List<EInteractionType>(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)
where x.Step.TurnInQuestId == null where x.Step.TurnInQuestId == null
select x).ToList(); select x).ToList();
foreach (var item2 in questCompletes) 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 yield return new ValidationIssue
{ {

View file

@ -212,6 +212,26 @@ internal sealed class GeneralConfigComponent : ConfigComponent
ImGui.TextColored(in col, text); ImGui.TextColored(in col, text);
ImGui.Unindent(); 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;
}
}
} }
} }

View file

@ -84,12 +84,13 @@ internal sealed class AlliedSocietyJournalComponent
private void DrawQuest(QuestInfo questInfo) 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) if (!_questRegistry.TryGetQuest(questInfo.QuestId, out Quest quest) || quest.Root.Disabled)
{ {
color = ImGuiColors.DalamudGrey; 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); _questTooltipComponent.Draw(questInfo);
} }

View file

@ -318,9 +318,18 @@ internal sealed class QuestJournalComponent
} }
if (_questFunctions.IsQuestComplete(questInfo.QuestId)) 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 else
{ {
@ -328,10 +337,10 @@ internal sealed class QuestJournalComponent
} }
return; return;
} }
bool flag = false; bool flag2 = false;
bool flag2 = _questFunctions.IsQuestUnobtainable(questInfo.QuestId); bool flag3 = _questFunctions.IsQuestUnobtainable(questInfo.QuestId);
bool flag3 = _questFunctions.IsQuestLocked(questInfo.QuestId); bool flag4 = _questFunctions.IsQuestLocked(questInfo.QuestId);
bool flag4 = _questFunctions.IsReadyToAcceptQuest(questInfo.QuestId); bool flag5 = _questFunctions.IsReadyToAcceptQuest(questInfo.QuestId);
DateTime? seasonalQuestExpiry = questInfo.SeasonalQuestExpiry; DateTime? seasonalQuestExpiry = questInfo.SeasonalQuestExpiry;
if (seasonalQuestExpiry.HasValue) if (seasonalQuestExpiry.HasValue)
{ {
@ -339,14 +348,14 @@ internal sealed class QuestJournalComponent
DateTime dateTime = ((valueOrDefault.Kind == DateTimeKind.Utc) ? valueOrDefault : valueOrDefault.ToUniversalTime()); DateTime dateTime = ((valueOrDefault.Kind == DateTimeKind.Utc) ? valueOrDefault : valueOrDefault.ToUniversalTime());
if (DateTime.UtcNow > dateTime) if (DateTime.UtcNow > dateTime)
{ {
flag = true; flag2 = true;
} }
} }
if (flag || flag2) if (flag2 || flag3)
{ {
_uiUtils.ChecklistItem("Unobtainable", ImGuiColors.DalamudGrey, FontAwesomeIcon.Minus); _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); _uiUtils.ChecklistItem("Locked", ImGuiColors.DalamudRed, FontAwesomeIcon.Times);
} }

View file

@ -37,6 +37,8 @@ internal sealed class Configuration : IPluginConfiguration
public int AutoStepRefreshDelaySeconds { get; set; } = 10; public int AutoStepRefreshDelaySeconds { get; set; } = 10;
public bool HideSeasonalEventsFromJournalProgress { get; set; } public bool HideSeasonalEventsFromJournalProgress { get; set; }
public bool BatchAlliedSocietyTurnIns { get; set; } = true;
} }
internal sealed class StopConfiguration internal sealed class StopConfiguration