From 9fd333dfcf9b377bf54146ddfa00789bbd004ceb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=8B=E6=B0=B4?= <1123993881@qq.com> Date: Thu, 20 Apr 2023 20:38:47 +0800 Subject: [PATCH] fix: removed nextAbilityToNextGCD from ability method. --- .../Rotations/Basic/BLM_Base.cs | 2 +- .../Rotations/Basic/BRD_Base.cs | 8 +-- .../Rotations/Basic/DNC_Base.cs | 6 +- .../Rotations/Basic/DRG_Base.cs | 2 +- .../Rotations/Basic/DRK_Base.cs | 6 +- .../Rotations/Basic/GNB_Base.cs | 6 +- .../Rotations/Basic/MCH_Base.cs | 2 +- .../Rotations/Basic/MNK_Base.cs | 8 +-- .../Rotations/Basic/NIN_Base.cs | 6 +- .../Rotations/Basic/PLD_Base.cs | 6 +- .../Rotations/Basic/RDM_Base.cs | 4 +- .../Rotations/Basic/RPR_Base.cs | 8 +-- .../Rotations/Basic/SAM_Base.cs | 6 +- .../Rotations/Basic/SGE_Base.cs | 2 +- .../Rotations/Basic/SMN_Base.cs | 4 +- .../Rotations/Basic/WAR_Base.cs | 6 +- .../Rotations/CustomRotation_Ability.cs | 64 +++++++++---------- .../Rotations/CustomRotation_GCD.cs | 11 ++-- .../Rotations/CustomRotation_Invoke.cs | 23 +++---- .../Rotations/CustomRotation_OtherInfo.cs | 2 + 20 files changed, 91 insertions(+), 91 deletions(-) diff --git a/RotationSolver.Basic/Rotations/Basic/BLM_Base.cs b/RotationSolver.Basic/Rotations/Basic/BLM_Base.cs index c08b2ec1a..dbaa8d5c5 100644 --- a/RotationSolver.Basic/Rotations/Basic/BLM_Base.cs +++ b/RotationSolver.Basic/Rotations/Basic/BLM_Base.cs @@ -190,7 +190,7 @@ protected sealed override bool DefenseSingleGCD(out IAction act) } [RotationDesc(ActionID.Addle)] - protected override bool DefenseAreaAbility(float nextAbilityToNextGCD, out IAction act) + protected override bool DefenseAreaAbility(out IAction act) { if (Addle.CanUse(out act)) return true; return false; diff --git a/RotationSolver.Basic/Rotations/Basic/BRD_Base.cs b/RotationSolver.Basic/Rotations/Basic/BRD_Base.cs index 404fef4d2..18a2f8363 100644 --- a/RotationSolver.Basic/Rotations/Basic/BRD_Base.cs +++ b/RotationSolver.Basic/Rotations/Basic/BRD_Base.cs @@ -114,25 +114,25 @@ protected static bool SongEndAfterGCD(uint gctCount = 0, int abilityCount = 0) StatusID.ShieldSamba), }; - protected override bool EmergencyAbility(float nextAbilityToNextGCD, IAction nextGCD, out IAction act) + protected override bool EmergencyAbility(IAction nextGCD, out IAction act) { //Esuna if (DataCenter.SpecialType == SpecialCommandType.EsunaStanceNorth && DataCenter.WeakenPeople.Any() || DataCenter.DyingPeople.Any()) { if (WardensPaean.CanUse(out act, CanUseOption.MustUse)) return true; } - return base.EmergencyAbility(nextAbilityToNextGCD, nextGCD, out act); + return base.EmergencyAbility(nextGCD, out act); } [RotationDesc(ActionID.Troubadour)] - protected sealed override bool DefenseAreaAbility(float nextAbilityToNextGCD, out IAction act) + protected sealed override bool DefenseAreaAbility(out IAction act) { if (Troubadour.CanUse(out act)) return true; return false; } [RotationDesc(ActionID.NaturesMinne)] - protected sealed override bool HealSingleAbility(float nextAbilityToNextGCD, out IAction act) + protected sealed override bool HealSingleAbility(out IAction act) { if (NaturesMinne.CanUse(out act)) return true; return false; diff --git a/RotationSolver.Basic/Rotations/Basic/DNC_Base.cs b/RotationSolver.Basic/Rotations/Basic/DNC_Base.cs index 6967ea04a..23af19897 100644 --- a/RotationSolver.Basic/Rotations/Basic/DNC_Base.cs +++ b/RotationSolver.Basic/Rotations/Basic/DNC_Base.cs @@ -201,14 +201,14 @@ protected static bool ExecuteStepGCD(out IAction act) } [RotationDesc(ActionID.EnAvant)] - protected sealed override bool MoveForwardAbility(float nextAbilityToNextGCD, out IAction act, CanUseOption option = CanUseOption.None) + protected sealed override bool MoveForwardAbility(out IAction act, CanUseOption option = CanUseOption.None) { if (EnAvant.CanUse(out act, CanUseOption.EmptyOrSkipCombo | option)) return true; return false; } [RotationDesc(ActionID.CuringWaltz, ActionID.Improvisation)] - protected sealed override bool HealAreaAbility(float nextAbilityToNextGCD, out IAction act) + protected sealed override bool HealAreaAbility(out IAction act) { if (CuringWaltz.CanUse(out act, CanUseOption.EmptyOrSkipCombo)) return true; if (Improvisation.CanUse(out act, CanUseOption.EmptyOrSkipCombo)) return true; @@ -216,7 +216,7 @@ protected sealed override bool HealAreaAbility(float nextAbilityToNextGCD, out I } [RotationDesc(ActionID.ShieldSamba)] - protected sealed override bool DefenseAreaAbility(float nextAbilityToNextGCD, out IAction act) + protected sealed override bool DefenseAreaAbility(out IAction act) { if (ShieldSamba.CanUse(out act, CanUseOption.EmptyOrSkipCombo)) return true; return false; diff --git a/RotationSolver.Basic/Rotations/Basic/DRG_Base.cs b/RotationSolver.Basic/Rotations/Basic/DRG_Base.cs index 077f87a52..0ad256e60 100644 --- a/RotationSolver.Basic/Rotations/Basic/DRG_Base.cs +++ b/RotationSolver.Basic/Rotations/Basic/DRG_Base.cs @@ -114,7 +114,7 @@ public abstract class DRG_Base : CustomRotation public static IBaseAction BattleLitany { get; } = new BaseAction(ActionID.BattleLitany, ActionOption.Buff); [RotationDesc(ActionID.Feint)] - protected sealed override bool DefenseAreaAbility(float nextAbilityToNextGCD, out IAction act) + protected sealed override bool DefenseAreaAbility(out IAction act) { if (Feint.CanUse(out act)) return true; return false; diff --git a/RotationSolver.Basic/Rotations/Basic/DRK_Base.cs b/RotationSolver.Basic/Rotations/Basic/DRK_Base.cs index b6e9bf3e2..fddab48f3 100644 --- a/RotationSolver.Basic/Rotations/Basic/DRK_Base.cs +++ b/RotationSolver.Basic/Rotations/Basic/DRK_Base.cs @@ -113,14 +113,14 @@ protected static bool DarkSideEndAfterGCD(uint gctCount = 0, int abilityCount = StatusNeed = new[] { StatusID.SaltedEarth }, }; - protected override bool EmergencyAbility(float nextAbilityToNextGCD, IAction nextGCD, out IAction act) + protected override bool EmergencyAbility(IAction nextGCD, out IAction act) { if (LivingDead.CanUse(out act) && BaseAction.TankBreakOtherCheck(JobIDs[0])) return true; - return base.EmergencyAbility(nextAbilityToNextGCD, nextGCD, out act); + return base.EmergencyAbility(nextGCD, out act); } [RotationDesc(ActionID.Plunge)] - protected sealed override bool MoveForwardAbility(float nextAbilityToNextGCD, out IAction act, CanUseOption option = CanUseOption.None) + protected sealed override bool MoveForwardAbility(out IAction act, CanUseOption option = CanUseOption.None) { if (Plunge.CanUse(out act, CanUseOption.EmptyOrSkipCombo | option)) return true; diff --git a/RotationSolver.Basic/Rotations/Basic/GNB_Base.cs b/RotationSolver.Basic/Rotations/Basic/GNB_Base.cs index c9458bb31..3e50e5975 100644 --- a/RotationSolver.Basic/Rotations/Basic/GNB_Base.cs +++ b/RotationSolver.Basic/Rotations/Basic/GNB_Base.cs @@ -136,14 +136,14 @@ public abstract class GNB_Base : CustomRotation == ActionID.Hypervelocity, }; - protected override bool EmergencyAbility(float nextAbilityToNextGCD, IAction nextGCD, out IAction act) + protected override bool EmergencyAbility(IAction nextGCD, out IAction act) { if (SuperBolide.CanUse(out act) && BaseAction.TankBreakOtherCheck(JobIDs[0])) return true; - return base.EmergencyAbility(nextAbilityToNextGCD, nextGCD, out act); + return base.EmergencyAbility(nextGCD, out act); } [RotationDesc(ActionID.RoughDivide)] - protected sealed override bool MoveForwardAbility(float nextAbilityToNextGCD, out IAction act, CanUseOption option = CanUseOption.None) + protected sealed override bool MoveForwardAbility(out IAction act, CanUseOption option = CanUseOption.None) { if (RoughDivide.CanUse(out act, CanUseOption.EmptyOrSkipCombo | option)) return true; return false; diff --git a/RotationSolver.Basic/Rotations/Basic/MCH_Base.cs b/RotationSolver.Basic/Rotations/Basic/MCH_Base.cs index f0b1eae01..53f35ef8e 100644 --- a/RotationSolver.Basic/Rotations/Basic/MCH_Base.cs +++ b/RotationSolver.Basic/Rotations/Basic/MCH_Base.cs @@ -96,7 +96,7 @@ protected static bool OverheatedEndAfterGCD(uint gctCount = 0, int abilityCount public static IBaseAction Dismantle { get; } = new BaseAction(ActionID.Dismantle, ActionOption.Defense); [RotationDesc(ActionID.Tactician, ActionID.Dismantle)] - protected sealed override bool DefenseAreaAbility(float nextAbilityToNextGCD, out IAction act) + protected sealed override bool DefenseAreaAbility(out IAction act) { if (Tactician.CanUse(out act, CanUseOption.MustUse)) return true; if (Dismantle.CanUse(out act, CanUseOption.MustUse)) return true; diff --git a/RotationSolver.Basic/Rotations/Basic/MNK_Base.cs b/RotationSolver.Basic/Rotations/Basic/MNK_Base.cs index 4fbe839d6..253023c50 100644 --- a/RotationSolver.Basic/Rotations/Basic/MNK_Base.cs +++ b/RotationSolver.Basic/Rotations/Basic/MNK_Base.cs @@ -94,28 +94,28 @@ public abstract class MNK_Base : CustomRotation public static IBaseAction RiddleOfWind { get; } = new BaseAction(ActionID.RiddleOfWind, ActionOption.Buff); [RotationDesc(ActionID.Thunderclap)] - protected sealed override bool MoveForwardAbility(float nextAbilityToNextGCD, out IAction act, CanUseOption option = CanUseOption.None) + protected sealed override bool MoveForwardAbility(out IAction act, CanUseOption option = CanUseOption.None) { if (Thunderclap.CanUse(out act, CanUseOption.EmptyOrSkipCombo | option)) return true; return false; } [RotationDesc(ActionID.Feint)] - protected sealed override bool DefenseAreaAbility(float nextAbilityToNextGCD, out IAction act) + protected sealed override bool DefenseAreaAbility(out IAction act) { if (Feint.CanUse(out act)) return true; return false; } [RotationDesc(ActionID.Mantra)] - protected sealed override bool HealAreaAbility(float nextAbilityToNextGCD, out IAction act) + protected sealed override bool HealAreaAbility(out IAction act) { if (Mantra.CanUse(out act)) return true; return false; } [RotationDesc(ActionID.RiddleOfEarth)] - protected sealed override bool DefenseSingleAbility(float nextAbilityToNextGCD, out IAction act) + protected sealed override bool DefenseSingleAbility(out IAction act) { if (RiddleOfEarth.CanUse(out act, CanUseOption.EmptyOrSkipCombo)) return true; return false; diff --git a/RotationSolver.Basic/Rotations/Basic/NIN_Base.cs b/RotationSolver.Basic/Rotations/Basic/NIN_Base.cs index 876f53e34..93933adbb 100644 --- a/RotationSolver.Basic/Rotations/Basic/NIN_Base.cs +++ b/RotationSolver.Basic/Rotations/Basic/NIN_Base.cs @@ -168,7 +168,7 @@ internal NinAction(ActionID actionID, params IBaseAction[] ninjutsu) public static INinAction HyoshoRanryu { get; } = new NinAction(ActionID.HyoshoRanryu, Ten, Jin); [RotationDesc(ActionID.Shukuchi)] - protected sealed override bool MoveForwardAbility(float nextAbilityToNextGCD, out IAction act, CanUseOption option = CanUseOption.None) + protected sealed override bool MoveForwardAbility(out IAction act, CanUseOption option = CanUseOption.None) { if (Shukuchi.CanUse(out act, CanUseOption.EmptyOrSkipCombo | option)) return true; @@ -176,14 +176,14 @@ protected sealed override bool MoveForwardAbility(float nextAbilityToNextGCD, ou } [RotationDesc(ActionID.Feint)] - protected sealed override bool DefenseAreaAbility(float nextAbilityToNextGCD, out IAction act) + protected sealed override bool DefenseAreaAbility(out IAction act) { if (Feint.CanUse(out act)) return true; return false; } [RotationDesc(ActionID.ShadeShift)] - protected override bool DefenseSingleAbility(float nextAbilityToNextGCD, out IAction act) + protected override bool DefenseSingleAbility(out IAction act) { if (ShadeShift.CanUse(out act)) return true; diff --git a/RotationSolver.Basic/Rotations/Basic/PLD_Base.cs b/RotationSolver.Basic/Rotations/Basic/PLD_Base.cs index dbdfaca50..abfe1883d 100644 --- a/RotationSolver.Basic/Rotations/Basic/PLD_Base.cs +++ b/RotationSolver.Basic/Rotations/Basic/PLD_Base.cs @@ -101,14 +101,14 @@ public abstract class PLD_Base : CustomRotation ActionCheck = BaseAction.TankDefenseSelf, }; - protected override bool EmergencyAbility(float nextAbilityToNextGCD, IAction nextGCD, out IAction act) + protected override bool EmergencyAbility(IAction nextGCD, out IAction act) { if (HallowedGround.CanUse(out act) && BaseAction.TankBreakOtherCheck(JobIDs[0])) return true; - return base.EmergencyAbility(nextAbilityToNextGCD, nextGCD, out act); + return base.EmergencyAbility(nextGCD, out act); } [RotationDesc(ActionID.Intervene)] - protected sealed override bool MoveForwardAbility(float nextAbilityToNextGCD, out IAction act, CanUseOption option = CanUseOption.None) + protected sealed override bool MoveForwardAbility(out IAction act, CanUseOption option = CanUseOption.None) { if (Intervene.CanUse(out act, CanUseOption.EmptyOrSkipCombo | option)) return true; return false; diff --git a/RotationSolver.Basic/Rotations/Basic/RDM_Base.cs b/RotationSolver.Basic/Rotations/Basic/RDM_Base.cs index 8e47e6717..58ea5a273 100644 --- a/RotationSolver.Basic/Rotations/Basic/RDM_Base.cs +++ b/RotationSolver.Basic/Rotations/Basic/RDM_Base.cs @@ -132,14 +132,14 @@ protected sealed override bool HealSingleGCD(out IAction act) } [RotationDesc(ActionID.CorpsACorps)] - protected sealed override bool MoveForwardAbility(float nextAbilityToNextGCD, out IAction act, CanUseOption option = CanUseOption.None) + protected sealed override bool MoveForwardAbility(out IAction act, CanUseOption option = CanUseOption.None) { if (CorpsACorps.CanUse(out act, CanUseOption.EmptyOrSkipCombo | option)) return true; return false; } [RotationDesc(ActionID.Addle, ActionID.MagickBarrier)] - protected sealed override bool DefenseAreaAbility(float nextAbilityToNextGCD, out IAction act) + protected sealed override bool DefenseAreaAbility(out IAction act) { if (Addle.CanUse(out act)) return true; if (MagickBarrier.CanUse(out act, CanUseOption.MustUse)) return true; diff --git a/RotationSolver.Basic/Rotations/Basic/RPR_Base.cs b/RotationSolver.Basic/Rotations/Basic/RPR_Base.cs index 44a05fb4f..128f238e9 100644 --- a/RotationSolver.Basic/Rotations/Basic/RPR_Base.cs +++ b/RotationSolver.Basic/Rotations/Basic/RPR_Base.cs @@ -205,14 +205,14 @@ public abstract class RPR_Base : CustomRotation #endregion [RotationDesc(ActionID.HellsIngress)] - protected sealed override bool MoveForwardAbility(float nextAbilityToNextGCD, out IAction act, CanUseOption option = CanUseOption.None) + protected sealed override bool MoveForwardAbility(out IAction act, CanUseOption option = CanUseOption.None) { if (HellsIngress.CanUse(out act, CanUseOption.EmptyOrSkipCombo | option)) return true; return false; } [RotationDesc(ActionID.Feint)] - protected sealed override bool DefenseAreaAbility(float nextAbilityToNextGCD, out IAction act) + protected sealed override bool DefenseAreaAbility(out IAction act) { if (!SoulReaver && !Enshrouded) { @@ -224,13 +224,13 @@ protected sealed override bool DefenseAreaAbility(float nextAbilityToNextGCD, ou } [RotationDesc(ActionID.ArcaneCrest)] - protected override bool DefenseSingleAbility(float nextAbilityToNextGCD, out IAction act) + protected override bool DefenseSingleAbility(out IAction act) { if (!SoulReaver && !Enshrouded) { if (ArcaneCrest.CanUse(out act)) return true; } - return base.DefenseSingleAbility(nextAbilityToNextGCD, out act); + return base.DefenseSingleAbility(out act); } } diff --git a/RotationSolver.Basic/Rotations/Basic/SAM_Base.cs b/RotationSolver.Basic/Rotations/Basic/SAM_Base.cs index 9ecac8cd1..35b9a88cb 100644 --- a/RotationSolver.Basic/Rotations/Basic/SAM_Base.cs +++ b/RotationSolver.Basic/Rotations/Basic/SAM_Base.cs @@ -169,21 +169,21 @@ public abstract class SAM_Base : CustomRotation #endregion [RotationDesc(ActionID.HissatsuGyoten)] - protected sealed override bool MoveForwardAbility(float nextAbilityToNextGCD, out IAction act, CanUseOption option = CanUseOption.None) + protected sealed override bool MoveForwardAbility(out IAction act, CanUseOption option = CanUseOption.None) { if (HissatsuGyoten.CanUse(out act, CanUseOption.EmptyOrSkipCombo | option)) return true; return false; } [RotationDesc(ActionID.Feint)] - protected sealed override bool DefenseAreaAbility(float nextAbilityToNextGCD, out IAction act) + protected sealed override bool DefenseAreaAbility(out IAction act) { if (Feint.CanUse(out act)) return true; return false; } [RotationDesc(ActionID.ThirdEye)] - protected override bool DefenseSingleAbility(float nextAbilityToNextGCD, out IAction act) + protected override bool DefenseSingleAbility(out IAction act) { if (ThirdEye.CanUse(out act)) return true; return false; diff --git a/RotationSolver.Basic/Rotations/Basic/SGE_Base.cs b/RotationSolver.Basic/Rotations/Basic/SGE_Base.cs index 511e5578d..8b2d77ad4 100644 --- a/RotationSolver.Basic/Rotations/Basic/SGE_Base.cs +++ b/RotationSolver.Basic/Rotations/Basic/SGE_Base.cs @@ -147,7 +147,7 @@ protected static bool AddersgallEndAfterGCD(uint gctCount = 0, int abilityCount }; [RotationDesc(ActionID.Icarus)] - protected sealed override bool MoveForwardAbility(float nextAbilityToNextGCD, out IAction act, CanUseOption option = CanUseOption.None) + protected sealed override bool MoveForwardAbility(out IAction act, CanUseOption option = CanUseOption.None) { //���� if (Icarus.CanUse(out act, CanUseOption.EmptyOrSkipCombo | option)) return true; diff --git a/RotationSolver.Basic/Rotations/Basic/SMN_Base.cs b/RotationSolver.Basic/Rotations/Basic/SMN_Base.cs index 2ac035f97..676192d40 100644 --- a/RotationSolver.Basic/Rotations/Basic/SMN_Base.cs +++ b/RotationSolver.Basic/Rotations/Basic/SMN_Base.cs @@ -170,7 +170,7 @@ protected static bool SummonTimeEndAfter(float time) public static IBaseAction Physick { get; } = new BaseAction(ActionID.Physick, ActionOption.Heal); [RotationDesc(ActionID.RadiantAegis)] - protected sealed override bool DefenseSingleAbility(float nextAbilityToNextGCD, out IAction act) + protected sealed override bool DefenseSingleAbility(out IAction act) { if (RadiantAegis.CanUse(out act)) return true; return false; @@ -184,7 +184,7 @@ protected override bool HealSingleGCD(out IAction act) } [RotationDesc(ActionID.Addle)] - protected override bool DefenseAreaAbility(float nextAbilityToNextGCD, out IAction act) + protected override bool DefenseAreaAbility(out IAction act) { if (Addle.CanUse(out act)) return true; return false; diff --git a/RotationSolver.Basic/Rotations/Basic/WAR_Base.cs b/RotationSolver.Basic/Rotations/Basic/WAR_Base.cs index cef2272f5..3535e7b63 100644 --- a/RotationSolver.Basic/Rotations/Basic/WAR_Base.cs +++ b/RotationSolver.Basic/Rotations/Basic/WAR_Base.cs @@ -104,14 +104,14 @@ public abstract class WAR_Base : CustomRotation StatusNeed = new[] { StatusID.PrimalRendReady } }; - protected override bool EmergencyAbility(float nextAbilityToNextGCD, IAction nextGCD, out IAction act) + protected override bool EmergencyAbility(IAction nextGCD, out IAction act) { if (Holmgang.CanUse(out act) && BaseAction.TankBreakOtherCheck(JobIDs[0])) return true; - return base.EmergencyAbility(nextAbilityToNextGCD, nextGCD, out act); + return base.EmergencyAbility(nextGCD, out act); } [RotationDesc(ActionID.Onslaught)] - protected sealed override bool MoveForwardAbility(float nextAbilityToNextGCD, out IAction act, CanUseOption option = CanUseOption.None) + protected sealed override bool MoveForwardAbility(out IAction act, CanUseOption option = CanUseOption.None) { if (Onslaught.CanUse(out act, CanUseOption.EmptyOrSkipCombo | option)) return true; return false; diff --git a/RotationSolver.Basic/Rotations/CustomRotation_Ability.cs b/RotationSolver.Basic/Rotations/CustomRotation_Ability.cs index 30d120788..fd8c2b285 100644 --- a/RotationSolver.Basic/Rotations/CustomRotation_Ability.cs +++ b/RotationSolver.Basic/Rotations/CustomRotation_Ability.cs @@ -2,7 +2,7 @@ namespace RotationSolver.Basic.Rotations; public abstract partial class CustomRotation { - private bool Ability(float nextAbilityToNextGCD, IAction nextGCD, out IAction act, bool helpDefenseAOE, bool helpDefenseSingle) + private bool Ability(IAction nextGCD, out IAction act, bool helpDefenseAOE, bool helpDefenseSingle) { act = DataCenter.CommandNextAction; if (act is IBaseAction a && a != null && !a.IsRealGCD && a.CanUse(out _, CanUseOption.MustUse | CanUseOption.SkipDisable | CanUseOption.EmptyOrSkipCombo)) return true; @@ -15,7 +15,7 @@ private bool Ability(float nextAbilityToNextGCD, IAction nextGCD, out IAction ac return false; } - if (EmergencyAbility(nextAbilityToNextGCD, nextGCD, out act)) return true; + if (EmergencyAbility(nextGCD, out act)) return true; var role = Job.GetJobRole(); if (InterruptAbility(role, out act)) return true; @@ -30,16 +30,16 @@ private bool Ability(float nextAbilityToNextGCD, IAction nextGCD, out IAction ac if (TrueNorth.CanUse(out act)) return true; } - if (GeneralHealAbility(nextAbilityToNextGCD, specialType, out act)) return true; + if (GeneralHealAbility(specialType, out act)) return true; - if (AutoDefense(nextAbilityToNextGCD, role, helpDefenseAOE, helpDefenseSingle, out act)) return true; + if (AutoDefense(role, helpDefenseAOE, helpDefenseSingle, out act)) return true; - if (MovingAbility(nextAbilityToNextGCD, specialType, out act)) return true; + if (MovingAbility(specialType, out act)) return true; if (GeneralUsingAbility(role, out act)) return true; - if (HasHostilesInRange && AttackAbility(nextAbilityToNextGCD, out act)) return true; - if (GeneralAbility(nextAbilityToNextGCD, out act)) return true; + if (HasHostilesInRange && AttackAbility(out act)) return true; + if (GeneralAbility(out act)) return true; //Run! if (!InCombat && IsMoving && role == JobRole.RangedPhysical @@ -124,31 +124,31 @@ private bool AntiKnockback(JobRole role, SpecialCommandType specialType, out IAc return false; } - private bool GeneralHealAbility(float nextAbilityToNextGCD, SpecialCommandType specialType, out IAction act) + private bool GeneralHealAbility(SpecialCommandType specialType, out IAction act) { act = null; switch (specialType) { case SpecialCommandType.DefenseArea: - if (DefenseAreaAbility(nextAbilityToNextGCD, out act)) return true; + if (DefenseAreaAbility(out act)) return true; break; case SpecialCommandType.DefenseSingle: - if (DefenseSingleAbility(nextAbilityToNextGCD, out act)) return true; + if (DefenseSingleAbility(out act)) return true; break; } if ((DataCenter.HPNotFull || Job.GetJobRole() != JobRole.Healer) && InCombat) { - if ((DataCenter.SpecialType == SpecialCommandType.HealArea || CanHealAreaAbility) && HealAreaAbility(nextAbilityToNextGCD, out act)) return true; - if ((DataCenter.SpecialType == SpecialCommandType.HealSingle || CanHealSingleAbility) && HealSingleAbility(nextAbilityToNextGCD, out act)) return true; + if ((DataCenter.SpecialType == SpecialCommandType.HealArea || CanHealAreaAbility) && HealAreaAbility(out act)) return true; + if ((DataCenter.SpecialType == SpecialCommandType.HealSingle || CanHealSingleAbility) && HealSingleAbility(out act)) return true; } return false; } - private bool AutoDefense(float nextAbilityToNextGCD, JobRole role, bool helpDefenseAOE, bool helpDefenseSingle, out IAction act) + private bool AutoDefense(JobRole role, bool helpDefenseAOE, bool helpDefenseSingle, out IAction act) { act = null; if (!InCombat || !HasHostilesInRange) @@ -171,10 +171,10 @@ private bool AutoDefense(float nextAbilityToNextGCD, JobRole role, bool helpDefe if (helpDefenseAOE) { - if (DefenseAreaAbility(nextAbilityToNextGCD, out act)) return true; + if (DefenseAreaAbility(out act)) return true; if (role is JobRole.Melee or JobRole.RangedPhysical or JobRole.RangedMagical) { - if (DefenseSingleAbility(nextAbilityToNextGCD, out act)) return true; + if (DefenseSingleAbility(out act)) return true; } } @@ -187,31 +187,31 @@ private bool AutoDefense(float nextAbilityToNextGCD, JobRole role, bool helpDefe if (tarOnMeCount > 1 && !IsMoving) { if (ArmsLength.CanUse(out act)) return true; - if (DefenseSingleAbility(nextAbilityToNextGCD, out act)) return true; + if (DefenseSingleAbility(out act)) return true; } //Big damage casting action. if (tarOnMeCount == 1 && DataCenter.IsHostileCastingToTank) { - if (DefenseSingleAbility(nextAbilityToNextGCD, out act)) return true; + if (DefenseSingleAbility(out act)) return true; } } - if (helpDefenseSingle && DefenseSingleAbility(nextAbilityToNextGCD, out act)) return true; + if (helpDefenseSingle && DefenseSingleAbility(out act)) return true; return false; } - private bool MovingAbility(float nextAbilityToNextGCD, SpecialCommandType specialType, out IAction act) + private bool MovingAbility(SpecialCommandType specialType, out IAction act) { act = null; - if (specialType == SpecialCommandType.MoveForward && MoveForwardAbility(nextAbilityToNextGCD, out act)) + if (specialType == SpecialCommandType.MoveForward && MoveForwardAbility(out act)) { if (act is BaseAction b && ObjectHelper.DistanceToPlayer(b.Target) > 5) return true; } else if (specialType == SpecialCommandType.MoveBack) { - if (MoveBackAbility(nextAbilityToNextGCD, out act)) return true; + if (MoveBackAbility(out act)) return true; } return false; } @@ -244,19 +244,19 @@ private bool GeneralUsingAbility(JobRole role, out IAction act) } - protected virtual bool EmergencyAbility(float nextAbilityToNextGCD, IAction nextGCD, out IAction act) + protected virtual bool EmergencyAbility(IAction nextGCD, out IAction act) { if (nextGCD is BaseAction action) { if (Job.GetJobRole() is JobRole.Healer or JobRole.RangedMagical && action.CastTime >= 5 && Swiftcast.CanUse(out act, CanUseOption.EmptyOrSkipCombo)) return true; - if (Service.Config.GetValue(SettingsCommand.AutoUseTrueNorth) && nextAbilityToNextGCD < TrueNorth.AnimationLockTime + DataCenter.Ping + 0.6f + if (Service.Config.GetValue(SettingsCommand.AutoUseTrueNorth) && action.EnemyPositional != EnemyPositional.None && action.Target != null) { if (action.EnemyPositional != action.Target.FindEnemyPositional() && action.Target.HasPositional()) { - if (TrueNorth.CanUse(out act, CanUseOption.EmptyOrSkipCombo)) return true; + if (TrueNorth.CanUse(out act, CanUseOption.EmptyOrSkipCombo | CanUseOption.OnLastAbility)) return true; } } } @@ -266,45 +266,45 @@ protected virtual bool EmergencyAbility(float nextAbilityToNextGCD, IAction next } [RotationDesc(DescType.MoveForwardAbility)] - protected virtual bool MoveForwardAbility(float nextAbilityToNextGCD, out IAction act, CanUseOption option = CanUseOption.None) + protected virtual bool MoveForwardAbility(out IAction act, CanUseOption option = CanUseOption.None) { act = null; return false; } [RotationDesc(DescType.MoveBackAbility)] - protected virtual bool MoveBackAbility(float nextAbilityToNextGCD, out IAction act) + protected virtual bool MoveBackAbility(out IAction act) { act = null; return false; } [RotationDesc(DescType.HealSingleAbility)] - protected virtual bool HealSingleAbility(float nextAbilityToNextGCD, out IAction act) + protected virtual bool HealSingleAbility(out IAction act) { act = null; return false; } [RotationDesc(DescType.HealAreaAbility)] - protected virtual bool HealAreaAbility(float nextAbilityToNextGCD, out IAction act) + protected virtual bool HealAreaAbility(out IAction act) { act = null; return false; } [RotationDesc(DescType.DefenseSingleAbility)] - protected virtual bool DefenseSingleAbility(float nextAbilityToNextGCD, out IAction act) + protected virtual bool DefenseSingleAbility(out IAction act) { act = null; return false; } [RotationDesc(DescType.DefenseAreaAbility)] - protected virtual bool DefenseAreaAbility(float nextAbilityToNextGCD, out IAction act) + protected virtual bool DefenseAreaAbility(out IAction act) { act = null; return false; } - protected virtual bool GeneralAbility(float nextAbilityToNextGCD, out IAction act) + protected virtual bool GeneralAbility(out IAction act) { act = null; return false; } - protected abstract bool AttackAbility(float nextAbilityToNextGCD, out IAction act); + protected abstract bool AttackAbility(out IAction act); } diff --git a/RotationSolver.Basic/Rotations/CustomRotation_GCD.cs b/RotationSolver.Basic/Rotations/CustomRotation_GCD.cs index bd9c19f23..1dc87f3df 100644 --- a/RotationSolver.Basic/Rotations/CustomRotation_GCD.cs +++ b/RotationSolver.Basic/Rotations/CustomRotation_GCD.cs @@ -2,7 +2,7 @@ public abstract partial class CustomRotation { - private IAction GCD(float nextAbilityToNextGCD, bool helpDefenseAOE, bool helpDefenseSingle) + private IAction GCD(bool helpDefenseAOE, bool helpDefenseSingle) { IAction act = DataCenter.CommandNextAction; if (act is IBaseAction a && a != null && a.IsRealGCD && a.CanUse(out _, CanUseOption.MustUse | CanUseOption.SkipDisable | CanUseOption.EmptyOrSkipCombo)) return act; @@ -11,7 +11,7 @@ private IAction GCD(float nextAbilityToNextGCD, bool helpDefenseAOE, bool helpDe var specialType = DataCenter.SpecialType; - if (RaiseSpell(specialType, out act, nextAbilityToNextGCD, false)) return act; + if (RaiseSpell(specialType, out act, false)) return act; if (specialType == SpecialCommandType.MoveForward && MoveForwardGCD(out act)) { @@ -43,12 +43,12 @@ private IAction GCD(float nextAbilityToNextGCD, bool helpDefenseAOE, bool helpDe if (GeneralGCD(out var action)) return action; - if (Service.Config.RaisePlayerByCasting && RaiseSpell(specialType, out act, nextAbilityToNextGCD, true)) return act; + if (Service.Config.RaisePlayerByCasting && RaiseSpell(specialType, out act, true)) return act; return null; } - private bool RaiseSpell(SpecialCommandType specialType, out IAction act, float nextAbilityToNextGCD, bool mustUse) + private bool RaiseSpell(SpecialCommandType specialType, out IAction act, bool mustUse) { act = null; if (Raise == null || Player.CurrentMp <= Service.Config.LessMPNoRaise) @@ -80,7 +80,8 @@ private bool RaiseSpell(SpecialCommandType specialType, out IAction act, float n return DataCenter.SetAutoStatus(AutoStatus.Raise, true); } } - else if (Service.Config.GetValue(SettingsCommand.RaisePlayerBySwift) && !Swiftcast.IsCoolingDown && nextAbilityToNextGCD > 0.6f + DataCenter.Ping) + else if (Service.Config.GetValue(SettingsCommand.RaisePlayerBySwift) && !Swiftcast.IsCoolingDown + && DataCenter.NextAbilityToNextGCD > DataCenter.MinPing + DataCenter.Ping) { return DataCenter.SetAutoStatus(AutoStatus.Raise, true); } diff --git a/RotationSolver.Basic/Rotations/CustomRotation_Invoke.cs b/RotationSolver.Basic/Rotations/CustomRotation_Invoke.cs index a150c7a1c..28549197e 100644 --- a/RotationSolver.Basic/Rotations/CustomRotation_Invoke.cs +++ b/RotationSolver.Basic/Rotations/CustomRotation_Invoke.cs @@ -15,13 +15,11 @@ public bool TryInvoke(out IAction newAction, out IAction gcdAction) var role = Job.GetJobRole(); ActionMoveForwardGCD = MoveForwardGCD(out var act) ? act : null; - var movingTarget = MoveForwardAbility(1, out act, CanUseOption.IgnoreTarget); + var movingTarget = MoveForwardAbility(out act, CanUseOption.IgnoreTarget); ActionMoveForwardAbility = movingTarget ? act : null; MoveTarget = (movingTarget && act is IBaseAction a) ? a.Target : null; - var nextAbilityToNextGCD = DataCenter.NextAbilityToNextGCD; - - ActionMoveBackAbility = MoveBackAbility(nextAbilityToNextGCD, out act) ? act : null; + ActionMoveBackAbility = MoveBackAbility(out act) ? act : null; if(!DataCenter.HPNotFull && role == JobRole.Healer) { @@ -30,17 +28,17 @@ public bool TryInvoke(out IAction newAction, out IAction gcdAction) else { ActionHealAreaGCD = HealAreaGCD(out act) ? act : null; - ActionHealAreaAbility = HealAreaAbility(nextAbilityToNextGCD, out act) ? act : null; + ActionHealAreaAbility = HealAreaAbility(out act) ? act : null; ActionHealSingleGCD = HealSingleGCD(out act) ? act : null; - ActionHealSingleAbility = HealSingleAbility(nextAbilityToNextGCD, out act) ? act : null; + ActionHealSingleAbility = HealSingleAbility(out act) ? act : null; } ActionDefenseAreaGCD = DefenseAreaGCD(out act) ? act : null; - ActionDefenseAreaAbility = DefenseAreaAbility(nextAbilityToNextGCD, out act) ? act : null; + ActionDefenseAreaAbility = DefenseAreaAbility(out act) ? act : null; ActionDefenseSingleGCD = DefenseSingleGCD(out act) ? act : null; - ActionDefenseSingleAbility = DefenseSingleAbility(nextAbilityToNextGCD, out act) ? act : null; + ActionDefenseSingleAbility = DefenseSingleAbility(out act) ? act : null; EsunaStanceNorthGCD = role switch { @@ -93,7 +91,6 @@ private IAction Invoke(out IAction gcdAction) return CountDownAction(countDown); } - float nextAbilityToNextGCD = DataCenter.NextAbilityToNextGCD; var helpDefenseAOE = Service.Config.GetValue(SettingsCommand.UseDefenseAbility) && DataCenter.IsHostileCastingAOE; bool helpDefenseSingle = false; @@ -109,19 +106,19 @@ private IAction Invoke(out IAction gcdAction) })) helpDefenseSingle = true; } - gcdAction = GCD(nextAbilityToNextGCD, helpDefenseAOE, helpDefenseSingle); + gcdAction = GCD(helpDefenseAOE, helpDefenseSingle); if (gcdAction != null) { - if (nextAbilityToNextGCD < DataCenter.MinPing + DataCenter.Ping || DataCenter.WeaponTotal < DataCenter.CastingTotal) return gcdAction; + if (DataCenter.NextAbilityToNextGCD < DataCenter.MinPing + DataCenter.Ping || DataCenter.WeaponTotal < DataCenter.CastingTotal) return gcdAction; - if (Ability(nextAbilityToNextGCD, gcdAction, out IAction ability, helpDefenseAOE, helpDefenseSingle)) return ability; + if (Ability(gcdAction, out IAction ability, helpDefenseAOE, helpDefenseSingle)) return ability; return gcdAction; } else if (gcdAction == null) { - if (Ability(nextAbilityToNextGCD, Addle, out IAction ability, helpDefenseAOE, helpDefenseSingle)) return ability; + if (Ability(Addle, out IAction ability, helpDefenseAOE, helpDefenseSingle)) return ability; return null; } return gcdAction; diff --git a/RotationSolver.Basic/Rotations/CustomRotation_OtherInfo.cs b/RotationSolver.Basic/Rotations/CustomRotation_OtherInfo.cs index b9591dfe5..95decb858 100644 --- a/RotationSolver.Basic/Rotations/CustomRotation_OtherInfo.cs +++ b/RotationSolver.Basic/Rotations/CustomRotation_OtherInfo.cs @@ -131,6 +131,8 @@ public abstract partial class CustomRotation protected static float Ping => DataCenter.Ping; + protected static float NextAbilityToNextGCD => DataCenter.NextAbilityToNextGCD; + public static uint AdjustId(uint id) => Service.GetAdjustedActionId(id); public static ActionID AdjustId(ActionID id) => Service.GetAdjustedActionId(id);