/// <summary> /// Buys an item. /// </summary> private IEnumerator PurchaseItem(ItemStore item) { if (HasChosenAnItem) { yield break; } SetDestinationToWaypoint(item.itemWaypoint); yield return(waitUntilPathComplete); anim.SetTrigger(Think); yield return(waitOnPurchase); anim.SetTrigger(Grab); yield return(waitOnPurchase); item.transform.parent = carryPosition; item.transform.localPosition = Vector3.zero; SetDestinationToWaypoint(npcPayWaypoints[Random.Range(0, npcPayWaypoints.Count)]); yield return(new WaitUntil(() => Vector3.Distance(agent.destination, agent.transform.position) < 0.2f)); yield return(waitOnPurchase); anim.SetTrigger(Drop); item.transform.position = store.itemPurchasePosition.position; yield return(waitOnPurchase); Coins -= store.BuyItem(item); HasPaidForItem = true; yield return(waitOnPurchase); anim.SetTrigger(Grab); item.transform.localPosition = Vector3.zero; yield return(waitOnPurchase); StartCoroutine(nameof(GoToExit)); }