From ffb4f987e6b4c8f714e8c9200c7770457fdfc2bd Mon Sep 17 00:00:00 2001 From: NebulousByte <907468+NebulousByte@users.noreply.github.com> Date: Sat, 6 Jul 2024 12:21:34 +0100 Subject: [PATCH 01/11] Preliminary BRD changes --- XIVSlothCombo/Combos/CustomComboPreset.cs | 236 +++++++++++----------- XIVSlothCombo/Combos/PvE/BRD.cs | 46 +++-- XIVSlothCombo/XIVSlothCombo.cs | 2 +- 3 files changed, 155 insertions(+), 129 deletions(-) diff --git a/XIVSlothCombo/Combos/CustomComboPreset.cs b/XIVSlothCombo/Combos/CustomComboPreset.cs index b7a70d65a..2616c58af 100644 --- a/XIVSlothCombo/Combos/CustomComboPreset.cs +++ b/XIVSlothCombo/Combos/CustomComboPreset.cs @@ -727,7 +727,15 @@ public enum CustomComboPreset [CustomComboInfo("Cure Option", "Use Variant Cure when HP is below set threshold.", BRD.JobID)] BRD_Variant_Cure = 3031, - // Last value = 3031 + [ParentCombo(BRD_ST_SimpleMode)] + [CustomComboInfo("Resonant Arrow Option", "Adds Resonant Arrow from Barrage.", BRD.JobID)] + BRD_Simple_ResonantArrow = 3032, + + [ParentCombo(BRD_ST_SimpleMode)] + [CustomComboInfo("Radiant Encore Option", "Adds Radiant Encore during Radiant Finale.", BRD.JobID)] + BRD_Simple_RadiantEncore = 3033, + + // Last value = 3033 #endregion @@ -2761,33 +2769,33 @@ The three digets after RDM.JobID can be used to reorder items in the list [CustomComboInfo("Single Target DPS Feature", "Adds various options to Dosis I/II/III.", SGE.JobID, 100, "", "")] SGE_ST_DPS = 14001, - [ParentCombo(SGE_ST_DPS)] - [CustomComboInfo("Lucid Dreaming Option", "Weaves Lucid Dreaming when your MP drops below the specified value.", SGE.JobID, 120, "", "")] - SGE_ST_DPS_Lucid = 14002, + [ParentCombo(SGE_ST_DPS)] + [CustomComboInfo("Lucid Dreaming Option", "Weaves Lucid Dreaming when your MP drops below the specified value.", SGE.JobID, 120, "", "")] + SGE_ST_DPS_Lucid = 14002, - [ParentCombo(SGE_ST_DPS)] - [CustomComboInfo("Eukrasian Dosis Option", "Automatic DoT Uptime.", SGE.JobID, 110, "", "")] - SGE_ST_DPS_EDosis = 14003, + [ParentCombo(SGE_ST_DPS)] + [CustomComboInfo("Eukrasian Dosis Option", "Automatic DoT Uptime.", SGE.JobID, 110, "", "")] + SGE_ST_DPS_EDosis = 14003, - [ParentCombo(SGE_ST_DPS)] - [CustomComboInfo("Movement Options", "Use selected instant cast actions while moving.", SGE.JobID, 113, "", "")] - SGE_ST_DPS_Movement = 14004, + [ParentCombo(SGE_ST_DPS)] + [CustomComboInfo("Movement Options", "Use selected instant cast actions while moving.", SGE.JobID, 113, "", "")] + SGE_ST_DPS_Movement = 14004, - [ParentCombo(SGE_ST_DPS)] - [CustomComboInfo("Phlegma Option", "Use Phlegma if available and within range.", SGE.JobID, 111, "", "")] - SGE_ST_DPS_Phlegma = 14005, + [ParentCombo(SGE_ST_DPS)] + [CustomComboInfo("Phlegma Option", "Use Phlegma if available and within range.", SGE.JobID, 111, "", "")] + SGE_ST_DPS_Phlegma = 14005, - [ParentCombo(SGE_ST_DPS)] - [CustomComboInfo("Kardia Reminder Option", "Adds Kardia when not under the effect.", SGE.JobID, 122, "", "")] - SGE_ST_DPS_Kardia = 14006, + [ParentCombo(SGE_ST_DPS)] + [CustomComboInfo("Kardia Reminder Option", "Adds Kardia when not under the effect.", SGE.JobID, 122, "", "")] + SGE_ST_DPS_Kardia = 14006, - [ParentCombo(SGE_ST_DPS)] - [CustomComboInfo("Rhizomata Option", "Weaves Rhizomata when Addersgall gauge falls below the specified value.", SGE.JobID, 121, "", "")] - SGE_ST_DPS_Rhizo = 14007, + [ParentCombo(SGE_ST_DPS)] + [CustomComboInfo("Rhizomata Option", "Weaves Rhizomata when Addersgall gauge falls below the specified value.", SGE.JobID, 121, "", "")] + SGE_ST_DPS_Rhizo = 14007, - [ParentCombo(SGE_ST_DPS)] - [CustomComboInfo("Psych Option", "Weaves(?) Psych when available.", SGE.JobID, 112, "", "")] - SGE_ST_DPS_Psyche = 14008, + [ParentCombo(SGE_ST_DPS)] + [CustomComboInfo("Psych Option", "Weaves(?) Psych when available.", SGE.JobID, 112, "", "")] + SGE_ST_DPS_Psyche = 14008, #endregion @@ -2796,29 +2804,29 @@ The three digets after RDM.JobID can be used to reorder items in the list [CustomComboInfo("AoE DPS Feature", "Adds various options to Dyskrasia I & II. Requires a target.", SGE.JobID, 200, "", "")] SGE_AoE_DPS = 14009, - [ParentCombo(SGE_AoE_DPS)] - [CustomComboInfo("Phlegma Option", "Uses Phlegma if available.", SGE.JobID, 3, "", "")] - SGE_AoE_DPS_Phlegma = 14010, + [ParentCombo(SGE_AoE_DPS)] + [CustomComboInfo("Phlegma Option", "Uses Phlegma if available.", SGE.JobID, 3, "", "")] + SGE_AoE_DPS_Phlegma = 14010, - [ParentCombo(SGE_AoE_DPS)] - [CustomComboInfo("Toxikon Option", "Use Toxikon if available.", SGE.JobID, 4, "", "")] - SGE_AoE_DPS_Toxikon = 14011, + [ParentCombo(SGE_AoE_DPS)] + [CustomComboInfo("Toxikon Option", "Use Toxikon if available.", SGE.JobID, 4, "", "")] + SGE_AoE_DPS_Toxikon = 14011, - [ParentCombo(SGE_AoE_DPS)] - [CustomComboInfo("Psyche Option", "Weaves Psyche if available.", SGE.JobID, 2, "", "")] - SGE_AoE_DPS_Psyche = 14051, + [ParentCombo(SGE_AoE_DPS)] + [CustomComboInfo("Psyche Option", "Weaves Psyche if available.", SGE.JobID, 2, "", "")] + SGE_AoE_DPS_Psyche = 14051, - [ParentCombo(SGE_AoE_DPS)] - [CustomComboInfo("Eukrasia Option", "Uses Eukrasia for Eukrasia Dyskrasia.", SGE.JobID, 1, "", "")] - SGE_AoE_DPS_EDyskrasia = 14052, + [ParentCombo(SGE_AoE_DPS)] + [CustomComboInfo("Eukrasia Option", "Uses Eukrasia for Eukrasia Dyskrasia.", SGE.JobID, 1, "", "")] + SGE_AoE_DPS_EDyskrasia = 14052, - [ParentCombo(SGE_AoE_DPS)] - [CustomComboInfo("Lucid Dreaming Option", "Weaves Lucid Dreaming when your MP falls below the specified value.", SGE.JobID, 4, "", "")] - SGE_AoE_DPS_Lucid = 14012, + [ParentCombo(SGE_AoE_DPS)] + [CustomComboInfo("Lucid Dreaming Option", "Weaves Lucid Dreaming when your MP falls below the specified value.", SGE.JobID, 4, "", "")] + SGE_AoE_DPS_Lucid = 14012, - [ParentCombo(SGE_AoE_DPS)] - [CustomComboInfo("Rhizomata Option", "Weaves Rhizomata when Addersgall gauge falls below the specified value.", SGE.JobID, 5, "", "")] - SGE_AoE_DPS_Rhizo = 14013, + [ParentCombo(SGE_AoE_DPS)] + [CustomComboInfo("Rhizomata Option", "Weaves Rhizomata when Addersgall gauge falls below the specified value.", SGE.JobID, 5, "", "")] + SGE_AoE_DPS_Rhizo = 14013, #endregion #region Diagnosis Simple Single Target Heal @@ -2876,45 +2884,45 @@ The three digets after RDM.JobID can be used to reorder items in the list [CustomComboInfo("AoE Heal Feature", "Customize your AoE healing to your liking.", SGE.JobID, 500, "", "")] SGE_AoE_Heal = 14026, - [ParentCombo(SGE_AoE_Heal)] - [CustomComboInfo("Physis Option", "Adds Physis.", SGE.JobID, 504, "", "")] - SGE_AoE_Heal_Physis = 14027, + [ParentCombo(SGE_AoE_Heal)] + [CustomComboInfo("Physis Option", "Adds Physis.", SGE.JobID, 504, "", "")] + SGE_AoE_Heal_Physis = 14027, - [ParentCombo(SGE_AoE_Heal)] - [CustomComboInfo("Philosophia Option", "Adds Philosophia.", SGE.JobID, 505, "", "")] - SGE_AoE_Heal_Philosophia = 14050, + [ParentCombo(SGE_AoE_Heal)] + [CustomComboInfo("Philosophia Option", "Adds Philosophia.", SGE.JobID, 505, "", "")] + SGE_AoE_Heal_Philosophia = 14050, - [ParentCombo(SGE_AoE_Heal)] - [CustomComboInfo("Eukrasian Prognosis Option", "Prognosis becomes Eukrasian Prognosis if the shield is not applied.", SGE.JobID, 520, "", "")] - SGE_AoE_Heal_EPrognosis = 14028, + [ParentCombo(SGE_AoE_Heal)] + [CustomComboInfo("Eukrasian Prognosis Option", "Prognosis becomes Eukrasian Prognosis if the shield is not applied.", SGE.JobID, 520, "", "")] + SGE_AoE_Heal_EPrognosis = 14028, - [ParentCombo(SGE_AoE_Heal_EPrognosis)] - [CustomComboInfo("Ignore Shield Check", "Warning, will force the use of Eukrasia Prognosis, and normal Prognosis will be unavailable.", SGE.JobID, 520, "", "")] - SGE_AoE_Heal_EPrognosis_IgnoreShield = 14029, + [ParentCombo(SGE_AoE_Heal_EPrognosis)] + [CustomComboInfo("Ignore Shield Check", "Warning, will force the use of Eukrasia Prognosis, and normal Prognosis will be unavailable.", SGE.JobID, 520, "", "")] + SGE_AoE_Heal_EPrognosis_IgnoreShield = 14029, - [ParentCombo(SGE_AoE_Heal)] - [CustomComboInfo("Holos Option", "Adds Holos.", SGE.JobID, 505, "", "")] - SGE_AoE_Heal_Holos = 14030, + [ParentCombo(SGE_AoE_Heal)] + [CustomComboInfo("Holos Option", "Adds Holos.", SGE.JobID, 505, "", "")] + SGE_AoE_Heal_Holos = 14030, - [ParentCombo(SGE_AoE_Heal)] - [CustomComboInfo("Panhaima Option", "Adds Panhaima.", SGE.JobID, 506, "", "")] - SGE_AoE_Heal_Panhaima = 14031, + [ParentCombo(SGE_AoE_Heal)] + [CustomComboInfo("Panhaima Option", "Adds Panhaima.", SGE.JobID, 506, "", "")] + SGE_AoE_Heal_Panhaima = 14031, - [ParentCombo(SGE_AoE_Heal)] - [CustomComboInfo("Pepsis Option", "Triggers Pepsis if a shield is present.", SGE.JobID, 507, "", "")] - SGE_AoE_Heal_Pepsis = 14032, + [ParentCombo(SGE_AoE_Heal)] + [CustomComboInfo("Pepsis Option", "Triggers Pepsis if a shield is present.", SGE.JobID, 507, "", "")] + SGE_AoE_Heal_Pepsis = 14032, - [ParentCombo(SGE_AoE_Heal)] - [CustomComboInfo("Ixochole Option", "Adds Ixochole.", SGE.JobID, 503, "", "")] - SGE_AoE_Heal_Ixochole = 14033, + [ParentCombo(SGE_AoE_Heal)] + [CustomComboInfo("Ixochole Option", "Adds Ixochole.", SGE.JobID, 503, "", "")] + SGE_AoE_Heal_Ixochole = 14033, - [ParentCombo(SGE_AoE_Heal)] - [CustomComboInfo("Kerachole Option", "Adds Kerachole.", SGE.JobID, 502, "", "")] - SGE_AoE_Heal_Kerachole = 14035, + [ParentCombo(SGE_AoE_Heal)] + [CustomComboInfo("Kerachole Option", "Adds Kerachole.", SGE.JobID, 502, "", "")] + SGE_AoE_Heal_Kerachole = 14035, - [ParentCombo(SGE_AoE_Heal)] - [CustomComboInfo("Rhizomata Option", "Adds Rhizomata when Addersgall is 0.", SGE.JobID, 501, "", "")] - SGE_AoE_Heal_Rhizomata = 14036, + [ParentCombo(SGE_AoE_Heal)] + [CustomComboInfo("Rhizomata Option", "Adds Rhizomata when Addersgall is 0.", SGE.JobID, 501, "", "")] + SGE_AoE_Heal_Rhizomata = 14036, #endregion #region Misc Healing @@ -2949,21 +2957,21 @@ The three digets after RDM.JobID can be used to reorder items in the list [CustomComboInfo("Spell Overlap Protection", "Prevents you from wasting actions if under the effect of someone else's actions", SGE.JobID, 1000, "", "")] SGE_OverProtect = 14043, - [ParentCombo(SGE_OverProtect)] - [CustomComboInfo("Under Kerachole", "Don't use Kerachole when under the effect of someone's Kerachole", SGE.JobID, 1000, "", "")] - SGE_OverProtect_Kerachole = 14044, + [ParentCombo(SGE_OverProtect)] + [CustomComboInfo("Under Kerachole", "Don't use Kerachole when under the effect of someone's Kerachole", SGE.JobID, 1000, "", "")] + SGE_OverProtect_Kerachole = 14044, - [ParentCombo(SGE_OverProtect_Kerachole)] - [CustomComboInfo("Under Sacred Soil", "Don't use Kerachole when under the effect of someone's Sacred Soil", SGE.JobID, 1000, "", "")] - SGE_OverProtect_SacredSoil = 14045, + [ParentCombo(SGE_OverProtect_Kerachole)] + [CustomComboInfo("Under Sacred Soil", "Don't use Kerachole when under the effect of someone's Sacred Soil", SGE.JobID, 1000, "", "")] + SGE_OverProtect_SacredSoil = 14045, - [ParentCombo(SGE_OverProtect)] - [CustomComboInfo("Under Panhaima", "Don't use Panhaima when under the effect of someone's Panhaima", SGE.JobID, 1000, "", "")] - SGE_OverProtect_Panhaima = 14046, + [ParentCombo(SGE_OverProtect)] + [CustomComboInfo("Under Panhaima", "Don't use Panhaima when under the effect of someone's Panhaima", SGE.JobID, 1000, "", "")] + SGE_OverProtect_Panhaima = 14046, - [ParentCombo(SGE_OverProtect)] - [CustomComboInfo("Under Philosophia", "Don't use Philosophia when under the effect of someone's Philosophia", SGE.JobID, 1000, "", "")] - SGE_OverProtect_Philosophia = 14047, + [ParentCombo(SGE_OverProtect)] + [CustomComboInfo("Under Philosophia", "Don't use Philosophia when under the effect of someone's Philosophia", SGE.JobID, 1000, "", "")] + SGE_OverProtect_Philosophia = 14047, [Variant] [VariantParent(SGE_ST_DPS_EDosis, SGE_AoE_DPS)] @@ -3221,50 +3229,50 @@ The three digets after RDM.JobID can be used to reorder items in the list [CustomComboInfo("Single Target DPS Feature", "Replaces Ruin I / Broils with options below", SCH.JobID, 1)] SCH_DPS = 16001, - [ParentCombo(SCH_DPS)] - [CustomComboInfo("Lucid Dreaming Weave Option", "Adds Lucid Dreaming when MP drops below slider value:", SCH.JobID, 110)] - SCH_DPS_Lucid = 16002, + [ParentCombo(SCH_DPS)] + [CustomComboInfo("Lucid Dreaming Weave Option", "Adds Lucid Dreaming when MP drops below slider value:", SCH.JobID, 110)] + SCH_DPS_Lucid = 16002, - [ParentCombo(SCH_DPS)] - [CustomComboInfo("Chain Stratagem / Baneful Impact Weave Option", "Adds Chain Stratagem & Baneful Impact on cooldown with overlap protection", SCH.JobID, 120)] - SCH_DPS_ChainStrat = 16003, + [ParentCombo(SCH_DPS)] + [CustomComboInfo("Chain Stratagem / Baneful Impact Weave Option", "Adds Chain Stratagem & Baneful Impact on cooldown with overlap protection", SCH.JobID, 120)] + SCH_DPS_ChainStrat = 16003, - [ParentCombo(SCH_DPS)] - [CustomComboInfo("Aetherflow Weave Option", "Use Aetherflow when out of Aetherflow stacks.", SCH.JobID, 130)] - SCH_DPS_Aetherflow = 16004, + [ParentCombo(SCH_DPS)] + [CustomComboInfo("Aetherflow Weave Option", "Use Aetherflow when out of Aetherflow stacks.", SCH.JobID, 130)] + SCH_DPS_Aetherflow = 16004, - [ParentCombo(SCH_DPS)] - [CustomComboInfo("Energy Drain Weave Option", "Use Energy Drain to consume remaining Aetherflow stacks when Aetherflow is about to come off cooldown.", SCH.JobID, 131)] - SCH_DPS_EnergyDrain = 16005, + [ParentCombo(SCH_DPS)] + [CustomComboInfo("Energy Drain Weave Option", "Use Energy Drain to consume remaining Aetherflow stacks when Aetherflow is about to come off cooldown.", SCH.JobID, 131)] + SCH_DPS_EnergyDrain = 16005, - [ParentCombo(SCH_DPS_EnergyDrain)] - [CustomComboInfo("Energy Drain Burst Option", "Holds Energy Drain when Chain Stratagem is ready or has less than 10 seconds cooldown remaining.", SCH.JobID, 133)] - SCH_DPS_EnergyDrain_BurstSaver = 16006, + [ParentCombo(SCH_DPS_EnergyDrain)] + [CustomComboInfo("Energy Drain Burst Option", "Holds Energy Drain when Chain Stratagem is ready or has less than 10 seconds cooldown remaining.", SCH.JobID, 133)] + SCH_DPS_EnergyDrain_BurstSaver = 16006, - [ParentCombo(SCH_DPS)] - [CustomComboInfo("Ruin II Moving Option", "Use Ruin II when you have to move.", SCH.JobID, 150)] - SCH_DPS_Ruin2Movement = 16007, + [ParentCombo(SCH_DPS)] + [CustomComboInfo("Ruin II Moving Option", "Use Ruin II when you have to move.", SCH.JobID, 150)] + SCH_DPS_Ruin2Movement = 16007, - [ParentCombo(SCH_DPS)] - [CustomComboInfo("Bio / Biolysis Option", "Automatic DoT uptime.", SCH.JobID, 140)] - SCH_DPS_Bio = 16008, + [ParentCombo(SCH_DPS)] + [CustomComboInfo("Bio / Biolysis Option", "Automatic DoT uptime.", SCH.JobID, 140)] + SCH_DPS_Bio = 16008, - [ParentCombo(SCH_DPS)] - [CustomComboInfo("Dissipation Opener Option", "Use Dissipation at the start of the battle.", SCH.JobID, 170)] - SCH_DPS_Dissipation_Opener = 16009, + [ParentCombo(SCH_DPS)] + [CustomComboInfo("Dissipation Opener Option", "Use Dissipation at the start of the battle.", SCH.JobID, 170)] + SCH_DPS_Dissipation_Opener = 16009, [ReplaceSkill(SCH.ArtOfWar, SCH.ArtOfWarII)] [CustomComboInfo("AoE DPS Feature", "Replaces Art of War with options below.", SCH.JobID, 3)] SCH_AoE = 16010, - [ParentCombo(SCH_AoE)] - [CustomComboInfo("Lucid Dreaming Weave Option", "Adds Lucid Dreaming when MP drops below slider value:", SCH.JobID)] - SCH_AoE_Lucid = 16011, + [ParentCombo(SCH_AoE)] + [CustomComboInfo("Lucid Dreaming Weave Option", "Adds Lucid Dreaming when MP drops below slider value:", SCH.JobID)] + SCH_AoE_Lucid = 16011, - [ParentCombo(SCH_AoE)] - [CustomComboInfo("Aetherflow Weave Option", "Use Aetherflow when out of Aetherflow stacks.", SCH.JobID)] - SCH_AoE_Aetherflow = 16012, + [ParentCombo(SCH_AoE)] + [CustomComboInfo("Aetherflow Weave Option", "Use Aetherflow when out of Aetherflow stacks.", SCH.JobID)] + SCH_AoE_Aetherflow = 16012, #endregion @@ -3432,7 +3440,7 @@ The three digets after RDM.JobID can be used to reorder items in the list [ParentCombo(SMN_SearingLight)] [CustomComboInfo("Searing Light Burst Option", "Casts Searing Light only during Demi phases.\nReflects Demi choice selected under 'Pooled oGCDs Option'.\nNot recommended for SpS Builds.", SMN.JobID, 0, "")] SMN_SearingLight_Burst = 17018, - + [ParentCombo(SMN_SearingLight)] [CustomComboInfo("Searing Flash Combo Option", "Adds Searing Flash to the single target and AoE combos.", SMN.JobID, 1, "", "")] SMN_SearingFlash = 17019, @@ -3463,7 +3471,7 @@ The three digets after RDM.JobID can be used to reorder items in the list [ParentCombo(SMN_Advanced_Combo_DemiSummons_Attacks)] [CustomComboInfo("Lux Solaris Combo Option", "Adds Lux Solaris to the single target and AoE combos.", SMN.JobID, 14, "", "")] SMN_Advanced_Combo_DemiSummons_LuxSolaris = 17029, - + [ReplaceSkill(SMN.Ruin4)] [CustomComboInfo("Ruin III Mobility Feature", "Puts Ruin III on Ruin IV when you don't have Further Ruin.", SMN.JobID, 9, "", "")] SMN_RuinMobility = 17030, diff --git a/XIVSlothCombo/Combos/PvE/BRD.cs b/XIVSlothCombo/Combos/PvE/BRD.cs index 52d3df5af..db87dc824 100644 --- a/XIVSlothCombo/Combos/PvE/BRD.cs +++ b/XIVSlothCombo/Combos/PvE/BRD.cs @@ -40,12 +40,14 @@ public const uint Shadowbite = 16494, Ladonsbite = 25783, BlastArrow = 25784, - RadiantFinale = 25785; + RadiantFinale = 25785, + HeartbreakShot = 36975, + ResonantArrow = 36976, + RadiantEncore = 36977; public static class Buffs { public const ushort - StraightShotReady = 122, RagingStrikes = 125, Barrage = 128, MagesBallad = 135, @@ -55,7 +57,10 @@ public const ushort Troubadour = 1934, BlastArrowReady = 2692, RadiantFinale = 2722, - ShadowbiteReady = 3002; + ShadowbiteReady = 3002, + HawksEye = 3861, + ResonantArrowReady = 3862, + RadiantEncoreReady = 3863; } public static class Debuffs @@ -126,7 +131,7 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim } } - if (HasEffect(Buffs.StraightShotReady)) + if (HasEffect(Buffs.HawksEye)) return LevelChecked(RefulgentArrow) ? RefulgentArrow : StraightShot; @@ -307,6 +312,10 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim return RainOfDeath; if (sidewinderReady) return Sidewinder; + if (HasEffect(Buffs.ResonantArrowReady) && IsEnabled(CustomComboPreset.BRD_Simple_ResonantArrow)) + return ResonantArrow; + if (HasEffect(Buffs.RadiantEncoreReady) && IsEnabled(CustomComboPreset.BRD_Simple_RadiantEncore)) + return RadiantEncore; } return actionID; @@ -370,6 +379,8 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim return RainOfDeath; if (sidewinderReady) return Sidewinder; + if (HasEffect(Buffs.ResonantArrowReady) && IsEnabled(CustomComboPreset.BRD_Simple_ResonantArrow)) + return ResonantArrow; // healing - please move if not appropriate priority if (IsEnabled(CustomComboPreset.BRD_AoE_SecondWind)) @@ -428,7 +439,7 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim if (empyrealReady) return EmpyrealArrow; if (bloodletterReady) - return Bloodletter; + return OriginalHook(Bloodletter); if (sidewinderReady) return Sidewinder; } @@ -607,7 +618,7 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim return BattleVoice; } - if (canWeaveBuffs && barrageReady && !HasEffect(Buffs.StraightShotReady) && HasEffect(Buffs.RagingStrikes)) + if (canWeaveBuffs && barrageReady && !HasEffect(Buffs.HawksEye) && HasEffect(Buffs.RagingStrikes)) { if (LevelChecked(RadiantFinale) && HasEffect(Buffs.RadiantFinale)) return Barrage; @@ -652,6 +663,9 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim else return Sidewinder; } + if (HasEffect(Buffs.RadiantEncoreReady)) + return RadiantEncore; + if (LevelChecked(Bloodletter) && ((!openerFinished && IsOnCooldown(RagingStrikes)) || openerFinished)) { uint bloodletterCharges = GetRemainingCharges(Bloodletter); @@ -666,18 +680,18 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim (HasEffect(Buffs.RadiantFinale) || radiantCD > 10 || !LevelChecked(RadiantFinale)) && bloodletterCharges > 0) || bloodletterCharges > 2) - return Bloodletter; + return OriginalHook(Bloodletter); } if (songArmy && (bloodletterCharges == 3 || ((gauge.SongTimer / 1000) > 30 && bloodletterCharges > 0))) - return Bloodletter; + return OriginalHook(Bloodletter); if (songMage && bloodletterCharges > 0) - return Bloodletter; + return OriginalHook(Bloodletter); if (songNone && bloodletterCharges == 3) - return Bloodletter; + return OriginalHook(Bloodletter); } else if (bloodletterCharges > 0) - return Bloodletter; + return OriginalHook(Bloodletter); } // healing - please move if not appropriate priority @@ -788,8 +802,12 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim } } - if (HasEffect(Buffs.StraightShotReady)) + if (HasEffect(Buffs.HawksEye) || HasEffect(Buffs.Barrage)) return OriginalHook(StraightShot); + + if (HasEffect(Buffs.ResonantArrowReady) && IsEnabled(CustomComboPreset.BRD_Simple_ResonantArrow)) + return ResonantArrow; + } return actionID; @@ -835,10 +853,10 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim if (magesBalladReady || (gauge.Song == Song.MAGE && songTimerInSeconds > 11)) return MagesBallad; - + if (armysPaeonReady || (gauge.Song == Song.ARMY && songTimerInSeconds > 2)) return ArmysPaeon; - + } return actionID; diff --git a/XIVSlothCombo/XIVSlothCombo.cs b/XIVSlothCombo/XIVSlothCombo.cs index 0771ca298..a97794f91 100644 --- a/XIVSlothCombo/XIVSlothCombo.cs +++ b/XIVSlothCombo/XIVSlothCombo.cs @@ -47,7 +47,7 @@ public sealed partial class XIVSlothCombo : IDalamudPlugin AST.JobID, BLM.JobID, //BLU.JobID, - BRD.JobID, + //BRD.JobID, DNC.JobID, DOL.JobID, DRG.JobID, From 3ba0fecd1d756da3eaa43f1b92905a689a421a13 Mon Sep 17 00:00:00 2001 From: NebulousByte <907468+NebulousByte@users.noreply.github.com> Date: Sun, 7 Jul 2024 00:23:01 +0100 Subject: [PATCH 02/11] Fixed Refulgent and WideVolley/Shadowbite --- XIVSlothCombo/Combos/CustomComboPreset.cs | 24 +++++++++++++++++++---- XIVSlothCombo/Combos/PvE/BRD.cs | 22 ++++++++++----------- 2 files changed, 31 insertions(+), 15 deletions(-) diff --git a/XIVSlothCombo/Combos/CustomComboPreset.cs b/XIVSlothCombo/Combos/CustomComboPreset.cs index 2616c58af..1c7a44028 100644 --- a/XIVSlothCombo/Combos/CustomComboPreset.cs +++ b/XIVSlothCombo/Combos/CustomComboPreset.cs @@ -729,13 +729,21 @@ public enum CustomComboPreset [ParentCombo(BRD_ST_SimpleMode)] [CustomComboInfo("Resonant Arrow Option", "Adds Resonant Arrow from Barrage.", BRD.JobID)] - BRD_Simple_ResonantArrow = 3032, + BRD_Simple_ST_ResonantArrow = 3032, [ParentCombo(BRD_ST_SimpleMode)] [CustomComboInfo("Radiant Encore Option", "Adds Radiant Encore during Radiant Finale.", BRD.JobID)] - BRD_Simple_RadiantEncore = 3033, + BRD_Simple_ST_RadiantEncore = 3033, - // Last value = 3033 + [ParentCombo(BRD_AoE_SimpleMode)] + [CustomComboInfo("Resonant Arrow Option", "Adds Resonant Arrow from Barrage.", BRD.JobID)] + BRD_Simple_AoE_ResonantArrow = 3034, + + [ParentCombo(BRD_AoE_SimpleMode)] + [CustomComboInfo("Radiant Encore Option", "Adds Radiant Encore during Radiant Finale.", BRD.JobID)] + BRD_Simple_AoE_RadiantEncore = 3035, + + // Last value = 3035 #endregion @@ -3801,7 +3809,15 @@ The three digets after RDM.JobID can be used to reorder items in the list [CustomComboInfo("Steel Cyclone / Decimate Option", "Adds Steel Cyclone / Decimate to Advanced Mode.", WAR.JobID)] WAR_AoE_Overpower_Decimate = 18028, - // Last value = 18028 + [ParentCombo(WAR_AoE_Overpower)] + [CustomComboInfo("Raw Intuition", "Adds Raw Intuition if your health drops to set threshold.", WAR.JobID)] + WAR_AoE_RawIntuition = 18029, + + [ParentCombo(WAR_ST_StormsPath)] + [CustomComboInfo("Raw Intuition", "Adds Raw Intuition if your health drops to set threshold.", WAR.JobID)] + WAR_ST_RawIntuition = 18030, + + // Last value = 18030 #endregion diff --git a/XIVSlothCombo/Combos/PvE/BRD.cs b/XIVSlothCombo/Combos/PvE/BRD.cs index db87dc824..a47462c69 100644 --- a/XIVSlothCombo/Combos/PvE/BRD.cs +++ b/XIVSlothCombo/Combos/PvE/BRD.cs @@ -41,7 +41,7 @@ public const uint Ladonsbite = 25783, BlastArrow = 25784, RadiantFinale = 25785, - HeartbreakShot = 36975, + WideVolley = 36974, ResonantArrow = 36976, RadiantEncore = 36977; @@ -312,9 +312,9 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim return RainOfDeath; if (sidewinderReady) return Sidewinder; - if (HasEffect(Buffs.ResonantArrowReady) && IsEnabled(CustomComboPreset.BRD_Simple_ResonantArrow)) + if (HasEffect(Buffs.ResonantArrowReady)) return ResonantArrow; - if (HasEffect(Buffs.RadiantEncoreReady) && IsEnabled(CustomComboPreset.BRD_Simple_RadiantEncore)) + if (HasEffect(Buffs.RadiantEncoreReady)) return RadiantEncore; } @@ -379,7 +379,7 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim return RainOfDeath; if (sidewinderReady) return Sidewinder; - if (HasEffect(Buffs.ResonantArrowReady) && IsEnabled(CustomComboPreset.BRD_Simple_ResonantArrow)) + if (HasEffect(Buffs.ResonantArrowReady)) return ResonantArrow; // healing - please move if not appropriate priority @@ -390,11 +390,11 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim } } - bool shadowbiteReady = LevelChecked(Shadowbite) && HasEffect(Buffs.ShadowbiteReady); + bool wideVolleyReady = LevelChecked(WideVolley) && HasEffect(Buffs.HawksEye); bool blastArrowReady = LevelChecked(BlastArrow) && HasEffect(Buffs.BlastArrowReady); - if (shadowbiteReady) - return Shadowbite; + if (wideVolleyReady) + return OriginalHook(WideVolley); if (LevelChecked(ApexArrow) && gauge.SoulVoice == 100 && !IsEnabled(CustomComboPreset.BRD_RemoveApexArrow)) return ApexArrow; if (blastArrowReady) @@ -466,10 +466,10 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim return BlastArrow; } - bool shadowbiteReady = LevelChecked(Shadowbite) && HasEffectAny(Buffs.ShadowbiteReady); + bool wideVolleyReady = LevelChecked(WideVolley) && HasEffect(Buffs.HawksEye); - if (IsEnabled(CustomComboPreset.BRD_AoE_Combo) && shadowbiteReady) - return Shadowbite; + if (IsEnabled(CustomComboPreset.BRD_AoE_Combo) && wideVolleyReady) + return WideVolley; } return actionID; @@ -805,7 +805,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_Simple_ResonantArrow)) + if (HasEffect(Buffs.ResonantArrowReady)) return ResonantArrow; } From 84cdfabe3f9e5226d958348ed7c59c53fc657115 Mon Sep 17 00:00:00 2001 From: NebulousByte <907468+NebulousByte@users.noreply.github.com> Date: Sun, 7 Jul 2024 00:28:18 +0100 Subject: [PATCH 03/11] Removed errant code --- XIVSlothCombo/Combos/CustomComboPreset.cs | 28 ++--------------------- 1 file changed, 2 insertions(+), 26 deletions(-) diff --git a/XIVSlothCombo/Combos/CustomComboPreset.cs b/XIVSlothCombo/Combos/CustomComboPreset.cs index 1c7a44028..d81583233 100644 --- a/XIVSlothCombo/Combos/CustomComboPreset.cs +++ b/XIVSlothCombo/Combos/CustomComboPreset.cs @@ -727,23 +727,7 @@ public enum CustomComboPreset [CustomComboInfo("Cure Option", "Use Variant Cure when HP is below set threshold.", BRD.JobID)] BRD_Variant_Cure = 3031, - [ParentCombo(BRD_ST_SimpleMode)] - [CustomComboInfo("Resonant Arrow Option", "Adds Resonant Arrow from Barrage.", BRD.JobID)] - BRD_Simple_ST_ResonantArrow = 3032, - - [ParentCombo(BRD_ST_SimpleMode)] - [CustomComboInfo("Radiant Encore Option", "Adds Radiant Encore during Radiant Finale.", BRD.JobID)] - BRD_Simple_ST_RadiantEncore = 3033, - - [ParentCombo(BRD_AoE_SimpleMode)] - [CustomComboInfo("Resonant Arrow Option", "Adds Resonant Arrow from Barrage.", BRD.JobID)] - BRD_Simple_AoE_ResonantArrow = 3034, - - [ParentCombo(BRD_AoE_SimpleMode)] - [CustomComboInfo("Radiant Encore Option", "Adds Radiant Encore during Radiant Finale.", BRD.JobID)] - BRD_Simple_AoE_RadiantEncore = 3035, - - // Last value = 3035 + // Last value = 3031 #endregion @@ -3809,15 +3793,7 @@ The three digets after RDM.JobID can be used to reorder items in the list [CustomComboInfo("Steel Cyclone / Decimate Option", "Adds Steel Cyclone / Decimate to Advanced Mode.", WAR.JobID)] WAR_AoE_Overpower_Decimate = 18028, - [ParentCombo(WAR_AoE_Overpower)] - [CustomComboInfo("Raw Intuition", "Adds Raw Intuition if your health drops to set threshold.", WAR.JobID)] - WAR_AoE_RawIntuition = 18029, - - [ParentCombo(WAR_ST_StormsPath)] - [CustomComboInfo("Raw Intuition", "Adds Raw Intuition if your health drops to set threshold.", WAR.JobID)] - WAR_ST_RawIntuition = 18030, - - // Last value = 18030 + // Last value = 18028 #endregion From 5e73ba09d30079de1d8a6de1e9e8185516953554 Mon Sep 17 00:00:00 2001 From: NebulousByte <907468+NebulousByte@users.noreply.github.com> Date: Sun, 7 Jul 2024 00:51:46 +0100 Subject: [PATCH 04/11] Cleanup for Resonant Arrow --- XIVSlothCombo/Combos/PvE/BRD.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/XIVSlothCombo/Combos/PvE/BRD.cs b/XIVSlothCombo/Combos/PvE/BRD.cs index a47462c69..5170cbe3b 100644 --- a/XIVSlothCombo/Combos/PvE/BRD.cs +++ b/XIVSlothCombo/Combos/PvE/BRD.cs @@ -312,8 +312,6 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim return RainOfDeath; if (sidewinderReady) return Sidewinder; - if (HasEffect(Buffs.ResonantArrowReady)) - return ResonantArrow; if (HasEffect(Buffs.RadiantEncoreReady)) return RadiantEncore; } @@ -379,8 +377,6 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim return RainOfDeath; if (sidewinderReady) return Sidewinder; - if (HasEffect(Buffs.ResonantArrowReady)) - return ResonantArrow; // healing - please move if not appropriate priority if (IsEnabled(CustomComboPreset.BRD_AoE_SecondWind)) @@ -392,6 +388,7 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim bool wideVolleyReady = LevelChecked(WideVolley) && HasEffect(Buffs.HawksEye); bool blastArrowReady = LevelChecked(BlastArrow) && HasEffect(Buffs.BlastArrowReady); + bool resonantArrowReady = LevelChecked(ResonantArrow) && HasEffect(Buffs.ResonantArrowReady); if (wideVolleyReady) return OriginalHook(WideVolley); @@ -399,6 +396,8 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim return ApexArrow; if (blastArrowReady) return BlastArrow; + if (resonantArrowReady) + return ResonantArrow; } return actionID; From fb29aef78e5614e942c4185704671b1bd6a44844 Mon Sep 17 00:00:00 2001 From: NebulousByte <907468+NebulousByte@users.noreply.github.com> Date: Sun, 7 Jul 2024 01:40:42 +0100 Subject: [PATCH 05/11] Added Barrage to Simple AoE for free upgraded potency on Shadowbite --- XIVSlothCombo/Combos/PvE/BRD.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/XIVSlothCombo/Combos/PvE/BRD.cs b/XIVSlothCombo/Combos/PvE/BRD.cs index 5170cbe3b..029590f9d 100644 --- a/XIVSlothCombo/Combos/PvE/BRD.cs +++ b/XIVSlothCombo/Combos/PvE/BRD.cs @@ -368,6 +368,7 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim bool empyrealReady = LevelChecked(EmpyrealArrow) && IsOffCooldown(EmpyrealArrow); bool rainOfDeathReady = LevelChecked(RainOfDeath) && GetRemainingCharges(RainOfDeath) > 0; bool sidewinderReady = LevelChecked(Sidewinder) && IsOffCooldown(Sidewinder); + bool barrageReady = LevelChecked(Shadowbite) && IsOffCooldown(Barrage); // Adding Barrage to AoE, but only if we can use Shadowbite. if (LevelChecked(PitchPerfect) && songWanderer && gauge.Repertoire == 3) return OriginalHook(WanderersMinuet); @@ -377,6 +378,8 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim return RainOfDeath; if (sidewinderReady) return Sidewinder; + if (barrageReady) + return Barrage; // healing - please move if not appropriate priority if (IsEnabled(CustomComboPreset.BRD_AoE_SecondWind)) From 32bbf5ac893b2abc02a3d11a5f4371aef7b02aa1 Mon Sep 17 00:00:00 2001 From: NebulousByte <907468+NebulousByte@users.noreply.github.com> Date: Sun, 7 Jul 2024 13:34:55 +0100 Subject: [PATCH 06/11] Moved Radiant Encore --- XIVSlothCombo/Combos/PvE/BRD.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/XIVSlothCombo/Combos/PvE/BRD.cs b/XIVSlothCombo/Combos/PvE/BRD.cs index 029590f9d..1592b346e 100644 --- a/XIVSlothCombo/Combos/PvE/BRD.cs +++ b/XIVSlothCombo/Combos/PvE/BRD.cs @@ -312,8 +312,6 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim return RainOfDeath; if (sidewinderReady) return Sidewinder; - if (HasEffect(Buffs.RadiantEncoreReady)) - return RadiantEncore; } return actionID; @@ -401,6 +399,9 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim return BlastArrow; if (resonantArrowReady) return ResonantArrow; + if (HasEffect(Buffs.RadiantEncoreReady)) + return RadiantEncore; + } return actionID; @@ -631,6 +632,9 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim } } + if (HasEffect(Buffs.RadiantEncoreReady)) + return RadiantEncore; + if (canWeave) { bool empyrealReady = LevelChecked(EmpyrealArrow) && IsOffCooldown(EmpyrealArrow); @@ -665,8 +669,6 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim else return Sidewinder; } - if (HasEffect(Buffs.RadiantEncoreReady)) - return RadiantEncore; if (LevelChecked(Bloodletter) && ((!openerFinished && IsOnCooldown(RagingStrikes)) || openerFinished)) { From 70fa5d917019c72855ac8bb89278cb6da39f9b88 Mon Sep 17 00:00:00 2001 From: NebulousByte <907468+NebulousByte@users.noreply.github.com> Date: Sun, 7 Jul 2024 17:54:06 +0100 Subject: [PATCH 07/11] Adjustments to rotation based on The Balance --- XIVSlothCombo/Combos/PvE/BRD.cs | 52 +++++++++++++++++++++------------ 1 file changed, 34 insertions(+), 18 deletions(-) diff --git a/XIVSlothCombo/Combos/PvE/BRD.cs b/XIVSlothCombo/Combos/PvE/BRD.cs index 1592b346e..b5f1cd5b1 100644 --- a/XIVSlothCombo/Combos/PvE/BRD.cs +++ b/XIVSlothCombo/Combos/PvE/BRD.cs @@ -536,6 +536,10 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim bool minuetReady = IsOffCooldown(WanderersMinuet); bool balladReady = IsOffCooldown(MagesBallad); bool paeonReady = IsOffCooldown(ArmysPaeon); + bool empyrealReady = LevelChecked(EmpyrealArrow) && IsOffCooldown(EmpyrealArrow); + + if (empyrealReady && !openerFinished && JustUsed(WanderersMinuet)) + return EmpyrealArrow; if (canWeave) { @@ -560,7 +564,6 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim if (songMage) { - bool empyrealReady = LevelChecked(EmpyrealArrow) && IsOffCooldown(EmpyrealArrow); // Move to Army's Paeon if < 12 seconds left on song if (songTimerInSeconds < 12 && paeonReady) @@ -601,38 +604,49 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim bool firstMinute = CombatEngageDuration().Minutes == 0; bool restOfFight = CombatEngageDuration().Minutes > 0; - if (ragingReady && ((canWeaveBuffs && firstMinute) || (canWeaveDelayed && restOfFight)) && + if (!openerFinished && (!JustUsed(WanderersMinuet) || HasEffect(Buffs.BattleVoice))) + { + if (ragingReady && ((canWeaveBuffs && firstMinute) || (canWeaveDelayed && restOfFight)) && + (GetCooldownElapsed(BattleVoice) >= 2.3 || battleVoiceReady || !LevelChecked(BattleVoice))) + return RagingStrikes; + } + else if (openerFinished) + { + if (ragingReady && ((canWeaveBuffs && firstMinute) || (canWeaveDelayed && restOfFight)) && (GetCooldownRemainingTime(BattleVoice) <= 5.38 || battleVoiceReady || !LevelChecked(BattleVoice))) - return RagingStrikes; + return RagingStrikes; + + } + + if (canWeaveBuffs && barrageReady && !HasEffect(Buffs.HawksEye) && HasEffect(Buffs.RagingStrikes)) + { + if (LevelChecked(RadiantFinale) && HasEffect(Buffs.RadiantFinale)) + return Barrage; + else if (LevelChecked(BattleVoice) && HasEffect(Buffs.BattleVoice)) + return Barrage; + else if (!LevelChecked(BattleVoice) && HasEffect(Buffs.RagingStrikes)) + return Barrage; + } if (canWeaveBuffs && IsEnabled(CustomComboPreset.BRD_Simple_BuffsRadiant) && radiantReady && (Array.TrueForAll(gauge.Coda, SongIsNotNone) || Array.Exists(gauge.Coda, SongIsWandererMinuet)) && (battleVoiceReady || GetCooldownRemainingTime(BattleVoice) < 0.7) && - (GetBuffRemainingTime(Buffs.RagingStrikes) <= 16.5 || openerFinished) && IsOnCooldown(RagingStrikes)) + (GetBuffRemainingTime(Buffs.RagingStrikes) <= 16.5 || openerFinished)) { if (!JustUsed(RagingStrikes)) return RadiantFinale; } if (canWeaveBuffs && battleVoiceReady && - (GetBuffRemainingTime(Buffs.RagingStrikes) <= 16.5 || openerFinished) && IsOnCooldown(RagingStrikes)) + ((GetBuffRemainingTime(Buffs.RagingStrikes) <= 16.5 || GetBuffRemainingTime(Buffs.RadiantFinale) <= 16.5) || openerFinished) && (IsOnCooldown(RagingStrikes) || IsOnCooldown(RadiantFinale))) { if (!JustUsed(RagingStrikes)) return BattleVoice; } - if (canWeaveBuffs && barrageReady && !HasEffect(Buffs.HawksEye) && HasEffect(Buffs.RagingStrikes)) - { - if (LevelChecked(RadiantFinale) && HasEffect(Buffs.RadiantFinale)) - return Barrage; - else if (LevelChecked(BattleVoice) && HasEffect(Buffs.BattleVoice)) - return Barrage; - else if (!LevelChecked(BattleVoice) && HasEffect(Buffs.RagingStrikes)) - return Barrage; - } } - if (HasEffect(Buffs.RadiantEncoreReady)) + if (HasEffect(Buffs.RadiantEncoreReady) && !JustUsed(RadiantFinale) && GetCooldownElapsed(BattleVoice) >= 4.2f) return RadiantEncore; if (canWeave) @@ -644,7 +658,7 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim float ragingCD = GetCooldownRemainingTime(RagingStrikes); float radiantCD = GetCooldownRemainingTime(RadiantFinale); - if (empyrealReady && ((!openerFinished && IsOnCooldown(RagingStrikes)) || (openerFinished && battleVoiceCD >= 3.5) || !IsEnabled(CustomComboPreset.BRD_Simple_Buffs))) + if (empyrealReady && ((!openerFinished && IsOnCooldown(RagingStrikes) || (!openerFinished && JustUsed(WanderersMinuet)) || (openerFinished && battleVoiceCD >= 3.5) || !IsEnabled(CustomComboPreset.BRD_Simple_Buffs)))) return EmpyrealArrow; if (LevelChecked(PitchPerfect) && songWanderer && @@ -728,11 +742,13 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim }; float ragingStrikesDuration = GetBuffRemainingTime(Buffs.RagingStrikes); + float radiantFinaleDuration = GetBuffRemainingTime(Buffs.RadiantFinale); int ragingJawsRenewTime = PluginConfiguration.GetCustomIntValue(Config.BRD_RagingJawsRenewTime); bool useIronJaws = (LevelChecked(IronJaws) && poisonRecast(4)) || (LevelChecked(IronJaws) && windRecast(4)) || - (LevelChecked(IronJaws) && IsEnabled(CustomComboPreset.BRD_Simple_RagingJaws) && - HasEffect(Buffs.RagingStrikes) && ragingStrikesDuration < ragingJawsRenewTime && + ((LevelChecked(IronJaws) && IsEnabled(CustomComboPreset.BRD_Simple_RagingJaws) || + HasEffect(Buffs.RagingStrikes) && ragingStrikesDuration < ragingJawsRenewTime) && + HasEffect(Buffs.RadiantFinale) && radiantFinaleDuration < 4 && poisonRecast(40) && windRecast(40)); bool dotOpener = (IsEnabled(CustomComboPreset.BRD_Simple_DoTOpener) && !openerFinished) || !IsEnabled(CustomComboPreset.BRD_Simple_DoTOpener); From 203b6b220a9f586df0dd7bba54d4ade6b870e1f4 Mon Sep 17 00:00:00 2001 From: NebulousByte <907468+NebulousByte@users.noreply.github.com> Date: Sun, 7 Jul 2024 19:09:33 +0100 Subject: [PATCH 08/11] Fixed buffs not going off at two minutes --- XIVSlothCombo/Combos/PvE/BRD.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/XIVSlothCombo/Combos/PvE/BRD.cs b/XIVSlothCombo/Combos/PvE/BRD.cs index b5f1cd5b1..943fde13f 100644 --- a/XIVSlothCombo/Combos/PvE/BRD.cs +++ b/XIVSlothCombo/Combos/PvE/BRD.cs @@ -1,6 +1,7 @@ using Dalamud.Game.ClientState.JobGauge.Enums; using Dalamud.Game.ClientState.JobGauge.Types; using Dalamud.Game.ClientState.Statuses; +using ECommons.DalamudServices; using System; using XIVSlothCombo.Combos.PvE.Content; using XIVSlothCombo.Core; @@ -508,10 +509,15 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim if (!InCombat() && (inOpener || openerFinished)) { openerFinished = false; + Svc.Log.Debug($"BRD inOpener: {openerFinished}"); + } if (!IsEnabled(CustomComboPreset.BRD_Simple_NoWaste)) + { openerFinished = true; + Svc.Log.Debug($"BRD inOpener: {openerFinished}"); + } if (IsEnabled(CustomComboPreset.BRD_Simple_Interrupt) && canInterrupt) return All.HeadGraze; @@ -613,7 +619,7 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim else if (openerFinished) { if (ragingReady && ((canWeaveBuffs && firstMinute) || (canWeaveDelayed && restOfFight)) && - (GetCooldownRemainingTime(BattleVoice) <= 5.38 || battleVoiceReady || !LevelChecked(BattleVoice))) + (HasEffect(Buffs.BattleVoice) || battleVoiceReady || !LevelChecked(BattleVoice))) return RagingStrikes; } From 75e8941c038fd09d20365d635a2b4b394c820933 Mon Sep 17 00:00:00 2001 From: NebulousByte <907468+NebulousByte@users.noreply.github.com> Date: Sun, 7 Jul 2024 20:20:06 +0100 Subject: [PATCH 09/11] Removed debug log --- XIVSlothCombo/Combos/PvE/BRD.cs | 5 ----- 1 file changed, 5 deletions(-) diff --git a/XIVSlothCombo/Combos/PvE/BRD.cs b/XIVSlothCombo/Combos/PvE/BRD.cs index 943fde13f..761dc710d 100644 --- a/XIVSlothCombo/Combos/PvE/BRD.cs +++ b/XIVSlothCombo/Combos/PvE/BRD.cs @@ -509,15 +509,10 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim if (!InCombat() && (inOpener || openerFinished)) { openerFinished = false; - Svc.Log.Debug($"BRD inOpener: {openerFinished}"); - } if (!IsEnabled(CustomComboPreset.BRD_Simple_NoWaste)) - { openerFinished = true; - Svc.Log.Debug($"BRD inOpener: {openerFinished}"); - } if (IsEnabled(CustomComboPreset.BRD_Simple_Interrupt) && canInterrupt) return All.HeadGraze; From d2a7b723d924c149cc83b4ee1176fc4d97205b34 Mon Sep 17 00:00:00 2001 From: NebulousByte <907468+NebulousByte@users.noreply.github.com> Date: Thu, 11 Jul 2024 15:29:01 +0100 Subject: [PATCH 10/11] Change for Bard's Pitch Perfect if the Action Change setting is disabled --- 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 761dc710d..d14271873 100644 --- a/XIVSlothCombo/Combos/PvE/BRD.cs +++ b/XIVSlothCombo/Combos/PvE/BRD.cs @@ -665,7 +665,7 @@ protected override uint Invoke(uint actionID, uint lastComboMove, float comboTim if (LevelChecked(PitchPerfect) && songWanderer && (gauge.Repertoire == 3 || (gauge.Repertoire == 2 && empyrealCD < 2)) && ((!openerFinished && IsOnCooldown(RagingStrikes)) || (openerFinished && battleVoiceCD >= 3.5))) - return OriginalHook(WanderersMinuet); + return OriginalHook(PitchPerfect); if (sidewinderReady && ((!openerFinished && IsOnCooldown(RagingStrikes)) || (openerFinished && battleVoiceCD >= 3.5) || !IsEnabled(CustomComboPreset.BRD_Simple_Buffs))) { From dece347cde4f0027647f91adaadee15ae5fc0273 Mon Sep 17 00:00:00 2001 From: Taurenkey Date: Thu, 11 Jul 2024 18:25:32 +0100 Subject: [PATCH 11/11] Formatting fix --- XIVSlothCombo/Combos/CustomComboPreset.cs | 348 +++++++++++----------- 1 file changed, 174 insertions(+), 174 deletions(-) diff --git a/XIVSlothCombo/Combos/CustomComboPreset.cs b/XIVSlothCombo/Combos/CustomComboPreset.cs index 1b5540d79..f12fd3d62 100644 --- a/XIVSlothCombo/Combos/CustomComboPreset.cs +++ b/XIVSlothCombo/Combos/CustomComboPreset.cs @@ -450,10 +450,10 @@ public enum CustomComboPreset [CustomComboInfo("BLU Moon Flute Opener (Level 80)", "Turns Moon Flute into a full opener.\nUse the remaining 2 charges of Winged Reprobation before starting the opener again!\nCan be done with 2.50 spell speed", BLU.JobID, 1)] BLU_NewMoonFluteOpener = 70021, - [BlueInactive(BLU.BreathOfMagic, BLU.MortalFlame)] - [ParentCombo(BLU_NewMoonFluteOpener)] - [CustomComboInfo("DoT Opener", "Changes the opener to apply either Mortal Flame or Breath of Magic instead of using Winged Reprobation.\nRequires 2.20 or faster spell speed", BLU.JobID)] - BLU_NewMoonFluteOpener_DoTOpener = 70022, + [BlueInactive(BLU.BreathOfMagic, BLU.MortalFlame)] + [ParentCombo(BLU_NewMoonFluteOpener)] + [CustomComboInfo("DoT Opener", "Changes the opener to apply either Mortal Flame or Breath of Magic instead of using Winged Reprobation.\nRequires 2.20 or faster spell speed", BLU.JobID)] + BLU_NewMoonFluteOpener_DoTOpener = 70022, [BlueInactive(BLU.Whistle, BLU.Tingle, BLU.MoonFlute, BLU.JKick, BLU.TripleTrident, BLU.Nightbloom, BLU.RoseOfDestruction, BLU.FeatherRain, BLU.Bristle, BLU.GlassDance, BLU.Surpanakha, BLU.MatraMagic, BLU.ShockStrike, BLU.PhantomFlurry)] [ReplaceSkill(BLU.MoonFlute)] @@ -466,70 +466,70 @@ public enum CustomComboPreset [CustomComboInfo("Final Sting Combo", "Turns Final Sting into the buff combo of: Moon Flute > Tingle > Whistle > Final Sting.", BLU.JobID, 3)] BLU_FinalSting = 70002, - [BlueInactive(BLU.RoseOfDestruction, BLU.FeatherRain, BLU.GlassDance, BLU.JKick)] - [ParentCombo(BLU_FinalSting)] - [CustomComboInfo("Off-cooldown Primal Additions", "Adds Rose of Destruction, Feather Rain, Glass Dance, and J Kick to the combo.", BLU.JobID)] - BLU_Primals = 70003, + [BlueInactive(BLU.RoseOfDestruction, BLU.FeatherRain, BLU.GlassDance, BLU.JKick)] + [ParentCombo(BLU_FinalSting)] + [CustomComboInfo("Off-cooldown Primal Additions", "Adds Rose of Destruction, Feather Rain, Glass Dance, and J Kick to the combo.", BLU.JobID)] + BLU_Primals = 70003, - [BlueInactive(BLU.BasicInstinct)] - [ParentCombo(BLU_FinalSting)] - [CustomComboInfo("Solo Mode", "Uses Basic Instinct if you're in an instance and on your own.", BLU.JobID)] - BLU_SoloMode = 70011, + [BlueInactive(BLU.BasicInstinct)] + [ParentCombo(BLU_FinalSting)] + [CustomComboInfo("Solo Mode", "Uses Basic Instinct if you're in an instance and on your own.", BLU.JobID)] + BLU_SoloMode = 70011, [BlueInactive(BLU.RamsVoice, BLU.Ultravibration)] [ReplaceSkill(BLU.Ultravibration)] [CustomComboInfo("Vibe Combo", "Turns Ultravibration into Ram's Voice if Deep Freeze isn't on the target. Will swiftcast Ultravibration if available.", BLU.JobID, 4)] BLU_Ultravibrate = 70005, - [BlueInactive(BLU.HydroPull)] - [ParentCombo(BLU_Ultravibrate)] - [CustomComboInfo("Hydro Pull Setup", "Uses Hydro Pull before using Ram's Voice.", BLU.JobID)] - BLU_HydroPull = 70012, + [BlueInactive(BLU.HydroPull)] + [ParentCombo(BLU_Ultravibrate)] + [CustomComboInfo("Hydro Pull Setup", "Uses Hydro Pull before using Ram's Voice.", BLU.JobID)] + BLU_HydroPull = 70012, [BlueInactive(BLU.FeatherRain, BLU.ShockStrike, BLU.RoseOfDestruction, BLU.GlassDance)] [ReplaceSkill(BLU.FeatherRain)] [CustomComboInfo("Primal Feature", "Turns Feather Rain into Shock Strike, Rose of Destruction, and Glass Dance.\nWill cause primals to desync from Moon Flute burst phases if used on CD.", BLU.JobID, 5)] BLU_PrimalCombo = 70008, - [BlueInactive(BLU.FeatherRain, BLU.ShockStrike, BLU.RoseOfDestruction, BLU.GlassDance)] - [ParentCombo(BLU_PrimalCombo)] - [CustomComboInfo("Moon Flute Burst Pooling Option", "Holds spells if Moon Flute burst is about to occur and spells are off cooldown.", BLU.JobID)] - BLU_PrimalCombo_Pool = 70015, - - [BlueInactive(BLU.JKick)] - [ParentCombo(BLU_PrimalCombo)] - [CustomComboInfo("J Kick Option", "Adds J Kick to the combo.", BLU.JobID)] - BLU_PrimalCombo_JKick = 70013, - - [BlueInactive(BLU.SeaShanty)] - [ParentCombo(BLU_PrimalCombo)] - [CustomComboInfo("Sea Shanty Option", "Adds Sea Shanty to the combo.", BLU.JobID)] - BLU_PrimalCombo_SeaShanty = 70024, - - [BlueInactive(BLU.WingedReprobation)] - [ParentCombo(BLU_PrimalCombo)] - [CustomComboInfo("Winged Reprobration Option", "Adds Winged Reprobation to the combo.", BLU.JobID)] - BLU_PrimalCombo_WingedReprobation = 70025, - - [BlueInactive(BLU.MatraMagic)] - [ParentCombo(BLU_PrimalCombo)] - [CustomComboInfo("Matra Magic Option", "Adds Matra Magic to the combo.", BLU.JobID)] - BLU_PrimalCombo_Matra = 70017, - - [BlueInactive(BLU.Surpanakha)] - [ParentCombo(BLU_PrimalCombo)] - [CustomComboInfo("Surpanakha Option", "Adds Surpanakha to the combo.", BLU.JobID)] - BLU_PrimalCombo_Suparnakha = 70018, - - [BlueInactive(BLU.PhantomFlurry)] - [ParentCombo(BLU_PrimalCombo)] - [CustomComboInfo("Phantom Flurry Option", "Adds Phantom Flurry to the combo.", BLU.JobID)] - BLU_PrimalCombo_PhantomFlurry = 70019, - - [BlueInactive(BLU.Nightbloom, BLU.Bristle)] - [ParentCombo(BLU_PrimalCombo)] - [CustomComboInfo("Nightbloom Option", "Adds Nightbloom to the combo.", BLU.JobID)] - BLU_PrimalCombo_Nightbloom = 70020, + [BlueInactive(BLU.FeatherRain, BLU.ShockStrike, BLU.RoseOfDestruction, BLU.GlassDance)] + [ParentCombo(BLU_PrimalCombo)] + [CustomComboInfo("Moon Flute Burst Pooling Option", "Holds spells if Moon Flute burst is about to occur and spells are off cooldown.", BLU.JobID)] + BLU_PrimalCombo_Pool = 70015, + + [BlueInactive(BLU.JKick)] + [ParentCombo(BLU_PrimalCombo)] + [CustomComboInfo("J Kick Option", "Adds J Kick to the combo.", BLU.JobID)] + BLU_PrimalCombo_JKick = 70013, + + [BlueInactive(BLU.SeaShanty)] + [ParentCombo(BLU_PrimalCombo)] + [CustomComboInfo("Sea Shanty Option", "Adds Sea Shanty to the combo.", BLU.JobID)] + BLU_PrimalCombo_SeaShanty = 70024, + + [BlueInactive(BLU.WingedReprobation)] + [ParentCombo(BLU_PrimalCombo)] + [CustomComboInfo("Winged Reprobration Option", "Adds Winged Reprobation to the combo.", BLU.JobID)] + BLU_PrimalCombo_WingedReprobation = 70025, + + [BlueInactive(BLU.MatraMagic)] + [ParentCombo(BLU_PrimalCombo)] + [CustomComboInfo("Matra Magic Option", "Adds Matra Magic to the combo.", BLU.JobID)] + BLU_PrimalCombo_Matra = 70017, + + [BlueInactive(BLU.Surpanakha)] + [ParentCombo(BLU_PrimalCombo)] + [CustomComboInfo("Surpanakha Option", "Adds Surpanakha to the combo.", BLU.JobID)] + BLU_PrimalCombo_Suparnakha = 70018, + + [BlueInactive(BLU.PhantomFlurry)] + [ParentCombo(BLU_PrimalCombo)] + [CustomComboInfo("Phantom Flurry Option", "Adds Phantom Flurry to the combo.", BLU.JobID)] + BLU_PrimalCombo_PhantomFlurry = 70019, + + [BlueInactive(BLU.Nightbloom, BLU.Bristle)] + [ParentCombo(BLU_PrimalCombo)] + [CustomComboInfo("Nightbloom Option", "Adds Nightbloom to the combo.", BLU.JobID)] + BLU_PrimalCombo_Nightbloom = 70020, [BlueInactive(BLU.SongOfTorment, BLU.Bristle)] [ReplaceSkill(BLU.SongOfTorment)] @@ -2835,37 +2835,37 @@ The three digets after RDM.JobID can be used to reorder items in the list [CustomComboInfo("Single Target DPS Feature", "Adds various options to Dosis I/II/III.", SGE.JobID, 100, "", "")] SGE_ST_DPS = 14001, - [ParentCombo(SGE_ST_DPS)] - [CustomComboInfo("Lucid Dreaming Option", "Weaves Lucid Dreaming when your MP drops below the specified value.", SGE.JobID, 120, "", "")] - SGE_ST_DPS_Lucid = 14002, + [ParentCombo(SGE_ST_DPS)] + [CustomComboInfo("Lucid Dreaming Option", "Weaves Lucid Dreaming when your MP drops below the specified value.", SGE.JobID, 120, "", "")] + SGE_ST_DPS_Lucid = 14002, - [ParentCombo(SGE_ST_DPS)] - [CustomComboInfo("Eukrasian Dosis Option", "Automatic DoT Uptime.", SGE.JobID, 110, "", "")] - SGE_ST_DPS_EDosis = 14003, + [ParentCombo(SGE_ST_DPS)] + [CustomComboInfo("Eukrasian Dosis Option", "Automatic DoT Uptime.", SGE.JobID, 110, "", "")] + SGE_ST_DPS_EDosis = 14003, - [ParentCombo(SGE_ST_DPS)] - [CustomComboInfo("Movement Options", "Use selected instant cast actions while moving.", SGE.JobID, 113, "", "")] - SGE_ST_DPS_Movement = 14004, + [ParentCombo(SGE_ST_DPS)] + [CustomComboInfo("Movement Options", "Use selected instant cast actions while moving.", SGE.JobID, 113, "", "")] + SGE_ST_DPS_Movement = 14004, - [ParentCombo(SGE_ST_DPS)] - [CustomComboInfo("Phlegma Option", "Use Phlegma if available and within range.", SGE.JobID, 111, "", "")] - SGE_ST_DPS_Phlegma = 14005, + [ParentCombo(SGE_ST_DPS)] + [CustomComboInfo("Phlegma Option", "Use Phlegma if available and within range.", SGE.JobID, 111, "", "")] + SGE_ST_DPS_Phlegma = 14005, - [ParentCombo(SGE_ST_DPS)] - [CustomComboInfo("Kardia Reminder Option", "Adds Kardia when not under the effect.", SGE.JobID, 122, "", "")] - SGE_ST_DPS_Kardia = 14006, + [ParentCombo(SGE_ST_DPS)] + [CustomComboInfo("Kardia Reminder Option", "Adds Kardia when not under the effect.", SGE.JobID, 122, "", "")] + SGE_ST_DPS_Kardia = 14006, - [ParentCombo(SGE_ST_DPS)] - [CustomComboInfo("Rhizomata Option", "Weaves Rhizomata when Addersgall gauge falls below the specified value.", SGE.JobID, 121, "", "")] - SGE_ST_DPS_Rhizo = 14007, + [ParentCombo(SGE_ST_DPS)] + [CustomComboInfo("Rhizomata Option", "Weaves Rhizomata when Addersgall gauge falls below the specified value.", SGE.JobID, 121, "", "")] + SGE_ST_DPS_Rhizo = 14007, - [ParentCombo(SGE_ST_DPS)] - [CustomComboInfo("Psych Option", "Weaves(?) Psych when available.", SGE.JobID, 112, "", "")] - SGE_ST_DPS_Psyche = 14008, + [ParentCombo(SGE_ST_DPS)] + [CustomComboInfo("Psych Option", "Weaves(?) Psych when available.", SGE.JobID, 112, "", "")] + SGE_ST_DPS_Psyche = 14008, - [ParentCombo(SGE_ST_DPS)] - [CustomComboInfo("Addersgall Overflow Protection", "Weaves Druochole when Addersgall gauge is greater than or equal to the specified value.", SGE.JobID, 123, "", "")] - SGE_ST_DPS_AddersgallProtect = 14054, + [ParentCombo(SGE_ST_DPS)] + [CustomComboInfo("Addersgall Overflow Protection", "Weaves Druochole when Addersgall gauge is greater than or equal to the specified value.", SGE.JobID, 123, "", "")] + SGE_ST_DPS_AddersgallProtect = 14054, #endregion @@ -2874,33 +2874,33 @@ The three digets after RDM.JobID can be used to reorder items in the list [CustomComboInfo("AoE DPS Feature", "Adds various options to Dyskrasia I & II. Requires a target.", SGE.JobID, 200, "", "")] SGE_AoE_DPS = 14009, - [ParentCombo(SGE_AoE_DPS)] - [CustomComboInfo("Phlegma Option", "Uses Phlegma if available.", SGE.JobID, 3, "", "")] - SGE_AoE_DPS_Phlegma = 14010, + [ParentCombo(SGE_AoE_DPS)] + [CustomComboInfo("Phlegma Option", "Uses Phlegma if available.", SGE.JobID, 3, "", "")] + SGE_AoE_DPS_Phlegma = 14010, - [ParentCombo(SGE_AoE_DPS)] - [CustomComboInfo("Toxikon Option", "Use Toxikon if available.", SGE.JobID, 4, "", "")] - SGE_AoE_DPS_Toxikon = 14011, + [ParentCombo(SGE_AoE_DPS)] + [CustomComboInfo("Toxikon Option", "Use Toxikon if available.", SGE.JobID, 4, "", "")] + SGE_AoE_DPS_Toxikon = 14011, - [ParentCombo(SGE_AoE_DPS)] - [CustomComboInfo("Psyche Option", "Weaves Psyche if available.", SGE.JobID, 2, "", "")] - SGE_AoE_DPS_Psyche = 14051, + [ParentCombo(SGE_AoE_DPS)] + [CustomComboInfo("Psyche Option", "Weaves Psyche if available.", SGE.JobID, 2, "", "")] + SGE_AoE_DPS_Psyche = 14051, - [ParentCombo(SGE_AoE_DPS)] - [CustomComboInfo("Eukrasia Option", "Uses Eukrasia for Eukrasia Dyskrasia.", SGE.JobID, 1, "", "")] - SGE_AoE_DPS_EDyskrasia = 14052, + [ParentCombo(SGE_AoE_DPS)] + [CustomComboInfo("Eukrasia Option", "Uses Eukrasia for Eukrasia Dyskrasia.", SGE.JobID, 1, "", "")] + SGE_AoE_DPS_EDyskrasia = 14052, - [ParentCombo(SGE_AoE_DPS)] - [CustomComboInfo("Lucid Dreaming Option", "Weaves Lucid Dreaming when your MP falls below the specified value.", SGE.JobID, 4, "", "")] - SGE_AoE_DPS_Lucid = 14012, + [ParentCombo(SGE_AoE_DPS)] + [CustomComboInfo("Lucid Dreaming Option", "Weaves Lucid Dreaming when your MP falls below the specified value.", SGE.JobID, 4, "", "")] + SGE_AoE_DPS_Lucid = 14012, - [ParentCombo(SGE_AoE_DPS)] - [CustomComboInfo("Rhizomata Option", "Weaves Rhizomata when Addersgall gauge falls below the specified value.", SGE.JobID, 5, "", "")] - SGE_AoE_DPS_Rhizo = 14013, + [ParentCombo(SGE_AoE_DPS)] + [CustomComboInfo("Rhizomata Option", "Weaves Rhizomata when Addersgall gauge falls below the specified value.", SGE.JobID, 5, "", "")] + SGE_AoE_DPS_Rhizo = 14013, - [ParentCombo(SGE_AoE_DPS)] - [CustomComboInfo("Addersgall Overflow Protection", "Weaves Druochole when Addersgall gauge is greater than or equal to the specified value.", SGE.JobID, 6, "", "")] - SGE_AoE_DPS_AddersgallProtect = 14053, + [ParentCombo(SGE_AoE_DPS)] + [CustomComboInfo("Addersgall Overflow Protection", "Weaves Druochole when Addersgall gauge is greater than or equal to the specified value.", SGE.JobID, 6, "", "")] + SGE_AoE_DPS_AddersgallProtect = 14053, #endregion #region Diagnosis Simple Single Target Heal @@ -2958,45 +2958,45 @@ The three digets after RDM.JobID can be used to reorder items in the list [CustomComboInfo("AoE Heal Feature", "Customize your AoE healing to your liking.", SGE.JobID, 500, "", "")] SGE_AoE_Heal = 14026, - [ParentCombo(SGE_AoE_Heal)] - [CustomComboInfo("Physis Option", "Adds Physis.", SGE.JobID, 504, "", "")] - SGE_AoE_Heal_Physis = 14027, + [ParentCombo(SGE_AoE_Heal)] + [CustomComboInfo("Physis Option", "Adds Physis.", SGE.JobID, 504, "", "")] + SGE_AoE_Heal_Physis = 14027, - [ParentCombo(SGE_AoE_Heal)] - [CustomComboInfo("Philosophia Option", "Adds Philosophia.", SGE.JobID, 505, "", "")] - SGE_AoE_Heal_Philosophia = 14050, + [ParentCombo(SGE_AoE_Heal)] + [CustomComboInfo("Philosophia Option", "Adds Philosophia.", SGE.JobID, 505, "", "")] + SGE_AoE_Heal_Philosophia = 14050, - [ParentCombo(SGE_AoE_Heal)] - [CustomComboInfo("Eukrasian Prognosis Option", "Prognosis becomes Eukrasian Prognosis if the shield is not applied.", SGE.JobID, 520, "", "")] - SGE_AoE_Heal_EPrognosis = 14028, + [ParentCombo(SGE_AoE_Heal)] + [CustomComboInfo("Eukrasian Prognosis Option", "Prognosis becomes Eukrasian Prognosis if the shield is not applied.", SGE.JobID, 520, "", "")] + SGE_AoE_Heal_EPrognosis = 14028, - [ParentCombo(SGE_AoE_Heal_EPrognosis)] - [CustomComboInfo("Ignore Shield Check", "Warning, will force the use of Eukrasia Prognosis, and normal Prognosis will be unavailable.", SGE.JobID, 520, "", "")] - SGE_AoE_Heal_EPrognosis_IgnoreShield = 14029, + [ParentCombo(SGE_AoE_Heal_EPrognosis)] + [CustomComboInfo("Ignore Shield Check", "Warning, will force the use of Eukrasia Prognosis, and normal Prognosis will be unavailable.", SGE.JobID, 520, "", "")] + SGE_AoE_Heal_EPrognosis_IgnoreShield = 14029, - [ParentCombo(SGE_AoE_Heal)] - [CustomComboInfo("Holos Option", "Adds Holos.", SGE.JobID, 505, "", "")] - SGE_AoE_Heal_Holos = 14030, + [ParentCombo(SGE_AoE_Heal)] + [CustomComboInfo("Holos Option", "Adds Holos.", SGE.JobID, 505, "", "")] + SGE_AoE_Heal_Holos = 14030, - [ParentCombo(SGE_AoE_Heal)] - [CustomComboInfo("Panhaima Option", "Adds Panhaima.", SGE.JobID, 506, "", "")] - SGE_AoE_Heal_Panhaima = 14031, + [ParentCombo(SGE_AoE_Heal)] + [CustomComboInfo("Panhaima Option", "Adds Panhaima.", SGE.JobID, 506, "", "")] + SGE_AoE_Heal_Panhaima = 14031, - [ParentCombo(SGE_AoE_Heal)] - [CustomComboInfo("Pepsis Option", "Triggers Pepsis if a shield is present.", SGE.JobID, 507, "", "")] - SGE_AoE_Heal_Pepsis = 14032, + [ParentCombo(SGE_AoE_Heal)] + [CustomComboInfo("Pepsis Option", "Triggers Pepsis if a shield is present.", SGE.JobID, 507, "", "")] + SGE_AoE_Heal_Pepsis = 14032, - [ParentCombo(SGE_AoE_Heal)] - [CustomComboInfo("Ixochole Option", "Adds Ixochole.", SGE.JobID, 503, "", "")] - SGE_AoE_Heal_Ixochole = 14033, + [ParentCombo(SGE_AoE_Heal)] + [CustomComboInfo("Ixochole Option", "Adds Ixochole.", SGE.JobID, 503, "", "")] + SGE_AoE_Heal_Ixochole = 14033, - [ParentCombo(SGE_AoE_Heal)] - [CustomComboInfo("Kerachole Option", "Adds Kerachole.", SGE.JobID, 502, "", "")] - SGE_AoE_Heal_Kerachole = 14035, + [ParentCombo(SGE_AoE_Heal)] + [CustomComboInfo("Kerachole Option", "Adds Kerachole.", SGE.JobID, 502, "", "")] + SGE_AoE_Heal_Kerachole = 14035, - [ParentCombo(SGE_AoE_Heal)] - [CustomComboInfo("Rhizomata Option", "Adds Rhizomata when Addersgall is 0.", SGE.JobID, 501, "", "")] - SGE_AoE_Heal_Rhizomata = 14036, + [ParentCombo(SGE_AoE_Heal)] + [CustomComboInfo("Rhizomata Option", "Adds Rhizomata when Addersgall is 0.", SGE.JobID, 501, "", "")] + SGE_AoE_Heal_Rhizomata = 14036, #endregion #region Misc Healing @@ -3031,21 +3031,21 @@ The three digets after RDM.JobID can be used to reorder items in the list [CustomComboInfo("Spell Overlap Protection", "Prevents you from wasting actions if under the effect of someone else's actions", SGE.JobID, 1000, "", "")] SGE_OverProtect = 14043, - [ParentCombo(SGE_OverProtect)] - [CustomComboInfo("Under Kerachole", "Don't use Kerachole when under the effect of someone's Kerachole", SGE.JobID, 1000, "", "")] - SGE_OverProtect_Kerachole = 14044, + [ParentCombo(SGE_OverProtect)] + [CustomComboInfo("Under Kerachole", "Don't use Kerachole when under the effect of someone's Kerachole", SGE.JobID, 1000, "", "")] + SGE_OverProtect_Kerachole = 14044, - [ParentCombo(SGE_OverProtect_Kerachole)] - [CustomComboInfo("Under Sacred Soil", "Don't use Kerachole when under the effect of someone's Sacred Soil", SGE.JobID, 1000, "", "")] - SGE_OverProtect_SacredSoil = 14045, + [ParentCombo(SGE_OverProtect_Kerachole)] + [CustomComboInfo("Under Sacred Soil", "Don't use Kerachole when under the effect of someone's Sacred Soil", SGE.JobID, 1000, "", "")] + SGE_OverProtect_SacredSoil = 14045, - [ParentCombo(SGE_OverProtect)] - [CustomComboInfo("Under Panhaima", "Don't use Panhaima when under the effect of someone's Panhaima", SGE.JobID, 1000, "", "")] - SGE_OverProtect_Panhaima = 14046, + [ParentCombo(SGE_OverProtect)] + [CustomComboInfo("Under Panhaima", "Don't use Panhaima when under the effect of someone's Panhaima", SGE.JobID, 1000, "", "")] + SGE_OverProtect_Panhaima = 14046, - [ParentCombo(SGE_OverProtect)] - [CustomComboInfo("Under Philosophia", "Don't use Philosophia when under the effect of someone's Philosophia", SGE.JobID, 1000, "", "")] - SGE_OverProtect_Philosophia = 14047, + [ParentCombo(SGE_OverProtect)] + [CustomComboInfo("Under Philosophia", "Don't use Philosophia when under the effect of someone's Philosophia", SGE.JobID, 1000, "", "")] + SGE_OverProtect_Philosophia = 14047, [Variant] [VariantParent(SGE_ST_DPS_EDosis, SGE_AoE_DPS)] @@ -3303,50 +3303,50 @@ The three digets after RDM.JobID can be used to reorder items in the list [CustomComboInfo("Single Target DPS Feature", "Replaces Ruin I / Broils with options below", SCH.JobID, 1)] SCH_DPS = 16001, - [ParentCombo(SCH_DPS)] - [CustomComboInfo("Lucid Dreaming Weave Option", "Adds Lucid Dreaming when MP drops below slider value:", SCH.JobID, 110)] - SCH_DPS_Lucid = 16002, + [ParentCombo(SCH_DPS)] + [CustomComboInfo("Lucid Dreaming Weave Option", "Adds Lucid Dreaming when MP drops below slider value:", SCH.JobID, 110)] + SCH_DPS_Lucid = 16002, - [ParentCombo(SCH_DPS)] - [CustomComboInfo("Chain Stratagem / Baneful Impact Weave Option", "Adds Chain Stratagem & Baneful Impact on cooldown with overlap protection", SCH.JobID, 120)] - SCH_DPS_ChainStrat = 16003, + [ParentCombo(SCH_DPS)] + [CustomComboInfo("Chain Stratagem / Baneful Impact Weave Option", "Adds Chain Stratagem & Baneful Impact on cooldown with overlap protection", SCH.JobID, 120)] + SCH_DPS_ChainStrat = 16003, - [ParentCombo(SCH_DPS)] - [CustomComboInfo("Aetherflow Weave Option", "Use Aetherflow when out of Aetherflow stacks.", SCH.JobID, 130)] - SCH_DPS_Aetherflow = 16004, + [ParentCombo(SCH_DPS)] + [CustomComboInfo("Aetherflow Weave Option", "Use Aetherflow when out of Aetherflow stacks.", SCH.JobID, 130)] + SCH_DPS_Aetherflow = 16004, - [ParentCombo(SCH_DPS)] - [CustomComboInfo("Energy Drain Weave Option", "Use Energy Drain to consume remaining Aetherflow stacks when Aetherflow is about to come off cooldown.", SCH.JobID, 131)] - SCH_DPS_EnergyDrain = 16005, + [ParentCombo(SCH_DPS)] + [CustomComboInfo("Energy Drain Weave Option", "Use Energy Drain to consume remaining Aetherflow stacks when Aetherflow is about to come off cooldown.", SCH.JobID, 131)] + SCH_DPS_EnergyDrain = 16005, - [ParentCombo(SCH_DPS_EnergyDrain)] - [CustomComboInfo("Energy Drain Burst Option", "Holds Energy Drain when Chain Stratagem is ready or has less than 10 seconds cooldown remaining.", SCH.JobID, 133)] - SCH_DPS_EnergyDrain_BurstSaver = 16006, + [ParentCombo(SCH_DPS_EnergyDrain)] + [CustomComboInfo("Energy Drain Burst Option", "Holds Energy Drain when Chain Stratagem is ready or has less than 10 seconds cooldown remaining.", SCH.JobID, 133)] + SCH_DPS_EnergyDrain_BurstSaver = 16006, - [ParentCombo(SCH_DPS)] - [CustomComboInfo("Ruin II Moving Option", "Use Ruin II when you have to move.", SCH.JobID, 150)] - SCH_DPS_Ruin2Movement = 16007, + [ParentCombo(SCH_DPS)] + [CustomComboInfo("Ruin II Moving Option", "Use Ruin II when you have to move.", SCH.JobID, 150)] + SCH_DPS_Ruin2Movement = 16007, - [ParentCombo(SCH_DPS)] - [CustomComboInfo("Bio / Biolysis Option", "Automatic DoT uptime.", SCH.JobID, 140)] - SCH_DPS_Bio = 16008, + [ParentCombo(SCH_DPS)] + [CustomComboInfo("Bio / Biolysis Option", "Automatic DoT uptime.", SCH.JobID, 140)] + SCH_DPS_Bio = 16008, - [ParentCombo(SCH_DPS)] - [CustomComboInfo("Dissipation Opener Option", "Use Dissipation at the start of the battle.", SCH.JobID, 170)] - SCH_DPS_Dissipation_Opener = 16009, + [ParentCombo(SCH_DPS)] + [CustomComboInfo("Dissipation Opener Option", "Use Dissipation at the start of the battle.", SCH.JobID, 170)] + SCH_DPS_Dissipation_Opener = 16009, [ReplaceSkill(SCH.ArtOfWar, SCH.ArtOfWarII)] [CustomComboInfo("AoE DPS Feature", "Replaces Art of War with options below.", SCH.JobID, 3)] SCH_AoE = 16010, - [ParentCombo(SCH_AoE)] - [CustomComboInfo("Lucid Dreaming Weave Option", "Adds Lucid Dreaming when MP drops below slider value:", SCH.JobID)] - SCH_AoE_Lucid = 16011, + [ParentCombo(SCH_AoE)] + [CustomComboInfo("Lucid Dreaming Weave Option", "Adds Lucid Dreaming when MP drops below slider value:", SCH.JobID)] + SCH_AoE_Lucid = 16011, - [ParentCombo(SCH_AoE)] - [CustomComboInfo("Aetherflow Weave Option", "Use Aetherflow when out of Aetherflow stacks.", SCH.JobID)] - SCH_AoE_Aetherflow = 16012, + [ParentCombo(SCH_AoE)] + [CustomComboInfo("Aetherflow Weave Option", "Use Aetherflow when out of Aetherflow stacks.", SCH.JobID)] + SCH_AoE_Aetherflow = 16012, #endregion @@ -3514,7 +3514,7 @@ The three digets after RDM.JobID can be used to reorder items in the list [ParentCombo(SMN_SearingLight)] [CustomComboInfo("Searing Light Burst Option", "Casts Searing Light only during Demi phases.\nReflects Demi choice selected under 'Pooled oGCDs Option'.\nNot recommended for SpS Builds.", SMN.JobID, 0, "")] SMN_SearingLight_Burst = 17018, - + [ParentCombo(SMN_SearingLight)] [CustomComboInfo("Searing Flash Combo Option", "Adds Searing Flash to the single target and AoE combos.", SMN.JobID, 1, "", "")] SMN_SearingFlash = 17019, @@ -3545,7 +3545,7 @@ The three digets after RDM.JobID can be used to reorder items in the list [ParentCombo(SMN_Advanced_Combo_DemiSummons_Attacks)] [CustomComboInfo("Lux Solaris Combo Option", "Adds Lux Solaris to the single target and AoE combos.", SMN.JobID, 14, "", "")] SMN_Advanced_Combo_DemiSummons_LuxSolaris = 17029, - + [ReplaceSkill(SMN.Ruin4)] [CustomComboInfo("Ruin III Mobility Feature", "Puts Ruin III on Ruin IV when you don't have Further Ruin.", SMN.JobID, 9, "", "")] SMN_RuinMobility = 17030,