feat: added a way to remove status for gameFunctions.
Also updated the Action a bit, that way SGE doesn't get stuck when using diagnosis.
This commit is contained in:
parent
2a2e3cafb9
commit
b1572f5832
@ -1,9 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Dalamud.Game.ClientState.Conditions;
|
|
||||||
using Dalamud.Game.ClientState.Objects.Types;
|
using Dalamud.Game.ClientState.Objects.Types;
|
||||||
using FFXIVClientStructs.FFXIV.Client.Game;
|
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Questionable.Controller.Steps.Common;
|
using Questionable.Controller.Steps.Common;
|
||||||
using Questionable.Functions;
|
using Questionable.Functions;
|
||||||
@ -60,6 +57,21 @@ internal static class Action
|
|||||||
|
|
||||||
if (gameObject.IsTargetable)
|
if (gameObject.IsTargetable)
|
||||||
{
|
{
|
||||||
|
if (action == EAction.Diagnosis)
|
||||||
|
{
|
||||||
|
uint eukrasiaAura = 2606;
|
||||||
|
// If SGE have Eukrasia status, we need to remove it.
|
||||||
|
if (gameFunctions.HasStatus(eukrasiaAura))
|
||||||
|
{
|
||||||
|
if (GameFunctions.RemoveStatus(eukrasiaAura))
|
||||||
|
{
|
||||||
|
// Introduce a delay of 2 seconds before using the next action (otherwise it will try and use Eukrasia Diagnosis)
|
||||||
|
_continueAt = DateTime.Now.AddSeconds(2);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
_usedAction = gameFunctions.UseAction(gameObject, action);
|
_usedAction = gameFunctions.UseAction(gameObject, action);
|
||||||
_continueAt = DateTime.Now.AddSeconds(0.5);
|
_continueAt = DateTime.Now.AddSeconds(0.5);
|
||||||
return true;
|
return true;
|
||||||
@ -105,4 +117,4 @@ internal static class Action
|
|||||||
|
|
||||||
public override string ToString() => $"Action({action})";
|
public override string ToString() => $"Action({action})";
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -308,6 +308,11 @@ internal sealed unsafe class GameFunctions
|
|||||||
StatusManager* statusManager = battleChara->GetStatusManager();
|
StatusManager* statusManager = battleChara->GetStatusManager();
|
||||||
return statusManager->HasStatus(statusId);
|
return statusManager->HasStatus(statusId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool RemoveStatus(uint statusId)
|
||||||
|
{
|
||||||
|
return StatusManager.ExecuteStatusOff(statusId);
|
||||||
|
}
|
||||||
|
|
||||||
public bool Mount()
|
public bool Mount()
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user