diff --git a/BasicRotations/Healer/SCH_Default.cs b/BasicRotations/Healer/SCH_Default.cs index edb30e7..31405fe 100644 --- a/BasicRotations/Healer/SCH_Default.cs +++ b/BasicRotations/Healer/SCH_Default.cs @@ -9,11 +9,11 @@ public sealed class SCH_Default : ScholarRotation [RotationConfig(CombatType.PvE, Name = "Use spells with cast times to heal. (Ignored if you are the only healer in party)")] public bool GCDHeal { get; set; } = false; - [RotationConfig(CombatType.PvE, Name = "Recitation at 15 seconds remaining on Countdown.")] - public bool PrevDUN { get; set; } = false; + [RotationConfig(CombatType.PvE, Name = "Recitation during Countdown.")] + public bool PrevDUN { get; set; } = true; - [RotationConfig(CombatType.PvE, Name = "Give Adloquium/Galvanize to Tank during Countdown (Requires above enabled)")] - public bool GiveT { get; set; } = false; + [RotationConfig(CombatType.PvE, Name = "Use Adloquium during Countdown")] + public bool GiveT { get; set; } = true; [RotationConfig(CombatType.PvE, Name = "Use Sacred Soil while moving")] public bool SacredMove { get; set; } = false; @@ -29,25 +29,15 @@ public sealed class SCH_Default : ScholarRotation #region Countdown Logic protected override IAction? CountDownAction(float remainTime) { + var tank = PartyMembers.GetJobCategory(JobRole.Tank); + if (remainTime < RuinPvE.Info.CastTime + CountDownAhead && RuinPvE.CanUse(out var act)) return act; + if (remainTime < 3 && UseBurstMedicine(out act)) return act; + if (remainTime is < 4 and > 3 && DeploymentTacticsPvE.CanUse(out act)) return act; + if (remainTime is < 7 and > 6 && GiveT && AdloquiumPvE.CanUse(out act)) return act; + if (remainTime <= 15 && PrevDUN && RecitationPvE.CanUse(out act)) return act; - if (PrevDUN && remainTime <= 15 && !DeploymentTacticsPvE.Cooldown.IsCoolingDown && PartyMembers.Count() > 1) - { - - if (!RecitationPvE.Cooldown.IsCoolingDown) return RecitationPvE; - if (!PartyMembers.Any((n) => n.HasStatus(true, StatusID.Galvanize))) - { - if (GiveT) - { - return AdloquiumPvE; - } - } - else - { - return DeploymentTacticsPvE; - } - } return base.CountDownAction(remainTime); } #endregion @@ -224,4 +214,4 @@ protected override bool GeneralGCD(out IAction? act) public override bool CanHealAreaSpell => base.CanHealAreaSpell && (GCDHeal || PartyMembers.GetJobCategory(JobRole.Healer).Count() < 2); #endregion -} +} \ No newline at end of file diff --git a/BasicRotations/Healer/SGE_Default.cs b/BasicRotations/Healer/SGE_Default.cs index 74b8776..3c380b2 100644 --- a/BasicRotations/Healer/SGE_Default.cs +++ b/BasicRotations/Healer/SGE_Default.cs @@ -61,7 +61,8 @@ public sealed class SGE_Default : SageRotation #region Countdown Logic protected override IAction? CountDownAction(float remainTime) { - if (remainTime <= 1.5 && DosisPvE.CanUse(out var act)) return act; + if (remainTime < DosisPvE.Info.CastTime + CountDownAhead + && DosisPvE.CanUse(out var act)) return act; if (remainTime <= 3 && UseBurstMedicine(out act)) return act; return base.CountDownAction(remainTime); } diff --git a/BasicRotations/Melee/DRG_Default.cs b/BasicRotations/Melee/DRG_Default.cs index b96f39a..994c496 100644 --- a/BasicRotations/Melee/DRG_Default.cs +++ b/BasicRotations/Melee/DRG_Default.cs @@ -11,13 +11,9 @@ public sealed class DRG_Default : DragoonRotation public bool DoomSpikeWhenever { get; set; } = true; #endregion - #region Additional oGCD Logic + private static bool InBurstStatus => !Player.WillStatusEnd(0, true, StatusID.BattleLitany); - [RotationDesc] - protected override bool EmergencyAbility(IAction nextGCD, out IAction? act) - { - return base.EmergencyAbility(nextGCD, out act); - } + #region Additional oGCD Logic [RotationDesc(ActionID.WingedGlidePvE)] protected override bool MoveForwardAbility(IAction nextGCD, out IAction? act) @@ -44,23 +40,23 @@ protected sealed override bool DefenseAreaAbility(IAction nextGCD, out IAction? #endregion #region oGCD Logic - protected override bool GeneralAbility(IAction nextGCD, out IAction? act) + protected override bool EmergencyAbility(IAction nextGCD, out IAction? act) { if (IsBurst && InCombat) { + if ((!BattleLitanyPvE.Cooldown.ElapsedAfter(60) || !BattleLitanyPvE.EnoughLevel) && LanceChargePvE.CanUse(out act)) return true; + + if (Player.HasStatus(true, StatusID.LanceCharge) && BattleLitanyPvE.CanUse(out act)) return true; + if ((Player.HasStatus(true, StatusID.BattleLitany) || Player.HasStatus(true, StatusID.LanceCharge) || LOTDEndAfter(1000)) && nextGCD.IsTheSameTo(true, HeavensThrustPvE, DrakesbanePvE) || (Player.HasStatus(true, StatusID.BattleLitany) && Player.HasStatus(true, StatusID.LanceCharge) && LOTDEndAfter(1000) && nextGCD.IsTheSameTo(true, ChaoticSpringPvE, LanceBarragePvE, WheelingThrustPvE, FangAndClawPvE)) || (nextGCD.IsTheSameTo(true, HeavensThrustPvE, DrakesbanePvE) && (LanceChargePvE.IsInCooldown || BattleLitanyPvE.IsInCooldown))) { if (LifeSurgePvE.CanUse(out act, usedUp: true)) return true; } - - if (LanceChargePvE.CanUse(out act)) return true; - - if (BattleLitanyPvE.CanUse(out act)) return true; } - return base.GeneralAbility(nextGCD, out act); + return base.EmergencyAbility(nextGCD, out act); } protected override bool AttackAbility(IAction nextGCD, out IAction? act) diff --git a/BasicRotations/Ranged/BRD_Default.cs b/BasicRotations/Ranged/BRD_Default.cs index 19725fe..bec92f8 100644 --- a/BasicRotations/Ranged/BRD_Default.cs +++ b/BasicRotations/Ranged/BRD_Default.cs @@ -45,7 +45,6 @@ public sealed class BRD_Default : BardRotation // Defines logic for actions to take during the countdown before combat starts. protected override IAction? CountDownAction(float remainTime) { - // tincture needs to be used on -2s exactly if (remainTime <= 0.7f && UseBurstMedicine(out var act)) return act; return base.CountDownAction(remainTime); } diff --git a/BasicRotations/RebornRotations.csproj b/BasicRotations/RebornRotations.csproj index ff764bb..1e1898d 100644 --- a/BasicRotations/RebornRotations.csproj +++ b/BasicRotations/RebornRotations.csproj @@ -16,7 +16,7 @@ - + diff --git a/BasicRotations/Tank/DRK_Default.cs b/BasicRotations/Tank/DRK_Default.cs index 760b146..773d7ea 100644 --- a/BasicRotations/Tank/DRK_Default.cs +++ b/BasicRotations/Tank/DRK_Default.cs @@ -1,6 +1,6 @@ namespace DefaultRotations.Tank; -[Rotation("Default", CombatType.PvE, GameVersion = "7.00")] +[Rotation("Default", CombatType.PvE, GameVersion = "7.05")] [SourceCode(Path = "main/DefaultRotations/Tank/DRK_Balance.cs")] [Api(3)] public sealed class DRK_Default : DarkKnightRotation @@ -77,9 +77,11 @@ protected override bool DefenseSingleAbility(IAction nextGCD, out IAction? act) //30 if ((!RampartPvE.Cooldown.IsCoolingDown || RampartPvE.Cooldown.ElapsedAfter(60)) && ShadowWallPvE.CanUse(out act)) return true; + if ((!RampartPvE.Cooldown.IsCoolingDown || RampartPvE.Cooldown.ElapsedAfter(60)) && ShadowedVigilPvE.CanUse(out act)) return true; //20 if (ShadowWallPvE.Cooldown.IsCoolingDown && ShadowWallPvE.Cooldown.ElapsedAfter(60) && RampartPvE.CanUse(out act)) return true; + if (ShadowedVigilPvE.Cooldown.IsCoolingDown && ShadowedVigilPvE.Cooldown.ElapsedAfter(60) && RampartPvE.CanUse(out act)) return true; if (ReprisalPvE.CanUse(out act)) return true; @@ -142,6 +144,8 @@ 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; + //Use Blood if (UseBlood) { @@ -175,7 +179,7 @@ private bool UseBlood { // Conditions based on player statuses and ability cooldowns. if (!DeliriumPvE.EnoughLevel || !LivingShadowPvE.EnoughLevel) return true; - if (Player.HasStatus(true, StatusID.Delirium_1972) && LivingShadowPvE.Cooldown.IsCoolingDown) return true; + if ((Player.HasStatus(true, StatusID.Delirium_1972) || Player.HasStatus(true, StatusID.Delirium_3836)) && LivingShadowPvE.Cooldown.IsCoolingDown) return true; if ((DeliriumPvE.Cooldown.WillHaveOneChargeGCD(1) && !LivingShadowPvE.Cooldown.WillHaveOneChargeGCD(3)) || Blood >= 90 && !LivingShadowPvE.Cooldown.WillHaveOneChargeGCD(1)) return true; return false;