Defines the criteria that an NPCAI can uses to select a single target from multiple.
Inheritance: ScriptableObject
Ejemplo n.º 1
0
        public static Obj_AI_Hero GetTarget(float range,
            TargetSelector.DamageType damageType,
            bool ignoreShield = true,
            IEnumerable<Obj_AI_Hero> ignoredChamps = null,
            Vector3? rangeCheckFrom = null)
        {
            if (_lastTarget == null || !_lastTarget.IsValidTarget() || _lastDamageType != damageType)
            {
                var newTarget = TargetSelector.GetTarget(range, damageType, ignoreShield, ignoredChamps, rangeCheckFrom);

                _lastTarget = newTarget;
                _lastDamageType = damageType;

                return newTarget;
            }

            if (_lastTarget.IsValidTarget(range) && damageType == _lastDamageType)
            {
                return _lastTarget;
            }

            var newTarget2 = TargetSelector.GetTarget(range, damageType, ignoreShield, ignoredChamps, rangeCheckFrom);

            _lastTarget = newTarget2;
            _lastDamageType = damageType;

            return newTarget2;
        }
Ejemplo n.º 2
0
 public Obj_AI_Hero Cast_BasicSkillshot_Enemy(Spell spell, TargetSelector.PriorityMode prio = TargetSelector.PriorityMode.AutoPriority, float extrarange = 0)
 {
     if(!spell.IsReady())
         return null;
     var target = TargetSelector.GetTarget(spell.Range, prio);
     if(target == null)
         return null;
     if (!target.IsValidTarget(spell.Range + extrarange) || spell.GetPrediction(target).Hitchance < HitChance.High)
         return null;
     spell.Cast(target, UsePackets());
     return target;
 }
Ejemplo n.º 3
0
 private DamageType ConvertDamageType(TargetSelector.DamageType type)
 {
     switch (type)
     {
         case TargetSelector.DamageType.Physical:
             return DamageType.Physical;
         case TargetSelector.DamageType.Magical:
             return DamageType.Magical;
         case TargetSelector.DamageType.True:
             return DamageType.True;
     }
     return DamageType.True;
 }
Ejemplo n.º 4
0
        public static IEnumerable<Targets> GenerateTargets(Card owningCard, 
      TargetSelector selector, IEnumerable<TargetingRule> rules, bool force = false, 
      object triggerMessage = null)
        {
            var activation = new ActivationContext(owningCard.Controller, owningCard, selector);
              activation.CanCancel = !force;
              activation.TriggerMessage = triggerMessage;

              foreach (var rule in rules)
              {
            rule.Process(activation);
              }

              foreach (var targetsCombination in activation.TargetsCombinations())
              {
            yield return targetsCombination.Targets;
              }

              yield break;
        }
Ejemplo n.º 5
0
        public static bool IsGoodTargetForSpell(
      ITarget target, 
      Card spell, 
      Player controller,
      TargetSelector selector, 
      IEnumerable<TargetingRule> rules)
        {
            var activation = new ActivationContext(controller, spell, selector);

              foreach (var rule in rules)
              {
            rule.Process(activation);
              }

              foreach (var targetsCombination in activation.TargetsCombinations())
              {
            if (targetsCombination.Targets.Effect.Contains(target))
              return true;
              }

              return false;
        }
Ejemplo n.º 6
0
        public SpellData(LeagueSharp.SpellSlot slot,
            TargetSelector.DamageType damageType,
            int type,
            string spellName,
            float delay,
            float radius,
            float range,
            int missileSpeed,
            Func<float> rangeFunc = null,
            Func<Obj_AI_Base, double> damage = null)
        {
            SpellName = spellName;
            Delay = delay;
            Radius = radius;
            Range = range;
            MissileSpeed = missileSpeed;
            Instance = new Spell(slot, range, damageType);

            switch (type)
            {
                case 1:
                    Instance.SetSkillshot(delay, radius, missileSpeed, false, SkillshotType.SkillshotLine);
                    break;
                case 2:
                    Instance.SetTargetted(delay, missileSpeed);
                    break;
                case 3:
                    Instance.SetSkillshot(delay, radius, missileSpeed, false, SkillshotType.SkillshotCircle);
                    break;
                case 4:
                    Instance.SetSkillshot(delay, radius, missileSpeed, false, SkillshotType.SkillshotCone);
                    break;
            }

            RangeFunc = rangeFunc;
            Damage = damage;
        }
Ejemplo n.º 7
0
        public override void Game_OnGameUpdate(EventArgs args)
        {
            if (Q.IsReady() && GetValue <KeyBind>("UseQTH").Active)
            {
                if (ObjectManager.Player.HasBuff("Recall"))
                {
                    return;
                }
                var t = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Physical);
                if (t != null)
                {
                    Q.Cast(t, false, true);
                }
            }

            if (GetValue <KeyBind>("CastR").Active&& R.IsReady())
            {
                var t = TargetSelector.GetTarget(R.Range, TargetSelector.DamageType.Physical);
                if (t.IsValidTarget())
                {
                    if (ObjectManager.Player.GetSpellDamage(t, SpellSlot.R) > t.Health && !t.IsZombie)
                    {
                        R.CastIfHitchanceEquals(t, HitChance.High, false);
                    }
                }
            }


            if ((!ComboActive && !HarassActive) || !Orbwalking.CanMove(100))
            {
                return;
            }
            var useQ = GetValue <bool>("UseQ" + (ComboActive ? "C" : "H"));
            var useW = GetValue <bool>("UseW" + (ComboActive ? "C" : "H"));
            var useR = GetValue <bool>("UseR" + (ComboActive ? "C" : "H"));

            if (Q.IsReady() && useQ)
            {
                var t = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Physical);
                if (t != null)
                {
                    Q.Cast(t, false, true);
                }
            }

            if (W.IsReady() && useW)
            {
                var t = TargetSelector.GetTarget(W.Range, TargetSelector.DamageType.Physical);
                if (t.IsValidTarget(W.Range) &&
                    (t.HasBuffOfType(BuffType.Stun) || t.HasBuffOfType(BuffType.Snare) ||
                     t.HasBuffOfType(BuffType.Taunt) || t.HasBuff("zhonyasringshield") ||
                     t.HasBuff("Recall")))
                {
                    W.Cast(t, false, true);
                }
            }

            if (R.IsReady() && useR)
            {
                foreach (
                    var hero in
                    ObjectManager.Get <Obj_AI_Hero>()
                    .Where(
                        hero =>
                        hero.IsValidTarget(R.Range) &&
                        ObjectManager.Player.GetSpellDamage(hero, SpellSlot.R, 1) - 20 > hero.Health))
                {
                    R.Cast(hero, false, true);
                }
            }
        }
Ejemplo n.º 8
0
        private static void Game_OnGameLoad(EventArgs args)
        {
            if (ObjectManager.Player.ChampionName != ChampionName)
            {
                return;
            }


            Q = new Spell(SpellSlot.Q, 520f);
            Q.SetTargetted(0.15f, float.MaxValue);
            SpellList.Add(Q);

            W = new Spell(SpellSlot.W);

            E = new Spell(SpellSlot.E, 500f);
            E.SetSkillshot(0.25f, 150f, float.MaxValue, false, SkillshotType.SkillshotLine);
            SpellList.Add(E);

            R = new Spell(SpellSlot.R);

            //Create the menu
            Config = new Menu("xQx | Shen", "Shen", true);
            //Config.AddItem(new MenuItem("Mode", "Play Style (WIP):").SetValue(new StringList(new[] {"Auto", "Fighter", "Protector"}, 1)));
            //Config.AddItem(new MenuItem("PC", "Choose Your PC for FPS Drop (WIP):").SetValue(new StringList(new[] { "Wooden PC", "Normal PC", "Monster!" }, 1)));

            var targetSelectorMenu = new Menu("Target Selector", "Target Selector");

            TargetSelector.AddToMenu(targetSelectorMenu);
            Config.AddSubMenu(targetSelectorMenu);

            Config.AddSubMenu(new Menu("Orbwalking", "Orbwalking"));
            Orbwalker = new Orbwalking.Orbwalker(Config.SubMenu("Orbwalking"));
            Orbwalker.SetAttack(true);
            new Utils();
            Enemies        = new Enemies();
            ChampionAllies = new Allies();
            UltiStatus     = new UltiStatus();



            // Combo
            Config.AddSubMenu(new Menu("Combo", "Combo"));
            {
                Config.SubMenu("Combo").AddItem(new MenuItem("ComboUseQ", "Use Q").SetValue(true));
                Config.SubMenu("Combo").AddItem(new MenuItem("ComboUseW", "Use W").SetValue(true));
                Config.SubMenu("Combo").AddItem(new MenuItem("ComboUseE", "Use E").SetValue(true));
                Config.SubMenu("Combo")
                .AddItem(
                    new MenuItem("ComboUseEF", "Use Flash + E").SetValue(new KeyBind("T".ToCharArray()[0],
                                                                                     KeyBindType.Press)));
                Config.SubMenu("Combo")
                .AddItem(
                    new MenuItem("ComboUseRK", "Use R | Confirm with this Key:").SetValue(
                        new KeyBind("U".ToCharArray()[0], KeyBindType.Press)));
            }

            /* [ Harass ] */
            Config.AddSubMenu(new Menu("Harass", "Harass"));
            {
                Config.SubMenu("Harass").AddItem(new MenuItem("HarassUseQ", "Use Q").SetValue(true));
                Config.SubMenu("Harass")
                .AddItem(
                    new MenuItem("HarassUseQT", "Use Q (Toggle)").SetValue(new KeyBind("T".ToCharArray()[0],
                                                                                       KeyBindType.Toggle)));
                Config.SubMenu("Harass")
                .AddItem(new MenuItem("HarassEnergy", "Min. Energy Percent: ").SetValue(new Slider(50, 100, 0)));
                Config.SubMenu("Harass")
                .AddItem(
                    new MenuItem("HarassActive", "Harass!").SetValue(new KeyBind("C".ToCharArray()[0],
                                                                                 KeyBindType.Press)));
            }

            /* [  Lane Clear ] */
            Config.AddSubMenu(new Menu("LaneClear", "LaneClear"));
            Config.SubMenu("LaneClear").AddItem(new MenuItem("LaneClearUseQ", "Use Q").SetValue(false));
            Config.SubMenu("LaneClear")
            .AddItem(new MenuItem("LaneClearEnergy", "Min. Energy Percent: ").SetValue(new Slider(50, 100, 0)));
            Config.SubMenu("LaneClear")
            .AddItem(
                new MenuItem("LaneClearActive", "LaneClear").SetValue(new KeyBind("V".ToCharArray()[0],
                                                                                  KeyBindType.Press)));

            /* [  Jungling Farm ] */
            Config.AddSubMenu(new Menu("JungleFarm", "JungleFarm"));
            {
                Config.SubMenu("JungleFarm").AddItem(new MenuItem("JungleFarmUseQ", "Use Q").SetValue(true));
                Config.SubMenu("JungleFarm").AddItem(new MenuItem("JungleFarmUseW", "Use W").SetValue(false));
                Config.SubMenu("JungleFarm").AddItem(new MenuItem("JungleFarmEnergy", "Min. Energy Percent: ").SetValue(new Slider(50, 100, 0)));
                Config.SubMenu("JungleFarm").AddItem(new MenuItem("JungleFarmActive", "JungleFarm").SetValue(new KeyBind("V".ToCharArray()[0], KeyBindType.Press)));
            }

            Config.AddSubMenu(new Menu("Misc", "Misc"));
            Config.SubMenu("Misc").AddItem(new MenuItem("SmartShield", "Smart W")).SetValue(true);
            Config.SubMenu("Misc").AddItem(new MenuItem("InterruptSpellsE", "Interrupter E")).SetValue(true);
            Config.SubMenu("Misc").AddItem(new MenuItem("GapCloserE", "GapCloser E")).SetValue(true);

            // Extras
            //Config.AddSubMenu(new Menu("Extras", "Extras"));
            //Config.SubMenu("Extras").AddItem(new MenuItem("InterruptSpells", "Interrupt Spells").SetValue(true));

            // Extras -> Use Items
            MenuExtras = new Menu("Extras", "Extras");
            Config.AddSubMenu(MenuExtras);

            /* [ Drawing ] */
            Config.AddSubMenu(new Menu("Drawings", "Drawings"));
            {
                Config.SubMenu("Drawings")
                .AddItem(new MenuItem("DrawQ", "Q Range").SetValue(new Circle(true, Color.Gray)));
                Config.SubMenu("Drawings")
                .AddItem(new MenuItem("DrawE", "E Range").SetValue(new Circle(false, Color.Gray)));
                Config.SubMenu("Drawings")
                .AddItem(
                    new MenuItem("DrawEF", "Flash + E Range").SetValue(new Circle(false, Color.Gray)));
            }
            Config.AddItem(new MenuItem("FleeActive", "Flee").SetValue(new KeyBind("A".ToCharArray()[0], KeyBindType.Press)));


            Utility.HpBarDamageIndicator.DamageToUnit = GetComboDamage;
            Utility.HpBarDamageIndicator.Enabled      = true;

            PlayerSpells.Initialize();

            Config.AddToMainMenu();

            Game.OnUpdate += Game_OnUpdate;
            Obj_AI_Base.OnProcessSpellCast += Obj_AI_Hero_OnProcessSpellCast;
            Drawing.OnDraw += Drawing_OnDraw;
            Interrupter2.OnInterruptableTarget += Interrupter2_OnInterruptableTarget;
            AntiGapcloser.OnEnemyGapcloser     += AntiGapcloser_OnEnemyGapcloser;

            Game.PrintChat(
                string.Format(
                    "<font color='#70DBDB'>xQx | </font> <font color='#FFFFFF'>{0}</font> <font color='#70DBDB'> Loaded!</font>",
                    ChampionName));

            //Speech();
        }
Ejemplo n.º 9
0
        private void OnDoCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!sender.IsMe)
            {
                return;
            }

            var target = TargetSelector.GetTarget(Variables.Spell[Variables.Spells.Q].Range + Variables.Spell[Variables.Spells.W].Range, DamageType.Physical);

            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo))
            {
                if (target == null || Environment.TickCount - Variables.LastECast < 250)
                {
                    return;
                }
                if (target.IsValid && target.IsHPBarRendered)
                {
                    if (getCheckBoxItem(MenuGenerator.comboOptions, "com.ilucian.combo.startE") && Variables.Spell[Variables.Spells.E].IsReady())
                    {
                        if (!sender.IsDead && !Variables.HasPassive())
                        {
                            CastE(target);
                        }

                        if (!Variables.Spell[Variables.Spells.E].IsReady() && target.LSIsValidTarget(Variables.Spell[Variables.Spells.Q].Range) && getCheckBoxItem(MenuGenerator.comboOptions, "com.ilucian.combo.q") && !Variables.HasPassive())
                        {
                            if (Variables.Spell[Variables.Spells.Q].IsReady() && Variables.Spell[Variables.Spells.Q].IsInRange(target) && !ObjectManager.Player.LSIsDashing())
                            {
                                Variables.Spell[Variables.Spells.Q].Cast(target);
                            }
                        }

                        if (!Variables.Spell[Variables.Spells.E].IsReady() && !ObjectManager.Player.LSIsDashing() &&
                            getCheckBoxItem(MenuGenerator.comboOptions, "com.ilucian.combo.w"))
                        {
                            if (Variables.Spell[Variables.Spells.W].IsReady() && !Variables.HasPassive())
                            {
                                if (getCheckBoxItem(MenuGenerator.miscOptions, "com.ilucian.misc.usePrediction"))
                                {
                                    var prediction = Variables.Spell[Variables.Spells.W].GetPrediction(target);
                                    if (prediction.Hitchance >= HitChance.High)
                                    {
                                        Variables.Spell[Variables.Spells.W].Cast(prediction.CastPosition);
                                    }
                                }
                                else
                                {
                                    if (target.LSDistance(ObjectManager.Player) < 600)
                                    {
                                        Variables.Spell[Variables.Spells.W].Cast(target.Position);
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        if (target.LSIsValidTarget(Variables.Spell[Variables.Spells.Q].Range) &&
                            getCheckBoxItem(MenuGenerator.comboOptions, "com.ilucian.combo.q") &&
                            !Variables.HasPassive())
                        {
                            if (Variables.Spell[Variables.Spells.Q].IsReady() &&
                                Variables.Spell[Variables.Spells.Q].IsInRange(target) &&
                                !ObjectManager.Player.LSIsDashing())
                            {
                                Variables.Spell[Variables.Spells.Q].Cast(target);
                            }
                        }

                        if (!ObjectManager.Player.LSIsDashing() &&
                            getCheckBoxItem(MenuGenerator.comboOptions, "com.ilucian.combo.w"))
                        {
                            if (Variables.Spell[Variables.Spells.W].IsReady() && !Variables.HasPassive())
                            {
                                if (getCheckBoxItem(MenuGenerator.miscOptions, "com.ilucian.misc.usePrediction"))
                                {
                                    var prediction = Variables.Spell[Variables.Spells.W].GetPrediction(target);
                                    if (prediction.Hitchance >= HitChance.High)
                                    {
                                        Variables.Spell[Variables.Spells.W].Cast(prediction.CastPosition);
                                    }
                                }
                                else
                                {
                                    if (target.LSDistance(ObjectManager.Player) < 600)
                                    {
                                        Variables.Spell[Variables.Spells.W].Cast(target.Position);
                                    }
                                }
                            }
                        }
                    }

                    if (!sender.IsDead && !Variables.HasPassive() && !Variables.Spell[Variables.Spells.Q].IsReady())
                    {
                        CastE(target);
                    }
                }
            }

            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Harass))
            {
                if (target == null || Environment.TickCount - Variables.LastECast < 250)
                {
                    return;
                }

                if (target.IsValid && target.IsHPBarRendered)
                {
                    if (target.LSIsValidTarget(Variables.Spell[Variables.Spells.Q].Range) &&
                        getCheckBoxItem(MenuGenerator.harassOptions, "com.ilucian.harass.q"))
                    {
                        if (Variables.Spell[Variables.Spells.Q].IsReady() &&
                            Variables.Spell[Variables.Spells.Q].IsInRange(target))
                        {
                            Variables.Spell[Variables.Spells.Q].Cast(target);
                        }
                    }

                    if (!ObjectManager.Player.LSIsDashing() &&
                        getCheckBoxItem(MenuGenerator.harassOptions, "com.ilucian.harass.w"))
                    {
                        if (Variables.Spell[Variables.Spells.W].IsReady())
                        {
                            if (getCheckBoxItem(MenuGenerator.harassOptions, "com.ilucian.misc.usePrediction"))
                            {
                                var prediction = Variables.Spell[Variables.Spells.W].GetPrediction(target);
                                if (prediction.Hitchance >= HitChance.High)
                                {
                                    Variables.Spell[Variables.Spells.W].Cast(prediction.CastPosition);
                                }
                            }
                            else
                            {
                                if (target.LSDistance(ObjectManager.Player) < 600)
                                {
                                    Variables.Spell[Variables.Spells.W].Cast(target.Position);
                                }
                            }
                        }
                    }
                }
            }

            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear))
            {
                if (Orbwalking.IsAutoAttack(args.SData.Name) && args.Target is Obj_AI_Minion && args.Target.IsValid && ((Obj_AI_Minion)args.Target).Team == GameObjectTeam.Neutral)
                {
                    if (ObjectManager.Player.ManaPercent
                        < getSliderItem(MenuGenerator.jungleclearOptions, "com.ilucian.jungleclear.mana") ||
                        Variables.HasPassive())
                    {
                        return;
                    }

                    if (Variables.Spell[Variables.Spells.Q].IsReady() &&
                        getCheckBoxItem(MenuGenerator.jungleclearOptions, "com.ilucian.jungleclear.q"))
                    {
                        Variables.Spell[Variables.Spells.Q].Cast((Obj_AI_Minion)args.Target);
                    }

                    if (Variables.Spell[Variables.Spells.W].IsReady() &&
                        getCheckBoxItem(MenuGenerator.jungleclearOptions, "com.ilucian.jungleclear.w"))
                    {
                        Variables.Spell[Variables.Spells.W].Cast(((Obj_AI_Minion)args.Target).Position);
                    }

                    if (Variables.Spell[Variables.Spells.E].IsReady() &&
                        getCheckBoxItem(MenuGenerator.jungleclearOptions, "com.ilucian.jungleclear.e"))
                    {
                        Variables.Spell[Variables.Spells.E].Cast(
                            ObjectManager.Player.Position.LSExtend(Game.CursorPos, 475));
                    }
                }
            }
        }
Ejemplo n.º 10
0
        static void DoCombo(bool useQ, bool useQG, bool useW, bool useE, bool useR)
        {
            AIHeroClient target = TargetSelector.GetTarget(e.Range, TargetSelector.DamageType.Magical);
            var          Ghost  = target != null?ObjectManager.Get <Obj_AI_Minion>().FirstOrDefault(x => x.Name == target.Name) : null;

            if (target != null && target.IsValidTarget())
            {
                if (player.Distance(target.Position) < w.Range)//W>>EQ(R)>>W
                {
                    if (w.IsReady() && useW)
                    {
                        w.Cast(target, false);
                    }
                    if (e.IsReady() && useE)
                    {
                        PredictionOutput prediction;
                        prediction = e.GetPrediction(target, true);
                        if (prediction.Hitchance >= HitChance.High)
                        {
                            e.Cast(target, true);
                        }
                    }
                    if (q.IsReady() && useQ)
                    {
                        q.Cast(target, false);
                    }
                    if (r.IsReady() && useR && player.CountEnemiesInRange(r.Range) >= menu.Item("r.enemy").GetValue <Slider>().Value)
                    {
                        r.Cast(target, true);
                    }
                    if (w.IsReady() && useW && target != null)
                    {
                        w.Cast(target, false);
                    }
                }
                else if (e.IsReady() == false && player.Distance(target.Position) < e.Range)//E>>Q
                {
                    if (e.IsReady() && useE)
                    {
                        PredictionOutput prediction;
                        prediction = e.GetPrediction(target, true);
                        if (prediction.Hitchance >= HitChance.High)
                        {
                            e.Cast(target, true);
                        }
                    }
                    if (q.IsReady() && useQ)
                    {
                        q.Cast(target, true);
                    }
                }
            }
            else if (target == null && Ghost != null && Ghost.IsValidTarget())
            {
                if (player.Distance(Ghost.Position) < q.Range)//Ghost attack
                {
                    if (q.IsReady() && useQG)
                    {
                        q.Cast(Ghost, true);
                    }
                }
            }
        }
Ejemplo n.º 11
0
        private static void CreateChampionMenu()
        {
            Config = new Menu("xQx | XinZhao", ChampionName, true);

            Config.AddSubMenu(new Menu("Orbwalker", "Orbwalker"));
            Orbwalker = new Orbwalking.Orbwalker(Config.SubMenu("Orbwalker"));

            var TargetSelectorMenu = new Menu("Target Selector", "Target Selector");

            TargetSelector.AddToMenu(TargetSelectorMenu);
            Config.AddSubMenu(TargetSelectorMenu);

            new AssassinManager();

            /* [ Combo ] */
            Config.AddSubMenu(new Menu("Combo", "Combo"));
            Config.SubMenu("Combo").AddItem(new MenuItem("ComboUseQ", "Use Q").SetValue(true));
            Config.SubMenu("Combo").AddItem(new MenuItem("ComboUseW", "Use W").SetValue(true));
            Config.SubMenu("Combo").AddItem(new MenuItem("ComboUseE", "Use E").SetValue(true));
            Config.SubMenu("Combo")
            .AddItem(new MenuItem("EMinRange", "Min. E Range").SetValue(new Slider(300, 200, 500)));
            Config.SubMenu("Combo")
            .AddItem(
                new MenuItem("ComboActive", "Combo!").SetValue(
                    new KeyBind(Config.Item("Orbwalk").GetValue <KeyBind>().Key, KeyBindType.Press)));

            /* [ Lane Clear ] */
            Config.AddSubMenu(new Menu("LaneClear", "LaneClear"));
            Config.SubMenu("LaneClear").AddItem(new MenuItem("LaneClearUseQ", "Use Q").SetValue(false));
            Config.SubMenu("LaneClear").AddItem(new MenuItem("LaneClearUseW", "Use W").SetValue(false));
            Config.SubMenu("LaneClear").AddItem(new MenuItem("LaneClearUseE", "Use E").SetValue(false));
            Config.SubMenu("LaneClear")
            .AddItem(new MenuItem("LaneClearMana", "Min. Mana Percent: ").SetValue(new Slider(50, 100, 0)));
            Config.SubMenu("LaneClear")
            .AddItem(
                new MenuItem("LaneClearActive", "LaneClear!").SetValue(
                    new KeyBind("V".ToCharArray()[0], KeyBindType.Press)));

            /* [ Jungling Farm ] */
            Config.AddSubMenu(new Menu("JungleFarm", "JungleFarm"));
            Config.SubMenu("JungleFarm").AddItem(new MenuItem("JungleFarmUseQ", "Use Q").SetValue(true));
            Config.SubMenu("JungleFarm").AddItem(new MenuItem("JungleFarmUseW", "Use W").SetValue(false));
            Config.SubMenu("JungleFarm").AddItem(new MenuItem("JungleFarmUseE", "Use E").SetValue(false));
            Config.SubMenu("JungleFarm")
            .AddItem(new MenuItem("JungleFarmMana", "Min. Mana Percent: ").SetValue(new Slider(50, 100, 0)));
            Config.SubMenu("JungleFarm")
            .AddItem(
                new MenuItem("JungleFarmActive", "JungleFarm!").SetValue(
                    new KeyBind("V".ToCharArray()[0], KeyBindType.Press)));

            /* [ Drawing ] */
            Config.AddSubMenu(new Menu("Drawings", "Drawings"));
            Config.SubMenu("Drawings")
            .AddItem(new MenuItem("DrawERange", "E range").SetValue(new Circle(false, Color.PowderBlue)));
            Config.SubMenu("Drawings")
            .AddItem(new MenuItem("DrawEMinRange", "E min. range").SetValue(new Circle(false, Color.Aqua)));
            Config.SubMenu("Drawings")
            .AddItem(new MenuItem("DrawRRange", "R range").SetValue(new Circle(false, Color.PowderBlue)));
            Config.SubMenu("Drawings")
            .AddItem(
                new MenuItem("DrawThrown", "Can be thrown enemy").SetValue(new Circle(false, Color.PowderBlue)));

            /* [  Extras -> Use Items ] */
            MenuExtras = new Menu("Extras", "Extras");
            Config.AddSubMenu(MenuExtras);
            MenuExtras.AddItem(new MenuItem("InterruptSpells", "Interrupt Spells").SetValue(true));

            /* [  Extras -> Use Items ] */
            var menuUseItems = new Menu("Use Items", "menuUseItems");

            MenuExtras.AddSubMenu(menuUseItems);

            /* [ Extras -> Use Items -> Targeted Items ] */
            MenuTargetedItems = new Menu("Targeted Items", "menuTargetItems");
            menuUseItems.AddSubMenu(MenuTargetedItems);
            MenuTargetedItems.AddItem(new MenuItem("item3153", "Blade of the Ruined King").SetValue(true));
            MenuTargetedItems.AddItem(new MenuItem("item3143", "Randuin's Omen").SetValue(true));
            MenuTargetedItems.AddItem(new MenuItem("item3144", "Bilgewater Cutlass").SetValue(true));
            MenuTargetedItems.AddItem(new MenuItem("item3146", "Hextech Gunblade").SetValue(true));
            MenuTargetedItems.AddItem(new MenuItem("item3184", "Entropy ").SetValue(true));

            /* [ Extras -> Use Items -> AOE Items ] */
            MenuNonTargetedItems = new Menu("AOE Items", "menuNonTargetedItems");
            menuUseItems.AddSubMenu(MenuNonTargetedItems);
            MenuNonTargetedItems.AddItem(new MenuItem("item3180", "Odyn's Veil").SetValue(true));
            MenuNonTargetedItems.AddItem(new MenuItem("item3131", "Sword of the Divine").SetValue(true));
            MenuNonTargetedItems.AddItem(new MenuItem("item3074", "Ravenous Hydra").SetValue(true));
            MenuNonTargetedItems.AddItem(new MenuItem("item3142", "Youmuu's Ghostblade").SetValue(true));

            new PotionManager();
            Config.AddToMainMenu();
        }
Ejemplo n.º 12
0
        private void LogicQ()
        {
            var t  = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Magical);
            var t1 = TargetSelector.GetTarget(Q1.Range, TargetSelector.DamageType.Magical);

            if (t.IsValidTarget())
            {
                missileManager.Target = t;
                if (Program.Combo && Player.Mana > RMANA + QMANA)
                {
                    Program.CastSpell(Q, t);
                }
                else if (Program.Harass && Config.Item("Harass" + t.ChampionName).GetValue <bool>() && Player.Mana > RMANA + WMANA + QMANA + QMANA && OktwCommon.CanHarras())
                {
                    Program.CastSpell(Q, t);
                }
                else if (OktwCommon.GetKsDamage(t, Q) * 2 > t.Health)
                {
                    Program.CastSpell(Q, t);
                }
                if (Player.Mana > RMANA + QMANA + WMANA)
                {
                    foreach (var enemy in HeroManager.Enemies.Where(enemy => enemy.IsValidTarget(Q.Range) && !OktwCommon.CanMove(enemy)))
                    {
                        Q.Cast(enemy, true, true);
                    }
                }
            }
            else if (t1.IsValidTarget())
            {
                missileManager.Target = t1;
                if (Program.Combo && Player.Mana > RMANA + QMANA)
                {
                    Program.CastSpell(Q1, t1);
                }
                else if (Program.Harass && Config.Item("Harass" + t1.ChampionName).GetValue <bool>() && Player.Mana > RMANA + WMANA + QMANA + QMANA && OktwCommon.CanHarras())
                {
                    Program.CastSpell(Q1, t1);
                }
                else if (OktwCommon.GetKsDamage(t1, Q1) * 2 > t1.Health)
                {
                    Program.CastSpell(Q1, t1);
                }
                if (Player.Mana > RMANA + QMANA + WMANA)
                {
                    foreach (var enemy in HeroManager.Enemies.Where(enemy => enemy.IsValidTarget(Q1.Range) && !OktwCommon.CanMove(enemy)))
                    {
                        Q1.Cast(enemy, true, true);
                    }
                }
            }
            else if (FarmSpells && Config.Item("farmQ", true).GetValue <bool>())
            {
                var allMinionsQ = Cache.GetMinions(Player.ServerPosition, Q1.Range);
                var Qfarm       = Q.GetLineFarmLocation(allMinionsQ, 100);
                if (Qfarm.MinionsHit >= FarmMinions)
                {
                    Q.Cast(Qfarm.Position);
                }
            }
        }
Ejemplo n.º 13
0
        public static void performCombo()
        {
            //Gets best target in Q range
            Obj_AI_Hero target = TargetSelector.GetTarget(Program.q.Range, TargetSelector.DamageType.Magical);

            //Ignite handler
            if (Program.menuController.getMenu().Item("useIgnite").GetValue<bool>())
            {
                if (SpellDamage.getComboDamage(target) > target.Health && target.Distance(Program.player.Position) < 500)
                {
                    Program.player.Spellbook.CastSpell(Program.ignite);
                }
            }
            //Ulti handler in combo
            if (Program.menuController.getMenu().Item("comboUseR").GetValue<bool>())
            {
                List<Obj_AI_Hero> targets;
                /* if (Program.menuController.getMenu().Item("faceOnlyR").GetValue<bool>())
                 {
                     //Gets all facing enemies who can get hit by R
                     targets = HeroManager.Enemies.Where(o => Program.r.WillHit(o, target.Position) && o.IsFacing(Program.player)).ToList<Obj_AI_Hero>();
                 }
                 else
                 {*/
                //Gets all enemies who can get hit by R
                targets = HeroManager.Enemies.Where(o => Program.r.WillHit(o, target.Position) && o.Distance(Program.player.Position) < 500).ToList<Obj_AI_Hero>();

                // }
                if (targets.Count >= Program.menuController.getMenu().Item("minEnemies").GetValue<Slider>().Value)
                {
                    Program.r.Cast(target.Position);
                }
            }
            //Casts Q if selected in menu
            if (Program.menuController.getMenu().Item("comboUseQ").GetValue<bool>())
            {
                if (target != null)
                {
                    Program.q.CastIfHitchanceEquals(target, HitChance.High);
                }
            }
            //Casts E if selected in menu and in E range and target is poisoned
            if (Program.menuController.getMenu().Item("comboUseE").GetValue<bool>())
            {
                if (target != null && target.Distance(Program.player.Position) < Program.e.Range && (Environment.TickCount - lastECast) > Program.menuController.getMenu().Item("eDelay").GetValue<Slider>().Value)
                {
                    if (target.HasBuffOfType(BuffType.Poison))
                    {
                        Program.e.CastOnUnit(target);
                        lastECast = Environment.TickCount;

                    }
                }
            }
            //Casts W if selected in menu
            if (Program.menuController.getMenu().Item("comboUseW").GetValue<bool>())
            {
                if (target != null)
                {
                    Program.w.CastIfHitchanceEquals(target, HitChance.High);
                }
            }
        }
Ejemplo n.º 14
0
        private static void Game_OnUpdate(EventArgs args)
        {
            if (Program.LagFree(0))
            {
                SetMana();
            }
            if (R.IsReady() && getCheckBoxItem(rMenu, "Rjungle"))
            {
                KsJungle();
            }
            else
            {
                DragonTime = 0;
            }

            if (E.IsReady())
            {
                if (Program.LagFree(0))
                {
                    LogicE();
                }

                if (getKeyBindItem(eMenu, "smartE"))
                {
                    Esmart = true;
                }
                if (getKeyBindItem(eMenu, "smartEW") && W.IsReady())
                {
                    CursorPosition = Game.CursorPos;
                    W.Cast(CursorPosition);
                }
                if (Esmart && Player.Position.Extend(Game.CursorPos, E.Range).CountEnemiesInRange(500) < 4)
                {
                    E.Cast(Player.Position.Extend(Game.CursorPos, E.Range), true);
                }

                if (!CursorPosition.IsZero)
                {
                    E.Cast(Player.Position.Extend(CursorPosition, E.Range), true);
                }
            }
            else
            {
                CursorPosition = Vector3.Zero;
                Esmart         = false;
            }

            if (Q.IsReady())
            {
                LogicQ();
            }

            if (Program.LagFree(3) && W.IsReady() && getCheckBoxItem(wMenu, "autoW"))
            {
                LogicW();
            }

            if (R.IsReady())
            {
                if (getKeyBindItem(rMenu, "useR"))
                {
                    var t = TargetSelector.GetTarget(R.Range, DamageType.Physical);
                    if (t.IsValidTarget())
                    {
                        R.Cast(t, true, true);
                    }
                }

                if (Program.LagFree(4))
                {
                    LogicR();
                }
            }
        }
Ejemplo n.º 15
0
        internal static void Game_OnUpdate(EventArgs args)
        {
            Target = TargetSelector.GetTarget(KL.Spells["Javelin"].Range, TargetSelector.DamageType.Magical);

            #region Active Modes

            if (Root.Item("usecombo").GetValue <KeyBind>().Active)
            {
                Combo();
            }

            if (Root.Item("useharass").GetValue <KeyBind>().Active)
            {
                Harass();
            }

            if (Root.Item("usefarm").GetValue <KeyBind>().Active)
            {
                Clear();
            }

            if (Root.Item("flee").GetValue <KeyBind>().Active)
            {
                Flee();
            }

            #endregion

            #region Auto Heal

            // auto heal on ally hero
            if (Root.Item("ndheon").GetValue <bool>() && KL.SpellTimer["Primalsurge"].IsReady())
            {
                if (!KL.NotLearned(KL.Spells["Primalsurge"]))
                {
                    if (!Player.Spellbook.IsChanneling && !Player.IsRecalling())
                    {
                        if (Root.Item("flee").GetValue <KeyBind>().Active&& KL.CatForm())
                        {
                            return;
                        }

                        if (Player.Mana / Player.MaxMana * 100 < Root.Item("ndhemana").GetValue <Slider>().Value)
                        {
                            return;
                        }

                        if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.None || !KL.CatForm())
                        {
                            foreach (
                                var hero in
                                HeroManager.Allies.Where(
                                    h => Root.Item("xx" + h.ChampionName).GetValue <bool>() &&
                                    h.IsValidTarget(KL.Spells["Primalsurge"].Range, false) &&
                                    h.Health / h.MaxHealth * 100 <
                                    Root.Item("zz" + h.ChampionName).GetValue <Slider>().Value)
                                .OrderBy(x => x.HealthPercent))
                            {
                                if (KL.CatForm() == false)
                                {
                                    KL.Spells["Primalsurge"].CastOnUnit(hero);
                                }

                                if (KL.CatForm() && Root.Item("ndhesw").GetValue <bool>() &&
                                    KL.Spells["Aspect"].IsReady())
                                {
                                    KL.Spells["Aspect"].Cast();
                                }
                            }
                        }
                    }
                }
            }

            #endregion
        }
Ejemplo n.º 16
0
        public override void GameOnUpdate(EventArgs args)
        {
            //Game.PrintChat(ObjectManager.Player.BaseAbilityDamage.ToString() + " : " + ObjectManager.Player.BaseAttackDamage.ToString());
            UltiBuffStacks = GetUltimateBuffStacks();

            W.Range = 110 + 20 * ObjectManager.Player.Spellbook.GetSpell(SpellSlot.W).Level;
            R.Range = 900 + 300 * ObjectManager.Player.Spellbook.GetSpell(SpellSlot.R).Level;

            if (R.IsReady() && GetValue <bool>("UseRM"))
            {
                foreach (
                    var hero in
                    ObjectManager.Get <Obj_AI_Hero>()
                    .Where(
                        hero => hero.IsValidTarget(R.Range) && R.GetDamage(hero) > hero.Health))
                {
                    CastR(hero);
                }
            }
            //R.Cast(hero, false, true);

            if ((!ComboActive && !HarassActive) || (!Orbwalking.CanMove(100) &&
                                                    !(ObjectManager.Player.BaseAbilityDamage + ObjectManager.Player.FlatMagicDamageMod > 100)))
            {
                return;
            }

            var useQ = GetValue <bool>("UseQ" + (ComboActive ? "C" : "H"));
            var useE = GetValue <bool>("UseE" + (ComboActive ? "C" : "H"));
            var useR = GetValue <bool>("UseR" + (ComboActive ? "C" : "H"));
            var rLim = GetValue <Slider>("Rlim" + (ComboActive ? "C" : "H")).Value;

            var t = TargetSelector.GetTarget(R.Range, TargetSelector.DamageType.Magical);

            if (useQ && Q.IsReady() && t.IsValidTarget(Q.Range))
            {
                CastQ(t);
                //if (Q.Cast(t) == Spell.CastStates.SuccessfullyCasted)
                //    return;
            }

            if (useE && E.IsReady() && t.IsValidTarget(E.Range))
            {
                CastE(t);
                //if (Q.Cast(t) == Spell.CastStates.SuccessfullyCasted)
                //    return;
            }
            if (R.IsReady() && t.IsValidTarget(R.Range) && t.HealthPercent <= Program.Config.Item(t.ChampionName + "RHPPercent").GetValue <Slider>().Value)
            //if (GetValue<bool>("UseRSC") && R.IsReady() && t.IsValidTarget(R.Range))
            {
                if (t.IsValidTarget() &&
                    (t.HasBuffOfType(BuffType.Stun) || t.HasBuffOfType(BuffType.Snare) || t.HasBuffOfType(BuffType.Slow) ||
                     t.HasBuffOfType(BuffType.Fear) ||
                     t.HasBuffOfType(BuffType.Taunt)))
                {
                    CastR(t);
                    //R.Cast(t, false, true);
                }
            }

            if (useR && R.IsReady() && UltiBuffStacks < rLim && t.IsValidTarget(R.Range) && t.HealthPercent <= Program.Config.Item(t.ChampionName + "RHPPercent").GetValue <Slider>().Value)
            {
                CastR(t);
                //R.Cast(t, false, true);
            }
        }
Ejemplo n.º 17
0
        public static void Combo()
        {
            //Get target
            var target = TargetSelector.GetTarget(E.Range, TargetSelector.DamageType.Magical);

            //Check for target
            if (target == null)
            {
                return;
            }

            //Check available Spells
            var useQ = cMenu.Config.Item("comboUseQ").GetValue <bool>();
            var useW = cMenu.Config.Item("comboUseW").GetValue <bool>();
            var useE = cMenu.Config.Item("comboUseE").GetValue <bool>();
            var useR = cMenu.Config.Item("comboUseR").GetValue <bool>();

            //Check if target is killable
            var isKillable = target.IsMainComboKillable();

            //Auto Ignite
            if (isKillable && cUtility.HasIgnite)
            {
                Player.Spellbook.CastSpell(Player.GetSpellSlot("SummonersDot"), target);
            }

            //Spells
            if (useE && E.IsReady())
            {
                if (isKillable && E.CanCast(target) || E.IsKillable(target))
                {
                    E.Cast(target);
                }
            }

            if (useQ && Q.IsReady())
            {
                if (isKillable && Q.CanCast(target) || Q.IsKillable(target) || (!useW && !useE))
                {
                    Q.Cast(target);
                }
            }

            if (useW && W.IsReady())
            {
                if (isKillable && W.CanCast(target) || W.IsKillable(target) || Q.IsReady(100) ||
                    target.ServerPosition.Distance(Player.Position, true) > Math.Pow(W.Range + 100, 2))
                {
                    W.Cast(target);
                }
            }

            if (useR && R.IsReady())
            {
                if (isKillable && R.CanCast(target) ||
                    R.IsKillable(target) && !Q.IsReady() && !E.IsReady() && !R.IsReady())
                {
                    R.Cast();
                }
            }
        }
Ejemplo n.º 18
0
        /// <summary>
        /// Creates the menu.
        /// </summary>
        private static void CreateMenu()
        {
            Menu = new Menu("Project Zed", "ProjectZed", true);

            var targetselectorMenu = new Menu("Target Selector", "TS");

            TargetSelector.AddToMenu(targetselectorMenu);
            Menu.AddSubMenu(targetselectorMenu);

            var orbwalkMenu = new Menu("Orbwalker", "Orbwalker");

            Orbwalker = new Orbwalking.Orbwalker(orbwalkMenu);
            Menu.AddSubMenu(orbwalkMenu);

            var comboMenu = new Menu("Combo Settings", "Combo");

            comboMenu.AddItem(new MenuItem("UseQCombo", "Use Q").SetValue(true));
            comboMenu.AddItem(new MenuItem("UseWCombo", "Use W").SetValue(true));
            comboMenu.AddItem(new MenuItem("UseECombo", "Use E").SetValue(true));
            comboMenu.AddItem(new MenuItem("UseRCombo", "Use R").SetValue(true));
            comboMenu.AddItem(new MenuItem("AllInCombo", "All in Combo").SetValue(new KeyBind(83, KeyBindType.Press)));
            Menu.AddSubMenu(comboMenu);

            var harassMenu = new Menu("Harass Settings", "Harass");

            harassMenu.AddItem(new MenuItem("UseQHarass", "Use Q Harass").SetValue(true));
            harassMenu.AddItem(new MenuItem("UseWHarass", "Use W to Harass").SetValue(true));
            harassMenu.AddItem(new MenuItem("UseEHarass", "Use E Harass").SetValue(true));
            harassMenu.AddItem(
                new MenuItem("HarassToggle", "Harass! (Toggle)").SetValue(new KeyBind(84, KeyBindType.Toggle)));
            Menu.AddSubMenu(harassMenu);

            var lasthitMenu = new Menu("Last Hit Settings", "Lasthit");

            lasthitMenu.AddItem(new MenuItem("UseQLastQ", "Use Q Lasthit").SetValue(false));
            lasthitMenu.AddItem(new MenuItem("UseELastE", "Use E Lasthit").SetValue(true));
            lasthitMenu.AddItem(new MenuItem("LHEnergy", "Use % of Energy in Lasthit").SetValue(new Slider(80, 1)));
            Menu.AddSubMenu(lasthitMenu);

            var laneClearMenu = new Menu("Lane Clear Settings", "LaneClear");

            laneClearMenu.AddItem(new MenuItem("UseQLaneClear", "Use Q").SetValue(true));
            laneClearMenu.AddItem(new MenuItem("UseELaneClear", "Use E").SetValue(true));
            laneClearMenu.AddItem(new MenuItem("LCEnergy", "Use % Energy in LaneClear>")).SetValue(new Slider(60, 1, 100));
            Menu.AddSubMenu(laneClearMenu);

            var ultDodge = new Menu("Ult Dodge Settings", "DodgeUlt");

            ultDodge.AddItem(new MenuItem("CastRDodge", "Cast R on Unit to Dodge Dangerous").SetValue(true));
            ultDodge.AddItem(new MenuItem("ShadowSwapDodge", "Swap with Shadow to Dodge Dangerous").SetValue(true));
            Menu.AddSubMenu(ultDodge);

            var shadowMenu = new Menu("Shadow Settings", "ShadowSettings");

            shadowMenu.AddItem(new MenuItem("ShadowSwapHP", "Dont swap to shadow if my HP below %").SetValue(new Slider(40)));
            shadowMenu.AddItem(new MenuItem("DontWIntoEnemies", "Dont W into Enemies").SetValue(new Slider(3, 1, 5)));
            shadowMenu.AddItem(new MenuItem("ShadowBackDead", "Swap to shadow if enemy is dead").SetValue(true));
            shadowMenu.AddItem(new MenuItem("AutoE", "Auto use E").SetValue(true));
            Menu.AddSubMenu(shadowMenu);

            var killstealMenu = new Menu("Kill Steal Settings", "KS");

            killstealMenu.AddItem(new MenuItem("UseQKS", "Use Q").SetValue(true));
            Menu.AddSubMenu(killstealMenu);

            var drawingMenu = new Menu("Drawing Settings", "Drawings");

            drawingMenu.AddItem(new MenuItem("DrawQ", "Draw Q").SetValue(true));
            drawingMenu.AddItem(new MenuItem("DrawW", "Draw W").SetValue(false));
            drawingMenu.AddItem(new MenuItem("DrawE", "Draw E").SetValue(false));
            drawingMenu.AddItem(new MenuItem("DrawR", "Draw R").SetValue(false));
            Menu.AddSubMenu(drawingMenu);

            Menu.AddToMainMenu();
        }
Ejemplo n.º 19
0
        /// <summary>
        /// Does the combo.
        /// </summary>
        /// <param name="checkHp">if set to <c>true</c> will use R only if the target is killable.</param>
        private static void DoCombo(bool checkHp)
        {
            var target =
                TargetSelector.GetTarget(
                    ShadowManager.RShadowState == ShadowManager.ShadowState.Cast ? R.Range : Q.Range,
                    TargetSelector.DamageType.Physical);

            if (target == null)
            {
                CloseGap();
            }

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

            var useQCombo = Menu.Item("UseQCombo").IsActive();
            var useWCombo = Menu.Item("UseWCombo").IsActive();
            var useECombo = Menu.Item("UseECombo").IsActive();
            var useRCombo = Menu.Item("UseRCombo").IsActive();

            if (useRCombo && R.IsReady() && ShadowManager.RShadowState == ShadowManager.ShadowState.Cast)
            {
                if (checkHp && DamageToUnit(target) > target.Health)
                {
                    R.CastOnUnit(target);
                }
                else if (!checkHp)
                {
                    R.CastOnUnit(target);
                }
            }

            if (useRCombo && R.IsReady() && ShadowManager.RShadowState == ShadowManager.ShadowState.Swap && ShadowManager.CanSwapToR(target, LastTarget))
            {
                R.Cast();
            }

            if (useWCombo && W.IsReady() && ShadowManager.WShadowState == ShadowManager.ShadowState.Cast)
            {
                var position = Player.ServerPosition.Extend(target.ServerPosition, W.Range);
                W.Cast(position);
            }

            if (useWCombo && W.IsReady() && ShadowManager.WShadowState == ShadowManager.ShadowState.Swap &&
                ShadowManager.CanSwapToW(target, LastTarget))
            {
                W.Cast();
            }

            if (useQCombo && Q.IsReady())
            {
                Q.Cast(target);
            }

            if (useECombo && E.IsReady() && ShadowManager.CanCastE)
            {
                E.Cast();
            }

            LastTarget = target;
        }
Ejemplo n.º 20
0
        /// <summary>
        ///     Called on tick update.
        /// </summary>
        public void Combo(EntropyEventArgs args)
        {
            /// <summary>
            ///     The Q Combo Logic.
            /// </summary>
            if (SpellClass.Q.Ready &&
                MenuClass.Q["combo"].Enabled)
            {
                var bestTarget = Extensions.GetBestEnemyHeroTargetInRange(SpellClass.Q.Range);
                if (bestTarget != null &&
                    !Invulnerable.Check(bestTarget, DamageType.Magical))
                {
                    switch (MenuClass.Q["modes"]["combo"].Value)
                    {
                    case 0:
                        if (!IsNearWorkedGround())
                        {
                            SpellClass.Q.Cast(bestTarget);
                        }

                        break;

                    case 1:
                        SpellClass.Q.Cast(bestTarget);
                        break;
                    }
                }
            }

            /// <summary>
            ///     The W Combo Logics.
            /// </summary>
            if (SpellClass.W.Ready)
            {
                /// <summary>
                ///     The W-> E Combo Logic.
                /// </summary>
                if (MenuClass.W["boulders"].Enabled)
                {
                    var bestTargets = TargetSelector.GetOrderedTargets(ObjectCache.EnemyHeroes)
                                      .Where(t => MenuClass.W["selection"][t.CharName.ToLower()].Value < 4);

                    var objAiHeroes = bestTargets as AIHeroClient[] ?? bestTargets.ToArray();
                    foreach (var target in objAiHeroes)
                    {
                        var bestBoulderHitPos            = GetBestBouldersHitPosition(target);
                        var bestBoulderHitPosHitBoulders = GetBestBouldersHitPositionHitBoulders(target);
                        if (bestBoulderHitPos != Vector3.Zero && bestBoulderHitPosHitBoulders > 0)
                        {
                            SpellClass.W.Cast(bestBoulderHitPos, SpellClass.W.GetPrediction(target).CastPosition);
                            return;
                        }
                    }
                }

                /// <summary>
                ///     The W-> E Combo Logic.
                /// </summary>
                if ((SpellClass.E.Ready || !MenuClass.W["customization"]["onlyeready"].Enabled) &&
                    MenuClass.W["combo"].Enabled)
                {
                    var bestTarget = Extensions.GetBestEnemyHeroTargetInRange(SpellClass.W.Range);
                    if (bestTarget != null &&
                        !Invulnerable.Check(bestTarget, DamageType.Magical, false))
                    {
                        switch (MenuClass.Root["pattern"].Value)
                        {
                        case 0:
                            SpellClass.W.Cast(GetTargetPositionAfterW(bestTarget),
                                              SpellClass.W.GetPrediction(bestTarget).CastPosition);
                            break;
                        }
                    }
                }
            }

            /// <summary>
            ///     The E Combo Logic.
            /// </summary>
            if (SpellClass.E.Ready &&
                MenuClass.E["combo"].Enabled)
            {
                if (MenuClass.Root["pattern"].Value == 0)
                {
                    return;
                }

                if (!SpellClass.W.Ready &&
                    MenuClass.E["customization"]["onlywready"].Enabled &&
                    UtilityClass.Player.Spellbook.GetSpellState(SpellSlot.W) != SpellState.NotLearned)
                {
                    return;
                }

                var bestETarget = Extensions.GetBestEnemyHeroTargetInRange(SpellClass.E.Range - 150f);
                if (bestETarget != null &&
                    !Invulnerable.Check(bestETarget, DamageType.Magical))
                {
                    SpellClass.E.Cast(bestETarget.Position);
                }
            }
        }
Ejemplo n.º 21
0
        void Combo()
        {
            AIHeroClient target = null;

            if (SpellSlot.E.IsReady() && SpellSlot.Q.IsReady())
            {
                target = TargetSelector.GetTarget((E.Range + Q.Range) * 0.95f, DamageType.Physical);
            }

            if (target == null)
            {
                target = TargetSelector.GetTarget(W.Range, DamageType.Physical);
            }

            if ((target != null) && target.IsVisible && target.IsHPBarRendered)
            {
                var dist = Khazix.LSDistance(target);

                // Normal abilities

                if (Q.IsReady() && !Jumping && getCheckBoxItem(combo, "UseQCombo"))
                {
                    if (dist <= Q.Range)
                    {
                        Q.Cast(target);
                    }
                }

                if (W.IsReady() && !EvolvedW && dist <= W.Range && getCheckBoxItem(combo, "UseWCombo"))
                {
                    var pred = W.GetPrediction(target);
                    if (pred.HitChance >= Config.GetHitChance("WHitchance"))
                    {
                        W.Cast(pred.CastPosition);
                    }
                }

                if (E.IsReady() && !Jumping && dist <= E.Range && getCheckBoxItem(combo, "UseECombo") && dist > Q.Range + (0.7 * Khazix.MoveSpeed))
                {
                    var pred = E.GetPrediction(target);
                    if (target.IsValid && target.IsVisible && target.IsHPBarRendered && !target.IsDead && ShouldJump(pred.CastPosition))
                    {
                        E.Cast(pred.CastPosition);
                    }
                }

                // Use EQ AND EW Synergy
                if ((dist <= E.Range + Q.Range + (0.7 * Khazix.MoveSpeed) && dist > Q.Range && E.IsReady() &&
                     getCheckBoxItem(combo, "UseEGapclose")) || (dist <= E.Range + W.Range && dist > Q.Range && E.IsReady() && W.IsReady() &&
                                                                 getCheckBoxItem(combo, "UseEGapcloseW")))
                {
                    var pred = E.GetPrediction(target);
                    if (target.IsValid && target.IsVisible && target.IsHPBarRendered && !target.IsDead && ShouldJump(pred.CastPosition))
                    {
                        E.Cast(pred.CastPosition);
                    }
                    if (getCheckBoxItem(combo, "UseRGapcloseW") && R.IsReady())
                    {
                        R.CastOnUnit(Khazix);
                    }
                }


                // Ult Usage
                if (R.IsReady() && !Q.IsReady() && !W.IsReady() && !E.IsReady() &&
                    getCheckBoxItem(combo, "UseRCombo"))
                {
                    R.Cast();
                }
                // Evolved

                if (W.IsReady() && EvolvedW && dist <= WE.Range && getCheckBoxItem(combo, "UseWCombo"))
                {
                    var pred = WE.GetPrediction(target);
                    if (pred.HitChance >= Config.GetHitChance("WHitchance"))
                    {
                        CastWE(target, pred.UnitPosition.LSTo2D(), 0, Config.GetHitChance("WHitchance"));
                    }
                    if (pred.HitChance >= EloBuddy.SDK.Enumerations.HitChance.Collision)
                    {
                        List <Obj_AI_Base> PCollision = pred.CollisionObjects.ToList();
                        var x = PCollision.Where(PredCollisionChar => PredCollisionChar.LSDistance(target) <= 30).FirstOrDefault();
                        if (x != null)
                        {
                            W.Cast(x.Position);
                        }
                    }
                }

                if (dist <= E.Range + (0.7 * Khazix.MoveSpeed) && dist > Q.Range &&
                    getCheckBoxItem(combo, "UseECombo") && E.IsReady())
                {
                    var pred = E.GetPrediction(target);
                    if (target.IsValid && target.IsVisible && target.IsHPBarRendered && !target.IsDead && ShouldJump(pred.CastPosition))
                    {
                        E.Cast(pred.CastPosition);
                    }
                }

                if (getCheckBoxItem(combo, "UseItems"))
                {
                    UseItems(target);
                }
            }
        }
Ejemplo n.º 22
0
        private void Drawing_OnDraw(EventArgs args)
        {
            if (QMissile != null && QMissile.IsValid && Config.Item("Qhelp", true).GetValue <bool>())
            {
                OktwCommon.DrawLineRectangle(QMissile.Position, Player.Position, (int)Q.Width, 1, System.Drawing.Color.White);
            }

            if (Config.Item("qRange", true).GetValue <bool>())
            {
                if (Config.Item("onlyRdy", true).GetValue <bool>())
                {
                    if (Q.IsReady())
                    {
                        Utility.DrawCircle(Player.Position, Q.Range, System.Drawing.Color.Cyan, 1, 1);
                    }
                }
                else
                {
                    Utility.DrawCircle(Player.Position, Q.Range, System.Drawing.Color.Cyan, 1, 1);
                }
            }

            if (Config.Item("wRange", true).GetValue <bool>())
            {
                if (Config.Item("onlyRdy", true).GetValue <bool>())
                {
                    if (W.IsReady())
                    {
                        Utility.DrawCircle(Player.Position, W.Range, System.Drawing.Color.Orange, 1, 1);
                    }
                }
                else
                {
                    Utility.DrawCircle(Player.Position, W.Range, System.Drawing.Color.Orange, 1, 1);
                }
            }

            if (Config.Item("eRange", true).GetValue <bool>())
            {
                if (Config.Item("onlyRdy", true).GetValue <bool>())
                {
                    if (E.IsReady())
                    {
                        Utility.DrawCircle(Player.Position, E.Range, System.Drawing.Color.Yellow, 1, 1);
                    }
                }
                else
                {
                    Utility.DrawCircle(Player.Position, E.Range, System.Drawing.Color.Yellow, 1, 1);
                }
            }

            if (Config.Item("noti", true).GetValue <bool>())
            {
                var t = TargetSelector.GetTarget(1500, TargetSelector.DamageType.Physical);

                if (t.IsValidTarget())
                {
                    var comboDmg = 0f;
                    if (R.IsReady())
                    {
                        comboDmg += R.GetDamage(t) * 3;
                    }
                    if (Q.IsReady())
                    {
                        comboDmg += Q.GetDamage(t) * 2;
                    }
                    if (W.IsReady())
                    {
                        comboDmg += W.GetDamage(t) + W.GetDamage(t, 1);
                    }
                    if (comboDmg > t.Health)
                    {
                        Drawing.DrawText(Drawing.Width * 0.1f, Drawing.Height * 0.5f, System.Drawing.Color.Red, "COMBO KILL " + t.ChampionName + " have: " + t.Health + "hp");
                        drawLine(t.Position, Player.Position, 10, System.Drawing.Color.Yellow);
                    }
                }
            }
        }
Ejemplo n.º 23
0
        private static void Game_OnGameUpdate(EventArgs args)
        {
            if (Program.Combo && getCheckBoxItem(miscMenu, "AACombo"))
            {
                if (!E.IsReady())
                {
                    PortAIO.OrbwalkerManager.SetAttack(true);
                }

                else
                {
                    PortAIO.OrbwalkerManager.SetAttack(false);
                }
            }
            else
            {
                PortAIO.OrbwalkerManager.SetAttack(true);
            }

            if (getKeyBindItem(eMenu, "FlayPush") || getKeyBindItem(eMenu, "FlayPull"))
            {
                Orbwalker.MoveTo(Game.CursorPos);
            }

            var Etarget = TargetSelector.GetTarget(E.Range, DamageType.Magical);

            if (getKeyBindItem(eMenu, "FlayPush") && Etarget != null &&
                E.IsReady())
            {
                if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.None))
                {
                    Push(Etarget);
                }
            }

            if (getKeyBindItem(eMenu, "FlayPull") && Etarget != null &&
                E.IsReady())
            {
                if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.None))
                {
                    Pull(Etarget);
                }
            }

            if (getKeyBindItem(wMenu, "ThrowLantern"))
            {
                ThrowLantern();
            }

            if (Marked.LSIsValidTarget())
            {
                if (Program.Combo)
                {
                    if (OktwCommon.GetPassiveTime(Marked, "ThreshQ") < 0.3)
                    {
                        Q.Cast();
                    }

                    if (W.IsReady() && getCheckBoxItem(wMenu, "autoW2"))
                    {
                        var allyW = Player;
                        foreach (var ally in Program.Allies.Where(ally => ally.IsValid && !ally.IsDead && Player.LSDistance(ally.ServerPosition) < W.Range + 500))
                        {
                            if (Marked.LSDistance(ally.ServerPosition) > 800 && Player.LSDistance(ally.ServerPosition) > 600)
                            {
                                CastW(LeagueSharp.Common.Prediction.GetPrediction(ally, 1f).CastPosition);
                            }
                        }
                    }
                }
            }
            else
            {
                if (Program.LagFree(1) && Q.IsReady())
                {
                    LogicQ();
                }

                if (Program.LagFree(2) && E.IsReady() && getCheckBoxItem(eMenu, "autoE"))
                {
                    LogicE();
                }
            }

            if (Program.LagFree(3) && W.IsReady())
            {
                LogicW();
            }
            if (Program.LagFree(4) && R.IsReady())
            {
                LogicR();
            }
        }
Ejemplo n.º 24
0
        private static void Drawing_OnDraw(EventArgs args)
        {
            if (getCheckBoxItem(drawMenu, "qRange"))
            {
                if (getCheckBoxItem(drawMenu, "onlyRdy"))
                {
                    if (Q.IsReady())
                    {
                        Utility.DrawCircle(Player.Position, Q.Range, Color.Cyan, 1, 1);
                    }
                }
                else
                {
                    Utility.DrawCircle(Player.Position, Q.Range, Color.Cyan, 1, 1);
                }
            }
            if (getCheckBoxItem(drawMenu, "wRange"))
            {
                if (getCheckBoxItem(drawMenu, "onlyRdy"))
                {
                    if (W.IsReady())
                    {
                        Utility.DrawCircle(ObjectManager.Player.Position, W.Range, Color.Orange, 1, 1);
                    }
                }
                else
                {
                    Utility.DrawCircle(ObjectManager.Player.Position, W.Range, Color.Orange, 1, 1);
                }
            }
            if (getCheckBoxItem(drawMenu, "eRange"))
            {
                if (getCheckBoxItem(drawMenu, "onlyRdy"))
                {
                    if (E.IsReady())
                    {
                        Utility.DrawCircle(Player.Position, E.Range, Color.Yellow, 1, 1);
                    }
                }
                else
                {
                    Utility.DrawCircle(Player.Position, E.Range, Color.Yellow, 1, 1);
                }
            }
            if (getCheckBoxItem(drawMenu, "rRange"))
            {
                if (getCheckBoxItem(drawMenu, "onlyRdy"))
                {
                    if (R.IsReady())
                    {
                        Utility.DrawCircle(Player.Position, R.Range, Color.Gray, 1, 1);
                    }
                }
                else
                {
                    Utility.DrawCircle(Player.Position, R.Range, Color.Gray, 1, 1);
                }
            }


            if (getCheckBoxItem(drawMenu, "noti"))
            {
                var target = TargetSelector.GetTarget(1500, DamageType.Physical);
                if (target.IsValidTarget())
                {
                    var poutput = Q.GetPrediction(target);
                    if ((int)poutput.Hitchance == 5)
                    {
                        Render.Circle.DrawCircle(poutput.CastPosition, 50, Color.YellowGreen);
                    }
                    if (Q.GetDamage(target) > target.Health)
                    {
                        Render.Circle.DrawCircle(target.ServerPosition, 200, Color.Red);
                        Drawing.DrawText(Drawing.Width * 0.1f, Drawing.Height * 0.4f, Color.Red,
                                         "Q 击杀: " + target.ChampionName + " have: " + target.Health + "hp");
                    }
                    else if (Q.GetDamage(target) + W.GetDamage(target) > target.Health)
                    {
                        Render.Circle.DrawCircle(target.ServerPosition, 200, Color.Red);
                        Drawing.DrawText(Drawing.Width * 0.1f, Drawing.Height * 0.4f, Color.Red,
                                         "Q + W 击杀: " + target.ChampionName + " have: " + target.Health + "hp");
                    }
                    else if (Q.GetDamage(target) + W.GetDamage(target) + E.GetDamage(target) > target.Health)
                    {
                        Render.Circle.DrawCircle(target.ServerPosition, 200, Color.Red);
                        Drawing.DrawText(Drawing.Width * 0.1f, Drawing.Height * 0.4f, Color.Red,
                                         "Q + W + E 击杀: " + target.ChampionName + " have: " + target.Health + "hp");
                    }
                }
            }
        }
Ejemplo n.º 25
0
        public override void Combo()
        {
            Orbwalker.ForcedTarget = null;
            if (R.IsReady() && ComboMenu.CheckBoxValue(SpellSlot.R))
            {
                R.CastAOE(ComboMenu.SliderValue("RAOE"), 3000);
            }

            var target =
                EntityManager.Heroes.Enemies.OrderByDescending(TargetSelector.GetPriority).FirstOrDefault(e => e.IsKillable() &&
                                                                                                          BarrelsList.Any(b => b.Barrel.IsValidTarget(Q.Range) && (KillableBarrel(b)?.Distance(e) <= E.Width || BarrelsList.Any(a => KillableBarrel(b)?.Distance(a.Barrel) <= ConnectionRange && e.Distance(b.Barrel) <= E.Width))))
                ?? TargetSelector.GetTarget(E.Range, DamageType.Physical);

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

            var pred    = target.PredictPosition();
            var castpos = E.GetPrediction(target).CastPosition;

            if (AABarrel(target) != null)
            {
                var extended = AABarrel(target).ServerPosition.Extend(pred, ConnectionRange).To3D();
                castpos = !E.IsInRange(extended) ? pred : extended;
                Orbwalker.ForcedTarget = AABarrel(target);
                if (E.IsReady() && ComboMenu.CheckBoxValue(SpellSlot.E))
                {
                    if (BarrelsList.Count(b => b.Barrel.Distance(user) <= Q.Range) > 0 && BarrelsList.Count(b => b.Barrel.Distance(castpos) <= E.Width) < 1)
                    {
                        E.Cast(castpos);
                    }
                }
                Player.IssueOrder(GameObjectOrder.AttackUnit, AABarrel(target));
                return;
            }

            if (Q.IsReady())
            {
                if (ComboMenu.CheckBoxValue(SpellSlot.Q))
                {
                    if (((BarrelsList.Count(b => b.Barrel.IsInRange(target, E.Radius + ConnectionRange)) < 1 && (!E.IsReady() || E.Handle.Ammo < 1)) || Q.WillKill(target)) && target.IsKillable(Q.Range))
                    {
                        Q.Cast(target);
                    }

                    foreach (var A in BarrelsList.OrderBy(b => b.Barrel.Distance(target)))
                    {
                        if (KillableBarrel(A) != null && KillableBarrel(A).IsValidTarget(Q.Range))
                        {
                            if (pred.IsInRange(KillableBarrel(A), E.Width))
                            {
                                Q.Cast(KillableBarrel(A));
                            }

                            var Secondbarrel = BarrelsList.OrderBy(b => b.Barrel.Distance(target)).FirstOrDefault(b => b.Barrel.NetworkId != KillableBarrel(A).NetworkId&& b.Barrel.Distance(KillableBarrel(A)) <= ConnectionRange);
                            if (Secondbarrel != null)
                            {
                                if (pred.IsInRange(Secondbarrel.Barrel, E.Width))
                                {
                                    Q.Cast(KillableBarrel(A));
                                }
                                if (BarrelsList.OrderBy(b => b.Barrel.Distance(target)).Any(b => b.Barrel.NetworkId != Secondbarrel.Barrel.NetworkId && b.Barrel.Distance(Secondbarrel.Barrel) <= ConnectionRange && b.Barrel.CountEnemiesInRange(E.Width) > 0))
                                {
                                    Q.Cast(KillableBarrel(A));
                                }
                            }
                            else
                            {
                                if (BarrelsList.OrderBy(b => b.Barrel.Distance(target)).Any(b => b.Barrel.NetworkId != KillableBarrel(A).NetworkId&& b.Barrel.Distance(KillableBarrel(A)) <= ConnectionRange && b.Barrel.CountEnemiesInRange(E.Width) > 0))
                                {
                                    Q.Cast(KillableBarrel(A));
                                }
                            }
                        }
                    }
                }
                if (E.IsReady() && ComboMenu.CheckBoxValue(SpellSlot.E))
                {
                    if (BarrelsList.OrderBy(b => b.Barrel.Distance(target)).Count(b => b.Barrel.IsInRange(target, E.Width)) < 1)
                    {
                        if (BarrelsList.OrderBy(b => b.Barrel.Distance(target)).Count(b => b.Barrel.IsInRange(target, E.Radius + ConnectionRange)) > 0)
                        {
                            var targetbarrel = BarrelsList.OrderBy(b => b.Barrel.Distance(target)).FirstOrDefault(b => KillableBarrel(b) != null && (b.Barrel.IsValidTarget(Q.Range) || b.Barrel.IsValidTarget(user.GetAutoAttackRange())) && b.Barrel.IsInRange(target, E.Radius + ConnectionRange));
                            if (KillableBarrel(targetbarrel) != null)
                            {
                                var Secondbarrel = BarrelsList.OrderBy(b => b.Barrel.Distance(target)).FirstOrDefault(b => b.Barrel.NetworkId != targetbarrel?.Barrel.NetworkId && b.Barrel.Distance(targetbarrel?.Barrel) <= ConnectionRange);

                                if (Secondbarrel != null)
                                {
                                    var extended = Secondbarrel.Barrel.ServerPosition.Extend(pred, ConnectionRange).To3D();
                                    castpos = !E.IsInRange(extended) ? pred : extended;
                                }
                                if ((castpos.Distance(KillableBarrel(targetbarrel)) <= ConnectionRange || Secondbarrel?.Barrel.Distance(castpos) <= ConnectionRange) && E.IsInRange(castpos))
                                {
                                    E.Cast(castpos);
                                }
                            }
                        }
                        else
                        {
                            if (E.Handle.Ammo > 1 && ComboMenu.CheckBoxValue("FB"))
                            {
                                if (Q.IsInRange(castpos))
                                {
                                    if (HPTiming() <= 1000 || target.IsCC())
                                    {
                                        E.Cast(castpos);
                                    }
                                }
                                else
                                {
                                    if (E.IsInRange(castpos))
                                    {
                                        E.Cast(castpos.Extend(user, ConnectionRange - 300).To3D());
                                    }
                                }

                                var circle = new Geometry.Polygon.Circle(castpos, ConnectionRange);
                                foreach (var point in circle.Points)
                                {
                                    circle = new Geometry.Polygon.Circle(point, E.Width);
                                    var grass = circle.Points.OrderBy(p => p.Distance(castpos)).FirstOrDefault(p => p.IsGrass() && Q.IsInRange(p.To3D()) && p.Distance(castpos) <= ConnectionRange);
                                    if (grass != null)
                                    {
                                        E.Cast(grass.To3D());
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 26
0
        /// <summary>
        /// Combo
        /// </summary>
        private static void Combo()
        {
            var target = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Magical);

            if (target == null)
            {
                return;
            }

            var useq      = Config.Item("comboMenu.useq").GetValue <bool>();
            var usew      = Config.Item("comboMenu.usew").GetValue <bool>();
            var usee      = Config.Item("comboMenu.usee").GetValue <bool>();
            var combomode = Config.Item("comboMenu.combomode").GetValue <StringList>().SelectedIndex;
            var qpred     = Q.GetPrediction(target);

            // var epred = E.GetPrediction(target);

            if (Ignite.IsReady() && target.Health <= (Q.GetDamage(target) + Player.GetAutoAttackDamage(target)))
            {
                Player.Spellbook.CastSpell(Ignite, target);
            }
            var epred = E.GetPrediction(target);
            var ecol  = epred.CollisionObjects;

            AhriR.RUlt();
            switch (combomode)
            {
            case 0:
            {
                if (!E.IsReady() && Q.IsReady() && target.IsValidTarget(Q.Range) && useq)
                {
                    Q.Cast(qpred.CastPosition);
                }

                if (E.IsReady() && usee && target.IsValidTarget(E.Range) && !ecol.Any())
                {
                    E.Cast(epred.CastPosition);
                }

                if (W.IsReady() && target.IsValidTarget(600) && usew &&
                    (Player.Mana >= W.Instance.ManaCost + E.Instance.ManaCost))
                {
                    W.Cast();
                }
                break;
            }

            case 1:
            {
                if (E.IsReady() && !Q.IsReady() && target.IsValidTarget() && usee)
                {
                    if (!ecol.Any())
                    {
                        E.Cast(epred.CastPosition);
                    }
                }

                if (Q.IsReady() && useq)
                {
                    Q.Cast(target);
                }

                if (W.IsReady() && target.IsValidTarget(600) && usew &&
                    (Player.Mana >= W.Instance.ManaCost + E.Instance.ManaCost))
                {
                    W.Cast();
                }
                break;
            }
            }
        }
Ejemplo n.º 27
0
        private void InitMenu()
        {
            config = new Menu("Jax ", "Jax", true);
            // Target Selector
            Menu menuTS = new Menu("Selector", "tselect");

            TargetSelector.AddToMenu(menuTS);
            config.AddSubMenu(menuTS);
            // Orbwalker
            Menu menuOrb = new Menu("Orbwalker", "orbwalker");

            orbwalker = new Orbwalking.Orbwalker(menuOrb);
            config.AddSubMenu(menuOrb);
            // Draw settings
            Menu menuD = new Menu("Drawings ", "dsettings");

            menuD.AddItem(new MenuItem("drawqq", "Draw Q range", true))
            .SetValue(new Circle(false, Color.FromArgb(180, 72, 46, 81)));
            menuD.AddItem(new MenuItem("drawee", "Draw E range", true))
            .SetValue(new Circle(false, Color.FromArgb(180, 72, 46, 81)));
            menuD.AddItem(new MenuItem("drawcombo", "Draw combo damage", true)).SetValue(true);
            config.AddSubMenu(menuD);
            // Combo Settings
            Menu menuC = new Menu("Combo ", "csettings");

            menuC.AddItem(new MenuItem("useq", "Use Q", true)).SetValue(true);
            menuC.AddItem(new MenuItem("useqLimit", "   Limit usage", true)).SetValue(true);
            menuC.AddItem(new MenuItem("useqSec", "Use Q to secure kills", true)).SetValue(false);
            menuC.AddItem(new MenuItem("usew", "Use W", true)).SetValue(true);
            menuC.AddItem(new MenuItem("useeStun", "Use E to stun", true)).SetValue(false);
            menuC.AddItem(new MenuItem("useeAA", "Block AA from target", true)).SetValue(true);
            menuC.AddItem(new MenuItem("user", "Use R", true)).SetValue(true);
            menuC.AddItem(new MenuItem("userMin", "   Min enemies around", true)).SetValue(new Slider(2, 1, 5));
            menuC.AddItem(new MenuItem("userDmg", "   Use R before high damage", true)).SetValue(true);
            menuC.AddItem(new MenuItem("useIgnite", "Use Ignite", true)).SetValue(true);
            menuC = ItemHandler.addItemOptons(menuC);
            config.AddSubMenu(menuC);
            // Harass Settings
            Menu menuH = new Menu("Harass ", "Hsettings");

            menuH.AddItem(new MenuItem("useqH", "Use Q", true)).SetValue(true);
            menuH.AddItem(new MenuItem("usewH", "Use W on target", true)).SetValue(true);
            menuH.AddItem(new MenuItem("minmanaH", "Keep X% mana", true)).SetValue(new Slider(1, 1, 100));
            config.AddSubMenu(menuH);
            // LaneClear Settings
            Menu menuLC = new Menu("LaneClear ", "Lcsettings");

            menuLC.AddItem(new MenuItem("useqLC", "Use Q", true)).SetValue(true);
            menuLC.AddItem(new MenuItem("usewLC", "Use w", true)).SetValue(true);
            menuLC.AddItem(new MenuItem("minmana", "Keep X% mana", true)).SetValue(new Slider(1, 1, 100));
            config.AddSubMenu(menuLC);

            Menu menuM = new Menu("Misc ", "Msettings");

            menuM.AddItem(new MenuItem("autoE", "Auto E", true)).SetValue(true);
            menuM.AddItem(new MenuItem("EAggro", "   Aggro count", true)).SetValue(new Slider(3, 1, 10));
            menuM.AddItem(new MenuItem("Emindam", "   Damage % in health", true)).SetValue(new Slider(15, 1, 100));
            menuM.AddItem(new MenuItem("wardJump", "Ward jump", true))
            .SetValue(new KeyBind("T".ToCharArray()[0], KeyBindType.Press))
            .SetFontStyle(System.Drawing.FontStyle.Bold, SharpDX.Color.Orange);
            menuM = DrawHelper.AddMisc(menuM);

            config.AddSubMenu(menuM);


            config.AddItem(new MenuItem("UnderratedAIO", "by Soresu v" + Program.version.ToString().Replace(",", ".")));
            config.AddToMainMenu();
        }
Ejemplo n.º 28
0
        private void CastEqKillsteal()
        {
            var target =
                TargetSelector.GetTarget(
                    Variables.Spell[Variables.Spells.E].Range + Variables.Spell[Variables.Spells.Q2].Range,
                    DamageType.Physical);

            if (
                !target.LSIsValidTarget(
                    Variables.Spell[Variables.Spells.E].Range + Variables.Spell[Variables.Spells.Q2].Range))
            {
                return;
            }

            var dashSpeed          = (int)(Variables.Spell[Variables.Spells.E].Range / (700 + ObjectManager.Player.MoveSpeed));
            var extendedPrediction = GetExtendedPrediction(target, dashSpeed);

            var minions =
                ObjectManager.Get <Obj_AI_Minion>()
                .Where(x => x.IsEnemy && x.IsValid && x.LSDistance(extendedPrediction, true) < 900 * 900)
                .OrderByDescending(x => x.LSDistance(extendedPrediction));

            foreach (var minion in
                     minions.Select(x => LeagueSharp.Common.Prediction.GetPrediction(x, dashSpeed))
                     .Select(
                         pred =>
                         MathHelper.GetCicleLineInteraction(
                             pred.UnitPosition.LSTo2D(),
                             extendedPrediction.LSTo2D(),
                             ObjectManager.Player.ServerPosition.LSTo2D(),
                             Variables.Spell[Variables.Spells.E].Range))
                     .Select(inter => inter.GetBestInter(target)))
            {
                if (Math.Abs(minion.X) < 1)
                {
                    return;
                }

                if (!NavMesh.GetCollisionFlags(minion.To3D()).HasFlag(CollisionFlags.Wall) &&
                    !NavMesh.GetCollisionFlags(minion.To3D()).HasFlag(CollisionFlags.Building) &&
                    minion.To3D().IsSafe(Variables.Spell[Variables.Spells.E].Range))
                {
                    Variables.Spell[Variables.Spells.E].Cast((Vector3)minion);
                }
            }

            var champions =
                ObjectManager.Get <AIHeroClient>()
                .Where(x => x.IsEnemy && x.IsValid && x.LSDistance(extendedPrediction, true) < 900 * 900)
                .OrderByDescending(x => x.LSDistance(extendedPrediction));

            if (getCheckBoxItem(MenuGenerator.miscOptions, "com.ilucian.misc.useChampions"))
            {
                foreach (var position in
                         champions.Select(x => LeagueSharp.Common.Prediction.GetPrediction(x, dashSpeed))
                         .Select(
                             pred =>
                             MathHelper.GetCicleLineInteraction(
                                 pred.UnitPosition.LSTo2D(),
                                 extendedPrediction.LSTo2D(),
                                 ObjectManager.Player.ServerPosition.LSTo2D(),
                                 Variables.Spell[Variables.Spells.E].Range))
                         .Select(inter => inter.GetBestInter(target)))
                {
                    if (Math.Abs(position.X) < 1)
                    {
                        return;
                    }

                    if (!NavMesh.GetCollisionFlags(position.To3D()).HasFlag(CollisionFlags.Wall) &&
                        !NavMesh.GetCollisionFlags(position.To3D()).HasFlag(CollisionFlags.Building) &&
                        position.To3D().IsSafe(Variables.Spell[Variables.Spells.E].Range))
                    {
                        Variables.Spell[Variables.Spells.E].Cast((Vector3)position);
                    }
                }
            }
        }
Ejemplo n.º 29
0
        public Obj_AI_Hero GetTarget(
            float vDefaultRange = 0,
            TargetSelector.DamageType vDefaultDamageType = TargetSelector.DamageType.Physical)
        {
            if (this.Selector != TargetSelect.Syndra)
            {
                return TargetSelector.GetTarget(vDefaultRange, vDefaultDamageType);
            }

            vDefaultRange = Math.Abs(vDefaultRange) < 0.00001
                                ? Program.Eq.Range
                                : this.Config.Item("Range").GetValue<Slider>().Value;

            var vEnemy =
                HeroManager.Enemies.Where(e => e.IsValidTarget(vDefaultRange) && !e.IsZombie)
                    .Where(e => this.Config.Item("enemy." + e.ChampionName) != null)
                    .Where(e => this.Config.Item("enemy." + e.ChampionName).GetValue<bool>());

            if (this.Config.Item("Set").GetValue<StringList>().SelectedIndex == 1)
            {
                vEnemy = (from vEn in vEnemy select vEn).OrderByDescending(vEn => vEn.MaxHealth);
            }

            var objAiHeroes = vEnemy as Obj_AI_Hero[] ?? vEnemy.ToArray();

            var t = !objAiHeroes.Any() ? TargetSelector.GetTarget(vDefaultRange, vDefaultDamageType) : objAiHeroes[0];

            return t;
        }
Ejemplo n.º 30
0
        private void OnUpdate(EventArgs args)
        {
            Variables.Spell[Variables.Spells.W].Collision =
                getCheckBoxItem(MenuGenerator.miscOptions, "com.ilucian.misc.usePrediction");
            Killsteal();

            if (getCheckBoxItem(MenuGenerator.miscOptions, "com.ilucian.misc.antiMelee") &&
                Variables.Spell[Variables.Spells.E].IsReady())
            {
                foreach (var meleeTarget in
                         HeroManager.Enemies.Where(
                             x =>
                             x.IsMelee && x.LSDistance(ObjectManager.Player) <= x.AttackRange * 2f &&
                             ObjectManager.Player.HealthPercent <= 30 && x.HealthPercent > 50))
                {
                    Variables.Spell[Variables.Spells.E].Cast(
                        ObjectManager.Player.ServerPosition.LSExtend(meleeTarget.Position, -475));
                }
            }

            if (getKeyBindItem(MenuGenerator.comboOptions, "com.ilucian.combo.forceR"))
            {
                SemiUlt();
                EloBuddy.Player.IssueOrder(GameObjectOrder.MoveTo, Game.CursorPos);
            }

            if (ObjectManager.Player.HasBuff("LucianR") &&
                getKeyBindItem(MenuGenerator.comboOptions, "com.ilucian.combo.forceR"))
            {
                PortAIO.OrbwalkerManager.SetAttack(false);
            }

            if (!ObjectManager.Player.HasBuff("LucianR") ||
                !getKeyBindItem(MenuGenerator.comboOptions, "com.ilucian.combo.forceR"))
            {
                PortAIO.OrbwalkerManager.SetAttack(true);
            }

            if (getCheckBoxItem(MenuGenerator.miscOptions, "com.ilucian.misc.forcePassive") && Variables.HasPassive())
            {
                var target = TargetSelector.GetTarget(
                    ObjectManager.Player.AttackRange,
                    DamageType.Physical);
                if (target != null && target.IsValid && target.IsHPBarRendered)
                {
                    Orbwalker.ForcedTarget = (target);
                }
                else
                {
                    Orbwalker.ForcedTarget = (null);
                }
            }

            AutoHarass();

            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo))
            {
                // OnCombo();
                if (getCheckBoxItem(MenuGenerator.comboOptions, "com.ilucian.combo.qExtended"))
                {
                    CastExtendedQ();
                }
            }

            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Harass))
            {
                OnHarass();
            }

            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear))
            {
                OnLaneclear();
            }
        }
Ejemplo n.º 31
0
        private static void Combo()
        {
            var qtarget = TargetSelector.GetTarget(Q.Range);

            if (qtarget == null || !qtarget.IsValidTarget(Q.Range))
            {
                return;
            }

            var wtarget = TargetSelector.GetTarget(W.Range);

            if (wtarget == null || !wtarget.IsValidTarget(W.Range))
            {
                return;
            }

            var etarget = TargetSelector.GetTarget(E.Range);

            if (etarget == null || !etarget.IsValidTarget(E.Range))
            {
                return;
            }

            var rtarget = TargetSelector.GetTarget(R.Range);

            if (rtarget == null || !rtarget.IsValidTarget(R.Range))
            {
                return;
            }

            if (MenuWrapper.Combo.Q.Enabled && Q.IsReady() && !MenuWrapper.Combo.Qstun.Enabled)
            {
                var qPred = Q.GetPrediction(qtarget, false, -1, CollisionObjects.Minions | CollisionObjects.YasuoWall | CollisionObjects.Heroes);
                if (qPred.Hitchance >= HitChance.High)
                {
                    DelayAction.Add((int)(qtarget.Distance(Player.Position) / 3.5f + Game.Ping), () => {
                        Q.Cast(qPred.CastPosition);
                    });
                }
            }

            if (MenuWrapper.Combo.Qstun.Enabled && Q.IsReady())
            {
                var qPred = Q.GetPrediction(qtarget, false, -1, CollisionObjects.Minions | CollisionObjects.YasuoWall | CollisionObjects.Heroes);
                if (qPred.Hitchance >= HitChance.High)
                {
                    foreach (var t in GameObjects.EnemyHeroes.Where(x => x.IsValidTarget(E.Range) && x.HasBuff("brandablaze")))
                    {
                        ;
                    }
                }
                {
                    DelayAction.Add((int)(qtarget.Distance(Player.Position) / 2f + Game.Ping), () => {
                        Q.Cast(qPred.CastPosition);
                    });
                }
            }

            if (MenuWrapper.Combo.W.Enabled && W.IsReady())
            {
                var wPred = W.GetPrediction(wtarget, false, 0);
                if (wPred.Hitchance >= HitChance.High)
                {
                    DelayAction.Add((int)(wtarget.Distance(Player.Position) / 2f + Game.Ping), () =>
                    {
                        W.Cast(wPred.CastPosition);
                    });
                }
            }

            if (MenuWrapper.Combo.E.Enabled && E.IsReady())
            {
                DelayAction.Add((int)(etarget.Distance(Player.Position) / 2f + Game.Ping), () =>
                {
                    E.Cast(etarget);
                });
            }

            if (MenuWrapper.Combo.R.Enabled && R.IsReady())
            {
                DelayAction.Add((int)(rtarget.Distance(Player.Position) / 2f + Game.Ping), () =>
                {
                    R.Cast(rtarget);
                });
            }
        }
Ejemplo n.º 32
0
        private static void Combo()
        {
            bool vQ     = _q.IsReady() && getCheckBoxItem(comboMenu, "teddy.bear.combo.useq");
            bool vW     = _w.IsReady() && getCheckBoxItem(comboMenu, "teddy.bear.combo.usew");
            bool vE     = _e.IsReady() && getCheckBoxItem(comboMenu, "teddy.bear.combo.usee");
            bool vR     = _r.IsReady() && getCheckBoxItem(comboMenu, "teddy.bear.combo.user");;
            bool useskW = getCheckBoxItem(misc, "teddy.bear.misc.skW");

            AIHeroClient tsQ = TargetSelector.GetTarget(_q.Range, DamageType.Magical);
            AIHeroClient tsR = TargetSelector.GetTarget(_r.Range, DamageType.Magical);

            #region Q-Cast
            if (vQ)
            {
                if (tsQ.Distance(Player.Position) >= 2500 && tsQ.Direction == Player.Direction && tsQ.MoveSpeed > Player.MoveSpeed &&
                    tsQ.MoveSpeed < Player.MoveSpeed * 1.3)
                {
                    _q.Cast(tsQ);
                }
                if (tsQ.GetEnemiesInRange(100).Any(enemies => enemies.IsEnemy && !enemies.IsDead) && tsQ.IsValidTarget())
                {
                    _q.Cast(tsQ);
                }
                else if (Player.CountAlliesInRange(500) >= 1 && tsQ.IsValidTarget())
                {
                    _q.Cast(tsQ);
                }
                else if (tsQ.IsValidTarget())
                {
                    _q.Cast(tsQ);
                }
            }
            #endregion

            #region W-Cast
            if (vW && useskW)
            {
                if (tsQ.IsValidTarget(_w.Range) && tsQ.Health < _w.GetDamage(tsQ))
                {
                    _w.CastOnUnit(tsQ);
                }
            }
            else if (vW)
            {
                if (tsQ.IsValidTarget(_w.Range))
                {
                    _w.CastOnUnit(tsQ);
                }
            }
            #endregion

            #region E-Cast
            if (vE)
            {
                if (tsQ.IsValidTarget(_e.Range) && tsQ.Distance(Player.Position) <= _w.Range)
                {
                    _e.Cast();
                }
            }
            #endregion

            #region R-Cast
            if (vR)
            {
                if (tsR.IsValidTarget(Player.AttackRange) && tsR.HealthPercent > 25)
                {
                    _r.Cast();
                }
            }
            #endregion
        }
Ejemplo n.º 33
0
        private static void onLoad(EventArgs args)
        {
            if (ObjectManager.Player.ChampionName != CharName)
            {
                return;
            }

            Yasuo.setSkillShots();
            Yasuo.setDashes();
            Yasuo.point1 = Yasuo.Player.Position;
            Game.PrintChat("YasuoSharpV2 by DeTuKs");

            try
            {
                Config = new Menu("【無為汉化】亚索V2", "Yasuo", true);
                //Orbwalker
                Config.AddSubMenu(new Menu("走砍", "Orbwalker"));
                Orbwalker = new Orbwalking.Orbwalker(Config.SubMenu("Orbwalker"));
                //TS
                var TargetSelectorMenu = new Menu("目标选择", "Target Selector");
                TargetSelector.AddToMenu(TargetSelectorMenu);
                Config.AddSubMenu(TargetSelectorMenu);
                //Combo
                Config.AddSubMenu(new Menu("连招", "combo"));
                Config.SubMenu("combo").AddItem(new MenuItem("comboItems", "使用点燃")).SetValue(true);
                //SmartR
                Config.SubMenu("combo").AddItem(new MenuItem("smartR", "智能 R")).SetValue(true);
                Config.SubMenu("combo").AddItem(new MenuItem("useRHit", "使用 R 如果击中")).SetValue(new Slider(3, 5, 1));
                Config.SubMenu("combo").AddItem(new MenuItem("useRHitTime", "当要落地时使用︱R")).SetValue(true);
                Config.SubMenu("combo").AddItem(new MenuItem("useEWall", "安全使用 E ")).SetValue(true);
                //Flee away
                Config.SubMenu("combo").AddItem(new MenuItem("flee", "使用E逃跑")).SetValue(new KeyBind('Z', KeyBindType.Press, false));
                Config.SubMenu("combo").AddItem(new MenuItem("fleeStack", "逃跑时叠加Q")).SetValue(true);


                //LastHit
                Config.AddSubMenu(new Menu("补兵", "lHit"));
                Config.SubMenu("lHit").AddItem(new MenuItem("useQlh", "使用 Q")).SetValue(true);
                Config.SubMenu("lHit").AddItem(new MenuItem("useElh", "使用 E")).SetValue(true);
                //LaneClear
                Config.AddSubMenu(new Menu("清兵", "lClear"));
                Config.SubMenu("lClear").AddItem(new MenuItem("useQlc", "使用 Q")).SetValue(true);
                Config.SubMenu("lClear").AddItem(new MenuItem("useEmpQHit", "小兵最少数量")).SetValue(new Slider(3, 6, 1));
                Config.SubMenu("lClear").AddItem(new MenuItem("useElc", "使用 E")).SetValue(true);
                //Harass
                Config.AddSubMenu(new Menu("骚扰", "harass"));
                Config.SubMenu("harass").AddItem(new MenuItem("harassTower", "塔下骚扰")).SetValue(false);
                Config.SubMenu("harass").AddItem(new MenuItem("harassOn", "骚扰敌人")).SetValue(true);
                Config.SubMenu("harass").AddItem(new MenuItem("harQ3Only", "只使Q3")).SetValue(false);
                //Drawings
                Config.AddSubMenu(new Menu("范围", "drawing"));
                Config.SubMenu("drawing").AddItem(new MenuItem("disDraw", "全部关闭")).SetValue(false);
                Config.SubMenu("drawing").AddItem(new MenuItem("drawQ", "Q范围")).SetValue(true);
                Config.SubMenu("drawing").AddItem(new MenuItem("drawE", "E范围")).SetValue(true);
                Config.SubMenu("drawing").AddItem(new MenuItem("drawR", "R范围")).SetValue(true);
                Config.SubMenu("drawing").AddItem(new MenuItem("drawWJ", "显示可穿越的墙")).SetValue(true);

                //Extra
                Config.AddSubMenu(new Menu("额外", "extra"));
                Config.SubMenu("extra").AddItem(new MenuItem("djTur", "不要跳进塔")).SetValue(true);
                Config.SubMenu("extra").AddItem(new MenuItem("autoLevel", "自动加点")).SetValue(true);
                Config.SubMenu("extra").AddItem(new MenuItem("levUpSeq", "")).SetValue(new StringList(new string[2] {
                    "Q E W Q start", "Q E Q W start"
                }));

                //LastHit
                Config.AddSubMenu(new Menu("风墙", "aShots"));
                //SmartW
                Config.SubMenu("aShots").AddItem(new MenuItem("smartW", "只能使用W")).SetValue(true);
                Config.SubMenu("aShots").AddItem(new MenuItem("smartEDogue", "E 使用dogue")).SetValue(true);
                Config.SubMenu("aShots").AddItem(new MenuItem("wwDanger", "WW 只躲危险技能")).SetValue(false);
                Config.SubMenu("aShots").AddItem(new MenuItem("wwDmg", "触发WW 血量低于")).SetValue(new Slider(0, 100, 1));
                skillShotMenu = getSkilshotMenu();
                Config.SubMenu("aShots").AddSubMenu(skillShotMenu);
                //Debug
                Config.AddSubMenu(new Menu("调试", "debug"));
                Config.SubMenu("debug").AddItem(new MenuItem("WWLast", "Print last ww blocked")).SetValue(new KeyBind('T', KeyBindType.Press, false));
                Config.SubMenu("debug").AddItem(new MenuItem("saveDash", "saveDashd")).SetValue(new KeyBind('O', KeyBindType.Press, false));
                Config.SubMenu("debug").AddItem(new MenuItem("exportDash", "export dashes")).SetValue(new KeyBind('P', KeyBindType.Press, false));
                Config.SubMenu("debug").AddItem(new MenuItem("deleteDash", "deleteLastDash")).SetValue(new KeyBind('I', KeyBindType.Press, false));

                Config.AddSubMenu(new Menu("無為汉化", "by wuwei"));
                Config.SubMenu("by wuwei").AddItem(new MenuItem("qunhao", "汉化群:386289593"));
                Config.SubMenu("by wuwei").AddItem(new MenuItem("qunhao2", "娃娃群:158994507"));
                Config.AddToMainMenu();
                Drawing.OnDraw    += onDraw;
                Game.OnGameUpdate += OnGameUpdate;

                GameObject.OnCreate            += OnCreateObject;
                GameObject.OnDelete            += OnDeleteObject;
                Obj_AI_Base.OnProcessSpellCast += OnProcessSpell;
                CustomEvents.Unit.OnLevelUp    += OnLevelUp;

                Game.OnGameSendPacket    += OnGameSendPacket;
                Game.OnGameProcessPacket += OnGameProcessPacket;

                SkillshotDetector.OnDetectSkillshot += OnDetectSkillshot;
                SkillshotDetector.OnDeleteMissile   += OnDeleteMissile;
            }
            catch
            {
                Game.PrintChat("Oops. Something went wrong with Yasuo - Sharpino");
            }
        }
Ejemplo n.º 34
0
        private static void LogicW()
        {
            var t = TargetSelector.GetTarget(W.Range, DamageType.Physical);

            if (t.LSIsValidTarget())
            {
                var wDmg = GetWdmg(t);
                if (wDmg > t.Health - OktwCommon.GetIncomingDamage(t))
                {
                    Program.CastSpell(W, t);
                }

                if (getCheckBoxItem(wMenu, "autoWcombo") && !Program.Combo)
                {
                    return;
                }

                if (Player.LSCountEnemiesInRange(400) > 1 || Player.LSCountEnemiesInRange(250) > 0)
                {
                    return;
                }

                if (t.HasBuff("jhinespotteddebuff") || !getCheckBoxItem(wMenu, "Wstun"))
                {
                    if (Player.LSDistance(t) < getSliderItem(wMenu, "MaxRangeW"))
                    {
                        if (Program.Combo && Player.Mana > RMANA + WMANA)
                        {
                            Program.CastSpell(W, t);
                        }
                        else if (Program.Farm && getCheckBoxItem(wMenu, "harrasW") && getCheckBoxItem(harassMenu, "harras" + t.ChampionName) &&
                                 Player.Mana > RMANA + WMANA + QMANA + WMANA && OktwCommon.CanHarras())
                        {
                            Program.CastSpell(W, t);
                        }
                    }
                }


                if (!Program.None && Player.Mana > RMANA + WMANA)
                {
                    if (getCheckBoxItem(wMenu, "Waoe"))
                    {
                        W.CastIfWillHit(t, 2);
                    }
                    if (getCheckBoxItem(wMenu, "autoWcc") && !Program.Combo)
                    {
                        foreach (var enemy in Program.Enemies.Where(enemy => enemy.LSIsValidTarget(W.Range) && (!OktwCommon.CanMove(enemy) || enemy.HasBuff("jhinespotteddebuff"))))
                        {
                            if (!OktwCommon.CanMove(enemy) && !enemy.CanMove)
                            {
                                W.Cast(enemy);
                            }
                            if (enemy.HasBuff("jhinespotteddebuff"))
                            {
                                Program.CastSpell(W, enemy);
                            }
                        }
                    }
                }
            }
            if (Program.LaneClear && Player.ManaPercent > getSliderItem(farmMenu, "Mana") && getCheckBoxItem(farmMenu, "farmW") && Player.Mana > RMANA + WMANA)
            {
                var minionList   = Cache.GetMinions(Player.ServerPosition, W.Range);
                var farmPosition = W.GetLineFarmLocation(minionList, W.Width);

                if (farmPosition.MinionsHit >= getSliderItem(farmMenu, "LCminions"))
                {
                    W.Cast(farmPosition.Position);
                }
            }
        }
Ejemplo n.º 35
0
        public override void Execute()
        {
            if (!SpellManager.ShouldCast(false))
            {
                return;
            }

            const int   range     = 1100;
            const float hitchance = 56f;
            const float aoeratio  = 0.2f;

            var enemies        = EntityManager.Heroes.Enemies.Where(n => n.IsValidTarget(range));
            var selectedTarget = TargetSelector.GetTarget(range, DamageType.Magical);
            var allTargets     =
                new[] { selectedTarget }.Concat(
                enemies.Where(n => n.Index != selectedTarget.Index)
                .OrderByDescending(n => Damage.TotalDamage(SpellSlot.Q, n) / n.Health)).Where(n => n.IsValidTarget() && !n.WillDie());

            if (selectedTarget == null && !enemies.Any())
            {
                return;
            }

            #region Killsteal logic

            var ksQ = Config.Menu["ksQ"].Cast <CheckBox>().CurrentValue&&
                      Player.CanUseSpell(SpellSlot.Q) == SpellState.Ready;
            var ksW = Config.Menu["ksW"].Cast <CheckBox>().CurrentValue&&
                      Player.CanUseSpell(SpellSlot.W) == SpellState.Ready;
            var ksE = Config.Menu["ksE"].Cast <CheckBox>().CurrentValue&&
                      Player.CanUseSpell(SpellSlot.E) == SpellState.Ready;
            var ksR = Config.Menu["ksR"].Cast <CheckBox>().CurrentValue&&
                      Player.CanUseSpell(SpellSlot.R) == SpellState.Ready;

            foreach (var enemy in allTargets)
            {
                if (ksE && Player.Instance.IsInRange(enemy, E.Range) && enemy.Killable(SpellSlot.E))
                {
                    E.Cast(enemy);
                    return;
                }

                if (ksW && Player.Instance.IsInRange(enemy, W.Range + W.Radius) && enemy.Killable(SpellSlot.W))
                {
                    var prediction = W.GetPrediction(enemy);

                    if (prediction.HitChancePercent >= hitchance)
                    {
                        W.Cast(prediction.CastPosition);
                        return;
                    }
                }

                if (ksQ && Player.Instance.IsInRange(enemy, Q.Range) && enemy.Killable(SpellSlot.Q))
                {
                    var prediction = Q.GetPrediction(enemy);

                    if (prediction.HitChancePercent >= hitchance)
                    {
                        Q.Cast(prediction.CastPosition);
                        return;
                    }
                }

                if (ksR && Player.Instance.IsInRange(enemy, R.Range) && enemy.Killable(SpellSlot.R))
                {
                    R.Cast(enemy);
                    return;
                }
            }

            #endregion

            #region Combo logic

            var useQ = Config.Menu["comboQ"].Cast <CheckBox>().CurrentValue&&
                       Player.CanUseSpell(SpellSlot.Q) == SpellState.Ready;
            var useW = Config.Menu["comboW"].Cast <CheckBox>().CurrentValue&&
                       Player.CanUseSpell(SpellSlot.W) == SpellState.Ready;
            var useE = Config.Menu["comboE"].Cast <CheckBox>().CurrentValue&&
                       Player.CanUseSpell(SpellSlot.E) == SpellState.Ready;
            var useR = Config.Menu["comboR"].Cast <CheckBox>().CurrentValue&&
                       Player.CanUseSpell(SpellSlot.R) == SpellState.Ready;

            // check for AOE then single target burst
            // check W first
            if (enemies.Count() > 1)
            {
                if (useW)
                {
                    var aoePrediction =
                        Prediction.Position.PredictCircularMissileAoe(enemies.Cast <Obj_AI_Base>().ToArray(), W.Range,
                                                                      W.Radius, W.CastDelay, W.Speed)
                        .OrderByDescending(r => r.GetCollisionObjects <Obj_AI_Minion>().Length)
                        .FirstOrDefault();

                    if (aoePrediction != null)
                    {
                        var predictedHeroes = aoePrediction.GetCollisionObjects <AIHeroClient>();

                        if (predictedHeroes.Length > 1 && (float)predictedHeroes.Length / enemies.Count() >= aoeratio)
                        {
                            W.Cast(aoePrediction.CastPosition);
                            return;
                        }
                    }
                }

                // check E next
                if (useE)
                {
                    var enemyE =
                        enemies.Where(n => n.IsValidTarget(E.Range) && n.IsBlazed())
                        .OrderByDescending(n => n.CountEnemiesInRange(SpellManager.ConflagrationSpreadRange))
                        .FirstOrDefault();

                    if (enemyE != null && enemyE.CountEnemiesInRange(SpellManager.ConflagrationSpreadRange) > 1)
                    {
                        E.Cast(enemyE);
                        return;
                    }
                }
            }

            // single target burst
            if (useE)
            {
                var targets = allTargets.Where(n => Player.Instance.IsInRange(n, E.Range));

                foreach (var target in targets)
                {
                    E.Cast(target);
                    return;
                }
            }

            if (useW)
            {
                foreach (var target in allTargets)
                {
                    if (W.Cast(target))
                    {
                        return;
                    }
                }
            }

            if (useQ)
            {
                foreach (var target in allTargets.Where(n => n.IsBlazed()))
                {
                    if (Q.Cast(target))
                    {
                        return;
                    }
                }
            }

            if (useR)
            {
                var bestTarget =
                    allTargets.Where(n => Player.Instance.IsInRange(n, R.Range))
                    .OrderByDescending(n => n.CountEnemiesInRange(SpellManager.PyroclasmSpreadRange))
                    .FirstOrDefault();

                if (bestTarget != null &&
                    bestTarget.CountEnemiesInRange(SpellManager.PyroclasmSpreadRange) >=
                    Config.Menu["minEnemiesR"].Cast <Slider>().CurrentValue)
                {
                    if ((!useW && !useE || bestTarget.IsBlazed()))
                    {
                        R.Cast(bestTarget);
                    }
                }
            }

            #endregion
        }
Ejemplo n.º 36
0
        private static Obj_AI_Hero GetEnemy(float vDefaultRange = 0, TargetSelector.DamageType vDefaultDamageType = TargetSelector.DamageType.Magical)
        {
            if (Math.Abs(vDefaultRange) < 0.00001)
                vDefaultRange = Q.Range;

            if (!Config.Item("AssassinActive").GetValue<bool>())
                return TargetSelector.GetTarget(vDefaultRange, vDefaultDamageType);

            var assassinRange = Config.Item("AssassinSearchRange").GetValue<Slider>().Value;

            var vEnemy = ObjectManager.Get<Obj_AI_Hero>()
                .Where(
                    enemy =>
                        enemy.Team != ObjectManager.Player.Team && !enemy.IsDead && enemy.IsVisible &&
                        Config.Item("Assassin" + enemy.ChampionName) != null &&
                        Config.Item("Assassin" + enemy.ChampionName).GetValue<bool>() &&
                        ObjectManager.Player.Distance(enemy) < assassinRange);

            if (Config.Item("AssassinSelectOption").GetValue<StringList>().SelectedIndex == 1)
            {
                vEnemy = (from vEn in vEnemy select vEn).OrderByDescending(vEn => vEn.MaxHealth);
            }

            Obj_AI_Hero[] objAiHeroes = vEnemy as Obj_AI_Hero[] ?? vEnemy.ToArray();

            Obj_AI_Hero t = !objAiHeroes.Any()
                ? TargetSelector.GetTarget(vDefaultRange, vDefaultDamageType)
                : objAiHeroes[0];

            return t;
        }
Ejemplo n.º 37
0
        private static void LogicE()
        {
            if (getCheckBoxItem(eMenu, "autoE"))
            {
                var trapPos = OktwCommon.GetTrapPos(E.Range);
                if (!trapPos.IsZero)
                {
                    E.Cast(trapPos);
                }

                foreach (var enemy in Program.Enemies.Where(enemy => enemy.LSIsValidTarget(E.Range) && !OktwCommon.CanMove(enemy)))
                {
                    E.Cast(enemy);
                }
            }

            var t = TargetSelector.GetTarget(E.Range, DamageType.Physical);

            if (t.LSIsValidTarget() && getBoxItem(eMenu, "EmodeCombo") != 2)
            {
                if (Program.Combo && !Player.Spellbook.IsAutoAttacking)
                {
                    if (getBoxItem(eMenu, "EmodeCombo") == 1)
                    {
                        if (E.GetPrediction(t).CastPosition.LSDistance(t.Position) > 100)
                        {
                            if (Player.Position.LSDistance(t.ServerPosition) > Player.Position.LSDistance(t.Position))
                            {
                                if (t.Position.LSDistance(Player.ServerPosition) < t.Position.LSDistance(Player.Position))
                                {
                                    Program.CastSpell(E, t);
                                }
                            }
                            else
                            {
                                if (t.Position.LSDistance(Player.ServerPosition) > t.Position.LSDistance(Player.Position))
                                {
                                    Program.CastSpell(E, t);
                                }
                            }
                        }
                    }
                    else
                    {
                        Program.CastSpell(E, t);
                    }
                }

                E.CastIfWillHit(t, getSliderItem(eMenu, "Eaoe"));
            }
            else if (Program.LaneClear && Player.ManaPercent > getSliderItem(farmMenu, "Mana") && getCheckBoxItem(farmMenu, "farmE"))
            {
                var minionList   = Cache.GetMinions(Player.ServerPosition, E.Range);
                var farmPosition = E.GetCircularFarmLocation(minionList, E.Width);

                if (farmPosition.MinionsHit >= getSliderItem(farmMenu, "LCminions"))
                {
                    E.Cast(farmPosition.Position);
                }
            }
        }
Ejemplo n.º 38
0
        private static void OnGameUpdate(EventArgs args)
        {
            try
            {
                Yasuo.Q.SetSkillshot(Yasuo.getNewQSpeed(), 50f, float.MaxValue, false, SkillshotType.SkillshotLine);

                if (Yasuo.startDash + 475000 / ((700 + Yasuo.Player.MoveSpeed)) < Environment.TickCount && Yasuo.isDashigPro)
                {
                    Yasuo.isDashigPro = false;
                }

                //updateSkillshots();
                //Remove the detected skillshots that have expired.
                DetectedSkillshots.RemoveAll(skillshot => !skillshot.IsActive());

                Obj_AI_Hero target = TargetSelector.GetTarget((Yasuo.E.IsReady()) ? 1500 : 475, TargetSelector.DamageType.Physical);
                if (Orbwalker.ActiveMode.ToString() == "Combo")
                {
                    Yasuo.doCombo(target);
                }

                if (Orbwalker.ActiveMode.ToString() == "LastHit")
                {
                    Yasuo.doLastHit(target);
                    Yasuo.useQSmart(target);
                }

                if (Orbwalker.ActiveMode.ToString() == "Mixed")
                {
                    Yasuo.doLastHit(target);
                    Yasuo.useQSmart(target);
                }

                if (Orbwalker.ActiveMode.ToString() == "LaneClear")
                {
                    Yasuo.doLaneClear(target);
                }

                if (Config.Item("flee").GetValue <KeyBind>().Active)
                {
                    Yasuo.fleeToMouse();
                }

                if (Config.Item("saveDash").GetValue <KeyBind>().Active&& canSave)
                {
                    Yasuo.saveLastDash();
                    canSave = false;
                }
                else
                {
                    canSave = true;
                }

                if (Config.Item("deleteDash").GetValue <KeyBind>().Active&& canDelete)
                {
                    if (Yasuo.dashes.Count > 0)
                    {
                        Yasuo.dashes.RemoveAt(Yasuo.dashes.Count - 1);
                    }
                    canDelete = false;
                }
                else
                {
                    canDelete = true;
                }
                if (Config.Item("exportDash").GetValue <KeyBind>().Active&& canExport)
                {
                    using (var file = new System.IO.StreamWriter(@"C:\YasuoDashes.txt"))
                    {
                        foreach (var dash in Yasuo.dashes)
                        {
                            string dashS = "dashes.Add(new YasDash(new Vector3(" +
                                           dash.from.X.ToString("0.00").Replace(',', '.') + "f," +
                                           dash.from.Y.ToString("0.00").Replace(',', '.') + "f," +
                                           dash.from.Z.ToString("0.00").Replace(',', '.') +
                                           "f),new Vector3(" + dash.to.X.ToString("0.00").Replace(',', '.') + "f," +
                                           dash.to.Y.ToString("0.00").Replace(',', '.') + "f," +
                                           dash.to.Z.ToString("0.00").Replace(',', '.') + "f)));";
                            //new YasDash(new Vector3(X,Y,Z),new Vector3(X,Y,Z))

                            file.WriteLine(dashS);
                        }
                        file.Close();
                    }

                    canExport = false;
                }
                else
                {
                    canExport = true;
                }

                if (Config.Item("WWLast").GetValue <KeyBind>().Active)
                {
                    Console.WriteLine("Last WW skill blocked: " + lastSpell);
                    Game.PrintChat("Last WW skill blocked: " + lastSpell);
                }

                if (Config.Item("harassOn").GetValue <bool>() && Orbwalker.ActiveMode.ToString() == "None")
                {
                    if (target != null)
                    {
                        Yasuo.useQSmart(target, Config.Item("harQ3Only").GetValue <bool>());
                    }
                }

                foreach (var mis in DetectedSkillshots)
                {
                    Yasuo.useWSmart(mis);

                    if (Config.Item("smartEDogue").GetValue <bool>() && !Yasuo.isSafePoint(Yasuo.Player.Position.To2D()).IsSafe)
                    {
                        Yasuo.useEtoSafe(mis);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
Ejemplo n.º 39
0
 public ActivationContext(Player controller, Card card, TargetSelector selector)
 {
     Controller =controller;
       Card = card;
       Selector = selector;
 }