"Do Pass Go"
Go is a room. "A giant square area, where you and your other pewter ornament friends gather before setting out to purchase London."
The pair of dice is carried by the player.
The pair of dice has a number called first die. The pair of dice has a number called second die. The first die of the pair is 6. The second die of the pair is 6. Rule for printing the name of the pair of dice while taking inventory: say "pair of dice".
Rule for printing the name of the pair of dice: say "pair of dice showing [first die of the pair plus second die of the pair]".
To say detailed state of the dice:
if the first die of the pair is the second die of the pair, say "double [first die of the pair]";
otherwise say "[first die of the pair] and [second die of the pair]".
The description of the pair of dice is "The pair of dice are [if the dice are carried]itching to be rolled[otherwise]showing [detailed state of the dice][end if]."
Rolling is an action applying to one carried thing. Understand "roll [something preferably held]" as rolling.
Check rolling when the noun is not the pair of dice: say "Not something you can roll." instead.
Carry out rolling:
now the pair of dice is in the holder of the actor;
now the first die of the pair of dice is a random number from 1 to 6;
now the second die of the pair of dice is a random number from 1 to 6.
Report rolling:
say "You roll [detailed state of the dice]."
Test me with "i / roll dice / look / x dice / get dice / x dice / roll dice / roll dice / roll dice / roll dice / roll dice / roll dice / roll dice".
Because we remember the states of the individual dice, not just a total, we can make use of the combination rolled.
The doubles count is a number that varies.
After rolling:
if the first die of the pair is the second die of the pair, increment the doubles count;
otherwise now the doubles count is 0;
continue the action.
Jail is a room. "This is Jail, and not the Just Visiting periphery, either."
Every turn when the doubles count is 3:
say "The blue-uniformed policemen blows his whistle and beckons you sternly...";
now the player carries the pair of dice;
now the player is in Jail;
now the doubles count is 0.
Every turn when the doubles count is 1 and the player is in Jail:
say "The warden gruffly releases you.";
now the player carries the pair of dice;
now the player is in Go.
"Lanista, Part One"
The Arena is a room. "Sand, blood, iron. These festivals are normally held on hot days, but the sun has gone behind a cloud and fat drops of rain now and then spatter the arena floor." The gladiator is a man in the Arena. "A bare-chested Scythian gladiator faces you, wielding a trident."
We start by recording, for each person, a maximum number of points of damage the person can sustain when starting from health, and the current number of points remaining. In the tradition of role-playing games, these are referred to as hit points.
A person has a number called maximum hit points. A person has a number called current hit points.
The maximum hit points of the player is 35. The maximum hit points of the gladiator is 25.
The current hit points of the player is 35. The current hit points of the gladiator is 25.
Now our rule for the actual attack. We want first to calculate how much damage the player's attack does, inflict that damage, and remove the enemy if he's dead; then, if he doesn't die, the enemy counter-attacks, also for a randomized amount of damage, and if this kills the player, the game ends in defeat.
Instead of attacking someone:
let the damage be a random number between 2 and 10;
say "You attack [the noun], causing [damage] points of damage!";
decrease the current hit points of the noun by the damage;
if the current hit points of the noun is less than 0:
say "[line break][The noun] expires, and is immediately carried away by the Arena slaves!";
now the noun is nowhere;
end the story finally;
stop the action;
let the enemy damage be a random number between 2 and 10;
say "[line break][The noun] attacks you, causing [enemy damage] points of damage!";
decrease the current hit points of the player by the enemy damage;
if the current hit points of the player is less than 0:
say "[line break]You expire!";
end the story.
This last bit is a refinement to help the player keep track of how the contest is going:
When play begins:
now the left hand status line is "You: [current hit points of player]";
now the right hand status line is "Gladiator: [current hit points of gladiator]".
Test me with "hit gladiator / g / g / g".
"Weathering"
A cloud pattern is a kind of value. The cloud patterns are cumulus, altocumulus, cumulonimbus, stratus, cirrus, nimbus, nimbostratus.
The Mount Pisgah Station is a room. "The rocky peak of Mt. Pisgah (altitude 872m) is graced only by an automatic weather station. The clouds, close enough almost to touch, are [a random cloud pattern]. Temperature: [a random number from 7 to 17] degrees, barometric pressure: [950 + a random number from 0 to 15] millibars."
Test me with "look / look / look".
Suppose we have an urban space we want to populate with random passers-by. These should have a range of characteristics and not always be described in the same way; and once the player has noticed one, he should be able to look at her further, until another pedestrian crosses his path.
"Uptown Girls"
Riverside Drive is a room. "There's a pleasant late-afternoon view of the Hudson, and a snap in the air, and you would rather be here than anywhere."
Instead of going a direction, say "Oh, you know where you're going; no need to deviate from the usual path."
Instead of waiting, say "You stroll along enjoying the November crispness."
It gets a little annoying to have a random event occurring every single turn of play, so let's introduce some randomness to determine how often the message appears:
Every turn when a random chance of 1 in 3 succeeds:
reset passerby;
choose a random row in the Table of Atmospheric Events;
say "[event entry][paragraph break]"
Table of Atmospheric Events
event
"Slowly [a passerby] strolls by, turning to look at you as she passes."
"Some [passerby] nearly bumps into you."
"You dodge to avoid [a passerby]."
"You weave around [a passerby], who has stalled to look into a window."
"There's a ruckus as one of the ubiquitous taxis nearly collides with [a passerby] crossing the street."
"[The passerby] beside you waves to a friend across the street."
"To your left, [a passerby] drops her purse, and swears as she retrieves it."
Hair color is a kind of value. A person has hair color. the hair colors are red-headed, brunette, blonde.
Height is a kind of value. A person has height. The heights are tall, medium-height, short.
Grooming is a kind of value. A person has grooming. The groomings are messy and tidy.
To reset passerby:
now the hair color of the passerby is a random hair color;
now the height of the passerby is a random height;
now the grooming of the passerby is a random grooming.
The passerby is a woman in Riverside Drive. The passerby is scenery. Understand "woman" or "lady" as the passerby. The printed name of the passerby is "[one of]woman[or]lady[purely at random]".
At this point we borrow some techniques from later to describe the woman with a random combination of characteristics, and to let the player refer to her by those traits:
Before printing the name of the passerby:
if a random chance of 1 in 4 succeeds, say "[height] ";
if a random chance of 1 in 4 succeeds, say "[grooming] ";
if a random chance of 1 in 4 succeeds, say "[hair color] ".
Understand the hair color property as describing the passerby. Understand the height property as describing the passerby. Understand the grooming property as describing the passerby.
If we also wanted each of those combinations to mean some more specifically-described woman:
Instead of examining a passerby:
repeat through Table of Passerby Descriptions:
if hair entry is the hair color of the passerby and height entry is the height of the passerby and grooming entry is the grooming of the passerby, say "[description entry][paragraph break]".
Table of Passerby Descriptions
hair
|
height
|
grooming
|
description
|
red-headed
|
tall
|
messy
|
"An older woman with long red hippie-hair poking out of a ponytail in straggles, and bent to hide how tall she is."
|
red-headed
|
medium-height
|
messy
|
"A shaggy red-head with shingled hair."
|
red-headed
|
short
|
messy
|
"Almost an urchin, and very young, with ginger hair and a smudged nose and far too many freckles."
|
red-headed
|
tall
|
tidy
|
"A precise career woman with henna-red hair."
|
red-headed
|
medium-height
|
tidy
|
"Her hair is red in the way that lollipops and fire trucks are red: not by nature but by art. The rest of her clothing is pretty ordinary, though."
|
red-headed
|
short
|
tidy
|
"Thin and small in every sense, with chin-length red-hair. Even high heels do not bring her head much above your shoulder."
|
brunette
|
tall
|
messy
|
"A Juno-esque woman with dark hair, wearing something resembling a tent."
|
brunette
|
medium-height
|
messy
|
"An unremarkable woman with dark brown hair and the aura of needing a wash."
|
brunette
|
short
|
messy
|
"There are mustard stains on the t-shirt of this short brown-haired woman. Estimated age ca. 40. Possibly homeless."
|
brunette
|
tall
|
tidy
|
"A leggy brunette in business attire."
|
brunette
|
medium-height
|
tidy
|
"Medium-height, brown-haired, generally nondescript."
|
brunette
|
short
|
tidy
|
"A neat little dark-haired girl."
|
blonde
|
tall
|
messy
|
"A tall blonde of about thirteen who looks as though she has not yet figured out how to get her wardrobe to catch up with her rate of growth. Her t-shirt and her pants are too short."
|
blonde
|
medium-height
|
messy
|
"Black leather pants and the wall-o-hair look."
|
blonde
|
short
|
messy
|
"One of those shocking platinum blonde types, with a tiger-patterned skirt. Reeally trashy."
|
blonde
|
tall
|
tidy
|
"Elfin and severe, with perfectly straight hair falling to the middle of the back."
|
blonde
|
medium-height
|
tidy
|
"A rounded, Marilyn-esque blonde."
|
blonde
|
short
|
tidy
|
"Pin-precise in a blue-and-white striped suit and a boyish haircut."
|
Test me with "z / z / x passerby / z / z / x passerby".