From a24d6705c840df1f5e734cd699e0c5e0b59508c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=8B=E6=B0=B4?= <1123993881@qq.com> Date: Sat, 22 Apr 2023 19:22:17 +0800 Subject: [PATCH] fix: add an OtherOption for control actions as whole. --- RotationSolver.Basic/Actions/BaseAction_ActionInfo.cs | 2 ++ RotationSolver.Basic/Actions/BaseAction_BasicInfo.cs | 2 ++ RotationSolver.Basic/Rotations/CustomRotation_Invoke.cs | 3 +++ 3 files changed, 7 insertions(+) diff --git a/RotationSolver.Basic/Actions/BaseAction_ActionInfo.cs b/RotationSolver.Basic/Actions/BaseAction_ActionInfo.cs index 5e25c23a6..d6557f858 100644 --- a/RotationSolver.Basic/Actions/BaseAction_ActionInfo.cs +++ b/RotationSolver.Basic/Actions/BaseAction_ActionInfo.cs @@ -42,6 +42,8 @@ private bool WillCooldown public unsafe virtual bool CanUse(out IAction act, CanUseOption option = CanUseOption.None, byte gcdCountForAbility = 0) { + option |= OtherOption; + act = this; var mustUse = option.HasFlag(CanUseOption.MustUse); diff --git a/RotationSolver.Basic/Actions/BaseAction_BasicInfo.cs b/RotationSolver.Basic/Actions/BaseAction_BasicInfo.cs index 9553e558d..0e3926f23 100644 --- a/RotationSolver.Basic/Actions/BaseAction_BasicInfo.cs +++ b/RotationSolver.Basic/Actions/BaseAction_BasicInfo.cs @@ -5,6 +5,8 @@ namespace RotationSolver.Basic.Actions; public partial class BaseAction : IBaseAction { + internal static CanUseOption OtherOption { get; set; } = CanUseOption.None; + Action _action; ActionOption _option; diff --git a/RotationSolver.Basic/Rotations/CustomRotation_Invoke.cs b/RotationSolver.Basic/Rotations/CustomRotation_Invoke.cs index 2fc884562..32e7769cc 100644 --- a/RotationSolver.Basic/Rotations/CustomRotation_Invoke.cs +++ b/RotationSolver.Basic/Rotations/CustomRotation_Invoke.cs @@ -119,7 +119,10 @@ private IAction Invoke(out IAction gcdAction) } else if (gcdAction == null) { + BaseAction.OtherOption = CanUseOption.IgnoreClippingCheck; if (Ability(Addle, out IAction ability, helpDefenseAOE, helpDefenseSingle)) return ability; + BaseAction.OtherOption = CanUseOption.None; + return null; } return gcdAction;