Esempio n. 1
0
        public override void LaneClear()
        {
            var useQ = LaneClearMenu.checkbox("Q") && Q.IsReady() && Q.Mana(LaneClearMenu);

            var useW = LaneClearMenu.checkbox("W") && W.IsReady() && W.Mana(LaneClearMenu);

            var useE = LaneClearMenu.checkbox("E") && E.IsReady() && E.Mana(LaneClearMenu);

            var allMinionsQ = EntityManager.MinionsAndMonsters.EnemyMinions.Where(m => m != null && m.IsKillable(Q.MaximumRange));

            var allMinionsW = EntityManager.MinionsAndMonsters.EnemyMinions.Where(m => m != null && m.IsKillable(W.Range));

            var objAiMinionsQ = allMinionsQ as Obj_AI_Minion[] ?? allMinionsQ.ToArray();

            if (useQ && allMinionsQ != null)
            {
                var Qpos = EntityManager.MinionsAndMonsters.GetLineFarmLocation(objAiMinionsQ.ToArray(), Q.Width, (int)Q.MaximumRange);

                var useQi = LaneClearMenu.combobox(Q.Slot + "mode");

                if (useQi == 0 || useQi == 2)
                {
                    if (Q.IsCharging)
                    {
                        var locQ = Qpos.CastPosition;
                        if (Qpos.HitNumber >= 1)
                        {
                            Q.Cast(locQ);
                        }
                    }
                    else if (Qpos.HitNumber > 0)
                    {
                        Q.StartCharging();
                    }
                }

                if (useQi == 1 || useQi == 2)
                {
                    var minion = objAiMinionsQ.FirstOrDefault(m => Q.GetDamage(m) >= Prediction.Health.GetPrediction(m, Q.CastDelay));
                    if (Q.IsCharging && minion != null)
                    {
                        Q.Cast(minion);
                    }
                    else if (minion != null)
                    {
                        Q.StartCharging();
                    }
                }
            }

            if (useW && allMinionsW != null)
            {
                var objAiMinions = allMinionsW as Obj_AI_Minion[] ?? allMinionsW.ToArray();
                var Wpos         = EntityManager.MinionsAndMonsters.GetCircularFarmLocation(objAiMinions.ToArray(), W.Width, (int)W.Range, W.CastDelay, W.Speed);
                var useWi        = LaneClearMenu.combobox(W.Slot + "mode");

                if (useWi == 0 || useWi == 2)
                {
                    var locW = Wpos.CastPosition;
                    if (Wpos.HitNumber >= 1)
                    {
                        W.Cast(locW);
                    }
                }

                if (useWi == 1 || useWi == 2)
                {
                    var minion = objAiMinions.FirstOrDefault(m => W.GetDamage(m) >= Prediction.Health.GetPrediction(m, W.CastDelay));
                    if (minion != null)
                    {
                        W.Cast(minion);
                    }
                }
            }

            if (useE)
            {
                var useEi = LaneClearMenu.combobox(E.Slot + "mode");
                foreach (var minion in EntityManager.MinionsAndMonsters.EnemyMinions.Where(m => m != null && m.IsKillable(E.Range)))
                {
                    if (minion != null && (useEi == 0 || useEi == 2))
                    {
                        E.Cast(minion);
                    }

                    if (minion != null && (useEi == 1 || useEi == 2))
                    {
                        if (E.GetDamage(minion) >= Prediction.Health.GetPrediction(minion, E.CastDelay))
                        {
                            E.Cast(minion);
                        }
                    }
                }
            }
        }