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.

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.

This site is now closed.
As of 1st November 2015, this site is a read-only archive. For more information see the intfiction forum post

Welcome to IF Answers, a site for questions and answers about Interactive Fiction.

Technical questions about interactive fiction development tools such as Inform, Twine, Quest, QuestKit, Squiffy, Adrift, TADS etc. are all on-topic here.

Non-technical questions about interactive fiction are also on-topic. These questions could be about general IF design, specific games, entering the IF Comp etc.
...