Conversations in Gamebooks?

thefran
I'm writing a novel that involves a lot of dialogue choices, but rather simplistic interactions.

How do I properly handle dialogue? I want to avoid "welcome to corneria" kind of situation where I can ask the same thing over and over and get the same response every time. Do I have to make a separate page for every single possible order of dialogue choices for every character?

Odie_da_Bossé
There are multiple things you might want to consider here.

So, you were saying that you wanted one of the dialogue to be "Welcome to Corneria". The thing is, since Gamebooks aren't very well developed in Quest, there are a few things text adventures might not have included, that would have made it better; Squiffy is clearly a better program for this. But there are a few solutions, but this might help?

1. Although this will have two outputs, there is a script that you might want to look at. It will only be for the first time it's different, otherwise a same output will come.

Step One: Select page you want for the character you talk to answer you.

Step Two: Select "Script + Text".

Step Three: Select tab "Scripts", and click "First Time...", then press okay.

Step Four: This is where you will add what you want character to say for first response. You will notice text, saying 'The first time, Run script:" select the "Add new script" button just below it.

Step Five: Select the "Output" tab, and click "Print a message". Press OK.

Step Six: Enter your desired dialogue for the first time.

Step Seven: Repeat steps 4 and 6 in 'Otherwise, Run script', except the other message you want the character to say.

Step Eight: Add additional text in description. Note that this will appear no matter how many times you've selected the link. Of course, if you don't want this, select "Script" rather than "Script + Text" for the page type. Voila, done!

For the last part, unless you do the above ^^^, quite frankly, you do. Although, I certainly think there are better and more effective solutions.

This, of course is a basic method, and not very advanced. But it might get you somewhere. I'm sure there are others, but I will name this one for now, otherwise this reply could be the next book of the Harry Potter series. Hope this helped! :D

Marzipan
Is it bad etiquette to recommend using Twine over Squiffy?

Granted I haven't had a very in-depth look at either, but Twine seemed a little more intuitive to me when experimenting around with some of the more advanced options.

HegemonKhan
you're going to have to work with some scripting...

set the page type to 'scripts' or 'text + scripts'.

conceptually+example (in code):

(using Text Adventure, not Gamebook, lol, meh ~ I haven't worked much with Gamebooks, lol)

<asl version="550">

<include ref="English.aslx" />
<include ref="Core.aslx" />

<game name="xxx">
<gameid>xxx</gameid>
<attr name="npc_1_dialogue_integer" type="int">0</attr>
<attr name="npc_2_dialogue_integer" type="int">0</attr>
</game>

<object name="room">

<inherit name="editor_room" />

<object name="player">
<inherit name="editor_object" />
<inherit name="editor_player" />
</object>

<object name="npc_1">
<inherit name="editor_object" />
<talk type="script">
npc_1_dialogue_function
</talk>
</object>

<object name="npc_2">
<inherit name="editor_object" />
<talk type="script">
npc_2_dialogue_function
</talk>
</object>

</object>

<function name="npc_1_dialogue_function">
if (game.npc_1_dialogue_integer = 0) {
msg ("aaa")
game.npc_1_dialogue_integer = 1
} else if (game.npc_1_dialogue_integer = 1) {
msg ("bbb")
game.npc_1_dialogue_integer = 2
} else if (game.npc_1_dialogue_integer = 2) {
msg ("ccc")
game.npc_1_dialogue_integer = 3
} else if (game.npc_1_dialogue_integer = 3) {
msg ("ddd")
game.npc_1_dialogue_integer = 0
}
</function>

<function name="npc_2_dialogue_function">
if (game.npc_2_dialogue_integer = 0) {
msg ("aaa")
game.npc_2_dialogue_integer = 1
} else if (game.npc_2_dialogue_integer = 1) {
msg ("bbb")
game.npc_2_dialogue_integer = 2
} else if (game.npc_2_dialogue_integer = 2) {
msg ("ccc")
game.npc_2_dialogue_integer = 3
} else if (game.npc_2_dialogue_integer = 3) {
msg ("ddd")
game.npc_2_dialogue_integer = 0
}
</function>

</asl>


----------------------

the generic Attribute syntax:

Object_name.Attribute_name = Value_or_Expression

in Gamebook, there's only 2 Objects available:

Object Name: game
Object Name: player

Attributes:

String Attribute examples:

player.condition = "normal"
player.condition = "dead"
game.greeting = "Hi, how are you doing?"
game.greeting = "Hi, my name is " + player.alias + ", how are you doing?"
game.event = "0"
game.event = "1"
game.event = "2"
game.event = "a"
game.event = "b"
game.event = "c"
player.eye_color = "blue"
player.event = "0"

Integer (int) Attribute examples:

player.strength = 100
game.strength = 100
player.endurance = 75
player.strength = player.strength + player.endurance
player.damage = player.weapon_damage + player.weapon_damage * player.strength / 100 - game.orc_damage - game.orc_damage * game.orc_endurance / 100

Double (Float~Floating Point~Decimal Numbers) examples:

player.strength = 38.1803

Boolean (Flag) Attribute examples:

player.dead = false
player.dead = true
game.orc_dead = false
game.orc_dead = true
player.flying = false
player.flying = true
player.poisoned = false
player.poisoned = true

Lists (Stringlists or Objectlists) Attribute examples:

player.condition_list = split ("poisoned;confused;paralyzed", ";")
player.equipment_list = split ("helmet;mail;pauldrons;guantlets;vambraces;greaves;boots;fauld;tasset;sword;shield", ";")

Dictionaries and etc Attribute Types... (too lazy)

-----------------------------

this is how you do the stuff above in the GUI~Editor:

the two super scripts (these two, especially when used together, lets you do 90% of everything that you want to do in your game):

1. Attributes (game states~data):

run as script -> add a~new script -> variables -> 'set a variable or attribute' Script -> (see above)

2. Scripting (Actions, in this case: 'if~else if~else' conditionals and responses):

run as script -> add a~new script -> scripts -> 'if' Script -> [Expression] -> (see above)

-------------------------

ask if you need help

Silver
Marzipan wrote:Is it bad etiquette to recommend using Twine over Squiffy?

Granted I haven't had a very in-depth look at either, but Twine seemed a little more intuitive to me when experimenting around with some of the more advanced options.


You can get Quest to behave like twine by disabling the text in putter, giving exits an alias and getting the text processor to give those aliases as clickable options to take you to other rooms. I think this is how I'm going to attempt to deal with interacting with an npc.

This topic is now closed. Topics are closed after 60 days of inactivity.

Support

Forums