protected override void LaneClear() { if (!ResourceManager.Check("lane-clear")) { return; } var useQ = Menu.Item(Menu.Name + ".lane-clear.q").GetValue <bool>() && Q.IsReady(); var useE = Menu.Item(Menu.Name + ".lane-clear.e").GetValue <bool>() && E.IsReady(); if (!useQ && !useE) { return; } var minE = ItemData.Runaans_Hurricane_Ranged_Only.GetItem().IsOwned(Player) ? 3 : 2; var minQ = Menu.Item(Menu.Name + ".lane-clear.q-min").GetValue <Slider>().Value; var minions = MinionManager.GetMinions(Q.Range); if (minions.Count == 0) { return; } if (useQ && minions.Count >= minQ && !Player.IsWindingUp && !Player.IsDashing()) { foreach (var minion in minions.Where(x => x.Health <= Q.GetDamage(x))) { var killcount = 0; foreach (var colminion in QGetCollisions(Player, Player.ServerPosition.Extend(minion.ServerPosition, Q.Range))) { if (colminion.Health <= Q.GetDamage(colminion)) { killcount++; } else { break; } } if (killcount >= minQ) { Q.Cast(minion.ServerPosition); break; } } } if (useE) { var killable = minions.Where(m => E.IsInRange(m) && Rend.IsKillable(m, false)).ToList(); if (killable.Count >= minE) { CastE(); } } }
protected override void JungleClear() { if (!ResourceManager.Check("jungle-clear")) { return; } var useQ = Menu.Item(Menu.Name + ".jungle-clear.q").GetValue <bool>() && Q.IsReady(); var useE = Menu.Item(Menu.Name + ".jungle-clear.e").GetValue <bool>() && E.IsReady(); if (!useQ && !useE) { return; } var minions = MinionManager.GetMinions( Q.Range, MinionTypes.All, MinionTeam.Neutral, MinionOrderTypes.MaxHealth); if (minions.Count == 0) { return; } if (useQ && minions.Count >= 1 && !Player.IsWindingUp && !Player.IsDashing()) { foreach (var minion in minions.Where(x => x.Health <= Q.GetDamage(x))) { var killcount = 0; foreach (var colminion in QGetCollisions(Player, Player.ServerPosition.Extend(minion.ServerPosition, Q.Range))) { if (colminion.Health <= Q.GetDamage(colminion)) { killcount++; } else { break; } } if (killcount >= 1) { Q.Cast(minion.ServerPosition); break; } } } if (useE) { var killable = minions.Where(m => E.IsInRange(m) && Rend.IsKillable(m, false)).ToList(); if (killable.Count >= 1) { CastE(); } } }
private void QCollisionCheck(Obj_AI_Hero target) { var minions = MinionManager.GetMinions(Q.Range); if (minions.Count < 1 || Player.IsWindingUp || Player.IsDashing()) { return; } foreach (var minion in minions) { var difference = Player.Distance(target) - Player.Distance(minion); for (var i = 0; i < difference; i += (int)target.BoundingRadius) { var point = minion.ServerPosition.To2D().Extend(Player.ServerPosition.To2D(), -i).To3D(); var time = Q.Delay + ObjectManager.Player.Distance(point) / Q.Speed * 1000f; var prediction = Prediction.GetPrediction(target, time); var collision = Q.GetCollision(point.To2D(), new List <Vector2> { prediction.UnitPosition.To2D() }); if (collision.Any(x => x.Health > Q.GetDamage(x))) { return; } if (prediction.UnitPosition.Distance(point) <= Q.Width && !minions.Any(m => m.Distance(point) <= Q.Width)) { Q.Cast(minion); } } } }
private static void OnCorePostUpdate(EventArgs args) { try { if (_menu == null || !_menu.Item(_menu.Name + ".enabled").GetValue <bool>()) { return; } if (Environment.TickCount - _lastTick >= _interval) { _lastTick = Environment.TickCount; if (_menu.Item(_menu.Name + ".fountain").GetValue <bool>() && !ObjectManager.Player.InFountain()) { return; } if (ObjectManager.Player.ManaPercent >= _menu.Item(_menu.Name + ".min-mana").GetValue <Slider>().Value) { var tearSlot = ObjectManager.Player.GetSpellSlot("TearsDummySpell"); if (tearSlot != SpellSlot.Unknown && Game.Time > ObjectManager.Player.GetSpell(tearSlot).CooldownExpires&& ObjectManager.Player.CountEnemiesInRange( _menu.Item(_menu.Name + ".min-distance").GetValue <Slider>().Value) <= 0) { var spell = _spells.FirstOrDefault( s => s.IsReady() && _menu.Item(_menu.Name + "." + s.Slot).GetValue <bool>()); if (spell != null) { if (spell.IsSkillshot) { var target = GameObjects.EnemyHeroes.Where(e => e.IsValidTarget(spell.Range)) .Concat(MinionManager.GetMinions(spell.Range)) .FirstOrDefault(); if (target != null) { spell.Cast(target.Position); } else { var position = ObjectManager.Player.Position.Extend( Game.CursorPos, Math.Min(1000, spell.Range * 0.8f + Random.Next(1, 26))); if (position.IsValid()) { spell.Cast(position); } } } else if (spell.Range > 0f) { if (spell.Speed.Equals(default(float))) { spell.Cast(); } else { var target = GameObjects.EnemyHeroes.Where(e => e.IsValidTarget(spell.Range)) .Concat(MinionManager.GetMinions(spell.Range)) .FirstOrDefault(); if (target != null) { spell.Cast(target); } } } } } } } } catch (Exception ex) { Global.Logger.AddItem(new LogItem(ex)); } }