Beispiel #1
0
    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;
        }
    }
Beispiel #2
0
    // 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();
        }
    }