Esempio n. 1
0
 void Start()
 {
     rb = GameObject.Find("Player").GetComponent <Rigidbody>();
     if (DialogueManager == null)
     {
         DialogueManager = GameObject.FindGameObjectWithTag("HUD").GetComponent <HandleDialogue>();
     }
     //  Cursor.lockState = CursorLockMode.Locked;
     oldwalkspeed = speed;
 }
Esempio n. 2
0
    private void HandleDialog()
    {
        if (m_StartedTalk)
        {
            if (DialogueHandler == null)
            {
                DialogueHandler = GameObject.FindGameObjectWithTag("HUD").GetComponent <HandleDialogue>();
            }

            if (!m_SayingDialog)
            {
                bool QuestCheck = false;
                QuestNotReady = false;
                bool QuestCompleting = false;
                bool QuestCompleted  = false;
                bool QuestStarted    = false;

                if (m_QuestID > 0 && currentquest != null)
                {
                    // Quest Unlocks met?
                    if (currentquest.m_RequiresQuestUnlock)
                    {
                        int[] requiredquests = currentquest.m_RequiredQuestID;
                        bool  allcompleted   = true;
                        foreach (int questid in requiredquests)
                        {
                            bool check = QuestList.QuestListObject.CheckCompletedQuest(questid);
                            if (!check)
                            {
                                allcompleted = false; break;
                            }
                        }
                        if (!allcompleted)
                        {
                            QuestNotReady = true; QuestCheck = true;
                        }
                    }
                    // Quest completing text?
                    if (currentquest.m_QuestRequirementsMet)
                    {
                        QuestCompleting = true; QuestCheck = true;
                    }
                    // Quest Completed?
                    if (currentquest.m_QuestCompleted && QuestCompleting == false)
                    {
                        QuestCompleted = true; QuestCheck = true;
                    }

                    // Quest already started?
                    if (currentquest.m_QuestStarted && QuestCompleting == false)
                    {
                        QuestStarted = true; QuestCheck = true;
                    }
                }

                if (QuestNotReady)
                {
                    PrepareDialogue(m_QuestDeny); QuestText = true;
                }
                if (QuestStarted)
                {
                    PrepareDialogue(m_QuestGiven); QuestText = true;
                }
                if (QuestCompleted)
                {
                    PrepareDialogue(m_QuestAfterword); QuestText = true;
                }
                if (QuestCompleting)
                {
                    QuestText = true;
                    currentquest.m_QuestStarted         = false;
                    currentquest.m_QuestRequirementsMet = false;
                    currentquest.m_QuestCompleted       = true;
                    m_TurningIn = true;
                    PrepareDialogue(m_QuestCompletion);
                }

                if (!QuestCheck)
                {
                    if (m_Dialogue != null)
                    {
                        m_DialogueLines = m_Dialogue.Length;
                        if (m_DialogueLines > 0 && m_Dialogue[0].Length > 1)
                        {
                            PrepareDialogue(m_Dialogue[m_CurrentLine]);
                        }
                        else
                        {
                            Debug.LogWarning("[NPC] " + m_npcName + " does not have any dialogue lines!!");
                            m_StartedTalk  = false;
                            ReleasePlayer  = true;
                            m_Interactable = false;
                        }
                    }
                    else
                    {
                        Debug.LogError("[NPC] " + m_npcName + "'s m_Dialogue is null!!");
                        m_StartedTalk  = false;
                        m_Interactable = false;
                        ReleasePlayer  = true;
                    }
                }
            }

            if (m_WaitForInput && m_GotConfirm && m_DialogueFinished == false)
            {
                if (DialogueFxs.Length > 0 && AudioSource && !AudioSource.isPlaying)
                {
                    AudioSource.PlayOneShot(DialogueFxs[2], AudioVolume);
                }
                m_LineFinished     = false;
                m_WaitForInput     = false;
                m_GotConfirm       = false;
                m_CurrentCharacter = 0;
                DialogueHandler.SetWaitIcon(false);
                if (m_DialogueLines > m_CurrentLine)
                {
                    m_CurrentLine++;
                    StartCoroutine(DisplayDialog(m_Dialogue[m_CurrentLine]));
                }
            }
            if (m_DialogueFinished && m_GotConfirm)
            {
                if (DialogueFxs.Length > 0 && AudioSource && !AudioSource.isPlaying)
                {
                    AudioSource.PlayOneShot(DialogueFxs[1], AudioVolume);
                }
                ResetDialogue();
                if (!QuestNotReady)
                {
                    if (!m_QuestActivated)
                    {
                        ActivateQuest(m_QuestID);
                        bool check = QuestList.QuestListObject.CheckInventory(currentquest);
                        // TODO, CHECK INVENTORY ON QUEST ITEMS
                        if (check)
                        {
                            bool complete = QuestList.QuestListObject.RegisterItemIDWithQuest(m_QuestID);
                            if (!complete)
                            {
                                Debug.Log("[QUEST] ERROR: Could not finish quest!! CHECK QUEST REQS");
                            }
                        }
                        QuestList.QuestListObject.SetQuestLogActive(m_QuestID);
                    }
                }

                if (currentquest != null)
                {
                    if (m_TurningIn)
                    {
                        m_TurningIn = false;
                        QuestList.QuestListObject.FinishQuest(m_QuestID);
                        Debug.Log("[QUEST] Finished Quest: " + currentquest.m_QuestTitle);
                    }
                }
            }
        }
    }