diff --git a/RotationSolver.Basic/DataCenter.cs b/RotationSolver.Basic/DataCenter.cs index 023e56e10..2a5e80048 100644 --- a/RotationSolver.Basic/DataCenter.cs +++ b/RotationSolver.Basic/DataCenter.cs @@ -138,7 +138,9 @@ public static unsafe ushort FateId public static uint[] BluSlots { get; set; } = new uint[24]; static DateTime _specialStateStartTime = DateTime.MinValue; - public static double SpecialTimeLeft => Service.Config.SpecialDuration + WeaponRemain - (DateTime.Now - _specialStateStartTime).TotalSeconds; + private static double SpecialTimeElapsed => (DateTime.Now - _specialStateStartTime).TotalSeconds; + public static double SpecialTimeLeft => WeaponTotal == 0 || WeaponElapsed == 0 ? Service.Config.SpecialDuration - SpecialTimeElapsed : + Math.Ceiling((Service.Config.SpecialDuration + WeaponElapsed - SpecialTimeElapsed) / WeaponTotal) * WeaponTotal - WeaponElapsed; static SpecialCommandType _specialType = SpecialCommandType.EndSpecial; public static SpecialCommandType SpecialType =>