From 29c3b11093f4857542677c8ac20b766cbdd37449 Mon Sep 17 00:00:00 2001 From: Lusaca87 <17047430+Lusaca87@users.noreply.github.com> Date: Fri, 3 Jul 2026 10:45:56 +0200 Subject: [PATCH 1/3] Adds early buff window opener option --- WrathCombo/Combos/PvE/PLD/PLD_Config.cs | 9 ++++- WrathCombo/Combos/PvE/PLD/PLD_Helper.cs | 54 +++++++++++++++++++++++-- 2 files changed, 58 insertions(+), 5 deletions(-) diff --git a/WrathCombo/Combos/PvE/PLD/PLD_Config.cs b/WrathCombo/Combos/PvE/PLD/PLD_Config.cs index 5b372fb39..16108b5c1 100644 --- a/WrathCombo/Combos/PvE/PLD/PLD_Config.cs +++ b/WrathCombo/Combos/PvE/PLD/PLD_Config.cs @@ -92,11 +92,15 @@ internal static void Draw(Preset preset) #region ST case Preset.PLD_ST_AdvancedMode_BalanceOpener: + DrawRadioButton(PLD_SelectedOpener, Generics.StandardOpener, "", 0); + DrawRadioButton(PLD_SelectedOpener, "Early Buff Window Opener", + "Moves the buff window forward about 1 GCD.", 1, descriptionAsTooltip: true); + ImGui.NewLine(); DrawBossOnlyChoice(PLD_Balance_Content); ImGui.NewLine(); - DrawHorizontalRadioButton(PLD_ST_AdvancedMode_BalanceOpener_Intervene, FormatAndCache(Generics.Use0, Intervene.ActionName()), + DrawHorizontalRadioButton(PLD_ST_AdvancedMode_BalanceOpener_Intervene, FormatAndCache(Generics.Use0, Intervene.ActionName()), FormatAndCache(Generics.GapcloserUse, Intervene.ActionName()), 0); - DrawHorizontalRadioButton(PLD_ST_AdvancedMode_BalanceOpener_Intervene, FormatAndCache(Generics.DontUse0, Intervene.ActionName()), + DrawHorizontalRadioButton(PLD_ST_AdvancedMode_BalanceOpener_Intervene, FormatAndCache(Generics.DontUse0, Intervene.ActionName()), FormatAndCache(Generics.GapcloseSkip, Intervene.ActionName()), 1); break; @@ -326,6 +330,7 @@ public static UserInt //ST PLD_Balance_Content = new("PLD_Balance_Content", 1), + PLD_SelectedOpener = new("PLD_SelectedOpener"), PLD_ST_AdvancedMode_BalanceOpener_Intervene = new("PLD_ST_AdvancedMode_BalanceOpener_Intervene"), PLD_ST_Intervene_Charges = new("PLD_ST_Intervene_Charges"), PLD_ST_Intervene_Movement = new("PLD_ST_Intervene_Movement"), diff --git a/WrathCombo/Combos/PvE/PLD/PLD_Helper.cs b/WrathCombo/Combos/PvE/PLD/PLD_Helper.cs index 75a7ae158..cbff462c2 100644 --- a/WrathCombo/Combos/PvE/PLD/PLD_Helper.cs +++ b/WrathCombo/Combos/PvE/PLD/PLD_Helper.cs @@ -765,13 +765,14 @@ internal static uint AoECombo #region Openers internal static PLDLvl100StandardOpener Lvl100StandardOpener = new(); + internal static PLDLvl100EarlyBuffOpener Lvl100EarlyBuffOpener = new(); internal static WrathOpener Opener() { - if (Lvl100StandardOpener.LevelChecked) - return Lvl100StandardOpener; + if (PLD_SelectedOpener == 1 && Lvl100EarlyBuffOpener.LevelChecked) + return Lvl100EarlyBuffOpener; - return WrathOpener.Dummy; + return Lvl100StandardOpener.LevelChecked ? Lvl100StandardOpener : WrathOpener.Dummy; } internal class PLDLvl100StandardOpener : WrathOpener @@ -819,6 +820,53 @@ public override bool HasCooldowns() => IsOffCooldown(GoringBlade); } + internal class PLDLvl100EarlyBuffOpener : WrathOpener + { + public override int MinOpenerLevel => 100; + public override int MaxOpenerLevel => 109; + + public override List OpenerActions { get; set; } = + [ + HolySpirit, + FastBlade, + FightOrFlight, + Imperator, + RiotBlade, + CircleOfScorn, + Expiacion, + RoyalAuthority, + Intervene, + Intervene, + GoringBlade, + Confiteor, + BladeOfFaith, + BladeOfTruth, + BladeOfValor, + BladeOfHonor, + HolySpirit + ]; + + public override List<(int[] Steps, uint NewAction, Func Condition)> SubstitutionSteps { get; set; } = + [ + ([1], FastBlade, () => !HasTarget()) + ]; + + public override List<(int[] Steps, Func Condition)> SkipSteps { get; set; } = + [ + ([9, 10], () => !HasCharges(Intervene) || PLD_ST_AdvancedMode_BalanceOpener_Intervene != 0) + ]; + + public override Preset Preset => Preset.PLD_ST_AdvancedMode_BalanceOpener; + internal override UserData ContentCheckConfig => PLD_Balance_Content; + + public override bool HasCooldowns() => + IsOffCooldown(FightOrFlight) && + IsOffCooldown(Imperator) && + IsOffCooldown(CircleOfScorn) && + IsOffCooldown(Expiacion) && + IsOffCooldown(GoringBlade); + } + #endregion #region ID's From 5ca6125a42beb481f26150cad2a26ce228179e7f Mon Sep 17 00:00:00 2001 From: Lusaca87 <17047430+Lusaca87@users.noreply.github.com> Date: Fri, 3 Jul 2026 15:55:17 +0200 Subject: [PATCH 2/3] Added Atonement-combo, swapped GoringBlade and Intervene step, and updated skip steps. --- WrathCombo/Combos/PvE/PLD/PLD_Helper.cs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/WrathCombo/Combos/PvE/PLD/PLD_Helper.cs b/WrathCombo/Combos/PvE/PLD/PLD_Helper.cs index cbff462c2..325986582 100644 --- a/WrathCombo/Combos/PvE/PLD/PLD_Helper.cs +++ b/WrathCombo/Combos/PvE/PLD/PLD_Helper.cs @@ -836,23 +836,27 @@ internal class PLDLvl100EarlyBuffOpener : WrathOpener Expiacion, RoyalAuthority, Intervene, - Intervene, GoringBlade, + Intervene, Confiteor, BladeOfFaith, BladeOfTruth, BladeOfValor, BladeOfHonor, - HolySpirit + HolySpirit, + Atonement, + Supplication, + Sepulchre ]; public override List<(int[] Steps, uint NewAction, Func Condition)> SubstitutionSteps { get; set; } = [ - ([1], FastBlade, () => !HasTarget()) + ([1], FastBlade, () => !HasTarget() || InCombat()) ]; public override List<(int[] Steps, Func Condition)> SkipSteps { get; set; } = [ + ([2], () => ComboAction == FastBlade), ([9, 10], () => !HasCharges(Intervene) || PLD_ST_AdvancedMode_BalanceOpener_Intervene != 0) ]; From 96e5cee1f70b0f11422f0150aae6fab02f886c7d Mon Sep 17 00:00:00 2001 From: Lusaca87 <17047430+Lusaca87@users.noreply.github.com> Date: Fri, 3 Jul 2026 16:13:49 +0200 Subject: [PATCH 3/3] Added skip steps for Atonement-combo if out of melee range. --- WrathCombo/Combos/PvE/PLD/PLD_Helper.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/WrathCombo/Combos/PvE/PLD/PLD_Helper.cs b/WrathCombo/Combos/PvE/PLD/PLD_Helper.cs index 325986582..58541f2b8 100644 --- a/WrathCombo/Combos/PvE/PLD/PLD_Helper.cs +++ b/WrathCombo/Combos/PvE/PLD/PLD_Helper.cs @@ -857,7 +857,8 @@ internal class PLDLvl100EarlyBuffOpener : WrathOpener public override List<(int[] Steps, Func Condition)> SkipSteps { get; set; } = [ ([2], () => ComboAction == FastBlade), - ([9, 10], () => !HasCharges(Intervene) || PLD_ST_AdvancedMode_BalanceOpener_Intervene != 0) + ([9, 10], () => !HasCharges(Intervene) || PLD_ST_AdvancedMode_BalanceOpener_Intervene != 0), + ([18, 19, 20], () => !InMeleeRange()) ]; public override Preset Preset => Preset.PLD_ST_AdvancedMode_BalanceOpener;