Some Assembly Required
Example 332
★We now have the mechanisms in place to do some fairly sophisticated renaming of objects. For instance:
"Some Assembly Required"
Garment type is a kind of value. The garment types are vest, t-shirt, polo shirt, mandarin blouse, button-down, shell, experiment.
Every turn:
assign identities.
When play begins: assign identities.
To assign identities:
repeat with item running through torsos:
reassess item.
To reassess (item - a torso):
if the number of things which are part of the item is 0:
now garment type of the item is vest;
rule succeeds;
if exactly two short sleeves are part of the item:
if a collar is part of the item,
now garment type of the item is polo shirt;
otherwise now garment type of the item is t-shirt;
rule succeeds;
if exactly two long sleeves are part of the item:
if a collar is part of the item,
now garment type of the item is button-down;
otherwise now garment type of the item is mandarin blouse;
rule succeeds;
if a collar is part of the item and the number of sleeves which are part of the item is 0, now garment type of the item is shell;
otherwise now garment type of the item is experiment.
Before cutting something which is worn by the player:
try taking off the noun.
Instead of cutting something when something is part of the noun:
say "You cut up [the noun], snipping off [a list of things which are part of the noun].";
now every thing which is part of the noun is held by the holder of the noun.
Instead of cutting something which is part of something:
say "You carefully snip [the noun] free.";
now the player carries the noun.
Rule for printing the name of a torso: say "[garment type]".
A torso is a kind of thing. A torso is always wearable. Understand "shirt" or "blouse" as a torso. A torso has a garment type. Understand the garment type property as describing a torso. A sleeve is a kind of thing. A short sleeve is a kind of sleeve. A long sleeve is a kind of sleeve. A collar is a kind of thing.
Understand "sew [something] to [something]" as affixing it to. Affixing it to is an action applying to two things. Carry out affixing something to something: now the noun is part of the second noun. Report affixing something to something: assign identities; say "You sew [the noun] on, creating [a second noun]." Understand the command "stitch" as "sew".
Instead of affixing something to something when the second noun is worn: say "You're wearing [the second noun]!"
Instead of affixing a torso to something:
if the second noun is a torso, say "Couture for Siamese twins is a daring field, but a bit of a niche market.";
otherwise try affixing the second noun to the noun.
Instead of affixing a sleeve to something when at least two sleeves are part of the second noun: say "[The second noun] already sports [a list of sleeves that are part of the second noun]."
Instead of affixing a collar to something when a collar is part of the second noun: say "[The second noun] already sports [a list of collars that are part of the second noun]."
Instead of examining something when something is part of the noun: say "Stitched to [the noun] [is-are a list of things which are part of the noun]."
Here is where the issue of precedence arises. We want to encourage Inform to select a cuttable object that is part of something else, rather than one of the spares:
Definition: a thing is removable if it is part of something. Understand "cut [removable thing]" as cutting.
The Boutique is a room. "Still festively strewn with the confetti and streamers of the Grand Opening party, and still almost totally customer-free."
The player carries a torso. The player carries three short sleeves. The player carries two long sleeves. The player carries two collars.
Test me with "sew collar to shirt / i / sew short sleeve to shirt / g / i / x polo shirt / cut collar / i / cut shirt / sew long sleeve to shirt / i / sew long sleeve to shirt / i / sew collar to shirt / g / i / wear button-down".
Test me with "sew collar to shirt / i / sew short sleeve to shirt / g / i / x polo shirt / cut collar / i / cut shirt / sew long sleeve to shirt / i / sew long sleeve to shirt / i / sew collar to shirt / g / i / wear button-down".
Boutique
Still festively strewn with the confetti and streamers of the Grand Opening party, and still almost totally customer-free.
>(Testing.)
>[1] sew collar to shirt
You sew the collar on, creating a shell.
>[2] i
You are carrying:
a shell
three short sleeves
two long sleeves
a collar
>[3] sew short sleeve to shirt
You sew the short sleeve on, creating an experiment.
>[4] g
You sew the short sleeve on, creating a polo shirt.
>[5] i
You are carrying:
a polo shirt
a short sleeve
two long sleeves
a collar
>[6] x polo shirt
Stitched to the polo shirt are two short sleeves and a collar.
>[7] cut collar
You carefully snip the collar free.
>[8] i
You are carrying:
two collars
a t-shirt
a short sleeve
two long sleeves
>[9] cut shirt
You cut up the t-shirt, snipping off two short sleeves.
>[10] sew long sleeve to shirt
You sew the long sleeve on, creating an experiment.
>[11] i
You are carrying:
three short sleeves
two collars
an experiment
a long sleeve
>[12] sew long sleeve to shirt
You sew the long sleeve on, creating a mandarin blouse.
>[13] i
You are carrying:
three short sleeves
two collars
a mandarin blouse
>[14] sew collar to shirt
You sew the collar on, creating a button-down.
>[15] g
The button-down already sports a collar.
>[16] i
You are carrying:
three short sleeves
a button-down
a collar
>[17] wear button-down
You put on the button-down.
Still festively strewn with the confetti and streamers of the Grand Opening party, and still almost totally customer-free.
>(Testing.)
>[1] sew collar to shirt
You sew the collar on, creating a shell.
>[2] i
You are carrying:
a shell
three short sleeves
two long sleeves
a collar
>[3] sew short sleeve to shirt
You sew the short sleeve on, creating an experiment.
>[4] g
You sew the short sleeve on, creating a polo shirt.
>[5] i
You are carrying:
a polo shirt
a short sleeve
two long sleeves
a collar
>[6] x polo shirt
Stitched to the polo shirt are two short sleeves and a collar.
>[7] cut collar
You carefully snip the collar free.
>[8] i
You are carrying:
two collars
a t-shirt
a short sleeve
two long sleeves
>[9] cut shirt
You cut up the t-shirt, snipping off two short sleeves.
>[10] sew long sleeve to shirt
You sew the long sleeve on, creating an experiment.
>[11] i
You are carrying:
three short sleeves
two collars
an experiment
a long sleeve
>[12] sew long sleeve to shirt
You sew the long sleeve on, creating a mandarin blouse.
>[13] i
You are carrying:
three short sleeves
two collars
a mandarin blouse
>[14] sew collar to shirt
You sew the collar on, creating a button-down.
>[15] g
The button-down already sports a collar.
>[16] i
You are carrying:
three short sleeves
a button-down
a collar
>[17] wear button-down
You put on the button-down.