From 6738eb4ad2651b10163888bbceaf79cf600d9e05 Mon Sep 17 00:00:00 2001 From: Tykku Date: Sun, 12 May 2024 23:43:58 -0400 Subject: [PATCH] Removed CanUse junk conditions Removed onLastAbility and skipClippingCheck from all rotations --- BasicRotations/Healer/SGE_Default.cs | 30 +-- BasicRotations/Magical/BLM_Default.cs | 6 +- BasicRotations/Melee/DRG_Default.cs | 4 +- BasicRotations/Melee/MNK_Default.cs | 2 +- BasicRotations/Melee/RPR_Default.cs | 6 +- .../PVPRotations/Healer/AST_Default.PVP.cs | 2 +- .../PVPRotations/Healer/SCH_Default.PVP.cs | 2 +- .../PVPRotations/Healer/SGE_Default.PVP.cs | 2 +- .../PVPRotations/Healer/WHM_Default.PVP.cs | 2 +- .../PVPRotations/Magical/BLM_Default.PVP.cs | 2 +- .../PVPRotations/Magical/RDM_Default.PvP.cs | 2 +- .../PVPRotations/Magical/SMN_Default.PVP.cs | 2 +- .../PVPRotations/Melee/DRG_Default.PVP.cs | 2 +- .../PVPRotations/Melee/MNK_Default.PVP.cs | 2 +- .../PVPRotations/Melee/NIN_Default.PVP.cs | 2 +- .../PVPRotations/Melee/RPR_Default.PVP.cs | 2 +- .../PVPRotations/Melee/SAM_Default.PVP.cs | 2 +- .../PVPRotations/Ranged/BRD_Default.PVP.cs | 2 +- .../PVPRotations/Ranged/DNC_Default.PVP.cs | 2 +- .../PVPRotations/Ranged/MCH_Default.PvP.cs | 4 +- .../PVPRotations/Tank/DRK_Default.PVP.cs | 2 +- .../PVPRotations/Tank/GNB_Default.PVP.cs | 2 +- .../PVPRotations/Tank/PLD_Default.PVP.cs | 2 +- .../PVPRotations/Tank/WAR_Default.PVP.cs | 2 +- BasicRotations/Ranged/BRD_Default.cs | 2 +- BasicRotations/Ranged/DNC_Default.cs | 6 +- BasicRotations/Ranged/MCH_Default.cs | 8 +- BasicRotations/Ranged/MCH_zBeta.cs | 202 ------------------ BasicRotations/Tank/DRK_Default.cs | 14 +- BasicRotations/Tank/GNB_Default.cs | 8 +- BasicRotations/Tank/PLD_Default.cs | 4 +- BasicRotations/Tank/WAR_Default.cs | 4 +- 32 files changed, 67 insertions(+), 269 deletions(-) delete mode 100644 BasicRotations/Ranged/MCH_zBeta.cs diff --git a/BasicRotations/Healer/SGE_Default.cs b/BasicRotations/Healer/SGE_Default.cs index be103d0..6d041d5 100644 --- a/BasicRotations/Healer/SGE_Default.cs +++ b/BasicRotations/Healer/SGE_Default.cs @@ -43,12 +43,12 @@ protected override bool DefenseAreaAbility(IAction nextGCD, out IAction? act) { if (Addersgall <= 1) { - if (PanhaimaPvE.CanUse(out act, onLastAbility: true)) return true; + if (PanhaimaPvE.CanUse(out act)) return true; } - if (KeracholePvE.CanUse(out act, onLastAbility: true)) return true; + if (KeracholePvE.CanUse(out act)) return true; - if (HolosPvE.CanUse(out act, onLastAbility: true)) return true; + if (HolosPvE.CanUse(out act)) return true; return base.DefenseAreaAbility(nextGCD, out act); } @@ -58,19 +58,19 @@ protected override bool DefenseSingleAbility(IAction nextGCD, out IAction? act) { if (Addersgall <= 1) { - if (HaimaPvE.CanUse(out act, onLastAbility: true)) return true; + if (HaimaPvE.CanUse(out act)) return true; } - if (TaurocholePvE.CanUse(out act, onLastAbility: true) && TaurocholePvE.Target.Target?.GetHealthRatio() < 0.8) return true; + if (TaurocholePvE.CanUse(out act) && TaurocholePvE.Target.Target?.GetHealthRatio() < 0.8) return true; if (Addersgall <= 1) { - if ((!HaimaPvE.EnoughLevel || HaimaPvE.Cooldown.ElapsedAfter(20)) && PanhaimaPvE.CanUse(out act, onLastAbility: true)) return true; + if ((!HaimaPvE.EnoughLevel || HaimaPvE.Cooldown.ElapsedAfter(20)) && PanhaimaPvE.CanUse(out act)) return true; } - if ((!TaurocholePvE.EnoughLevel || TaurocholePvE.Cooldown.ElapsedAfter(20)) && KeracholePvE.CanUse(out act, onLastAbility: true)) return true; + if ((!TaurocholePvE.EnoughLevel || TaurocholePvE.Cooldown.ElapsedAfter(20)) && KeracholePvE.CanUse(out act)) return true; - if (HolosPvE.CanUse(out act, onLastAbility: true)) return true; + if (HolosPvE.CanUse(out act)) return true; return base.DefenseSingleAbility(nextGCD, out act); } @@ -81,13 +81,13 @@ protected override bool HealAreaAbility(IAction nextGCD, out IAction? act) if (PhysisIiPvE.CanUse(out act)) return true; if (!PhysisIiPvE.EnoughLevel && PhysisPvE.CanUse(out act)) return true; - if (KeracholePvE.CanUse(out act, onLastAbility: true) && EnhancedKeracholeTrait.EnoughLevel) return true; + if (KeracholePvE.CanUse(out act) && EnhancedKeracholeTrait.EnoughLevel) return true; - if (HolosPvE.CanUse(out act, onLastAbility: true) && PartyMembersAverHP < 0.50f) return true; + if (HolosPvE.CanUse(out act) && PartyMembersAverHP < 0.50f) return true; - if (IxocholePvE.CanUse(out act, onLastAbility: true)) return true; + if (IxocholePvE.CanUse(out act)) return true; - if (KeracholePvE.CanUse(out act, onLastAbility: true)) return true; + if (KeracholePvE.CanUse(out act)) return true; return base.HealAreaAbility(nextGCD, out act); } @@ -107,14 +107,14 @@ protected override bool HealSingleAbility(IAction nextGCD, out IAction? act) var tank = PartyMembers.GetJobCategory(JobRole.Tank); if (Addersgall < 1 && (tank.Any(t => t.GetHealthRatio() < 0.65f) || PartyMembers.Any(b => b.GetHealthRatio() < 0.20f))) { - if (HaimaPvE.CanUse(out act, onLastAbility: true)) return true; + if (HaimaPvE.CanUse(out act)) return true; if (PhysisIiPvE.CanUse(out act)) return true; if (!PhysisIiPvE.EnoughLevel && PhysisPvE.CanUse(out act)) return true; - if (HolosPvE.CanUse(out act, onLastAbility: true)) return true; + if (HolosPvE.CanUse(out act)) return true; - if ((!HaimaPvE.EnoughLevel || HaimaPvE.Cooldown.ElapsedAfter(20)) && PanhaimaPvE.CanUse(out act, onLastAbility: true)) return true; + if ((!HaimaPvE.EnoughLevel || HaimaPvE.Cooldown.ElapsedAfter(20)) && PanhaimaPvE.CanUse(out act)) return true; } if (tank.Any(t => t.GetHealthRatio() < 0.60f)) diff --git a/BasicRotations/Magical/BLM_Default.cs b/BasicRotations/Magical/BLM_Default.cs index 4f275ea..015fb8d 100644 --- a/BasicRotations/Magical/BLM_Default.cs +++ b/BasicRotations/Magical/BLM_Default.cs @@ -81,7 +81,7 @@ protected override bool EmergencyAbility(IAction nextGCD, out IAction? act) //To Fire if (CurrentMp >= 7200 && UmbralIceStacks == 2 && ParadoxPvE.EnoughLevel) { - if ((HasFire || HasSwift) && TransposePvE.CanUse(out act, onLastAbility: true)) return true; + if ((HasFire || HasSwift) && TransposePvE.CanUse(out act)) return true; } if (nextGCD.IsTheSameTo(false, FireIiiPvE) && HasFire) { @@ -104,7 +104,7 @@ protected override bool GeneralGCD(out IAction? act) if (InFireOrIce(out act, out var mustGo)) return true; if (mustGo) return false; //Triplecast for moving. - if (IsMoving && HasHostilesInRange && TriplecastPvE.CanUse(out act, usedUp: true, skipClippingCheck: true)) return true; + if (IsMoving && HasHostilesInRange && TriplecastPvE.CanUse(out act, usedUp: true)) return true; if (AddElementBase(out act)) return true; if (ScathePvE.CanUse(out act)) return true; @@ -265,7 +265,7 @@ private bool DoFire(out IAction? act) if (AddThunder(out act, 0)) return true; } - if (TriplecastPvE.CanUse(out act, skipClippingCheck: true)) return true; + if (TriplecastPvE.CanUse(out act)) return true; if (AddThunder(out act, 0) && Player.WillStatusEndGCD(1, 0, true, StatusID.Thundercloud)) return true; diff --git a/BasicRotations/Melee/DRG_Default.cs b/BasicRotations/Melee/DRG_Default.cs index c009524..cdf3d23 100644 --- a/BasicRotations/Melee/DRG_Default.cs +++ b/BasicRotations/Melee/DRG_Default.cs @@ -30,7 +30,7 @@ protected override bool EmergencyAbility(IAction nextGCD, out IAction? act) if (nextGCD.IsTheSameTo(true, FullThrustPvE, CoerthanTormentPvE) || Player.HasStatus(true, StatusID.LanceCharge) && nextGCD.IsTheSameTo(false, FangAndClawPvE)) { - if (LifeSurgePvE.CanUse(out act, onLastAbility: true, usedUp: true)) return true; + if (LifeSurgePvE.CanUse(out act, usedUp: true)) return true; } return base.EmergencyAbility(nextGCD, out act); @@ -43,7 +43,7 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act) if (IsBurst && InCombat) { if (LanceChargePvE.CanUse(out act, skipAoeCheck: true) && Player.HasStatus(true, StatusID.PowerSurge)) return true; - if (LanceChargePvE.CanUse(out act, skipAoeCheck: true, onLastAbility: true) && !Player.HasStatus(true, StatusID.PowerSurge)) return true; + if (LanceChargePvE.CanUse(out act, skipAoeCheck: true) && !Player.HasStatus(true, StatusID.PowerSurge)) return true; if (DragonSightPvE.CanUse(out act, skipAoeCheck: true)) return true; if (BattleLitanyPvE.CanUse(out act, skipAoeCheck: true)) return true; diff --git a/BasicRotations/Melee/MNK_Default.cs b/BasicRotations/Melee/MNK_Default.cs index 5275212..a7777ab 100644 --- a/BasicRotations/Melee/MNK_Default.cs +++ b/BasicRotations/Melee/MNK_Default.cs @@ -32,7 +32,7 @@ protected override bool EmergencyAbility(IAction nextGCD, out IAction? act) if (InCombat) { if (UseBurstMedicine(out act)) return true; - if (IsBurst && !CombatElapsedLessGCD(2) && RiddleOfFirePvE.CanUse(out act, onLastAbility: true)) return true; + if (IsBurst && !CombatElapsedLessGCD(2) && RiddleOfFirePvE.CanUse(out act)) return true; } return base.EmergencyAbility(nextGCD, out act); } diff --git a/BasicRotations/Melee/RPR_Default.cs b/BasicRotations/Melee/RPR_Default.cs index 7a88557..3e00e88 100644 --- a/BasicRotations/Melee/RPR_Default.cs +++ b/BasicRotations/Melee/RPR_Default.cs @@ -117,14 +117,14 @@ protected override bool GeneralGCD(out IAction? act) if (HasSoulReaver) { - if (GuillotinePvE.CanUse(out act, skipClippingCheck: true)) return true; + if (GuillotinePvE.CanUse(out act)) return true; if (Player.HasStatus(true, StatusID.EnhancedGibbet)) { - if (GibbetPvE.CanUse(out act, skipClippingCheck: true, skipComboCheck: true)) return true; + if (GibbetPvE.CanUse(out act, skipComboCheck: true)) return true; } else { - if (GallowsPvE.CanUse(out act, skipClippingCheck: true, skipComboCheck: true)) return true; + if (GallowsPvE.CanUse(out act, skipComboCheck: true)) return true; } } diff --git a/BasicRotations/PVPRotations/Healer/AST_Default.PVP.cs b/BasicRotations/PVPRotations/Healer/AST_Default.PVP.cs index fa16e0e..8a6beca 100644 --- a/BasicRotations/PVPRotations/Healer/AST_Default.PVP.cs +++ b/BasicRotations/PVPRotations/Healer/AST_Default.PVP.cs @@ -62,7 +62,7 @@ private bool TryPurify(out IAction? action) { if (status.Value && Player.HasStatus(true, (StatusID)status.Key)) { - return PurifyPvP.CanUse(out action, skipClippingCheck: true); + return PurifyPvP.CanUse(out action); } } diff --git a/BasicRotations/PVPRotations/Healer/SCH_Default.PVP.cs b/BasicRotations/PVPRotations/Healer/SCH_Default.PVP.cs index 1672703..38fd578 100644 --- a/BasicRotations/PVPRotations/Healer/SCH_Default.PVP.cs +++ b/BasicRotations/PVPRotations/Healer/SCH_Default.PVP.cs @@ -62,7 +62,7 @@ private bool TryPurify(out IAction? action) { if (status.Value && Player.HasStatus(true, (StatusID)status.Key)) { - return PurifyPvP.CanUse(out action, skipClippingCheck: true); + return PurifyPvP.CanUse(out action); } } diff --git a/BasicRotations/PVPRotations/Healer/SGE_Default.PVP.cs b/BasicRotations/PVPRotations/Healer/SGE_Default.PVP.cs index b258913..307adce 100644 --- a/BasicRotations/PVPRotations/Healer/SGE_Default.PVP.cs +++ b/BasicRotations/PVPRotations/Healer/SGE_Default.PVP.cs @@ -62,7 +62,7 @@ private bool TryPurify(out IAction? action) { if (status.Value && Player.HasStatus(true, (StatusID)status.Key)) { - return PurifyPvP.CanUse(out action, skipClippingCheck: true); + return PurifyPvP.CanUse(out action); } } diff --git a/BasicRotations/PVPRotations/Healer/WHM_Default.PVP.cs b/BasicRotations/PVPRotations/Healer/WHM_Default.PVP.cs index 24f41e7..7edc213 100644 --- a/BasicRotations/PVPRotations/Healer/WHM_Default.PVP.cs +++ b/BasicRotations/PVPRotations/Healer/WHM_Default.PVP.cs @@ -62,7 +62,7 @@ private bool TryPurify(out IAction? action) { if (status.Value && Player.HasStatus(true, (StatusID)status.Key)) { - return PurifyPvP.CanUse(out action, skipClippingCheck: true); + return PurifyPvP.CanUse(out action); } } diff --git a/BasicRotations/PVPRotations/Magical/BLM_Default.PVP.cs b/BasicRotations/PVPRotations/Magical/BLM_Default.PVP.cs index da2fef3..0751d0a 100644 --- a/BasicRotations/PVPRotations/Magical/BLM_Default.PVP.cs +++ b/BasicRotations/PVPRotations/Magical/BLM_Default.PVP.cs @@ -62,7 +62,7 @@ private bool TryPurify(out IAction? action) { if (status.Value && Player.HasStatus(true, (StatusID)status.Key)) { - return PurifyPvP.CanUse(out action, skipClippingCheck: true); + return PurifyPvP.CanUse(out action); } } diff --git a/BasicRotations/PVPRotations/Magical/RDM_Default.PvP.cs b/BasicRotations/PVPRotations/Magical/RDM_Default.PvP.cs index be2c211..42b48ca 100644 --- a/BasicRotations/PVPRotations/Magical/RDM_Default.PvP.cs +++ b/BasicRotations/PVPRotations/Magical/RDM_Default.PvP.cs @@ -62,7 +62,7 @@ private bool TryPurify(out IAction? action) { if (status.Value && Player.HasStatus(true, (StatusID)status.Key)) { - return PurifyPvP.CanUse(out action, skipClippingCheck: true); + return PurifyPvP.CanUse(out action); } } diff --git a/BasicRotations/PVPRotations/Magical/SMN_Default.PVP.cs b/BasicRotations/PVPRotations/Magical/SMN_Default.PVP.cs index f95ab70..04e9e8d 100644 --- a/BasicRotations/PVPRotations/Magical/SMN_Default.PVP.cs +++ b/BasicRotations/PVPRotations/Magical/SMN_Default.PVP.cs @@ -62,7 +62,7 @@ private bool TryPurify(out IAction? action) { if (status.Value && Player.HasStatus(true, (StatusID)status.Key)) { - return PurifyPvP.CanUse(out action, skipClippingCheck: true); + return PurifyPvP.CanUse(out action); } } diff --git a/BasicRotations/PVPRotations/Melee/DRG_Default.PVP.cs b/BasicRotations/PVPRotations/Melee/DRG_Default.PVP.cs index d51e6b7..d0d284f 100644 --- a/BasicRotations/PVPRotations/Melee/DRG_Default.PVP.cs +++ b/BasicRotations/PVPRotations/Melee/DRG_Default.PVP.cs @@ -62,7 +62,7 @@ private bool TryPurify(out IAction? action) { if (status.Value && Player.HasStatus(true, (StatusID)status.Key)) { - return PurifyPvP.CanUse(out action, skipClippingCheck: true); + return PurifyPvP.CanUse(out action); } } diff --git a/BasicRotations/PVPRotations/Melee/MNK_Default.PVP.cs b/BasicRotations/PVPRotations/Melee/MNK_Default.PVP.cs index ea07532..2ca2f31 100644 --- a/BasicRotations/PVPRotations/Melee/MNK_Default.PVP.cs +++ b/BasicRotations/PVPRotations/Melee/MNK_Default.PVP.cs @@ -62,7 +62,7 @@ private bool TryPurify(out IAction? action) { if (status.Value && Player.HasStatus(true, (StatusID)status.Key)) { - return PurifyPvP.CanUse(out action, skipClippingCheck: true); + return PurifyPvP.CanUse(out action); } } diff --git a/BasicRotations/PVPRotations/Melee/NIN_Default.PVP.cs b/BasicRotations/PVPRotations/Melee/NIN_Default.PVP.cs index d12fec4..8f3c171 100644 --- a/BasicRotations/PVPRotations/Melee/NIN_Default.PVP.cs +++ b/BasicRotations/PVPRotations/Melee/NIN_Default.PVP.cs @@ -62,7 +62,7 @@ private bool TryPurify(out IAction? action) { if (status.Value && Player.HasStatus(true, (StatusID)status.Key)) { - return PurifyPvP.CanUse(out action, skipClippingCheck: true); + return PurifyPvP.CanUse(out action); } } diff --git a/BasicRotations/PVPRotations/Melee/RPR_Default.PVP.cs b/BasicRotations/PVPRotations/Melee/RPR_Default.PVP.cs index c7f2394..972611b 100644 --- a/BasicRotations/PVPRotations/Melee/RPR_Default.PVP.cs +++ b/BasicRotations/PVPRotations/Melee/RPR_Default.PVP.cs @@ -62,7 +62,7 @@ private bool TryPurify(out IAction? action) { if (status.Value && Player.HasStatus(true, (StatusID)status.Key)) { - return PurifyPvP.CanUse(out action, skipClippingCheck: true); + return PurifyPvP.CanUse(out action); } } diff --git a/BasicRotations/PVPRotations/Melee/SAM_Default.PVP.cs b/BasicRotations/PVPRotations/Melee/SAM_Default.PVP.cs index 81b71d3..10814b3 100644 --- a/BasicRotations/PVPRotations/Melee/SAM_Default.PVP.cs +++ b/BasicRotations/PVPRotations/Melee/SAM_Default.PVP.cs @@ -62,7 +62,7 @@ private bool TryPurify(out IAction? action) { if (status.Value && Player.HasStatus(true, (StatusID)status.Key)) { - return PurifyPvP.CanUse(out action, skipClippingCheck: true); + return PurifyPvP.CanUse(out action); } } diff --git a/BasicRotations/PVPRotations/Ranged/BRD_Default.PVP.cs b/BasicRotations/PVPRotations/Ranged/BRD_Default.PVP.cs index 6342f02..c8cb3f5 100644 --- a/BasicRotations/PVPRotations/Ranged/BRD_Default.PVP.cs +++ b/BasicRotations/PVPRotations/Ranged/BRD_Default.PVP.cs @@ -62,7 +62,7 @@ private bool TryPurify(out IAction? action) { if (status.Value && Player.HasStatus(true, (StatusID)status.Key)) { - return PurifyPvP.CanUse(out action, skipClippingCheck: true); + return PurifyPvP.CanUse(out action); } } diff --git a/BasicRotations/PVPRotations/Ranged/DNC_Default.PVP.cs b/BasicRotations/PVPRotations/Ranged/DNC_Default.PVP.cs index 25870c8..c371e67 100644 --- a/BasicRotations/PVPRotations/Ranged/DNC_Default.PVP.cs +++ b/BasicRotations/PVPRotations/Ranged/DNC_Default.PVP.cs @@ -62,7 +62,7 @@ private bool TryPurify(out IAction? action) { if (status.Value && Player.HasStatus(true, (StatusID)status.Key)) { - return PurifyPvP.CanUse(out action, skipClippingCheck: true); + return PurifyPvP.CanUse(out action); } } diff --git a/BasicRotations/PVPRotations/Ranged/MCH_Default.PvP.cs b/BasicRotations/PVPRotations/Ranged/MCH_Default.PvP.cs index 7833b95..2806a9a 100644 --- a/BasicRotations/PVPRotations/Ranged/MCH_Default.PvP.cs +++ b/BasicRotations/PVPRotations/Ranged/MCH_Default.PvP.cs @@ -62,7 +62,7 @@ private bool TryPurify(out IAction? action) { if (status.Value && Player.HasStatus(true, (StatusID)status.Key)) { - return PurifyPvP.CanUse(out action, skipClippingCheck: true); + return PurifyPvP.CanUse(out action); } } @@ -86,7 +86,7 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act) if (BishopAutoturretPvP.CanUse(out act, skipAoeCheck: true)) return true; // Use WildfirePvP if Overheated - if (Player.HasStatus(true, StatusID.Overheated_3149) && WildfirePvP.CanUse(out act, skipAoeCheck: true, skipComboCheck: true, skipClippingCheck: true)) return true; + if (Player.HasStatus(true, StatusID.Overheated_3149) && WildfirePvP.CanUse(out act, skipAoeCheck: true, skipComboCheck: true)) return true; // Check if BioblasterPvP, AirAnchorPvP, or ChainSawPvP can be used if (InCombat && !Player.HasStatus(true, StatusID.Analysis) && diff --git a/BasicRotations/PVPRotations/Tank/DRK_Default.PVP.cs b/BasicRotations/PVPRotations/Tank/DRK_Default.PVP.cs index 892d68e..2d0adf1 100644 --- a/BasicRotations/PVPRotations/Tank/DRK_Default.PVP.cs +++ b/BasicRotations/PVPRotations/Tank/DRK_Default.PVP.cs @@ -62,7 +62,7 @@ private bool TryPurify(out IAction? action) { if (status.Value && Player.HasStatus(true, (StatusID)status.Key)) { - return PurifyPvP.CanUse(out action, skipClippingCheck: true); + return PurifyPvP.CanUse(out action); } } diff --git a/BasicRotations/PVPRotations/Tank/GNB_Default.PVP.cs b/BasicRotations/PVPRotations/Tank/GNB_Default.PVP.cs index 69b243b..b8a9352 100644 --- a/BasicRotations/PVPRotations/Tank/GNB_Default.PVP.cs +++ b/BasicRotations/PVPRotations/Tank/GNB_Default.PVP.cs @@ -62,7 +62,7 @@ private bool TryPurify(out IAction? action) { if (status.Value && Player.HasStatus(true, (StatusID)status.Key)) { - return PurifyPvP.CanUse(out action, skipClippingCheck: true); + return PurifyPvP.CanUse(out action); } } diff --git a/BasicRotations/PVPRotations/Tank/PLD_Default.PVP.cs b/BasicRotations/PVPRotations/Tank/PLD_Default.PVP.cs index aba969d..74a1c39 100644 --- a/BasicRotations/PVPRotations/Tank/PLD_Default.PVP.cs +++ b/BasicRotations/PVPRotations/Tank/PLD_Default.PVP.cs @@ -62,7 +62,7 @@ private bool TryPurify(out IAction? action) { if (status.Value && Player.HasStatus(true, (StatusID)status.Key)) { - return PurifyPvP.CanUse(out action, skipClippingCheck: true); + return PurifyPvP.CanUse(out action); } } diff --git a/BasicRotations/PVPRotations/Tank/WAR_Default.PVP.cs b/BasicRotations/PVPRotations/Tank/WAR_Default.PVP.cs index 1412ec2..1289321 100644 --- a/BasicRotations/PVPRotations/Tank/WAR_Default.PVP.cs +++ b/BasicRotations/PVPRotations/Tank/WAR_Default.PVP.cs @@ -62,7 +62,7 @@ private bool TryPurify(out IAction? action) { if (status.Value && Player.HasStatus(true, (StatusID)status.Key)) { - return PurifyPvP.CanUse(out action, skipClippingCheck: true); + return PurifyPvP.CanUse(out action); } } diff --git a/BasicRotations/Ranged/BRD_Default.cs b/BasicRotations/Ranged/BRD_Default.cs index 1f8010a..0ead977 100644 --- a/BasicRotations/Ranged/BRD_Default.cs +++ b/BasicRotations/Ranged/BRD_Default.cs @@ -96,7 +96,7 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act) if (RadiantFinalePvE.EnoughLevel && RadiantFinalePvE.Cooldown.IsCoolingDown && BattleVoicePvE.EnoughLevel && !BattleVoicePvE.Cooldown.IsCoolingDown) return false; - if (TheWanderersMinuetPvE.CanUse(out act, onLastAbility: true)) + if (TheWanderersMinuetPvE.CanUse(out act)) { if (SongEndAfter(ARMYRemainTime) && (Song != Song.NONE || Player.HasStatus(true, StatusID.ArmysEthos))) return true; } diff --git a/BasicRotations/Ranged/DNC_Default.cs b/BasicRotations/Ranged/DNC_Default.cs index 94c20ff..2b93e02 100644 --- a/BasicRotations/Ranged/DNC_Default.cs +++ b/BasicRotations/Ranged/DNC_Default.cs @@ -36,19 +36,19 @@ protected override bool EmergencyAbility(IAction nextGCD, out IAction? act) { if (Player.HasStatus(true, StatusID.TechnicalFinish)) { - if (DevilmentPvE.CanUse(out act, skipClippingCheck: true)) return true; + if (DevilmentPvE.CanUse(out act)) return true; } // Special handling if the last action was Quadruple Technical Finish and level requirement is met if (IsLastGCD(ActionID.QuadrupleTechnicalFinishPvE) && TechnicalStepPvE.EnoughLevel) { // Attempt to use Devilment ignoring clipping checks - if (DevilmentPvE.CanUse(out act, skipClippingCheck: true)) return true; + if (DevilmentPvE.CanUse(out act)) return true; } // Similar handling for Double Standard Finish when level requirement is not met else if (IsLastGCD(ActionID.DoubleStandardFinishPvE) && !TechnicalStepPvE.EnoughLevel) { - if (DevilmentPvE.CanUse(out act, skipClippingCheck: true)) return true; + if (DevilmentPvE.CanUse(out act)) return true; } // If currently dancing, defer to the base class emergency handling diff --git a/BasicRotations/Ranged/MCH_Default.cs b/BasicRotations/Ranged/MCH_Default.cs index 015ee2f..23f4b65 100644 --- a/BasicRotations/Ranged/MCH_Default.cs +++ b/BasicRotations/Ranged/MCH_Default.cs @@ -53,7 +53,7 @@ protected override bool EmergencyAbility(IAction nextGCD, out IAction? act) // Attempt to use Reassemble if it's ready if (isReassembleUsable) { - if (ReassemblePvE.CanUse(out act, onLastAbility: true, skipClippingCheck: true, skipComboCheck: true, usedUp: true)) return true; + if (ReassemblePvE.CanUse(out act, skipComboCheck: true, usedUp: true)) return true; } // Use Ricochet @@ -89,7 +89,7 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act) // If Wildfire is active, use Hypercharge.....Period if (Player.HasStatus(true, StatusID.Wildfire_1946)) { - return HyperchargePvE.CanUse(out act, skipClippingCheck: true); + return HyperchargePvE.CanUse(out act); } // Burst if (IsBurst) @@ -98,7 +98,7 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act) { if ((IsLastAbility(false, HyperchargePvE) || Heat >= 50) && !CombatElapsedLess(10) && CanUseHyperchargePvE(out _) - && !LowLevelHyperCheck && WildfirePvE.CanUse(out act, onLastAbility: true)) return true; + && !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) @@ -142,7 +142,7 @@ protected override bool GeneralGCD(out IAction? act) } // 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) && ChainSawPvE.CanUse(out act)) return true; // AoE actions: ChainSaw and SpreadShot based on their usability. if (SpreadShotPvE.CanUse(out _)) diff --git a/BasicRotations/Ranged/MCH_zBeta.cs b/BasicRotations/Ranged/MCH_zBeta.cs deleted file mode 100644 index 450e15c..0000000 --- a/BasicRotations/Ranged/MCH_zBeta.cs +++ /dev/null @@ -1,202 +0,0 @@ -namespace DefaultRotations.Ranged; - -[Rotation("Beta", CombatType.PvE, GameVersion = "6.58", Description = "Additonal contributions to this rotation thanks to Toshi!")] -[SourceCode(Path = "main/DefaultRotations/Ranged/MCH_zBeta.cs")] -[Api(1)] -public sealed class MCH_zBeta : 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; - #endregion - - #region Countdown logic - // Defines logic for actions to take during the countdown before combat starts. - protected override IAction? CountDownAction(float remainTime) - { - if (remainTime < 5) - { - if (ReassemblePvE.CanUse(out var act)) return act; - } - if (remainTime < 2) - { - if (UseBurstMedicine(out var act)) return act; - } - return base.CountDownAction(remainTime); - } - #endregion - - #region oGCD Logic - // Determines emergency actions to take based on the next planned GCD action. - protected override bool EmergencyAbility(IAction nextGCD, out IAction? act) - { - // Reassemble Logic - // Check next GCD action and conditions for Reassemble. - 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))); - - // Keeps Ricochet and Gauss cannon Even - bool isRicochetMore = RicochetPvE.EnoughLevel && GaussRoundPvE.Cooldown.CurrentCharges <= RicochetPvE.Cooldown.CurrentCharges; - bool isGaussMore = !RicochetPvE.EnoughLevel || GaussRoundPvE.Cooldown.CurrentCharges > RicochetPvE.Cooldown.CurrentCharges; - - // Attempt to use Reassemble if it's ready - if (isReassembleUsable) - { - if (ReassemblePvE.CanUse(out act, onLastAbility: true, skipClippingCheck: true, skipComboCheck: true, usedUp: true)) return true; - } - - // Use Ricochet - if (isRicochetMore && ((!IsLastAction(true, new[] { GaussRoundPvE, RicochetPvE }) && IsLastGCD(true, HeatBlastPvE)) || !IsLastGCD(true, HeatBlastPvE))) - { - if (RicochetPvE.CanUse(out act, skipAoeCheck: true, usedUp: true)) - return true; - } - - // Use Gauss - if (isGaussMore && ((!IsLastAction(true, new[] { GaussRoundPvE, RicochetPvE }) && IsLastGCD(true, HeatBlastPvE)) || !IsLastGCD(true, HeatBlastPvE))) - { - if (GaussRoundPvE.CanUse(out act, usedUp: true)) - return true; - } - return base.EmergencyAbility(nextGCD, out 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) - { - // Define conditions under which the Rook Autoturret/Queen can be used. - bool NoQueenLogic = SkipQueenLogic; - bool OpenerQueen = IsLastGCD(true, ChainSawPvE); - bool CombatTimeQueen = CombatElapsedLess(60f) && !CombatElapsedLess(45f); - bool WildfireCooldownQueen = WildfirePvE.Cooldown.IsCoolingDown && WildfirePvE.Cooldown.ElapsedAfter(105f) && Battery == 100 && - (nextGCD.IsTheSameTo(true, AirAnchorPvE) || nextGCD.IsTheSameTo(true, CleanShotPvE)) || nextGCD.IsTheSameTo(true, HeatedCleanShotPvE) || nextGCD.IsTheSameTo(true, ChainSawPvE); - bool BatteryCheckQueen = Battery >= 90 && !WildfirePvE.Cooldown.ElapsedAfter(70f); - bool LastGCDCheckQueen = Battery >= 80 && !WildfirePvE.Cooldown.ElapsedAfter(77.5f) && IsLastGCD(true, AirAnchorPvE); - // Check for not burning Hypercharge below level 52 on AOE - bool LowLevelHyperCheck = !AutoCrossbowPvE.EnoughLevel && SpreadShotPvE.CanUse(out _); - - // Burst - if (IsBurst) - { - // Tincture Use - if (UseBurstMedicine(out act)) return true; - // Wildfire Check - if ((CombatElapsedLess(20f) && nextGCD.IsTheSameTo(true, ChainSawPvE)) || (IsLastAbility(false, HyperchargePvE) || Heat >= 50) && /*!CombatElapsedLess(10) &&*/ CanUseHyperchargePvE(out _) - && !LowLevelHyperCheck) - { - if (WildfirePvE.CanUse(out act, onLastAbility: true)) return true; - } - } - - // Rook Autoturret/Queen Logic - if (NoQueenLogic || OpenerQueen || CombatTimeQueen || WildfireCooldownQueen || BatteryCheckQueen || LastGCDCheckQueen) - { - if (RookAutoturretPvE.CanUse(out act)) return true; - } - - // If Wildfire is active, use Hypercharge.....Period - if (Player.HasStatus(true, StatusID.Wildfire_1946)) - { - return HyperchargePvE.CanUse(out act, skipClippingCheck: 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; - } - - // Use Barrel Stabilizer on CD if won't cap - if (BarrelStabilizerPvE.CanUse(out act)) return true; - - return base.AttackAbility(nextGCD, out act); - } - #endregion - - #region GCD Logic - // Defines the general logic for determining which global cooldown (GCD) action to take. - protected override bool GeneralGCD(out IAction? act) - { - // Checks and executes AutoCrossbow or HeatBlast if conditions are met (overheated state). - if (AutoCrossbowPvE.CanUse(out act)) return true; - if (HeatBlastPvE.CanUse(out act)) return true; - - // Executes Bioblaster, and then checks for AirAnchor or HotShot, and Drill based on availability and conditions. - if (BioblasterPvE.CanUse(out act)) return true; - // Check if SpreadShot cannot be used - if (!SpreadShotPvE.CanUse(out _)) - { - // Check if AirAnchor can be used - if (AirAnchorPvE.CanUse(out act)) return true; - - // If not at the required level for AirAnchor and HotShot can be used - if (!AirAnchorPvE.EnoughLevel && HotShotPvE.CanUse(out act)) return true; - - // Check if Drill can be used - if (DrillPvE.CanUse(out act)) 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; - - // AoE actions: ChainSaw and SpreadShot based on their usability. - if (SpreadShotPvE.CanUse(out _)) - { - if (ChainSawPvE.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; - if (SplitShotPvE.CanUse(out act)) return true; - - return base.GeneralGCD(out act); - } - #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. - // Logic for Hypercharge - private bool CanUseHyperchargePvE(out IAction? act) - { - float REST_TIME = 6f; - if - //Cannot AOE - ((!SpreadShotPvE.CanUse(out _)) - && - // AirAnchor Enough Level % AirAnchor - ((AirAnchorPvE.EnoughLevel && AirAnchorPvE.Cooldown.WillHaveOneCharge(REST_TIME)) - || - // HotShot Charge Detection - (!AirAnchorPvE.EnoughLevel && HotShotPvE.EnoughLevel && HotShotPvE.Cooldown.WillHaveOneCharge(REST_TIME)) - || - // Drill Charge Detection - (DrillPvE.EnoughLevel && DrillPvE.Cooldown.WillHaveOneCharge(REST_TIME)) - || - // Chainsaw Charge Detection - (ChainSawPvE.EnoughLevel && ChainSawPvE.Cooldown.WillHaveOneCharge(REST_TIME)))) - { - act = null; - return false; - } - else - { - // Use Hypercharge - return HyperchargePvE.CanUse(out act); - } - } - #endregion -} \ No newline at end of file diff --git a/BasicRotations/Tank/DRK_Default.cs b/BasicRotations/Tank/DRK_Default.cs index ac8a119..ca30802 100644 --- a/BasicRotations/Tank/DRK_Default.cs +++ b/BasicRotations/Tank/DRK_Default.cs @@ -69,11 +69,11 @@ protected override bool DefenseSingleAbility(IAction nextGCD, out IAction? act) if (Player.HasStatus(true, StatusID.BlackestNight)) return false; //10 - if (OblationPvE.CanUse(out act, usedUp: true, onLastAbility: true)) return true; + if (OblationPvE.CanUse(out act, usedUp: true)) return true; - if (ReprisalPvE.CanUse(out act, skipAoeCheck: true, onLastAbility: true)) return true; + if (ReprisalPvE.CanUse(out act, skipAoeCheck: true)) return true; - if (TheBlackestNightPvE.CanUse(out act, onLastAbility: true)) return true; + if (TheBlackestNightPvE.CanUse(out act)) return true; //30 if ((!RampartPvE.Cooldown.IsCoolingDown || RampartPvE.Cooldown.ElapsedAfter(60)) && ShadowWallPvE.CanUse(out act)) return true; @@ -100,10 +100,10 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act) && BloodWeaponPvE.CanUse(out act)) return true; if (!DeliriumPvE.EnoughLevel) { - if (BloodWeaponPvE.CanUse(out act, skipClippingCheck: true)) return true; + if (BloodWeaponPvE.CanUse(out act)) return true; } if (LivingShadowPvE.CanUse(out act, skipAoeCheck: true)) return true; - if (BloodspillerPvE.CanUse(out act, skipClippingCheck: true, skipComboCheck: true)) return true; + if (BloodspillerPvE.CanUse(out act, skipComboCheck: true)) return true; } if (CombatLess) @@ -144,8 +144,8 @@ protected override bool GeneralGCD(out IAction? act) //Use Blood if (UseBlood) { - if (QuietusPvE.CanUse(out act, skipClippingCheck: true, skipComboCheck: true)) return true; - if (BloodspillerPvE.CanUse(out act, skipClippingCheck: true, skipComboCheck: true)) return true; + if (QuietusPvE.CanUse(out act, skipComboCheck: true)) return true; + if (BloodspillerPvE.CanUse(out act, skipComboCheck: true)) return true; } //AOE diff --git a/BasicRotations/Tank/GNB_Default.cs b/BasicRotations/Tank/GNB_Default.cs index c33be7d..77b0a6f 100644 --- a/BasicRotations/Tank/GNB_Default.cs +++ b/BasicRotations/Tank/GNB_Default.cs @@ -42,9 +42,9 @@ protected override bool DefenseAreaAbility(IAction nextGCD, out IAction? act) protected override bool DefenseSingleAbility(IAction nextGCD, out IAction? act) { //10 - if (CamouflagePvE.CanUse(out act, onLastAbility: true)) return true; + if (CamouflagePvE.CanUse(out act)) return true; //15 - if (HeartOfStonePvE.CanUse(out act, onLastAbility: true)) return true; + if (HeartOfStonePvE.CanUse(out act)) return true; //30 if ((!RampartPvE.Cooldown.IsCoolingDown || RampartPvE.Cooldown.ElapsedAfter(60)) && NebulaPvE.CanUse(out act)) return true; @@ -59,14 +59,14 @@ protected override bool DefenseSingleAbility(IAction nextGCD, out IAction? act) [RotationDesc(ActionID.AuroraPvE)] protected override bool HealSingleAbility(IAction nextGCD, out IAction? act) { - if (AuroraPvE.CanUse(out act, usedUp: true, onLastAbility: true)) return true; + if (AuroraPvE.CanUse(out act, usedUp: true)) return true; return base.HealSingleAbility(nextGCD, out act); } protected override bool AttackAbility(IAction nextGCD, out IAction? act) { //if (IsBurst && CanUseNoMercy(out act)) return true; - if (!CombatElapsedLessGCD(5) && NoMercyPvE.CanUse(out act, skipAoeCheck: true, skipClippingCheck: true)) return true; + if (!CombatElapsedLessGCD(5) && NoMercyPvE.CanUse(out act, skipAoeCheck: true)) return true; if (JugularRipPvE.CanUse(out act)) return true; diff --git a/BasicRotations/Tank/PLD_Default.cs b/BasicRotations/Tank/PLD_Default.cs index 9017507..5b5722f 100644 --- a/BasicRotations/Tank/PLD_Default.cs +++ b/BasicRotations/Tank/PLD_Default.cs @@ -37,7 +37,7 @@ protected override bool EmergencyAbility(IAction nextGCD, out IAction? act) if (HasTankStance && OathGauge == 100 && UseOath(out act)) return true; } - if (Player.HasStatus(true, StatusID.Cover) && HallowedGroundPvE.CanUse(out act, onLastAbility: true)) return true; + if (Player.HasStatus(true, StatusID.Cover) && HallowedGroundPvE.CanUse(out act)) return true; if ((Player.HasStatus(true, StatusID.Rampart) || Player.HasStatus(true, StatusID.Sentinel)) && InterventionPvE.CanUse(out act) && InterventionPvE.Target.Target?.GetHealthRatio() < 0.6) return true; @@ -54,7 +54,7 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act) if (InCombat) { if (UseBurstMedicine(out act)) return true; - if (IsBurst && !CombatElapsedLess(5) && FightOrFlightPvE.CanUse(out act, onLastAbility: true)) return true; + if (IsBurst && !CombatElapsedLess(5) && FightOrFlightPvE.CanUse(out act)) return true; } if (CombatElapsedLess(8)) return false; diff --git a/BasicRotations/Tank/WAR_Default.cs b/BasicRotations/Tank/WAR_Default.cs index d45038b..c85c072 100644 --- a/BasicRotations/Tank/WAR_Default.cs +++ b/BasicRotations/Tank/WAR_Default.cs @@ -99,13 +99,13 @@ protected override bool DefenseSingleAbility(IAction nextGCD, out IAction? act) if (Player.HasStatus(true, StatusID.Holmgang_409) && Player.GetHealthRatio() < 0.3f) return false; // If Raw Intuition can be used and there are more than 2 hostiles in range or SoloIntuition Config Option is checked, use it. - if (RawIntuitionPvE.CanUse(out act, onLastAbility: true) && (RawSingleTargets || NumberOfHostilesInRange > 2)) return true; + if (RawIntuitionPvE.CanUse(out act) && (RawSingleTargets || NumberOfHostilesInRange > 2)) return true; // If the player's Bloodwhetting or Raw Intuition status will not end in the next GCD, don't use any defensive abilities. if (!Player.WillStatusEndGCD(0, 0, true, StatusID.Bloodwhetting, StatusID.RawIntuition)) return false; // If Reprisal can be used, use it. - if (ReprisalPvE.CanUse(out act, skipAoeCheck: true, onLastAbility: true)) return true; + if (ReprisalPvE.CanUse(out act, skipAoeCheck: true)) return true; // If Rampart is not cooling down or has been cooling down for more than 60 seconds, and Vengeance can be used, use Vengeance. if ((!RampartPvE.Cooldown.IsCoolingDown || RampartPvE.Cooldown.ElapsedAfter(60)) && VengeancePvE.CanUse(out act)) return true;