private void HandleQuestStatus() { switch (_currQuestActivity) { case QuestActivity.cannotDo: if (_currentQ) { _currentQ.AbandonQuestButtonClicked(); } FindNewQuest(); break; case QuestActivity.doingActivity: if (!_attachedNavMeshAgent.isStopped) { _attachedNavMeshAgent.isStopped = true; } if (!Target) { _currQuestActivity = QuestActivity.needNewTarget; _attachedNavMeshAgent.isStopped = false; } else { DoActivity(); } break; case QuestActivity.needNewTarget: GetNewQuestTarget(); break; case QuestActivity.onMyWay: TryStartActivity(); break; case QuestActivity.gettingNewQuest: // if in range of the target if ((transform.position - _currQuestSource.transform.position).sqrMagnitude < 5.0f) { // get a quest GameObject qObj = _currQuestSource.GetRandomQuest(); if (qObj) { // and go do it QuestParchment qParch = qObj.GetComponent <QuestParchment>(); if (qParch) { qParch.AcceptQuestNPC(GetComponent <QuestHolderNPC>()); FindNewQuest(); } } } break; } }