diff --git a/BasicRotations/Healer/AST_Default.cs b/BasicRotations/Healer/AST_Default.cs
index ffebd40..bcf9f78 100644
--- a/BasicRotations/Healer/AST_Default.cs
+++ b/BasicRotations/Healer/AST_Default.cs
@@ -203,7 +203,7 @@ protected override bool HealSingleGCD(out IAction? act)
act = null;
if (BubbleProtec && Player.HasStatus(true, StatusID.CollectiveUnconscious_848)) return false;
if (MicroPrio && Player.HasStatus(true, StatusID.Macrocosmos)) return false;
- if (HasSwift && SwiftLogic) return false;
+ if (HasSwift && SwiftLogic && AscendPvE.CanUse(out _)) return false;
if (AspectedBeneficPvE.CanUse(out act)
&& (IsMoving
@@ -221,7 +221,7 @@ protected override bool HealAreaGCD(out IAction? act)
act = null;
if (BubbleProtec && Player.HasStatus(true, StatusID.CollectiveUnconscious_848)) return false;
if (MicroPrio && Player.HasStatus(true, StatusID.Macrocosmos)) return false;
- if (HasSwift && SwiftLogic) return false;
+ if (HasSwift && SwiftLogic && AscendPvE.CanUse(out _)) return false;
if (AspectedHeliosPvE.CanUse(out act)) return true;
if (HeliosPvE.CanUse(out act)) return true;
diff --git a/BasicRotations/Healer/SCH_Default.cs b/BasicRotations/Healer/SCH_Default.cs
index 4f1bedd..900bf2b 100644
--- a/BasicRotations/Healer/SCH_Default.cs
+++ b/BasicRotations/Healer/SCH_Default.cs
@@ -162,7 +162,7 @@ protected override bool HealAreaGCD(out IAction? act)
{
act = null;
- if (HasSwift && SwiftLogic) return false;
+ if (HasSwift && SwiftLogic && ResurrectionPvE.CanUse(out _)) return false;
if (SuccorPvE.CanUse(out act)) return true;
@@ -174,7 +174,7 @@ protected override bool HealSingleGCD(out IAction? act)
{
act = null;
- if (HasSwift && SwiftLogic) return false;
+ if (HasSwift && SwiftLogic && ResurrectionPvE.CanUse(out _)) return false;
if (AdloquiumPvE.CanUse(out act)) return true;
if (PhysickPvE.CanUse(out act)) return true;
@@ -187,7 +187,7 @@ protected override bool DefenseAreaGCD(out IAction? act)
{
act = null;
- if (HasSwift && SwiftLogic) return false;
+ if (HasSwift && SwiftLogic && ResurrectionPvE.CanUse(out _)) return false;
if (SuccorPvE.CanUse(out act)) return true;
return base.DefenseAreaGCD(out act);
@@ -197,7 +197,7 @@ protected override bool GeneralGCD(out IAction? act)
{
act = null;
- if (HasSwift && SwiftLogic) return false;
+ if (HasSwift && SwiftLogic && ResurrectionPvE.CanUse(out _)) return false;
// Summon Eos
if (SummonEosPvE.CanUse(out act)) return true;
diff --git a/BasicRotations/Healer/SGE_Default.cs b/BasicRotations/Healer/SGE_Default.cs
index e0eb1d7..19b83dd 100644
--- a/BasicRotations/Healer/SGE_Default.cs
+++ b/BasicRotations/Healer/SGE_Default.cs
@@ -1,5 +1,3 @@
-using RotationSolver.Basic.Helpers;
-
namespace DefaultRotations.Healer;
[Rotation("Default", CombatType.PvE, GameVersion = "7.05")]
@@ -225,7 +223,7 @@ protected override bool DefenseAreaGCD(out IAction? act)
{
act = null;
- if (HasSwift && SwiftLogic) return false;
+ if (HasSwift && SwiftLogic && EgeiroPvE.CanUse(out _)) return false;
if (EukrasianPrognosisIiPvE.CanUse(out act))
{
@@ -263,7 +261,7 @@ protected override bool DefenseSingleGCD(out IAction? act)
{
act = null;
- if (HasSwift && SwiftLogic) return false;
+ if (HasSwift && SwiftLogic && EgeiroPvE.CanUse(out _)) return false;
if (EukrasianDiagnosisPvE.CanUse(out act))
{
@@ -288,7 +286,7 @@ protected override bool HealAreaGCD(out IAction? act)
{
act = null;
- if (HasSwift && SwiftLogic) return false;
+ if (HasSwift && SwiftLogic && EgeiroPvE.CanUse(out _)) return false;
if (PartyMembersAverHP < PneumaAOEPartyHeal || DyskrasiaPvE.CanUse(out _) && PartyMembers.GetJobCategory(JobRole.Tank).Any(t => t.GetHealthRatio() < PneumaAOETankHeal))
{
@@ -322,7 +320,7 @@ protected override bool HealSingleGCD(out IAction? act)
{
act = null;
- if (HasSwift && SwiftLogic) return false;
+ if (HasSwift && SwiftLogic && EgeiroPvE.CanUse(out _)) return false;
if (DiagnosisPvE.CanUse(out _) && !EukrasianDiagnosisPvE.CanUse(out _, skipCastingCheck: true))
{
@@ -339,9 +337,9 @@ protected override bool GeneralGCD(out IAction? act)
{
act = null;
- if (HasSwift && SwiftLogic) return false;
+ if (HasSwift && SwiftLogic && EgeiroPvE.CanUse(out _)) return false;
- if (!InCombat & EukrasiaPvE.CanUse(out act)) return true;
+ if (!InCombat && !Player.HasStatus(true, StatusID.Eukrasia) && EukrasiaPvE.CanUse(out act)) return true;
if (HostileTarget?.IsBossFromTTK() ?? false)
{
diff --git a/BasicRotations/Healer/WHM_Default.cs b/BasicRotations/Healer/WHM_Default.cs
index 37a465e..f22001d 100644
--- a/BasicRotations/Healer/WHM_Default.cs
+++ b/BasicRotations/Healer/WHM_Default.cs
@@ -148,7 +148,7 @@ protected override bool HealAreaGCD(out IAction? act)
{
act = null;
- if (HasSwift && SwiftLogic) return false;
+ if (HasSwift && SwiftLogic && RaisePvE.CanUse(out _)) return false;
if (AfflatusRapturePvE.CanUse(out act)) return true;
@@ -168,7 +168,7 @@ protected override bool HealSingleGCD(out IAction? act)
{
act = null;
- if (HasSwift && SwiftLogic) return false;
+ if (HasSwift && SwiftLogic && RaisePvE.CanUse(out _)) return false;
if (AfflatusSolacePvE.CanUse(out act)) return true;
@@ -186,7 +186,7 @@ protected override bool GeneralGCD(out IAction? act)
act = null;
- if (HasSwift && SwiftLogic) return false;
+ if (HasSwift && SwiftLogic && RaisePvE.CanUse(out _)) return false;
//if (NotInCombatDelay && RegenDefense.CanUse(out act)) return true;
@@ -233,10 +233,5 @@ private bool UseLily(out IAction? act)
if (AfflatusSolacePvE.CanUse(out act)) return true;
return false;
}
-
- /*public override void DisplayStatus()
- {
- ImGui.Text(LilyTime.ToString());
- }*/
#endregion
}
diff --git a/BasicRotations/Melee/NIN_Default.cs b/BasicRotations/Melee/NIN_Default.cs
index cb5a091..bd89a8f 100644
--- a/BasicRotations/Melee/NIN_Default.cs
+++ b/BasicRotations/Melee/NIN_Default.cs
@@ -437,14 +437,5 @@ protected override bool GeneralGCD(out IAction? act)
// Checks if no ninjutsu action is currently selected or if the Rabbit Medium has been invoked.
private static bool NoNinjutsu => AdjustId(ActionID.NinjutsuPvE) is ActionID.NinjutsuPvE or ActionID.RabbitMediumPvE;
-
- // Displays the current status of the rotation, including the aimed ninjutsu action, if any.
- public override void DisplayStatus()
- {
-
- ImGui.Text(Ninki.ToString());
-
- base.DisplayStatus();
- }
#endregion
}
diff --git a/BasicRotations/Ranged/BRD_Default.cs b/BasicRotations/Ranged/BRD_Default.cs
index 56bc7aa..4ba01bf 100644
--- a/BasicRotations/Ranged/BRD_Default.cs
+++ b/BasicRotations/Ranged/BRD_Default.cs
@@ -94,7 +94,7 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act)
{
if (((!RadiantFinalePvE.EnoughLevel && !RagingStrikesPvE.Cooldown.IsCoolingDown)
|| (RadiantFinalePvE.EnoughLevel && !RadiantFinalePvE.Cooldown.IsCoolingDown && RagingStrikesPvE.EnoughLevel && (!RagingStrikesPvE.Cooldown.IsCoolingDown || RagingStrikesPvE.Cooldown.WillHaveOneCharge(BuffAlignment))))
- && BattleVoicePvE.CanUse(out act, isLastAbility: false)) return true;
+ && (HostileTarget?.HasStatus(true, StatusID.Windbite, StatusID.Stormbite) == true) && (HostileTarget?.HasStatus(true, StatusID.VenomousBite, StatusID.CausticBite) == true) && BattleVoicePvE.CanUse(out act, isLastAbility: false)) return true;
if (!Player.WillStatusEnd(0, true, StatusID.BattleVoice) && RadiantFinalePvE.CanUse(out act)) return true;
diff --git a/BasicRotations/RebornRotations.csproj b/BasicRotations/RebornRotations.csproj
index c5536e9..e2caa78 100644
--- a/BasicRotations/RebornRotations.csproj
+++ b/BasicRotations/RebornRotations.csproj
@@ -16,7 +16,7 @@
-
+
diff --git a/BasicRotations/Tank/zPLD_Alpha.cs b/BasicRotations/Tank/zPLD_Alpha.cs
index 7cc5a52..4d2082d 100644
--- a/BasicRotations/Tank/zPLD_Alpha.cs
+++ b/BasicRotations/Tank/zPLD_Alpha.cs
@@ -94,16 +94,6 @@ protected override bool EmergencyAbility(IAction nextGCD, out IAction? act)
return base.EmergencyAbility(nextGCD, out act);
}
- [RotationDesc(ActionID.ReprisalPvE, ActionID.DivineVeilPvE)]
- protected override bool DefenseAreaAbility(IAction nextGCD, out IAction? act)
- {
-
- if (DivineVeilPvE.CanUse(out act)) return true;
- if (!Player.HasStatus(true, StatusID.Bulwark) && ReprisalPvE.CanUse(out act, skipAoeCheck: true)) return true;
- if (PassageOfArmsPvE.CanUse(out act)) return true;
- return base.DefenseAreaAbility(nextGCD, out act);
- }
-
[RotationDesc(ActionID.SentinelPvE, ActionID.RampartPvE, ActionID.BulwarkPvE, ActionID.SheltronPvE, ActionID.ReprisalPvE)]
protected override bool DefenseSingleAbility(IAction nextGCD, out IAction? act)
{
@@ -124,13 +114,22 @@ protected override bool DefenseSingleAbility(IAction nextGCD, out IAction? act)
if ((SentinelPvE.EnoughLevel && SentinelPvE.Cooldown.IsCoolingDown && SentinelPvE.Cooldown.ElapsedAfter(60) || !SentinelPvE.EnoughLevel) && RampartPvE.CanUse(out act)) return true;
// If Reprisal can be used, use it and return true.
- if (ReprisalPvE.CanUse(out act)) return true;
+ if (ReprisalPvE.CanUse(out act, skipAoeCheck: true)) return true;
}
-
return base.DefenseSingleAbility(nextGCD, out act);
}
+ [RotationDesc(ActionID.DivineVeilPvE, ActionID.PassageOfArmsPvE)]
+ protected override bool DefenseAreaAbility(IAction nextGCD, out IAction? act)
+ {
+ if (DivineVeilPvE.CanUse(out act)) return true;
+
+ if (PassageOfArmsPvE.CanUse(out act)) return true;
+
+ return base.DefenseAreaAbility(nextGCD, out act);
+ }
+
protected override bool AttackAbility(IAction nextGCD, out IAction? act)
{
if (WeaponRemain > 0.42f)