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; }
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; }