§18.25. Listing nondescript items of something

1. When it happens. This activity prints up the also-ran paragraph at the end of a room description. These are nondescript items because they don't merit paragraphs of their own: if, as sometimes happens, there are none in the room, then no such paragraph is printed and this activity does not happen. (So to add a further paragraph to a room description, a simpler "after looking" rule should be used, not an "after listing nondescript items" rule.)

2. The default behaviour. The paragraph ordinarily reads as "You can also see a cask and a clock." or similar. Before the activity begins, those objects which are nondescript - in this case the cask and the clock - are given the property of being "marked for listing".

If it turns out that nothing is marked for listing, because of before rules like the one in the example below, then nothing is printed and the activity is abandoned, so that the rules for and after are never reached.

3. Examples. (a) Promoting something out of the nondescript category, by unmarking it.

paste.png Before listing nondescript items:
    if the watch is marked for listing:
        say "The watch catches your eye.";
        now the watch is not marked for listing.

(b) Changing the normal phrasing of the paragraph. Note that we can also change the listing style; the one below is the default.

paste.png Rule for listing nondescript items of the Distressingly Messy Room:
    say "Strewn carelessly on the floor";
    list the contents of the Distressingly Messy Room, as a sentence,
        tersely, listing marked items only, prefacing with is/are,
        including contents and giving brief inventory information;
    say "."


arrow-up.pngStart of Chapter 18: Activities
arrow-left.pngBack to §18.24. Writing a paragraph about
arrow-right.pngOnward to §18.26. Printing the locale description of something

*ExampleRip Van Winkle
A simple way to allow objects in certain places to be described in the room description body text rather than in paragraphs following the room description.

**ExampleThe Eye of the Idol
A systematic way to allow objects in certain places to be described in the room description body text rather than in paragraphs following the room description, and to control whether supporters list their contents or not.

Often it is best to have an entire paragraph about the characters present in a room, but suppose we're narrating a large party with a lot of people moving around. In that case, it might be better to list everyone together, then add a few salient details by way of follow-up, like this:

paste.png "Happy Hour"

Before listing nondescript items:
    say "You can see [a list of people who are marked for listing] here. ";
    repeat with named party running through people:
        now the named party is not marked for listing;
    let count be the number of visible other people who are carrying something;
    if count is 0:
        say paragraph break;
        continue the action;
    let index be count;
    repeat with holder running through visible other people who are carrying something:
        if index is count, say "[The holder]";
        otherwise say "[the holder]";
        say " has [a list of things carried by the holder]";
        decrement index;
        make delimiter index of count.

The next part could be simpler, but for rigor we will write it in such a way that it will work whether or not the serial comma is in use. This requires some extra work; feel free to skip down to the scenario if you prefer.

To make delimiter (index - a number) of (count - a number), continuing or halting:
    if index is 0:
        if continuing, say ". [run paragraph on]";
        otherwise say ".";
    otherwise if index is 1:
        if count is 2, say " and ";
        otherwise say "[optional comma] and ";
    otherwise:
        say ", ".

To say optional comma:
    if the serial comma option is active:
        say ",".

And now the scene:

The Banquet Hall is a room. "A large cheery banner over the door (which, incidentally, vanishes when you approach it) reads: HELLO NEW INDUCTEES! WELCOME TO THE AFTERLIFE!"

Fred, George, and Larry are men in the Banquet Hall. Fred carries a dry martini. Larry carries a cream puff. Matilda and Louise are women in the Banquet Hall.

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

Every turn:
    let wanderer be a random other person;
    let place be the holder of the wanderer;
    let next place be a random room adjacent to the place;
    let the way be the best route from the place to the next place;
    try the wanderer going the way.

The Kitchen is west of the Banquet Hall. "Dominated by a pile of dirty plates which you imagine it will be someone's privilege to wash, later." Vanessa is a woman in the Kitchen. Vanessa carries a tray. On the tray is a salmon roll. The roll is edible.

Test me with "z / look / g / g / g ".

**ExampleHappy Hour
Listing visible characters as a group, then giving some followup details in the same paragraph about specific ones.

Often it is best to have an entire paragraph about the characters present in a room, but suppose we're narrating a large party with a lot of people moving around. In that case, it might be better to list everyone together, then add a few salient details by way of follow-up, like this:

paste.png "Happy Hour"

Before listing nondescript items:
    say "You can see [a list of people who are marked for listing] here. ";
    repeat with named party running through people:
        now the named party is not marked for listing;
    let count be the number of visible other people who are carrying something;
    if count is 0:
        say paragraph break;
        continue the action;
    let index be count;
    repeat with holder running through visible other people who are carrying something:
        if index is count, say "[The holder]";
        otherwise say "[the holder]";
        say " has [a list of things carried by the holder]";
        decrement index;
        make delimiter index of count.

The next part could be simpler, but for rigor we will write it in such a way that it will work whether or not the serial comma is in use. This requires some extra work; feel free to skip down to the scenario if you prefer.

To make delimiter (index - a number) of (count - a number), continuing or halting:
    if index is 0:
        if continuing, say ". [run paragraph on]";
        otherwise say ".";
    otherwise if index is 1:
        if count is 2, say " and ";
        otherwise say "[optional comma] and ";
    otherwise:
        say ", ".

To say optional comma:
    if the serial comma option is active:
        say ",".

And now the scene:

The Banquet Hall is a room. "A large cheery banner over the door (which, incidentally, vanishes when you approach it) reads: HELLO NEW INDUCTEES! WELCOME TO THE AFTERLIFE!"

Fred, George, and Larry are men in the Banquet Hall. Fred carries a dry martini. Larry carries a cream puff. Matilda and Louise are women in the Banquet Hall.

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

Every turn:
    let wanderer be a random other person;
    let place be the holder of the wanderer;
    let next place be a random room adjacent to the place;
    let the way be the best route from the place to the next place;
    try the wanderer going the way.

The Kitchen is west of the Banquet Hall. "Dominated by a pile of dirty plates which you imagine it will be someone's privilege to wash, later." Vanessa is a woman in the Kitchen. Vanessa carries a tray. On the tray is a salmon roll. The roll is edible.

Test me with "z / look / g / g / g ".

Often it is best to have an entire paragraph about the characters present in a room, but suppose we're narrating a large party with a lot of people moving around. In that case, it might be better to list everyone together, then add a few salient details by way of follow-up, like this:

paste.png "Happy Hour"

Before listing nondescript items:
    say "You can see [a list of people who are marked for listing] here. ";
    repeat with named party running through people:
        now the named party is not marked for listing;
    let count be the number of visible other people who are carrying something;
    if count is 0:
        say paragraph break;
        continue the action;
    let index be count;
    repeat with holder running through visible other people who are carrying something:
        if index is count, say "[The holder]";
        otherwise say "[the holder]";
        say " has [a list of things carried by the holder]";
        decrement index;
        make delimiter index of count.

The next part could be simpler, but for rigor we will write it in such a way that it will work whether or not the serial comma is in use. This requires some extra work; feel free to skip down to the scenario if you prefer.

To make delimiter (index - a number) of (count - a number), continuing or halting:
    if index is 0:
        if continuing, say ". [run paragraph on]";
        otherwise say ".";
    otherwise if index is 1:
        if count is 2, say " and ";
        otherwise say "[optional comma] and ";
    otherwise:
        say ", ".

To say optional comma:
    if the serial comma option is active:
        say ",".

And now the scene:

The Banquet Hall is a room. "A large cheery banner over the door (which, incidentally, vanishes when you approach it) reads: HELLO NEW INDUCTEES! WELCOME TO THE AFTERLIFE!"

Fred, George, and Larry are men in the Banquet Hall. Fred carries a dry martini. Larry carries a cream puff. Matilda and Louise are women in the Banquet Hall.

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

Every turn:
    let wanderer be a random other person;
    let place be the holder of the wanderer;
    let next place be a random room adjacent to the place;
    let the way be the best route from the place to the next place;
    try the wanderer going the way.

The Kitchen is west of the Banquet Hall. "Dominated by a pile of dirty plates which you imagine it will be someone's privilege to wash, later." Vanessa is a woman in the Kitchen. Vanessa carries a tray. On the tray is a salmon roll. The roll is edible.

Test me with "z / look / g / g / g ".