private static void ByCombo() { const int range = 1100; const float aoeratio = 0.2f; var enemies = EntityManager.Heroes.Enemies.Where(n => n.IsValidTarget(range)); var selectedTarget = TargetSelector.GetTarget(range, DamageType.Magical); var allTargets = new[] { selectedTarget }.Concat(enemies.Where(n => n.Index != selectedTarget.Index).OrderByDescending(n => Logics.TotalDamage(SpellSlot.Q, n) / n.Health)).Where(n => n.IsValidTarget() && !n.WillDie()); if (selectedTarget == null && !enemies.Any()) { return; } var useQ = Comb["Qc"].Cast <CheckBox>().CurrentValue&& Player.CanUseSpell(SpellSlot.Q) == SpellState.Ready; var useW = Comb["Wc"].Cast <CheckBox>().CurrentValue&& Player.CanUseSpell(SpellSlot.W) == SpellState.Ready; var useE = Comb["Ec"].Cast <CheckBox>().CurrentValue&& Player.CanUseSpell(SpellSlot.E) == SpellState.Ready; var useR = Comb["Rc"].Cast <CheckBox>().CurrentValue&& Player.CanUseSpell(SpellSlot.R) == SpellState.Ready; if (enemies.Count() > 1) { if (useW) { var aoePrediction = Prediction.Position.PredictCircularMissileAoe(enemies.Cast <Obj_AI_Base>().ToArray(), W.Range, W.Radius, W.CastDelay, W.Speed).OrderByDescending(r => r.GetCollisionObjects <Obj_AI_Minion>().Length).FirstOrDefault(); if (aoePrediction != null) { var predictedHeroes = aoePrediction.GetCollisionObjects <AIHeroClient>(); if (predictedHeroes.Length > 1 && (float)predictedHeroes.Length / enemies.Count() >= aoeratio) { W.Cast(aoePrediction.CastPosition); return; } } } if (useE) { var enemyE = enemies.Where(n => n.IsValidTarget(E.Range) && n.IsBlazed()) .OrderByDescending(n => n.CountEnemiesInRange(LoigcRanges)) .FirstOrDefault(); if (enemyE != null && enemyE.CountEnemiesInRange(LoigcRanges) > 1) { E.Cast(enemyE); return; } } } if (useE) { var targets = allTargets.Where(n => Player.Instance.IsInRange(n, E.Range)); foreach (var target in targets) { E.Cast(target); return; } } if (useW) { foreach (var target in allTargets) { if (W.Cast(target)) { return; } } } if (useQ) { foreach (var target in allTargets.Where(n => n.IsBlazed())) { if (Q.Cast(target)) { return; } } } if (useR) { var bestTarget = allTargets.Where(n => Player.Instance.IsInRange(n, R.Range)) .OrderByDescending(n => n.CountEnemiesInRange(LogicRange)) .FirstOrDefault(); if (bestTarget != null && bestTarget.CountEnemiesInRange(LogicRange) >= Comb["En"].Cast <Slider>().CurrentValue) { if ((!useW && !useE || !bestTarget.IsBlazed())) { R.Cast(bestTarget); } } } }
private static void Killteal() { const int range = 1100; const float aoeratio = 0.2f; var enemies = EntityManager.Heroes.Enemies.Where(n => n.IsValidTarget(range)); var selectedTarget = TargetSelector.GetTarget(range, DamageType.Magical); var allTargets = new[] { selectedTarget }.Concat(enemies.Where(n => n.Index != selectedTarget.Index).OrderByDescending(n => Logics.TotalDamage(SpellSlot.Q, n) / n.Health)).Where(n => n.IsValidTarget() && !n.WillDie()); var ksQ = KillSteal["KsQ"].Cast <CheckBox>().CurrentValue&& Player.CanUseSpell(SpellSlot.Q) == SpellState.Ready; var ksW = KillSteal["KsW"].Cast <CheckBox>().CurrentValue&& Player.CanUseSpell(SpellSlot.W) == SpellState.Ready; var ksE = KillSteal["KsE"].Cast <CheckBox>().CurrentValue&& Player.CanUseSpell(SpellSlot.E) == SpellState.Ready; var ksR = KillSteal["KsR"].Cast <CheckBox>().CurrentValue&& Player.CanUseSpell(SpellSlot.R) == SpellState.Ready; foreach (var enemy in allTargets) { if (ksE && Player.Instance.IsInRange(enemy, E.Range) && enemy.Killable(SpellSlot.E)) { E.Cast(enemy); return; } if (ksW && Player.Instance.IsInRange(enemy, W.Range + W.Radius) && enemy.Killable(SpellSlot.W)) { var prediction = W.GetPrediction(enemy); if (prediction.HitChancePercent >= Pre["Wp"].Cast <Slider>().CurrentValue) { W.Cast(prediction.CastPosition); return; } } if (ksQ && Player.Instance.IsInRange(enemy, Q.Range) && enemy.Killable(SpellSlot.Q)) { var prediction = Q.GetPrediction(enemy); if (prediction.HitChancePercent >= Pre["Qp"].Cast <Slider>().CurrentValue) { Q.Cast(prediction.CastPosition); return; } } if (ksR && Player.Instance.IsInRange(enemy, R.Range) && enemy.Killable(SpellSlot.R)) { R.Cast(enemy); return; } } }