§16.13. Topic columns

When double-quoted matter appears in a column of a table, Inform will normally treat that as text for printing out. The exception is when the column is called "topic", where it is treated as text for comparing against what the player has typed. There is really only one operation allowed with topic columns, the "...listed in..." construction, but fortunately it is the one most often needed.

Let us suppose that the Sybil has a penchant for telling passers-by which is the Greek muse for what. We might write:

paste.png After asking the Sybil about a topic listed in the Table of Sybil's Replies, say "The Sybil declaims for a while, the gist being that the muse in question looks after [muse entry]."

We can then provide a simple table giving her responses:

Table of Sybil's Replies

Topic

Muse

"calliope"

"epic poetry"

"clio"

"history"

"erato"

"love poetry"

"euterpe"

"music"

"melpomene"

"tragedy"

"polyhymnia"

"sacred poetry"

"terpsichore"

"dancing"

"thalia"

"comedy"

"urania"

"astronomy"

"monica"

"tidiness"

"phoebe"

"massage"

"rachel"

"oval hair-cuts"

Topics can use the full range of abilities of the "understanding" system which Inform uses to parse text, and which will be the subject of a later chapter. For now, note that the Sybil's topics might equally include "flora/eve" (matching the single word "flora" or the single word "eve"), or something more elaborate such as:

"Bridget" or "Bridge" or "Bridget Jones"

* See Understand for the system Inform uses to parse text


arrow-up.pngStart of Chapter 16: Tables
arrow-left.pngBack to §16.12. Listed in...
arrow-right.pngOnward to §16.14. Another scoring example

*ExampleMerlin
A REMEMBER command which accepts any text and looks up a response in a table of recollections.

***ExampleThe Queen of Sheba
Allowing the player to use question words, and using that information to modify the response given by the other character.

paste.png "Questionable Revolutions"

Interrogative is a kind of value. The interrogatives are who, what, when, where, how, and why.

Current question is an interrogative that varies.

After asking someone about something: respond to the question. After answering someone that something: respond to the question.

After telling someone about something: say "You're here to ask questions."

Country is a kind of value. The countries are Czechoslovakia, Georgia, Sweden, Italy, Spain.

Table of Information

topic

date

place

definition

"velvet revolution"

1989

Czechoslovakia

"A bloodless revolution in Czechoslovakia, in which popular protests led to the resignation of the communist president Gustav Husak, and the election of Vaclav Havel in his place."

"rose revolution"

2003

Georgia

"A revolution in which President Eduard Shevardnadze was interrupted by protesters in the middle of his speech, and forced to flee."

"spanish revolution"

1936

Spain

"An anarchist and socialist movement during the Spanish civil war."

After reading a command:
    if the player's command includes "[interrogative]", now the current question is the interrogative understood.

To respond to the question:
    repeat through the Table of Information:
        if the topic understood includes topic entry:
            if the current question is what or the current question is who, say definition entry appropriately;
            if the current question is when, say date entry appropriately;
            if the current question is where, say place entry appropriately;
            rule succeeds;
    say "[The noun] shrugs."

Understand "ask [someone] [text]" as asking it about.

Comprehension is a kind of value. The comprehensions are vague, erroneous, and correct.

Table of Understanding

character

years

geography

general comprehension

Dr Tweedy

correct

correct

correct

Ms Finch

erroneous

erroneous

correct

Ms Clarion

vague

vague

erroneous

When play begins:
    say "Here you are in the first class cabin, but no matter how fancy the seats are, you can still get bored circling over Zurich for three hours on end. To kill time, you and the other passengers are playing a trivia game, and the final topic is your specialty: revolutions."

First Class Cabin is a room. Dr Tweedy is a man in First Class. Ms Finch and Ms Clarion are women in First Class.

To say (year - a number) appropriately:
    choose row with character of the noun in the Table of Understanding;
    if years entry is correct:
        say "'[year],' replies [the noun] promptly.";
        increment the quiz score of the noun;
    if years entry is erroneous:
        let guess be a random number between 1900 and 2005;
        say "'[guess]?' guesses [the noun], with an air of diffidence[if guess is the year]. Which is right, as it happens[end if].";
        if guess is the year, increment the quiz score of the noun;
    if years entry is vague:
        let offset be a random number between -5 and 5;
        let year be year + offset;
        say "'I think [year]. About then. Close, anyway,' replies [the noun][if the offset is 0], getting it right[end if].";
        if offset is 0, increment the quiz score of the noun.

To say (spot - a country) appropriately:
    choose row with character of the noun in the Table of Understanding;
    if geography entry is correct:
        say "'[spot],' replies [the noun] promptly.";
        increment the quiz score of the noun;
    if geography entry is erroneous:
        let guess be a random country;
        say "'Er... [guess]?' says [the noun][if guess is the spot]. Which is of course correct[end if].";
        if guess is the spot, increment the quiz score of the noun;
    if geography entry is vague, say "'Europe,' replies [the noun] with confidence."

To say (explanation - some text) appropriately:
    choose row with character of the noun in the Table of Understanding;
    if general comprehension entry is correct:
        say "'[explanation]'[paragraph break]";
        increment the quiz score of the noun;
    otherwise:
        choose a random row in the Table of Information;
        say "'[definition entry]'[paragraph break]";
        if the definition entry is explanation:
            say "[A random other person who is not the noun] looks surprised that this came out right.";
            increment the quiz score of the noun.

A person has a number called quiz score. The quiz score of Tweedy is 48. The quiz score of Finch is 2. The quiz score of Clarion is 4.

Definition: a person is other if it is not the player.

When play begins:
    now left hand status line is "T: [quiz score of Tweedy] F: [quiz score of Finch] C: [quiz score of Clarion]";
    now right hand status line is "[time of day]".

Test me with "dr tweedy, where was the velvet revolution located / ms finch, when was the rose revolution / ms finch, what was the rose revolution / ms clarion, when was the spanish revolution / g / g / ms finch, when was the spanish revolution".

We have so far seen several ways to write conversational characters in Inform, and we will see more before the end of the manual. This naturally raises the question, which should we use? To which the answer is: it depends on the sort of game we're writing, and what we want our characters to do. The more rich and complex the system, the more likely that it will require a lot of content; if we add question types as well as keywords, for instance, we instantly multiply the number of responses we have to write by five or six. It is not worth doing this unless there is some corresponding advantage within the game.

***ExampleQuestionable Revolutions
An expansion on the previous idea, only this time we store information and let characters answer depending on their expertise in a given area.

paste.png "Questionable Revolutions"

Interrogative is a kind of value. The interrogatives are who, what, when, where, how, and why.

Current question is an interrogative that varies.

After asking someone about something: respond to the question. After answering someone that something: respond to the question.

After telling someone about something: say "You're here to ask questions."

Country is a kind of value. The countries are Czechoslovakia, Georgia, Sweden, Italy, Spain.

Table of Information

topic

date

place

definition

"velvet revolution"

1989

Czechoslovakia

"A bloodless revolution in Czechoslovakia, in which popular protests led to the resignation of the communist president Gustav Husak, and the election of Vaclav Havel in his place."

"rose revolution"

2003

Georgia

"A revolution in which President Eduard Shevardnadze was interrupted by protesters in the middle of his speech, and forced to flee."

"spanish revolution"

1936

Spain

"An anarchist and socialist movement during the Spanish civil war."

After reading a command:
    if the player's command includes "[interrogative]", now the current question is the interrogative understood.

To respond to the question:
    repeat through the Table of Information:
        if the topic understood includes topic entry:
            if the current question is what or the current question is who, say definition entry appropriately;
            if the current question is when, say date entry appropriately;
            if the current question is where, say place entry appropriately;
            rule succeeds;
    say "[The noun] shrugs."

Understand "ask [someone] [text]" as asking it about.

Comprehension is a kind of value. The comprehensions are vague, erroneous, and correct.

Table of Understanding

character

years

geography

general comprehension

Dr Tweedy

correct

correct

correct

Ms Finch

erroneous

erroneous

correct

Ms Clarion

vague

vague

erroneous

When play begins:
    say "Here you are in the first class cabin, but no matter how fancy the seats are, you can still get bored circling over Zurich for three hours on end. To kill time, you and the other passengers are playing a trivia game, and the final topic is your specialty: revolutions."

First Class Cabin is a room. Dr Tweedy is a man in First Class. Ms Finch and Ms Clarion are women in First Class.

To say (year - a number) appropriately:
    choose row with character of the noun in the Table of Understanding;
    if years entry is correct:
        say "'[year],' replies [the noun] promptly.";
        increment the quiz score of the noun;
    if years entry is erroneous:
        let guess be a random number between 1900 and 2005;
        say "'[guess]?' guesses [the noun], with an air of diffidence[if guess is the year]. Which is right, as it happens[end if].";
        if guess is the year, increment the quiz score of the noun;
    if years entry is vague:
        let offset be a random number between -5 and 5;
        let year be year + offset;
        say "'I think [year]. About then. Close, anyway,' replies [the noun][if the offset is 0], getting it right[end if].";
        if offset is 0, increment the quiz score of the noun.

To say (spot - a country) appropriately:
    choose row with character of the noun in the Table of Understanding;
    if geography entry is correct:
        say "'[spot],' replies [the noun] promptly.";
        increment the quiz score of the noun;
    if geography entry is erroneous:
        let guess be a random country;
        say "'Er... [guess]?' says [the noun][if guess is the spot]. Which is of course correct[end if].";
        if guess is the spot, increment the quiz score of the noun;
    if geography entry is vague, say "'Europe,' replies [the noun] with confidence."

To say (explanation - some text) appropriately:
    choose row with character of the noun in the Table of Understanding;
    if general comprehension entry is correct:
        say "'[explanation]'[paragraph break]";
        increment the quiz score of the noun;
    otherwise:
        choose a random row in the Table of Information;
        say "'[definition entry]'[paragraph break]";
        if the definition entry is explanation:
            say "[A random other person who is not the noun] looks surprised that this came out right.";
            increment the quiz score of the noun.

A person has a number called quiz score. The quiz score of Tweedy is 48. The quiz score of Finch is 2. The quiz score of Clarion is 4.

Definition: a person is other if it is not the player.

When play begins:
    now left hand status line is "T: [quiz score of Tweedy] F: [quiz score of Finch] C: [quiz score of Clarion]";
    now right hand status line is "[time of day]".

Test me with "dr tweedy, where was the velvet revolution located / ms finch, when was the rose revolution / ms finch, what was the rose revolution / ms clarion, when was the spanish revolution / g / g / ms finch, when was the spanish revolution".

We have so far seen several ways to write conversational characters in Inform, and we will see more before the end of the manual. This naturally raises the question, which should we use? To which the answer is: it depends on the sort of game we're writing, and what we want our characters to do. The more rich and complex the system, the more likely that it will require a lot of content; if we add question types as well as keywords, for instance, we instantly multiply the number of responses we have to write by five or six. It is not worth doing this unless there is some corresponding advantage within the game.

paste.png "Questionable Revolutions"

Interrogative is a kind of value. The interrogatives are who, what, when, where, how, and why.

Current question is an interrogative that varies.

After asking someone about something: respond to the question. After answering someone that something: respond to the question.

After telling someone about something: say "You're here to ask questions."

Country is a kind of value. The countries are Czechoslovakia, Georgia, Sweden, Italy, Spain.

Table of Information

topic

date

place

definition

"velvet revolution"

1989

Czechoslovakia

"A bloodless revolution in Czechoslovakia, in which popular protests led to the resignation of the communist president Gustav Husak, and the election of Vaclav Havel in his place."

"rose revolution"

2003

Georgia

"A revolution in which President Eduard Shevardnadze was interrupted by protesters in the middle of his speech, and forced to flee."

"spanish revolution"

1936

Spain

"An anarchist and socialist movement during the Spanish civil war."

After reading a command:
    if the player's command includes "[interrogative]", now the current question is the interrogative understood.

To respond to the question:
    repeat through the Table of Information:
        if the topic understood includes topic entry:
            if the current question is what or the current question is who, say definition entry appropriately;
            if the current question is when, say date entry appropriately;
            if the current question is where, say place entry appropriately;
            rule succeeds;
    say "[The noun] shrugs."

Understand "ask [someone] [text]" as asking it about.

Comprehension is a kind of value. The comprehensions are vague, erroneous, and correct.

Table of Understanding

character

years

geography

general comprehension

Dr Tweedy

correct

correct

correct

Ms Finch

erroneous

erroneous

correct

Ms Clarion

vague

vague

erroneous

When play begins:
    say "Here you are in the first class cabin, but no matter how fancy the seats are, you can still get bored circling over Zurich for three hours on end. To kill time, you and the other passengers are playing a trivia game, and the final topic is your specialty: revolutions."

First Class Cabin is a room. Dr Tweedy is a man in First Class. Ms Finch and Ms Clarion are women in First Class.

To say (year - a number) appropriately:
    choose row with character of the noun in the Table of Understanding;
    if years entry is correct:
        say "'[year],' replies [the noun] promptly.";
        increment the quiz score of the noun;
    if years entry is erroneous:
        let guess be a random number between 1900 and 2005;
        say "'[guess]?' guesses [the noun], with an air of diffidence[if guess is the year]. Which is right, as it happens[end if].";
        if guess is the year, increment the quiz score of the noun;
    if years entry is vague:
        let offset be a random number between -5 and 5;
        let year be year + offset;
        say "'I think [year]. About then. Close, anyway,' replies [the noun][if the offset is 0], getting it right[end if].";
        if offset is 0, increment the quiz score of the noun.

To say (spot - a country) appropriately:
    choose row with character of the noun in the Table of Understanding;
    if geography entry is correct:
        say "'[spot],' replies [the noun] promptly.";
        increment the quiz score of the noun;
    if geography entry is erroneous:
        let guess be a random country;
        say "'Er... [guess]?' says [the noun][if guess is the spot]. Which is of course correct[end if].";
        if guess is the spot, increment the quiz score of the noun;
    if geography entry is vague, say "'Europe,' replies [the noun] with confidence."

To say (explanation - some text) appropriately:
    choose row with character of the noun in the Table of Understanding;
    if general comprehension entry is correct:
        say "'[explanation]'[paragraph break]";
        increment the quiz score of the noun;
    otherwise:
        choose a random row in the Table of Information;
        say "'[definition entry]'[paragraph break]";
        if the definition entry is explanation:
            say "[A random other person who is not the noun] looks surprised that this came out right.";
            increment the quiz score of the noun.

A person has a number called quiz score. The quiz score of Tweedy is 48. The quiz score of Finch is 2. The quiz score of Clarion is 4.

Definition: a person is other if it is not the player.

When play begins:
    now left hand status line is "T: [quiz score of Tweedy] F: [quiz score of Finch] C: [quiz score of Clarion]";
    now right hand status line is "[time of day]".

Test me with "dr tweedy, where was the velvet revolution located / ms finch, when was the rose revolution / ms finch, what was the rose revolution / ms clarion, when was the spanish revolution / g / g / ms finch, when was the spanish revolution".

We have so far seen several ways to write conversational characters in Inform, and we will see more before the end of the manual. This naturally raises the question, which should we use? To which the answer is: it depends on the sort of game we're writing, and what we want our characters to do. The more rich and complex the system, the more likely that it will require a lot of content; if we add question types as well as keywords, for instance, we instantly multiply the number of responses we have to write by five or six. It is not worth doing this unless there is some corresponding advantage within the game.