Exemple #1
0
        public override void farm()
        {
            var laneClear = true;

            if (player.ManaPercent < 65)
            {
                return;
            }

            var rangedMinions = EntityManager.MinionsAndMonsters.EnemyMinions.Where(x => !x.IsDead && x.IsMelee && x.IsInRange(ObjectManager.Player.ServerPosition, Q2.Range));
            var allMinions    = EntityManager.MinionsAndMonsters.GetLaneMinions(EntityManager.UnitTeam.Enemy, ObjectManager.Player.ServerPosition, Q2.Range);

            var useQi = 2;
            var useWi = 2;
            var useEi = 2;
            var useQ  = (laneClear && (useQi == 1 || useQi == 2)) || (!laneClear && (useQi == 0 || useQi == 2));
            var useW  = (laneClear && (useWi == 1 || useWi == 2)) || (!laneClear && (useWi == 0 || useWi == 2));
            var useE  = (laneClear && (useEi == 1 || useEi == 2)) || (!laneClear && (useEi == 0 || useEi == 2));

            if (laneClear)
            {
                if (Q1.IsReady() && useQ)
                {
                    var rangedLocation = Q2.GetCircularFarmLocation(rangedMinions, Q2.Width());
                    var location       = Q2.GetCircularFarmLocation(allMinions, Q2.Width());

                    var bLocation = (location.HitNumber > rangedLocation.HitNumber + 1) ? location : rangedLocation;

                    if (bLocation.HitNumber > 0)
                    {
                        Q2.Cast(bLocation.CastPosition);
                    }
                }

                if (W.IsReady() && useW)
                {
                    var dmgpct         = new[] { 25, 27.5, 30, 32.5, 35 }[W.Level - 1];
                    var killableTurret = ObjectManager.Get <Obj_AI_Turret>().FirstOrDefault(x => x.IsEnemy && ObjectManager.Player.Distance(x.Position) <= W.Range && x.HealthPercent < dmgpct);
                    if (killableTurret != null)
                    {
                        W.Cast(killableTurret.Position);
                    }
                }

                if (E.IsReady() && useE)
                {
                    var rangedLocation = E.GetCircularFarmLocation(rangedMinions, E.Width() * 2);
                    var location       = E.GetCircularFarmLocation(allMinions, E.Width() * 2);

                    var bLocation = (location.HitNumber > rangedLocation.HitNumber + 1) ? location : rangedLocation;

                    if (bLocation.HitNumber > 2)
                    {
                        E.Cast(bLocation.CastPosition);
                    }
                }
            }
            else
            {
                if (useQ && Q1.IsReady())
                {
                    foreach (var minion in allMinions)
                    {
                        if (!Player.Instance.IsInAutoAttackRange(minion))
                        {
                            var Qdamage = ObjectManager.Player.GetSpellDamage(minion, SpellSlot.Q) * 0.75;

                            if (Qdamage > Q1.GetHealthPrediction(minion))
                            {
                                Q2.Cast(minion);
                            }
                        }
                    }
                }

                if (E.IsReady() && useE)
                {
                    var rangedLocation = E.GetCircularFarmLocation(rangedMinions, E.Width() * 2);
                    var location       = E.GetCircularFarmLocation(allMinions, E.Width() * 2);

                    var bLocation = (location.HitNumber > rangedLocation.HitNumber + 1) ? location : rangedLocation;

                    if (bLocation.HitNumber > 2)
                    {
                        E.Cast(bLocation.CastPosition);
                    }
                }
            }
        }