private static double Overkillcheck(Obj_AI_Hero target) { //needs ignite with health + duration check +++++ double dmg = 0; var aa = Player.GetAutoAttackDamage(target); //Shit ain't done yet mate. if (Q.IsReady() && target.IsValidTarget(Q.Range) && Q1 == 0) { dmg += Qdmg(target) + aa; } if (Q1 == 1 && target.IsValidTarget(Q.Range)) { dmg += Qdmg(target) + aa; } if (E.IsReady() && Player.Distance(target.Position) <= Player.GetRealAutoAttackRange()) { dmg += aa; } if (Items.CanUseItem(3074) || Items.CanUseItem(3077)) { dmg += aa + aa * 0.60; } if (Player.Distance(target) <= Player.GetRealAutoAttackRange()) { dmg += aa; } return(dmg); }
/// <summary> /// Determines whether [is valid target] [the specified hero]. /// </summary> /// <param name="hero">The hero.</param> /// <param name="range">The range.</param> /// <param name="damageType">Type of the damage.</param> /// <param name="ignoreShields">if set to <c>true</c> [ignore shields].</param> /// <param name="from">From.</param> /// <returns></returns> private bool IsValidTarget( Obj_AI_Hero hero, float range, DamageType damageType, bool ignoreShields = true, Vector3 from = default(Vector3)) { return(hero.IsValidTarget() && hero.DistanceSquared(@from.Equals(default(Vector3)) ? GameObjects.Player.ServerPosition : @from) < Math.Pow(range <= 0 ? hero.GetRealAutoAttackRange() : range, 2) && !Invulnerable.Check(hero, damageType, ignoreShields)); }
/// <summary> /// Orbwalk command execution. /// </summary> private static void Orbwalk(OrbwalkerArgs args) { if (BlockOnce) { BlockOnce = false; return; } bool order; switch (args.Type) { case OrbwalkerType.AutoAttack: if (!args.Target.IsValidTarget(_player.GetRealAutoAttackRange()) || !CanAttack()) { break; } order = _player.IssueOrder(GameObjectOrder.AttackUnit, args.Target); if (order) { _lastAutoAttackTick = Variables.TickCount + Game.Ping / 2; } break; case OrbwalkerType.Movement: if (!args.Position.IsValid() && !CanMove(args.Windup)) { break; } order = _player.IssueOrder(GameObjectOrder.MoveTo, args.Position); if (order) { _nextMovementTick = Variables.TickCount + 200; } break; } }
/// <summary> /// TODO The get dash objects. /// </summary> /// <param name="predefinedObjectList"> /// TODO The predefined object list. /// </param> /// <returns> /// a list of objects attackable /// </returns> public static List <Obj_AI_Base> GetDashObjects(IEnumerable <Obj_AI_Base> predefinedObjectList = null) { var objects = predefinedObjectList != null ? predefinedObjectList.ToList() : ObjectManager.Get <Obj_AI_Base>() .Where(o => o.IsValidTarget(o.GetRealAutoAttackRange())) .ToList(); var apexPoint = player.ServerPosition.ToVector2() + (player.ServerPosition.ToVector2() - Game.CursorPos.ToVector2()).Normalized() * player.GetRealAutoAttackRange(); return (objects.Where( o => IsLyingInCone(o.ServerPosition.ToVector2(), apexPoint, player.ServerPosition.ToVector2(), Math.PI)) .OrderBy(o => o.Distance(apexPoint)) .ToList()); }
private static void FinishLoading() { LeagueSharp.Drawing.OnDraw += Draw; Game.OnUpdate += OnUpdate; Events.OnGapCloser += OnGapcloser; Events.OnInterruptableTarget += OnInterruptableTarget; DelayAction.Add(3000, () => MyRange = Player.GetRealAutoAttackRange()); //Variables.Orbwalker.Enabled = true; //DelayAction.Add(1000, () => Variables.Orbwalker.Enabled = true); //DelayAction.Add(5000, () => Variables.Orbwalker.Enabled = true); //DelayAction.Add(10000, () => Variables.Orbwalker.Enabled = true); Menu = new Menu("tyler1", "Tyler1", true); AutoCatch = Menu.Add(new MenuBool("tyler1auto", "Auto catch axes?", true)); CatchOnlyCloseToMouse = Menu.Add(new MenuBool("tyler1onlyclose", "Catch only axes close to mouse?", true)); MaxDistToMouse = Menu.Add(new MenuSlider("tyler1maxdist", "Max axe distance to mouse", 500, 250, 1250)); OnlyCatchIfSafe = Menu.Add(new MenuBool("tyler1safeaxes", "Only catch axes if safe (anti melee)", false)); MinQLaneclearManaPercent = Menu.Add(new MenuSlider("tyler1QLCMana", "Min Mana Percent for Q Laneclear", 60, 0, 100)); EMenu = Menu.Add(new Menu("tyler1E", "E Settings: ")); ECombo = EMenu.Add(new MenuBool("tyler1ECombo", "Use E in Combo", true)); EGC = EMenu.Add(new MenuBool("tyler1EGC", "Use E on Gapcloser", true)); EInterrupt = EMenu.Add(new MenuBool("tyler1EInterrupt", "Use E to Interrupt", true)); RMenu = Menu.Add(new Menu("tyler1R", "R Settings:")); RKS = RMenu.Add(new MenuBool("tyler1RKS", "Use R to steal kills", true)); RKSOnlyIfCantAA = RMenu.Add(new MenuBool("tyler1RKSOnlyIfCantAA", "Use R KS only if can't AA", true)); RIfHit = RMenu.Add(new MenuSlider("tyler1RIfHit", "Use R if it will hit X enemies", 2, 1, 5)); R1vs1 = RMenu.Add(new MenuBool("tyler1R1v1", "Always use R in 1v1", true)); WCombo = Menu.Add(new MenuBool("tyler1WCombo", "Use W in Combo", true)); UseItems = Menu.Add(new MenuBool("tyler1Items", "Use Items?", true)); DrawingMenu = Menu.Add(new Menu("tyler1DrawSettings", "Draw Settings:")); DrawAXECatchRadius = DrawingMenu.Add(new MenuBool("tyler1AxeCatchDraw", "Draw Axe Catch Radius", true)); DrawAXELocation = DrawingMenu.Add(new MenuBool("tyler1AxeLocationDraw", "Draw Axe Location", true)); DrawAXELine = DrawingMenu.Add(new MenuBool("tyler1AxeLineDraw", "Draw Line to Axe Position", true)); ColorMenu = DrawingMenu.Add(new MenuColor("tyler1DrawingColor", "Drawing Color", ColorBGRA.FromRgba(Color.Red.ToRgba()))); Menu.Attach(); }
private static void Swap(Obj_AI_Hero target) { var eCanKill = E.CanCast(target) && target.Health + target.PhysicalShield <= E.GetDamage(target); if (MainMenu["Combo"]["SwapIfKill"]) { if (IsKillByMark(target) || eCanKill) { SwapCountEnemy(); } } if (Player.HealthPercent < MainMenu["Combo"]["SwapIfHpU"]) { if (IsKillByMark(target) || !eCanKill || Player.HealthPercent < target.HealthPercent) { SwapCountEnemy(); } } else if (MainMenu["Combo"]["SwapGap"].GetValue<MenuList>().Index > 0 && !E.IsInRange(target) && !IsKillByMark(target)) { var playerDist = target.DistanceToPlayer(); var wDist = WState == 1 && wShadow.IsValid() ? wShadow.Distance(target) : float.MaxValue; var rDist = RState == 1 && rShadow.IsValid() ? rShadow.Distance(target) : float.MaxValue; var minDist = Math.Min(Math.Min(wDist, rDist), playerDist); if (minDist < playerDist) { switch (MainMenu["Combo"]["SwapGap"].GetValue<MenuList>().Index) { case 1: if (Math.Abs(minDist - wDist) < float.Epsilon) { var comboW = GetCombo( target, Q.IsReady() && minDist < Q.Range, false, E.IsReady() && minDist < E.Range, MainMenu["Combo"]["R"] && MainMenu["Combo"]["RCast" + target.ChampionName] && RState == 0 && minDist < R.Range); if (minDist > target.GetRealAutoAttackRange()) { comboW[0] -= Player.GetAutoAttackDamage(target); } if (target.Health + target.PhysicalShield <= comboW[0] && Player.Mana >= comboW[1] && W.Cast()) { return; } if (MainMenu["Combo"]["R"] && MainMenu["Combo"]["RCast" + target.ChampionName] && RState == 0 && !R.IsInRange(target) && minDist < R.Range && (MainMenu["Combo"]["RMode"].GetValue<MenuList>().Index == 0 || CanR) && W.Cast()) { return; } } else if (Math.Abs(minDist - rDist) < float.Epsilon) { var comboR = GetCombo( target, Q.IsReady() && minDist < Q.Range, false, E.IsReady() && minDist < E.Range, false); if (minDist > target.GetRealAutoAttackRange()) { comboR[0] -= Player.GetAutoAttackDamage(target); } if (target.Health + target.PhysicalShield <= comboR[0] && Player.Mana >= comboR[1] && R.Cast()) { return; } } if (minDist < E.Range && target.HealthPercent <= 20 && target.HealthPercent < Player.HealthPercent && (Q.IsReady() || E.IsReady())) { if (Math.Abs(minDist - wDist) < float.Epsilon) { W.Cast(); } else if (Math.Abs(minDist - rDist) < float.Epsilon) { R.Cast(); } } break; case 2: if (minDist <= 500) { if (Math.Abs(minDist - wDist) < float.Epsilon) { W.Cast(); } else if (Math.Abs(minDist - rDist) < float.Epsilon) { R.Cast(); } } break; } } } }
private static void Swap(Obj_AI_Hero target) { var eCanKill = E.CanCast(target) && E.CanHitCircle(target) && target.Health + target.PhysicalShield <= E.GetDamage(target); var markCanKill = IsKillByMark(target); if (MainMenu["Combo"]["SwapIfKill"] && (markCanKill || eCanKill)) { SwapCountEnemy(); return; } if (Player.HealthPercent < MainMenu["Combo"]["SwapIfHpU"]) { if (markCanKill || !eCanKill || Player.HealthPercent < target.HealthPercent) { SwapCountEnemy(); } } else if (MainMenu["Combo"]["SwapGap"].GetValue <MenuList>().Index > 0 && !E.IsInRange(target) && !markCanKill) { var wDist = WState == 1 && wShadow.IsValid() ? wShadow.Distance(target) : float.MaxValue; var rDist = RState == 1 && rShadow.IsValid() ? rShadow.Distance(target) : float.MaxValue; var minDist = Math.Min(wDist, rDist); if (minDist.Equals(float.MaxValue) || target.DistanceToPlayer() <= minDist) { return; } var swapByW = Math.Abs(minDist - wDist) < float.Epsilon; var swapByR = Math.Abs(minDist - rDist) < float.Epsilon; if (swapByW && minDist < R.Range && !R.IsInRange(target) && MainMenu["Combo"]["R"].GetValue <MenuKeyBind>().Active && MainMenu["Combo"]["RCast" + target.ChampionName] && RState == 0 && CanR && W.Cast()) { return; } switch (MainMenu["Combo"]["SwapGap"].GetValue <MenuList>().Index) { case 1: if (IsInRangeE(target) && target.HealthPercent < 15 && Player.HealthPercent > 30 && (Q.IsReady() || E.IsReady())) { if (swapByW) { W.Cast(); } else if (swapByR) { R.Cast(); } return; } var combo = GetCombo( target, Q.IsReady() && minDist < Q.Range, false, E.IsReady() && minDist < E.Range); if (minDist > target.GetRealAutoAttackRange()) { combo[0] -= Player.GetAutoAttackDamage(target); } if (minDist > target.GetRealAutoAttackRange() + 100) { combo[0] -= Player.GetAutoAttackDamage(target); } if (target.Health + target.PhysicalShield > combo[0] || Player.Mana < combo[1]) { return; } if (swapByW) { W.Cast(); } else if (swapByR) { R.Cast(); } break; case 2: if (minDist > 500) { return; } if (swapByW) { W.Cast(); } else if (swapByR) { R.Cast(); } break; } } }
/// <summary> /// Determines whether [is valid target] [the specified hero]. /// </summary> /// <param name="hero"> /// The hero. /// </param> /// <param name="range"> /// The range. /// </param> /// <param name="damageType"> /// Type of the damage. /// </param> /// <param name="ignoreShields"> /// Indicates whether to ignore shields. /// </param> /// <param name="from">The from location.</param> /// <returns> /// The <see cref="bool" />. /// </returns> private static bool IsValidTarget( Obj_AI_Hero hero, float range, DamageType damageType, bool ignoreShields = true, Vector3 from = default(Vector3)) { return hero.IsValidTarget() && hero.DistanceSquared(@from.Equals(default(Vector3)) ? GameObjects.Player.ServerPosition : @from) < Math.Pow(range <= 0 ? hero.GetRealAutoAttackRange() : range, 2) && !Invulnerable.Check(hero, damageType, ignoreShields); }