diff --git a/BasicRotations/Tank/DRK_Default.cs b/BasicRotations/Tank/DRK_Default.cs index 4a0f0f0db..1358e9a88 100644 --- a/BasicRotations/Tank/DRK_Default.cs +++ b/BasicRotations/Tank/DRK_Default.cs @@ -136,13 +136,16 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act) #region GCD Logic protected override bool GeneralGCD(out IAction? act) { + if (DisesteemPvE.CanUse(out act)) return true; - //AOE - if (ImpalementPvE.CanUse(out act, skipComboCheck: true)) return true; - if (QuietusPvE.CanUse(out act, skipComboCheck: true)) return true; + //AOE Delirium + if (ImpalementPvE.CanUse(out act)) return true; + if (QuietusPvE.CanUse(out act)) return true; - if (TorcleaverPvE.CanUse(out act)) return true; - if (DisesteemPvE.CanUse(out act)) return true; + // Single Target Delirium + if (TorcleaverPvE.CanUse(out act, skipComboCheck: true)) return true; + if (ComeuppancePvE.CanUse(out act, skipComboCheck: true)) return true; + if (ScarletDeliriumPvE.CanUse(out act, skipComboCheck: true)) return true; if (BloodspillerPvE.CanUse(out act, skipComboCheck: true)) return true; @@ -151,9 +154,9 @@ protected override bool GeneralGCD(out IAction? act) if (UnleashPvE.CanUse(out act)) return true; //Single Target - if (DeliriumStacks == 0 && LowDeliriumStacks == 0 && SouleaterPvE.CanUse(out act)) return true; - if (DeliriumStacks == 0 && LowDeliriumStacks == 0 && SyphonStrikePvE.CanUse(out act)) return true; - if (DeliriumStacks == 0 && LowDeliriumStacks == 0 && HardSlashPvE.CanUse(out act)) return true; + if (!HasDelirium && SouleaterPvE.CanUse(out act)) return true; + if (!HasDelirium && SyphonStrikePvE.CanUse(out act)) return true; + if (!HasDelirium && HardSlashPvE.CanUse(out act)) return true; if (UnmendPvE.CanUse(out act)) return true; diff --git a/RotationSolver.Basic/Rotations/Basic/DarkKnightRotation.cs b/RotationSolver.Basic/Rotations/Basic/DarkKnightRotation.cs index a6e46a944..29b4b788a 100644 --- a/RotationSolver.Basic/Rotations/Basic/DarkKnightRotation.cs +++ b/RotationSolver.Basic/Rotations/Basic/DarkKnightRotation.cs @@ -17,6 +17,31 @@ partial class DarkKnightRotation /// /// public static bool HasDarkArts => JobGauge.HasDarkArts; + + /// + /// + /// + public static bool HasDelirium => !Player.WillStatusEnd(0, true, StatusID.Delirium_3836); + + /// + /// + /// + public static bool ScarletDeliriumReady => Service.GetAdjustedActionId(ActionID.BloodspillerPvE) == ActionID.ScarletDeliriumPvE; + + /// + /// + /// + public static bool ComeuppanceReady => Service.GetAdjustedActionId(ActionID.BloodspillerPvE) == ActionID.ComeuppancePvE; + + /// + /// + /// + public static bool TorcleaverReady => Service.GetAdjustedActionId(ActionID.BloodspillerPvE) == ActionID.TorcleaverPvE; + + /// + /// + /// + public static bool ImpalementReady => Service.GetAdjustedActionId(ActionID.QuietusPvE) == ActionID.ImpalementPvE; static float DarkSideTimeRemainingRaw => JobGauge.DarksideTimeRemaining / 1000f; @@ -110,6 +135,11 @@ public override void DisplayStatus() ImGui.Text("DarkSideTime: " + DarkSideTime.ToString()); ImGui.Text("HasDarkArts: " + HasDarkArts.ToString()); ImGui.Text("Blood: " + Blood.ToString()); + ImGui.Text("HasDelirium: " + HasDelirium.ToString()); + ImGui.Text("ScarletDeliriumReady: " + ScarletDeliriumReady.ToString()); + ImGui.Text("ComeuppanceReady: " + ComeuppanceReady.ToString()); + ImGui.Text("TorcleaverReady: " + TorcleaverReady.ToString()); + ImGui.Text("ImpalementReady: " + ImpalementReady.ToString()); } #endregion @@ -333,22 +363,27 @@ static partial void ModifyShadowedVigilPvE(ref ActionSetting setting) static partial void ModifyScarletDeliriumPvE(ref ActionSetting setting) { - + setting.ActionCheck = () => ScarletDeliriumReady; + setting.MPOverride = () => 0; } static partial void ModifyComeuppancePvE(ref ActionSetting setting) { - + setting.ActionCheck = () => ComeuppanceReady; + setting.MPOverride = () => 0; + setting.ComboIds = [ActionID.ScarletDeliriumPvE]; } static partial void ModifyTorcleaverPvE(ref ActionSetting setting) { - + setting.ActionCheck = () => TorcleaverReady; + setting.MPOverride = () => 0; + setting.ComboIds = [ActionID.ComeuppancePvE]; } static partial void ModifyImpalementPvE(ref ActionSetting setting) { - setting.ActionCheck = () => !Player.WillStatusEnd(0, true, StatusID.Delirium_3836); + setting.ActionCheck = () => ImpalementReady; setting.CreateConfig = () => new ActionConfig() { AoeCount = 2, @@ -358,6 +393,7 @@ static partial void ModifyImpalementPvE(ref ActionSetting setting) static partial void ModifyDisesteemPvE(ref ActionSetting setting) { setting.StatusNeed = [StatusID.Scorn]; + setting.MPOverride = () => 0; setting.CreateConfig = () => new ActionConfig() { AoeCount = 1,