From 6b2213c3e873e4cd05f7895b8528abeb98354188 Mon Sep 17 00:00:00 2001 From: edewen Date: Wed, 28 Aug 2024 08:21:43 -0400 Subject: [PATCH 1/7] Fix lvl 52-53 pitch perfect Added lvl check to empycd check in Pitch perfect line to prevent it from popping at 2 in dusk vigil. --- XIVSlothCombo/Combos/PvE/BRD.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/XIVSlothCombo/Combos/PvE/BRD.cs b/XIVSlothCombo/Combos/PvE/BRD.cs index fa762902d..76b202665 100644 --- a/XIVSlothCombo/Combos/PvE/BRD.cs +++ b/XIVSlothCombo/Combos/PvE/BRD.cs @@ -429,7 +429,7 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim return EmpyrealArrow; if (LevelChecked(PitchPerfect) && songWanderer && - (gauge.Repertoire == 3 || (gauge.Repertoire == 2 && empyrealCD < 2))) + (gauge.Repertoire == 3 || (LevelChecked(EmpyrealArrow) && gauge.Repertoire == 2 && empyrealCD < 2))) return OriginalHook(PitchPerfect); if (ActionReady(Sidewinder)) @@ -730,7 +730,7 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim return EmpyrealArrow; if (LevelChecked(PitchPerfect) && songWanderer && - (gauge.Repertoire == 3 || (gauge.Repertoire == 2 && empyrealCD < 2))) + (gauge.Repertoire == 3 || (LevelChecked(EmpyrealArrow) && gauge.Repertoire == 2 && empyrealCD < 2))) return OriginalHook(PitchPerfect); if (ActionReady(Sidewinder)) @@ -1055,7 +1055,7 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim return EmpyrealArrow; if (LevelChecked(PitchPerfect) && songWanderer && - (gauge.Repertoire == 3 || (gauge.Repertoire == 2 && empyrealCD < 2))) + (gauge.Repertoire == 3 || (LevelChecked(EmpyrealArrow) && gauge.Repertoire == 2 && empyrealCD < 2))) return OriginalHook(PitchPerfect); if (ActionReady(Sidewinder)) @@ -1284,7 +1284,7 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim return EmpyrealArrow; if (LevelChecked(PitchPerfect) && songWanderer && - (gauge.Repertoire == 3 || (gauge.Repertoire == 2 && empyrealCD < 2))) + (gauge.Repertoire == 3 || (LevelChecked(EmpyrealArrow) && gauge.Repertoire == 2 && empyrealCD < 2))) return OriginalHook(PitchPerfect); if (ActionReady(Sidewinder)) From bf18c179203638a392bf5e505922992b0326ec0f Mon Sep 17 00:00:00 2001 From: edewen Date: Wed, 28 Aug 2024 08:58:42 -0400 Subject: [PATCH 2/7] Increase raging jaws slider Increased slider to allow up to 10 seconds. Adjusted recast on dots to prevent it from double raging jaws on higher settings. --- XIVSlothCombo/Combos/PvE/BRD.cs | 2 +- XIVSlothCombo/Window/Functions/UserConfig.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/XIVSlothCombo/Combos/PvE/BRD.cs b/XIVSlothCombo/Combos/PvE/BRD.cs index 76b202665..5ab3813a0 100644 --- a/XIVSlothCombo/Combos/PvE/BRD.cs +++ b/XIVSlothCombo/Combos/PvE/BRD.cs @@ -817,7 +817,7 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim if (IsEnabled(CustomComboPreset.BRD_Adv_DoT)) { if (ActionReady(IronJaws) && IsEnabled(CustomComboPreset.BRD_Adv_RagingJaws) && HasEffect(Buffs.RagingStrikes) && - !WasLastAction(IronJaws) && ragingStrikesDuration < ragingJawsRenewTime && poisonRecast(40) && windRecast(40)) + !WasLastAction(IronJaws) && ragingStrikesDuration < ragingJawsRenewTime && poisonRecast(35) && windRecast(35)) { openerFinished = true; return IronJaws; diff --git a/XIVSlothCombo/Window/Functions/UserConfig.cs b/XIVSlothCombo/Window/Functions/UserConfig.cs index 956d6bd4e..93d8819f3 100644 --- a/XIVSlothCombo/Window/Functions/UserConfig.cs +++ b/XIVSlothCombo/Window/Functions/UserConfig.cs @@ -1347,7 +1347,7 @@ internal static void Draw(CustomComboPreset preset, bool enabled) #region BARD if (preset == CustomComboPreset.BRD_Adv_RagingJaws) - UserConfig.DrawSliderInt(3, 5, BRD.Config.BRD_RagingJawsRenewTime, "Remaining time (In seconds)"); + UserConfig.DrawSliderInt(3, 10, BRD.Config.BRD_RagingJawsRenewTime, "Remaining time (In seconds). Recommended 5, increase little by little if refresh is outside of radiant window"); if (preset == CustomComboPreset.BRD_Adv_NoWaste) UserConfig.DrawSliderInt(1, 10, BRD.Config.BRD_NoWasteHPPercentage, "Remaining target HP percentage"); From 796741b4ef36510cdd2684c204004377a59471e1 Mon Sep 17 00:00:00 2001 From: edewen Date: Wed, 28 Aug 2024 12:06:49 -0400 Subject: [PATCH 3/7] Tighten ragingjaws dot recast to keep it from doubling on higher skill speeds. --- XIVSlothCombo/Combos/PvE/BRD.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/XIVSlothCombo/Combos/PvE/BRD.cs b/XIVSlothCombo/Combos/PvE/BRD.cs index 5ab3813a0..170635e79 100644 --- a/XIVSlothCombo/Combos/PvE/BRD.cs +++ b/XIVSlothCombo/Combos/PvE/BRD.cs @@ -1365,7 +1365,7 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim }; if (ActionReady(IronJaws) && HasEffect(Buffs.RagingStrikes) && - !WasLastAction(IronJaws) && ragingStrikesDuration < ragingJawsRenewTime && poisonRecast(40) && windRecast(40)) + !WasLastAction(IronJaws) && ragingStrikesDuration < ragingJawsRenewTime && poisonRecast(35) && windRecast(35)) { openerFinished = true; return IronJaws; From ef44d0077161af2e62f02dd4030dfebcd7d0ef7b Mon Sep 17 00:00:00 2001 From: edewen Date: Wed, 28 Aug 2024 15:59:48 -0400 Subject: [PATCH 4/7] For for 54-84 pooling of bloodletter/rain charges Added trait check for enhanced bloodletter for pooling 3 charges. Added option for actually pooling aoe charges as it was forced before. --- XIVSlothCombo/Combos/CustomComboPreset.cs | 8 ++++++-- XIVSlothCombo/Combos/PvE/BRD.cs | 14 +++++++++----- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/XIVSlothCombo/Combos/CustomComboPreset.cs b/XIVSlothCombo/Combos/CustomComboPreset.cs index e0539e3e7..586f34076 100644 --- a/XIVSlothCombo/Combos/CustomComboPreset.cs +++ b/XIVSlothCombo/Combos/CustomComboPreset.cs @@ -677,9 +677,13 @@ public enum CustomComboPreset //BardSimpleOpener = 3022, [ParentCombo(BRD_ST_AdvMode)] - [CustomComboInfo("Pooling Option", "Pools Bloodletter charges to allow for optimum burst phases, will also keep sidewinder in the buff window during wanderers.", BRD.JobID)] + [CustomComboInfo("Pooling Option", "84+ Pools Bloodletter charges to allow for optimum burst phases.", BRD.JobID)] BRD_Adv_Pooling = 3023, + [ParentCombo(BRD_AoE_AdvMode)] + [CustomComboInfo("Pooling Option", "84+ Pools Rain of death charges to allow for optimum burst phases.", BRD.JobID)] + BRD_AoE_Pooling = 3040, + [ParentCombo(BRD_IronJaws)] [CustomComboInfo("Iron Jaws Apex Option", "Adds Apex and Blast Arrow to Iron Jaws when available.", BRD.JobID)] BRD_IronJawsApex = 3024, @@ -717,7 +721,7 @@ public enum CustomComboPreset [ParentCombo(BRD_AoE_AdvMode)] [CustomComboInfo("AoE No Waste Option", "Adds enemy health checking on targetted mob for songs.\nThey will not be reapplied if less than specified.", BRD.JobID)] BRD_AoE_Adv_NoWaste = 3033, - // Last value = 3038 + // Last value = 3040 #endregion diff --git a/XIVSlothCombo/Combos/PvE/BRD.cs b/XIVSlothCombo/Combos/PvE/BRD.cs index 170635e79..e77fd014c 100644 --- a/XIVSlothCombo/Combos/PvE/BRD.cs +++ b/XIVSlothCombo/Combos/PvE/BRD.cs @@ -84,7 +84,11 @@ public const string BRD_AoESecondWindThreshold = "BRD_AoESecondWindThreshold", BRD_VariantCure = "BRD_VariantCure"; } - + internal static class Traits + { + internal const ushort + EnhancedBloodletter = 445; + } #region Song status internal static bool SongIsNotNone(Song value) => value != Song.NONE; internal static bool SongIsNone(Song value) => value == Song.NONE; @@ -451,7 +455,7 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim { uint rainOfDeathCharges = LevelChecked(RainOfDeath) ? GetRemainingCharges(RainOfDeath) : 0; - if (LevelChecked(WanderersMinuet)) + if (IsEnabled(CustomComboPreset.BRD_AoE_Pooling) && LevelChecked(WanderersMinuet) && TraitLevelChecked(Traits.EnhancedBloodletter)) { if (songWanderer) { @@ -755,7 +759,7 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim { uint bloodletterCharges = GetRemainingCharges(Bloodletter); - if (IsEnabled(CustomComboPreset.BRD_Adv_Pooling) && LevelChecked(WanderersMinuet)) + if (IsEnabled(CustomComboPreset.BRD_Adv_Pooling) && LevelChecked(WanderersMinuet) && TraitLevelChecked(Traits.EnhancedBloodletter)) { if (songWanderer) { @@ -1076,7 +1080,7 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim { uint rainOfDeathCharges = LevelChecked(RainOfDeath) ? GetRemainingCharges(RainOfDeath) : 0; - if (LevelChecked(WanderersMinuet)) + if (LevelChecked(WanderersMinuet) && TraitLevelChecked(Traits.EnhancedBloodletter)) { if (songWanderer) { @@ -1305,7 +1309,7 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim { uint bloodletterCharges = GetRemainingCharges(Bloodletter); - if (LevelChecked(WanderersMinuet)) + if (LevelChecked(WanderersMinuet) && TraitLevelChecked(Traits.EnhancedBloodletter)) { if (songWanderer) { From 0acece2d49b9486f13819c613b036a4d45da413b Mon Sep 17 00:00:00 2001 From: edewen Date: Thu, 29 Aug 2024 17:57:18 -0400 Subject: [PATCH 5/7] Removed uncoded option Songs on ogcd. Was never actually coded in there, just a checkbox that doesnt work. --- XIVSlothCombo/Combos/CustomComboPreset.cs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/XIVSlothCombo/Combos/CustomComboPreset.cs b/XIVSlothCombo/Combos/CustomComboPreset.cs index 586f34076..ca4f55659 100644 --- a/XIVSlothCombo/Combos/CustomComboPreset.cs +++ b/XIVSlothCombo/Combos/CustomComboPreset.cs @@ -621,11 +621,7 @@ public enum CustomComboPreset [ParentCombo(BRD_ST_AdvMode)] [CustomComboInfo("Bard Songs Option", "This option adds the Bard's Songs to the Advanced Bard Feature.", BRD.JobID)] - BRD_Adv_Song = 3011, - - [ParentCombo(BRD_AoE_oGCD)] - [CustomComboInfo("Songs Option", "Adds Songs onto AoE oGCD Feature.", BRD.JobID)] - BRD_oGCDSongs = 3012, + BRD_Adv_Song = 3011, [ReplaceSkill(BRD.Barrage)] [CustomComboInfo("Bard Buffs Feature", "Adds Raging Strikes and Battle Voice onto Barrage.", BRD.JobID)] From fc2ed7b8f8e9cd5afb5f262c6ee5c3f42bb0fc02 Mon Sep 17 00:00:00 2001 From: edewen Date: Tue, 3 Sep 2024 08:23:14 -0400 Subject: [PATCH 6/7] Move resonant and encore to thier own options --- XIVSlothCombo/Combos/CustomComboPreset.cs | 14 +++++++++++--- XIVSlothCombo/Combos/PvE/BRD.cs | 4 ++-- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/XIVSlothCombo/Combos/CustomComboPreset.cs b/XIVSlothCombo/Combos/CustomComboPreset.cs index ca4f55659..60d4f6d87 100644 --- a/XIVSlothCombo/Combos/CustomComboPreset.cs +++ b/XIVSlothCombo/Combos/CustomComboPreset.cs @@ -647,10 +647,18 @@ public enum CustomComboPreset [CustomComboInfo("Buffs Option", "Adds buffs onto the Advanced Bard feature.", BRD.JobID)] BRD_Adv_Buffs = 3017, - [ParentCombo(BRD_Adv_Buffs)] - [CustomComboInfo("Buffs - Radiant Option", "Adds Radiant Finale to theBuffs feature.", BRD.JobID)] + [ParentCombo(BRD_ST_AdvMode)] + [CustomComboInfo("Resonant Option", "Adds Resonant Arrow to the Rotation after Barrage.", BRD.JobID)] + BRD_Adv_BuffsResonant = 3041, + + [ParentCombo(BRD_ST_AdvMode)] + [CustomComboInfo("Buffs - Radiant Option", "Adds Radiant Finale to the Advanced Bard feature.", BRD.JobID)] BRD_Adv_BuffsRadiant = 3018, + [ParentCombo(BRD_ST_AdvMode)] + [CustomComboInfo("Encore Option", "Adds Radiant Encore to the Rotation after Finale.", BRD.JobID)] + BRD_Adv_BuffsEncore = 3042, + [ParentCombo(BRD_ST_AdvMode)] [CustomComboInfo("No Waste Option", "Adds enemy health checking on mobs for buffs, DoTs and Songs.\nThey will not be reapplied if less than specified.", BRD.JobID)] BRD_Adv_NoWaste = 3019, @@ -717,7 +725,7 @@ public enum CustomComboPreset [ParentCombo(BRD_AoE_AdvMode)] [CustomComboInfo("AoE No Waste Option", "Adds enemy health checking on targetted mob for songs.\nThey will not be reapplied if less than specified.", BRD.JobID)] BRD_AoE_Adv_NoWaste = 3033, - // Last value = 3040 + // Last value = 3042 #endregion diff --git a/XIVSlothCombo/Combos/PvE/BRD.cs b/XIVSlothCombo/Combos/PvE/BRD.cs index e77fd014c..39f1df502 100644 --- a/XIVSlothCombo/Combos/PvE/BRD.cs +++ b/XIVSlothCombo/Combos/PvE/BRD.cs @@ -791,7 +791,7 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim } } //Moved below weaves bc roobert says it is blocking his weaves from happening - if (HasEffect(Buffs.RadiantEncoreReady) && !JustUsed(RadiantFinale) && GetCooldownElapsed(BattleVoice) >= 4.2f && IsEnabled(CustomComboPreset.BRD_Adv_BuffsRadiant)) + if (HasEffect(Buffs.RadiantEncoreReady) && !JustUsed(RadiantFinale) && GetCooldownElapsed(RadiantFinale) >= 4.2f && IsEnabled(CustomComboPreset.BRD_Adv_BuffsEncore)) return OriginalHook(RadiantEncore); if (isEnemyHealthHigh) @@ -881,7 +881,7 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim if (HasEffect(Buffs.HawksEye) || HasEffect(Buffs.Barrage)) return OriginalHook(StraightShot); - if (HasEffect(Buffs.ResonantArrowReady) && IsEnabled(CustomComboPreset.BRD_Adv_Buffs)) + if (HasEffect(Buffs.ResonantArrowReady) && IsEnabled(CustomComboPreset.BRD_Adv_BuffsResonant)) return ResonantArrow; } From bdcc1e5cce08b974b32aabae0c737eb0e461d9db Mon Sep 17 00:00:00 2001 From: edewen Date: Wed, 4 Sep 2024 07:18:08 -0400 Subject: [PATCH 7/7] Wide volley fixed to account for barrage buff --- XIVSlothCombo/Combos/PvE/BRD.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/XIVSlothCombo/Combos/PvE/BRD.cs b/XIVSlothCombo/Combos/PvE/BRD.cs index 39f1df502..dcde8ae08 100644 --- a/XIVSlothCombo/Combos/PvE/BRD.cs +++ b/XIVSlothCombo/Combos/PvE/BRD.cs @@ -490,7 +490,7 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim } } - bool wideVolleyReady = LevelChecked(WideVolley) && HasEffect(Buffs.HawksEye); + bool wideVolleyReady = LevelChecked(WideVolley) && (HasEffect(Buffs.HawksEye) || HasEffect(Buffs.Barrage)); bool blastArrowReady = LevelChecked(BlastArrow) && HasEffect(Buffs.BlastArrowReady); bool resonantArrowReady = LevelChecked(ResonantArrow) && HasEffect(Buffs.ResonantArrowReady); @@ -1114,7 +1114,7 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim } - bool wideVolleyReady = LevelChecked(WideVolley) && HasEffect(Buffs.HawksEye); + bool wideVolleyReady = LevelChecked(WideVolley) && (HasEffect(Buffs.HawksEye) || HasEffect(Buffs.Barrage)); bool blastArrowReady = LevelChecked(BlastArrow) && HasEffect(Buffs.BlastArrowReady); bool resonantArrowReady = LevelChecked(ResonantArrow) && HasEffect(Buffs.ResonantArrowReady);