Login
Remember
IF Answers
Ask a Question

# How do you make choices in Quest?

0 votes
66 views
asked Jun 13 in Authoring by anonymous

I'm currently working on a text game in Quest, however I was wondering how you make a sort of multiple choice dialogue list. Like, a list of hyperlinks that lead to different paths of dialouge. I know it seems like a simple question, but the process of solving it has evaded me. Thank you in advance to whoever answers my question.

- quest
- text
- textadventures-co-uk

## 1 Answer

0 votes
answered Jun 14 by hegemonkhan (161 points)
edited Jun 14 by hegemonkhan
Best answer

Dialogue is not a simple thing to implement, this is one of the more advanced coding stuff.

there's many different designs for implementing multi-choice-path dialogue. Doing this as hyperlinks, would be much more messy and difficult. The easiest way would be to use 'show menu' and 'stringlists and~or stringdictionaries and~or scriptdictionaries', but it'll still be difficult, just due to the nature of multi-choice-path dialogue itself.

We've got some dialogue libraries~guides~code samples that you can take a look at:

http://docs.textadventures.co.uk/quest/
http://docs.textadventures.co.uk/quest/tutorial/
http://docs.textadventures.co.uk/quest/guides/ (scroll down through the entire thing)
http://forum.textadventures.co.uk/viewforum.php?f=18 (more guides: libraries and code samples)

http://docs.textadventures.co.uk/quest/text_processor.html

http://docs.textadventures.co.uk/quest/guides/using_lists.html
http://docs.textadventures.co.uk/quest/using_dictionaries.html
http://docs.textadventures.co.uk/quest/scripts/show_menu.html
http://forum.textadventures.co.uk/viewtopic.php?f=18&t=5137

The most advanced would be Jaynabonne's, which he used for his excellent game Spondre:

http://forum.textadventures.co.uk/viewtopic.php?f=5&t=4883 (Spondre game by Jaynabonne)

and the source code which Jay has made available publically:

http://forum.textadventures.co.uk/viewtopic.php?f=18&t=4889

and his dialogue library which he used for it:

http://forum.textadventures.co.uk/viewtopic.php?f=18&t=3909

and there's also Pixie's Dialogue library too:

http://docs.textadventures.co.uk/quest/libraries/dynamic_menus_for_conversations.html
http://forum.textadventures.co.uk/viewtopic.php?f=10&p=36443#p36443

you might just want to learn the basics to start out of using 'show menu', 'stringlists ~ stringdictionaries ~scriptdictionaries', and 'list~dictionary add~remove', here's an simple sample example:

(I'm still a total noob at dialogue coding, so you may want to look at the guides~libraries by others, who're much more skilled at this stuff)

(ach, this is too complex for me to try to do on the fly... laughs. I already messed up on it, as all the scripting in the 'dialogue' needs to be handled via the 'stringdictionary' or a 'scriptdictionary', so I'm stopping this pathetic attempt of mine at it, as I'm not skilled at it)

    <object name="king_npc">
      <alias>King</alias>
      <dialogue type="script">
        show menu ("Topic?", this.current_topics_stringlist_attribute, false) {
          msg (StringDictionaryItem (this.topics_stringdictionary_attribute, result))
          if (result="princess") {
            if (player.has_princess) {
              msg ("Thank you for saving my daughter, you may marry her, becoming my heir to the kindgom.")
              msg ("You've won the game! Great Job!")
              finish
            } else {
              firsttime {
                list add (this.current_topics_stringlist_attribute, "dragon")
              }
            }
          } else if (result="dragon") {
            list add (this.current_topics_stringlist_attribute, "dragon_slaying_sword")
          } else if (result="dragon_slaying_sword") {
            list add (this.current_topics_stringlist_attribute, "evil_wizard")
          }
        }
      </dialogue>
      <attr name="current_topics_stringlist_attribute" type="simplestringlist">princess</attr>
      <attr name="all_topics_stringlist_attribute" type="simplestringlist">princess;dragon;dragon_slaying_sword;evil_wizard</attr>
      <attr name="completed_topics_stringlist_attribute" type="simplestringlist">none</attr>
      <topics_stringdictionary_attribute type="stringdictionary">
        <item>
          <key>princess</key>
          <value>"My daughter has been taken by a dragon! Please rescue her!"</value>
        <item>
        <item>
         <key>dragon</key>
         <value>xxx</value>
        </item>
      </topics_stringdictionary_attribute>
      <topics_scriptdictionary_attribute type="scriptdictionary">
        <item key="princess">
          // scripting
        </item>
        <item key="dragon">
          // scripting
        </item>
      </topics_scriptdictionary_attribute>
    </object>

P.S.

if you rather, you could use a 'get input' method instead, where the person playing the game, types in stuff, for the dialogue system, which you can take a look at it in the form of a character creation (just to see how it looks~works), which I've created:

http://forum.textadventures.co.uk/viewtopic.php?f=18&t=4988

P.S.S.

you can also take a look at this code of mine, as it deals with using lists~dictionaries:

http://forum.textadventures.co.uk/viewtopic.php?f=18&t=5138

ask if you got any questions, I'll try to help as much as I can, at least on the individual parts, but creating a system is too difficult for me.

## Related questions

- How do you center images in Quest?
- How do I make verbs synonymous for only certain objects in Quest 5.6.1?
- How do you hide a verb and then make it visible under certain conditions?
- How can I make use of the health variable in Quest through the editor
- How to make a "continue" hyperlink in a Quest game?

...