示例#1
0
        public static IEnumerable <Obj_AI_Hero> GetTargets(float range,
                                                           DamageType damageType = DamageType.True,
                                                           bool ignoreShields    = true,
                                                           Vector3 from          = default(Vector3),
                                                           IEnumerable <Obj_AI_Hero> ignoredChampions = null)
        {
            Weights.Range = Math.Max(range, Weights.Range);

            var selectedTarget = Selected.GetTarget(range, damageType, ignoreShields, from);

            if (selectedTarget != null)
            {
                return(new List <Obj_AI_Hero> {
                    selectedTarget
                });
            }

            range = ForceFocusWeight && Mode == ModeType.Weights ? Weights.Range : range;

            var targets =
                Humanizer.FilterTargets(Targets.Items)
                .Where(h => ignoredChampions == null || ignoredChampions.All(i => i.NetworkId != h.Hero.NetworkId))
                .Where(h => IsValidTarget(h.Hero, range, damageType, ignoreShields, from))
                .ToList();

            if (targets.Count > 0)
            {
                var t = GetOrderedChampions(targets).ToList();
                if (t.Count > 0)
                {
                    if (ForceFocusWeight)
                    {
                        return(new List <Obj_AI_Hero> {
                            t.First().Hero
                        });
                    }
                    if (Selected.Target != null && Focus && t.Count > 1)
                    {
                        t = t.OrderByDescending(x => x.Hero.NetworkId.Equals(Selected.Target.NetworkId)).ToList();
                    }
                    return(t.Select(h => h.Hero).ToList());
                }
            }

            return(new List <Obj_AI_Hero>());
        }