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

@ -142,6 +142,8 @@ internal sealed class QuestController : MiniTaskController<QuestController>
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<QuestController>
_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<QuestController>
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()
{
ITask task = _taskQueue.CurrentTaskExecutor?.CurrentTask;