/// <summary> /// Checks if attack animation can be safely canceled /// </summary> /// <returns></returns> public static bool CanCancelAnimation(float delay = 0f) { var time = (tick - LastAttackStart); var cancelDur = UnitDatabase.GetAttackPoint(me) * 1000 - Game.Ping + 50 - delay; return(time > cancelDur); }
/// <summary> /// </summary> /// <param name="unit"></param> /// <returns></returns> public static bool IsInBackswingtime(Unit unit) { if (MaxCount < 1) { return(false); } var attackPoint = UnitDatabase.GetAttackPoint(unit); //if (attackPoint * 1000 < Game.Ping/2) // return false; var data = AttackAnimation.FirstOrDefault( unitData => unitData.UnitName == unit.Name || unitData.UnitClassId == unit.ClassID); //Console.WriteLine(data); return(data != null && data.CanMove); }