From 15fb3c27de733ee04af1fa7404743ce2da5d52f9 Mon Sep 17 00:00:00 2001 From: LTS-FFXIV <127939494+LTS-FFXIV@users.noreply.github.com> Date: Sun, 1 Dec 2024 11:28:38 -0600 Subject: [PATCH] Refactor BlueMage abilities and add new conditions Added use of `LucidDreamingPvE` based on MP. Updated `GeneralGCD` with specific conditions for multiple abilities. Added `ModifyBreathOfMagicPvE` partial method in `BlueMageRotation`. Removed `TargetType` setting in `ModifyFlyingSardinePvE`. --- BasicRotations/Limited Jobs/BLU_Default.cs | 22 +++++++++++-------- .../Rotations/Basic/BlueMageRotation.cs | 12 +++++++++- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/BasicRotations/Limited Jobs/BLU_Default.cs b/BasicRotations/Limited Jobs/BLU_Default.cs index 6768a961f..06955637c 100644 --- a/BasicRotations/Limited Jobs/BLU_Default.cs +++ b/BasicRotations/Limited Jobs/BLU_Default.cs @@ -80,10 +80,11 @@ protected override bool DefenseSingleAbility(IAction nextGCD, out IAction? act) protected override bool AttackAbility(IAction nextGCD, out IAction? act) { act = null; - if (JKickPvE.CanUse(out act)) - { - if (Player.HasStatus(true, StatusID.Harmonized)) return true; - } + if (JKickPvE.CanUse(out act)) return true; + if (BeingMortalPvE.CanUse(out act)) return true; + if (NightbloomPvE.CanUse(out act)) return true; + if (FeatherRainPvE.CanUse(out act)) return true; + if (ShockStrikePvE.CanUse(out act)) return true; return base.AttackAbility(nextGCD, out act); } @@ -91,7 +92,7 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act) protected override bool GeneralAbility(IAction nextGCD, out IAction? act) { act = null; - + if (Player.CurrentMp < 6000 && InCombat && LucidDreamingPvE.CanUse(out act)) return true; if (AethericMimicryPvE_19239.CanUse(out act)) return true; return base.GeneralAbility(nextGCD, out act); } @@ -161,15 +162,18 @@ protected override bool GeneralGCD(out IAction? act) { if (WhiteDeathPvE.CanUse(out act)) return true; - if (BreathOfMagicPvE.CanUse(out act)) return true; - if (SongOfTormentPvE.CanUse(out act)) return true; + if (BreathOfMagicPvE.CanUse(out act) && (BreathOfMagicPvE.Target.Target?.WillStatusEnd(2, true, BreathOfMagicPvE.Setting.TargetStatusProvide ?? []) ?? false)) return true; + if (SongOfTormentPvE.CanUse(out act) && !IsLastAbility(ActionID.NightbloomPvE)) return true; if (MatraMagicPvE.CanUse(out act)) return true; if (TheRoseOfDestructionPvE.CanUse(out act)) return true; - if (TripleTridentPvE.CanUse(out act) && IsLastGCD(ActionID.TinglePvE)) return true; - if (TinglePvE.CanUse(out act)) return true; + if (TinglePvE.CanUse(out act) && TripleTridentPvE.Cooldown.WillHaveOneChargeGCD(2) && !Player.HasStatus(true, StatusID.Tingling) && !IsLastGCD(ActionID.TinglePvE)) return true; + if (WhistlePvE.CanUse(out act) && Player.HasStatus(true, StatusID.Tingling)) return true; + if (TripleTridentPvE.CanUse(out act) && IsLastGCD(ActionID.WhistlePvE) && Player.HasStatus(true, StatusID.Tingling)) return true; + if (SonicBoomPvE.CanUse(out act)) return true; + if (FlyingSardinePvE.CanUse(out act)) return true; return base.GeneralGCD(out act); } #endregion diff --git a/RotationSolver.Basic/Rotations/Basic/BlueMageRotation.cs b/RotationSolver.Basic/Rotations/Basic/BlueMageRotation.cs index 2c2ce18ea..d6c00cc9e 100644 --- a/RotationSolver.Basic/Rotations/Basic/BlueMageRotation.cs +++ b/RotationSolver.Basic/Rotations/Basic/BlueMageRotation.cs @@ -190,6 +190,16 @@ static partial void ModifyNightbloomPvE(ref ActionSetting setting) }; } + static partial void ModifyBreathOfMagicPvE(ref ActionSetting setting) + { + setting.TargetStatusProvide = [StatusID.BreathOfMagic]; + setting.IsFriendly = false; + setting.CreateConfig = () => new ActionConfig() + { + AoeCount = 1, + }; + } + static partial void ModifyWingedReprobationPvE(ref ActionSetting setting) { setting.StatusProvide = [StatusID.WingedReprobation, StatusID.WingedRedemption]; @@ -217,7 +227,7 @@ static partial void ModifyBeingMortalPvE(ref ActionSetting setting) //Optional static partial void ModifyFlyingSardinePvE(ref ActionSetting setting) { - setting.TargetType = TargetType.Interrupt; + } static partial void ModifyWhiteWindPvE(ref ActionSetting setting)