private void ELogic() { try { if (!DelayManager.Check("e-delay", _lastECast)) { return; } var ts = Targets.FirstOrDefault(t => E.CanCast(t) && GetPoisonBuffEndTime(t) > E.ArrivalTime(t)); if (ts != null) { var pred = E.GetPrediction(ts, false, -1f, new[] { CollisionableObjects.YasuoWall }); if (pred.Hitchance != HitChance.Collision) { _lastECast = Environment.TickCount; E.Cast(ts); } } } catch (Exception ex) { Global.Logger.AddItem(new LogItem(ex)); } }
protected override void LaneClear() { if (!ResourceManager.Check("lane-clear")) { return; } var useQ = Menu.Item(Menu.Name + ".lane-clear.q").GetValue <bool>() && Q.IsReady(); var useW = Menu.Item(Menu.Name + ".lane-clear.w").GetValue <bool>() && W.IsReady(); var useE = Menu.Item(Menu.Name + ".lane-clear.e").GetValue <bool>() && E.IsReady() && DelayManager.Check("e-delay", _lastECast); if (useE) { var minion = MinionManager.GetMinions(Player.ServerPosition, E.Range) .FirstOrDefault( e => GetPoisonBuffEndTime(e) > E.ArrivalTime(e) && (e.Health > E.GetDamage(e) * 2 || e.Health < E.GetDamage(e) - 5)); if (minion != null) { _lastEEndTime = Game.Time + E.ArrivalTime(minion) + 0.1f; _lastECast = Environment.TickCount; Casting.TargetSkill(minion, E); } } if (useQ || useW) { var minions = MinionManager.GetMinions(Player.ServerPosition, Q.Range + Q.Width) .Where(e => GetPoisonBuffEndTime(e) < Q.Delay * 1.1) .ToList(); if (minions.Any()) { if (useQ) { var prediction = Q.GetCircularFarmLocation(minions, Q.Width + 30); if (prediction.MinionsHit > 1 && Game.Time > _lastPoisonClearDelay || _lastPoisonClearPosition.Distance(prediction.Position) > W.Width * 1.1f) { var mP = minions.Count( p => p.Distance(prediction.Position) < Q.Width + 30 && GetPoisonBuffEndTime(p) >= 0.5f); if (prediction.MinionsHit - mP > 1) { _lastPoisonClearDelay = Game.Time + Q.Delay + 1; _lastPoisonClearPosition = prediction.Position; Q.Cast(prediction.Position); } } } if (useW) { var prediction = W.GetCircularFarmLocation(minions, W.Width + 50); if (prediction.MinionsHit > 2 && (Game.Time > _lastPoisonClearDelay || _lastPoisonClearPosition.Distance(prediction.Position) > Q.Width * 1.1f)) { var mP = minions.Count( p => p.Distance(prediction.Position) < W.Width + 50 && GetPoisonBuffEndTime(p) >= 0.5f); if (prediction.MinionsHit - mP > 1) { _lastPoisonClearDelay = Game.Time + W.Delay + 2; _lastPoisonClearPosition = prediction.Position; W.Cast(prediction.Position); } } } } } }
protected override void LaneClear() { var q = Menu.Item(Menu.Name + ".lane-clear.q").GetValue <bool>() && Q.IsReady(); var w = Menu.Item(Menu.Name + ".lane-clear.w").GetValue <bool>() && W.IsReady(); if (Menu.Item(Menu.Name + ".lane-clear.e").GetValue <bool>() && E.IsReady() && ManaManager.Check("lane-clear") && DelayManager.Check("e-delay", _lastECast)) { var minion = MinionManager.GetMinions( Player.ServerPosition, E.Range, MinionTypes.All, MinionTeam.NotAlly, MinionOrderTypes.MaxHealth) .Where( e => GetPoisonBuffEndTime(e) > E.ArrivalTime(e) && (e.Team == GameObjectTeam.Neutral || (e.Health > E.GetDamage(e) * 2 || e.Health < E.GetDamage(e) - 5))) .OrderByDescending( m => m.CharData.BaseSkinName.Contains("MinionSiege", StringComparison.OrdinalIgnoreCase)) .FirstOrDefault(); if (minion != null) { _lastEEndTime = Game.Time + E.ArrivalTime(minion) + 0.1f; _lastECast = Environment.TickCount; Casting.TargetSkill(minion, E); } } if (q || w) { var minions = MinionManager.GetMinions(Player.ServerPosition, Q.Range + Q.Width) .Where(e => GetPoisonBuffEndTime(e) < Q.Delay * 1.1) .OrderByDescending( m => m.CharData.BaseSkinName.Contains("MinionSiege", StringComparison.OrdinalIgnoreCase)) .ToList(); if (minions.Any()) { if (q) { var prediction = Q.GetCircularFarmLocation(minions, Q.Width + 30); if (prediction.MinionsHit > 1 && _lastPoisonClearDelay < Game.Time) { _lastPoisonClearDelay = Game.Time + Q.Delay; Q.Cast(prediction.Position); } } if (w) { var prediction = W.GetCircularFarmLocation(minions, W.Width + 50); if (prediction.MinionsHit > 2 && _lastPoisonClearDelay < Game.Time) { _lastPoisonClearDelay = Game.Time + W.Delay; W.Cast(prediction.Position); } } } else { var creep = MinionManager.GetMinions( Player.ServerPosition, Q.Range + Q.Width, MinionTypes.All, MinionTeam.Neutral, MinionOrderTypes.MaxHealth).FirstOrDefault(e => GetPoisonBuffEndTime(e) < Q.Delay * 1.1); if (creep != null) { if (q) { Q.Cast(creep); } if (w) { W.Cast(creep); } } } } }