diff --git a/WrathCombo/Combos/PvE/BRD/BRD.cs b/WrathCombo/Combos/PvE/BRD/BRD.cs index ef801d5d1..1a48ddce9 100644 --- a/WrathCombo/Combos/PvE/BRD/BRD.cs +++ b/WrathCombo/Combos/PvE/BRD/BRD.cs @@ -377,23 +377,25 @@ protected override uint Invoke(uint actionID) { float ragingCD = GetCooldownRemainingTime(RagingStrikes); - // Late weave Battle voice logic first, timed with raging strikes cd to keep buffs tight. - if (canWeaveDelayed && ActionReady(BattleVoice) && songWanderer && (ragingCD < 3 || ActionReady(RagingStrikes))) - return BattleVoice; - - // Radiant next, must have battlevoice buff for it to fire - if (canWeave && ActionReady(RadiantFinale) && - (Array.TrueForAll(gauge.Coda, SongIsNotNone) || Array.Exists(gauge.Coda, SongIsWandererMinuet)) && - HasEffect(Buffs.BattleVoice)) + // Radiant First with late weave for tighter grouping + if (canWeaveDelayed && ActionReady(RadiantFinale) && ragingCD < 2.3 && + !HasEffect(Buffs.RadiantEncoreReady) && + (Array.TrueForAll(gauge.Coda, SongIsNotNone) || Array.Exists(gauge.Coda, SongIsWandererMinuet))) return RadiantFinale; + // BV normal weave into the raging weave + if (canWeave && ActionReady(BattleVoice) && (HasEffect(Buffs.RadiantFinale) || !LevelChecked(RadiantFinale))) + return BattleVoice; + // Late weave Raging last, must have battle voice buff OR not be high enough level for Battlecoice - if (canWeave && ActionReady(RagingStrikes) && (HasEffect(Buffs.BattleVoice) || !LevelChecked(BattleVoice))) + if (canWeave && ActionReady(RagingStrikes) && (JustUsed(BattleVoice) || !LevelChecked(BattleVoice) || HasEffect(Buffs.BattleVoice))) return RagingStrikes; // Barrage Logic to check for raging for low level reasons and it doesn't really need to check for the other buffs - if (canWeave && ActionReady(Barrage) && HasEffect(Buffs.RagingStrikes)) + if (canWeave && ActionReady(Barrage) && HasEffect(Buffs.RagingStrikes) && + !HasEffect(Buffs.ResonantArrowReady)) return Barrage; + } #endregion @@ -650,12 +652,13 @@ protected override uint Invoke(uint actionID) { float ragingCD = GetCooldownRemainingTime(RagingStrikes); - // Radiant next, must have battlevoice buff for it to fire + // Radiant First with late weave for tighter grouping if (canWeaveDelayed && ActionReady(RadiantFinale) && ragingCD < 2.3 && + !HasEffect(Buffs.RadiantEncoreReady) && (Array.TrueForAll(gauge.Coda, SongIsNotNone) || Array.Exists(gauge.Coda, SongIsWandererMinuet))) return RadiantFinale; - // Late weave Battle voice logic first, timed with raging strikes cd to keep buffs tight. + // BV normal weave into the raging weave if (canWeave && ActionReady(BattleVoice) && (HasEffect(Buffs.RadiantFinale) || !LevelChecked(RadiantFinale))) return BattleVoice; @@ -664,7 +667,8 @@ protected override uint Invoke(uint actionID) return RagingStrikes; // Barrage Logic to check for raging for low level reasons and it doesn't really need to check for the other buffs - if (canWeave && ActionReady(Barrage) && HasEffect(Buffs.RagingStrikes)) + if (canWeave && ActionReady(Barrage) && HasEffect(Buffs.RagingStrikes) && + !HasEffect(Buffs.ResonantArrowReady)) return Barrage; } @@ -932,22 +936,23 @@ protected override uint Invoke(uint actionID) { float ragingCD = GetCooldownRemainingTime(RagingStrikes); - // Late weave Battle voice logic first, timed with raging strikes cd to keep buffs tight. - if (canWeaveDelayed && ActionReady(BattleVoice) && songWanderer && (ragingCD < 3 || ActionReady(RagingStrikes))) - return BattleVoice; - - // Radiant next, must have battlevoice buff for it to fire - if (canWeave && ActionReady(RadiantFinale) && - (Array.TrueForAll(gauge.Coda, SongIsNotNone) || Array.Exists(gauge.Coda, SongIsWandererMinuet)) && - HasEffect(Buffs.BattleVoice)) + // Radiant First with late weave for tighter grouping + if (canWeaveDelayed && ActionReady(RadiantFinale) && ragingCD < 2.3 && + !HasEffect(Buffs.RadiantEncoreReady) && + (Array.TrueForAll(gauge.Coda, SongIsNotNone) || Array.Exists(gauge.Coda, SongIsWandererMinuet))) return RadiantFinale; + // BV normal weave into the raging weave + if (canWeave && ActionReady(BattleVoice) && (HasEffect(Buffs.RadiantFinale) || !LevelChecked(RadiantFinale))) + return BattleVoice; + // Late weave Raging last, must have battle voice buff OR not be high enough level for Battlecoice - if (canWeave && ActionReady(RagingStrikes) && (HasEffect(Buffs.BattleVoice) || !LevelChecked(BattleVoice))) + if (canWeave && ActionReady(RagingStrikes) && (JustUsed(BattleVoice) || !LevelChecked(BattleVoice) || HasEffect(Buffs.BattleVoice))) return RagingStrikes; // Barrage Logic to check for raging for low level reasons and it doesn't really need to check for the other buffs - if (canWeave && ActionReady(Barrage) && HasEffect(Buffs.RagingStrikes)) + if (canWeave && ActionReady(Barrage) && HasEffect(Buffs.RagingStrikes) && + !HasEffect(Buffs.ResonantArrowReady)) return Barrage; } @@ -1156,22 +1161,23 @@ protected override uint Invoke(uint actionID) { float ragingCD = GetCooldownRemainingTime(RagingStrikes); - // Late weave Battle voice logic first, timed with raging strikes cd to keep buffs tight. - if (canWeaveDelayed && ActionReady(BattleVoice) && songWanderer && (ragingCD < 3 || ActionReady(RagingStrikes))) - return BattleVoice; - - // Radiant next, must have battlevoice buff for it to fire - if (canWeave && ActionReady(RadiantFinale) && - (Array.TrueForAll(gauge.Coda, SongIsNotNone) || Array.Exists(gauge.Coda, SongIsWandererMinuet)) && - HasEffect(Buffs.BattleVoice)) + // Radiant First with late weave for tighter grouping + if (canWeaveDelayed && ActionReady(RadiantFinale) && ragingCD < 2.3 && + !HasEffect(Buffs.RadiantEncoreReady) && + (Array.TrueForAll(gauge.Coda, SongIsNotNone) || Array.Exists(gauge.Coda, SongIsWandererMinuet))) return RadiantFinale; + // BV normal weave into the raging weave + if (canWeave && ActionReady(BattleVoice) && (HasEffect(Buffs.RadiantFinale) || !LevelChecked(RadiantFinale))) + return BattleVoice; + // Late weave Raging last, must have battle voice buff OR not be high enough level for Battlecoice - if (canWeave && ActionReady(RagingStrikes) && (HasEffect(Buffs.BattleVoice) || !LevelChecked(BattleVoice))) + if (canWeave && ActionReady(RagingStrikes) && (JustUsed(BattleVoice) || !LevelChecked(BattleVoice) || HasEffect(Buffs.BattleVoice))) return RagingStrikes; // Barrage Logic to check for raging for low level reasons and it doesn't really need to check for the other buffs - if (canWeave && ActionReady(Barrage) && HasEffect(Buffs.RagingStrikes)) + if (canWeave && ActionReady(Barrage) && HasEffect(Buffs.RagingStrikes) && + !HasEffect(Buffs.ResonantArrowReady)) return Barrage; }