Example #1
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;
        }
Example #2
0
        private void ProcessNetworkActivityResponse(NetworkActivityObject activityObj)
        {
            if (activityObj == null)
            {
                return;
            }

            Settings.LeaderName.Value       = activityObj.LeaderName;
            Settings.UseMovementSkill.Value = activityObj.UseMovementSkill;
            _currentFollowerMode            = activityObj.FollowerMode;
            _followerAggressivenessMode     = activityObj.PropagateFollowerAggressiveness;
            _followerShouldWork             = activityObj.Working;
            _enterInstanceValue             = activityObj.PropagateEnterInstance;

            if (activityObj.Working)
            {
                _followerCoroutine.Resume();
            }
            else
            {
                _followerCoroutine.Pause();
            }

            if (activityObj.FollowerSkills != null && activityObj.FollowerSkills.Any())
            {
                List <SkillSettings> settingsSkills = new List <SkillSettings>()
                {
                    Settings.SkillOne,
                    Settings.SkillTwo,
                    Settings.SkillThree
                };
                foreach (FollowerSkill skill in activityObj.FollowerSkills.OrderBy(o => o.Position))
                {
                    SkillSettings settingsSkill = settingsSkills[skill.Position - 1];

                    settingsSkill.Enable.Value               = skill.Enable;
                    settingsSkill.SkillHotkey.Value          = skill.Hotkey;
                    settingsSkill.UseAgainstMonsters.Value   = skill.UseAgainstMonsters;
                    settingsSkill.CooldownBetweenCasts.Value = skill.Cooldown.ToString();
                    settingsSkill.Priority.Value             = skill.Priority;
                    settingsSkill.Position.Value             = skill.Position;
                    settingsSkill.Range.Value = skill.Range;
                }
            }

            return;
        }