diff --git a/BasicRotations/Magical/BLM_Beta.cs b/BasicRotations/Magical/BLM_Beta.cs index e34a0cf..a085fc3 100644 --- a/BasicRotations/Magical/BLM_Beta.cs +++ b/BasicRotations/Magical/BLM_Beta.cs @@ -170,8 +170,6 @@ private bool MaintainIce(out IAction? act) private bool DoIce(out IAction? act) { - act = null; - if (IsLastAction(ActionID.UmbralSoulPvE, ActionID.TransposePvE) && IsParadoxActive && BlizzardPvE.CanUse(out act)) return true; @@ -256,7 +254,6 @@ private bool MaintainFire(out IAction? act) private bool DoFire(out IAction? act) { - act = null; if (UsePolyglot(out act)) return true; // Add thunder only at combat start. @@ -293,7 +290,6 @@ private bool DoFire(out IAction? act) private bool UseInstanceSpell(out IAction? act) { - act = null; if (UsePolyglot(out act)) return true; if (HasThunder && AddThunder(out act, 1)) return true; if (UsePolyglot(out act, 0)) return true; @@ -319,7 +315,6 @@ private bool AddThunder(out IAction? act, uint gcdCount = 3) private bool AddElementBase(out IAction? act) { - act = null; if (CurrentMp >= 7200) { if (FireIiPvE.CanUse(out act)) return true; diff --git a/BasicRotations/Ranged/BRD_Beta.cs b/BasicRotations/Ranged/BRD_Beta.cs index f9342e8..358869f 100644 --- a/BasicRotations/Ranged/BRD_Beta.cs +++ b/BasicRotations/Ranged/BRD_Beta.cs @@ -111,9 +111,7 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act) if (Repertoire == 3) return true; - // if (Repertoire == 2 && EmpyrealArrowPvE.Cooldown.WillHaveOneChargeGCD(1) && NextAbilityToNextGCD < PitchPerfectPvE.AnimationLockTime + Ping) return true; - - if (Repertoire == 2 && EmpyrealArrowPvE.Cooldown.WillHaveOneChargeGCD()) return true; // && NextAbilityToNextGCD > PitchPerfectPvE.AnimationLockTime + Ping) return true; + if (Repertoire == 2 && EmpyrealArrowPvE.Cooldown.WillHaveOneChargeGCD()) return true; } if (MagesBalladPvE.CanUse(out act)) @@ -137,7 +135,8 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act) if (RagingStrikesPvE.Cooldown.IsCoolingDown && !Player.HasStatus(true, StatusID.RagingStrikes)) return true; } - if (BloodletterLogic(out act, Player.HasStatus(true, StatusID.RagingStrikes))) return true; + + if (BloodletterLogic(out act)) return true; return base.AttackAbility(nextGCD, out act); } @@ -192,15 +191,28 @@ private bool CanUseApexArrow(out IAction act) return false; } - private bool BloodletterLogic(out IAction? act, bool burst) + private bool BloodletterLogic(out IAction? act) { - act = null; - if (!burst && RagingStrikesPvE.Cooldown.WillHaveOneCharge(30) && !(BloodletterPvE.Cooldown.CurrentCharges >= 3)) return false; + bool isBattleVoice = BattleVoicePvE.CanUse(out _); + bool isRadiantFinale = RadiantFinalePvE.CanUse(out _); + bool isRagingNow = Player.HasStatus(true, StatusID.RagingStrikes); + bool isRagingSoon = RagingStrikesPvE.Cooldown.WillHaveOneCharge(30); + bool isBloodTrait = EnhancedBloodletterTrait.EnoughLevel && BloodletterPvE.Cooldown.CurrentCharges < 3; + bool isNoBloodTrait = !EnhancedBloodletterTrait.EnoughLevel && BloodletterPvE.Cooldown.CurrentCharges < 2; + bool isEmpyrealArrowCD = EmpyrealArrowPvE.Cooldown.IsCoolingDown; + bool isEmpyrealSoon = !EmpyrealArrowPvE.Cooldown.WillHaveOneChargeGCD(); + bool isEmpyrealLevel = !EmpyrealArrowPvE.EnoughLevel; + bool isRepertoire = Repertoire != 3; + + if (RainOfDeathPvE.CanUse(out act, usedUp: true)) + { + if (isEmpyrealArrowCD || isEmpyrealSoon || isEmpyrealLevel || isRepertoire) return true; + } - if (burst && EmpyrealArrowPvE.Cooldown.IsCoolingDown || !EmpyrealArrowPvE.Cooldown.WillHaveOneChargeGCD() || Repertoire != 3 || !EmpyrealArrowPvE.EnoughLevel) + if (BloodletterPvE.CanUse(out act, usedUp: true)) { - if (RainOfDeathPvE.CanUse(out act, usedUp: true)) return true; - if (BloodletterPvE.CanUse(out act, usedUp: true)) return true; + if (isBattleVoice || isRadiantFinale || (isRagingSoon && (isBloodTrait || isNoBloodTrait))) return false; + if (isEmpyrealArrowCD || isEmpyrealSoon || isEmpyrealLevel || isRepertoire) return true; } return false; }