diff --git a/RotationSolver.Basic/Actions/BaseAction_ActionInfo.cs b/RotationSolver.Basic/Actions/BaseAction_ActionInfo.cs index 3c2848c64..72bcb768e 100644 --- a/RotationSolver.Basic/Actions/BaseAction_ActionInfo.cs +++ b/RotationSolver.Basic/Actions/BaseAction_ActionInfo.cs @@ -132,7 +132,7 @@ public unsafe virtual bool CanUse(out IAction act, CanUseOption option = CanUseO //Is knocking back. if (DateTime.Now > DataCenter.KnockbackStart && DateTime.Now < DataCenter.KnockbackFinished) return false; - if (DataCenter.NoPoslock && DataCenter.IsMoving && !option.HasFlag(CanUseOption.IgnoreCastCheck)) return false; + if (DataCenter.NoPoslock && DataCenter.IsMovingOrJumping && !option.HasFlag(CanUseOption.IgnoreCastCheck)) return false; } if (IsGeneralGCD && IsEot && IsFriendly && IActionHelper.IsLastGCD(true, this) diff --git a/RotationSolver.Basic/Actions/BaseAction_Target.cs b/RotationSolver.Basic/Actions/BaseAction_Target.cs index 958005cf4..bd795e5a6 100644 --- a/RotationSolver.Basic/Actions/BaseAction_Target.cs +++ b/RotationSolver.Basic/Actions/BaseAction_Target.cs @@ -196,7 +196,7 @@ private bool TargetAreaMove(float range, bool mustUse) private bool TargetAreaFriend(float range, bool mustUse, PlayerCharacter player) { if (!Service.Config.GetValue(PluginConfigBool.UseGroundBeneficialAbility)) return false; - if (!Service.Config.GetValue(PluginConfigBool.UseGroundBeneficialAbilityWhenMoving) && DataCenter.IsMoving) return false; + if (!Service.Config.GetValue(PluginConfigBool.UseGroundBeneficialAbilityWhenMoving) && DataCenter.IsMovingOrJumping) return false; var strategy = Service.Config.GetValue(PluginConfigInt.BeneficialAreaStrategy); switch (strategy) diff --git a/RotationSolver.Basic/DataCenter.cs b/RotationSolver.Basic/DataCenter.cs index 10ede196b..9024d5ce9 100644 --- a/RotationSolver.Basic/DataCenter.cs +++ b/RotationSolver.Basic/DataCenter.cs @@ -117,7 +117,7 @@ public static TargetingType TargetingType } } - public static bool IsMoving { get; internal set; } + public static bool IsMovingOrJumping { get; internal set; } internal static float StopMovingRaw { get; set; } diff --git a/RotationSolver.Basic/Helpers/ReflectionHelper.cs b/RotationSolver.Basic/Helpers/ReflectionHelper.cs index a2eaff566..ff4ceb8a3 100644 --- a/RotationSolver.Basic/Helpers/ReflectionHelper.cs +++ b/RotationSolver.Basic/Helpers/ReflectionHelper.cs @@ -9,7 +9,7 @@ internal static PropertyInfo[] GetStaticProperties(this Type type) var props = from prop in type.GetRuntimeProperties() where typeof(T).IsAssignableFrom(prop.PropertyType) && prop.GetMethod is MethodInfo info - && info.IsStatic + && info.IsStatic && info.GetCustomAttribute() == null select prop; return props.Union(type.BaseType.GetStaticProperties()).ToArray(); diff --git a/RotationSolver.Basic/Rotations/Basic/SAM_Base.cs b/RotationSolver.Basic/Rotations/Basic/SAM_Base.cs index cf699e1d1..b6128e2c1 100644 --- a/RotationSolver.Basic/Rotations/Basic/SAM_Base.cs +++ b/RotationSolver.Basic/Rotations/Basic/SAM_Base.cs @@ -156,7 +156,7 @@ public static bool IsMoonTimeLessThanFlower public static IBaseAction OgiNamikiri { get; } = new BaseAction(ActionID.OgiNamikiri) { StatusNeed = new[] { StatusID.OgiNamikiriReady }, - ActionCheck = (b, m) => !IsMoving + ActionCheck = (b, m) => !IsMovingOrJumping }; /// @@ -174,7 +174,7 @@ public static bool IsMoonTimeLessThanFlower /// public static IBaseAction Higanbana { get; } = new BaseAction(ActionID.Higanbana, ActionOption.Dot) { - ActionCheck = (b, m) => !IsMoving && SenCount == 1, + ActionCheck = (b, m) => !IsMovingOrJumping && SenCount == 1, TargetStatus = new[] { StatusID.Higanbana }, TimeToDie = 40, }; @@ -184,7 +184,7 @@ public static bool IsMoonTimeLessThanFlower /// public static IBaseAction TenkaGoken { get; } = new BaseAction(ActionID.TenkaGoken) { - ActionCheck = (b, m) => !IsMoving && SenCount == 2, + ActionCheck = (b, m) => !IsMovingOrJumping && SenCount == 2, }; /// @@ -192,7 +192,7 @@ public static bool IsMoonTimeLessThanFlower /// public static IBaseAction MidareSetsugekka { get; } = new BaseAction(ActionID.MidareSetsugekka) { - ActionCheck = (b, m) => !IsMoving && SenCount == 3, + ActionCheck = (b, m) => !IsMovingOrJumping && SenCount == 3, }; /// diff --git a/RotationSolver.Basic/Rotations/Basic/SCH_Base.cs b/RotationSolver.Basic/Rotations/Basic/SCH_Base.cs index f3180a858..e1c241d71 100644 --- a/RotationSolver.Basic/Rotations/Basic/SCH_Base.cs +++ b/RotationSolver.Basic/Rotations/Basic/SCH_Base.cs @@ -83,7 +83,7 @@ public abstract class SCH_Base : CustomRotation /// public static IBaseAction SacredSoil { get; } = new BaseAction(ActionID.SacredSoil, ActionOption.Heal) { - ActionCheck = (b, m) => HasAetherflow && !IsMoving, + ActionCheck = (b, m) => HasAetherflow && !IsMovingOrJumping, }; /// diff --git a/RotationSolver.Basic/Rotations/Basic/WHM_Base.cs b/RotationSolver.Basic/Rotations/Basic/WHM_Base.cs index 966bcfd69..fbd913af0 100644 --- a/RotationSolver.Basic/Rotations/Basic/WHM_Base.cs +++ b/RotationSolver.Basic/Rotations/Basic/WHM_Base.cs @@ -204,7 +204,7 @@ protected static bool LilyAfterGCD(uint gcdCount = 0, float offset = 0) /// public static IBaseAction PresenceOfMind { get; } = new BaseAction(ActionID.PresenceOfMind, ActionOption.Buff) { - ActionCheck = (b, m) => !IsMoving && IsLongerThan(10), + ActionCheck = (b, m) => !IsMovingOrJumping && IsLongerThan(10), }; /// diff --git a/RotationSolver.Basic/Rotations/CustomRotation_Ability.cs b/RotationSolver.Basic/Rotations/CustomRotation_Ability.cs index a62f66d32..4619196fa 100644 --- a/RotationSolver.Basic/Rotations/CustomRotation_Ability.cs +++ b/RotationSolver.Basic/Rotations/CustomRotation_Ability.cs @@ -60,7 +60,7 @@ private bool Ability(IAction nextGCD, out IAction act, bool helpDefenseAOE, bool if (GeneralAbility(out act)) return true; //Run! - if (IsMoving && NotInCombatDelay && Service.Config.GetValue(PluginConfigBool.AutoSpeedOutOfCombat) + if (IsMovingOrJumping && NotInCombatDelay && Service.Config.GetValue(PluginConfigBool.AutoSpeedOutOfCombat) && SpeedAbility(out act)) return true; return false; diff --git a/RotationSolver.Basic/Rotations/CustomRotation_Actions.cs b/RotationSolver.Basic/Rotations/CustomRotation_Actions.cs index 294b728c7..f3efd8ad4 100644 --- a/RotationSolver.Basic/Rotations/CustomRotation_Actions.cs +++ b/RotationSolver.Basic/Rotations/CustomRotation_Actions.cs @@ -168,7 +168,7 @@ public override bool CanUse(out IAction act, CanUseOption option = CanUseOption. { FilterForHostiles = bs => bs.Where(b => { - if (b.IsBoss() || IsMoving || b.CastActionId == 0) return false; + if (b.IsBoss() || IsMovingOrJumping || b.CastActionId == 0) return false; if (!b.IsCastInterruptible || Interject.IsCoolingDown) return true; return false; diff --git a/RotationSolver.Basic/Rotations/CustomRotation_GCD.cs b/RotationSolver.Basic/Rotations/CustomRotation_GCD.cs index bfdd3f0cd..5b2fa298a 100644 --- a/RotationSolver.Basic/Rotations/CustomRotation_GCD.cs +++ b/RotationSolver.Basic/Rotations/CustomRotation_GCD.cs @@ -79,7 +79,7 @@ private bool RaiseSpell(SpecialCommandType specialType, out IAction act, bool mu { return DataCenter.SetAutoStatus(AutoStatus.Raise, true); } - else if(!IsMoving) + else if(!IsMovingOrJumping) { act = action; return DataCenter.SetAutoStatus(AutoStatus.Raise, true); diff --git a/RotationSolver.Basic/Rotations/CustomRotation_OtherInfo.cs b/RotationSolver.Basic/Rotations/CustomRotation_OtherInfo.cs index 5282faadb..00478287c 100644 --- a/RotationSolver.Basic/Rotations/CustomRotation_OtherInfo.cs +++ b/RotationSolver.Basic/Rotations/CustomRotation_OtherInfo.cs @@ -25,7 +25,13 @@ public abstract partial class CustomRotation /// /// Check the player is moving, such as running, walking or jumping. /// - public static bool IsMoving => DataCenter.IsMoving; + public static bool IsMovingOrJumping => DataCenter.IsMovingOrJumping; + + /// + /// Is moving. + /// + [Obsolete("Please use IsMovingOrJumping Instead")] + public static bool IsMoving => IsMovingOrJumping; /// /// Is in combat. @@ -481,7 +487,7 @@ public static float CombatTime /// The time of stopping moving. ///
WARNING: Do Not make this method the main of your rotation.
///
- public static float StopMovingTime => IsMoving ? 0 : DataCenter.StopMovingRaw + DataCenter.WeaponRemain; + public static float StopMovingTime => IsMovingOrJumping ? 0 : DataCenter.StopMovingRaw + DataCenter.WeaponRemain; /// /// Time from GCD. diff --git a/RotationSolver/Localization/Strings.cs b/RotationSolver/Localization/Strings.cs index 9c643e564..4d98b66d1 100644 --- a/RotationSolver/Localization/Strings.cs +++ b/RotationSolver/Localization/Strings.cs @@ -402,7 +402,7 @@ internal partial class Strings public Dictionary MemberInfoName { get; set; } = new Dictionary() { #region Rotation - { nameof(CustomRotation.IsMoving), "Is Moving"}, + { nameof(CustomRotation.IsMovingOrJumping), "Is Moving or Jumping"}, { nameof(CustomRotation.HasSwift), "Has Swift"}, { nameof(CustomRotation.HasTankStance), "Has tank stance"}, { nameof(CustomRotation.InCombat), "In Combat"}, diff --git a/RotationSolver/UI/RotationConfigWindow.cs b/RotationSolver/UI/RotationConfigWindow.cs index 2a9492f99..0b13440d7 100644 --- a/RotationSolver/UI/RotationConfigWindow.cs +++ b/RotationSolver/UI/RotationConfigWindow.cs @@ -2030,7 +2030,7 @@ private static unsafe void DrawStatus() { ImGui.Text("Fate: " + DataCenter.FateId.ToString()); } - ImGui.Text("Moving: " + DataCenter.IsMoving.ToString()); + ImGui.Text("Moving: " + DataCenter.IsMovingOrJumping.ToString()); ImGui.Text("Stop Moving: " + DataCenter.StopMovingRaw.ToString()); ImGui.Text("TerritoryType: " + DataCenter.TerritoryContentType.ToString()); diff --git a/RotationSolver/Updaters/ActionUpdater.cs b/RotationSolver/Updaters/ActionUpdater.cs index 603ddb1d2..f89a57a60 100644 --- a/RotationSolver/Updaters/ActionUpdater.cs +++ b/RotationSolver/Updaters/ActionUpdater.cs @@ -101,13 +101,13 @@ private unsafe static void UpdateSlots() static DateTime _stopMovingTime = DateTime.MinValue; private unsafe static void UpdateMoving() { - var last = DataCenter.IsMoving; - DataCenter.IsMoving = AgentMap.Instance()->IsPlayerMoving > 0; - if (last && !DataCenter.IsMoving) + var last = DataCenter.IsMovingOrJumping; + DataCenter.IsMovingOrJumping = AgentMap.Instance()->IsPlayerMoving > 0 || Player.GameObject->GetHeight() > 0; + if (last && !DataCenter.IsMovingOrJumping) { _stopMovingTime = DateTime.Now; } - else if (DataCenter.IsMoving) + else if (DataCenter.IsMovingOrJumping) { _stopMovingTime = DateTime.MinValue; }