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