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); } } }
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)); } } } }
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()); } }
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))); }