public void OnHasObjective() { if (!Me.Actions.Decider.Objectives.Any()) { Me.Actions.Decider.GoalClaim = null; return; } ClaimNode target_node = Me.Actions.Decider.GoalClaim ?? PickNodeFromObjective(Me.Actions.Decider.Objectives.First()); if (target_node != null) { Me.Actions.Decider.AchievedAllObjectives = false; Me.Actions.Decider.GoalClaim = target_node; Me.Actions.Movement.SetDestination(target_node.transform.position); } else { Me.Actions.Decider.AchievedAllObjectives = true; } }
// private private void PickRandomObjective() { ClaimNode node = null; List <Objective> available_objectives = FindObjectsOfType <Objective>() .Where(objective => !objective.Claimed || objective.ClaimingFaction.IsHostileTo(Me.CurrentFaction)) .ToList(); if (available_objectives.Any()) { node = PickNodeFromObjective(available_objectives[Random.Range(0, available_objectives.Count)]); } if (node != null) { Me.Actions.Decider.GoalClaim = node; Me.Actions.Movement.SetDestination(node.transform.position); } else { Me.Actions.Movement.Home(); } }