From 656bcd45f7202da1de3dc30bdc9a91d9a2a0ffd7 Mon Sep 17 00:00:00 2001
From: LTS-FFXIV <127939494+LTS-FFXIV@users.noreply.github.com>
Date: Sat, 21 Sep 2024 22:09:46 -0500
Subject: [PATCH] Add new config options and update logic in AST_Default
Updated AST_Default.cs with new config options LightspeedMove and SmartCard, and adjusted logic in CountDownAction and AttackAbility methods. Modified conditions for TheBalancePvE, TheSpearPvE, and LordOfCrownsPvE abilities. Added logic for LightspeedPvE usage. Updated RebornRotations.csproj to reference RotationSolverReborn.Basic package version 7.0.5.114.
---
BasicRotations/Healer/AST_Default.cs | 20 ++++++++++++++++----
BasicRotations/RebornRotations.csproj | 2 +-
2 files changed, 17 insertions(+), 5 deletions(-)
diff --git a/BasicRotations/Healer/AST_Default.cs b/BasicRotations/Healer/AST_Default.cs
index e942a8a..1ef0025 100644
--- a/BasicRotations/Healer/AST_Default.cs
+++ b/BasicRotations/Healer/AST_Default.cs
@@ -9,6 +9,12 @@ public sealed class AST_Default : AstrologianRotation
[RotationConfig(CombatType.PvE, Name = "Enable Swiftcast Restriction Logic to attempt to prevent actions other than Raise when you have swiftcast")]
public bool SwiftLogic { get; set; } = true;
+ [RotationConfig(CombatType.PvE, Name = "Use both stacks of Lightspeed while moving")]
+ public bool LightspeedMove { get; set; } = true;
+
+ [RotationConfig(CombatType.PvE, Name = "Use experimental card logic to pool for divination buff if possible")]
+ public bool SmartCard { get; set; } = true;
+
[RotationConfig(CombatType.PvE, Name = "Use spells with cast times to heal. (Ignored if you are the only healer in party)")]
public bool GCDHeal { get; set; } = false;
@@ -34,6 +40,8 @@ public sealed class AST_Default : AstrologianRotation
public bool DOTUpkeep { get; set; } = true;
#endregion
+ private static bool InBurstStatus => !Player.WillStatusEnd(0, true, StatusID.Divination);
+
#region Countdown Logic
protected override IAction? CountDownAction(float remainTime)
{
@@ -161,8 +169,8 @@ protected override bool GeneralAbility(IAction nextGCD, out IAction? act)
if (AstralDrawPvE.CanUse(out act)) return true;
if (UmbralDrawPvE.CanUse(out act)) return true;
- if (InCombat && TheBalancePvE.CanUse(out act)) return true;
- if (InCombat && TheSpearPvE.CanUse(out act)) return true;
+ if (((Player.HasStatus(true, StatusID.Divination) || !DivinationPvE.Cooldown.WillHaveOneCharge(45) || !DivinationPvE.EnoughLevel || UmbralDrawPvE.Cooldown.WillHaveOneCharge(3)) && SmartCard || (!SmartCard)) && InCombat && TheBalancePvE.CanUse(out act)) return true;
+ if (((Player.HasStatus(true, StatusID.Divination) || !DivinationPvE.Cooldown.WillHaveOneCharge(45) || !DivinationPvE.EnoughLevel || UmbralDrawPvE.Cooldown.WillHaveOneCharge(3)) && SmartCard || (!SmartCard)) && InCombat && TheSpearPvE.CanUse(out act)) return true;
return base.GeneralAbility(nextGCD, out act);
}
@@ -171,14 +179,18 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act)
act = null;
if (BubbleProtec && Player.HasStatus(true, StatusID.CollectiveUnconscious_848)) return false;
+ if (InCombat && DivinationPvE.Cooldown.ElapsedAfter(115) && LightspeedPvE.CanUse(out act, usedUp: true)) return true;
+
if (IsBurst && !IsMoving
&& DivinationPvE.CanUse(out act)) return true;
if (AstralDrawPvE.CanUse(out act, usedUp: IsBurst)) return true;
+ if ((InBurstStatus || DivinationPvE.Cooldown.ElapsedAfter(115)) && InCombat && LightspeedPvE.CanUse(out act, usedUp: true)) return true;
+
if (InCombat)
{
- if (IsMoving && LightspeedPvE.CanUse(out act)) return true;
+ if (IsMoving && LightspeedPvE.CanUse(out act, usedUp: LightspeedMove)) return true;
if (!IsMoving)
{
@@ -189,7 +201,7 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act)
}
{
- if (LordOfCrownsPvE.CanUse(out act)) return true;
+ if (((Player.HasStatus(true, StatusID.Divination) || !DivinationPvE.Cooldown.WillHaveOneCharge(45) || !DivinationPvE.EnoughLevel || UmbralDrawPvE.Cooldown.WillHaveOneCharge(3)) && SmartCard || (!SmartCard)) && LordOfCrownsPvE.CanUse(out act)) return true;
}
}
return base.AttackAbility(nextGCD, out act);
diff --git a/BasicRotations/RebornRotations.csproj b/BasicRotations/RebornRotations.csproj
index 91977f9..37ed4ca 100644
--- a/BasicRotations/RebornRotations.csproj
+++ b/BasicRotations/RebornRotations.csproj
@@ -16,7 +16,7 @@
-
+