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); } } } }