예제 #1
0
파일: Tumble.cs 프로젝트: riwalry1/AIO
        public static Vector3 IsSafe(AIHeroClient target, Vector3 vec, bool checkTarget = true)
        {
            if (Program.DontSafeCheck)
            {
                return(vec);
            }

            if (checkTarget)
            {
                if (target.ServerPosition.LSTo2D().LSDistance(vec) <= target.AttackRange)
                {
                    if (vec.CountEnemiesInRange(1000) > 1)
                    {
                        return(Vector3.Zero);
                    }
                    if (target.ServerPosition.LSTo2D().LSDistance(vec) <= target.AttackRange / 2f)
                    {
                        return
                            (SCommon.Maths.Geometry.Deviation(ObjectManager.Player.ServerPosition.LSTo2D(),
                                                              target.ServerPosition.LSTo2D(), 60).To3D());
                    }
                }

                if (((Program.DontQIntoEnemies || target.IsMelee) &&
                     HeroManager.Enemies.Any(
                         p =>
                         p.ServerPosition.LSTo2D().LSDistance(vec) <=
                         p.AttackRange + ObjectManager.Player.BoundingRadius + (p.IsMelee ? 100 : 0))) ||
                    Utility.UnderTurret(vec, true))
                {
                    return(Vector3.Zero);
                }
            }
            if (
                HeroManager.Enemies.Any(
                    p =>
                    p.NetworkId != target.NetworkId &&
                    p.ServerPosition.LSTo2D().LSDistance(vec) <= p.AttackRange + (p.IsMelee ? 50 : 0)) ||
                Utility.UnderTurret(vec, true))
            {
                return(Vector3.Zero);
            }

            return(vec);
        }