Ejemplo n.º 1
0
        public override bool SelectTarget(out IEnumerable <IWowUnit> possibleTargets)
        {
            possibleTargets = Bot.Objects.All.OfType <IWowUnit>()
                              .Where(e => TargetValidator.IsValid(e) && e.IsInCombat)
                              .OrderByDescending(e => IsPriorityTarget(e))
                              .ThenByDescending(e => e.Type)
                              .ThenBy(e => e.DistanceTo(Bot.Player));

            return(possibleTargets != null && possibleTargets.Any());
        }
Ejemplo n.º 2
0
        public override bool SelectTarget(out IEnumerable <IWowUnit> possibleTargets)
        {
            possibleTargets = null;

            IEnumerable <IWowUnit> unitsAroundMe = Bot.Objects.All
                                                   .OfType <IWowUnit>()
                                                   .Where(e => TargetValidator.IsValid(e) && e.IsInCombat)
                                                   .OrderByDescending(e => e.Type)
                                                   .ThenByDescending(e => e.MaxHealth);

            IEnumerable <IWowUnit> targetsINeedToTank = unitsAroundMe
                                                        .Where(e => e.Type != WowObjectType.Player &&
                                                               e.TargetGuid != Bot.Wow.PlayerGuid &&
                                                               Bot.Objects.PartymemberGuids.Contains(e.TargetGuid));

            if (targetsINeedToTank.Any())
            {
                possibleTargets = targetsINeedToTank;
                return(true);
            }
            else
            {
                if (Bot.Objects.Partymembers.Any())
                {
                    Dictionary <IWowUnit, int> targets = new();

                    foreach (IWowUnit unit in Bot.Objects.Partymembers)
                    {
                        if (unit.TargetGuid > 0)
                        {
                            IWowUnit targetUnit = Bot.GetWowObjectByGuid <IWowUnit>(unit.TargetGuid);

                            if (targetUnit != null && Bot.Db.GetReaction(targetUnit, Bot.Player) != WowUnitReaction.Friendly)
                            {
                                if (!targets.ContainsKey(targetUnit))
                                {
                                    targets.Add(targetUnit, 1);
                                }
                                else
                                {
                                    ++targets[targetUnit];
                                }
                            }
                        }
                    }

                    possibleTargets = targets.OrderBy(e => e.Value).Select(e => e.Key);
                    return(true);
                }

                possibleTargets = unitsAroundMe;
                return(true);
            }
        }
        public override bool SelectTarget(out IEnumerable <IWowUnit> possibleTargets)
        {
            List <IWowUnit> healableUnits = new(Bot.Objects.Partymembers)
            {
                Bot.Player
            };

            // healableUnits.AddRange(Bot.ObjectManager.PartyPets);

            possibleTargets = healableUnits
                              .Where(e => TargetValidator.IsValid(e) && e.Health > 1 && e.Health < e.MaxHealth)
                              .OrderByDescending(e => e.Type)
                              .ThenByDescending(e => e.MaxHealth - e.Health);

            return(possibleTargets.Any());
        }