Exemple #1
0
 public void CloneParameters(SpeechBubbleManager speechBubbleManager)
 {
     speechBubbleManager.Candidate    = Candidate;
     speechBubbleManager.Speaker      = Speaker;
     speechBubbleManager.Line         = Line;
     speechBubbleManager.TalkingDelay = TalkingDelay;
 }
Exemple #2
0
        public IEnumerator GetDialogue(SpeechBubbleManager npc, SpeechBubbleManager main)
        {
            if (_speechStatus == 2)
            {
                yield return(GetNotTimeTravelDialogue(npc, main));
            }

            if (_speechStatus == 3)
            {
                yield return(GetFinalDialogue(npc));
            }

            if (_speechStatus == 1 && GetComponentInParent <NpcManager>().IsSaved())
            {
                yield return(GetSavedDialogue(npc));

                yield break;
            }

            switch (_speechStatus)
            {
            case 0:
                yield return(GetFirstDialogue(npc, main));

                break;

            case 1:
                yield return(GetSecondDialogue(npc));

                break;
            }
        }
Exemple #3
0
        private IEnumerator GetNotTimeTravelDialogue(SpeechBubbleManager npc, SpeechBubbleManager main)
        {
            yield return(main.Say("What do you think about this magical lantern?", 4f));

            yield return(npc.Say("I imagine it could be very useful. Although...", 4f));

            yield return(npc.Say("It's unfortunate it is not a time travel magical lantern.", 5f));

            yield return(npc.Say("I heard those are good.", 3f));

            yield return(main.Say("But this thing has time travel written all over it!", 4f));

            yield return(npc.Say("You seem to be very convinced about this.", 4f));

            yield return(npc.Say("I trust you will give your best to find out the truth.", 5f));

            yield return(npc.Say("Do some research, make some experiments.", 4f));

            yield return(npc.Say("In the end you will definitely reach the truth.", 4f));

            yield return(new WaitForSeconds(3f));

            yield return(npc.Say("(which tells us this is not time travel)", 4f));

            _speechStatus = 3;
        }
Exemple #4
0
        private IEnumerator GetFirstDialogue(SpeechBubbleManager npc, SpeechBubbleManager main)
        {
            yield return(npc.Say("Well, well, well.", 3f));

            yield return(main.Say("What?", 2f));

            yield return(npc.Say("What what?", 2f));

            yield return(npc.Say("You did enter my cell, so you must want something.", 4f));

            if (GetComponentInParent <NpcManager>().IsSaved())
            {
                yield return(main.Say("I just saved you.", 2f));

                yield return(GetSavedDialogue(npc));

                _speechStatus = 2;
            }
            else
            {
                yield return(main.Say("Hm. Do you not want me to save you?", 4f));

                yield return(npc.Say("Sure.", 2f));

                yield return(npc.Say("The question is... can you?", 4f));

                yield return(main.Say("I'll se what I can do.", 3f));

                _speechStatus = 1;
            }
        }
    void Awake()
    {
        if (Instance == null)
        {
            Instance = this;

            if (speechBubblePrefab == null)
            {
                Debug.LogError("Unable to awaken speech bubble manager: No speech bubble prefab is set.");
            }
            if (p1Ghost == null)
            {
                Debug.LogError("Unable to awaken speech bubble manager: Player 1 ghost isn't set.");
            }
            if (p2Ghost == null)
            {
                Debug.LogError("Unable to awaken speech bubble manager: Player 2 ghost isn't set.");
            }

            p1GhostSpeechBubble = Instantiate <GameObject>(speechBubblePrefab);
            p1GhostSpeechBubble.transform.SetParent(canvas, true);
            DisablePlayer1Bubble();

            p2GhostSpeechBubble = Instantiate <GameObject>(speechBubblePrefab);
            p2GhostSpeechBubble.transform.SetParent(canvas, true);
            DisablePlayer2Bubble();
        }
        else
        {
            Destroy(gameObject);
        }
    }
Exemple #6
0
        private IEnumerator GetFirstDialogue(SpeechBubbleManager npc, SpeechBubbleManager main)
        {
            yield return(npc.Say("Well, well, well. You found a hidden passage, that you did.", 6f));

            yield return(npc.Say("And in it, you found old <color=#FFF02D>Ailouros</color>.", 4f));

            yield return(main.Say("Can we talk about this room appearing out of nowhere for a minute?", 6f));

            yield return(npc.Say("No.", 2f));

            yield return(npc.Say("However...", 1f));

            yield return(main.Say("*cough*", 1.5f, 2f));

            yield return(npc.Say("Oh-oh, sorry. Dozed off for a minute there.", 3f));

            yield return(npc.Say("You found this little here hidden passage, yes, sir.", 5f));

            yield return(npc.Say("But there are more, oh yes. I suggest looking for them in every corner.", 6f));

            yield return(npc.Say("Sometimes you have to be quick to find them, yes you will.", 5f));

            yield return(main.Say("Will do, thanks", 3f));

            _speechStatus = 1;
        }
    void Awake()
    {
        if (Instance == null) {
            Instance = this;

            if (speechBubblePrefab == null) {
                Debug.LogError("Unable to awaken speech bubble manager: No speech bubble prefab is set.");
            }
            if (p1Ghost == null) {
                Debug.LogError("Unable to awaken speech bubble manager: Player 1 ghost isn't set.");
            }
            if (p2Ghost == null) {
                Debug.LogError("Unable to awaken speech bubble manager: Player 2 ghost isn't set.");
            }

            p1GhostSpeechBubble = Instantiate<GameObject>(speechBubblePrefab);
            p1GhostSpeechBubble.transform.SetParent(canvas, true);
            DisablePlayer1Bubble();

            p2GhostSpeechBubble = Instantiate<GameObject>(speechBubblePrefab);
            p2GhostSpeechBubble.transform.SetParent(canvas, true);
            DisablePlayer2Bubble();
        }
        else {
            Destroy (gameObject);
        }
    }
Exemple #8
0
        private IEnumerator GetSecondDialogue(SpeechBubbleManager npc, SpeechBubbleManager main)
        {
            yield return(npc.Say("What?", 2f, 0, 0, VoiceTone.Question));

            yield return(main.Say("No more hints?", 2f, 0, 0, VoiceTone.Helpless));

            yield return(npc.Say("Maybe later.", 2f));
        }
Exemple #9
0
        public IEnumerator GetDialogue(SpeechBubbleManager npc, SpeechBubbleManager main)
        {
            if (!_hasPresented)
            {
                yield return(GetFirstDialogue(npc, main));
            }

            yield return(npc.Say("Welcome back to the outside, friend.", 4f));
        }
Exemple #10
0
        private IEnumerator GetSavedDialogue(SpeechBubbleManager npc, SpeechBubbleManager main)
        {
            yield return(npc.Say("Oh, thank you! You have saved me.", 4f));

            yield return(npc.Say("I told you there would be a way. And you found it!", 4f));

            yield return(GetTip(npc, main));

            _speechStatus = 2;
        }
Exemple #11
0
        private IEnumerator GetSecondDialogue(SpeechBubbleManager npc, SpeechBubbleManager main)
        {
            if (GetComponentInParent <NpcManager>().IsSaved())
            {
                yield return(GetSavedDialogue(npc, main));

                yield break;
            }

            yield return(npc.Say("Remember that sometimes the right way is not in the place you expect.", 5f));
        }
 public PlayerBase(Vector2 location, WorldBase world) : base(location, world)
 {
     inventory                = new Inventory.PlayerInventory(this);
     speechManager            = new SpeechBubbleManager(this);
     drawUseIndicator         = false;
     detectionLevel           = 1;
     detectionRadiousModifier = 1;
     keyedItems               = new Item[6];
     cards  = new Card[2];
     warmth = 100;
 }
Exemple #13
0
        private IEnumerator GetSavedDialogue(SpeechBubbleManager npc)
        {
            yield return(npc.Say("Color me surprised!", 2f));

            yield return(npc.Say("You actually did save me.", 3f));

            yield return(npc.Say("You should be proud of yourself.", 3f));

            yield return(npc.Say("...But not too much.", 3f));

            _speechStatus = 2;
        }
Exemple #14
0
        private IEnumerator FirstDialogue(SpeechBubbleManager npc, SpeechBubbleManager main)
        {
            yield return(npc.Say("Hello! You have found <color=#FFF02D>Lancelot</color>, the musician.", 5f));

            yield return(main.Say("What instrument do you play?", 3f));

            yield return(npc.Say("The harp.", 2f));

            yield return(npc.Say("Unfortunately, I can't play while imprisoned.", 4f));

            _speechState = 1;
        }
 private void Awake()
 {
     if (instance != null && instance != this)
     {
         Destroy(this.gameObject);
         return;
     }
     else
     {
         instance = this;
     }
     speechCanvas = GameObject.Find("SpeechBubbleCanvas");
 }
Exemple #16
0
    private void Awake()
    {
        instance = this;

        foreach (ColorData c in colors)
        {
            colorList.Add(c.colorName, c.color);
        }
        foreach (KeyData k in keys)
        {
            keyList.Add(k.keyName, k);
        }
    }
Exemple #17
0
    IEnumerator SP2_HouseFirstSpeak(GameObject house)
    {
        #region ShowmanAskHouse
        string[] showmanAsk = { ConversationManager.Instance.P2_ShowmanQuestion.ShowmanAsk };

        //Se cambian las palabras claves de la pregunta inicial a la casa y se guarda el diálogo resultante en la array de strings "showmanAsk"
        yield return(StartCoroutine(ConversationManager.Instance.ReplaceDialogueKeywords(showmanAsk)));

        showmanAsk = ConversationManager.Instance.NextCheckedText;


        TextBoxCanvas.GetComponentInChildren <Text>().text = "";
        NpcToFirstPlane(Showman.GetComponent <NpcController>().Identificator, false);
        StartCoroutine(Interlocutor1.GetComponent <NpcController>().TalkDialogue(showmanAsk));

        yield return(StartCoroutine(WaitingInput()));

        #endregion


        string[] houseResponse = { ConversationManager.Instance.P2_ShowmanQuestion.HouseReponse.HouseResponse };

        for (int i = 0; i < houseResponse.Length; i++)
        {
            TalkingDialogue = true;

            GameObject speechBubble = Instantiate(ComicDialogue) as GameObject;
            speechBubble.AddComponent <SpeechBubbleManager>();
            speechBubble.transform.SetParent(GameObject.Find("Canvas").transform);

            SpeechBubbleManager speechBubble2 = new SpeechBubbleManager(house, houseResponse[i]);
            speechBubble2.CloneParameters(speechBubble.GetComponent <SpeechBubbleManager>());

            speechBubble.GetComponent <SpeechBubbleManager>().Initialize();

            if (i == houseResponse.Length - 1)
            {
                yield return(StartCoroutine(WaitingLastBubble(speechBubble)));
            }

            yield return(null);
        }

        TalkingDialogue = false;

        string[] showmanPresentCandidates = ConversationManager.Instance.P3_ShowmanPresentCandidates;

        yield return(StartCoroutine(Interlocutor1.GetComponent <NpcController>().TalkDialogue(showmanPresentCandidates)));

        StartCoroutine(SP3_CandidatesPresentation());
    }
Exemple #18
0
        private IEnumerator SavedDialogue(SpeechBubbleManager npc)
        {
            yield return(npc.Say("Thank you very much for saving me.", 3f));

            yield return(npc.Say("My name is <color=#FFF02D>Elbert</color>.", 3f));

            yield return(npc.Say("I'll give you a hint.", 2f));

            yield return(npc.Say("There are some things you or your clone can do alone.", 5f));

            yield return(npc.Say("But sometimes, it is best to join forces.", 4f));

            yield return(npc.Say("Good luck.", 2f));
        }
Exemple #19
0
        public IEnumerator GetDialogue(SpeechBubbleManager npc, SpeechBubbleManager main)
        {
            switch (_speechStatus)
            {
            case 0:
                yield return(GetFirstDialogue(npc, main));

                break;

            case 1:
                yield return(GetSecondDialogue(npc, main));

                break;
            }
        }
Exemple #20
0
        private IEnumerator FinalDialogue(SpeechBubbleManager npc, SpeechBubbleManager main)
        {
            yield return(main.Say("Where were we on the \"Is it time travel?\" conversation?", 4f));

            yield return(npc.Say("You said it was time travel. I answered that it isn't.", 6f));

            yield return(main.Say("Hm.", 1f));

            yield return(npc.Say("I wouldn't worry about it. I am thankful you saved me.", 5f));

            yield return(npc.Say("Does it really matter if it was time travel or not?", 5f));

            yield return(main.Say("Maybe you're right.", 3f));

            _speechState = 3;
        }
Exemple #21
0
        private IEnumerator GetTip(SpeechBubbleManager npc, SpeechBubbleManager main)
        {
            yield return(npc.Say("Here is a little tip for you.", 3f));

            yield return(npc.Say("Up above, near the exit, there is a door that is very hard to open.", 5f));

            yield return(npc.Say("...Very hard for whoever does not have your lantern.", 4f));

            yield return(npc.Say("Sometimes it seems the hard way is the way to solve a riddle.", 5f));

            yield return(npc.Say("Always remember that your power can give you a much easier alternative.", 5f));

            yield return(npc.Say("You just need to be creative!", 3f));

            yield return(main.Say("Thank you for the tip, I'll keep it in mind.", 4f));
        }
Exemple #22
0
        private IEnumerator GetFirstDialogue(SpeechBubbleManager npc, SpeechBubbleManager main)
        {
            yield return(npc.Say("Welcome!", 1f));

            yield return(npc.Say("Escaping from this dungeon is not easy.", 4f));

            yield return(npc.Say("It's already too much dealing with the fact of being kept here.", 5f));

            yield return(npc.Say("And on top of that, you need to keep track of a bunch of stuff, too!", 5f));

            yield return(npc.Say("But fear not. I am here to help.", 3f));

            yield return(npc.Say("Bringing information about your escape, directly to your cell doorstep!", 5f));

            yield return(main.Say("Hm.", 1f));

            yield return(main.Say("Ok, I guess?", 1f, 0, 0, VoiceTone.Question));
        }
Exemple #23
0
        private IEnumerator GetNotTimeTravelDialogue(SpeechBubbleManager npc, SpeechBubbleManager main)
        {
            yield return(npc.Say("You look like someone who thinks that's a time traveler lantern.", 5f));

            yield return(main.Say("I stand by it!", 2f));

            yield return(npc.Say("It obviously has nothing to do with time travel!", 4f));

            yield return(npc.Say("Really, I am tempted to just un-save myself.", 4f));

            yield return(main.Say("I can just go back in time and stop me from saving you.", 4f));

            yield return(main.Say("...You know, using this magical time travel lantern.", 4f));

            yield return(npc.Say("*scoff*", 1f, 0, 0, VoiceTone.Angry));

            _speechStatus = 3;
        }
Exemple #24
0
        private IEnumerator SavedDialogue(SpeechBubbleManager npc, SpeechBubbleManager main)
        {
            yield return(npc.Say("Listen. Getting out of here won't be easy.", 4f));

            yield return(npc.Say("Make the best of your magical lantern.", 3f));

            yield return(main.Say("About that. Is it me or this is totally time travel?", 3f));

            yield return(npc.Say("What?", 1f));

            yield return(main.Say("You know, this lantern thing. Time travelling stuff.", 4f));

            yield return(npc.Say("Pretty sure it has nothing to do with that.", 3f));

            yield return(main.Say("Hm.", 1f));

            _speechState = 2;
        }
Exemple #25
0
        public IEnumerator GetDialogue(SpeechBubbleManager npc, SpeechBubbleManager main)
        {
            if (!_hasPresented)
            {
                _hasPresented = true;
                yield return(GetFirstDialogue(npc, main));
            }

            IEnumerable <NpcManager> managers = GlobalInstanceManager.GetGameManager()
                                                .GetComponentsInChildren <NpcManager>()
                                                .Where(manager => manager.needToBeSaved);
            IEnumerable <NpcManager> npcManagers = managers.ToList();
            int total = npcManagers.Count();
            int saved = npcManagers.Count(manager => manager.IsSaved());

            yield return(npc.Say(
                             $"You have saved <color=#FFF02D>{saved}</color> out of <color=#FFF02D>{total}</color> prisoners.", 5f));

            if (saved == 0)
            {
                yield return(npc.Say("Better get started on that, what do you think?", 4f));
            }

            if (saved == total)
            {
                yield return(npc.Say("Good job on saving everyone!", 3f, 0, 0, VoiceTone.Angry));
            }

            IEnumerable <HiddenPassageManager> passages = GlobalInstanceManager.GetGameManager()
                                                          .GetComponentsInChildren <HiddenPassageManager>();
            const int totalPassages = 7;
            int       foundPassages = totalPassages - passages.Count();

            yield return(npc.Say(
                             $"You have found <color=#FFF02D>{foundPassages}</color> out of <color=#FFF02D>{totalPassages}</color> hidden passages.",
                             5f));

            if (totalPassages == foundPassages)
            {
                yield return(npc.Say("Good job on finding every hidden passage!", 3f));
            }

            yield return(npc.Say("See you next time!", 2f));
        }
Exemple #26
0
        private IEnumerator GetFirstDialogue(SpeechBubbleManager npc, SpeechBubbleManager main)
        {
            yield return(npc.Say("Oh, hello!", 2f));

            yield return(npc.Say("My name is <color=#FFF02D>Valentine</color>.", 4f));

            yield return(npc.Say("I see you have a nice power that allows you to go as you please.", 5f));

            yield return(npc.Say("Unfortunately, I am stuck here.", 4f));

            yield return(main.Say("I see. That doesn't seem to bother you much, though?", 5f));

            yield return(npc.Say("Oh, you're right.", 3f));

            yield return(npc.Say("I know everyone else here thinks I cannot be saved.", 4f));

            yield return(npc.Say("After all, there seems to be no way to bring a box here.", 5f));

            if (GetComponentInParent <NpcManager>().IsSaved())
            {
                yield return(npc.Say("But you still found a way!", 3f));

                yield return(npc.Say("Thank you so much.", 2f));

                yield return(GetTip(npc, main));

                _speechStatus = 2;
            }
            else
            {
                yield return(npc.Say("However, I know there must be a way.", 3f));

                yield return(npc.Say("It was just not found yet. But...", 3f));

                yield return(npc.Say("I trust it will be.", 3f));

                yield return(npc.Say("I wouldn't be surprised if it will be you who saves me.", 4f));

                yield return(npc.Say("Remember that sometimes the right way is not in the place you expect.", 5f));

                _speechStatus = 1;
            }
        }
Exemple #27
0
    private void Awake()
    {
        //Laziness, replaces old instances because it is not meant to be singleton, it is 1 static per level, not 1 static per entire game
        if (instance != null)
        {
            Destroy(instance);
        }

        instance = this;

        Transform playerCanvas = GameObject.Find("Player Canvas").transform;

        speechBubbleRef = Instantiate(speechBubblePrefab, playerCanvas);

        //Get in children, so that you can just keep reference of the parent, background image of speech bubble, dont need to assign 2 things.
        speechBubbleText = speechBubbleRef.GetComponentInChildren <Text>();
        speechBubbleAnim = speechBubbleRef.GetComponentInChildren <Animator>();

        speechBubbleRef.SetActive(false);
        speechBubbleText.text = speechBubbleWords;
    }
Exemple #28
0
    IEnumerator SP3_CandidatePresentationSpeak(string[] dialogue, Person candidate)
    {
        for (int i = 0; i < dialogue.Length; i++)
        {
            TalkingDialogue = true;



            GameObject speechBubble = Instantiate(ComicDialogue) as GameObject;
            speechBubble.AddComponent <SpeechBubbleManager>();
            speechBubble.transform.SetParent(GameObject.Find("Canvas").transform);

            SpeechBubbleManager speechBubble2 = new SpeechBubbleManager(candidate, dialogue[i]);

            if (HousesOnStage[0].GetComponent <HousePersonality>().HouseType == candidate.HouseType)
            {
                speechBubble.gameObject.GetComponent <SpeechBubbleControl>().Protocol = HousesOnStage[0].GetComponent <HousePersonality>().Actitude;
                speechBubble2.Line = ConversationManager.Instance.P3_BestCandidatePresentation;
            }
            if (HousesOnStage[0].GetComponent <HousePersonality>().AntiHouseType == candidate.HouseType)
            {
                speechBubble2.Line = ConversationManager.Instance.P3_WorstCandidatePresentation;
            }
            else
            {
                speechBubble2.Line = ConversationManager.Instance.P3_NeutralCandidatePresentation;
            }



            speechBubble2.CloneParameters(speechBubble.GetComponent <SpeechBubbleManager>());
            speechBubble.GetComponent <SpeechBubbleManager>().Initialize();



            TalkingDialogue = false;
            yield return(StartCoroutine(WaitingInput()));
        }
    }
Exemple #29
0
        public IEnumerator GetDialogue(SpeechBubbleManager npc, SpeechBubbleManager main)
        {
            switch (_speechState)
            {
            case 0:
                yield return(FirstDialogue(npc, main));

                break;

            case 1:
                if (GetComponentInParent <NpcManager>().IsSaved())
                {
                    yield return(npc.Say("Thanks to you, I am now free! Can't wait to play the harp again.", 5f));

                    yield return(SavedDialogue(npc, main));
                }
                else
                {
                    yield return(npc.Say("Hello again. It has been hard without my harp.", 4f, 0, 0, VoiceTone.Helpless));

                    yield return(npc.Say("If you would save me, it would allow me to play again.", 6f));
                }

                break;

            case 2:
                yield return(FinalDialogue(npc, main));

                yield break;

            case 3:
                yield return(GoodbyeDialogue(npc));

                yield break;
            }
        }
Exemple #30
0
        public IEnumerator GetDialogue(SpeechBubbleManager npc, SpeechBubbleManager main)
        {
            switch (_speechState)
            {
            case 0:
                yield return(FirstDialogue(npc, main));

                break;

            case 1:
                if (GetComponentInParent <NpcManager>().IsSaved())
                {
                    yield return(SavedDialogue(npc));
                }
                else
                {
                    yield return(SecondDialogue(npc));
                }

                break;
            }

            yield return(null);
        }
Exemple #31
0
        private IEnumerator GetFirstDialogue(SpeechBubbleManager npc, SpeechBubbleManager main)
        {
            IEnumerable <NpcManager> managers = GlobalInstanceManager.GetGameManager()
                                                .GetComponentsInChildren <NpcManager>()
                                                .Where(manager => manager.needToBeSaved);
            IEnumerable <NpcManager> npcManagers = managers.ToList();
            int  total            = npcManagers.Count();
            int  saved            = npcManagers.Count(manager => manager.IsSaved());
            bool hasSavedEveryone = total == saved;

            yield return(npc.Say("Congratulations, you have almost reached the exit.", 3f));

            yield return(npc.Say("Unfortunately, it seems there is no way to open this door.", 5f));

            yield return(main.Say("Are you the warden of this prison?", 3f));

            yield return(npc.Say("Am I? Well. Yes.", 3f));

            yield return(npc.Say("And so are you.", 3f));

            yield return(npc.Say("And so is everyone here.", 3f));

            yield return(npc.Say("Each prisoner, warden of a prison called <color=#FFF02D>self</color>.", 5f));

            yield return(npc.Say("Curious, right?", 2f));

            yield return(main.Say("I am not sure I understand.", 3f));

            yield return(npc.Say("You might, in time.", 3f));

            yield return(npc.Say("Still, in your shoes, I would be very proud of myself.", 5f));

            yield return(npc.Say("You managed to exit your cell. Alone.", 4f));

            yield return(main.Say("I had help. Someone throw a magical lantern (and a rock) right at me.", 5f));

            yield return(npc.Say("I will repeat. You managed to exit your cell... alone.", 5f));

            yield return(npc.Say("You managed to bring yourself here.", 4f));

            yield return(npc.Say("You maybe didn't realize: that was already the most important step.", 5f));

            yield return(npc.Say("While, this exit here? Just well-deserved joy.", 4f));

            yield return(main.Say("What about the other prisoners? They were less lucky.", 5f));

            if (hasSavedEveryone)
            {
                yield return(npc.Say("You <i>did</i> save everyone.", 3f));

                yield return(npc.Say("Wouldn't you say, in this case, they were the luckiest ones?", 5f));
            }
            else
            {
                yield return(npc.Say("You could have saved everyone. But you didn't.", 4f));

                yield return(npc.Say("I expect you'll be thinking about that on your way out.", 5f));
            }

            yield return(main.Say("What about this door, then?", 4f));

            yield return(npc.Say("It won't open.", 2f));

            yield return(main.Say("I... I don't accept that.", 3f));

            yield return(npc.Say("You don't, uh?", 2f));

            yield return(npc.Say("In the face of this insurmountable obstacle, you do not budge?", 5f));

            yield return(npc.Say("When given all the wrong cards, do you not give up the game?", 5f));

            yield return(npc.Say("Do you want to get out, even when everything screams at you, that you cannot?", 6f));

            yield return(new WaitForSeconds(2f));

            yield return(main.Say("You already know the answer to that.", 4f));

            yield return(main.Say("I will chew my way out, if necessary.", 4f));

            yield return(npc.Say("I see.", 1f));

            yield return(npc.Say("It was not easy. Others had given up.", 4f));

            yield return(npc.Say("But you had something in you that made the impossible, possible.", 5f));

            yield return(npc.Say("If there is anything you should remember from this journey, let it be this:", 5f));

            yield return(npc.Say("That power means nothing, if you only use it for yourself.", 4f));

            lastDoor.StartOpening();

            yield return(npc.Say("Welcome back to the outside, friend.", 4f));

            yield return(main.Say("What about this lantern?", 3f, 1f, 0, VoiceTone.Question));

            yield return(npc.Say("I'll take it.", 2f));

            GlobalInstanceManager.GetStateManager().HasLantern  = false;
            GlobalInstanceManager.GetStateManager().CanUsePower = false;

            yield return(npc.Say("This lantern has more to offer.", 4f, 1f));

            yield return(npc.Say("I know what to do with it. As for you...", 4f));

            yield return(npc.Say("You should go now.", 3f));

            _hasPresented = true;
        }