diff --git a/BossMod/Autorotation/Standard/akechi/AkechiTools.cs b/BossMod/Autorotation/Standard/akechi/AkechiTools.cs index 326426cb7c..2ea4d6e9c7 100644 --- a/BossMod/Autorotation/Standard/akechi/AkechiTools.cs +++ b/BossMod/Autorotation/Standard/akechi/AkechiTools.cs @@ -1152,23 +1152,28 @@ public sealed override void Execute(StrategyValues strategy, ref Actor? primaryT static class ModuleExtensions { #region Shared Definitions - /// Defines our shared AOE (rotation) and Hold strategies. + /// Defines our shared AOE (rotation) strategies. /// The definitions of our base module's strategies. /// - Options for shared custom strategies to be used via AutoRotation or Cooldown Planner - public static RotationModuleDefinition DefineShared(this RotationModuleDefinition res) + public static RotationModuleDefinition.ConfigRef DefineAOE(this RotationModuleDefinition res) { - res.Define(SharedTrack.AOE).As("AOE", uiPriority: 300) + return res.Define(SharedTrack.AOE).As("AOE", uiPriority: 300) .AddOption(AOEStrategy.Automatic, "Auto", "Automatically execute optimal rotation based on targets", supportedTargets: ActionTargets.Hostile) .AddOption(AOEStrategy.ForceST, "ForceST", "Force-execute Single Target", supportedTargets: ActionTargets.Hostile) .AddOption(AOEStrategy.ForceAOE, "ForceAOE", "Force-execute AOE rotation", supportedTargets: ActionTargets.Hostile); + } - res.Define(SharedTrack.Hold).As("Hold", uiPriority: 290) + /// Defines our shared Hold strategies. + /// The definitions of our base module's strategies. + /// - Options for shared custom strategies to be used via AutoRotation or Cooldown Planner + public static RotationModuleDefinition.ConfigRef DefineHold(this RotationModuleDefinition res) + { + return res.Define(SharedTrack.Hold).As("Hold", uiPriority: 290) .AddOption(HoldStrategy.DontHold, "DontHold", "Allow use of all cooldowns, buffs, or gauge abilities") .AddOption(HoldStrategy.HoldCooldowns, "Hold", "Forbid use of all cooldowns only") .AddOption(HoldStrategy.HoldGauge, "HoldGauge", "Forbid use of all gauge abilities only") .AddOption(HoldStrategy.HoldBuffs, "HoldBuffs", "Forbid use of all raidbuffs or buff-related abilities only") .AddOption(HoldStrategy.HoldEverything, "HoldEverything", "Forbid use of all cooldowns, buffs, and gauge abilities"); - return res; } /// A quick and easy helper for shortcutting how we define our GCD abilities. diff --git a/BossMod/Autorotation/Standard/akechi/DPS/AkechiBLM.cs b/BossMod/Autorotation/Standard/akechi/DPS/AkechiBLM.cs index a1a0adac83..0373f55bf2 100644 --- a/BossMod/Autorotation/Standard/akechi/DPS/AkechiBLM.cs +++ b/BossMod/Autorotation/Standard/akechi/DPS/AkechiBLM.cs @@ -32,7 +32,11 @@ public static RotationModuleDefinition Definition() BitMask.Build(Class.THM, Class.BLM), //Job 100); //Level supported - res.DefineShared(); + res.DefineAOE().AddAssociatedActions( + AID.Fire1, AID.Fire2, AID.Fire3, AID.Fire4, AID.HighFire2, + AID.Blizzard1, AID.Blizzard2, AID.Blizzard3, AID.Freeze, AID.Blizzard4, AID.HighBlizzard2, + AID.Flare, AID.Despair, AID.FlareStar); + res.DefineHold(); res.Define(Track.Movement).As("Movement", uiPriority: 195) .AddOption(MovementStrategy.Allow, "Allow", "Allow the use of all appropriate abilities for movement") .AddOption(MovementStrategy.AllowNoScathe, "AllowNoScathe", "Allow the use of all appropriate abilities for movement except for Scathe") diff --git a/BossMod/Autorotation/Standard/akechi/Tank/AkechiDRK.cs b/BossMod/Autorotation/Standard/akechi/Tank/AkechiDRK.cs index 4eb5d9f139..bdea2bc8f6 100644 --- a/BossMod/Autorotation/Standard/akechi/Tank/AkechiDRK.cs +++ b/BossMod/Autorotation/Standard/akechi/Tank/AkechiDRK.cs @@ -29,14 +29,16 @@ public static RotationModuleDefinition Definition() BitMask.Build((int)Class.DRK), //Job 100); //Level supported - res.DefineShared(); + res.DefineAOE().AddAssociatedActions(AID.HardSlash, AID.SyphonStrike, AID.Souleater, AID.Unleash, AID.StalwartSoul); ; + res.DefineHold(); res.Define(Track.Blood).As("Blood", "Blood", uiPriority: 200) .AddOption(BloodStrategy.Automatic, "Automatic", "Automatically use Blood-related abilities optimally") .AddOption(BloodStrategy.OnlyBloodspiller, "Only Bloodspiller", "Uses Bloodspiller optimally as Blood spender only, regardless of targets", 0, 0, ActionTargets.Hostile, 62) .AddOption(BloodStrategy.OnlyQuietus, "Only Quietus", "Uses Quietus optimally as Blood spender only, regardless of targets", 0, 0, ActionTargets.Hostile, 64) .AddOption(BloodStrategy.ForceBloodspiller, "Force Bloodspiller", "Force use Bloodspiller ASAP", 0, 0, ActionTargets.Hostile, 62) .AddOption(BloodStrategy.ForceQuietus, "Force Quietus", "Force use Quietus ASAP", 0, 0, ActionTargets.Hostile, 64) - .AddOption(BloodStrategy.Conserve, "Conserve", "Conserves all Blood-related abilities as much as possible"); + .AddOption(BloodStrategy.Conserve, "Conserve", "Conserves all Blood-related abilities as much as possible") + .AddAssociatedActions(AID.Bloodspiller, AID.Quietus); res.Define(Track.MP).As("MP", "MP", uiPriority: 190) .AddOption(MPStrategy.Optimal, "Optimal", "Use MP actions optimally; 2 for 1 minute, 4 (or 5 if Dark Arts is active) for 2 minutes") .AddOption(MPStrategy.Auto3k, "Auto 3k", "Automatically decide best MP action to use; Uses when at 3000+ MP", 0, 0, ActionTargets.Self, 30) @@ -60,7 +62,7 @@ public static RotationModuleDefinition Definition() .AddOption(CarveStrategy.ForceCarve, "Force Carve and Spit", "Force use Carve and Spit ASAP", 60, 0, ActionTargets.Hostile, 60) .AddOption(CarveStrategy.ForceDrain, "Force Abyssal Drain", "Force use Abyssal Drain ASAP", 60, 0, ActionTargets.Hostile, 56) .AddOption(CarveStrategy.Delay, "Delay", "Delay the use of Carve and Spit for strategic reasons", 0, 0, ActionTargets.None, 56) - .AddAssociatedActions(AID.CarveAndSpit); + .AddAssociatedActions(AID.CarveAndSpit, AID.AbyssalDrain); res.Define(Track.DeliriumCombo).As("Delirium Combo", "Scarlet", uiPriority: 180) .AddOption(DeliriumComboStrategy.Automatic, "Auto", "Automatically decide when to use Delirium Combo", 0, 0, ActionTargets.Hostile, 96) .AddOption(DeliriumComboStrategy.ScarletDelirum, "Scarlet Delirium", "Force use Scarlet Delirium ASAP", 0, 0, ActionTargets.Hostile, 96) @@ -81,7 +83,7 @@ public static RotationModuleDefinition Definition() .AddOption(UnmendStrategy.Allow, "Allow", "Allow use of Unmend when out of melee range", supportedTargets: ActionTargets.Hostile) .AddOption(UnmendStrategy.Forbid, "Forbid", "Prohibit use of Unmend") .AddAssociatedActions(AID.Unmend); - res.DefineOGCD(Track.Delirium, AID.Delirium, "Delirium", "Deli.", uiPriority: 170, 60, 15, ActionTargets.Self, 35); + res.DefineOGCD(Track.Delirium, AID.Delirium, "Delirium", "Deli.", uiPriority: 170, 60, 15, ActionTargets.Self, 35).AddAssociatedActions(AID.BloodWeapon, AID.Delirium); res.DefineOGCD(Track.SaltedEarth, AID.SaltedEarth, "Salted Earth", "S.Earth", uiPriority: 140, 90, 15, ActionTargets.Self, 52); res.DefineOGCD(Track.SaltAndDarkness, AID.SaltAndDarkness, "Salt & Darkness", "Salt & D.", uiPriority: 135, 20, 0, ActionTargets.Self, 86); res.DefineOGCD(Track.LivingShadow, AID.LivingShadow, "Living Shadow", "L.Shadow", uiPriority: 175, 120, 20, ActionTargets.Self, 80); diff --git a/BossMod/Autorotation/Standard/akechi/Tank/AkechiGNB.cs b/BossMod/Autorotation/Standard/akechi/Tank/AkechiGNB.cs index e167e3b2d4..526f5d5551 100644 --- a/BossMod/Autorotation/Standard/akechi/Tank/AkechiGNB.cs +++ b/BossMod/Autorotation/Standard/akechi/Tank/AkechiGNB.cs @@ -40,7 +40,8 @@ public static RotationModuleDefinition Definition() .AddOption(AOEStrategy.ForceSTwithoutO, "Force ST without Overcap", "Force ST rotation without overcap protection", supportedTargets: ActionTargets.Hostile) .AddOption(AOEStrategy.ForceAOEwithO, "Force AOE with Overcap", "Force AOE rotation with overcap protection") .AddOption(AOEStrategy.ForceAOEwithoutO, "Force AOE without Overcap", "Force AOE rotation without overcap protection") - .AddOption(AOEStrategy.GenerateDowntime, "Generate Downtime", "Generate cartridges before downtime"); + .AddOption(AOEStrategy.GenerateDowntime, "Generate Downtime", "Generate cartridges before downtime") + .AddAssociatedActions(AID.KeenEdge, AID.BrutalShell, AID.SolidBarrel, AID.DemonSlice, AID.DemonSlaughter); res.Define(Track.Cooldowns).As("Hold", uiPriority: 190) .AddOption(CooldownStrategy.Allow, "Allow", "Allows the use of all cooldowns & buffs; will use them optimally") .AddOption(CooldownStrategy.Forbid, "Hold", "Forbids the use of all cooldowns & buffs; will not use any actions with a cooldown timer"); diff --git a/BossMod/Autorotation/Standard/akechi/Tank/AkechiPLD.cs b/BossMod/Autorotation/Standard/akechi/Tank/AkechiPLD.cs index 85b9c6458e..1ce563afbf 100644 --- a/BossMod/Autorotation/Standard/akechi/Tank/AkechiPLD.cs +++ b/BossMod/Autorotation/Standard/akechi/Tank/AkechiPLD.cs @@ -35,7 +35,8 @@ public static RotationModuleDefinition Definition() .AddOption(AOEStrategy.AutoFinishCombo, "Auto (Finish Combo)", "Auto-selects best rotation dependant on targets; Finishes combo first", supportedTargets: ActionTargets.Hostile) .AddOption(AOEStrategy.AutoBreakCombo, "Auto (Break Combo)", "Auto-selects best rotation dependant on targets; Breaks combo if needed", supportedTargets: ActionTargets.Hostile) .AddOption(AOEStrategy.ForceST, "Use AOE", "Force single-target rotation", supportedTargets: ActionTargets.Hostile) - .AddOption(AOEStrategy.ForceAOE, "Force AOE", "Force AOE rotation"); + .AddOption(AOEStrategy.ForceAOE, "Force AOE", "Force AOE rotation") + .AddAssociatedActions(AID.FastBlade, AID.RiotBlade, AID.RageOfHalone, AID.RoyalAuthority, AID.Prominence, AID.TotalEclipse); res.Define(Track.Cooldowns).As("Hold", uiPriority: 190) .AddOption(CooldownStrategy.Allow, "Allow", "Allows the use of all cooldowns & buffs; will use them optimally") .AddOption(CooldownStrategy.Forbid, "Hold", "Forbids the use of all cooldowns & buffs; will not use any actions with a cooldown timer"); diff --git a/BossMod/Autorotation/Standard/akechi/Tank/AkechiWAR.cs b/BossMod/Autorotation/Standard/akechi/Tank/AkechiWAR.cs index eb4dd4f8d3..6c4431b199 100644 --- a/BossMod/Autorotation/Standard/akechi/Tank/AkechiWAR.cs +++ b/BossMod/Autorotation/Standard/akechi/Tank/AkechiWAR.cs @@ -31,7 +31,8 @@ public static RotationModuleDefinition Definition() BitMask.Build(Class.MRD, Class.WAR), //Job 100); //Level supported - res.DefineShared(); + res.DefineAOE().AddAssociatedActions(AID.HeavySwing, AID.Maim, AID.StormEye, AID.StormPath, AID.Overpower, AID.MythrilTempest); + res.DefineHold(); res.Define(Track.Gauge).As("Gauge", "Gauge", uiPriority: 200) .AddOption(GaugeStrategy.Automatic, "Automatic", "Automatically use Gauge-related abilities optimally", minLevel: 35) .AddOption(GaugeStrategy.OnlyST, "Only ST", "Uses Inner Beast / Fell Cleave / Inner Chaos optimally as Beast Gauge spender only, regardless of targets", 0, 0, ActionTargets.Hostile, 35)