Inform 7 Home Page / Documentation
§9.2. Awarding points
Traditionally-written stories award points throughout play, as an indication of progress. If we want to be traditional, we must first write:
Use scoring.
Without this, the SCORE, NOTIFY ON and NOTIFY OFF commands do not work; the final score is not shown at the end of a story; and the status line above the player's text area shows only the turn count, not (as is more usual) both the score and the turn count. Changing the "score" (see below) has no visible effect, though it is not actually illegal.
With "Use scoring" in place, we can award points as follows:
increase the score by 5;
substituting whatever number we feel is appropriate. We should be careful not to give out the same points over and over, that is, not to reward the same basic achievement many times over if the player simply repeats the same action. This, for instance, is open to abuse:
After taking the trophy:
increase the score by 5;
say "Well done!"
The player may simply take the trophy, drop it again, take it again, ... and win five points every time around. We can prevent this by phrasing the rule more carefully:
After taking the trophy when the trophy was not handled:
increase the score by 5;
say "Well done!"
("Was handled", not "is handled", because this rule happens after the trophy has been taken - so by the time this rule has been considered, the trophy is always handled.) Rather than being an open-ended scoring system, IF normally has a maximum possible score, which can be specified with a sentence like so:
The maximum score is 10.
The score and maximum score are just numbers that vary, so we can freely change them:
After eating the poisoned mushroom:
now the score is -100.
Suppose we want to reward the player the first time he reaches a given room. The "unvisited" attribute is useful for this: unlike such constructions as "going to a room for the first time", it doesn't develop false positives when the player has merely tried to go to the room in question. "Every turn when the player is in a room for the first time" is also unhelpful, because it continues to be true as long as the player is in a room on his first visit there.
"Mutt's Adventure"
Use scoring.
Section 1 - Procedure
A room can be scored or unscored.
Carry out going to a unvisited scored room:
increment the score.
Section 2 - Scenario
The Incan Palace Compound is a room. "After numerous false leads through the jungles of Peru, and an arduous trek along the Amazon, you have arrived, at last, here: at Atagon, the lost city of untold treasure."
The startlingly intricate door is a door. It is inside from Incan Palace Compound and outside from the Treasure Room. "A door carved all over with figures of ancient gods, and protected by an assortment of gears and latches, [if open]stands open[otherwise]blocks progress[end if] towards [the other side of the intricate door]."
The description of the Treasure Room is "To your considerable surprise, the treasure room is stocked with art objects from a vast range of eras and geographical locations: beside the expected pre-Columbian gold there are Cycladic figurines, Chinese Tang-dynasty pottery, purses that might have been stolen from Sutton Hoo. [one of]If the British Museum developed a nasty expectorant cough, this is what you'd find in its hanky.[or][stopping]".
The Treasure Room is scored.
Test me with "in / out / in".
Suppose we want to assign scores for a whole range of objects the player might pick up. One systematic way to do this would be with a table of point values for things:
"No Place Like Home"
Use scoring.
The Hall of the Gnome King is a room. The emerald cow is a thing in the Hall of the Gnome King. The ivory chessman is a thing in the Hall of the Gnome King. The book of incantations is a thing in the Hall of the Gnome King.
Table of Point Values
item
|
score
|
cow
|
10
|
incantations
|
4
|
chessman
|
1
|
Report taking an item listed in the Table of Point Values:
increase the score by the score entry;
blank out the whole row.
Test me with "take all".
"Blank out the whole row" removes the line from the table, so that each award will occur only once. The player will not be able to earn more and more points by dropping and taking the same item again.