From fc51f03f462836a680f68ff7f851d70b395956a1 Mon Sep 17 00:00:00 2001 From: Liza Carvelli Date: Wed, 12 Jun 2024 22:49:10 +0200 Subject: [PATCH] Improve mount task --- .../MSQ/E-Elpis/4424_Lives Apart.json | 18 +++++++++++++++++- .../Controller/Steps/BaseTasks/MountTask.cs | 14 ++++++++++++-- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/QuestPaths/Endwalker/MSQ/E-Elpis/4424_Lives Apart.json b/QuestPaths/Endwalker/MSQ/E-Elpis/4424_Lives Apart.json index 7fe9bd42..dc20f431 100644 --- a/QuestPaths/Endwalker/MSQ/E-Elpis/4424_Lives Apart.json +++ b/QuestPaths/Endwalker/MSQ/E-Elpis/4424_Lives Apart.json @@ -61,6 +61,14 @@ "InteractionType": "UseItem", "ItemId": 2003234, "GroundTarget": true, + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ], "$": "QuestValues after: 1 16 0 0 0 128" }, { @@ -73,7 +81,15 @@ "TerritoryId": 961, "InteractionType": "UseItem", "ItemId": 2003234, - "GroundTarget": true + "GroundTarget": true, + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 64 + ] } ] }, diff --git a/Questionable/Controller/Steps/BaseTasks/MountTask.cs b/Questionable/Controller/Steps/BaseTasks/MountTask.cs index 65fb649d..e9aa7b65 100644 --- a/Questionable/Controller/Steps/BaseTasks/MountTask.cs +++ b/Questionable/Controller/Steps/BaseTasks/MountTask.cs @@ -1,4 +1,5 @@ -using Dalamud.Game.ClientState.Conditions; +using System; +using Dalamud.Game.ClientState.Conditions; using Dalamud.Plugin.Services; using Microsoft.Extensions.Logging; using Questionable.Data; @@ -13,6 +14,7 @@ internal sealed class MountTask( { private ushort _territoryId; private bool _mountTriggered; + private DateTime _retryAt = DateTime.MinValue; public ITask With(ushort territoryId) { @@ -40,7 +42,7 @@ internal sealed class MountTask( logger.LogInformation("Step wants a mount, trying to mount in territory {Id}...", _territoryId); if (!condition[ConditionFlag.InCombat]) { - _mountTriggered = gameFunctions.Mount(); + _retryAt = DateTime.Now.AddSeconds(0.5); return true; } @@ -49,6 +51,13 @@ internal sealed class MountTask( public ETaskResult Update() { + if (_mountTriggered && !condition[ConditionFlag.Mounted] && DateTime.Now > _retryAt) + { + logger.LogInformation("Not mounted, retrying..."); + _mountTriggered = false; + _retryAt = DateTime.MaxValue; + } + if (!_mountTriggered) { if (gameFunctions.HasStatusPreventingSprintOrMount()) @@ -58,6 +67,7 @@ internal sealed class MountTask( } _mountTriggered = gameFunctions.Mount(); + _retryAt = DateTime.Now.AddSeconds(5); return ETaskResult.StillRunning; }