Пример #1
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Automatic(EventArgs args)
        {
            /// <summary>
            ///     The Soulbound declaration.
            /// </summary>
            if (Vars.SoulBound == null)
            {
                Vars.SoulBound = GameObjects.AllyHeroes.Find(t => t.HasBuff("kalistacoopstrikeally"));
            }
            else
            {
                /// <summary>
                ///     The Automatic R Logic.
                /// </summary>
                if (Vars.R.IsReady() &&
                    Vars.SoulBound.CountEnemyHeroesInRange(800f) > 0 &&
                    Vars.SoulBound.LSIsValidTarget(Vars.R.Range, false) &&
                    Health.GetPrediction(Vars.SoulBound, (int)(1000 + Game.Ping / 2f)) <= 0 &&
                    Vars.getCheckBoxItem(Vars.RMenu, "lifesaver"))
                {
                    Vars.R.Cast();
                }
            }

            /// <summary>
            ///     The Automatic W Logic.
            /// </summary>
            if (Vars.W.IsReady() &&
                !GameObjects.Player.LSIsRecalling() &&
                !GameObjects.Player.IsUnderEnemyTurret() &&
                Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.None) &&
                GameObjects.Player.CountEnemyHeroesInRange(1500f) == 0 &&
                GameObjects.Player.ManaPercent >
                ManaManager.GetNeededMana(Vars.W.Slot, Vars.getSliderItem(Vars.WMenu, "logical")) &&
                Vars.getSliderItem(Vars.WMenu, "logical") != 101)
            {
                foreach (var loc in Vars.Locations.Where(
                             l =>
                             GameObjects.Player.Distance(l) < Vars.W.Range &&
                             !ObjectManager.Get <Obj_AI_Minion>().Any(
                                 m =>
                                 m.Distance(l) < 1000f &&
                                 m.CharData.BaseSkinName.Equals("kalistaspawn"))))
                {
                    Vars.W.Cast(loc);
                }
            }

            /// <summary>
            ///     The Automatic E Logics.
            /// </summary>
            if (Vars.E.IsReady())
            {
                /// <summary>
                ///     The E Before death Logic.
                /// </summary>
                if (Health.GetPrediction(GameObjects.Player, (int)(1000 + Game.Ping / 2f)) <= 0 &&
                    Vars.getCheckBoxItem(Vars.EMenu, "ondeath"))
                {
                    Vars.E.Cast();
                }

                /// <summary>
                ///     The E Minion Harass Logic.
                /// </summary>
                if (GameObjects.EnemyHeroes.Any(t => Bools.IsPerfectRendTarget(t)) &&
                    Vars.getSliderItem(Vars.EMenu, "harass") != 101 &&
                    Targets.Minions.Any(
                        m =>
                        Bools.IsPerfectRendTarget(m) &&
                        Vars.GetRealHealth(m) < EDamage(m)))
                {
                    /// <summary>
                    ///     Check for Mana Manager if not in combo mode and the killable minion is only one, else do not use it.
                    /// </summary>
                    if (!Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo) &&
                        Targets.Minions.Count(
                            m =>
                            Bools.IsPerfectRendTarget(m) &&
                            Vars.GetRealHealth(m) <
                            EDamage(m)) == 1)
                    {
                        if (GameObjects.Player.ManaPercent <
                            ManaManager.GetNeededMana(Vars.E.Slot, Vars.getSliderItem(Vars.EMenu, "harass")))
                        {
                            return;
                        }
                    }

                    /// <summary>
                    ///     Check for E Whitelist if the harassable target is only one and there is only one killable minion, else do not use the whitelist.
                    /// </summary>
                    if (GameObjects.EnemyHeroes.Count(t => Bools.IsPerfectRendTarget(t)) == 1 && Targets.Minions.Count(m => Bools.IsPerfectRendTarget(m) && Vars.GetRealHealth(m) < EDamage(m)) == 1)
                    {
                        if (!Vars.getCheckBoxItem(Vars.WhiteListMenu, GameObjects.EnemyHeroes.FirstOrDefault(t => Bools.IsPerfectRendTarget(t)).ChampionName.ToLower()))
                        {
                            return;
                        }
                    }

                    /// <summary>
                    ///     Check for invulnerability through all the harassable targets.
                    /// </summary>
                    foreach (var target in GameObjects.EnemyHeroes.Where(t => Bools.IsPerfectRendTarget(t)))
                    {
                        if (Invulnerable.Check(target, DamageType.True, false))
                        {
                            return;
                        }
                    }

                    Vars.E.Cast();
                }

                /// <summary>
                ///     The E JungleClear Logic.
                /// </summary>
                if (Vars.getCheckBoxItem(Vars.EMenu, "junglesteal"))
                {
                    foreach (var minion in Targets.JungleMinions.Where(
                                 m =>
                                 Bools.IsPerfectRendTarget(m) &&
                                 m.Health < EDamage(m)))
                    {
                        Vars.E.Cast();
                    }
                }
            }
        }
Пример #2
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Automatic(EventArgs args)
        {
            if (GameObjects.Player.LSIsRecalling())
            {
                return;
            }

            /// <summary>
            ///     The Semi-Automatic R Management.
            /// </summary>
            if (Vars.R.IsReady() &&
                Vars.getCheckBoxItem(Vars.RMenu, "bool"))
            {
                if (!GameObjects.Player.HasBuff("AbsoluteZero") &&
                    GameObjects.Player.CountEnemyHeroesInRange(Vars.R.Range) > 0 &&
                    Vars.getKeyBindItem(Vars.RMenu, "key"))
                {
                    Vars.R.Cast();
                }

                if (GameObjects.Player.HasBuff("AbsoluteZero") &&
                    !Vars.getKeyBindItem(Vars.RMenu, "key"))
                {
                    Orbwalker.MoveTo(Game.CursorPos);
                    Vars.R.Cast();
                }
            }

            /// <summary>
            ///     The JungleClear Q Logic.
            /// </summary>
            if (Vars.Q.IsReady() &&
                Vars.getCheckBoxItem(Vars.QMenu, "jungleclear"))
            {
                if (Targets.JungleMinions.Any())
                {
                    foreach (var minion in Targets.JungleMinions.Where(
                                 m =>
                                 m.LSIsValidTarget(Vars.Q.Range) &&
                                 Vars.GetRealHealth(m) <
                                 (float)GameObjects.Player.LSGetSpellDamage(m, SpellSlot.Q)))
                    {
                        Vars.Q.CastOnUnit(minion);
                    }
                }
            }

            /// <summary>
            ///     The Automatic Q Logic.
            /// </summary>
            if (Vars.Q.IsReady() &&
                Targets.Minions.Any() &&
                Vars.getCheckBoxItem(Vars.QMenu, "logical"))
            {
                if (GameObjects.Player.MaxHealth >
                    GameObjects.Player.Health +
                    (30 + 45 * GameObjects.Player.Spellbook.GetSpell(SpellSlot.Q).Level) +
                    GameObjects.Player.TotalMagicalDamage * 0.75)
                {
                    foreach (var minion in Targets.Minions.Where(m => m.LSIsValidTarget(Vars.Q.Range)))
                    {
                        Vars.Q.CastOnUnit(minion);
                    }
                }
            }

            /// <summary>
            ///     The Automatic W Logic.
            /// </summary>
            if (Vars.W.IsReady() &&
                Vars.getSliderItem(Vars.WMenu, "logical") != 101)
            {
                if (GameObjects.Player.ManaPercent <
                    ManaManager.GetNeededMana(Vars.W.Slot, Vars.getSliderItem(Vars.WMenu, "logical")) &&
                    !GameObjects.Player.Buffs.Any(b => b.Name.Equals("visionary")))
                {
                    return;
                }

                if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo))
                {
                    /// <summary>
                    ///     The Ally W Combo Logic.
                    /// </summary>
                    if (GameObjects.AllyHeroes.Any(a => !a.IsMe && a.LSIsValidTarget(Vars.W.Range, false) && Vars.getCheckBoxItem(Vars.WhiteListMenu, a.ChampionName.ToLower())))
                    {
                        Vars.W.CastOnUnit(GameObjects.AllyHeroes.Where(a => !a.IsMe && a.LSIsValidTarget(Vars.W.Range, false) && Vars.getCheckBoxItem(Vars.WhiteListMenu, a.ChampionName.ToLower())).OrderBy(o => o.TotalAttackDamage).First());
                    }

                    /// <summary>
                    ///     The Normal W Combo Logic.
                    /// </summary>
                    else
                    {
                        if (Targets.Target.LSIsValidTarget())
                        {
                            Vars.W.CastOnUnit(GameObjects.Player);
                        }
                    }
                }

                if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear))
                {
                    /// <summary>
                    ///     Use if There are Enemy Minions in range.
                    /// </summary>
                    if (Targets.Minions.Any() ||
                        Targets.JungleMinions.Any())
                    {
                        Vars.W.CastOnUnit(GameObjects.Player);
                    }
                }

                /// <summary>
                ///     The W Pushing Logic.
                /// </summary>
                if (Targets.Minions.Any() &&
                    GameObjects.AllyMinions.Any())
                {
                    /// <summary>
                    ///     Use if there are Super or Siege minions in W Range.
                    /// </summary>
                    foreach (var minion in GameObjects.AllyMinions.Where(m => m.LSIsValidTarget(Vars.W.Range, false)))
                    {
                        if (minion.GetMinionType() == MinionTypes.Super ||
                            minion.GetMinionType() == MinionTypes.Siege)
                        {
                            Vars.W.CastOnUnit(minion);
                        }
                    }
                }
            }
        }
Пример #3
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Combo(EventArgs args)
        {
            if (Bools.HasSheenBuff() && Targets.Target.IsValidTarget(Vars.AaRange))
            {
                return;
            }

            /// <summary>
            ///     The W Combo Logic.
            /// </summary>
            if (Vars.W.IsReady() && GameObjects.EnemyHeroes.Any(t => t.IsValidTarget(Vars.W.Range)) &&
                Vars.Menu["spells"]["w"]["combo"].GetValue <MenuBool>().Value)
            {
                Vars.W.Cast();
            }
            if (!Targets.Target.IsValidTarget() || Targets.Target.IsValidTarget(Vars.AaRange) ||
                Invulnerable.Check(Targets.Target, DamageType.Magical, false))
            {
                return;
            }

            /// <summary>
            ///     The Q Combo Logic.
            /// </summary>
            if (Vars.Q.IsReady() && Targets.Target.IsValidTarget(Vars.Q.Range))
            {
                Vars.Q.Cast(Vars.Q.GetPrediction(Targets.Target).CastPosition);
            }

            /// <summary>
            ///     The R Logics.
            /// </summary>
            if (Vars.R.IsReady())
            {
                /// <summary>
                ///     The R Combo Logics.
                /// </summary>
                if (Targets.Target.IsValidTarget(Vars.R.Range) &&
                    Vars.Menu["spells"]["r"]["combo"].GetValue <MenuBool>().Value)
                {
                    /// <summary>
                    ///     The R Normal Combo Logic.
                    /// </summary>
                    if (Targets.Target.HasBuff("dianamoonlight") &&
                        Vars.Menu["spells"]["r"]["whitelist"][Targets.Target.ChampionName.ToLower()]
                        .GetValue <MenuBool>().Value)
                    {
                        if (!Targets.Target.IsUnderEnemyTurret() ||
                            Vars.GetRealHealth(Targets.Target)
                            < (float)GameObjects.Player.GetSpellDamage(Targets.Target, SpellSlot.Q) * 2
                            + (float)GameObjects.Player.GetSpellDamage(Targets.Target, SpellSlot.R) * 2 ||
                            !Vars.Menu["miscellaneous"]["safe"].GetValue <MenuBool>().Value)
                        {
                            Vars.R.CastOnUnit(Targets.Target);
                            return;
                        }
                    }

                    /// <summary>
                    ///     The Second R Combo Logic.
                    /// </summary>
                    if (!Vars.Q.IsReady() && !Targets.Target.HasBuff("dianamoonlight") &&
                        Vars.Menu["miscellaneous"]["rcombo"].GetValue <MenuBool>().Value &&
                        Vars.Menu["spells"]["r"]["whitelist"][Targets.Target.ChampionName.ToLower()]
                        .GetValue <MenuBool>().Value)
                    {
                        DelayAction.Add(
                            1000,
                            () =>
                        {
                            if (!Vars.Q.IsReady() && !Targets.Target.HasBuff("dianamoonlight"))
                            {
                                Vars.R.CastOnUnit(Targets.Target);
                            }
                        });
                    }
                }

                /// <summary>
                ///     The R Gapclose Logic.
                /// </summary>
                else if (Targets.Target.IsValidTarget(Vars.Q.Range * 2) &&
                         !Targets.Target.IsValidTarget(Vars.Q.Range + 200) &&
                         Vars.Menu["miscellaneous"]["gapclose"].GetValue <MenuBool>().Value)
                {
                    if (
                        Targets.Minions.Any(
                            m =>
                            m.IsValidTarget(Vars.Q.Range) && m.Distance(Targets.Target) < Vars.Q.Range &&
                            Vars.GetRealHealth(m) > (float)GameObjects.Player.GetSpellDamage(m, SpellSlot.Q)))
                    {
                        Vars.Q.Cast(
                            Targets.Minions.Where(
                                m =>
                                m.IsValidTarget(Vars.Q.Range) && m.Distance(Targets.Target) < Vars.Q.Range &&
                                Vars.GetRealHealth(m) > (float)GameObjects.Player.GetSpellDamage(m, SpellSlot.Q))
                            .OrderBy(o => o.DistanceToPlayer())
                            .Last());
                    }
                    if (
                        Targets.Minions.Any(
                            m =>
                            m.HasBuff("dianamoonlight") && m.IsValidTarget(Vars.R.Range) &&
                            m.Distance(Targets.Target) < Vars.Q.Range))
                    {
                        Vars.R.CastOnUnit(
                            Targets.Minions.Where(
                                m =>
                                m.HasBuff("dianamoonlight") && m.IsValidTarget(Vars.R.Range) &&
                                m.Distance(Targets.Target) < Vars.Q.Range)
                            .OrderBy(o => o.DistanceToPlayer())
                            .Last());
                    }
                }
            }

            if (Vars.Q.IsReady() && Vars.R.IsReady())
            {
                return;
            }

            /// <summary>
            ///     The Automatic E Logic.
            /// </summary>
            if (Vars.E.IsReady() && !Targets.Target.IsValidTarget(Vars.AaRange) &&
                Targets.Target.IsValidTarget(Vars.E.Range - 25) &&
                Vars.Menu["spells"]["e"]["logical"].GetValue <MenuBool>().Value)
            {
                Vars.E.Cast();
            }
        }
Пример #4
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Killsteal(EventArgs args)
        {
            /// <summary>
            ///     The KillSteal E Logic.
            /// </summary>
            if (Vars.E.IsReady() &&
                GameObjects.Player.Spellbook.GetSpell(SpellSlot.E).ToggleState == 1 &&
                Vars.getCheckBoxItem(Vars.EMenu, "killsteal"))
            {
                foreach (var target in GameObjects.EnemyHeroes.Where(
                             t =>
                             t.LSIsValidTarget(Vars.E.Range) &&
                             !Invulnerable.Check(t, DamageType.Magical) &&
                             Vars.GetRealHealth(t) <
                             (float)GameObjects.Player.LSGetSpellDamage(t, SpellSlot.E)))
                {
                    Vars.E.Cast(Vars.E.GetPrediction(target).CastPosition);
                    return;
                }
            }

            /// <summary>
            ///     The KillSteal Q Logic.
            /// </summary>
            if (Vars.Q.IsReady() &&
                Vars.getCheckBoxItem(Vars.QMenu, "killsteal"))
            {
                foreach (var target in GameObjects.EnemyHeroes.Where(
                             t =>
                             t.LSIsValidTarget(Vars.Q.Range) &&
                             !Invulnerable.Check(t, DamageType.Magical) &&
                             Vars.GetRealHealth(t) <
                             (float)GameObjects.Player.LSGetSpellDamage(t, SpellSlot.Q)))
                {
                    if (!Vars.Q.GetPrediction(target).CollisionObjects.Any())
                    {
                        Vars.Q.Cast(Vars.Q.GetPrediction(target).UnitPosition);
                        return;
                    }
                }
            }

            /// <summary>
            ///     The KillSteal R Logic.
            /// </summary>
            if (Vars.R.IsReady() &&
                Vars.getCheckBoxItem(Vars.RMenu, "killsteal"))
            {
                foreach (var target in GameObjects.EnemyHeroes.Where(
                             t =>
                             t.LSIsValidTarget(Vars.R.Range) &&
                             !Invulnerable.Check(t, DamageType.Magical) &&
                             Vars.GetRealHealth(t) <
                             (float)GameObjects.Player.LSGetSpellDamage(t, SpellSlot.R)))
                {
                    if (Bools.IsImmobile(target) ||
                        !target.LSIsValidTarget(Vars.AARange))
                    {
                        Vars.R.Cast(Vars.R.GetPrediction(target).UnitPosition);
                    }
                }
            }
        }
Пример #5
0
 /// <summary>
 ///     Called when the game updates itself.
 /// </summary>
 /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
 public static void Killsteal(EventArgs args)
 {
     /// <summary>
     ///     The KillSteal E Logic.
     /// </summary>
     if (Vars.E.IsReady() &&
         Vars.getCheckBoxItem(Vars.EMenu, "killsteal"))
     {
         if (GameObjects.EnemyHeroes.Any(t => !Invulnerable.Check(t) && t.LSIsValidTarget(Vars.E.Range) && Vars.GetRealHealth(t) < EDamage(t)))
         {
             Vars.E.Cast();
         }
     }
 }
Пример #6
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Harass(EventArgs args)
        {
            /// <summary>
            ///     The E Harass Logic.
            /// </summary>
            if (Vars.E.IsReady() && Vars.Menu["spells"]["e"]["harass"].GetValue <MenuSliderButton>().BValue &&
                GameObjects.Player.ManaPercent
                > ManaManager.GetNeededMana(Vars.E.Slot, Vars.Menu["spells"]["e"]["harass"]))
            {
                if (
                    GameObjects.EnemyHeroes.Any(
                        t =>
                        t.IsValidTarget(Vars.E.Range) &&
                        (t.HasBuffOfType(BuffType.Poison) ||
                         !Vars.Menu["spells"]["e"]["harasspoison"].GetValue <MenuBool>().Value) &&
                        !Invulnerable.Check(t, DamageType.Magical)))
                {
                    foreach (var target in
                             GameObjects.EnemyHeroes.Where(
                                 t =>
                                 t.IsValidTarget(Vars.E.Range) &&
                                 (t.HasBuffOfType(BuffType.Poison) ||
                                  !Vars.Menu["spells"]["e"]["harasspoison"].GetValue <MenuBool>().Value) &&
                                 !Invulnerable.Check(t, DamageType.Magical)))
                    {
                        DelayAction.Add(
                            Vars.Menu["spells"]["e"]["delay"].GetValue <MenuSlider>().Value,
                            () => { Vars.E.CastOnUnit(target); });
                    }
                }
                else
                {
                    DelayAction.Add(
                        Vars.Menu["spells"]["e"]["delay"].GetValue <MenuSlider>().Value,
                        () =>
                    {
                        foreach (var minion in
                                 Targets.Minions.Where(
                                     m =>
                                     Vars.GetRealHealth(m)
                                     < (float)GameObjects.Player.GetSpellDamage(m, SpellSlot.E)
                                     + (m.HasBuffOfType(BuffType.Poison)
                                               ? (float)
                                        GameObjects.Player.GetSpellDamage(
                                            m,
                                            SpellSlot.E,
                                            DamageStage.Empowered)
                                               : 0)))
                        {
                            Vars.E.CastOnUnit(minion);
                        }
                    });
                }
            }

            if (!Targets.Target.IsValidTarget() || Invulnerable.Check(Targets.Target, DamageType.Magical, false))
            {
                return;
            }

            /// <summary>
            ///     The Q Harass Logic.
            /// </summary>
            if (Vars.Q.IsReady() && Targets.Target.IsValidTarget(Vars.Q.Range) &&
                GameObjects.Player.ManaPercent
                > ManaManager.GetNeededMana(Vars.Q.Slot, Vars.Menu["spells"]["q"]["harass"]) &&
                Vars.Menu["spells"]["q"]["harass"].GetValue <MenuSliderButton>().BValue)
            {
                Vars.Q.Cast(Vars.Q.GetPrediction(Targets.Target).CastPosition);
                return;
            }

            /// <summary>
            ///     The W Harass Logic.
            /// </summary>
            DelayAction.Add(
                1000,
                () =>
            {
                if (Vars.W.IsReady() && Targets.Target.IsValidTarget(Vars.W.Range) &&
                    !Targets.Target.IsValidTarget(500f) &&
                    GameObjects.Player.ManaPercent
                    > ManaManager.GetNeededMana(Vars.W.Slot, Vars.Menu["spells"]["w"]["harass"]) &&
                    Vars.Menu["spells"]["w"]["harass"].GetValue <MenuSliderButton>().BValue)
                {
                    Vars.W.Cast(Vars.W.GetPrediction(Targets.Target).CastPosition);
                }
            });
        }
Пример #7
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Automatic(EventArgs args)
        {
            if (GameObjects.Player.LSIsRecalling())
            {
                return;
            }

            /// <summary>
            ///     The R Automatic Logic.
            /// </summary>
            if (Vars.R.IsReady() &&
                Vars.R.Instance.Name.Equals("JhinRShot") &&
                Vars.getCheckBoxItem(Vars.RMenu, "logical"))
            {
                if (GameObjects.EnemyHeroes.Any(
                        t =>
                        t.IsValidTarget(Vars.R.Range) &&
                        !Vars.Cone.IsOutside((Vector2)t.ServerPosition)))
                {
                    foreach (var target in GameObjects.EnemyHeroes.Where(
                                 t =>
                                 t.IsValidTarget(Vars.R.Range) &&
                                 !Vars.Cone.IsOutside((Vector2)t.ServerPosition)))
                    {
                        if (Vars.getCheckBoxItem(Vars.RMenu, "nearmouse"))
                        {
                            Vars.R.Cast(Vars.R.GetPrediction(GameObjects.EnemyHeroes.Where(
                                                                 t =>
                                                                 t.IsValidTarget(Vars.R.Range) &&
                                                                 !Vars.Cone.IsOutside((Vector2)t.ServerPosition)).OrderBy(
                                                                 o =>
                                                                 o.Distance(Game.CursorPos)).First()).UnitPosition);
                            return;
                        }

                        Vars.R.Cast(Vars.R.GetPrediction(target).UnitPosition);
                        return;
                    }
                }

                if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo))
                {
                    Vars.R.Cast(Game.CursorPos);
                }
            }

            if (Vars.R.Instance.Name.Equals("JhinRShot"))
            {
                return;
            }

            /// <summary>
            ///     The Automatic Q LastHit Logic.
            /// </summary>
            if (Vars.Q.IsReady() &&
                GameObjects.Player.HasBuff("JhinPassiveReload") &&
                !Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo) &&
                GameObjects.Player.ManaPercent >
                ManaManager.GetNeededMana(Vars.Q.Slot, Vars.getSliderItem(Vars.QMenu, "lasthit")) &&
                Vars.getSliderItem(Vars.QMenu, "lasthit") != 101 && !Vars.R.Instance.Name.Equals("JhinRShot"))
            {
                foreach (var minion in Targets.Minions.Where(
                             m =>
                             m.LSIsValidTarget(Vars.Q.Range) &&
                             Vars.GetRealHealth(m) <
                             (float)GameObjects.Player.LSGetSpellDamage(m, SpellSlot.Q)))
                {
                    Vars.Q.CastOnUnit(minion);
                }
            }

            /// <summary>
            ///     The Automatic W Logic.
            /// </summary>
            if (Vars.W.IsReady() &&
                !GameObjects.Player.IsUnderEnemyTurret() &&
                Vars.getCheckBoxItem(Vars.WMenu, "logical") && !Vars.R.Instance.Name.Equals("JhinRShot"))
            {
                foreach (var target in GameObjects.EnemyHeroes.Where(
                             t =>
                             !Invulnerable.Check(t) &&
                             t.HasBuff("jhinespotteddebuff") &&
                             t.IsValidTarget(Vars.W.Range - 150f) &&
                             !t.IsValidTarget(Vars.AARange + 50f) &&
                             Vars.getCheckBoxItem(Vars.WhiteListMenu, t.ChampionName.ToLower())))
                {
                    if (!Vars.W.GetPrediction(target).CollisionObjects.Any(c => !c.HasBuff("jhinespotteddebuff")))
                    {
                        if (Bools.IsImmobile(target))
                        {
                            if (Vars.E.IsReady() &&
                                target.LSIsValidTarget(Vars.E.Range))
                            {
                                Vars.E.Cast(target.ServerPosition);
                            }
                            Vars.W.Cast(target.ServerPosition);
                            return;
                        }
                        if (Vars.E.IsReady() &&
                            target.LSIsValidTarget(Vars.E.Range))
                        {
                            Vars.E.Cast(Vars.E.GetPrediction(target).UnitPosition);
                        }
                        Vars.W.Cast(Vars.W.GetPrediction(target).UnitPosition);
                    }
                }
            }

            /// <summary>
            ///     The Automatic E Logic.
            /// </summary>
            if (Vars.E.IsReady() &&
                Vars.getCheckBoxItem(Vars.EMenu, "logical") && !Vars.R.Instance.Name.Equals("JhinRShot"))
            {
                foreach (var target in GameObjects.EnemyHeroes.Where(
                             t =>
                             Bools.IsImmobile(t) &&
                             !Invulnerable.Check(t) &&
                             t.LSIsValidTarget(Vars.E.Range)))
                {
                    Vars.E.Cast(GameObjects.Player.ServerPosition.LSExtend(
                                    target.ServerPosition,
                                    GameObjects.Player.Distance(target) + target.BoundingRadius * 2));
                }
            }
        }
Пример #8
0
        /// <summary>
        ///     Fired when the game is updated.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Clear(EventArgs args)
        {
            if (Bools.HasSheenBuff())
            {
                return;
            }

            /// <summary>
            ///     The LaneClear Q Logic.
            /// </summary>
            if (Vars.Q.IsReady() &&
                GameObjects.Player.ManaPercent
                > ManaManager.GetNeededMana(Vars.Q.Slot, Vars.Menu["spells"]["q"]["laneclear"]) &&
                Vars.Menu["spells"]["q"]["laneclear"].GetValue <MenuSliderButton>().BValue)
            {
                foreach (var minion in Targets.Minions.Where(m => m.IsValidTarget(Vars.Q.Range)))
                {
                    if (minion.HasBuff("RyzeE") &&
                        Vars.GetRealHealth(minion) > (float)GameObjects.Player.GetSpellDamage(minion, SpellSlot.E) &&
                        Vars.GetRealHealth(minion)
                        < (float)GameObjects.Player.GetSpellDamage(minion, SpellSlot.Q)
                        * (1
                           + (minion.HasBuff("RyzeE")
                                  ? new double[] { 40, 55, 70, 85, 100 }[
                                  GameObjects.Player.Spellbook.GetSpell(SpellSlot.E).Level - 1] / 100
                                  : 0)))
                    {
                        Vars.Q.Cast(minion);
                    }
                }
            }

            /// <summary>
            ///     The LaneClear E Logic.
            /// </summary>
            if (Vars.E.IsReady() &&
                GameObjects.Player.ManaPercent
                > ManaManager.GetNeededMana(Vars.E.Slot, Vars.Menu["spells"]["e"]["laneclear"]) &&
                Vars.Menu["spells"]["e"]["laneclear"].GetValue <MenuSliderButton>().BValue)
            {
                foreach (var minion in Targets.Minions.Where(m => m.IsValidTarget(Vars.E.Range)))
                {
                    if (minion.HasBuff("RyzeE") ||
                        Vars.GetRealHealth(minion) < (float)GameObjects.Player.GetSpellDamage(minion, SpellSlot.E) &&
                        Vars.GetRealHealth(minion) > (float)GameObjects.Player.GetAutoAttackDamage(minion))
                    {
                        Vars.E.CastOnUnit(minion);
                        return;
                    }

                    Vars.E.CastOnUnit(Targets.Minions.First(m => m.IsValidTarget(Vars.E.Range)));
                }
            }

            foreach (var minion in Targets.JungleMinions)
            {
                /// <summary>
                ///     The JungleClear E Logic.
                /// </summary>
                if (Targets.JungleMinions.Any(m => !m.HasBuff("RyzeE")))
                {
                    if (Vars.E.IsReady() && minion.IsValidTarget(Vars.E.Range) &&
                        !GameObjects.JungleSmall.Contains(minion) &&
                        GameObjects.Player.ManaPercent
                        > ManaManager.GetNeededMana(Vars.E.Slot, Vars.Menu["spells"]["e"]["jungleclear"]) &&
                        Vars.Menu["spells"]["e"]["jungleclear"].GetValue <MenuSliderButton>().BValue)
                    {
                        Vars.E.CastOnUnit(minion);
                    }
                }
                else
                {
                    /// <summary>
                    ///     The JungleClear Q Logic.
                    /// </summary>
                    if (Vars.Q.IsReady() && minion.IsValidTarget(Vars.Q.Range) &&
                        Vars.GetRealHealth(minion) > (float)GameObjects.Player.GetSpellDamage(minion, SpellSlot.E) &&
                        GameObjects.Player.ManaPercent
                        > ManaManager.GetNeededMana(Vars.Q.Slot, Vars.Menu["spells"]["q"]["jungleclear"]) &&
                        Vars.Menu["spells"]["q"]["jungleclear"].GetValue <MenuSliderButton>().BValue)
                    {
                        Vars.Q.Cast(minion.ServerPosition);
                    }
                }
            }
        }
Пример #9
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Combo(EventArgs args)
        {
            if (Bools.HasSheenBuff() && Targets.Target.IsValidTarget(Vars.AaRange) || !Targets.Target.IsValidTarget() ||
                Invulnerable.Check(Targets.Target, DamageType.Magical, false))
            {
                return;
            }

            /// <summary>
            ///     The W->E Combo Logic.
            /// </summary>
            if (Vars.W.IsReady() && Targets.Target.IsValidTarget(Vars.W.Range) &&
                Vars.Menu["spells"]["w"]["combo"].GetValue <MenuBool>().Value &&
                (Vars.E.IsReady() || !Vars.Menu["spells"]["w"]["combofull"].GetValue <MenuBool>().Value))
            {
                switch (
                    Vars.Menu["spells"]["w"]["selection"][Targets.Target.ChampionName.ToLower()].GetValue <MenuList>()
                    .Index)
                {
                case 0:
                    Vars.W.Cast(
                        Vars.W.GetPrediction(Targets.Target).CastPosition,
                        GameObjects.Player.ServerPosition);
                    break;

                case 1:
                    Vars.W.Cast(
                        Vars.W.GetPrediction(Targets.Target).CastPosition,
                        GameObjects.Player.ServerPosition.Extend(
                            Targets.Target.ServerPosition,
                            GameObjects.Player.Distance(Targets.Target) * 2));
                    break;

                default:
                    Vars.W.Cast(
                        Vars.W.GetPrediction(Targets.Target).CastPosition,
                        Vars.GetRealHealth(Targets.Target)
                        < (float)GameObjects.Player.GetSpellDamage(Targets.Target, SpellSlot.Q)
                        * (Taliyah.TerrainObject != null ? 1 : 3)
                        + (float)GameObjects.Player.GetSpellDamage(Targets.Target, SpellSlot.W)
                        + (float)GameObjects.Player.GetSpellDamage(Targets.Target, SpellSlot.E)
                                ? GameObjects.Player.ServerPosition
                                : GameObjects.Player.ServerPosition.Extend(
                            Targets.Target.ServerPosition,
                            GameObjects.Player.Distance(Targets.Target) * 2));
                    break;
                }
            }

            if (Vars.W.IsReady() && Vars.Menu["spells"]["w"]["combo"].GetValue <MenuBool>().Value)
            {
                return;
            }

            /// <summary>
            ///     The E Combo Logic.
            /// </summary>
            if (Vars.E.IsReady() && Targets.Target.IsValidTarget(Vars.W.Range) &&
                Vars.Menu["spells"]["e"]["combo"].GetValue <MenuBool>().Value)
            {
                Vars.E.Cast(Targets.Target.ServerPosition);
            }

            /// <summary>
            ///     The Q Combo Logic.
            /// </summary>
            if (Vars.Q.IsReady() && !Vars.E.IsReady() && Targets.Target.IsValidTarget(Vars.Q.Range - 50f) &&
                Vars.Menu["spells"]["q"]["combo"].GetValue <MenuBool>().Value)
            {
                if (Taliyah.TerrainObject != null &&
                    Vars.Menu["spells"]["q"]["combofull"].GetValue <MenuBool>().Value)
                {
                    return;
                }

                Vars.Q.Cast(Vars.Q.GetPrediction(Targets.Target).UnitPosition);
            }
        }
Пример #10
0
        /// <summary>
        ///     Loads the drawings.
        /// </summary>
        public static void Initialize()
        {
            Drawing.OnDraw += delegate
            {
                if (Vars.E.IsReady())
                {
                    if (!Vars.getCheckBoxItem(Vars.DrawingsMenu, "edmg"))
                    {
                        return;
                    }

                    ObjectManager.Get <Obj_AI_Base>().Where(
                        h =>
                        h.LSIsValidTarget() &&
                        Bools.IsPerfectRendTarget(h) &&
                        (h is AIHeroClient ||
                         Vars.JungleList.Contains(h.CharData.BaseSkinName))).ToList().ForEach(unit =>
                    {
                        /// <summary>
                        ///     Defines what HPBar Offsets it should display.
                        /// </summary>
                        var mobOffset = Vars.JungleHpBarOffsetList.FirstOrDefault(x => x.BaseSkinName.Equals(unit.CharData.BaseSkinName));

                        var width   = (int)(Vars.JungleList.Contains(unit.CharData.BaseSkinName) ? mobOffset.Width : Vars.Width);
                        var height  = (int)(Vars.JungleList.Contains(unit.CharData.BaseSkinName) ? mobOffset.Height : Vars.Height);
                        var xOffset = (int)(Vars.JungleList.Contains(unit.CharData.BaseSkinName) ? mobOffset.XOffset : Vars.XOffset);
                        var yOffset = (int)(Vars.JungleList.Contains(unit.CharData.BaseSkinName) ? mobOffset.YOffset : Vars.YOffset);

                        var barPos = unit.HPBarPosition;
                        {
                            barPos.X += xOffset;
                            barPos.Y += yOffset;
                        }

                        var drawEndXPos   = barPos.X + width * (unit.HealthPercent / 100);
                        var drawStartXPos = barPos.X + (Vars.GetRealHealth(unit) >
                                                        (float)GameObjects.Player.LSGetSpellDamage(unit, SpellSlot.E) +
                                                        (float)GameObjects.Player.LSGetSpellDamage(unit, SpellSlot.E, DamageStage.Buff)
                                    ? width * (((Vars.GetRealHealth(unit) -
                                                 ((float)GameObjects.Player.LSGetSpellDamage(unit, SpellSlot.E) +
                                                  (float)GameObjects.Player.LSGetSpellDamage(unit, SpellSlot.E, DamageStage.Buff))) / unit.MaxHealth * 100) / 100)
                                    : 0);

                        Drawing.DrawLine(
                            drawStartXPos,
                            barPos.Y,
                            drawEndXPos,
                            barPos.Y,
                            height,
                            Vars.GetRealHealth(unit) <
                            (float)GameObjects.Player.LSGetSpellDamage(unit, SpellSlot.E) +
                            (float)GameObjects.Player.LSGetSpellDamage(unit, SpellSlot.E, DamageStage.Buff)
                                        ? Color.Blue
                                        : Color.Orange
                            );

                        Drawing.DrawLine(
                            drawStartXPos,
                            barPos.Y,
                            drawStartXPos,
                            barPos.Y + height + 1,
                            1,
                            Color.Lime
                            );
                    }
                                                                                              );
                }
            };
        }
Пример #11
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Killsteal(EventArgs args)
        {
            /// <summary>
            ///     The Q KillSteal Logic.
            /// </summary>
            if (Vars.Q.IsReady())
            {
                /// <summary>
                ///     Normal Q KillSteal Logic.
                /// </summary>
                if (Vars.Menu["spells"]["q"]["killsteal"].GetValue <MenuBool>().Value)
                {
                    foreach (var target in
                             GameObjects.EnemyHeroes.Where(
                                 t =>
                                 !Invulnerable.Check(t) && t.IsValidTarget(Vars.Q.Range) &&
                                 Vars.GetRealHealth(t) < (float)GameObjects.Player.GetSpellDamage(t, SpellSlot.Q)))
                    {
                        Vars.Q.CastOnUnit(target);
                    }
                }

                var passiveMultiplier = GameObjects.Player.Level < 4
                                            ? 0.25
                                            : GameObjects.Player.Level < 7
                                                  ? 0.3
                                                  : GameObjects.Player.Level < 9
                                                        ? 0.35
                                                        : GameObjects.Player.Level < 11
                                                              ? 0.4
                                                              : GameObjects.Player.Level < 13
                                                                    ? 0.45
                                                                    : 0.5;

                /// <summary>
                ///     Extended Q KillSteal Logic.
                /// </summary>
                if (Vars.Menu["spells"]["q"]["extended"]["exkillsteal"].GetValue <MenuBool>().Value)
                {
                    /// <summary>
                    ///     Through enemy minions.
                    /// </summary>
                    foreach (var minion
                             in from minion in Targets.Minions.Where(m => m.IsValidTarget(Vars.Q.Range))
                             let polygon =
                                 new Geometry.Sector(
                                     (Vector2)minion.ServerPosition,
                                     (Vector2)
                                     minion.ServerPosition.Extend(
                                         GameObjects.Player.ServerPosition,
                                         -(Vars.Q2.Range - Vars.Q.Range)),
                                     40f * (float)Math.PI / 180f,
                                     Vars.Q2.Range - Vars.Q.Range - 50f)
                                 let target =
                                     GameObjects.EnemyHeroes.FirstOrDefault(
                                         t =>
                                         !Invulnerable.Check(t) && t.IsValidTarget(Vars.Q2.Range - 50f) &&
                                         Vars.GetRealHealth(t)
                                         < (float)GameObjects.Player.GetSpellDamage(t, SpellSlot.Q, DamageStage.SecondForm)
                                         + GameObjects.Player.TotalAttackDamage * passiveMultiplier
                                         + (Vars.GetRealHealth(minion)
                                            < (float)GameObjects.Player.GetSpellDamage(minion, SpellSlot.Q)
                                            + (MissFortune.PassiveTarget == null ||
                                               minion.NetworkId != MissFortune.PassiveTarget?.NetworkId
                                             ? GameObjects.Player.TotalAttackDamage * passiveMultiplier
                                             : 0)
                                          ? (float)
                                            GameObjects.Player.GetSpellDamage(t, SpellSlot.Q, DamageStage.SecondForm)
                                            / 2
                                          : 0) &&
                                         (t.NetworkId == MissFortune.PassiveTarget?.NetworkId ||
                                          Targets.Minions.All(m => polygon.IsOutside((Vector2)m.ServerPosition))))
                                     where target != null
                                     where
                                     !polygon.IsOutside((Vector2)target.ServerPosition) &&
                                     !polygon.IsOutside(
                                         (Vector2)
                                         Movement.GetPrediction(
                                             target,
                                             GameObjects.Player.Distance(target) / Vars.Q.Speed + Vars.Q.Delay).UnitPosition)
                                     select minion)
                    {
                        Vars.Q.CastOnUnit(minion);
                    }

                    /// <summary>
                    ///     Through enemy heroes.
                    /// </summary>
                    foreach (var target
                             in from target in GameObjects.EnemyHeroes.Where(t => t.IsValidTarget(Vars.Q.Range))
                             let polygon =
                                 new Geometry.Sector(
                                     (Vector2)target.ServerPosition,
                                     (Vector2)
                                     target.ServerPosition.Extend(
                                         GameObjects.Player.ServerPosition,
                                         -(Vars.Q2.Range - Vars.Q.Range)),
                                     40f * (float)Math.PI / 180f,
                                     Vars.Q2.Range - Vars.Q.Range - 50f)
                                 let target2 =
                                     GameObjects.EnemyHeroes.FirstOrDefault(
                                         t =>
                                         !Invulnerable.Check(t) && t.IsValidTarget(Vars.Q2.Range - 50f) &&
                                         Vars.GetRealHealth(t)
                                         < (float)GameObjects.Player.GetSpellDamage(t, SpellSlot.Q, DamageStage.SecondForm)
                                         + GameObjects.Player.TotalAttackDamage * passiveMultiplier &&
                                         (t.NetworkId == MissFortune.PassiveTarget?.NetworkId ||
                                          Targets.Minions.All(m => polygon.IsOutside((Vector2)m.ServerPosition))))
                                     where target2 != null
                                     where
                                     !polygon.IsOutside((Vector2)target2.ServerPosition) &&
                                     !polygon.IsOutside(
                                         (Vector2)
                                         Movement.GetPrediction(
                                             target2,
                                             GameObjects.Player.Distance(target) / Vars.Q.Speed + Vars.Q.Delay).UnitPosition)
                                     select target)
                    {
                        Vars.Q.CastOnUnit(target);
                    }
                }
            }
        }
Пример #12
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Killsteal(EventArgs args)
        {
            /// <summary>
            ///     The KillSteal W Logic.
            /// </summary>
            if (Vars.W.IsReady() && Vars.Menu["spells"]["w"]["killsteal"].GetValue <MenuBool>().Value)
            {
                foreach (var target in
                         GameObjects.EnemyHeroes.Where(
                             t =>
                             !Invulnerable.Check(t) && t.IsValidTarget(Vars.W.Range) &&
                             !t.IsValidTarget(GameObjects.Player.GetRealAutoAttackRange()) &&
                             Vars.GetRealHealth(t) < (float)GameObjects.Player.GetSpellDamage(t, SpellSlot.W)))
                {
                    Vars.W.Cast(Vars.W.GetPrediction(target).CastPosition);
                    return;
                }
            }

            /// <summary>
            ///     The KillSteal Q Logic.
            /// </summary>
            if (Vars.Q.IsReady() && Vars.Menu["spells"]["q"]["killsteal"].GetValue <MenuBool>().Value)
            {
                foreach (var target in
                         GameObjects.EnemyHeroes.Where(
                             t =>
                             !Invulnerable.Check(t) && t.IsValidTarget(Vars.Q.Range) &&
                             !t.IsValidTarget(GameObjects.Player.GetRealAutoAttackRange()) &&
                             !Vars.AnyWallInBetween(
                                 GameObjects.Player.ServerPosition,
                                 Vars.Q.GetPrediction(t).UnitPosition) &&
                             Vars.GetRealHealth(t) < (float)GameObjects.Player.GetSpellDamage(t, SpellSlot.Q)))
                {
                    Vars.Q.Cast(Vars.Q.GetPrediction(target).UnitPosition);
                    return;
                }
            }

            /// <summary>
            ///     The KillSteal R Logic.
            /// </summary>
            if (Vars.R.IsReady() && Vars.Menu["spells"]["r"]["killsteal"].GetValue <MenuBool>().Value)
            {
                foreach (var target in
                         GameObjects.EnemyHeroes.Where(
                             t =>
                             !Invulnerable.Check(t) && t.IsValidTarget(Vars.R.Range + 150f) &&
                             Vars.GetRealHealth(t)
                             < (float)
                             GameObjects.Player.GetSpellDamage(
                                 t,
                                 SpellSlot.R,
                                 t.IsValidTarget(Vars.R.Range) ? DamageStage.Default : DamageStage.Detonation)))
                {
                    Vars.R.Cast(Vars.R.GetPrediction(target).UnitPosition);

                    if (Vars.E.IsReady() && Vars.Menu["miscellaneous"]["cancel"].GetValue <MenuBool>().Value)
                    {
                        Vars.E.Cast(
                            GameObjects.Player.ServerPosition.Extend(Game.CursorPos, GameObjects.Player.BoundingRadius));
                    }
                }
            }
        }
Пример #13
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Killsteal(EventArgs args)
        {
            /// <summary>
            ///     The KillSteal W Logic.
            /// </summary>
            if (Vars.W.IsReady() &&
                Vars.getCheckBoxItem(Vars.WMenu, "killsteal"))
            {
                foreach (var target in
                         GameObjects.EnemyHeroes.Where(
                             t =>
                             !Invulnerable.Check(t) &&
                             t.LSIsValidTarget(Vars.W.Range) &&
                             !t.LSIsValidTarget(Vars.AARange) &&
                             t.IsVisible &&
                             t.IsHPBarRendered &&
                             Vars.GetRealHealth(t) <
                             (float)GameObjects.Player.LSGetSpellDamage(t, SpellSlot.W)))
                {
                    Vars.W.Cast(Vars.W.GetPrediction(target).CastPosition);
                    return;
                }
            }

            /// <summary>
            ///     The KillSteal Q Logic.
            /// </summary>
            if (Vars.Q.IsReady() &&
                Vars.getCheckBoxItem(Vars.QMenu, "killsteal"))
            {
                foreach (var target in
                         GameObjects.EnemyHeroes.Where(
                             t =>
                             !Invulnerable.Check(t) &&
                             t.LSIsValidTarget(Vars.Q.Range) &&
                             !t.LSIsValidTarget(Vars.AARange) &&
                             t.IsVisible &&
                             t.IsHPBarRendered &&
                             Vars.GetRealHealth(t) <
                             (float)GameObjects.Player.LSGetSpellDamage(t, SpellSlot.Q)))
                {
                    Vars.Q.Cast(Vars.Q.GetPrediction(target).UnitPosition);
                    return;
                }
            }

            /// <summary>
            ///     The KillSteal R Logic.
            /// </summary>
            if (Vars.R.IsReady() &&
                Vars.getCheckBoxItem(Vars.RMenu, "killsteal"))
            {
                foreach (var target in
                         GameObjects.EnemyHeroes.Where(
                             t =>
                             !Invulnerable.Check(t) &&
                             !t.LSIsValidTarget(Vars.AARange) &&
                             t.LSIsValidTarget(Vars.R.Range + 150f) &&
                             t.IsVisible &&
                             t.IsHPBarRendered &&
                             Vars.GetRealHealth(t) <
                             (float)GameObjects.Player.LSGetSpellDamage(t, SpellSlot.R, (t.LSIsValidTarget(Vars.R.Range)
                                    ? DamageStage.Default
                                    : DamageStage.Detonation))))
                {
                    Vars.R.Cast(Vars.R.GetPrediction(target).UnitPosition);
                }
            }
        }
Пример #14
0
        /// <summary>
        ///     Fired when the game is updated.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Clear(EventArgs args)
        {
            if (Bools.HasSheenBuff())
            {
                return;
            }

            /// <summary>
            ///     The E Clear Logics.
            /// </summary>
            if (Vars.E.IsReady())
            {
                /// <summary>
                ///     The E JungleClear Logic.
                /// </summary>
                if (Targets.JungleMinions.Any() &&
                    GameObjects.Player.ManaPercent
                    > ManaManager.GetNeededMana(Vars.E.Slot, Vars.Menu["spells"]["e"]["jungleclear"]) &&
                    Vars.Menu["spells"]["e"]["jungleclear"].GetValue <MenuSliderButton>().BValue)
                {
                    DelayAction.Add(
                        Vars.Menu["spells"]["e"]["delay"].GetValue <MenuSlider>().Value,
                        () => { Vars.E.CastOnUnit(Targets.JungleMinions[0]); });
                }

                /// <summary>
                ///     The E LaneClear Logics.
                /// </summary>
                else if (Targets.Minions.Any())
                {
                    if (GameObjects.Player.ManaPercent
                        < ManaManager.GetNeededMana(Vars.E.Slot, Vars.Menu["spells"]["e"]["lasthit"]) &&
                        Vars.Menu["spells"]["e"]["lasthit"].GetValue <MenuSliderButton>().BValue)
                    {
                        DelayAction.Add(
                            Vars.Menu["spells"]["e"]["delay"].GetValue <MenuSlider>().Value,
                            () =>
                        {
                            foreach (var minion in
                                     Targets.Minions.Where(
                                         m =>
                                         Vars.GetRealHealth(m)
                                         < (float)GameObjects.Player.GetSpellDamage(m, SpellSlot.E)
                                         + (m.HasBuffOfType(BuffType.Poison)
                                                   ? (float)
                                            GameObjects.Player.GetSpellDamage(
                                                m,
                                                SpellSlot.E,
                                                DamageStage.Empowered)
                                                   : 0)))
                            {
                                Vars.E.CastOnUnit(minion);
                            }
                        });
                    }
                    else if (GameObjects.Player.ManaPercent
                             >= ManaManager.GetNeededMana(Vars.E.Slot, Vars.Menu["spells"]["e"]["laneclear"]) &&
                             Vars.Menu["spells"]["e"]["laneclear"].GetValue <MenuSliderButton>().BValue)
                    {
                        DelayAction.Add(
                            Vars.Menu["spells"]["e"]["delay"].GetValue <MenuSlider>().Value,
                            () =>
                        {
                            foreach (var minion in
                                     Targets.Minions.Where(m => m.HasBuffOfType(BuffType.Poison)))
                            {
                                Vars.E.CastOnUnit(minion);
                            }
                        });
                    }
                }
            }

            /// <summary>
            ///     The Q Clear Logic.
            /// </summary>
            if (Vars.Q.IsReady())
            {
                var qFarmLocation =
                    Vars.Q.GetCircularFarmLocation(
                        Targets.Minions.Where(m => !m.HasBuffOfType(BuffType.Poison)).ToList(),
                        Vars.Q.Width);

                /// <summary>
                ///     The Q JungleClear Logic.
                /// </summary>
                if (Targets.JungleMinions.Any() &&
                    GameObjects.Player.ManaPercent
                    > ManaManager.GetNeededMana(Vars.W.Slot, Vars.Menu["spells"]["q"]["jungleclear"]) &&
                    Vars.Menu["spells"]["q"]["jungleclear"].GetValue <MenuSliderButton>().BValue)
                {
                    Vars.Q.Cast(Targets.JungleMinions[0].ServerPosition);
                }

                /// <summary>
                ///     The Q LaneClear Logic.
                /// </summary>
                else if (qFarmLocation.MinionsHit >= 2 &&
                         GameObjects.Player.ManaPercent
                         > ManaManager.GetNeededMana(Vars.W.Slot, Vars.Menu["spells"]["q"]["laneclear"]) &&
                         Vars.Menu["spells"]["q"]["laneclear"].GetValue <MenuSliderButton>().BValue)
                {
                    Vars.Q.Cast(qFarmLocation.Position);
                }
            }

            /// <summary>
            ///     The W Clear Logic.
            /// </summary>
            if (Vars.W.IsReady())
            {
                var wFarmLocation =
                    Vars.W.GetCircularFarmLocation(
                        Targets.Minions.Where(m => !m.HasBuffOfType(BuffType.Poison)).ToList(),
                        Vars.W.Width);

                /// <summary>
                ///     The W JungleClear Logic.
                /// </summary>
                if (Targets.JungleMinions.Any() &&
                    GameObjects.Player.ManaPercent
                    > ManaManager.GetNeededMana(Vars.W.Slot, Vars.Menu["spells"]["w"]["jungleclear"]) &&
                    Vars.Menu["spells"]["w"]["jungleclear"].GetValue <MenuSliderButton>().BValue &&
                    !Targets.JungleMinions[0].IsValidTarget(500))
                {
                    Vars.W.Cast(Targets.JungleMinions[0].ServerPosition);
                }

                /// <summary>
                ///     The W LaneClear Logic.
                /// </summary>
                else if (wFarmLocation.MinionsHit >= 3 &&
                         GameObjects.Player.ManaPercent
                         > ManaManager.GetNeededMana(Vars.W.Slot, Vars.Menu["spells"]["w"]["laneclear"]) &&
                         Vars.Menu["spells"]["w"]["laneclear"].GetValue <MenuSliderButton>().BValue)
                {
                    Vars.W.Cast(wFarmLocation.Position);
                }
            }
        }
Пример #15
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Automatic(EventArgs args)
        {
            if (GameObjects.Player.IsRecalling())
            {
                return;
            }

            /// <summary>
            ///     The Q LastHit Logic.
            /// </summary>
            if (Vars.Q.IsReady() && Variables.Orbwalker.ActiveMode != OrbwalkingMode.Combo &&
                GameObjects.Player.ManaPercent
                > ManaManager.GetNeededMana(Vars.Q.Slot, Vars.Menu["spells"]["q"]["farmhelper"]) &&
                Vars.Menu["spells"]["q"]["farmhelper"].GetValue <MenuSliderButton>().BValue)
            {
                foreach (var minion in
                         Targets.Minions.Where(
                             m =>
                             !m.IsValidTarget(GameObjects.Player.GetRealAutoAttackRange()) &&
                             Vars.GetRealHealth(m) > GameObjects.Player.GetAutoAttackDamage(m) &&
                             Vars.GetRealHealth(m) < (float)GameObjects.Player.GetSpellDamage(m, SpellSlot.Q))
                         .OrderBy(o => o.MaxHealth))
                {
                    if (!Vars.Q.GetPrediction(minion).CollisionObjects.Any())
                    {
                        Vars.Q.Cast(Vars.Q.GetPrediction(minion).UnitPosition);
                    }
                }
            }

            /// <summary>
            ///     The Tear Stacking Logic.
            /// </summary>
            if (Vars.Q.IsReady() && !Targets.Minions.Any() && Bools.HasTear(GameObjects.Player) &&
                Variables.Orbwalker.ActiveMode == OrbwalkingMode.None &&
                GameObjects.Player.CountEnemyHeroesInRange(1500) == 0 &&
                GameObjects.Player.ManaPercent
                > ManaManager.GetNeededMana(Vars.Q.Slot, Vars.Menu["miscellaneous"]["tear"]) &&
                Vars.Menu["miscellaneous"]["tear"].GetValue <MenuSliderButton>().BValue)
            {
                Vars.Q.Cast(Game.CursorPos);
            }

            /// <summary>
            ///     The Semi-Automatic R Logic.
            /// </summary>
            if (Vars.R.IsReady() && Vars.Menu["spells"]["r"]["bool"].GetValue <MenuBool>().Value &&
                Vars.Menu["spells"]["r"]["key"].GetValue <MenuKeyBind>().Active)
            {
                var target =
                    GameObjects.EnemyHeroes.Where(
                        t =>
                        !Invulnerable.Check(t, DamageType.Magical, false) && t.IsValidTarget(2000f) &&
                        Vars.Menu["spells"]["r"]["whitelist"][t.ChampionName.ToLower()].GetValue <MenuBool>().Value)
                    .OrderBy(o => o.Health)
                    .FirstOrDefault();
                if (target != null)
                {
                    Vars.R.Cast(Vars.R.GetPrediction(target).UnitPosition);
                }
            }

            if (GameObjects.Player.TotalAttackDamage < GameObjects.Player.TotalMagicalDamage)
            {
                return;
            }

            /// <summary>
            ///     Initializes the orbwalkingmodes.
            /// </summary>
            switch (Variables.Orbwalker.ActiveMode)
            {
            case OrbwalkingMode.Combo:
                if (!GameObjects.EnemyHeroes.Contains(Variables.Orbwalker.GetTarget()))
                {
                    return;
                }

                break;

            case OrbwalkingMode.LaneClear:
                if (!(Variables.Orbwalker.GetTarget() is Obj_HQ) &&
                    !(Variables.Orbwalker.GetTarget() is Obj_AI_Turret) &&
                    !(Variables.Orbwalker.GetTarget() is Obj_BarracksDampener))
                {
                    return;
                }

                break;

            default:
                if (!GameObjects.Jungle.Contains(Variables.Orbwalker.GetTarget()) &&
                    !GameObjects.EnemyHeroes.Contains(Variables.Orbwalker.GetTarget()) &&
                    !(Variables.Orbwalker.GetTarget() is Obj_HQ) &&
                    !(Variables.Orbwalker.GetTarget() is Obj_AI_Turret) &&
                    !(Variables.Orbwalker.GetTarget() is Obj_BarracksDampener))
                {
                    return;
                }

                break;
            }

            /// <summary>
            ///     The Automatic W Logic.
            /// </summary>
            if (Vars.W.IsReady() &&
                GameObjects.Player.ManaPercent
                > ManaManager.GetNeededMana(Vars.W.Slot, Vars.Menu["spells"]["w"]["logical"]) &&
                Vars.Menu["spells"]["w"]["logical"].GetValue <MenuSliderButton>().BValue)
            {
                foreach (var target in
                         GameObjects.AllyHeroes.Where(
                             t => !t.IsMe && t.Spellbook.IsAutoAttacking && t.IsValidTarget(Vars.W.Range, false)))
                {
                    Vars.W.Cast(Vars.W.GetPrediction(target).UnitPosition);
                }
            }
        }
Пример #16
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Combo(EventArgs args)
        {
            if (Orianna.BallPosition == null)
            {
                return;
            }

            /// <summary>
            ///     The W Combo Logic.
            /// </summary>
            if (Vars.W.IsReady() &&
                GameObjects.EnemyHeroes.Any(
                    t =>
                    t.Distance((Vector2)Orianna.BallPosition) < Vars.W.Range) &&
                Vars.Menu["spells"]["w"]["combo"].GetValue <MenuBool>().Value)
            {
                Vars.W.Cast();
                return;
            }

            /// <summary>
            ///     The E Combo Logic.
            /// </summary>
            if (Vars.E.IsReady() &&
                GameObjects.Player.Mana - Vars.E.Instance.ManaCost
                > Vars.Q.Instance.ManaCost + Vars.W.Instance.ManaCost &&
                Vars.Menu["spells"]["e"]["combo"].GetValue <MenuBool>().Value)
            {
                foreach (
                    var ally in
                    GameObjects.AllyHeroes.OrderBy(o => o.Health).Where(t => t.IsValidTarget(Vars.E.Range, false)))
                {
                    var polygon = new Geometry.Rectangle(
                        ally.ServerPosition,
                        ally.ServerPosition.Extend(
                            (Vector2)Orianna.BallPosition,
                            ally.Distance((Vector2)Orianna.BallPosition)),
                        Vars.Q.Width);

                    var objAiHero =
                        GameObjects.EnemyHeroes.FirstOrDefault(
                            t =>
                            t.IsValidTarget() && !Invulnerable.Check(t, DamageType.Magical) &&
                            !polygon.IsOutside((Vector2)t.ServerPosition));
                    if (objAiHero != null)
                    {
                        Vars.E.CastOnUnit(ally);
                        return;
                    }
                }
            }

            /// <summary>
            ///     The Combo R Logic.
            /// </summary>
            if (Vars.R.IsReady() &&
                GameObjects.EnemyHeroes.Any(
                    t =>
                    t.Distance((Vector2)Orianna.BallPosition) < Vars.R.Range - 25f &&
                    Vars.GetRealHealth(t)
                    < (float)GameObjects.Player.GetSpellDamage(t, SpellSlot.R)
                    + (float)GameObjects.Player.GetSpellDamage(t, SpellSlot.Q) * 2 &&
                    Vars.Menu["spells"]["r"]["whitelist"][t.ChampionName.ToLower()].GetValue <MenuBool>().Value) &&
                Vars.Menu["spells"]["r"]["combo"].GetValue <MenuBool>().Value)
            {
                Vars.R.Cast();
            }

            if (Bools.HasSheenBuff() && Targets.Target.IsValidTarget(Vars.AaRange) || !Targets.Target.IsValidTarget() ||
                Invulnerable.Check(Targets.Target, DamageType.Magical))
            {
                return;
            }

            /// <summary>
            ///     The Combo Q Logic.
            /// </summary>
            if (Vars.Q.IsReady() && Targets.Target.IsValidTarget(Vars.Q.Range) &&
                Vars.Menu["spells"]["q"]["combo"].GetValue <MenuBool>().Value)
            {
                if (Vars.E.IsReady() &&
                    Vars.Menu["spells"]["e"]["logical"].GetValue <MenuBool>().Value &&
                    ((Vector2)Orianna.BallPosition).Distance((Vector2)GameObjects.Player.ServerPosition)
                    > Vars.AaRange &&
                    ((Vector2)Orianna.BallPosition).Distance((Vector2)Targets.Target.ServerPosition)
                    > ((Vector2)Orianna.BallPosition).Distance((Vector2)GameObjects.Player.ServerPosition))
                {
                    Vars.E.Cast(GameObjects.Player);
                }
                Vars.Q.Cast(Vars.Q.GetPrediction(Targets.Target).CastPosition);
            }
        }
Пример #17
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Automatic(EventArgs args)
        {
            /// <summary>
            ///     The Soulbound declaration.
            /// </summary>
            if (Vars.SoulBound == null)
            {
                Vars.SoulBound =
                    GameObjects.AllyHeroes.Find(
                        a => a.Buffs.Any(b => b.Caster.IsMe && b.Name.Contains("kalistacoopstrikeally")));
            }
            else
            {
                /// <summary>
                ///     The Automatic R Logic.
                /// </summary>
                if (Vars.R.IsReady() && Vars.SoulBound.HealthPercent < 10 &&
                    Vars.SoulBound.CountEnemyHeroesInRange(800f) > 0 &&
                    Vars.SoulBound.IsValidTarget(Vars.R.Range, false) &&
                    Vars.Menu["spells"]["r"]["lifesaver"].GetValue <MenuBool>().Value)
                {
                    Vars.R.Cast();
                }
            }

            /// <summary>
            ///     The Automatic W Logic.
            /// </summary>
            if (Vars.W.IsReady() && !GameObjects.Player.IsRecalling() && !GameObjects.Player.IsUnderEnemyTurret() &&
                Variables.Orbwalker.ActiveMode == OrbwalkingMode.None &&
                GameObjects.Player.CountEnemyHeroesInRange(1500f) == 0 &&
                GameObjects.Player.ManaPercent
                > ManaManager.GetNeededMana(Vars.W.Slot, Vars.Menu["spells"]["w"]["logical"]) &&
                Vars.Menu["spells"]["w"]["logical"].GetValue <MenuSliderButton>().BValue)
            {
                foreach (var loc in
                         Vars.Locations.Where(
                             l =>
                             GameObjects.Player.Distance(l) < Vars.W.Range &&
                             !ObjectManager.Get <Obj_AI_Minion>()
                             .Any(m => m.Distance(l) < 1000f && m.CharData.BaseSkinName.Equals("kalistaspawn"))))
                {
                    Vars.W.Cast(loc);
                }
            }

            /// <summary>
            ///     The Automatic E Logics.
            /// </summary>
            if (Vars.E.IsReady())
            {
                /// <summary>
                ///     The E Before death Logic.
                /// </summary>
                if (Health.GetPrediction(GameObjects.Player, (int)(1000 + Game.Ping / 2f)) <= 0 &&
                    Vars.Menu["spells"]["e"]["ondeath"].GetValue <MenuBool>().Value)
                {
                    Vars.E.Cast();
                }

                /// <summary>
                ///     The E Minion Harass Logic.
                /// </summary>
                if (GameObjects.EnemyHeroes.Any(Bools.IsPerfectRendTarget) &&
                    Vars.Menu["spells"]["e"]["harass"].GetValue <MenuSliderButton>().BValue &&
                    Targets.Minions.Any(
                        m =>
                        Bools.IsPerfectRendTarget(m) &&
                        Vars.GetRealHealth(m)
                        < (float)GameObjects.Player.GetSpellDamage(m, SpellSlot.E)
                        + (float)GameObjects.Player.GetSpellDamage(m, SpellSlot.E, DamageStage.Buff)))
                {
                    /// <summary>
                    ///     Check for Mana Manager if not in combo mode and the killable minion is only one, else do not use it.
                    /// </summary>
                    if (Variables.Orbwalker.ActiveMode != OrbwalkingMode.Combo &&
                        Targets.Minions.Count(
                            m =>
                            Bools.IsPerfectRendTarget(m) &&
                            Vars.GetRealHealth(m)
                            < (float)GameObjects.Player.GetSpellDamage(m, SpellSlot.E)
                            + (float)GameObjects.Player.GetSpellDamage(m, SpellSlot.E, DamageStage.Buff)) == 1)
                    {
                        if (GameObjects.Player.ManaPercent
                            < ManaManager.GetNeededMana(Vars.E.Slot, Vars.Menu["spells"]["e"]["harass"]))
                        {
                            return;
                        }
                    }

                    /// <summary>
                    ///     Check for E Whitelist if the harassable target is only one and there is only one killable minion, else do not use the whitelist.
                    /// </summary>
                    if (GameObjects.EnemyHeroes.Count(Bools.IsPerfectRendTarget) == 1 &&
                        Targets.Minions.Count(
                            m =>
                            Bools.IsPerfectRendTarget(m) &&
                            Vars.GetRealHealth(m)
                            < (float)GameObjects.Player.GetSpellDamage(m, SpellSlot.E)
                            + (float)GameObjects.Player.GetSpellDamage(m, SpellSlot.E, DamageStage.Buff)) == 1)
                    {
                        var hero = GameObjects.EnemyHeroes.FirstOrDefault(Bools.IsPerfectRendTarget);
                        if (hero != null &&
                            !Vars.Menu["spells"]["e"]["whitelist"][hero.ChampionName.ToLower()].GetValue <MenuBool>()
                            .Value)
                        {
                            return;
                        }
                    }

                    /// <summary>
                    ///     Check for invulnerability through all the harassable targets.
                    /// </summary>
                    if (
                        GameObjects.EnemyHeroes.Where(Bools.IsPerfectRendTarget)
                        .Any(target => Invulnerable.Check(target)))
                    {
                        return;
                    }

                    Vars.E.Cast();
                }

                /// <summary>
                ///     The E JungleClear Logic.
                /// </summary>
                if (Vars.Menu["spells"]["e"]["junglesteal"].GetValue <MenuBool>().Value)
                {
                    if (
                        Targets.JungleMinions.Any(
                            m =>
                            Bools.IsPerfectRendTarget(m) &&
                            m.Health
                            < (float)GameObjects.Player.GetSpellDamage(m, SpellSlot.E)
                            + (float)GameObjects.Player.GetSpellDamage(m, SpellSlot.E, DamageStage.Buff)))
                    {
                        Vars.E.Cast();
                    }
                }
            }
        }
Пример #18
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Killsteal(EventArgs args)
        {
            /// <summary>
            ///     The KillSteal Q Logic.
            /// </summary>
            if (Vars.Q.IsReady() &&
                Vars.getCheckBoxItem(Vars.QMenu, "killsteal"))
            {
                foreach (var target in GameObjects.EnemyHeroes.Where(
                             t =>
                             !Invulnerable.Check(t) &&
                             !t.LSIsValidTarget(Vars.AARange) &&
                             t.LSIsValidTarget(Vars.Q.Range - 100f) &&
                             Vars.GetRealHealth(t) <
                             (float)GameObjects.Player.LSGetSpellDamage(t, SpellSlot.Q)))
                {
                    if (!Vars.Q.GetPrediction(target).CollisionObjects.Any(c => Targets.Minions.Contains(c)))
                    {
                        Vars.Q.Cast(Vars.Q.GetPrediction(target).UnitPosition);
                        return;
                    }
                }
            }

            /// <summary>
            ///     The KillSteal E Logic.
            /// </summary>
            if (Vars.E.IsReady() &&
                Vars.getCheckBoxItem(Vars.EMenu, "killsteal"))
            {
                foreach (var target in GameObjects.EnemyHeroes.Where(
                             t =>
                             !Invulnerable.Check(t) &&
                             !t.LSIsValidTarget(Vars.AARange) &&
                             t.LSIsValidTarget(Vars.E.Range - 100f) &&
                             Vars.GetRealHealth(t) <
                             (float)GameObjects.Player.LSGetSpellDamage(t, SpellSlot.E)))
                {
                    Vars.E.Cast(Vars.E.GetPrediction(target).UnitPosition);
                    return;
                }
            }

            /// <summary>
            ///     The KillSteal R Logic.
            /// </summary>
            if (Vars.R.IsReady() &&
                Vars.getCheckBoxItem(Vars.RMenu, "killstealC") &&
                Vars.getSliderItem(Vars.RMenu, "killsteal") >
                GameObjects.Player.GetBuffCount("kogmawlivingartillerycost"))
            {
                foreach (var target in GameObjects.EnemyHeroes.Where(
                             t =>
                             !Invulnerable.Check(t) &&
                             t.LSIsValidTarget(Vars.R.Range) &&
                             !t.LSIsValidTarget(Vars.W.Range) &&
                             Vars.GetRealHealth(t) <
                             (float)GameObjects.Player.LSGetSpellDamage(t, SpellSlot.R)))
                {
                    Vars.R.Cast(Vars.R.GetPrediction(target).CastPosition);
                }
            }
        }
Пример #19
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Killsteal(EventArgs args)
        {
            /// <summary>
            ///     The KillSteal R Logic.
            /// </summary>
            if (Vars.R.IsReady() && Vars.R.Instance.Name.Equals("JhinRShot") &&
                Vars.Menu["spells"]["r"]["killsteal"].GetValue <MenuBool>().Value)
            {
                foreach (var target in
                         GameObjects.EnemyHeroes.Where(
                             t =>
                             !Invulnerable.Check(t) && !Jhin.Cone.IsOutside((Vector2)t.ServerPosition) &&
                             t.IsValidTarget(Vars.R.Range) &&
                             Vars.GetRealHealth(t)
                             < (float)
                             GameObjects.Player.GetSpellDamage(
                                 t,
                                 SpellSlot.R,
                                 Jhin.ShotsCount == 3 ? DamageStage.Empowered : DamageStage.Default)))
                {
                    Vars.R.Cast(Vars.R.GetPrediction(target).UnitPosition);
                    return;
                }
            }

            if (Vars.R.Instance.Name.Equals("JhinRShot"))
            {
                return;
            }

            /// <summary>
            ///     The KillSteal Q Logic.
            /// </summary>
            if (Vars.Q.IsReady() && Vars.Menu["spells"]["q"]["killsteal"].GetValue <MenuBool>().Value)
            {
                foreach (var target in
                         GameObjects.EnemyHeroes.Where(
                             t =>
                             !Invulnerable.Check(t) && t.IsValidTarget(Vars.Q.Range) &&
                             Vars.GetRealHealth(t) < (float)GameObjects.Player.GetSpellDamage(t, SpellSlot.Q)))
                {
                    Vars.Q.CastOnUnit(target);
                    return;
                }
            }

            /// <summary>
            ///     The KillSteal W Logic.
            /// </summary>
            if (Vars.W.IsReady() && Vars.Menu["spells"]["w"]["killsteal"].GetValue <MenuBool>().Value)
            {
                foreach (var target in
                         GameObjects.EnemyHeroes.Where(
                             t =>
                             !Invulnerable.Check(t) && !t.IsValidTarget(GameObjects.Player.GetRealAutoAttackRange()) &&
                             t.IsValidTarget(Vars.W.Range - 100f) &&
                             Vars.GetRealHealth(t)
                             < (float)GameObjects.Player.GetSpellDamage(t, SpellSlot.W, DamageStage.Empowered)))
                {
                    Vars.W.Cast(Vars.W.GetPrediction(target).UnitPosition);
                }
            }
        }
Пример #20
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Harass(EventArgs args)
        {
            /// <summary>
            ///     The Extended Q Mixed Harass Logic.
            /// </summary>
            if (Vars.Q.IsReady() &&
                GameObjects.Player.ManaPercent
                > ManaManager.GetNeededMana(Vars.Q.Slot, Vars.Menu["spells"]["q"]["extended"]["mixed"]) &&
                Vars.Menu["spells"]["q"]["extended"]["mixed"].GetValue <MenuSliderButton>().BValue)
            {
                var passiveMultiplier = GameObjects.Player.Level < 4
                                            ? 0.25
                                            : GameObjects.Player.Level < 7
                                                  ? 0.3
                                                  : GameObjects.Player.Level < 9
                                                        ? 0.35
                                                        : GameObjects.Player.Level < 11
                                                              ? 0.4
                                                              : GameObjects.Player.Level < 13 ? 0.45 : 0.5;

                /// <summary>
                ///     Through enemy minions.
                /// </summary>
                foreach (var minion
                         in
                         from minion in
                         Targets.Minions.Where(
                             m =>
                             m.IsValidTarget(Vars.Q.Range) &&
                             (!Vars.Menu["spells"]["q"]["extended"]["mixedkill"].GetValue <MenuBool>().Value ||
                              Vars.GetRealHealth(m)
                              < (float)GameObjects.Player.GetSpellDamage(m, SpellSlot.Q)
                              + (MissFortune.PassiveTarget == null ||
                                 m.NetworkId != MissFortune.PassiveTarget?.NetworkId
                                       ? GameObjects.Player.TotalAttackDamage * passiveMultiplier
                                       : 0)))
                         let polygon =
                             new Geometry.Sector(
                                 (Vector2)minion.ServerPosition,
                                 (Vector2)
                                 minion.ServerPosition.Extend(GameObjects.Player.ServerPosition, -(Vars.Q2.Range - Vars.Q.Range)),
                                 40f * (float)Math.PI / 180f,
                                 Vars.Q2.Range - Vars.Q.Range - 50f)
                             let target =
                                 GameObjects.EnemyHeroes.FirstOrDefault(
                                     t =>
                                     !Invulnerable.Check(t) && t.IsValidTarget(Vars.Q2.Range) &&
                                     (t.NetworkId == MissFortune.PassiveTarget?.NetworkId ||
                                      Targets.Minions.All(m => polygon.IsOutside((Vector2)m.ServerPosition))) &&
                                     Vars.Menu["spells"]["q"]["whitelist"][t.ChampionName.ToLower()].GetValue <MenuBool>()
                                     .Value)
                                 where target != null
                                 where
                                 !polygon.IsOutside((Vector2)target.ServerPosition) &&
                                 !polygon.IsOutside((Vector2)Vars.Q.GetPrediction(target).UnitPosition)
                                 select minion)
                {
                    Vars.Q.CastOnUnit(minion);
                }
            }
        }
Пример #21
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Automatic(EventArgs args)
        {
            /// <summary>
            ///     The Automatic Q LastHit Logics.
            /// </summary>
            if (Vars.Q.IsReady() &&
                !Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo) &&
                GameObjects.Player.HealthPercent >
                ManaManager.GetNeededHealth(Vars.Q.Slot, Vars.getSliderItem(Vars.QMenu, "logical")) &&
                Vars.getSliderItem(Vars.QMenu, "logical") != 101)
            {
                foreach (var minion in GameObjects.EnemyMinions.Where(
                             m =>
                             m.LSIsValidTarget(Vars.Q.Range) &&
                             !m.LSIsValidTarget(Vars.AARange) &&
                             Vars.GetRealHealth(m) <
                             (float)GameObjects.Player.LSGetSpellDamage(m, SpellSlot.Q)))
                {
                    if (!Vars.Q.GetPrediction(minion).CollisionObjects.Any(c => Targets.Minions.Contains(c)))
                    {
                        Vars.Q.Cast(minion.ServerPosition);
                    }
                }
            }

            /// <summary>
            ///     The Automatic W Logic.
            /// </summary>
            if (Vars.W.IsReady())
            {
                /// <summary>
                ///     If the player doesn't have the W Buff.
                /// </summary>
                if (!GameObjects.Player.HasBuff("BurningAgony"))
                {
                    if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear))
                    {
                        if (GameObjects.Player.HealthPercent >= ManaManager.GetNeededHealth(Vars.W.Slot, Vars.getSliderItem(Vars.WMenu, "clear")) && Vars.getSliderItem(Vars.WMenu, "clear") != 101)
                        {
                            if (Targets.JungleMinions.Any() ||
                                Targets.Minions.Count() >= 2)
                            {
                                Vars.W.Cast();
                            }
                        }
                    }

                    if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo))
                    {
                        if (GameObjects.Player.CountEnemyHeroesInRange(Vars.W.Range) > 0 && Vars.getCheckBoxItem(Vars.WMenu, "combo"))
                        {
                            Vars.W.Cast();
                        }
                    }
                }

                /// <summary>
                ///     If the player has the W Buff.
                /// </summary>
                else
                {
                    if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear))
                    {
                        if (GameObjects.Player.HealthPercent < ManaManager.GetNeededHealth(Vars.W.Slot, Vars.getSliderItem(Vars.WMenu, "clear")) || !Targets.JungleMinions.Any() && Targets.Minions.Count() < 2 || Vars.getSliderItem(Vars.WMenu, "clear") == 101)
                        {
                            Vars.W.Cast();
                        }
                    }

                    if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo))
                    {
                        if (GameObjects.Player.CountEnemyHeroesInRange(Vars.W.Range) == 0 || !Vars.getCheckBoxItem(Vars.WMenu, "combo"))
                        {
                            Vars.W.Cast();
                        }
                    }
                }
            }

            /// <summary>
            ///     The R Lifesaver Logic.
            /// </summary>
            if (Vars.R.IsReady() &&
                GameObjects.Player.CountEnemyHeroesInRange(700) > 0 &&
                Vars.getCheckBoxItem(Vars.RMenu, "lifesaver") &&
                Health.GetPrediction(GameObjects.Player, (int)(250 + Game.Ping / 2f)) <= GameObjects.Player.MaxHealth / 5)
            {
                Vars.R.Cast();
            }
        }
Пример #22
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Automatic(EventArgs args)
        {
            /// <summary>
            ///     The R Manager.
            /// </summary>
            Orbwalker.DisableAttacking = Vars.R.Instance.Name.Equals("JhinRShot");
            Orbwalker.DisableMovement  = Vars.R.Instance.Name.Equals("JhinRShot");

            if (GameObjects.Player.LSIsRecalling())
            {
                return;
            }

            /*
             * /// <summary>
             * ///     The Automatic R Logic.
             * /// </summary>
             * if (!Targets.Target.LSIsValidTarget() &&
             *  Vars.R.Instance.Name.Equals("JhinRShot"))
             * {
             *  GameObjects.Player.IssueOrder(GameObjectOrder.MoveTo, GameObjects.Player.ServerPosition);
             * }
             */

            if (Vars.R.Instance.Name.Equals("JhinRShot"))
            {
                return;
            }

            /// <summary>
            ///     The Automatic Q LastHit Logic.
            /// </summary>
            if (Vars.Q.IsReady() &&
                GameObjects.Player.HasBuff("JhinPassiveReload") &&
                !Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo) &&
                GameObjects.Player.ManaPercent >
                ManaManager.GetNeededMana(Vars.Q.Slot, Vars.getSliderItem(Vars.QMenu, "lasthit")) &&
                Vars.getSliderItem(Vars.QMenu, "lasthit") != 101)
            {
                foreach (var minion in Targets.Minions.Where(
                             m =>
                             m.LSIsValidTarget(Vars.Q.Range) &&
                             Vars.GetRealHealth(m) <
                             (float)GameObjects.Player.LSGetSpellDamage(m, SpellSlot.Q)))
                {
                    Vars.Q.CastOnUnit(minion);
                }
            }

            /// <summary>
            ///     The Automatic W Logic.
            /// </summary>
            if (Vars.W.IsReady() &&
                !GameObjects.Player.IsUnderEnemyTurret() &&
                Vars.getCheckBoxItem(Vars.WMenu, "logical"))
            {
                foreach (var target in GameObjects.EnemyHeroes.Where(
                             t =>
                             !Invulnerable.Check(t) &&
                             t.HasBuff("jhinespotteddebuff") &&
                             t.LSIsValidTarget(Vars.W.Range - 150f) &&
                             !t.LSIsValidTarget(Vars.AARange + 50f) &&
                             !Vars.W.GetPrediction(t).CollisionObjects.Any(
                                 c =>
                                 !c.HasBuff("jhinespotteddebuff") &&
                                 GameObjects.EnemyHeroes.Contains(c)) &&
                             Vars.getCheckBoxItem(Vars.WhiteListMenu, t.ChampionName.ToLower())))
                {
                    if (Bools.IsImmobile(target))
                    {
                        Vars.W.Cast(target.ServerPosition);
                        return;
                    }
                    else
                    {
                        if (!target.LSIsFacing(GameObjects.Player) &&
                            GameObjects.Player.LSIsFacing(target))
                        {
                            Vars.W.Cast(Vars.W.GetPrediction(target).UnitPosition);
                            return;
                        }

                        if (target.LSIsFacing(GameObjects.Player) &&
                            !GameObjects.Player.LSIsFacing(target) &&
                            !GameObjects.EnemyHeroes.Any(
                                t =>
                                t.LSIsValidTarget(Vars.Q.Range + 50f)))
                        {
                            Vars.W.Cast(Vars.W.GetPrediction(target).UnitPosition);
                        }
                    }
                }
            }

            /// <summary>
            ///     The Automatic E Logic.
            /// </summary>
            if (Vars.E.IsReady() &&
                Vars.getCheckBoxItem(Vars.EMenu, "logical"))
            {
                foreach (var target in GameObjects.EnemyHeroes.Where(
                             t =>
                             Bools.IsImmobile(t) &&
                             !Invulnerable.Check(t) &&
                             t.LSIsValidTarget(Vars.E.Range)))
                {
                    Vars.E.Cast(GameObjects.Player.ServerPosition.LSExtend(
                                    target.ServerPosition,
                                    GameObjects.Player.Distance(target) + target.BoundingRadius * 2));
                }
            }
        }
Пример #23
0
        /// <summary>
        ///     Fired when the game is updated.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Clear(EventArgs args)
        {
            /// <summary>
            ///     The Q Extended Harass Logic.
            /// </summary>
            if (Vars.Q.IsReady())
            {
                /// <summary>
                ///     The Q Minion Harass Logic.
                /// </summary>
                if (GameObjects.Player.ManaPercent
                    > ManaManager.GetNeededMana(Vars.Q.Slot, Vars.Menu["spells"]["q"]["extended"]["exlaneclear"]) &&
                    Vars.Menu["spells"]["q"]["extended"]["exlaneclear"].GetValue <MenuSliderButton>().BValue)
                {
                    var passiveMultiplier = GameObjects.Player.Level < 4
                                                ? 0.25
                                                : GameObjects.Player.Level < 7
                                                      ? 0.3
                                                      : GameObjects.Player.Level < 9
                                                            ? 0.35
                                                            : GameObjects.Player.Level < 11
                                                                  ? 0.4
                                                                  : GameObjects.Player.Level < 13 ? 0.45 : 0.5;
                    foreach (var minion
                             in
                             from minion in
                             Targets.Minions.Where(
                                 m =>
                                 m.IsValidTarget(Vars.Q.Range) &&
                                 (!Vars.Menu["spells"]["q"]["extended"]["exlaneclearkill"].GetValue <MenuBool>().Value ||
                                  Vars.GetRealHealth(m)
                                  < (float)GameObjects.Player.GetSpellDamage(m, SpellSlot.Q)
                                  + (MissFortune.PassiveTarget == null ||
                                     m.NetworkId != MissFortune.PassiveTarget?.NetworkId
                                           ? GameObjects.Player.TotalAttackDamage * passiveMultiplier
                                           : 0)))
                             let polygon =
                                 new Geometry.Sector(
                                     (Vector2)minion.ServerPosition,
                                     (Vector2)
                                     minion.ServerPosition.Extend(
                                         GameObjects.Player.ServerPosition,
                                         -(Vars.Q2.Range - Vars.Q.Range)),
                                     40f * (float)Math.PI / 180f,
                                     Vars.Q2.Range - Vars.Q.Range - 50f)
                                 let target =
                                     GameObjects.EnemyHeroes.FirstOrDefault(
                                         t =>
                                         !Invulnerable.Check(t) && t.IsValidTarget(Vars.Q2.Range) &&
                                         (t.NetworkId == MissFortune.PassiveTarget?.NetworkId ||
                                          Targets.Minions.All(m => polygon.IsOutside((Vector2)m.ServerPosition))) &&
                                         Vars.Menu["spells"]["q"]["whitelist"][t.ChampionName.ToLower()].GetValue <MenuBool>()
                                         .Value)
                                     where target != null
                                     where
                                     !polygon.IsOutside((Vector2)target.ServerPosition) &&
                                     !polygon.IsOutside((Vector2)Vars.Q.GetPrediction(target).UnitPosition)
                                     select minion)
                    {
                        Vars.Q.CastOnUnit(minion);
                    }
                }
            }

            /// <summary>
            ///     The W Clear Logics.
            /// </summary>
            if (Vars.W.IsReady())
            {
                /// <summary>
                ///     The W JungleClear Logics.
                /// </summary>
                if (Targets.JungleMinions.Contains(Variables.Orbwalker.GetTarget() as Obj_AI_Minion) &&
                    GameObjects.Player.ManaPercent
                    > ManaManager.GetNeededMana(Vars.W.Slot, Vars.Menu["spells"]["w"]["jungleclear"]) &&
                    Vars.Menu["spells"]["w"]["jungleclear"].GetValue <MenuSliderButton>().BValue)
                {
                    Vars.W.Cast();
                }

                /// <summary>
                ///     The W LaneClear Logics.
                /// </summary>
                else if (Targets.Minions.Contains(Variables.Orbwalker.GetTarget() as Obj_AI_Minion) &&
                         GameObjects.Player.ManaPercent
                         > ManaManager.GetNeededMana(Vars.W.Slot, Vars.Menu["spells"]["w"]["laneclear"]) &&
                         Vars.Menu["spells"]["w"]["laneclear"].GetValue <MenuSliderButton>().BValue)
                {
                    Vars.W.Cast();
                }
            }

            /// <summary>
            ///     The E Clear Logics.
            /// </summary>
            if (Vars.E.IsReady())
            {
                /// <summary>
                ///     The E JungleClear Logics.
                /// </summary>
                if (Targets.JungleMinions.Any() &&
                    GameObjects.Player.ManaPercent
                    > ManaManager.GetNeededMana(Vars.E.Slot, Vars.Menu["spells"]["e"]["jungleclear"]) &&
                    Vars.Menu["spells"]["e"]["jungleclear"].GetValue <MenuSliderButton>().BValue)
                {
                    Vars.E.Cast(Targets.JungleMinions[0]);
                }

                /// <summary>
                ///     The E LaneClear Logics.
                /// </summary>
                else if (Targets.Minions.Any() &&
                         GameObjects.Player.ManaPercent
                         > ManaManager.GetNeededMana(Vars.E.Slot, Vars.Menu["spells"]["e"]["laneclear"]) &&
                         Vars.Menu["spells"]["e"]["laneclear"].GetValue <MenuSliderButton>().BValue &&
                         Vars.E.GetCircularFarmLocation(Targets.Minions, Vars.E.Width).MinionsHit >= 4)
                {
                    Vars.E.Cast(Vars.E.GetCircularFarmLocation(Targets.Minions, Vars.E.Width).Position);
                }
            }
        }
Пример #24
0
        /// <summary>
        ///     Fired when the game is updated.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Clear(EventArgs args)
        {
            if (Bools.HasSheenBuff())
            {
                return;
            }

            /// <summary>
            ///     The Q LaneClear Logic.
            /// </summary>
            if (Vars.Q.IsReady() &&
                Targets.Minions.Any() &&
                Vars.getSliderItem(Vars.QMenu, "laneclear") != 101)
            {
                if (GameObjects.Player.ManaPercent <
                    ManaManager.GetNeededMana(Vars.Q.Slot, Vars.getSliderItem(Vars.QMenu, "laneclear")) &&
                    !GameObjects.Player.Buffs.Any(b => b.Name.Equals("visionary")))
                {
                    return;
                }

                Vars.Q.CastOnUnit(Targets.Minions.FirstOrDefault(
                                      m =>
                                      Vars.GetRealHealth(m) <
                                      (float)GameObjects.Player.LSGetSpellDamage(m, SpellSlot.Q)));
            }

            /// <summary>
            ///     The E Clear Logics.
            /// </summary>
            if (Vars.E.IsReady() &&
                Vars.getSliderItem(Vars.EMenu, "clear") != 101)
            {
                if (GameObjects.Player.ManaPercent <
                    ManaManager.GetNeededMana(Vars.E.Slot, Vars.getSliderItem(Vars.EMenu, "clear")) &&
                    !GameObjects.Player.Buffs.Any(b => b.Name.Equals("visionary")))
                {
                    return;
                }

                /// <summary>
                ///     The E LaneClear Logic.
                /// </summary>
                foreach (var minion in Targets.Minions.Where(
                             m =>
                             m.LSIsValidTarget(Vars.E.Range) &&
                             Vars.GetRealHealth(m) <
                             (float)GameObjects.Player.LSGetSpellDamage(m, SpellSlot.E)))
                {
                    Vars.E.CastOnUnit(minion);
                }

                /// <summary>
                ///     The E JungleClear Logic.
                /// </summary>
                if (Targets.JungleMinions.Any())
                {
                    Vars.E.CastOnUnit(Targets.JungleMinions[0]);
                }
            }
        }
Пример #25
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Killsteal(EventArgs args)
        {
            /// <summary>
            ///     The KillSteal Q Logic.
            /// </summary>
            if (Vars.Q.IsReady() &&
                Vars.getCheckBoxItem(Vars.QMenu, "killsteal"))
            {
                foreach (var target in GameObjects.EnemyHeroes.Where(
                             t =>
                             !Invulnerable.Check(t) &&
                             t.LSIsValidTarget(Vars.Q.Range) &&
                             !t.LSIsValidTarget(Vars.AARange) &&
                             Vars.GetRealHealth(t) <
                             (float)GameObjects.Player.LSGetSpellDamage(t, SpellSlot.Q)))
                {
                    if (!Vars.Q.GetPrediction(target).CollisionObjects.Any())
                    {
                        Vars.Q.Cast(Vars.Q.GetPrediction(target).UnitPosition);
                        return;
                    }
                }
            }

            /// <summary>
            ///     The KillSteal W Logic.
            /// </summary>
            if (Vars.W.IsReady() &&
                Vars.getCheckBoxItem(Vars.WMenu, "killsteal"))
            {
                foreach (var target in GameObjects.EnemyHeroes.Where(
                             t =>
                             !Invulnerable.Check(t) &&
                             t.LSIsValidTarget(Vars.W.Range) &&
                             !t.LSIsValidTarget(Vars.AARange) &&
                             Vars.GetRealHealth(t) <
                             (float)GameObjects.Player.LSGetSpellDamage(t, SpellSlot.W)))
                {
                    Vars.W.Cast(Vars.W.GetPrediction(target).UnitPosition);
                    return;
                }
            }

            /// <summary>
            ///     The KillSteal R Logic.
            /// </summary>
            if (Vars.R.IsReady() &&
                GameObjects.Player.CountEnemyHeroesInRange(Vars.AARange) == 0 &&
                Vars.getCheckBoxItem(Vars.RMenu, "killsteal"))
            {
                foreach (var target in GameObjects.EnemyHeroes.Where(
                             t =>
                             !Invulnerable.Check(t) &&
                             t.LSIsValidTarget(Vars.R.Range) &&
                             Vars.GetRealHealth(t) >
                             (float)GameObjects.Player.LSGetSpellDamage(t, SpellSlot.Q) &&
                             Vars.GetRealHealth(t) <
                             (float)GameObjects.Player.LSGetSpellDamage(t, SpellSlot.R)))
                {
                    Vars.R.Cast(Vars.R.GetPrediction(target).UnitPosition);
                }
            }
        }
Пример #26
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Killsteal(EventArgs args)
        {
            if (GameObjects.Player.HealthPercent
                <= Vars.Menu["spells"]["q"]["shield"].GetValue <MenuSliderButton>().SValue &&
                Vars.Menu["spells"]["q"]["shield"].GetValue <MenuSliderButton>().BValue)
            {
                return;
            }

            /// <summary>
            ///     The KillSteal Q Logic.
            /// </summary>
            if (Vars.Q.IsReady() && Vars.Menu["spells"]["q"]["killsteal"].GetValue <MenuBool>().Value)
            {
                foreach (var target in
                         GameObjects.EnemyHeroes.Where(
                             t =>
                             t.IsValidTarget(Vars.Q.Range - 50f) && !Invulnerable.Check(t, DamageType.Magical) &&
                             Vars.GetRealHealth(t)
                             < (float)GameObjects.Player.GetSpellDamage(t, SpellSlot.Q)
                             * (1
                                + (t.HasBuff("RyzeE")
                                  ? new double[] { 40, 55, 70, 85, 100 }[
                                       GameObjects.Player.Spellbook.GetSpell(SpellSlot.E).Level - 1] / 100
                                  : 0))))
                {
                    if (!Vars.Q.GetPrediction(target).CollisionObjects.Any())
                    {
                        Vars.Q.Cast(Vars.Q.GetPrediction(target).UnitPosition);
                    }
                }
            }

            /// <summary>
            ///     The KillSteal W Logic.
            /// </summary>
            if (Vars.W.IsReady() && Vars.Menu["spells"]["w"]["killsteal"].GetValue <MenuBool>().Value)
            {
                foreach (var target in
                         GameObjects.EnemyHeroes.Where(
                             t =>
                             t.IsValidTarget(Vars.W.Range) && !Invulnerable.Check(t, DamageType.Magical, false) &&
                             Vars.GetRealHealth(t) < (float)GameObjects.Player.GetSpellDamage(t, SpellSlot.W)))
                {
                    Vars.W.CastOnUnit(target);
                }
            }

            /// <summary>
            ///     The KillSteal E Logic.
            /// </summary>
            if (Vars.E.IsReady() && Vars.Menu["spells"]["e"]["killsteal"].GetValue <MenuBool>().Value)
            {
                foreach (var target in
                         GameObjects.EnemyHeroes.Where(
                             t =>
                             t.IsValidTarget(Vars.E.Range) && !Invulnerable.Check(t, DamageType.Magical, false) &&
                             Vars.GetRealHealth(t) < (float)GameObjects.Player.GetSpellDamage(t, SpellSlot.E)))
                {
                    Vars.E.CastOnUnit(target);
                }
            }
        }
Пример #27
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Killsteal(EventArgs args)
        {
            /// <summary>
            ///     The Q KillSteal Logic.
            /// </summary>
            if (Vars.Q.IsReady())
            {
                /// <summary>
                ///     Normal Q KilLSteal Logic.
                /// </summary>
                if (Vars.getCheckBoxItem(Vars.QMenu, "killsteal"))
                {
                    foreach (var target in GameObjects.EnemyHeroes.Where(
                                 t =>
                                 !Invulnerable.Check(t) &&
                                 t.LSIsValidTarget(Vars.Q.Range) &&
                                 Vars.GetRealHealth(t) <
                                 (float)GameObjects.Player.LSGetSpellDamage(t, SpellSlot.Q)))
                    {
                        Vars.Q.CastOnUnit(target);
                    }
                }

                /// <summary>
                ///     Extended Q KillSteal Logic.
                /// </summary>
                if (Vars.getCheckBoxItem(Vars.Q2Menu, "exkillsteal"))
                {
                    /// <summary>
                    ///     Through enemy minions.
                    /// </summary>
                    foreach (var minion
                             in from minion
                             in Targets.Minions.Where(m => m.LSIsValidTarget(Vars.Q.Range))

                             let polygon = new Geometry.Sector(
                                 (Vector2)minion.ServerPosition,
                                 (Vector2)minion.ServerPosition.LSExtend(GameObjects.Player.ServerPosition, -(Vars.Q2.Range - Vars.Q.Range)),
                                 40f * (float)Math.PI / 180f,
                                 (Vars.Q2.Range - Vars.Q.Range) - 50f)

                                           let target = GameObjects.EnemyHeroes.FirstOrDefault(
                                 t =>
                                 !Invulnerable.Check(t) &&
                                 t.LSIsValidTarget(Vars.Q2.Range - 50f) &&
                                 Vars.GetRealHealth(t) <
                                 (Vars.GetRealHealth(minion) <
                                  (float)GameObjects.Player.LSGetSpellDamage(minion, SpellSlot.Q)
                                               ? (float)GameObjects.Player.LSGetSpellDamage(t, SpellSlot.Q)
                                               : 0) +
                                 (float)GameObjects.Player.LSGetSpellDamage(t, SpellSlot.Q, DamageStage.SecondForm) &&
                                 ((Vars.PassiveTarget.LSIsValidTarget() &&
                                   t.NetworkId == Vars.PassiveTarget.NetworkId) ||
                                  !Targets.Minions.Any(m => !polygon.IsOutside((Vector2)m.ServerPosition))))

                                                        where
                                                        target != null
                                                        where
                                                        !polygon.IsOutside((Vector2)target.ServerPosition) &&
                                                        !polygon.IsOutside(
                                 (Vector2)Movement.GetPrediction(
                                     target,
                                     GameObjects.Player.Distance(target) / Vars.Q.Speed + Vars.Q.Delay).UnitPosition)

                                                        select minion)
                    {
                        Vars.Q.CastOnUnit(minion);
                    }

                    /// <summary>
                    ///     Through enemy heroes.
                    /// </summary>
                    foreach (var target
                             in from target
                             in GameObjects.EnemyHeroes.Where(t => t.LSIsValidTarget(Vars.Q.Range))

                             let polygon = new Geometry.Sector(
                                 (Vector2)target.ServerPosition,
                                 (Vector2)target.ServerPosition.LSExtend(GameObjects.Player.ServerPosition, -(Vars.Q2.Range - Vars.Q.Range)),
                                 40f * (float)Math.PI / 180f,
                                 (Vars.Q2.Range - Vars.Q.Range) - 50f)

                                           let target2 = GameObjects.EnemyHeroes.FirstOrDefault(
                                 t =>
                                 !Invulnerable.Check(t) &&
                                 t.LSIsValidTarget(Vars.Q2.Range - 50f) &&
                                 Vars.GetRealHealth(t) <
                                 (Vars.GetRealHealth(target) <
                                  (float)GameObjects.Player.LSGetSpellDamage(target, SpellSlot.Q)
                                               ? (float)GameObjects.Player.LSGetSpellDamage(t, SpellSlot.Q)
                                               : 0) +
                                 (float)GameObjects.Player.LSGetSpellDamage(t, SpellSlot.Q, DamageStage.SecondForm) &&
                                 ((Vars.PassiveTarget.LSIsValidTarget() &&
                                   t.NetworkId == Vars.PassiveTarget.NetworkId) ||
                                  !Targets.Minions.Any(m => !polygon.IsOutside((Vector2)m.ServerPosition))))

                                                         where
                                                         target2 != null
                                                         where
                                                         !polygon.IsOutside((Vector2)target2.ServerPosition) &&
                                                         !polygon.IsOutside(
                                 (Vector2)Movement.GetPrediction(
                                     target2,
                                     GameObjects.Player.Distance(target) / Vars.Q.Speed + Vars.Q.Delay).UnitPosition)

                                                         select target)
                    {
                        Vars.Q.CastOnUnit(target);
                    }
                }
            }
        }
Пример #28
0
        /// <summary>
        ///     Fired when the game is updated.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Clear(EventArgs args)
        {
            if (Bools.HasSheenBuff())
            {
                return;
            }

            /// <summary>
            ///     The Clear W Logic.
            /// </summary>
            if (Vars.W.IsReady() &&
                GameObjects.Player.ManaPercent
                > ManaManager.GetNeededMana(Vars.W.Slot, Vars.Menu["spells"]["w"]["laneclear"]) &&
                Vars.Menu["spells"]["w"]["laneclear"].GetValue <MenuSliderButton>().BValue)
            {
                if (
                    GameObjects.EnemyHeroes.Any(
                        t => !Invulnerable.Check(t, DamageType.Magical, false) && t.IsValidTarget(Vars.W.Range - 150f)))
                {
                    return;
                }

                if (Vars.W.GetLineFarmLocation(Targets.Minions, Vars.W.Width).MinionsHit >= 4)
                {
                    Vars.W.Cast(Vars.W.GetLineFarmLocation(Targets.Minions, Vars.W.Width).Position);
                }
            }

            /// <summary>
            ///     The Clear Q Logic.
            /// </summary>
            if (Vars.Q.IsReady())
            {
                /// <summary>
                ///     The LaneClear Q Logic.
                /// </summary>
                if (Targets.Minions.Any() &&
                    GameObjects.Player.ManaPercent
                    > ManaManager.GetNeededMana(Vars.Q.Slot, Vars.Menu["spells"]["q"]["laneclear"]) &&
                    Vars.Menu["spells"]["q"]["laneclear"].GetValue <MenuSliderButton>().BValue)
                {
                    foreach (var minion in
                             Targets.Minions.Where(
                                 m =>
                                 m.IsValidTarget(Vars.Q.Range) && Targets.Minions.Count(m2 => m2.Distance(m) < 350f) >= 3 &&
                                 Vars.GetRealHealth(m) < (float)GameObjects.Player.GetSpellDamage(m, SpellSlot.Q)))
                    {
                        Vars.Q.CastOnUnit(minion);
                    }
                }

                /// <summary>
                ///     The JungleClear Q Logic.
                /// </summary>
                else if (Targets.JungleMinions.Any() &&
                         GameObjects.Player.ManaPercent
                         > ManaManager.GetNeededMana(Vars.Q.Slot, Vars.Menu["spells"]["q"]["jungleclear"]) &&
                         Vars.Menu["spells"]["q"]["jungleclear"].GetValue <MenuSliderButton>().BValue)
                {
                    Vars.Q.CastOnUnit(Targets.JungleMinions[0]);
                }
            }
        }
Пример #29
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Killsteal(EventArgs args)
        {
            /// <summary>
            ///     The Q Killsteal Logic.
            /// </summary>
            if (Vars.Q.IsReady())
            {
                /// <summary>
                ///     Normal Q KilLSteal Logic.
                /// </summary>
                if (Vars.Menu["spells"]["q"]["killsteal"].GetValue <MenuBool>().Value)
                {
                    foreach (var target in
                             GameObjects.EnemyHeroes.Where(
                                 t =>
                                 !Invulnerable.Check(t) && t.IsValidTarget(Vars.Q.Range) &&
                                 Vars.GetRealHealth(t) < (float)GameObjects.Player.GetSpellDamage(t, SpellSlot.Q)))
                    {
                        Vars.Q.CastOnUnit(target);
                    }
                }

                if (
                    !GameObjects.EnemyHeroes.Any(
                        t =>
                        !Invulnerable.Check(t) && !t.IsValidTarget(Vars.Q.Range) && t.IsValidTarget(Vars.Q2.Range - 50f) &&
                        Vars.GetRealHealth(t) < (float)GameObjects.Player.GetSpellDamage(t, SpellSlot.Q)))
                {
                    return;
                }

                /// <summary>
                ///     Extended Q KilLSteal Logic.
                /// </summary>
                if (Vars.Menu["spells"]["q"]["extended"]["exkillsteal"].GetValue <MenuBool>().Value)
                {
                    /// <summary>
                    ///     Through enemy minions.
                    /// </summary>
                    foreach (var minion
                             in from minion in Targets.Minions.Where(m => m.IsValidTarget(Vars.Q.Range))
                             let polygon =
                                 new Geometry.Rectangle(
                                     GameObjects.Player.ServerPosition,
                                     GameObjects.Player.ServerPosition.Extend(minion.ServerPosition, Vars.Q2.Range - 50f),
                                     Vars.Q2.Width)
                                 where
                                 !polygon.IsOutside(
                                     (Vector2)
                                     Vars.Q2.GetPrediction(
                                         GameObjects.EnemyHeroes.FirstOrDefault(
                                             t =>
                                             !Invulnerable.Check(t) && !t.IsValidTarget(Vars.Q.Range) &&
                                             t.IsValidTarget(Vars.Q2.Range - 50f) &&
                                             Vars.GetRealHealth(t)
                                             < (float)GameObjects.Player.GetSpellDamage(t, SpellSlot.Q))).UnitPosition)
                                 select minion)
                    {
                        Vars.Q.CastOnUnit(minion);
                    }

                    /// <summary>
                    ///     Through enemy heroes.
                    /// </summary>
                    foreach (var target
                             in from target in GameObjects.EnemyHeroes.Where(t => t.IsValidTarget(Vars.Q.Range))
                             let polygon =
                                 new Geometry.Rectangle(
                                     GameObjects.Player.ServerPosition,
                                     GameObjects.Player.ServerPosition.Extend(target.ServerPosition, Vars.Q2.Range - 50f),
                                     Vars.Q2.Width)
                                 where
                                 !polygon.IsOutside(
                                     (Vector2)
                                     Vars.Q2.GetPrediction(
                                         GameObjects.EnemyHeroes.FirstOrDefault(
                                             t =>
                                             !Invulnerable.Check(t) && !t.IsValidTarget(Vars.Q.Range) &&
                                             t.IsValidTarget(Vars.Q2.Range - 50f) &&
                                             Vars.GetRealHealth(t)
                                             < (float)GameObjects.Player.GetSpellDamage(t, SpellSlot.Q))).UnitPosition)
                                 select target)
                    {
                        Vars.Q.CastOnUnit(target);
                    }
                }
            }

            /// <summary>
            ///     The KillSteal W Logic.
            /// </summary>
            if (Vars.W.IsReady() && Vars.Menu["spells"]["w"]["killsteal"].GetValue <MenuBool>().Value)
            {
                foreach (var target in
                         GameObjects.EnemyHeroes.Where(
                             t =>
                             !Invulnerable.Check(t) && t.IsValidTarget(Vars.W.Range) && !t.IsValidTarget(Vars.Q.Range) &&
                             Vars.GetRealHealth(t) < (float)GameObjects.Player.GetSpellDamage(t, SpellSlot.W)))
                {
                    if (!Vars.W.GetPrediction(target).CollisionObjects.Any())
                    {
                        Vars.W.Cast(Vars.W.GetPrediction(target).UnitPosition);
                    }
                }
            }
        }
Пример #30
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Killsteal(EventArgs args)
        {
            /// <summary>
            ///     The KillSteal R Logic.
            /// </summary>
            if (Vars.R.IsReady() &&
                Vars.R.Instance.Name.Equals("JhinRShot") &&
                Vars.getCheckBoxItem(Vars.RMenu, "killsteal"))
            {
                foreach (var target in GameObjects.EnemyHeroes.Where(
                             t =>
                             !Invulnerable.Check(t) &&
                             t.LSIsValidTarget(Vars.R.Range) &&
                             GameObjects.Player.LSIsFacing(t) &&
                             Vars.GetRealHealth(t) <
                             (float)GameObjects.Player.LSGetSpellDamage(t, SpellSlot.R, (Vars.ShotsCount == 3
                                ? DamageStage.Empowered
                                : DamageStage.Default))))
                {
                    if (!Vars.R.GetPrediction(target).CollisionObjects.Any(c => GameObjects.EnemyHeroes.Contains(c)))
                    {
                        Vars.R.Cast(Vars.R.GetPrediction(target).UnitPosition);
                        return;
                    }
                }
            }

            if (Vars.R.Instance.Name.Equals("JhinRShot"))
            {
                return;
            }

            /// <summary>
            ///     The KillSteal Q Logic.
            /// </summary>
            if (Vars.Q.IsReady() &&
                Vars.getCheckBoxItem(Vars.QMenu, "killsteal"))
            {
                foreach (var target in GameObjects.EnemyHeroes.Where(
                             t =>
                             !Invulnerable.Check(t) &&
                             t.LSIsValidTarget(Vars.Q.Range) &&
                             Vars.GetRealHealth(t) <
                             (float)GameObjects.Player.LSGetSpellDamage(t, SpellSlot.Q)))
                {
                    Vars.Q.CastOnUnit(target);
                    return;
                }
            }

            /// <summary>
            ///     The KillSteal W Logic.
            /// </summary>
            if (Vars.W.IsReady() &&
                Vars.getCheckBoxItem(Vars.WMenu, "killsteal"))
            {
                foreach (var target in GameObjects.EnemyHeroes.Where(
                             t =>
                             !Invulnerable.Check(t) &&
                             !t.LSIsValidTarget(Vars.AARange) &&
                             t.LSIsValidTarget(Vars.W.Range - 100f) &&
                             Vars.GetRealHealth(t) <
                             (float)GameObjects.Player.LSGetSpellDamage(t, SpellSlot.W, DamageStage.Empowered)))
                {
                    Vars.W.Cast(Vars.W.GetPrediction(target).UnitPosition);
                }
            }
        }