Exemplo n.º 1
0
        public override void Execute()
        {
            if (!Config.Modes.LC.UseQ)
            {
                return;
            }


            LastHit(Q1);

            if (EntityManager.MinionsAndMonsters.CombinedAttackable.Any(m => m.Distance(Player.Instance) < Q1.Range && m.Health <= 2 * Player.Instance.GetSpellDamage(m, SpellSlot.Q)))
            {
                return;
            }
            //Logger.Debug("Hi, I'm trying to lane clear");
            Obj_AI_Minion laneClear =
                EntityManager.MinionsAndMonsters.EnemyMinions.FirstOrDefault(
                    m => m.Health > 2.5 * Player.Instance.GetSpellDamage(m, SpellSlot.Q));

            if (laneClear == null || !laneClear.IsValid || laneClear.IsDead)
            {
                return;
            }
            {
                if (Q1.GetPrediction(laneClear).HitChancePercent > 25)
                {
                    Q1.Cast(laneClear);
                }
            }
        }
Exemplo n.º 2
0
 public override void KillSteal()
 {
     foreach (var target in EntityManager.Heroes.Enemies.Where(e => e != null && e.IsValidTarget()))
     {
         foreach (
             var spell in
             SpellList.Where(
                 s =>
                 s.WillKill(target) && s != R && s.IsReady() && target.IsKillable(s.Range) &&
                 KillStealMenu.CheckBoxValue(s.Slot)))
         {
             if (spell.Slot == SpellSlot.Q)
             {
                 if (Q.GetPrediction(target).HitChance >= HitChance.Medium ||
                     Q1.GetPrediction(target).HitChance >= HitChance.Medium)
                 {
                     Q.Cast(target);
                 }
             }
             else
             {
                 (spell as Spell.Targeted)?.Cast(target);
             }
         }
     }
 }
Exemplo n.º 3
0
        //c
        public static void Combo()
        {
            var Target = TargetSelector.GetTarget(Q1.Range, DamageType.Physical);

            if (Target == null)
            {
                return;
            }
            var useQ  = ModesMenu1["ComboQ"].Cast <CheckBox>().CurrentValue;
            var useQ2 = ModesMenu1["ComboQ2"].Cast <CheckBox>().CurrentValue;
            var Qp    = Q1.GetPrediction(Target);

            if (!Target.IsValid())
            {
                return;
            }
            if (Q1.IsReady() && useQ && !Target.IsInvulnerable && Q1.Name.Equals("BlindMonkQOne", StringComparison.InvariantCultureIgnoreCase))
            {
                if (Qp.HitChance >= HitChance.High)
                {
                    Q1.Cast(Qp.CastPosition);
                }
            }

            if (Q2.IsReady() && useQ2 && !Target.IsInvulnerable && Q2.Name.Equals("blindmonkqtwo", StringComparison.InvariantCultureIgnoreCase))
            {
                Q2.Cast();
            }
        }
Exemplo n.º 4
0
        private void LogicFarm()
        {
            if (LaneClear && Player.Mana > QMANA + RMANA)
            {
                var mobs = GameObjects.GetJungles(Q.Range);

                if (mobs.Count > 0)
                {
                    var mob = mobs.First();

                    if (Q.IsReady())
                    {
                        Q.Cast(mob);
                        return;
                    }

                    if (W.IsReady())
                    {
                        W.Cast(mob);
                        return;
                    }
                }

                if (FarmSpells)
                {
                    if (Q.IsReady() && farmQ.Enabled)
                    {
                        var minions = GameObjects.GetMinions(Q1.Range);

                        foreach (var minion in minions)
                        {
                            var poutput = Q1.GetPrediction(minion);
                            var col     = poutput.CollisionObjects;

                            if (col.Count > 2)
                            {
                                var minionQ = col.First();

                                if (minionQ.IsValidTarget(Q.Range))
                                {
                                    Q.Cast(minionQ);
                                    return;
                                }
                            }
                        }
                    }

                    if (W.IsReady() && farmW.Enabled)
                    {
                        var minions = GameObjects.GetMinions(W.Range).ToList();
                        var wFarm   = W.GetCircularFarmLocation(minions, 150);

                        if (wFarm.MinionsHit > 3)
                        {
                            W.Cast(wFarm.Position);
                        }
                    }
                }
            }
        }
Exemplo n.º 5
0
        public override void Execute()
        {
            if (Settings.mana >= Player.Instance.ManaPercent)
            {
                return;
            }

            if (Settings.UseQ && Q.IsReady())
            {
                var minions = EntityManager.MinionsAndMonsters.EnemyMinions.Where(t => t.IsEnemy && !t.IsDead && t.IsValid && !t.IsInvulnerable && t.IsInRange(Player.Instance.Position, Q1.Range));
                foreach (var m in minions)
                {
                    if (Q1.GetPrediction(m).CollisionObjects.Where(t => t.IsEnemy && !t.IsDead && t.IsValid && !t.IsInvulnerable).Count() >= 3)
                    {
                        Q.Cast(m);
                        break;
                    }
                }
            }/*
              * if (Settings.UseW && W.IsReady())
              * {
              * var minions = EntityManager.MinionsAndMonsters.EnemyMinions.Where(t => t.IsEnemy && !t.IsDead && t.IsValid && !t.IsInvulnerable && t.IsInRange(Player.Instance.Position, W.Range));
              * if (minions.Count() > 3)
              * {
              *     W.Cast();
              * }
              * }*/
        }
Exemplo n.º 6
0
        public override void Execute()
        {
            if (Settings.Mana >= Player.Instance.ManaPercent)
            {
                return;
            }

            if (Settings.UseQ && Q.IsReady())
            {
                var target = TargetSelector.GetTarget(Q.Range, DamageType.Physical);
                if (target != null)
                {
                    Q.Cast(target);
                }
            }
            if (Settings.UseQ && Q.IsReady())
            {
                var target = TargetSelector.GetTarget(Q1.Range, DamageType.Physical);
                if (target != null && Q1.GetPrediction(target).HitChance >= HitChance.Medium)
                {
                    SpellManager.castQ1(target);
                }
            }
            if (Settings.UseE && Settings.UseQ && Q.IsReady() && E.IsReady())
            {
                var target = TargetSelector.GetTarget(Q.Range + E.Range, DamageType.Physical);
                if (target != null)
                {
                    SpellManager.dashToQ1(target);
                }
            }
        }
Exemplo n.º 7
0
        private static void AutoSpells(EventArgs args)
        {
            //E
            Edetonation();
            //R
            Actives();
            if (Config.Item("semi-ult").GetValue <KeyBind>().Active)
            {
                var target = TargetSelector.GetTarget(R1.Range, TargetSelector.DamageType.Magical);
                if (target == null || !target.IsValid)
                {
                    return;
                }
                if (R1.IsReady())
                {
                    SpellCast(target, R1.Range, R1, false, 1, false, PredR("prediction.R"));
                }
            }
            if (Config.Item("semi-w").GetValue <KeyBind>().Active)
            {
                var ally = HeroManager.Allies.Where(a => a.IsValid && !a.IsMinion && !a.IsMe).OrderBy(a => a.Distance(Game.CursorPosRaw)).FirstOrDefault();
                if (W1.IsReady())
                {
                    W1.Cast(ally);
                }
            }

            if (Q1.IsReady() && Config.Item("autospells.Q.cc").GetValue <bool>())
            {
                var target = TargetSelector.GetTarget(Q1.Range, TargetSelector.DamageType.Magical);
                if (target == null || !target.IsValid)
                {
                    return;
                }
                var cc = target.HasBuffOfType(BuffType.Snare) ||
                         target.HasBuffOfType(BuffType.Suppression) ||
                         target.HasBuffOfType(BuffType.Taunt) ||
                         target.HasBuffOfType(BuffType.Stun) ||
                         target.HasBuffOfType(BuffType.Charm) ||
                         target.HasBuffOfType(BuffType.Fear);
            }

            if (Q1.IsReady() && Config.Item("autospells.Q.collision").GetValue <bool>())
            {
                var enemies = HeroManager.Enemies.Where(e => e.IsValidTarget(Q1.Range));
                foreach (var enemy in enemies)
                {
                    if (enemy == null)
                    {
                        return;
                    }
                    var collisionobjects = Q1.GetPrediction(enemy).CollisionObjects.Where(c => c.IsEnemy && !c.IsMinion);
                    if (collisionobjects.Count() == 1)
                    {
                        Q1.Cast(enemy);
                    }
                }
            }
        }
Exemplo n.º 8
0
        private void LogicQ()
        {
            var t  = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Physical);
            var t1 = TargetSelector.GetTarget(Q1.Range, TargetSelector.DamageType.Physical);

            if (t.IsValidTarget(Q.Range) && Player.Distance(t.ServerPosition) > 500)
            {
                if (Q.GetDamage(t) + Player.GetAutoAttackDamage(t) > t.Health)
                {
                    Q.Cast(t);
                }
                else if (Q.GetDamage(t) + Player.GetAutoAttackDamage(t) * 3 > t.Health)
                {
                    Q.Cast(t);
                }
                else if (Program.Combo && Player.Mana > RMANA + QMANA + WMANA)
                {
                    Q.Cast(t);
                }
                else if (Program.Farm && Player.Mana > RMANA + QMANA + EMANA + WMANA)
                {
                    Q.Cast(t);
                }
            }
            else if (t1.IsValidTarget(Q1.Range) && Config.Item("harasQ").GetValue <bool>() && Player.Distance(t1.ServerPosition) > Q.Range + 50)
            {
                var poutput = Q1.GetPrediction(t1);
                var col     = poutput.CollisionObjects;
                if (col.Count() == 0)
                {
                    return;
                }

                var minionQ = col.Last();
                if (minionQ.IsValidTarget(Q.Range))
                {
                    if (Config.Item("killQ").GetValue <bool>() && Q.GetDamage(minionQ) > minionQ.Health - minionQ.GetAutoAttackDamage(minionQ) * 2)
                    {
                        return;
                    }
                    if (minionQ.Distance(Player.Position) > 400 && minionQ.Distance(poutput.CastPosition) < 380 && minionQ.Distance(t1.Position) < 380 && minionQ.Distance(poutput.CastPosition) > 150)
                    {
                        if (Q.GetDamage(t1) + Player.GetAutoAttackDamage(t1) > t1.Health)
                        {
                            Q.Cast(col.Last());
                        }
                        else if (Program.Combo && Player.Mana > RMANA + QMANA + WMANA)
                        {
                            Q.Cast(col.Last());
                        }
                        else if (Program.Farm && Player.Mana > RMANA + QMANA + EMANA + WMANA + QMANA)
                        {
                            Q.Cast(col.Last());
                        }
                    }
                }
            }
        }
Exemplo n.º 9
0
        public override void Harass()
        {
            foreach (var spell in SpellList.Where(s => s.IsReady() && HarassMenu.CheckBoxValue(s.Slot) &&
                                                  s != R))
            {
                var target = Pix != null
                    ? TargetSelector.GetTarget(E.Range + Q.Range, DamageType.Magical)
                    : TargetSelector.GetTarget(Q.Range, DamageType.Magical);

                if (target == null)
                {
                    return;
                }

                var qPredPlayer = Q.GetPrediction(target);
                var qPredPix    = Q1.GetPrediction(target);

                if (spell.Slot == SpellSlot.Q)
                {
                    foreach (
                        var enemy in
                        from enemy in EntityManager.Heroes.Enemies.Where(e => e.IsKillable(E.Range + Q.Range))
                        let qPredPlayer1 = Q.GetPrediction(enemy)
                                           let qPredPix1 = Q1.GetPrediction(enemy)
                                                           where qPredPlayer1.HitChance >= HitChance.Medium && qPredPix1.HitChance >= HitChance.Medium
                                                           select enemy)
                    {
                        Q.Cast(enemy);
                    }

                    if (qPredPlayer.HitChance >= HitChance.Medium || qPredPix.HitChance >= HitChance.Medium)
                    {
                        Q.Cast(target);
                    }
                }
                if (spell.Slot == SpellSlot.W)
                {
                    {
                        if (target.IsKillable(W.Range))
                        {
                            W.Cast(target);
                        }
                    }
                }
                if (spell.Slot != SpellSlot.E)
                {
                    continue;
                }
                {
                    if (target.IsKillable(E.Range))
                    {
                        E.Cast(target);
                    }
                }
            }
        }
Exemplo n.º 10
0
        private static void CastQ(AIBaseClient t)
        {
            var poutput = Q1.GetPrediction(t);
            var col     = poutput.CollisionObjects.Count(ColObj => !ColObj.IsAlly && ColObj.IsMinion() && !ColObj.IsDead);

            if (col < 4 && poutput.Hitchance >= HitChance.VeryHigh)
            {
                Q.Cast(poutput.CastPosition);
            }
        }
Exemplo n.º 11
0
        private void CastQ(Obj_AI_Base t)
        {
            var poutput = Q1.GetPrediction(t);
            var col     = poutput.CollisionObjects.Count(ColObj => ColObj.IsEnemy && ColObj.IsMinion && !ColObj.IsDead);

            if (col < 4)
            {
                Program.CastSpell(Q, t);
            }
        }
Exemplo n.º 12
0
        public void farm()
        {
            if (Program.LaneClear && Player.Mana > RMANA + QMANA)
            {
                var mobs = Cache.GetMinions(Player.ServerPosition, Q.Range, MinionTeam.Neutral);
                if (mobs.Count > 0)
                {
                    var mob = mobs[0];
                    if (Q.IsReady())
                    {
                        Q.Cast(mob);
                        return;
                    }

                    if (W.IsReady())
                    {
                        W.Cast(mob);
                        return;
                    }
                }

                if (FarmSpells)
                {
                    if (Q.IsReady() && Config.Item("farmQ", true).GetValue <bool>())
                    {
                        var minions = Cache.GetMinions(Player.ServerPosition, Q1.Range);
                        foreach (var minion in minions)
                        {
                            var poutput = Q1.GetPrediction(minion);
                            var col     = poutput.CollisionObjects;

                            if (col.Count() > 2)
                            {
                                var minionQ = col.First();
                                if (minionQ.IsValidTarget(Q.Range))
                                {
                                    Q.Cast(minion);
                                    return;
                                }
                            }
                        }
                    }
                    if (W.IsReady() && Config.Item("farmW", true).GetValue <bool>())
                    {
                        var minions = Cache.GetMinions(Player.ServerPosition, Q1.Range);
                        var Wfarm   = W.GetCircularFarmLocation(minions, 150);
                        if (Wfarm.MinionsHit > 3)
                        {
                            W.Cast(Wfarm.Position);
                        }
                    }
                }
            }
        }
Exemplo n.º 13
0
        public void farm()
        {
            if (LaneClear && Player.Mana > RMANA + QMANA)
            {
                var mobs = Cache.GetMinions(Player.PreviousPosition, Q.Range, SebbyLib.MinionTeam.Neutral);
                if (mobs.Count > 0)
                {
                    var mob = mobs[0];
                    if (Q.IsReady())
                    {
                        Q.Cast(mob);
                        return;
                    }

                    if (W.IsReady())
                    {
                        W.Cast(mob);
                        return;
                    }
                }

                if (LaneClear)
                {
                    if (Q.IsReady() && Config[Player.CharacterName]["farm"].GetValue <MenuBool>("farmQ").Enabled)
                    {
                        var minions = Cache.GetMinions(Player.PreviousPosition, Q1.Range);
                        foreach (var minion in minions)
                        {
                            var poutput = Q1.GetPrediction(minion);
                            var col     = poutput.CollisionObjects;

                            if (col.Count() > 2)
                            {
                                var minionQ = col.First();
                                if (minionQ.IsValidTarget(Q.Range))
                                {
                                    Q.Cast(minion);
                                    return;
                                }
                            }
                        }
                    }
                    if (W.IsReady() && Config[Player.CharacterName]["farm"].GetValue <MenuBool>("farmW").Enabled)
                    {
                        var minions = Cache.GetMinions(Player.PreviousPosition, Q1.Range);
                        var Wfarm   = W.GetCircularFarmLocation(minions, 150);
                        if (Wfarm.MinionsHit > 3)
                        {
                            W.Cast(Wfarm.Position);
                        }
                    }
                }
            }
        }
Exemplo n.º 14
0
        public static void farm()
        {
            if (Program.LaneClear && Player.Mana > RMANA + QMANA)
            {
                var mobs = Cache.GetMinions(Player.ServerPosition, Q.Range, MinionTeam.Neutral);
                if (mobs.Count > 0)
                {
                    var mob = mobs[0];
                    if (Q.IsReady())
                    {
                        Q.Cast(mob);
                        return;
                    }

                    if (W.IsReady())
                    {
                        W.Cast(mob);
                        return;
                    }
                }

                if (Player.ManaPercent > getSliderItem(farmMenu, "Mana"))
                {
                    if (Q.IsReady() && getCheckBoxItem(farmMenu, "farmQ"))
                    {
                        var minions = Cache.GetMinions(Player.ServerPosition, Q1.Range);
                        foreach (var minion in minions)
                        {
                            var poutput = Q1.GetPrediction(minion);
                            var col     = poutput.CollisionObjects;

                            if (col.Count() > 2)
                            {
                                var minionQ = col.First();
                                if (minionQ.LSIsValidTarget(Q.Range))
                                {
                                    Q.Cast(minion);
                                    return;
                                }
                            }
                        }
                    }
                    if (W.IsReady() && getCheckBoxItem(farmMenu, "farmW"))
                    {
                        var minions = Cache.GetMinions(Player.ServerPosition, Q1.Range);
                        var Wfarm   = W.GetCircularFarmLocation(minions, 150);
                        if (Wfarm.MinionsHit > 3)
                        {
                            W.Cast(Wfarm.Position);
                        }
                    }
                }
            }
        }
Exemplo n.º 15
0
        public void farm()
        {
            if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear)
            {
                var mobs = MinionManager.GetMinions(ObjectManager.Player.ServerPosition, Q.Range, MinionTypes.All, MinionTeam.Neutral, MinionOrderTypes.MaxHealth);
                if (mobs.Count > 0 && Player.Mana > RMANA + WMANA + EMANA + QMANA)
                {
                    var mob = mobs[0];
                    if (Q.IsReady() && Config.Item("farmQ", true).GetValue <bool>())
                    {
                        Q.Cast(mob);
                        return;
                    }

                    if (W.IsReady() && Config.Item("farmW", true).GetValue <bool>())
                    {
                        W.Cast(mob);
                        return;
                    }
                }

                if (Player.ManaPercent > Config.Item("Mana", true).GetValue <Slider>().Value)
                {
                    var minions = MinionManager.GetMinions(Player.ServerPosition, Q1.Range, MinionTypes.All, MinionTeam.Enemy, MinionOrderTypes.MaxHealth);
                    if (Q.IsReady() && Config.Item("farmQ", true).GetValue <bool>())
                    {
                        foreach (var minion in minions)
                        {
                            var poutput = Q1.GetPrediction(minion);
                            var col     = poutput.CollisionObjects;

                            if (col.Count() > 2)
                            {
                                var minionQ = col.First();
                                if (minionQ.IsValidTarget(Q.Range))
                                {
                                    Q.Cast(minion);
                                    return;
                                }
                            }
                        }
                    }
                    if (W.IsReady() && Config.Item("farmW", true).GetValue <bool>())
                    {
                        var Wfarm = W.GetCircularFarmLocation(minions, 150);
                        if (Wfarm.MinionsHit > 3)
                        {
                            W.Cast(Wfarm.Position);
                        }
                    }
                }
            }
        }
Exemplo n.º 16
0
        private static void OnGapcloser(AIHeroClient sender, Gapcloser.GapcloserArgs args)
        {
            if (sender.IsEnemy && !sender.IsDead && !myhero.IsDead && args.EndPosition.DistanceToPlayer() < Q1.Range && Q1.IsReady())
            {
                //Q1.CastIfHitchanceEquals(sender, HitChance.Dash, true);
                var pred = Q1.GetPrediction(sender);

                if (pred.Hitchance == HitChance.Dash)
                {
                    Q1.Cast(pred.CastPosition);
                }
            }
        }
Exemplo n.º 17
0
        public static void CastExtendedQ()
        {
            var target = TargetSelector.SelectedTarget != null &&
                         TargetSelector.SelectedTarget.Distance(PlayerInstance) < 2000
                ? TargetSelector.SelectedTarget
                : TargetSelector.GetTarget(Q1.Range, DamageType.Physical);

            if (!target.IsValidTarget(Q1.Range))
            {
                return;
            }

            var predPos = Q1.GetPrediction(target);
            var minions =
                EntityManager.MinionsAndMonsters.EnemyMinions.Where(m => m.Distance(PlayerInstance) <= Q.Range);
            var champs   = EntityManager.Heroes.Enemies.Where(m => m.Distance(PlayerInstance) <= Q.Range);
            var monsters =
                EntityManager.MinionsAndMonsters.Monsters.Where(m => m.Distance(PlayerInstance) <= Q.Range);
            {
                foreach (var minion in from minion in minions
                         let polygon = new Geometry.Polygon.Rectangle(
                             (Vector2)PlayerInstance.ServerPosition,
                             PlayerInstance.ServerPosition.Extend(minion.ServerPosition, Q1.Range), 65f)
                                       where polygon.IsInside(predPos.CastPosition)
                                       select minion)
                {
                    Q.Cast(minion);
                }

                foreach (var champ in from champ in champs
                         let polygon = new Geometry.Polygon.Rectangle(
                             (Vector2)PlayerInstance.ServerPosition,
                             PlayerInstance.ServerPosition.Extend(champ.ServerPosition, Q1.Range), 65f)
                                       where polygon.IsInside(predPos.CastPosition)
                                       select champ)
                {
                    Q.Cast(champ);
                }

                foreach (var monster in from monster in monsters
                         let polygon = new Geometry.Polygon.Rectangle(
                             (Vector2)PlayerInstance.ServerPosition,
                             PlayerInstance.ServerPosition.Extend(monster.ServerPosition, Q1.Range), 65f)
                                       where polygon.IsInside(predPos.CastPosition)
                                       select monster)
                {
                    Q.Cast(monster);
                }
            }
        }
Exemplo n.º 18
0
        private static void Edetonation()
        {
            var target = TargetSelector.GetTarget(R1.Range, TargetSelector.DamageType.Magical);

            if (target != null)
            {
                if (Lux_E == null)
                {
                    return;
                }
                var rooted = target.HasBuff("LuxLightBindingMis");
                var debuff = target.HasBuff("luxilluminatingfraulein");

                var qcollision = Q1.GetCollision(player.Position.To2D(), new List <Vector2> {
                    Q1.GetPrediction(target).CastPosition.To2D()
                });
                var minioncol = qcollision.Where(x => (x is AIHeroClient) && x.IsEnemy).Count();

                //Lux E detonation (Object Bounding Radius)
                if (Lux_E != null && rooted && target.Distance(player.Position) <=
                    Orbwalking.GetRealAutoAttackRange(player) && target.Health > E1.GetDamage(target) && debuff)
                {
                    Printchat("[E] Detonation Blocked. Reason: AA-able");
                    return;
                }

                if (Lux_E != null && rooted && target.Distance(player.Position) <=
                    Orbwalking.GetRealAutoAttackRange(player) + 300 && target.Health > E1.GetDamage(target) && debuff && target.CountEnemiesInRange(600) <= 1)
                {
                    Printchat("[E] Detonation Blocked. Reason: AA-able");
                    return;
                }

                if (Lux_E != null && Lux_E.Position.CountEnemiesInRange(E1.Width) >= 1)
                {
                    E1.Cast();
                    Printchat("[E] Toggle Cast. Reason: Enemy Detected");
                }
            }

            else if (Lux_E != null && Lux_E.Position.CountEnemiesInRange(E1.Width) >= 1)
            {
                E1.Cast();
                Printchat("[E] Toggle Cast. Reason: Enemy Detected");
            }
        }
Exemplo n.º 19
0
 private static void AutoUseQ()
 {
     if (Q.IsReady() && AutoQ && Player.ManaPercent > MinMana)
     {
         var extarget = TargetSelector.GetTarget(Q1.Range, DamageType.Physical);
         var Minions  = MinionManager.GetMinions(Q.Range);
         foreach (var Minion in Minions)
         {
             var QHit  = new Geometry.Polygon.Rectangle(Player.Position, Player.Position.LSExtend(Minion.Position, Q1.Range), Q1.Width);
             var QPred = Q1.GetPrediction(extarget);
             if (!QHit.IsOutside(QPred.UnitPosition.LSTo2D()) && QPred.Hitchance == HitChance.High)
             {
                 Q.Cast(Minion);
                 break;
             }
         }
     }
 }
Exemplo n.º 20
0
        /// <summary>
        /// Quick and Easy Spellcasts params for Lux
        /// </summary>
        /// <param name="target"></param> Which unit should we cast spells on
        /// <param name="range"></param> Range check for targets
        /// <param name="spellslot"></param> Which spellslot
        /// <param name="collision"></param> Collision Check for Q usage
        /// <param name="count"></param>  Only use said ability if it can hit X amount of enemies
        /// <param name="objectcheck"></param> Objectcheck for E usage
        public static void SpellCast(AIHeroClient target, float range, Spell spell, bool collision, byte count, bool objectcheck, HitChance Hitchance)
        {
            var CastPosition = Prediction.GetPrediction(target, 0.25f);

            if (spell.IsReady() && target.IsValidTarget(range) && CastPosition.Hitchance >= Hitchance && !collision && !objectcheck)
            {
                spell.Cast(target);
            }

            if (spell.IsReady() && target.IsValidTarget(range) && collision && CastPosition.Hitchance >= Hitchance &&
                Q1.GetPrediction(target).CollisionObjects.Count() <= 1 && !objectcheck)
            {
                spell.Cast(target);
            }

            if (Lux_E == null && spell.IsReady() && objectcheck && target.IsValidTarget(E1.Range) && CastPosition.Hitchance >= Hitchance && !collision)
            {
                spell.Cast(target);
            }
        }
Exemplo n.º 21
0
        private static void Harass()
        {
            if (Player.ManaPercent < HMinMana)
            {
                return;
            }

            if (Q.IsReady() && HEXQ)
            {
                var target  = TargetSelector.GetTarget(Q1.Range);
                var Minions = GameObjects.GetMinions(Q.Range);
                foreach (var Minion in Minions)
                {
                    var QHit  = new Geometry.Rectangle(Player.Position, Player.Position.Extend(Minion.Position, Q1.Range), Q1.Width);
                    var QPred = Q1.GetPrediction(target);
                    if (!QHit.IsOutside(QPred.UnitPosition.ToVector2()) && QPred.Hitchance == HitChance.High)
                    {
                        Q.Cast(Minion);
                        break;
                    }
                }
            }
        }
Exemplo n.º 22
0
        private static void Harass()
        {
            if (Player.ManaPercent < HMinMana)
            {
                return;
            }

            if (Q.IsReady() && HEXQ)
            {
                var target  = TargetSelector.GetTarget(Q1.Range, TargetSelector.DamageType.Physical);
                var Minions = MinionManager.GetMinions(Q.Range);
                foreach (var Minion in Minions)
                {
                    var QHit  = new LeagueSharp.Common.Geometry.Polygon.Rectangle(Player.Position, Player.Position.Extend(Minion.Position, Q1.Range).To3DWorld(), Q1.Width);
                    var QPred = Q1.GetPrediction(target);
                    if (!QHit.IsOutside(QPred.UnitPosition.To2D()) && QPred.Hitchance == HitChance.High)
                    {
                        Q.Cast(Minion);
                        break;
                    }
                }
            }
        }
Exemplo n.º 23
0
        static void LaneClear()
        {
            if (Player.ManaPercent < LMinMana)
            {
                return;
            }

            if (Q.IsReady() && LHQ)
            {
                var extarget = TargetSelector.GetTarget(Q1.Range, TargetSelector.DamageType.Physical);
                var Minions  = MinionManager.GetMinions(Q.Range);
                foreach (var Minion in Minions)
                {
                    var QHit  = new Geometry.Polygon.Rectangle(Player.Position, Player.Position.Extend(Minion.Position, Q1.Range), Q1.Width);
                    var QPred = Q1.GetPrediction(extarget);
                    if (!QHit.IsOutside(QPred.UnitPosition.To2D()) && QPred.Hitchance == HitChance.High)
                    {
                        Q.Cast(Minion);
                        break;
                    }
                }
            }
        }
Exemplo n.º 24
0
        public override void Execute()
        {
            if (Settings.mana >= Player.Instance.ManaPercent)
            {
                return;
            }
            if (Settings.UseQ && Q.IsReady())
            {
                var minions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Player.Instance.Position, Q.Range).Where(t => !t.IsDead && t.IsValid && !t.IsInvulnerable);
                foreach (var m in minions)
                {
                    if (Q1.GetPrediction(m).CollisionObjects.Where(t => t.IsEnemy && !t.IsDead && t.IsValid && !t.IsInvulnerable).Count() >= minions.Count() - 1)
                    {
                        Q.Cast(m);
                        break;
                    }
                }
            }
            if (Settings.UseE && E.IsReady())
            {
                var minions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Player.Instance.Position, Q.Range).Where(t => !t.IsDead && t.IsValid && !t.IsInvulnerable);
                if (minions.Count() > 1)
                {
                    E.Cast(Game.CursorPos);
                }
            }

            /*
             * if (Settings.UseW && W.IsReady())
             * {
             *  var minions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Player.Instance.Position, W.Range).Where(t => !t.IsDead && t.IsValid && !t.IsInvulnerable);
             *  if (minions.Count() > 0)
             *  {
             *      W.Cast(minions.First());
             *  }
             * }*/
        }
Exemplo n.º 25
0
        public static void SpellCastR(AIHeroClient target)
        {
            if (target == null)
            {
                return;
            }
            if (!target.IsValid)
            {
                return;
            }
            var rslider = Config.Item("combo.r.slider").GetValue <Slider>().Value;

            #region variables/floats
            //[R] Combo Sequences
            double qdmg = Q1.GetDamage(target);
            double edmg = E1.GetDamage(target);
            double rdmg = R1.GetDamage(target);
            double aa   = Player.GetAutoAttackDamage(target);
            Ignite = player.GetSpellSlot("summonerdot");
            var insideE = Lux_E != null && target.Distance(Lux_E.Position) < E1.Width;
            var thp     = target.Health;
            var AArange = Orbwalking.GetRealAutoAttackRange(player);

            var debuff = target.HasBuff("luxilluminatingfraulein");

            if (debuff)
            {
                rdmg += PassiveDMG(target);
            }
            if (debuff)
            {
                aa += PassiveDMG(target);
            }
            if (insideE)
            {
                rdmg += edmg;
            }

            var qcollision = Q1.GetCollision(player.Position.To2D(), new List <Vector2> {
                Q1.GetPrediction(target).CastPosition.To2D()
            });
            var minioncol = qcollision.Where(x => (x is AIHeroClient) && x.IsEnemy).Count();
            var qpred     = Q1.GetPrediction(target).Hitchance >= HitChance.High;
            var epred     = E1.GetPrediction(target).Hitchance >= HitChance.High;

            var rooted = target.HasBuff("LuxLightBindingMis");


            if (target.Distance(player.Position) < rslider && !rooted)
            {
                return;
            }


            #endregion
            if (insideE && Lux_E != null)
            {
                return;
            }

            //Checks if Allies can kill the bitch
            if (AllyCheck(target, 600) >= 2 && target.Health < rdmg / 2)
            {
                return;
            }
            //Checks if an Ally can kill le bitch
            if (AllyCheck(target, 600) >= 1 && target.Health < rdmg / 2)
            {
                return;
            }

            if (rooted && insideE && rdmg + edmg > thp && target.IsValidTarget(R1.Range))
            {
                SpellCast(target, R1.Range, R1, false, 1, false, PredR("prediction.R"));
            }

            if (E1.IsReady() && thp < edmg && target.IsValidTarget(E1.Range) && epred)
            {
                return;
            }

            if (Q1.IsReady() && thp < qdmg && target.IsValidTarget(Q1.Range) && minioncol <= 1 && qpred)
            {
                return;
            }

            if (insideE && thp < edmg)
            {
                return;
            }

            if (insideE && thp < edmg + aa && target.IsValidTarget(AArange))
            {
                return;
            }

            if (thp < aa && target.IsValidTarget(AArange))
            {
                return;
            }

            if (thp < edmg && E1.IsReady() && rooted && target.IsValidTarget(E1.Range))
            {
                return;
            }

            if (Q1.IsReady() && !E1.IsReady() && thp < qdmg && target.IsValidTarget(Q1.Range) && minioncol <= 1 && qpred)
            {
                return;
            }

            if (E1.IsReady() && !Q1.IsReady() && thp < edmg && target.IsValidTarget(E1.Range) && epred)
            {
                return;
            }

            if (rooted && debuff && thp < aa && target.IsValidTarget(AArange))
            {
                return;
            }

            if (Environment.TickCount - E1.LastCastAttemptT < 100 || Environment.TickCount - Q1.LastCastAttemptT < 800 && !rooted)
            {
                return;
            }

            if (rooted && insideE && thp < rdmg + edmg && target.IsValidTarget(R1.Range))
            {
                SpellCast(target, R1.Range, R1, false, 1, false, PredR("prediction.R"));
            }

            if (rooted && E1.IsReady() && target.IsValidTarget(E1.Range) && thp < rdmg + edmg && target.IsValidTarget(R1.Range))
            {
                SpellCast(target, R1.Range, R1, false, 1, false, PredR("prediction.R"));
            }

            if (rooted && debuff && thp < rdmg + aa && target.IsValidTarget(AArange))
            {
                SpellCast(target, R1.Range, R1, false, 1, false, PredR("prediction.R"));
            }

            if (rooted && debuff && thp < rdmg && target.IsValidTarget(R1.Range))
            {
                SpellCast(target, R1.Range, R1, false, 1, false, PredR("prediction.R"));
            }

            if (thp < rdmg)
            {
                SpellCast(target, R1.Range, R1, false, 1, false, PredR("prediction.R"));
            }
        }
Exemplo n.º 26
0
        public static void Routine()
        {
            var targetR = TargetSelector.GetTarget(R1.Range, TargetSelector.DamageType.Magical);
            var target  = TargetSelector.GetTarget(Q1.Range, TargetSelector.DamageType.Magical);

            if (target == null || !target.IsValid || targetR == null || !targetR.IsValid)
            {
                return;
            }

            Ignite = player.GetSpellSlot("summonerdot");

            //[R] Aoe Cast
            byte hitcount;

            hitcount = (byte)Config.Item("advanced.R.aoe.count").GetValue <Slider>().Value;

            if (Config.Item("advanced.R.aoe").GetValue <bool>() && R1.IsReady() && !E1.IsReady() && target.IsValidTarget(E1.Range + E1.Width))
            {
                R1.CastIfWillHit(target, hitcount);
            }

            #region -- Variables/Floats etc.
            float qdmg    = Q1.GetDamage(target);
            float edmg    = E1.GetDamage(target);
            float rdmg    = R1.GetDamage(target);
            float aa      = (float)Player.GetAutoAttackDamage(target);
            var   insideE = Lux_E != null && target.Distance(Lux_E.Position) <= E1.Width;
            var   thp     = target.Health;
            var   AArange = Orbwalking.GetRealAutoAttackRange(player);
            var   debuff  = target.HasBuff("luxilluminatingfraulein");
            if (debuff)
            {
                rdmg += PassiveDMG(target);
            }
            if (debuff)
            {
                aa += PassiveDMG(target);
            }
            if (insideE)
            {
                rdmg += edmg;
            }
            var rooted = target.HasBuff("LuxLightBindingMis");
            #endregion


            if (insideE && thp < edmg && target.IsValidTarget(R1.Range))
            {
                return;
            }

            if (rooted && insideE && rdmg + edmg > thp && target.IsValidTarget(R1.Range))
            {
                SpellCastR(targetR);
            }

            #region -- Q spellcast

            var prediction = Q1.GetPrediction(target, true);
            var collision  = Q1.GetCollision(Player.Position.To2D(), new List <Vector2> {
                prediction.UnitPosition.To2D()
            });
            if (Config.Item("combo.Q").GetValue <bool>() &&
                Environment.TickCount - E1.LastCastAttemptT > 400 && Environment.TickCount - R1.LastCastAttemptT > 800 && prediction.Hitchance >= PredQ("prediction.Q"))
            {
                if (collision.Count == 2)
                {
                    if (collision[0].IsChampion() || collision[1].IsChampion())
                    {
                        Q1.Cast(prediction.CastPosition);
                    }
                }
                else if (collision.Count == 1 && collision[0].IsChampion())
                {
                    Q1.Cast(prediction.CastPosition);
                }
                else if (collision.Count <= 1)
                {
                    Q1.Cast(prediction.CastPosition);
                }
                #endregion -- Q spellcast end


                if (rooted && thp < aa && target.IsValidTarget(AArange))
                {
                    return;
                }

                if (Config.Item("combo.E").GetValue <bool>() && Environment.TickCount - Q1.LastCastAttemptT > 875 && Environment.TickCount - R1.LastCastAttemptT > 800)
                {
                    SpellCast(target, E1.Range, E1, false, 1, true, PredE("prediction.E"));
                }

                if (IgniteKillCheck() < thp && target.HasBuff("summonerdot"))
                {
                    return;
                }

                if (Config.Item("combo.R").GetValue <bool>() && R1.IsReady())
                {
                    SpellCastR(targetR);
                }

                if (!target.IsValidTarget(600))
                {
                    return;
                }

                var ignitemenu = Config.Item("autospells.ignite").GetValue <bool>();

                if (thp > IgniteDamage(target) && thp < IgniteDamage(target) + edmg + aa && rooted && E1.IsReady() && target.IsValidTarget(600) && Ignite.IsReady() && ignitemenu)
                {
                    player.Spellbook.CastSpell(Ignite, target);
                    Printchat("Ignite casted");
                }

                if (thp < IgniteDamage(target) + rdmg + aa && rooted && Ignite.IsReady() && R1.IsReady() && ignitemenu)
                {
                    player.Spellbook.CastSpell(Ignite, target);
                    Printchat("Ignite casted");
                }

                if (thp < IgniteDamage(target) + rdmg + aa && Ignite.IsReady() && R1.IsReady() && ignitemenu)
                {
                    player.Spellbook.CastSpell(Ignite, target);
                    Printchat("Ignite casted");
                }

                if (thp < IgniteDamage(target) && target.IsValidTarget(600) && AllyCheck(target, 600) < 1 && Ignite.IsReady() && ignitemenu)
                {
                    player.Spellbook.CastSpell(Ignite, target);
                    Printchat("Ignite casted");
                }
            }
        }
Exemplo n.º 27
0
        static void Combo()
        {
            var target = TargetSelector.GetTarget(1200f, DamageType.Physical);

            if (target == null || myhero.HasBuff(RBuffName))
            {
                return;
            }

            if (!myhero.HasBuff(PassiveName) && target.InAARangeOf(myhero))
            {
                WaitforAA = true;
                return;
            }
            if (combo.check("CQ") && Q1.IsReady() && !(WaitforAA || LastAttackType == 1))
            {
                if (target.DistanceToPlayer() < Q2.Range)
                {
                    var pred = Q2.GetPrediction(target);

                    if (pred.Hitchance >= hitchance && Q2.Cast(pred.CastPosition))
                    {
                        LastAttackType = 1;
                        WaitforAA      = true;
                    }
                }
                else
                {
                    var pred = Q1.GetPrediction(target);

                    if (pred.Hitchance >= hitchance && Q1.Cast(pred.CastPosition, true))
                    {
                        WaitforAA      = true;
                        LastAttackType = 1;
                    }
                }
            }

            if (combo.check("CW") && W.IsReady() && (myhero.CountEnemies(W.Range - 10) >= slider(combo, "CWMIN") || (combo.check("CWS") && Q1.CooldownTime > 1f)) && !Q1.IsReady() && !E.IsReady() && GameObjects.EnemyHeroes.Any(x => x.IsFacing(myhero)))
            {
                //Game.Print(true);
                W.Cast();
                LastAttackType = 2;
                WaitforAA      = true;
            }

            if (combo.check("CE") && E.IsReady())
            {
                var closeenemyturret = GameObjects.EnemyTurrets.OrderByDescending(x => x.Distance(target)).FirstOrDefault().Position;
                if (combo.check("CEQ") && Q1.IsReady() && myhero.CountEnemies(E.Range) > 1)
                {
                    foreach (var enemy in GameObjects.EnemyHeroes.Where(x => x.DistanceToPlayer() < E.Range))
                    {
                        var pred = E.GetPrediction(enemy);

                        if (pred.AoeTargetsHitCount > 1)
                        {
                            E.Cast(enemy);
                            DelayAction.Add(50, delegate { Q1.Cast(); WaitforAA = true; });
                        }
                    }
                }
                else if (target.DistanceToPlayer() <= E.Range && combo.check("CES") && !WaitforAA && LastAttackType != 3 && (target.Distance(closeenemyturret) >= 850 || (myhero.HealthPercent > 40 || target.GetTotalSpelldamage() > target.Health)) /*&& !(Q1.IsReady() && !WaitforAA && LastAttackType != 3) *//*!((Q1.IsReady() && LastAttackType != 1 && target.DistanceToPlayer() < Q1.Range) || !(WaitforAA && target.InAARangeOf(myhero)))*/)
                {
                    //Game.Print(true);
                    E.Cast(target);
                    LastAttackType = 3;
                    WaitforAA      = true;
                }
                else if (combo.check("CEG") && !target.InAARangeOf(myhero) && !target.IsFacing(myhero) && myhero.IsFacing(target) && !GameObjects.AllyHeroes.Any(x => target.InAARangeOf(x)))
                {
                    var closerminion = GameObjects.Minions.Where(x => myhero.Position.Extend(x.Position, 650f).Distance(target) < myhero.Distance(target) && x.Distance(target) < 500).OrderBy(x => x.Distance(target)).FirstOrDefault();
                    if (closerminion != null)
                    {
                        E.Cast(closerminion);
                    }
                }
            }

            if (combo.check("CR") && R.IsReady() && myhero.CountEnemies(R.Range - 100) > 0)
            {
                R.Cast();
                LastAttackType = 4;
            }

            if (combo.check("CIGN") && ignite != null && ignite.CanCast(target) && ((target.Health <= myhero.GetSummonerSpellDamage(target, SummonerSpell.Ignite) && myhero.Distance(target) < 400 && !GameObjects.AllyHeroes.Any(x => target.InAARangeOf(x))) ||
                                                                                    (target.HealthPercent > 5 && GameObjects.AllyHeroes.Count(x => x != myhero && target.InAARangeOf(x) && x.IsFacing(target)) > 0)))
            {
                ignite.Cast(target, true);
            }
        }
Exemplo n.º 28
0
        private void LogicQ()
        {
            var t  = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Physical);
            var t1 = TargetSelector.GetTarget(Q1.Range, TargetSelector.DamageType.Physical);

            if (t.IsValidTarget(Q.Range) && Player.Distance(t.ServerPosition) > 500)
            {
                var qDmg = OktwCommon.GetKsDamage(t, Q);
                if (qDmg + Player.GetAutoAttackDamage(t) > t.Health)
                {
                    Q.Cast(t);
                }
                else if (qDmg + Player.GetAutoAttackDamage(t) * 3 > t.Health)
                {
                    Q.Cast(t);
                }
                else if (Program.Combo && Player.Mana > RMANA + QMANA + WMANA)
                {
                    Q.Cast(t);
                }
                else if (Program.Farm && Player.Mana > RMANA + QMANA + EMANA + WMANA)
                {
                    Q.Cast(t);
                }
            }
            else if (t1.IsValidTarget(Q1.Range) && Config.Item("harasQ", true).GetValue <bool>() && Player.Distance(t1.ServerPosition) > Q.Range + 50)
            {
                if (Config.Item("qMinionMove", true).GetValue <bool>())
                {
                    var minions = MinionManager.GetMinions(Player.ServerPosition, Q1.Range);

                    if (minions.Exists(x => x.IsMoving))
                    {
                        return;
                    }
                }

                Q1.Width = Config.Item("qMinionWidth", true).GetValue <Slider>().Value;

                var poutput = Q1.GetPrediction(t1);
                var col     = poutput.CollisionObjects;
                if (col.Count() == 0)
                {
                    return;
                }

                var minionQ = col.Last();
                if (minionQ.IsValidTarget(Q.Range))
                {
                    if (Config.Item("killQ", true).GetValue <bool>() && Q.GetDamage(minionQ) < minionQ.Health)
                    {
                        return;
                    }
                    var minionToT = minionQ.Distance(t1.Position);
                    var minionToP = minionQ.Distance(poutput.CastPosition);
                    if (minionToP < 400 && minionToT < 420 && minionToT > 150 && minionToP > 200)
                    {
                        if (Q.GetDamage(t1) + Player.GetAutoAttackDamage(t1) > t1.Health)
                        {
                            Q.Cast(col.Last());
                        }
                        else if (Program.Combo && Player.Mana > RMANA + QMANA + WMANA)
                        {
                            Q.Cast(col.Last());
                        }
                        else if (Program.Farm && Player.Mana > RMANA + QMANA + EMANA + WMANA + QMANA)
                        {
                            Q.Cast(col.Last());
                        }
                    }
                }
            }
        }
Exemplo n.º 29
0
        private static void LogicQ()
        {
            var t  = TargetSelector.GetTarget(Q.Range, DamageType.Physical);
            var t1 = TargetSelector.GetTarget(Q1.Range, DamageType.Physical);

            if (t.IsValidTarget(Q.Range) && Player.Distance(t.ServerPosition) > 500)
            {
                var qDmg = OktwCommon.GetKsDamage(t, Q);
                if (qDmg + Player.GetAutoAttackDamage(t) > t.Health)
                {
                    Q.Cast(t);
                }
                else if (qDmg + Player.GetAutoAttackDamage(t) * 3 > t.Health)
                {
                    Q.Cast(t);
                }
                else if (Program.Combo && Player.Mana > RMANA + QMANA + WMANA)
                {
                    Q.Cast(t);
                }
                else if (Program.Farm && Player.Mana > RMANA + QMANA + EMANA + WMANA)
                {
                    Q.Cast(t);
                }
            }
            else if (t1.IsValidTarget(Q1.Range) && getCheckBoxItem(qMenu, "harasQ") &&
                     Player.Distance(t1.ServerPosition) > Q.Range + 50)
            {
                if (getCheckBoxItem(qMenu, "qMinionMove"))
                {
                    var minions = Cache.GetMinions(Player.ServerPosition, Q1.Range);

                    if (minions.Exists(x => x.IsMoving))
                    {
                        return;
                    }
                }

                Q1.Width = getSliderItem(qMenu, "qMinionWidth");

                var poutput = Q1.GetPrediction(t1);
                var col     = poutput.CollisionObjects;
                if (!col.Any())
                {
                    return;
                }

                var minionQ = col.Last();
                if (minionQ.IsValidTarget(Q.Range))
                {
                    if (getCheckBoxItem(qMenu, "killQ") && Q.GetDamage(minionQ) < minionQ.Health)
                    {
                        return;
                    }
                    var minionToT = minionQ.Distance(t1.Position);
                    var minionToP = minionQ.Distance(poutput.CastPosition);
                    if (minionToP < 400 && minionToT < 420 && minionToT > 150 && minionToP > 200)
                    {
                        if (Q.GetDamage(t1) + Player.GetAutoAttackDamage(t1) > t1.Health)
                        {
                            Q.Cast(col.Last());
                        }
                        else if (Program.Combo && Player.Mana > RMANA + QMANA + WMANA)
                        {
                            Q.Cast(col.Last());
                        }
                        else if (Program.Farm && Player.Mana > RMANA + QMANA + EMANA + WMANA + QMANA)
                        {
                            Q.Cast(col.Last());
                        }
                    }
                }
            }
        }