Beispiel #1
0
 private static void Farm()
 {
     if (MainMenu["Farm"]["Q"] && Q.IsReady() && !Player.IsDashing() && (!HaveQ3 || MainMenu["Farm"]["Q3"]))
     {
         var minion =
             GameObjects.EnemyMinions.Where(
                 i =>
                 i.IsValidTarget((!HaveQ3 ? Q : Q2).Range - 25) && (!HaveQ3 ? Q : Q2).GetHealthPrediction(i) > 0 &&
                 (!HaveQ3 ? Q : Q2).GetHealthPrediction(i) <= GetQDmg(i)).MaxOrDefault(i => i.MaxHealth);
         if (minion != null && Common.Cast(!HaveQ3 ? Q : Q2, minion, true) == CastStates.SuccessfullyCasted)
         {
             return;
         }
     }
     if (MainMenu["Farm"]["E"] && E.IsReady())
     {
         var minion =
             GameObjects.EnemyMinions.Where(
                 i =>
                 i.IsValidTarget(E.Range) && CanCastE(i) && Evader.IsSafePoint(PosAfterE(i).ToVector2()).IsSafe &&
                 (!UnderTower(PosAfterE(i)) || MainMenu["Farm"]["ETower"]) && E.GetHealthPrediction(i) > 0 &&
                 E.GetHealthPrediction(i) <= GetEDmg(i)).MaxOrDefault(i => i.MaxHealth);
         if (minion != null)
         {
             E.CastOnUnit(minion);
         }
     }
 }
Beispiel #2
0
        private static void TryToEvade(List <Skillshot> hitBy, Vector2 to)
        {
            var dangerLevel =
                hitBy.Select(
                    i =>
                    MainMenu["Evade"][i.SpellData.ChampionName.ToLowerInvariant()][i.SpellData.SpellName]["DangerLevel"]
                    .GetValue <MenuSlider>().Value).Concat(new[] { 0 }).Max();

            foreach (var evadeSpell in
                     EvadeSpellDatabase.Spells.Where(i => i.Enabled && i.DangerLevel <= dangerLevel && i.IsReady)
                     .OrderBy(i => i.DangerLevel))
            {
                if (evadeSpell.EvadeType == EvadeTypes.Dash && evadeSpell.CastType == CastTypes.Target)
                {
                    var targets =
                        Evader.GetEvadeTargets(evadeSpell)
                        .Where(
                            i =>
                            Evader.IsSafePoint(PosAfterE(i).ToVector2()).IsSafe &&
                            (!UnderTower(PosAfterE(i)) ||
                             MainMenu["Evade"]["Spells"][evadeSpell.Name]["ETower"].GetValue <MenuBool>().Value))
                        .ToList();
                    if (targets.Count > 0)
                    {
                        var closestTarget = targets.MinOrDefault(i => to.Distance(PosAfterE(i)));
                        Player.Spellbook.CastSpell(evadeSpell.Slot, closestTarget);
                        return;
                    }
                }
                if (evadeSpell.EvadeType == EvadeTypes.WindWall)
                {
                    var skillshots =
                        Evade.DetectedSkillshots.Where(
                            i =>
                            i.Enabled && i.SpellData.CollisionObjects.Contains(CollisionObjectTypes.YasuoWall) &&
                            i.IsAboutToHit(
                                150 + evadeSpell.Delay
                                - MainMenu["Evade"]["Spells"][evadeSpell.Name]["WDelay"].GetValue <MenuSlider>().Value,
                                Player)).ToList();
                    if (skillshots.Count > 0)
                    {
                        var dangerousSkillshot =
                            skillshots.MaxOrDefault(
                                i =>
                                MainMenu["Evade"][i.SpellData.ChampionName.ToLowerInvariant()][i.SpellData.SpellName][
                                    "DangerLevel"].GetValue <MenuSlider>().Value);
                        Player.Spellbook.CastSpell(
                            evadeSpell.Slot,
                            Player.ServerPosition.Extend(dangerousSkillshot.Start, 100));
                    }
                }
            }
        }
Beispiel #3
0
        private static void OnUpdateEvade(EventArgs args)
        {
            if (Player.IsDead || !MainMenu["Evade"]["Enabled"].GetValue <MenuKeyBind>().Active)
            {
                return;
            }
            if (Player.HasBuffOfType(BuffType.SpellShield) || Player.HasBuffOfType(BuffType.SpellImmunity))
            {
                return;
            }
            var safePoint = Evader.IsSafePoint(Player.ServerPosition.ToVector2());
            var safePath  = Evader.IsSafePath(Player.GetWaypoints(), 100);

            if (!safePath.IsSafe && !safePoint.IsSafe)
            {
                TryToEvade(safePoint.SkillshotList, Game.CursorPos.ToVector2());
            }
        }
Beispiel #4
0
        private static Obj_AI_Base GetNearObj(Obj_AI_Base target = null, bool inQCir = false)
        {
            var pos = target != null
                          ? Prediction.GetPrediction(target, E.Delay, 0, E.Speed).UnitPosition
                          : Game.CursorPos;

            var obj = new List <Obj_AI_Base>();

            obj.AddRange(GameObjects.EnemyHeroes.Where(i => i.IsValidTarget(E.Range) && CanCastE(i)));
            obj.AddRange(GameObjects.EnemyMinions.Where(i => i.IsValidTarget(E.Range) && CanCastE(i)));
            obj.AddRange(GameObjects.Jungle.Where(i => i.IsValidTarget(E.Range) && CanCastE(i)));
            return
                (obj.Where(
                     i =>
                     PosAfterE(i).Distance(pos) < (inQCir ? QCirWidth : Player.Distance(pos)) &&
                     Evader.IsSafePoint(PosAfterE(i).ToVector2()).IsSafe)
                 .MinOrDefault(i => PosAfterE(i).Distance(pos)));
        }