Only count successful jumps for for repeatedJumps
authorLiza Carvelli <liza@carvel.li>
Thu, 5 Sep 2024 12:46:05 +0000 (14:46 +0200)
committerLiza Carvelli <liza@carvel.li>
Thu, 5 Sep 2024 12:46:05 +0000 (14:46 +0200)
Questionable/Controller/Steps/Interactions/Jump.cs

index 464eaaceff213d60c8134ce5be68c5129663bbde..d9d93db59032454d6c5057f3ef4ec9506e006688 100644 (file)
@@ -1,4 +1,5 @@
 using System;
+using Dalamud.Game.ClientState.Conditions;
 using Dalamud.Plugin.Services;
 using FFXIVClientStructs.FFXIV.Client.Game;
 using Microsoft.Extensions.DependencyInjection;
@@ -15,6 +16,7 @@ internal static class Jump
         MovementController movementController,
         IClientState clientState,
         IFramework framework,
+        ICondition condition,
         ILoggerFactory loggerFactory) : SimpleTaskFactory
     {
         public override ITask? CreateTask(Quest quest, QuestSequence sequence, QuestStep step)
@@ -38,7 +40,7 @@ internal static class Jump
         public ITask RepeatedJumps(uint? dataId, JumpDestination jumpDestination, string? comment)
         {
             return new DoRepeatedJumps(dataId, jumpDestination, comment, movementController, clientState, framework,
-                loggerFactory.CreateLogger<DoRepeatedJumps>());
+                condition, loggerFactory.CreateLogger<DoRepeatedJumps>());
         }
     }
 
@@ -91,6 +93,7 @@ internal static class Jump
         MovementController movementController,
         IClientState clientState,
         IFramework framework,
+        ICondition condition,
         ILogger<DoRepeatedJumps> logger)
         : DoSingleJump(dataId, jumpDestination, comment, movementController, clientState, framework)
     {
@@ -108,7 +111,7 @@ internal static class Jump
 
         public override ETaskResult Update()
         {
-            if (DateTime.Now < _continueAt)
+            if (DateTime.Now < _continueAt || condition[ConditionFlag.Jumping])
                 return ETaskResult.StillRunning;
 
             float stopDistance = _jumpDestination.CalculateStopDistance();
@@ -120,10 +123,10 @@ internal static class Jump
                 _jumpDestination.Position.Y - 0.5f);
             unsafe
             {
-                ActionManager.Instance()->UseAction(ActionType.GeneralAction, 2);
+                if (ActionManager.Instance()->UseAction(ActionType.GeneralAction, 2))
+                    ++_attempts;
             }
 
-            ++_attempts;
             if (_attempts >= 50)
                 throw new TaskException("Tried to jump too many times, didn't reach the target");