Ejemplo n.º 1
0
    private bool ChooseHarvest()
    {
        if (MyHarvest != null && !FailedToSpot.Contains(MyHarvest))
        {
            return(true);
        }

        List <HarvestingNode> potentially_available = FindObjectsOfType <HarvestingNode>().Where(hn => hn.IsAccessibleTo(Me)).ToList();

        if (FailedToSpot.Count >= potentially_available.Count / 2)
        {
            FailedToSpot.Clear();
        }
        List <HarvestingNode> available = potentially_available.Where(hn => !FailedToSpot.Contains(hn)).ToList();

        if (available.Any())
        {
            MyHarvest = available.OrderBy(hn => Vector3.Distance(hn.transform.position, transform.position)).First();
            if (MyHarvest == null)
            {
                return(false);
            }
            Me.HasTask = true;
            Me.Actions.Movement.SetDestination(MyHarvest.transform);
            return(true);
        }

        return(false);
    }
Ejemplo n.º 2
0
 public void OnHarvesting()
 {
     if (Me.Senses.PerceptionCheck(true, MyHarvest.ChallengeRating))
     {
         Harvest();
     }
     else
     {
         if (MyHarvest != null)
         {
             FailedToSpot.Add(MyHarvest);
         }
         ChooseHarvest();
     }
 }