None of the above. The code is pretty straightforward. The stripped down code (with debugging code added) looks something like this:
start_at = roomTo test it, enter READ ABOUT BALL. You can clearly see that noun1 returns the wrong thing.
game_settings {
add_standard_prepositions = false
experimental_new_parser = true
}
locations {
room : location "You are in a room.";
}
objects {
ball_twine : object "a ball of twine" at = "room" {experimental_matching_text_sequences = ["ball of twine", "ball", "twine"]}
text_book : object "a text book" at = "room";
}
on_command {
: match "_ _" {
: mask {
: print {("^n^verb = " + original "verb")}
: print {("^n^preposition1 = " + original "preposition1")}
: print {("^n^noun1 = " + original "noun1")}
: print {("^n^preposition2 = " + original "preposition2")}
: print {("^n^noun2 = " + original "noun2" + "^m^")}
}
}
: if (is_present "text_book") {
: match "read _" {
: if (preposition1_is "about") {
: if (noun1_is "ball") {
: print "It says you only need rubber to make a ball.";
: done;
}
: print "There's no topic on that.";
: done;
}
}
}
}
vocabulary {
: preposition / aliases = [about]
: noun / aliases = [ball]
}
Note that there is no object for the ball. It is a topic in the book. It has an entry in the vocabulary to work around Adventuron's inability to recognise topics or concepts that do not have objects, hence can never be in scope.