From 3529fca07d4ded3d8d0e8008d734bc2fa58cf6fe Mon Sep 17 00:00:00 2001 From: Karaha-Baruha Date: Tue, 24 Sep 2024 19:09:58 -0500 Subject: [PATCH] improvements to both MCH betas --- BasicRotations/Ranged/zMCH_Beta.cs | 19 ++++++++----------- BasicRotations/Ranged/zMCH_Beta_2.cs | 21 +++++++++++---------- 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/BasicRotations/Ranged/zMCH_Beta.cs b/BasicRotations/Ranged/zMCH_Beta.cs index 1832bca..310b582 100644 --- a/BasicRotations/Ranged/zMCH_Beta.cs +++ b/BasicRotations/Ranged/zMCH_Beta.cs @@ -71,7 +71,7 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act) // Rook Autoturret/Queen Logic if (CanUseQueenMeow(out act, nextGCD)) return true; - if (BSPrio && BarrelStabilizerPvE.CanUse(out act)) return true; + if (IsBurst && BSPrio && BarrelStabilizerPvE.CanUse(out act)) return true; // Burst if (IsBurst) @@ -88,10 +88,7 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act) if (isRicochetMore && RicochetPvE.CanUse(out act, skipAoeCheck: true, usedUp: true)) return true; if (GaussRoundPvE.CanUse(out act, usedUp: true, skipAoeCheck: true)) return true; - if (IsBurst) - { - if (BarrelStabilizerPvE.CanUse(out act)) return true; - } + if (IsBurst && BarrelStabilizerPvE.CanUse(out act)) return true; return base.AttackAbility(nextGCD, out act); } @@ -165,7 +162,7 @@ private bool ToolChargeSoon(out IAction? act) (!AirAnchorPvE.EnoughLevel && HotShotPvE.EnoughLevel && HotShotPvE.Cooldown.WillHaveOneCharge(REST_TIME)) || // Drill Charge Detection - (DrillPvE.EnoughLevel && (!DrillPvE.Cooldown.IsCoolingDown)) + (DrillPvE.EnoughLevel && (!DrillPvE.Cooldown.WillHaveXCharges(DrillPvE.Cooldown.MaxCharges, REST_TIME))) || // Chainsaw Charge Detection (ChainSawPvE.EnoughLevel && ChainSawPvE.Cooldown.WillHaveOneCharge(REST_TIME)))) @@ -199,12 +196,12 @@ private bool CanUseQueenMeow(out IAction? act, IAction nextGCD) bool QueenFifteen = Battery >= 100 && !CombatElapsedLess(590f) && CombatElapsedLess(610f); if ( - (NewQueenLogic && - (WildfirePvE.Cooldown.WillHaveOneChargeGCD(1) + (NewQueenLogic && + (WildfirePvE.Cooldown.WillHaveOneChargeGCD(4) || !WildfirePvE.Cooldown.ElapsedAfter(10) - || nextGCD.IsTheSameTo(true, CleanShotPvE) && Battery == 100) - || (nextGCD.IsTheSameTo(true, AirAnchorPvE, ChainSawPvE, ExcavatorPvE) && (Battery == 90 || Battery == 100))) - || !NewQueenLogic && (QueenOne || QueenTwo || QueenThree || QueenFour || QueenFive || QueenSix || QueenSeven || QueenEight || QueenNine || QueenTen || QueenEleven || QueenTwelve || QueenThirteen || QueenFourteen || QueenFifteen)) + || (nextGCD.IsTheSameTo(true, CleanShotPvE) && Battery == 100) + || (nextGCD.IsTheSameTo(true, HotShotPvE, AirAnchorPvE, ChainSawPvE, ExcavatorPvE) && (Battery == 90 || Battery == 100))) + || !NewQueenLogic && (QueenOne || QueenTwo || QueenThree || QueenFour || QueenFive || QueenSix || QueenSeven || QueenEight || QueenNine || QueenTen || QueenEleven || QueenTwelve || QueenThirteen || QueenFourteen || QueenFifteen))) { if (RookAutoturretPvE.CanUse(out act)) return true; } diff --git a/BasicRotations/Ranged/zMCH_Beta_2.cs b/BasicRotations/Ranged/zMCH_Beta_2.cs index 733889e..395a1fe 100644 --- a/BasicRotations/Ranged/zMCH_Beta_2.cs +++ b/BasicRotations/Ranged/zMCH_Beta_2.cs @@ -81,7 +81,7 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act) if (!RicochetPvE.Cooldown.IsCoolingDown && RicochetPvE.CanUse(out act, skipAoeCheck: true)) return true; if (!GaussRoundPvE.Cooldown.IsCoolingDown && GaussRoundPvE.CanUse(out act, skipAoeCheck: true)) return true; - if (IsLastGCD(true, DrillPvE) && BarrelStabilizerPvE.CanUse(out act)) return true; + if (IsBurst && IsLastGCD(true, DrillPvE) && BarrelStabilizerPvE.CanUse(out act)) return true; // Rook Autoturret/Queen Logic if (CanUseQueenMeow(out act, nextGCD)) return true; @@ -94,7 +94,7 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act) && ToolChargeSoon(out act)) return true; // Use Ricochet and Gauss if have pooled charges or is burst window - if (isRicochetMore) + if (IsRicochetMore) { if ((IsLastGCD(true, BlazingShotPvE, HeatBlastPvE) || RicochetPvE.Cooldown.RecastTimeElapsed >= 45 @@ -185,7 +185,7 @@ private bool ToolChargeSoon(out IAction? act) (!AirAnchorPvE.EnoughLevel && HotShotPvE.EnoughLevel && HotShotPvE.Cooldown.WillHaveOneCharge(HYPERCHARGE_DURATION)) || // Drill Charge Detection - (DrillPvE.EnoughLevel && (!DrillPvE.Cooldown.IsCoolingDown)) + (DrillPvE.EnoughLevel && !DrillPvE.Cooldown.WillHaveXCharges(DrillPvE.Cooldown.MaxCharges, HYPERCHARGE_DURATION)) || // Chainsaw Charge Detection (ChainSawPvE.EnoughLevel && ChainSawPvE.Cooldown.WillHaveOneCharge(HYPERCHARGE_DURATION)))) @@ -221,15 +221,16 @@ private bool CanUseQueenMeow(out IAction? act, IAction nextGCD) { if (RookAutoturretPvE.CanUse(out act)) return true; } - else if ( + // take over with normal logic after queen timings run out in long fights + else if ((!UseBalanceQueenTimings || !CombatElapsedLess(610f)) && // ASAP in opener - (CombatElapsedLessGCD(10)) - // In first 10 seconds of 2 minute window - || (!AirAnchorPvE.Cooldown.ElapsedAfter(10) && (Player.HasStatus(true, StatusID.FullMetalMachinist) || BarrelStabilizerPvE.Cooldown.WillHaveOneChargeGCD(4))) + (CombatElapsedLessGCD(10) + // In first ~10 seconds of 2 minute window + || (!AirAnchorPvE.Cooldown.ElapsedAfter(10) && (BarrelStabilizerPvE.Cooldown.WillHaveOneChargeGCD(4) || !BarrelStabilizerPvE.Cooldown.ElapsedAfter(5)) // or if about to overcap - || nextGCD.IsTheSameTo(true, CleanShotPvE) && Battery == 100 + || (nextGCD.IsTheSameTo(true, CleanShotPvE) && Battery == 100) || (nextGCD.IsTheSameTo(true, AirAnchorPvE, ChainSawPvE, ExcavatorPvE) && (Battery == 90 || Battery == 100)) - ) + ))) { if (RookAutoturretPvE.CanUse(out act)) return true; } @@ -241,6 +242,6 @@ private bool CanUseQueenMeow(out IAction? act, IAction nextGCD) private bool LowLevelHyperCheck => !AutoCrossbowPvE.EnoughLevel && SpreadShotPvE.CanUse(out _); // Keeps Ricochet and Gauss Cannon Even - private bool isRicochetMore => RicochetPvE.EnoughLevel && GaussRoundPvE.Cooldown.RecastTimeElapsed <= RicochetPvE.Cooldown.RecastTimeElapsed; + private bool IsRicochetMore => RicochetPvE.EnoughLevel && GaussRoundPvE.Cooldown.RecastTimeElapsed <= RicochetPvE.Cooldown.RecastTimeElapsed; #endregion } \ No newline at end of file