// Update is called once per frame void Update() { if (!atInn) { fatigue += fatigueRate * Time.deltaTime; } idleTime += Time.deltaTime; CurrentBehaviours.RemoveAll(behaviour => behaviour == null); // should i do this less often? Quests.RemoveAll(Quest => Quest == null); // should i do this less often? if (CurrentBehaviours.Count != 0) { idleTime = 0; return; } if (Quests.Count > 0 && (!atInn || fatigue <= 0) && (!atQuest) && CharacterList.Characters.Count >= 4) { idleTime = 0; Travel travel = gameObject.AddComponent <Travel>(); GameObject Quest = Quests[0]; Quests.ForEach( q => { if (Vector3.Distance(q.transform.position, transform.position) < Vector3.Distance(Quest.transform.position, transform.position)) { Quest = q; } } ); travel.targetLocation = Quest.transform.position; CurrentBehaviours.Add(travel); } else if (!atInn && !atQuest && idleTime > 1f) { idleTime = 0; Travel travel = gameObject.AddComponent <Travel>(); travel.targetLocation = new Vector3(0f, 0f, 0f); CurrentBehaviours.Add(travel); } }