Improve mount task

This commit is contained in:
Liza 2024-06-12 22:49:10 +02:00
parent 8b6b5e894b
commit fc51f03f46
Signed by: liza
GPG Key ID: 7199F8D727D55F67
2 changed files with 29 additions and 3 deletions

View File

@ -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
]
}
]
},

View File

@ -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;
}