Пример #1
0
        bool CastR(AIHeroClient currenttarget)
        {
            var check = EntityManager.Heroes.Enemies
                        .Where(
                h => h.IsValidTarget(R.Range) && h.CountEnemiesInRange(R.Range) >= 2 && h.HealthPercent > 22).ToList();

            if (player.CountEnemiesInRange(R.Range) >= 2)
            {
                check.Add(player);
            }

            if (check.Any())
            {
                if (check.Contains(player) && !LissUtils.isHealthy())
                {
                    R.CastOnUnit(player);
                    return(true);
                }
                var target = check.FirstOrDefault();//(TargetSelector.GetPriority
                if (target != null)
                {
                    R.Cast(target);
                    return(true);
                }
            }

            if (IsKillableFromPoint(currenttarget, player.ServerPosition) && player.Distance(currenttarget) < R.Range)
            {
                R.Cast(currenttarget);
                return(true);
            }


            if (LissUtils.PointUnderAllyTurret(currenttarget.ServerPosition))
            {
                R.Cast(currenttarget);
                return(true);
            }

            var dmgto = player.GetSpellDamage(currenttarget, SpellSlot.R);

            if (dmgto > currenttarget.Health && currenttarget.Health >= 0.40 * dmgto)
            {
                R.Cast(currenttarget);
                return(true);
            }

            var enemycount = 2;

            if (!LissUtils.isHealthy() && player.CountEnemiesInRange(R.Range - 100) >= enemycount)
            {
                R.CastOnUnit(player);
                return(true);
            }

            var possibilities = EntityManager.Heroes.Enemies.Where(h => (h.IsValidTarget() && Vector3.Distance(h.ServerPosition, player.ServerPosition) <= R.Range || (IsKillableFromPoint(h, player.ServerPosition) && h.IsValidTarget() && !h.IsInvulnerable))).ToList();

            var arranged = possibilities.OrderByDescending(h => h.CountEnemiesInRange(R.Range));


            var ultTarget = arranged.FirstOrDefault();

            if (ultTarget != null)
            {
                if (!LissUtils.isHealthy() &&
                    player.CountEnemiesInRange(R.Range) >
                    ultTarget.CountEnemiesInRange(R.Range) + 1)
                {
                    R.CastOnUnit(player);
                    return(true);
                }

                /*if (R.Cast(UltTarget) == Spell..SuccessfullyCasted)
                 *  return true;*/
            }
            return(false);
        }