diff --git a/BasicRotations/Magical/PTM_Default.cs b/BasicRotations/Magical/PTM_Default.cs deleted file mode 100644 index a13934d..0000000 --- a/BasicRotations/Magical/PTM_Default.cs +++ /dev/null @@ -1,76 +0,0 @@ -/*namespace DefaultRotations.Magical; - -[Rotation("Default", CombatType.PvE, GameVersion = "7.0")] -[SourceCode(Path = "main/DefaultRotations/Magical/PTM_Default.cs")] -[Api(1)] -public sealed class PTM_Default : PictomancerRotation -{ - #region Countdown logic - // Defines logic for actions to take during the countdown before combat starts. - protected override IAction? CountDownAction(float remainTime) - { - - return base.CountDownAction(remainTime); - } - #endregion - - #region Emergency Logic - // Determines emergency actions to take based on the next planned GCD action. - protected override bool EmergencyAbility(IAction nextGCD, out IAction? act) - { - act = null; - - return base.EmergencyAbility(nextGCD, out act); - } - #endregion - - #region oGCD Logic - protected override bool AttackAbility(IAction nextGCD, out IAction? act) - { - act = null; - - - return base.AttackAbility(nextGCD, out act); - } - - protected override bool MoveForwardAbility(IAction nextGCD, out IAction? act) - { - act = null; - - - return base.MoveForwardAbility(nextGCD, out act); - } - #endregion - - #region GCD Logic - protected override bool MoveForwardGCD(out IAction? act) - { - act = null; - - return base.MoveForwardGCD(out act); - } - - protected override bool GeneralGCD(out IAction? act) - { - act = null; - - return base.GeneralGCD(out act); - } - - private bool AttackGCD(out IAction? act, bool burst) - { - act = null; - - return false; - } - #endregion - - #region Extra Methods - // Extra private helper methods for determining the usability of specific abilities under certain conditions. - // These methods simplify the main logic by encapsulating specific checks related to abilities' cooldowns and prerequisites. - private bool CanUseExamplePvE(out IAction? act) - { - - } - #endregion -}*/ \ No newline at end of file diff --git a/BasicRotations/Melee/RPR_Default.cs b/BasicRotations/Melee/RPR_Default.cs index ee44bba..3250ae7 100644 --- a/BasicRotations/Melee/RPR_Default.cs +++ b/BasicRotations/Melee/RPR_Default.cs @@ -9,7 +9,7 @@ public sealed class RPR_Default : ReaperRotation [RotationConfig(CombatType.PvE, Name = "[Beta Option] Pool Shroud for Arcane Circle.")] public bool EnshroudPooling { get; set; } = false; - public static bool HasExecutioner => Player.HasStatus(true, StatusID.Executioner); + public static bool ExecutionerReady => Player.HasStatus(true, StatusID.Executioner); #endregion #region Countdown Logic @@ -88,7 +88,7 @@ protected override bool GeneralGCD(out IAction? act) if (SoulsowPvE.CanUse(out act)) return true; - if (!HasExecutioner && !HasSoulReaver ) + if (!ExecutionerReady && !HasSoulReaver ) { if (PerfectioPvE.CanUse(out act, skipAoeCheck: true)) return true; } @@ -181,7 +181,7 @@ private bool Reaping(out IAction? act) private bool ItsGluttonyTime(out IAction? act) { - if (HasExecutioner) + if (ExecutionerReady) { if (ExecutionersGuillotinePvE.CanUse(out act)) return true; if (Player.HasStatus(true, StatusID.EnhancedGallows)) diff --git a/BasicRotations/Ranged/MCH_Default.cs b/BasicRotations/Ranged/MCH_Default.cs index 2ea00ec..d19ef71 100644 --- a/BasicRotations/Ranged/MCH_Default.cs +++ b/BasicRotations/Ranged/MCH_Default.cs @@ -1,3 +1,5 @@ +using FFXIVClientStructs.FFXIV.Client.Game.UI; + namespace DefaultRotations.Ranged; [Rotation("Default", CombatType.PvE, GameVersion = "7.00", Description = "")] @@ -7,7 +9,7 @@ public sealed class MCH_Default : MachinistRotation { #region Config Options [RotationConfig(CombatType.PvE, Name = "Skip Queen Logic and uses Rook Autoturret/Automaton Queen immediately whenever you get 50 battery")] - public bool SkipQueenLogic { get; set; } = false; + private bool SkipQueenLogic { get; set; } = false; #endregion #region Countdown logic @@ -35,16 +37,10 @@ protected override bool EmergencyAbility(IAction nextGCD, out IAction? act) bool isReassembleUsable = //Reassemble current # of charges and double proc protection ReassemblePvE.Cooldown.CurrentCharges > 0 && !Player.HasStatus(true, StatusID.Reassembled) && - //Chainsaw Level Check and NextGCD Check - ((ChainSawPvE.EnoughLevel && nextGCD.IsTheSameTo(true, ChainSawPvE)) || - //AirAnchor Logic - (AirAnchorPvE.EnoughLevel && nextGCD.IsTheSameTo(true, AirAnchorPvE)) || - //Drill Logic - (DrillPvE.EnoughLevel && !ChainSawPvE.EnoughLevel && nextGCD.IsTheSameTo(true, DrillPvE)) || - //Cleanshot Logic - (!DrillPvE.EnoughLevel && CleanShotPvE.EnoughLevel && nextGCD.IsTheSameTo(true, CleanShotPvE)) || - //HotShot Logic - (!CleanShotPvE.EnoughLevel && nextGCD.IsTheSameTo(true, HotShotPvE))); + (nextGCD.IsTheSameTo(true, [ChainSawPvE, ExcavatorPvE, AirAnchorPvE]) || + (!ChainSawPvE.EnoughLevel && nextGCD.IsTheSameTo(true, DrillPvE)) || + (!DrillPvE.EnoughLevel && nextGCD.IsTheSameTo(true, CleanShotPvE)) || + (!CleanShotPvE.EnoughLevel && nextGCD.IsTheSameTo(true, HotShotPvE))); // Keeps Ricochet and Gauss cannon Even bool isRicochetMore = RicochetPvE.EnoughLevel && GaussRoundPvE.Cooldown.CurrentCharges <= RicochetPvE.Cooldown.CurrentCharges; @@ -97,21 +93,20 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act) if (UseBurstMedicine(out act)) return true; { - if ((IsLastAbility(false, HyperchargePvE) || Heat >= 50 || Player.HasStatus(true, StatusID.Hypercharged)) && !CombatElapsedLess(10) && CanUseHyperchargePvE(out _) - && !LowLevelHyperCheck && WildfirePvE.CanUse(out act)) return true; + if ((IsLastAbility(false, HyperchargePvE) || Heat >= 50 || Player.HasStatus(true, StatusID.Hypercharged)) && !CombatElapsedLessGCD(5) && + (CombatElapsedLess(20) || ToolChargeSoon(out _)) && !LowLevelHyperCheck && WildfirePvE.CanUse(out act)) return true; } } // Use Hypercharge if at least 12 seconds of combat and (if wildfire will not be up in 30 seconds or if you hit 100 heat) if (!LowLevelHyperCheck && !CombatElapsedLess(12) && !Player.HasStatus(true, StatusID.Reassembled) && (!WildfirePvE.Cooldown.WillHaveOneCharge(30) || (Heat == 100))) { - if (CanUseHyperchargePvE(out act)) return true; + if (ToolChargeSoon(out act)) return true; } // Rook Autoturret/Queen Logic if (NoQueenLogic || OpenerQueen || CombatTimeQueen || WildfireCooldownQueen || BatteryCheckQueen || LastGCDCheckQueen) { if (RookAutoturretPvE.CanUse(out act)) return true; } - // Use Barrel Stabilizer on CD if won't cap if (BarrelStabilizerPvE.CanUse(out act)) return true; return base.AttackAbility(nextGCD, out act); @@ -138,12 +133,16 @@ protected override bool GeneralGCD(out IAction? act) if (!AirAnchorPvE.EnoughLevel && HotShotPvE.CanUse(out act)) return true; // Check if Drill can be used - if (DrillPvE.CanUse(out act, usedUp: true)) return true; + if (DrillPvE.CanUse(out act, usedUp: false)) return true; } // Special condition for using ChainSaw outside of AoE checks if no action is chosen within 4 GCDs. - if (!CombatElapsedLessGCD(4) && ChainSawPvE.CanUse(out act, skipAoeCheck: true)) return true; - if (!CombatElapsedLessGCD(4) && ExcavatorPvE.CanUse(out act, skipAoeCheck: true)) return true; + if (!CombatElapsedLessGCD(1) && ChainSawPvE.CanUse(out act, skipAoeCheck: true)) return true; + if (ExcavatorPvE.CanUse(out act, skipAoeCheck: true)) return true; + if (!ChainSawPvE.Cooldown.WillHaveOneCharge(6f) && !CombatElapsedLessGCD(6)) + { + if (DrillPvE.CanUse(out act, usedUp: true)) return true; + } // AoE actions: ChainSaw and SpreadShot based on their usability. if (SpreadShotPvE.CanUse(out _)) @@ -151,8 +150,8 @@ protected override bool GeneralGCD(out IAction? act) if (ChainSawPvE.CanUse(out act)) return true; if (ExcavatorPvE.CanUse(out act)) return true; } - if (SpreadShotPvE.CanUse(out act)) return true; if (FullMetalFieldPvE.CanUse(out act)) return true; + if (SpreadShotPvE.CanUse(out act)) return true; // Single target actions: CleanShot, SlugShot, and SplitShot based on their usability. if (CleanShotPvE.CanUse(out act)) return true; if (SlugShotPvE.CanUse(out act)) return true; @@ -166,12 +165,12 @@ protected override bool GeneralGCD(out IAction? act) // Extra private helper methods for determining the usability of specific abilities under certain conditions. // These methods simplify the main logic by encapsulating specific checks related to abilities' cooldowns and prerequisites. // Logic for Hypercharge - private bool CanUseHyperchargePvE(out IAction? act) + private bool ToolChargeSoon(out IAction? act) { float REST_TIME = 6f; if //Cannot AOE - ((!SpreadShotPvE.CanUse(out _)) + (!SpreadShotPvE.CanUse(out _) && // AirAnchor Enough Level % AirAnchor ((AirAnchorPvE.EnoughLevel && AirAnchorPvE.Cooldown.WillHaveOneCharge(REST_TIME)) @@ -190,7 +189,6 @@ private bool CanUseHyperchargePvE(out IAction? act) } else { - // Use Hypercharge return HyperchargePvE.CanUse(out act); } }