muffin v7.38.9
This commit is contained in:
parent
ada27cf05b
commit
8a7847ff37
21 changed files with 1296 additions and 689 deletions
|
|
@ -257,6 +257,7 @@ internal sealed class QuestController : MiniTaskController<QuestController>
|
|||
_toastGui.Toast += OnNormalToast;
|
||||
_condition.ConditionChange += OnConditionChange;
|
||||
_clientState.Logout += OnLogout;
|
||||
_movementController.PlayerInputDetected += OnPlayerInputDetected;
|
||||
}
|
||||
|
||||
public void Reload()
|
||||
|
|
@ -683,55 +684,71 @@ internal sealed class QuestController : MiniTaskController<QuestController>
|
|||
{
|
||||
DebugState = "No quest active";
|
||||
Stop("No quest active");
|
||||
return;
|
||||
}
|
||||
if (_gameFunctions.IsOccupied() && !_gameFunctions.IsOccupiedWithCustomDeliveryNpc(questProgress.Quest))
|
||||
else if (questProgress.Step == 255)
|
||||
{
|
||||
DebugState = $"Waiting for sequence update (current: {questProgress.Sequence})";
|
||||
if (!_taskQueue.AllTasksComplete)
|
||||
{
|
||||
DebugState = "Step 255 - processing interrupted tasks";
|
||||
}
|
||||
else
|
||||
{
|
||||
if (this.CurrentQuest == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
TimeSpan timeSpan = DateTime.Now - this.CurrentQuest.StepProgress.StartedAt;
|
||||
if (timeSpan > TimeSpan.FromSeconds(3L))
|
||||
{
|
||||
_logger.LogWarning("Step 255 with no tasks for {WaitTime:F1}s, retrying step to ensure completion (quest: {QuestId}, sequence: {Sequence})", timeSpan.TotalSeconds, questProgress.Quest.Id, questProgress.Sequence);
|
||||
QuestSequence questSequence = questProgress.Quest.FindSequence(questProgress.Sequence);
|
||||
if (questSequence != null && questSequence.Steps.Count > 0)
|
||||
{
|
||||
this.CurrentQuest.SetStep(questSequence.Steps.Count - 1);
|
||||
CheckNextTasks("Retry last step at 255");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (_gameFunctions.IsOccupied() && !_gameFunctions.IsOccupiedWithCustomDeliveryNpc(questProgress.Quest))
|
||||
{
|
||||
DebugState = "Occupied";
|
||||
return;
|
||||
}
|
||||
if (_movementController.IsPathfinding)
|
||||
else if (_movementController.IsPathfinding)
|
||||
{
|
||||
DebugState = "Pathfinding is running";
|
||||
return;
|
||||
}
|
||||
if (_movementController.IsPathRunning)
|
||||
else if (_movementController.IsPathRunning)
|
||||
{
|
||||
DebugState = "Path is running";
|
||||
return;
|
||||
}
|
||||
if (DateTime.Now < _safeAnimationEnd)
|
||||
else if (DateTime.Now < _safeAnimationEnd)
|
||||
{
|
||||
DebugState = "Waiting for Animation";
|
||||
return;
|
||||
}
|
||||
if (questProgress.Sequence != b)
|
||||
else if (questProgress.Sequence != b)
|
||||
{
|
||||
questProgress.SetSequence(b);
|
||||
CheckNextTasks($"New sequence {questProgress == _startedQuest}/{_questFunctions.GetCurrentQuestInternal(allowNewMsq: true)}");
|
||||
}
|
||||
QuestSequence questSequence = questProgress.Quest.FindSequence(questProgress.Sequence);
|
||||
if (questSequence == null)
|
||||
{
|
||||
DebugState = $"Sequence {questProgress.Sequence} not found";
|
||||
Stop("Unknown sequence");
|
||||
}
|
||||
else if (questProgress.Step == 255)
|
||||
{
|
||||
DebugState = "Step completed";
|
||||
if (!_taskQueue.AllTasksComplete)
|
||||
{
|
||||
CheckNextTasks("Step complete");
|
||||
}
|
||||
}
|
||||
else if (questSequence.Steps.Count > 0 && questProgress.Step >= questSequence.Steps.Count)
|
||||
{
|
||||
DebugState = "Step not found";
|
||||
Stop("Unknown step");
|
||||
}
|
||||
else
|
||||
{
|
||||
DebugState = null;
|
||||
QuestSequence questSequence2 = questProgress.Quest.FindSequence(questProgress.Sequence);
|
||||
if (questSequence2 == null)
|
||||
{
|
||||
DebugState = $"Sequence {questProgress.Sequence} not found";
|
||||
Stop("Unknown sequence");
|
||||
}
|
||||
else if (questSequence2.Steps.Count > 0 && questProgress.Step >= questSequence2.Steps.Count)
|
||||
{
|
||||
DebugState = "Step not found";
|
||||
Stop("Unknown step");
|
||||
}
|
||||
else
|
||||
{
|
||||
DebugState = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -778,15 +795,21 @@ internal sealed class QuestController : MiniTaskController<QuestController>
|
|||
_logger.LogWarning("Ignoring 'increase step count' for different sequence (expected {ExpectedSequence}, but we are at {CurrentSequence}", sequence, questSequence.Sequence);
|
||||
}
|
||||
_logger.LogInformation("Increasing step count from {CurrentValue}", CurrentQuest.Step);
|
||||
if (CurrentQuest.Step + 1 < questSequence.Steps.Count)
|
||||
{
|
||||
CurrentQuest.SetStep(CurrentQuest.Step + 1);
|
||||
}
|
||||
else
|
||||
bool num = CurrentQuest.Step + 1 >= questSequence.Steps.Count;
|
||||
if (num)
|
||||
{
|
||||
CurrentQuest.SetStep(255);
|
||||
}
|
||||
else
|
||||
{
|
||||
CurrentQuest.SetStep(CurrentQuest.Step + 1);
|
||||
}
|
||||
ResetAutoRefreshState();
|
||||
if (num)
|
||||
{
|
||||
_logger.LogInformation("Completed last step in sequence, waiting for game to update sequence");
|
||||
return;
|
||||
}
|
||||
}
|
||||
using (_logger.BeginScope("IncStepCt"))
|
||||
{
|
||||
|
|
@ -1291,12 +1314,23 @@ internal sealed class QuestController : MiniTaskController<QuestController>
|
|||
}
|
||||
}
|
||||
|
||||
private void OnPlayerInputDetected(object? sender, EventArgs e)
|
||||
{
|
||||
if (AutomationType != EAutomationType.Manual && IsRunning)
|
||||
{
|
||||
_logger.LogInformation("Player input detected during movement, stopping quest automation");
|
||||
_chatGui.Print("Player input detected - stopping quest automation.", "Questionable", 576);
|
||||
Stop("Player input detected");
|
||||
}
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
_toastGui.ErrorToast -= base.OnErrorToast;
|
||||
_toastGui.Toast -= OnNormalToast;
|
||||
_condition.ConditionChange -= OnConditionChange;
|
||||
_clientState.Logout -= OnLogout;
|
||||
_movementController.PlayerInputDetected -= OnPlayerInputDetected;
|
||||
base.Dispose();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue