diff --git a/BasicRotations/Healer/AST_Default.cs b/BasicRotations/Healer/AST_Default.cs
index b4c4cc0..50121ba 100644
--- a/BasicRotations/Healer/AST_Default.cs
+++ b/BasicRotations/Healer/AST_Default.cs
@@ -26,6 +26,9 @@ public sealed class AST_Default : AstrologianRotation
[Range(0, 1, ConfigUnitType.Percent)]
[RotationConfig(CombatType.PvE, Name = "Minimum HP threshold among party member needed to use Horoscope")]
public float HoroscopeHeal { get; set; } = 0.3f;
+
+ [RotationConfig(CombatType.PvE, Name = "Use DOT while moving even if it does not need refresh (disabling is a damage down)")]
+ public bool DOTUpkeep { get; set; } = true;
#endregion
#region Countdown Logic
@@ -87,51 +90,6 @@ protected override bool DefenseAreaAbility(IAction nextGCD, out IAction? act)
}
#endregion
- #region GCD Logic
- protected override bool GeneralGCD(out IAction? act)
- {
- act = null;
- if (BubbleProtec && Player.HasStatus(true, StatusID.CollectiveUnconscious_848)) return false;
-
- if (GravityPvE.CanUse(out act)) return true;
-
- if (CombustPvE.CanUse(out act)) return true;
- if (MaleficPvE.CanUse(out act)) return true;
- if (CombustPvE.CanUse(out act, skipStatusProvideCheck: true)) return true;
-
- return base.GeneralGCD(out act);
- }
-
- [RotationDesc(ActionID.AspectedBeneficPvE, ActionID.BeneficIiPvE, ActionID.BeneficPvE)]
- 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 (AspectedBeneficPvE.CanUse(out act)
- && (IsMoving
- || AspectedBeneficPvE.Target.Target?.GetHealthRatio() > AspectedBeneficHeal)) return true;
-
- if (BeneficIiPvE.CanUse(out act)) return true;
- if (BeneficPvE.CanUse(out act)) return true;
-
- return base.HealSingleGCD(out act);
- }
-
- [RotationDesc(ActionID.AspectedHeliosPvE, ActionID.HeliosPvE)]
- 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 (AspectedHeliosPvE.CanUse(out act)) return true;
- if (HeliosPvE.CanUse(out act)) return true;
- return base.HealAreaGCD(out act);
- }
- #endregion
-
#region oGCD Logic
protected override bool EmergencyAbility(IAction nextGCD, out IAction? act)
{
@@ -240,6 +198,51 @@ protected override bool HealAreaAbility(IAction nextGCD, out IAction? act)
}
#endregion
+ #region GCD Logic
+ protected override bool GeneralGCD(out IAction? act)
+ {
+ act = null;
+ if (BubbleProtec && Player.HasStatus(true, StatusID.CollectiveUnconscious_848)) return false;
+
+ if (GravityPvE.CanUse(out act)) return true;
+
+ if (CombustPvE.CanUse(out act)) return true;
+ if (MaleficPvE.CanUse(out act)) return true;
+ if (CombustPvE.CanUse(out act, skipStatusProvideCheck: DOTUpkeep)) return true;
+
+ return base.GeneralGCD(out act);
+ }
+
+ [RotationDesc(ActionID.AspectedBeneficPvE, ActionID.BeneficIiPvE, ActionID.BeneficPvE)]
+ 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 (AspectedBeneficPvE.CanUse(out act)
+ && (IsMoving
+ || AspectedBeneficPvE.Target.Target?.GetHealthRatio() > AspectedBeneficHeal)) return true;
+
+ if (BeneficIiPvE.CanUse(out act)) return true;
+ if (BeneficPvE.CanUse(out act)) return true;
+
+ return base.HealSingleGCD(out act);
+ }
+
+ [RotationDesc(ActionID.AspectedHeliosPvE, ActionID.HeliosPvE)]
+ 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 (AspectedHeliosPvE.CanUse(out act)) return true;
+ if (HeliosPvE.CanUse(out act)) return true;
+ return base.HealAreaGCD(out act);
+ }
+ #endregion
+
#region Extra Methods
public override bool CanHealSingleSpell => base.CanHealSingleSpell && (GCDHeal || PartyMembers.GetJobCategory(JobRole.Healer).Count() < 2);
public override bool CanHealAreaSpell => base.CanHealAreaSpell && (GCDHeal || PartyMembers.GetJobCategory(JobRole.Healer).Count() < 2);
diff --git a/BasicRotations/Healer/SCH_Default.cs b/BasicRotations/Healer/SCH_Default.cs
index 9d4f82c..edb30e7 100644
--- a/BasicRotations/Healer/SCH_Default.cs
+++ b/BasicRotations/Healer/SCH_Default.cs
@@ -21,6 +21,9 @@ public sealed class SCH_Default : ScholarRotation
[Range(0, 1, ConfigUnitType.Percent)]
[RotationConfig(CombatType.PvE, Name = "Remove Aetherpact to conserve resources if party member is above this percentage")]
public float AetherpactRemove { get; set; } = 0.9f;
+
+ [RotationConfig(CombatType.PvE, Name = "Use DOT while moving even if it does not need refresh (disabling is a damage down)")]
+ public bool DOTUpkeep { get; set; } = true;
#endregion
#region Countdown Logic
@@ -208,9 +211,9 @@ protected override bool GeneralGCD(out IAction? act)
if (RuinIiPvE.CanUse(out act)) return true;
//Add dot while moving.
- if (BiolysisPvE.CanUse(out act, skipStatusProvideCheck: true)) return true;
- if (BioIiPvE.CanUse(out act, skipStatusProvideCheck: true)) return true;
- if (BioPvE.CanUse(out act, skipStatusProvideCheck: true)) return true;
+ if (BiolysisPvE.CanUse(out act, skipStatusProvideCheck: DOTUpkeep)) return true;
+ if (BioIiPvE.CanUse(out act, skipStatusProvideCheck: DOTUpkeep)) return true;
+ if (BioPvE.CanUse(out act, skipStatusProvideCheck: DOTUpkeep)) return true;
return base.GeneralGCD(out act);
}
diff --git a/BasicRotations/Healer/WHM_Default.cs b/BasicRotations/Healer/WHM_Default.cs
index d431876..043a6db 100644
--- a/BasicRotations/Healer/WHM_Default.cs
+++ b/BasicRotations/Healer/WHM_Default.cs
@@ -10,6 +10,9 @@ public sealed class WHM_Default : WhiteMageRotation
[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;
+ [RotationConfig(CombatType.PvE, Name = "Use DOT while moving even if it does not need refresh (disabling is a damage down)")]
+ public bool DOTUpkeep { get; set; } = true;
+
[RotationConfig(CombatType.PvE, Name = "Use Lily at max stacks.")]
public bool UseLilyWhenFull { get; set; } = true;
@@ -180,7 +183,7 @@ protected override bool GeneralGCD(out IAction? act)
if (UseLily(out act)) return true;
}
- if (AeroPvE.CanUse(out act, skipStatusProvideCheck: true)) return true;
+ if (AeroPvE.CanUse(out act, skipStatusProvideCheck: DOTUpkeep)) return true;
return base.GeneralGCD(out act);
}
diff --git a/BasicRotations/Healer/zAST_BETA.cs b/BasicRotations/Healer/zAST_BETA.cs
index 982db47..e9a09f0 100644
--- a/BasicRotations/Healer/zAST_BETA.cs
+++ b/BasicRotations/Healer/zAST_BETA.cs
@@ -10,6 +10,9 @@ public sealed class zAST_BETA : AstrologianRotation
[Range(4, 20, ConfigUnitType.Seconds)]
[RotationConfig(CombatType.PvE, Name = "Use Earthly Star during countdown timer.")]
public float UseEarthlyStarTime { get; set; } = 15;
+
+ [RotationConfig(CombatType.PvE, Name = "Use DOT while moving even if it does not need refresh (disabling is a damage down)")]
+ public bool DOTUpkeep { get; set; } = true;
#endregion
#region Countdown Logic
@@ -175,7 +178,7 @@ protected override bool GeneralGCD(out IAction? act)
if (FallMaleficPvE.CanUse(out act)) return true;
- if (CombustIiiPvE.CanUse(out act, skipStatusProvideCheck: true)) return true;
+ if (CombustIiiPvE.CanUse(out act, skipStatusProvideCheck: DOTUpkeep)) return true;
return base.GeneralGCD(out act);
}
diff --git a/BasicRotations/Ranged/MCH_Default.cs b/BasicRotations/Ranged/MCH_Default.cs
index 14ff893..e96d942 100644
--- a/BasicRotations/Ranged/MCH_Default.cs
+++ b/BasicRotations/Ranged/MCH_Default.cs
@@ -1,6 +1,6 @@
namespace DefaultRotations.Ranged;
-[Rotation("Default", CombatType.PvE, GameVersion = "7.00", Description = "")]
+[Rotation("Default", CombatType.PvE, GameVersion = "7.05")]
[SourceCode(Path = "main/DefaultRotations/Ranged/MCH_Default.cs")]
[Api(3)]
public sealed class MCH_Default : MachinistRotation
@@ -8,6 +8,9 @@ public sealed class MCH_Default : MachinistRotation
#region Config Options
[RotationConfig(CombatType.PvE, Name = "(Warning: Queen logic is new and untested, uncheck to test new logic) Skip Queen Logic and uses Rook Autoturret/Automaton Queen immediately whenever you get 50 battery")]
private bool SkipQueenLogic { get; set; } = true;
+
+ [RotationConfig(CombatType.PvE, Name = "Prioritize Barrel Stabilizer use")]
+ private bool BSPrio { get; set; } = false;
#endregion
#region Countdown logic
@@ -65,6 +68,8 @@ protected override bool EmergencyAbility(IAction nextGCD, out IAction? act)
// Logic for using attack abilities outside of GCD, focusing on burst windows and cooldown management.
protected override bool AttackAbility(IAction nextGCD, out IAction? act)
{
+ if (BSPrio && BarrelStabilizerPvE.CanUse(out act)) return true;
+
// Check for not burning Hypercharge below level 52 on AOE
bool LowLevelHyperCheck = !AutoCrossbowPvE.EnoughLevel && SpreadShotPvE.CanUse(out _);
diff --git a/BasicRotations/RebornRotations.csproj b/BasicRotations/RebornRotations.csproj
index 884ef5b..efc187b 100644
--- a/BasicRotations/RebornRotations.csproj
+++ b/BasicRotations/RebornRotations.csproj
@@ -16,7 +16,7 @@
-
+