Beispiel #1
0
 public static List<Obj_AI_Base> GetEvadeTargets(
     SpellValidTargets[] validTargets,
     int speed,
     int delay,
     float range,
     bool isBlink = false,
     bool onlyGood = false,
     bool dontCheckForSafety = false)
 {
     var badTargets = new List<Obj_AI_Base>();
     var goodTargets = new List<Obj_AI_Base>();
     var allTargets = new List<Obj_AI_Base>();
     foreach (var targetType in validTargets)
     {
         switch (targetType)
         {
             case SpellValidTargets.AllyChampions:
                 allTargets.AddRange(GameObjects.AllyHeroes.Where(i => i.IsValidTarget(range, false) && !i.IsMe));
                 break;
             case SpellValidTargets.AllyMinions:
                 allTargets.AddRange(
                     GameObjects.AllyMinions.Where(
                         i => i.IsValidTarget(range, false, ObjectManager.Player.Position) && i.IsMinion()));
                 break;
             case SpellValidTargets.AllyWards:
                 allTargets.AddRange(GameObjects.AllyWards.Where(i => i.IsValidTarget(range, false)));
                 break;
             case SpellValidTargets.EnemyChampions:
                 allTargets.AddRange(GameObjects.EnemyHeroes.Where(i => i.IsValidTarget(range)));
                 break;
             case SpellValidTargets.EnemyMinions:
                 allTargets.AddRange(
                     GameObjects.EnemyMinions.Where(
                         i => i.IsValidTarget(range, true, ObjectManager.Player.Position) && i.IsMinion()));
                 allTargets.AddRange(
                     GameObjects.Jungle.Where(i => i.IsValidTarget(range, true, ObjectManager.Player.Position)));
                 break;
             case SpellValidTargets.EnemyWards:
                 allTargets.AddRange(GameObjects.EnemyWards.Where(i => i.IsValidTarget(range)));
                 break;
         }
     }
     foreach (var target in
         allTargets.Where(
             i =>
             (dontCheckForSafety || Evade.IsSafePoint(i.ServerPosition.ToVector2()).IsSafe)
             && (ObjectManager.Player.ChampionName != "Yasuo" || !i.HasBuff("YasuoDashWrapper"))))
     {
         if (isBlink)
         {
             if (Variables.TickCount - Evade.LastWardJumpAttempt < 250
                 || Evade.IsSafeToBlink(target.ServerPosition.ToVector2(), Config.EvadingFirstTimeOffset, delay))
             {
                 goodTargets.Add(target);
             }
             if (Variables.TickCount - Evade.LastWardJumpAttempt < 250
                 || Evade.IsSafeToBlink(target.ServerPosition.ToVector2(), Config.EvadingSecondTimeOffset, delay))
             {
                 badTargets.Add(target);
             }
         }
         else
         {
             var pathToTarget = new List<Vector2> { Evade.PlayerPosition, target.ServerPosition.ToVector2() };
             if (Variables.TickCount - Evade.LastWardJumpAttempt < 250
                 || Evade.IsSafePath(pathToTarget, Config.EvadingFirstTimeOffset, speed, delay).IsSafe)
             {
                 goodTargets.Add(target);
             }
             if (Variables.TickCount - Evade.LastWardJumpAttempt < 250
                 || Evade.IsSafePath(pathToTarget, Config.EvadingSecondTimeOffset, speed, delay).IsSafe)
             {
                 badTargets.Add(target);
             }
         }
     }
     return goodTargets.Count > 0 ? goodTargets : (onlyGood ? new List<Obj_AI_Base>() : badTargets);
 }
Beispiel #2
0
        /// <summary>
        /// Returns the safe targets to cast escape spells.
        /// </summary>
        public static List<Obj_AI_Base> GetEvadeTargets(SpellValidTargets[] validTargets,
            int speed,
            int delay,
            float range,
            bool isBlink = false,
            bool onlyGood = false,
            bool DontCheckForSafety = false)
        {
            var badTargets = new List<Obj_AI_Base>();
            var goodTargets = new List<Obj_AI_Base>();
            var allTargets = new List<Obj_AI_Base>();
            foreach (var targetType in validTargets)
            {
                switch (targetType)
                {
                    case SpellValidTargets.AllyChampions:

                        foreach (var ally in ObjectManager.Get<Obj_AI_Hero>())
                        {
                            if (ally.IsValidTarget(range, false) && !ally.IsMe && ally.IsAlly)
                            {
                                allTargets.Add(ally);
                            }
                        }
                        break;


                    case SpellValidTargets.AllyMinions:
                        allTargets.AddRange(
                            MinionManager.GetMinions(
                                ObjectManager.Player.Position, range, MinionTypes.All, MinionTeam.Ally));
                        break;

                    case SpellValidTargets.AllyWards:

                        foreach (var gameObject in ObjectManager.Get<Obj_AI_Minion>())
                        {
                            if (gameObject.Name.ToLower().Contains("ward") && gameObject.IsValidTarget(range, false) &&
                                gameObject.Team == ObjectManager.Player.Team)
                            {
                                allTargets.Add(gameObject);
                            }
                        }
                        break;

                    case SpellValidTargets.EnemyChampions:
                        foreach (var enemy in ObjectManager.Get<Obj_AI_Hero>())
                        {
                            if (enemy.IsValidTarget(range))
                            {
                                allTargets.Add(enemy);
                            }
                        }

                        break;

                    case SpellValidTargets.EnemyMinions:
                        allTargets.AddRange(
                            MinionManager.GetMinions(
                                ObjectManager.Player.Position, range, MinionTypes.All, MinionTeam.NotAlly));
                        break;

                    case SpellValidTargets.EnemyWards:

                        foreach (var gameObject in ObjectManager.Get<Obj_AI_Minion>())
                        {
                            if (gameObject.Name.ToLower().Contains("ward") && gameObject.IsValidTarget(range))
                            {
                                allTargets.Add(gameObject);
                            }
                        }
                        break;
                }
            }

            foreach (var target in allTargets)
            {
                if (DontCheckForSafety || Evade.IsSafe(target.ServerPosition.To2D()).IsSafe)
                {
                    if (isBlink)
                    {
                        if (Utils.TickCount - Evade.LastWardJumpAttempt < 250 ||
                            Evade.IsSafeToBlink(target.ServerPosition.To2D(), Config.EvadingFirstTimeOffset, delay))
                        {
                            goodTargets.Add(target);
                        }

                        if (Utils.TickCount - Evade.LastWardJumpAttempt < 250 ||
                            Evade.IsSafeToBlink(target.ServerPosition.To2D(), Config.EvadingSecondTimeOffset, delay))
                        {
                            badTargets.Add(target);
                        }
                    }
                    else
                    {
                        var pathToTarget = new List<Vector2>();
                        pathToTarget.Add(ObjectManager.Player.ServerPosition.To2D());
                        pathToTarget.Add(target.ServerPosition.To2D());

                        if (Utils.TickCount - Evade.LastWardJumpAttempt < 250 ||
                            Evade.IsSafePath(pathToTarget, Config.EvadingFirstTimeOffset, speed, delay).IsSafe)
                        {
                            goodTargets.Add(target);
                        }

                        if (Utils.TickCount - Evade.LastWardJumpAttempt < 250 ||
                            Evade.IsSafePath(pathToTarget, Config.EvadingSecondTimeOffset, speed, delay).IsSafe)
                        {
                            badTargets.Add(target);
                        }
                    }
                }
            }

            return (goodTargets.Count > 0) ? goodTargets : (onlyGood ? new List<Obj_AI_Base>() : badTargets);
        }
Beispiel #3
0
        public static List<Obj_AI_Base> GetEvadeTargets(
            SpellValidTargets[] validTargets,
            int speed,
            int delay,
            float range,
            bool isBlink = false,
            bool onlyGood = false,
            bool dontCheckForSafety = false)
        {
            var badTargets = new List<Obj_AI_Base>();
            var goodTargets = new List<Obj_AI_Base>();
            var allTargets = new List<Obj_AI_Base>();
            foreach (var targetType in validTargets)
            {
                switch (targetType)
                {
                    case SpellValidTargets.AllyChampions:
                        allTargets.AddRange(HeroManager.Allies.Where(i => i.IsValidTarget(range, false) && !i.IsMe));
                        break;
                    case SpellValidTargets.AllyMinions:
                        allTargets.AddRange(
                            ObjectManager.Get<Obj_AI_Minion>().Where(x => x.IsAlly).Where(
                                i =>
                                    i.IsValidTarget(range, false, ObjectManager.Player.Position) &&
                                    MinionManager.IsMinion(i)));
                        break;
                    case SpellValidTargets.AllyWards:
                        allTargets.AddRange(
                            ObjectManager.Get<Obj_AI_Minion>()
                                .Where(x => x.IsAlly && MinionManager.IsWard(x.CharData.BaseSkinName))
                                .Where(i => i.IsValidTarget(range, false)));
                        break;
                    case SpellValidTargets.EnemyChampions:
                        allTargets.AddRange(HeroManager.Enemies.Where(i => i.IsValidTarget(range)));
                        break;
                    case SpellValidTargets.EnemyMinions:
                        allTargets.AddRange(
                            ObjectManager.Get<Obj_AI_Minion>().Where(x => x.IsEnemy).Where(
                                i =>
                                    i.IsValidTarget(range, true, ObjectManager.Player.Position) &&
                                    MinionManager.IsMinion(i)));
                        allTargets.AddRange(
                            ObjectManager.Get<Obj_AI_Minion>()
                                .Where(x => x.Team == GameObjectTeam.Neutral)
                                .Where(i => i.IsValidTarget(range, true, ObjectManager.Player.Position)));
                        break;
                    case SpellValidTargets.EnemyWards:
                        allTargets.AddRange(
                            ObjectManager.Get<Obj_AI_Minion>()
                                .Where(x => x.IsEnemy && MinionManager.IsWard(x.CharData.BaseSkinName))
                                .Where(i => i.IsValidTarget(range)));
                        break;

                }
            }
            foreach (var target in
                allTargets.Where(i => dontCheckForSafety || Evade.IsSafePoint(i.ServerPosition.To2D()).IsSafe))
            {
                if (isBlink)
                {
                    if (Utils.GameTimeTickCount - Evade.LastWardJumpAttempt < 250
                        || Evade.IsSafeToBlink(target.ServerPosition.To2D(), Config.EvadingFirstTimeOffset, delay))
                    {
                        goodTargets.Add(target);
                    }
                    if (Utils.GameTimeTickCount - Evade.LastWardJumpAttempt < 250
                        || Evade.IsSafeToBlink(target.ServerPosition.To2D(), Config.EvadingSecondTimeOffset, delay))
                    {
                        badTargets.Add(target);
                    }
                }
                else
                {
                    var pathToTarget = new List<Vector2> { Evade.PlayerPosition, target.ServerPosition.To2D() };
                    if (Utils.GameTimeTickCount - Evade.LastWardJumpAttempt < 250
                        || Evade.IsSafePath(pathToTarget, Config.EvadingFirstTimeOffset, speed, delay).IsSafe)
                    {
                        goodTargets.Add(target);
                    }
                    if (Utils.GameTimeTickCount - Evade.LastWardJumpAttempt < 250
                        || Evade.IsSafePath(pathToTarget, Config.EvadingSecondTimeOffset, speed, delay).IsSafe)
                    {
                        badTargets.Add(target);
                    }
                }
            }
            return goodTargets.Count > 0 ? goodTargets : (onlyGood ? new List<Obj_AI_Base>() : badTargets);
        }