public void SetCurrentSpeakerTopic(int topicIndex)
    {
        NPC_Discussion_Scriptable_Object nextDiscussion = currentDiscussion.relatedDiscussions[topicIndex];

        currentDiscussion = nextDiscussion;

        if (currentDiscussion.isQuestAttached && !currentDiscussion.isFinalQuestDiscussion)
        {
            if (currentSpeaker.Npc.hasAlreadyProposeQuest)
            {
                NPC_Discussion_Quest_Scriptable_Object asQuest = (NPC_Discussion_Quest_Scriptable_Object)currentDiscussion;
                currentDiscussion = asQuest.questSeen;
            }
            else
            {
                NPC_Discussion_Quest_Scriptable_Object asQuest = (NPC_Discussion_Quest_Scriptable_Object)currentDiscussion;
                currentDiscussion = asQuest.questUnseen;
                currentSpeaker.Npc.hasAlreadyProposeQuest = true;
            }
        }

        currentDiscussionContentIndex = 0;
        topicGUI.SetActive(false);
        discussionGUI.SetActive(false);

        if (currentDiscussion.content.Count == 0 && currentDiscussion.relatedDiscussions.Count == 0)
        {
            if (currentDiscussion.isQuestAttached)
            {
                NPC_Quest_Scriptable_Object quest = currentSpeaker.Quest;
                player.AcceptQuest(quest);
            }
            EndOfDiscussion();
        }
        else
        {
            BuildDiscussionArea();
        }
    }