Fix stopDistance for WalkTo steps
authorLiza Carvelli <liza@carvel.li>
Tue, 16 Jul 2024 18:41:06 +0000 (20:41 +0200)
committerLiza Carvelli <liza@carvel.li>
Tue, 16 Jul 2024 18:41:06 +0000 (20:41 +0200)
Questionable/Controller/Steps/Common/UnmountTask.cs
Questionable/Controller/Steps/Interactions/UseItem.cs
Questionable/Controller/Steps/Shared/Move.cs
Questionable/Validation/QuestValidator.cs
Questionable/Windows/DebugOverlay.cs

index ad369585cd54677ea3dd6fe0888242a5bee9015a..5ee6784458ac4fd81617c32d5d1cd009b880bb42 100644 (file)
@@ -46,6 +46,13 @@ internal sealed class UnmountTask(ICondition condition, ILogger<UnmountTask> log
             return ETaskResult.StillRunning;
         }
 
+        if (condition[ConditionFlag.Mounted] && condition[ConditionFlag.InCombat])
+        {
+            _unmountTriggered = gameFunctions.Unmount();
+            _continueAt = DateTime.Now.AddSeconds(1);
+            return ETaskResult.StillRunning;
+        }
+
         return condition[ConditionFlag.Mounted]
             ? ETaskResult.StillRunning
             : ETaskResult.TaskComplete;
index 497ae617302952f69106266d24d4b9abc9c88a93..77a168472f2f0fe7bf23ed4d7ab6f876da14ddf0 100644 (file)
@@ -72,6 +72,7 @@ internal static class UseItem
                 .With(null, EAetheryteLocation.Limsa, territoryId);
             yield return serviceProvider.GetRequiredService<AethernetShortcut.UseAethernetShortcut>()
                 .With(EAetheryteLocation.Limsa, EAetheryteLocation.LimsaArcanist);
+            yield return serviceProvider.GetRequiredService<WaitAtEnd.WaitDelay>();
             yield return serviceProvider.GetRequiredService<Move.MoveInternal>()
                 .With(territoryId, destination, dataId: npcId, sprint: false);
             yield return serviceProvider.GetRequiredService<Interact.DoInteract>()
index 75fd691a494a2c93863a3a37c8fd0528d3111a8c..71d1a00e73233f7f06603aebc879a8d4753f9b22 100644 (file)
@@ -130,7 +130,7 @@ internal static class Move
             return With(
                 territoryId: step.TerritoryId,
                 destination: destination,
-                stopDistance: step.StopDistance,
+                stopDistance: step.CalculateActualStopDistance(),
                 dataId: step.DataId,
                 disableNavMesh: step.DisableNavmesh,
                 sprint: step.Sprint != false,
index 694ff5f4ec9e1d536dd87e80fa236993600ec85f..f6047a67becaf181ba25aa28af8f148d40e79e70 100644 (file)
@@ -38,7 +38,8 @@ internal sealed class QuestValidator
                 {
                     foreach (var issue in validator.Validate(quest))
                     {
-                        _logger.LogWarning(
+                        var level = issue.Severity == EIssueSeverity.Error ? LogLevel.Warning : LogLevel.Information;
+                        _logger.Log(level,
                             "Validation failed: {QuestId} ({QuestName}) / {QuestSequence} / {QuestStep} - {Description}",
                             issue.QuestId, quest.Info.Name, issue.Sequence, issue.Step, issue.Description);
                         _validationIssues.Add(issue);
index 0d2af7be3343e484756cafc90d60290ec7fdb445..2c27dc69e5b633d3ade6cee2f929ce25d3501ab3 100644 (file)
@@ -75,7 +75,14 @@ internal sealed class DebugOverlay : Window
         for (int i = currentQuest.Step; i <= sequence.Steps.Count; ++i)
         {
             QuestStep? step = sequence.FindStep(i);
-            DrawStep(i.ToString(CultureInfo.InvariantCulture), step);
+            if (step == null || step.Position == null)
+                continue;
+
+            DrawStep(i.ToString(CultureInfo.InvariantCulture), step,
+                Vector3.Distance(_clientState.LocalPlayer!.Position, step.Position.Value) <
+                step.CalculateActualStopDistance()
+                    ? 0xFF00FF00
+                    : 0xFF0000FF);
         }
     }
 
@@ -94,7 +101,7 @@ internal sealed class DebugOverlay : Window
         }
     }
 
-    private void DrawStep(string counter, QuestStep? step, uint color = 0xFF0000FF)
+    private void DrawStep(string counter, QuestStep? step, uint color)
     {
         if (step == null ||
             step.Position == null ||