Skip to content
This repository has been archived by the owner on Nov 23, 2024. It is now read-only.

Commit

Permalink
Merge pull request #254 from Karaha-Baruha/main
Browse files Browse the repository at this point in the history
MCH beta pooling relaxed, add option to hold HC for combo in beta 1
  • Loading branch information
LTS-FFXIV authored Sep 24, 2024
2 parents ba1d5ad + d4d7233 commit 6ba8de7
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 13 deletions.
19 changes: 10 additions & 9 deletions BasicRotations/Ranged/zMCH_Beta.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ public sealed class zMCH_Beta : MachinistRotation

[RotationConfig(CombatType.PvE, Name = "Delay Drill for combo GCD if have one charge and about to break combo")]
private bool HoldDrillForCombo { get; set; } = true;

[RotationConfig(CombatType.PvE, Name = "Delay Hypercharge for combo GCD if about to break combo")]
private bool HoldHCForCombo { get; set; } = true;
#endregion

#region Countdown logic
Expand Down Expand Up @@ -53,7 +56,7 @@ protected override bool EmergencyAbility(IAction nextGCD, out IAction? act)
protected override bool AttackAbility(IAction nextGCD, out IAction? act)
{
// Keeps Ricochet and Gauss cannon Even
bool isRicochetMore = RicochetPvE.EnoughLevel && GaussRoundPvE.Cooldown.CurrentCharges <= RicochetPvE.Cooldown.CurrentCharges;
bool isRicochetMore = RicochetPvE.EnoughLevel && GaussRoundPvE.Cooldown.RecastTimeElapsed <= RicochetPvE.Cooldown.RecastTimeElapsed;

// Start Ricochet/Gauss cooldowns rolling
if (!RicochetPvE.Cooldown.IsCoolingDown && RicochetPvE.CanUse(out act, skipAoeCheck: true)) return true;
Expand All @@ -75,7 +78,7 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act)
{
if ((IsLastAbility(false, HyperchargePvE) || Heat >= 50 || Player.HasStatus(true, StatusID.Hypercharged)) && ToolChargeSoon(out _) && !LowLevelHyperCheck && WildfirePvE.CanUse(out act)) return true;
}
// Use Hypercharge if if wildfire will not be up in 30 seconds or if you hit 100 heat
// Use Hypercharge if wildfire will not be up in 30 seconds or if you hit 100 heat
if (!LowLevelHyperCheck && !Player.HasStatus(true, StatusID.Reassembled) && (!WildfirePvE.Cooldown.WillHaveOneCharge(30) || (Heat == 100)))
{
if (ToolChargeSoon(out act)) return true;
Expand All @@ -84,16 +87,12 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act)
// Use Ricochet and Gauss if have pooled charges or is burst window
if (isRicochetMore)
{
if ((IsLastGCD(true, BlazingShotPvE, HeatBlastPvE)
|| RicochetPvE.Cooldown.CurrentCharges >= RicochetPvE.Cooldown.MaxCharges - 1
|| !WildfirePvE.Cooldown.ElapsedAfter(20))
if (IsLastGCD(true, BlazingShotPvE, HeatBlastPvE)
&& RicochetPvE.CanUse(out act, skipAoeCheck: true, usedUp: true))
return true;
}

if ((IsLastGCD(true, BlazingShotPvE, HeatBlastPvE)
|| GaussRoundPvE.Cooldown.CurrentCharges >= GaussRoundPvE.Cooldown.MaxCharges - 1
|| !WildfirePvE.Cooldown.ElapsedAfter(20))
if (IsLastGCD(true, BlazingShotPvE, HeatBlastPvE)
&& GaussRoundPvE.CanUse(out act, usedUp: true, skipAoeCheck: true))
return true;

Expand Down Expand Up @@ -177,7 +176,9 @@ private bool ToolChargeSoon(out IAction? act)
(DrillPvE.EnoughLevel && (!DrillPvE.Cooldown.IsCoolingDown))
||
// Chainsaw Charge Detection
(ChainSawPvE.EnoughLevel && ChainSawPvE.Cooldown.WillHaveOneCharge(REST_TIME))))
(ChainSawPvE.EnoughLevel && ChainSawPvE.Cooldown.WillHaveOneCharge(REST_TIME)))
||
(!HoldHCForCombo || !(LiveComboTime <= REST_TIME)))
{
act = null;
return false;
Expand Down
8 changes: 4 additions & 4 deletions BasicRotations/Ranged/zMCH_Beta_2.cs
Original file line number Diff line number Diff line change
Expand Up @@ -97,15 +97,15 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act)
if (isRicochetMore)
{
if ((IsLastGCD(true, BlazingShotPvE, HeatBlastPvE)
|| RicochetPvE.Cooldown.RecastTimeElapsed >= 55
|| !WildfirePvE.Cooldown.ElapsedAfter(20))
|| RicochetPvE.Cooldown.RecastTimeElapsed >= 45
|| !BarrelStabilizerPvE.Cooldown.ElapsedAfter(20))
&& RicochetPvE.CanUse(out act, skipAoeCheck: true, usedUp: true))
return true;
}

if ((IsLastGCD(true, BlazingShotPvE, HeatBlastPvE)
|| GaussRoundPvE.Cooldown.RecastTimeElapsed >= 55
|| !WildfirePvE.Cooldown.ElapsedAfter(20))
|| GaussRoundPvE.Cooldown.RecastTimeElapsed >= 45
|| !BarrelStabilizerPvE.Cooldown.ElapsedAfter(20))
&& GaussRoundPvE.CanUse(out act, usedUp: true, skipAoeCheck: true))
return true;

Expand Down

0 comments on commit 6ba8de7

Please sign in to comment.