Ejemplo n.º 1
0
 public static List<Obj_AI_Base> GetEvadeTargets(
     EvadeSpellData spell,
     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 spell.ValidTargets)
     {
         switch (targetType)
         {
             case SpellTargets.AllyChampions:
                 allTargets.AddRange(
                     GameObjects.AllyHeroes.Where(i => i.IsValidTarget(spell.MaxRange, false) && !i.IsMe));
                 break;
             case SpellTargets.AllyMinions:
                 allTargets.AddRange(GameObjects.AllyMinions.Where(i => i.IsValidTarget(spell.MaxRange, false)));
                 break;
             case SpellTargets.AllyWards:
                 allTargets.AddRange(GameObjects.AllyWards.Where(i => i.IsValidTarget(spell.MaxRange, false)));
                 break;
             case SpellTargets.EnemyChampions:
                 allTargets.AddRange(GameObjects.EnemyHeroes.Where(i => i.IsValidTarget(spell.MaxRange)));
                 break;
             case SpellTargets.EnemyMinions:
                 allTargets.AddRange(GameObjects.EnemyMinions.Where(i => i.IsValidTarget(spell.MaxRange)));
                 break;
             case SpellTargets.EnemyWards:
                 allTargets.AddRange(GameObjects.EnemyWards.Where(i => i.IsValidTarget(spell.MaxRange)));
                 break;
         }
     }
     foreach (var target in
         allTargets.Where(i => dontCheckForSafety || IsSafePoint(i.ServerPosition.ToVector2()).IsSafe)
             .Where(i => spell.Name != "YasuoDashWrapper" || !i.HasBuff("YasuoDashWrapper")))
     {
         if (isBlink)
         {
             if (Variables.TickCount - LastWardJumpAttempt < 250
                 || IsSafeToBlink(target.ServerPosition.ToVector2(), Configs.EvadingFirstTimeOffset, spell.Delay))
             {
                 goodTargets.Add(target);
             }
             if (Variables.TickCount - LastWardJumpAttempt < 250
                 || IsSafeToBlink(
                     target.ServerPosition.ToVector2(),
                     Configs.EvadingSecondTimeOffset,
                     spell.Delay))
             {
                 badTargets.Add(target);
             }
         }
         else
         {
             var pathToTarget = new List<Vector2> { Evade.PlayerPosition, target.ServerPosition.ToVector2() };
             if (Variables.TickCount - LastWardJumpAttempt < 250
                 || IsSafePath(pathToTarget, Configs.EvadingFirstTimeOffset, spell.Speed, spell.Delay).IsSafe)
             {
                 goodTargets.Add(target);
             }
             if (Variables.TickCount - LastWardJumpAttempt < 250
                 || IsSafePath(pathToTarget, Configs.EvadingSecondTimeOffset, spell.Speed, spell.Delay).IsSafe)
             {
                 badTargets.Add(target);
             }
         }
     }
     return goodTargets.Count > 0 ? goodTargets : (onlyGood ? new List<Obj_AI_Base>() : badTargets);
 }