quest can certainly do dialogue, though you got to craft your dialogue system yourself, but here's some help for the basic coding of it:
npc = non-playable character (monster, townspeople, a hint guide ~ 'wise owl', etc)
(see, click on, the relevant links~threads within these links below)
1.
http://quest5.net/wiki/How_to2.
viewforum.php?f=18learning lists and dictionaries is a bit difficult if you're new to coding, but this is how you do dialogue coding. There's many ways of doing dialogue coding designs, from simple (like multiple 'show menu' functions) to complex.
as for randomness:
GetRandomInt (min,max)
GetRandomInt (1,3)
output: (it randomly selects 1,2, or 3)
so, for the coding:
<object name="global_data_object">
-> <inherit name="editor_object" />
-> <attr name="my_string_list" type="simplestringlist">red;blue;yellow</attr>
</object>
global_data_object.my_string_list = split ("red;blue;yellow")
ordering of lists' items:
0: red
1: blue
2: yellow
ListCount (Object.StringList): the quantity~amount of items in the list: 3 (red-1, blue-2, and yellow-3)
StringListItem (Object.StringList, order_number_of_item): returns the string (name) of the item, selected via it's list ordering.
result_x = StringListItem (global_data_object.my_string_list, GetRandomInt (0, ListCount (global_data_object.my_string_list) - 1))
if (result_x = "red") {
-> msg ("apple")
} else if (result_x = "blue") {
-> msg ("blueberry")
} else if (result_x = "yellow") {
-> msg ("banana")
}
--------
and it's similar for npcs moving to random rooms:
global_data_object.my_object_list = ~Scope_or_Get_AllRooms ()
result_x = ObjectListItem (global_data_object.my_object_list, GetRandomInt (0, ListCount (global_data_object.my_object_list) - 1))
npc.parent = result_x