Beispiel #1
0
        private IEnumerator DoAttack()
        {
            LogMessage(" ------ DoAttack called", 1);

            List <Entity> monsters = GameController.EntityListWrapper
                                     .ValidEntitiesByType[EntityType.Monster]
                                     .Where(o => o.IsAlive)
                                     .Where(o => o.IsHostile)
                                     .ToList();

            Entity leaderPlayer = FollowerHelpers.GetLeaderEntity(Settings.LeaderName, GameController.Entities);
            Entity player       = leaderPlayer ?? GameController.Player;

            IEnumerator nextStep = null;

            try
            {
                if (monsters.Any())
                {
                    List <Entity> closestMonsters = monsters.OrderBy(o => FollowerHelpers.EntityDistance(o, player)).ToList();
                    Entity        closestMonster  = closestMonsters.First();
                    nextStep = AttackEntity(closestMonster);
                }
                else
                {
                    nextStep = DoFollow();
                }
            }
            catch (ArgumentNullException e)
            {
                nextStep = DoFollow();
            }

            yield return(nextStep);
        }
Beispiel #2
0
        private IEnumerator DoFollow()
        {
            LogMessage(" :::::::: DoFollow called", 1);

            Entity leaderPlayer = FollowerHelpers.GetLeaderEntity(Settings.LeaderName, GameController.Entities);

            if (leaderPlayer == null)
            {
                yield break;
            }

            yield return(TryToClickOnLeader(leaderPlayer));
        }
Beispiel #3
0
        private IEnumerator AttackEntity(Entity closestMonster)
        {
            LogMessage(" ------ AttackEntity called", 1);

            List <SkillSettings> skills = new List <SkillSettings>()
            {
                Settings.SkillOne,
                Settings.SkillTwo,
                Settings.SkillThree,
            };

            SkillSettings availableSkill = null;

            try
            {
                availableSkill = skills
                                 .Where(o =>
                {
                    long delta = GetDeltaInMilliseconds(o.LastTimeUsed);
                    return(delta > Int32.Parse(o.CooldownBetweenCasts.Value));
                })
                                 .Where(o =>
                {
                    var distance = FollowerHelpers.EntityDistance(closestMonster, GameController.Player) / 10;
                    LogMessage($"DISTANCE: {distance}");
                    LogMessage($"o.Range.Value: {o.Range.Value}");
                    return(distance < o.Range.Value);
                })
                                 .OrderBy(o => o.Priority.Value)
                                 .First();

                availableSkill.LastTimeUsed = DateTime.UtcNow;
            }
            catch (Exception e)
            {
                LogError(" ------ Error during filtering an available skill");
            }

            if (availableSkill != null)
            {
                yield return(HoverTo(closestMonster));

                Input.KeyPressRelease(availableSkill.SkillHotkey.Value);
            }
            else
            {
                yield return(DoFollow());
            }

            yield break;
        }
Beispiel #4
0
        private IEnumerator EnterNearestInstance()
        {
            Entity        player   = GameController.Player;
            List <Entity> entities = GameController.EntityListWrapper
                                     .ValidEntitiesByType[EntityType.AreaTransition]
                                     .OrderBy(o => FollowerHelpers.EntityDistance(o, player))
                                     .ToList();

            if (entities.Any())
            {
                Entity entrance = entities.First();

                yield return(HoverTo(entrance));

                yield return(new WaitTime(100));

                yield return(Mouse.LeftClick());

                yield return(new WaitTime(2000));
            }

            yield break;
        }