Section 3(b) - The Dial
The dial is part of the panel. The dial has some text called the current setting. The current setting of the dial is "1". The description of the dial is "The dial seems capable of being set to any number between 1 and 9 as well as the letters A through F. It currently rests at [the current setting of the dial]." Instead of turning the dial, say "[bracket]Specify a valid value to set the dial to.[close bracket][line break]". The analysis of the dial is "CAT:NONLIVING.TO[line break]OL.UTIL:ARCHIVE.[line break]INTERFACE.PART:F[line break]ILE.NUMBER.INPUT[line break]FILE.NUMBER=SIX.[line break]DIGIT.ALPHANUMER[line break]IC.CODE.COMPLETI[line break]ON=RETRIEVAL...."
Understand "turn [something] to [text]" as setting it to. Understand "set [something]" as turning.
Check setting something to (this is the block setting symbolically rule):
say "That cannot be set to anything."
Instead of setting the dial to the topic understood:
if the topic understood is a topic listed in the Table of Valid Dial Settings:
if the number of characters in the current input of the pedestal is 6:
say "As the dial is set, the pedestal begins to hum and the sound of turning gears can be heard. The tape beneath the panel's glass display suddenly advances from right to left, erasing the display. Then, with a *clunk* it advances one further step ";
now the current input of the pedestal is "";
now the current input of the pedestal is "[the current input of the pedestal][the topic understood in upper case]";
if the number of characters in the current input of the pedestal is 6:
let file found be false;
repeat with comparison file running through the files:
if the current input of the pedestal matches the text the code of the comparison file:
if the used of the pyramid is false:
say "The humming of the pedestal suddenly increases in both volume and pitch. The tape spins forward, blanking the display. Then...[paragraph break]'SEARCHING...'[paragraph break]Another advance. Then...[paragraph break]'FILE...FOUND...FILE [the current input of the pedestal]...RETRIEVAL...'[paragraph break]The humming ceases, to be replaced with a quick-paced ticking, something like a watch.[paragraph break]With an easy grace, six thin rods emerge from the sides of the pyramid. Growing quickly, they reveal a series of articulations along their length as they bend downwards. Within moments, they have revealed an impressive span - making a shape not unlike a spider.[paragraph break]The lower set of ... legs? arms? ... pushes lightly against the base, freeing it. It turns with blinding speed and...leaps and...[paragraph break]It is gone, running along the walls on four legs, its arms gripping at protrusions and flinging it further ... up ... up...[paragraph break]It stops somewhere far above, bracing itself on two legs. Two others reach forward and grip, then pull, opening a distant drawer. Its two arms reach inward, flicking through files with blinding speed.[paragraph break]Then, finding what it seeks, it grabs hold and pulls a folder close to its body. It then gently wraps its arms around to hold it tight. Closing the drawer, it quickly makes its way back and...[paragraph break]With a final tick, the pyramid settles itself back into the pedestal, holding out the retrieved folder on two articulated rods of brass. The tape advances. It now reads '...RETRIEVAL COMPLETE...'[line break]";
now the used of the pyramid is true;
otherwise:
say "Once again, the pyramidal thing leaps into action, retrieving a file from a drawer far in the distance. The tape advances. It now reads '...RETRIEVAL COMPLETE...'[line break]";
move the comparison file to the pyramid;
now the current output of the display is "'...RETRIEVAL COMPLETE...'";
let file found be true;
break;
if file found is false:
say "The tape spins forward, blanking the display. Then...[paragraph break]'SEARCHING...'[paragraph break]Another advance. Then...[paragraph break]'FILE [the current input of the pedestal] NOT FOUND...'[paragraph break]The tape advances. It now reads '...RETRIEVAL FAILED...'[line break]";
now the current output of the display is "'...RETRIEVAL FAILED...'";
otherwise if the number of characters in the current input of the pedestal is 1:
say "... revealing ['][the current input of the pedestal]['] imprinted on its surface.";
now the current output of the display is "[the current input of the pedestal]";
otherwise:
say "The tape advances a step further. It now reads ['][the current input of the pedestal]['].";
now the current output of the display is "[the current input of the pedestal]";
otherwise:
if the number of characters in the topic understood is greater than 1:
repeat with N running from 1 to the number of characters in word number 1 in the topic understood:
[what an absolutely hideous hack!]
let tmp be an indexed text;
let tmp be the player's command;
change the text of the player's command to character number N in the topic understood;
if the player's command is a topic listed in the Table of Valid Dial Settings:
try setting the dial to "[the player's command]";
change the text of the player's command to tmp;
otherwise:
say "That does not appear to be a valid value.";
change the text of the player's command to tmp;
break;
otherwise:
say "That does not appear to be a valid value."
Table of Valid Dial Settings
topic |
"1" |
"2" |
"3" |
"4" |
"5" |
"6" |
"7" |
"8" |
"9" |
"a" |
"b" |
"c" |
"d" |
"e" |
"f" |