public override bool checkProceduralPrecondition(GameObject agent)
    {
        if (farms == null)
        {
            farms = FindObjectsOfType(typeof(FarmComponent)) as FarmComponent[];
        }

        if (sortedFarms == null)
        {
            sortedFarms = farms.OrderBy(t => Vector3.Distance(transform.position, t.transform.position));
        }

        if (closest == null)
        {
            foreach (FarmComponent farm in sortedFarms)
            {
                if (farm.farmResource > 0 && farm.engaged != true)
                {
                    closest = farm;
                    break;
                }
            }
        }

        if (closest != null)
        {
            target = closest.gameObject;
        }


        return(closest != null);
    }
 public override void reset()
 {
     farmed    = false;
     startTime = 0;
     closest   = null;
 }