Ejemplo n.º 1
0
        private static Vector3 GetDashQPos()
        {
            var firstQPos = Me.ServerPosition.Extend(Game.CursorPosition, Q.Range);
            var allPoint  = MyGeometry.GetCirclrPos(Me.ServerPosition, Q.Range);

            foreach (var point in allPoint)
            {
                var mousecount = firstQPos.CountEnemiesInRange(300);
                var count      = point.CountEnemiesInRange(300);

                if (!HaveEnemiesInRange(point))
                {
                    continue;
                }

                if (mousecount == count)
                {
                    if (point.DistanceToMouse() < firstQPos.DistanceToMouse())
                    {
                        firstQPos = point;
                    }
                }

                if (count < mousecount)
                {
                    firstQPos = point;
                }
            }

            for (var i = 1; i <= 5; i++)
            {
                if (NavMesh.IsWall(Me.ServerPosition.Extend(firstQPos, i * 20)))
                {
                    return(Vector3.Zero);
                }
            }

            if (MiscOption.GetBool("QTurret") && firstQPos.UnderTurret(true))
            {
                return(Vector3.Zero);
            }

            if (MiscOption.GetBool("QCheck"))
            {
                if (Me.CountEnemiesInRange(Q.Range + Me.BoundingRadius - 30) < firstQPos.CountEnemiesInRange(Q.Range * 2 - Me.BoundingRadius))
                {
                    return(Vector3.Zero);
                }

                if (firstQPos.CountEnemiesInRange(Q.Range * 2 - Me.BoundingRadius) > 3)
                {
                    return(Vector3.Zero);
                }
            }

            return(!HaveEnemiesInRange(firstQPos) ? Vector3.Zero : firstQPos);
        }