Exemplo n.º 1
0
        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);
                    }
                }
            }
        }
Exemplo n.º 2
0
        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;
                }
            }
        }