diff --git a/RotationSolver.Basic/Configuration/Configs.cs b/RotationSolver.Basic/Configuration/Configs.cs index 2790a9889..0d9d73586 100644 --- a/RotationSolver.Basic/Configuration/Configs.cs +++ b/RotationSolver.Basic/Configuration/Configs.cs @@ -414,6 +414,11 @@ public const string Filter = BasicTimer, Section = 2)] private static readonly bool _noPingCheck = false; + [UI("The max ping that RS can get to before skipping to the next action.", + Filter = BasicTimer)] + [Range(0.01f, 0.5f, ConfigUnitType.Seconds, 0.002f)] + public float MaxPing { get; set; } = 0.06f; + [UI("Use additional conditions", Filter = BasicParams)] public bool UseAdditionalConditions { get; set; } = false; diff --git a/RotationSolver.Basic/DataCenter.cs b/RotationSolver.Basic/DataCenter.cs index 5d181416b..7448d1024 100644 --- a/RotationSolver.Basic/DataCenter.cs +++ b/RotationSolver.Basic/DataCenter.cs @@ -211,6 +211,7 @@ public static float AbilityRemain get { var gcdRemain = WeaponRemain; + // Check if we should account for the animation lock and ping. if (gcdRemain - MinAnimationLock - Ping <= AnimationLocktime) { return gcdRemain + MinAnimationLock + Ping; @@ -219,7 +220,20 @@ public static float AbilityRemain } } - public static float NextAbilityToNextGCD => WeaponRemain - AnimationLocktime; + // Update the property to conditionally use AbilityRemain based on the NoPingCheck setting. + public static float NextAbilityToNextGCD + { + get + { + // Check if NoPingCheck is false; if so, use AbilityRemain. + if (!Service.Config.NoPingCheck) + { + return AbilityRemain - WeaponRemain; + } + // Otherwise, use the existing logic. + return WeaponRemain - AnimationLocktime; + } + } public static float CastingTotal { get; internal set; } #endregion @@ -394,9 +408,10 @@ public static float DPSTaken public static ActionID LastGCD { get; private set; } = 0; public static ActionID LastAbility { get; private set; } = 0; - public static float Ping => Service.Config.NoPingCheck ? 0 : Math.Min(RTT, FetchTime); - public static float RTT { get; internal set; } = 0.1f; - public static float FetchTime { get; private set; } = 0.1f; + public static float Ping => Service.Config.NoPingCheck ? 0 : Math.Min(Math.Min(RTT, FetchTime), Service.Config.MaxPing); + + public static float RTT { get; internal set; } = 0.05f; + public static float FetchTime { get; private set; } = 0.05f; public const float MinAnimationLock = 0.6f;