protected override void LaneClear() { var useQ = Menu.Item(Menu.Name + ".lane-clear.q").GetValue <bool>() && Q.IsReady() && !Player.IsWindingUp && ResourceManager.Check("lane-clear"); if (useQ) { var minion = MinionManager.GetMinions(Q.Range) .Where( m => Q.GetDamage(m) > m.Health || HealthPrediction.LaneClearHealthPrediction( m, (int)(Player.AttackDelay * 1000), (int)(Q.Delay * 1000)) > Player.GetAutoAttackDamage(m) * 1.5f) .OrderBy(m => !Orbwalking.InAutoAttackRange(m)) .ThenBy(m => m.Health) .FirstOrDefault(); if (minion != null) { Q.Cast(minion); if (Q.GetDamage(minion) > minion.Health) { _lastFarmQKill = minion.NetworkId; } } } }
private void QLogic(HitChance hitChance) { var target = TargetSelector.GetTarget(Q); if (target != null) { var prediction = CPrediction.Line(Q, target, hitChance); if (prediction.TotalHits <= 0 || prediction.CastPosition.Equals(Vector3.Zero) || SpellCollision(Q, target) && !Orbwalking.InAutoAttackRange(target)) { var newTarget = TargetSelector.GetTarget( Q, true, default(Vector3), new List <Obj_AI_Hero> { target }); if (newTarget != null && !SpellCollision(Q, newTarget)) { prediction = CPrediction.Line(Q, newTarget, hitChance); } } if (prediction.TotalHits > 0 && !prediction.CastPosition.Equals(Vector3.Zero)) { Q.Cast(prediction.CastPosition); } } }