the story headline is "A Futuristic Word-Play Gofering"
the story description is "The big city is griddy and gritty. Can you navigate it?"
release along with cover art.
book extensions
include Basic Screen Effects by Emily Short.
include Conditional Undo by Jesse McGrew.
section debug extensions - not for release
include object response tests by Juhana Leinonen. [makes sure certain actions work as intended, checks default]
include property checking by Emily Short. [make sure descriptions are implemented]
book i6 cool stuff
[thanks to climbingstars for the main code behind this example. I tweaked some trivial stuff. If you want to change the yes/no defaults, this is a good start. It even tells you if you are using no words or too many. Snaz-zee!]
chapter yes or no
Include (-
[ YesOrNo i j k;
k = 0;
for (::) {
if (location ~= nothing && parent(player) ~= nothing) DrawStatusLine();
KeyboardPrimitive(buffer, parse);
#Ifdef TARGET_ZCODE;
j = parse->1;
#Ifnot; ! TARGET_GLULX;
j = parse-->0;
#Endif; ! TARGET_
k++;
if (j) { ! at least one word entered
i = parse-->1;
if (i == YES1__WD or YES2__WD) rtrue;
if (i == NO1__WD or NO2__WD) rfalse;
PrintText(+ oneword message +);
} else { PrintText(+ noword message +); }
if (k == 4) rfalse;
}
];
-) instead of "Yes/No Questions" in "Parser.i6t".
The oneword message is a text that varies. the oneword message is "[if player has task-list]Please say yes or no. >[else][ed-pissed-talk][end if]".
The noword message is a text that varies. the noword message is "[if player has task-list]Please say yes or no. >[else][ed-pissed-silent][end if]".
The multword message is a text that varies. the multword message is "[if player has task-list]Please say yes or no. >[else]'No biographies. Yes or no.'[end if]".
ed-annoyance is a number that varies.
to say ed-pissed-talk:
increment ed-annoyance;
choose row ed-annoyance in table of ed-pissed;
say "[babble entry]";
to say ed-pissed-silent:
increment ed-annoyance;
choose row ed-annoyance in table of ed-pissed;
say "[silent entry]";
table of ed-pissed
babble silent
"'Yes or no. Not rocket science.'" "'Yeah, yeah. Doer not a talker. But I need a word here. Yes or no.'"
"'C'mon, kid, you can't answer an easy yes-no question...'" "Ed out-silences you into feeling you really should answer yes or no."
"'Last chance. No wrong answers. Only two possible.'" "With a quizzical frown, Ed moves a hand up, then down. He's a little ticked, but a simple yes/no will change that."
"'Okay, you asked for it.'" "Ed shrugs."
To decide whether currently transcripting: (- CheckTranscriptStatus() -)
ignore-transcript-nag is a truth state that varies.
after reading a command:
if the player's command matches the regular expression "^\p" or the player's command matches the regular expression "^\*":
if currently transcripting:
say "Noted.";
reject the player's command;
otherwise:
if ignore-transcript-nag is false:
say "You've made a comment-style command, but Transcript is off. Type TRANSCRIPT to turn it on, if you wish to make notes. Or if you want to eliminate this nag, for instance if you have an interpreter that does so independently, say yes now.";
if the player consents:
now ignore-transcript-nag is true;
book undoing
understand the command "undo" as something new.
oopsy-daisy is a number that varies.
rule for deciding whether to allow undo:
if oopsy-daisy is 1:
say "Okay, I'll pretend you didn't wait around too long.[paragraph break]";
allow undo;
if oopsy-daisy is 2:
say "Okay, I'll pretend you didn't want to complete the game just yet.[paragraph break]";
allow undo;
if oopsy-daisy is 3:
say "Okay, I'll let you back away from the egress.[paragraph break]";
allow undo;
if oopsy-daisy is 4:
say "Okay, I'll let you undo the cheat. Because I'm really nice.[paragraph break]";
allow undo;
otherwise:
say "Undeeds won't get you back to where you were. In fact, that's sort of why Ed Dunn hired you[one of]. [italic type](Fourth wall note: you can undo if you get killed, but otherwise, you can't. Push the button on your device to reset your wanderings[roman type].)[line break][or].[stopping]";
deny undo;
book when play begins
when play begins (this is the let's get it started rule):
now maximum score is number of rows in table of findies;
now ns is 4;
now ew is 4;
now ud is 4;
now right hand status line is "[score]/[maximum score] task[if score is not 1]s[end if] done";
repeat through table of findies:
now found entry is 0;
if there is no searchedfor entry:
now searchedfor entry is 1;
if there is no unlist entry:
now unlist entry is false;
repeat through table of score ranks:
if the stuff-i-did entry is -1:
now stuff-i-did entry is number of rows in table of findies - 1;
book stubs and location globals
your-tally is indexed text that varies.
ns is a number that varies. ew is a number that varies. ud is a number that varies.
to endgame-process:
repeat through the table of score ranks:
if the score <= stuff-i-did entry:
say "[eval entry]";
now oopsy-daisy is 2;
if score > 20:
end the story finally;
else:
end the story;
the rule succeeds;
say "Oops. You scored too high. This is a BUG.";
rule for amusing a victorious player:
say "Have you tried:";
repeat through table of stupid jokes:
say "--[nyuk entry][line break]";
table of stupid jokes
nyuk
"swearing?"
"Entering the ominous door and ignoring the warning?"
"Z 3 times in a row? Then trying it again?"
"Standard commands like jump/sing/wave?"
"Not answering YES or NO to Ed Dunn?"
"Visiting Ed Dunn with no tasks done? 1, 4, 7, 10, then every 4 give different responses."
"Finding all the easter eggs, such as SEEN or EWW?"
"Just looking through the source code to learn all these 'funny' responses at once?"
zero-ticker is a number that varies. zero-ticker is 0.
plus-ticker is a number that varies. plus-ticker is 0.
hint-iter is a number that varies. hint-iter is 0.
to reset-game:
now ns is 4;
now ew is 4;
now ud is 4;
now your-tally is "";
if door to ed is visible:
now door to ed is off-stage;
move player to outside-area;
if score is 0:
increment zero-ticker;
if zero-ticker is 3:
say "You flash back to Ed Dunn's voice booming through your head: 'It's not just where you go but how you get there!'";
now zero-ticker is 0;
continue the action;
if score > 0:
increment plus-ticker;
if plus-ticker is 4:
say "Well, this kind of stinks. You're on a real cold streak. Maybe you can figure what to do by looking at your list. Maybe somewhere will make sense that didn't before[random-hint].";
now plus-ticker is 0;
continue the action;
to say random-hint:
increment hint-iter;
if task-list is alpha and hint-iter is 3:
now hint-iter is 0;
say ". Or maybe you could take Ed Dunn up on his offer of help";
to decide which number is the sector-num of (i - indexed text):
let q be i in lower case;
let z be 444;
increase z by number of times q matches the text "e" - number of times q matches the text "w";
increase z by 10 * (number of times q matches the text "n" - number of times q matches the text "s");
increase z by 100 * (number of times q matches the text "u" - number of times q matches the text "d");
decide on z;
chapter transport tubes
the transport tubes are a backdrop. the transport tubes are everywhere. "It's rude to stare while people zoom up and down."
instead of doing something other than examining transport tubes:
if current action is entering:
say "But which way? Up or down?" instead;
say "The tubes aren't worth thinking much about. You just need to get places."
chapter going
instead of exiting:
say "Out? Of Threediopolis? You would be arrested for absconding with that package sooner or later.";
to dirsmack:
say "In these efficient days, people find using more than one letter for a direction too flowery.[line break]";
check going (this is the don't waste my time with all those extra letters already now rule):
if word number 1 in the player's command in lower case is "go":
say "In these sped-up days, the word 'go' is superfluous. Unless you are in charge, like Ed Dunn.'" instead;
if the player's command matches the text "north", case insensitively:
dirsmack instead;
if the player's command matches the text "south", case insensitively:
dirsmack instead;
if the player's command matches the text "east", case insensitively:
dirsmack instead;
if the player's command matches the text "west", case insensitively:
dirsmack instead;
if the player's command matches the text "up", case insensitively:
dirsmack instead;
if the player's command matches the text "down", case insensitively:
dirsmack instead;
chapter blank parser
Rule for printing a parser error when the latest parser error is the I beg your pardon error:
say "You plot which direction to go next." instead;
boxed-showed is a truth state that varies.
Rule for printing a parser error when the latest parser error is the didn't understand error:
say "Being a messenger, you don't have much more to do than go in the six basic directions (transport tubes make going up and down easy.) Or enter places. Maybe knock. Nothing fancy.";
if boxed-showed is false:
now boxed-showed is true;
display the boxed quotation "
'I've always enjoyed going north. Of course,
south-west is a fine direction, too.'
-- E. B. White, Stuart Little";
book silly defaults
instead of singing:
say "You try, but you only hear two notes in your head."
instead of swearing obscenely or swearing mildly:
say "Dude! Eww."
book dropping
instead of dropping:
if noun is task-list:
say "But it has all the clues of what you need to do!";
if noun is device:
say "No way! Those things are valuable.";
if noun is mysterious package:
say "You'd be flaking out at your job, doing that. No way!"
book verbose-brief
Understand "v" as preferring unabbreviated room descriptions.
Understand "b" as preferring abbreviated room descriptions.
book restart-quit
understand "q" as quitting the game.
check quitting the game:
if score is 0:
say "Well, this stinks. You just couldn't figure out how to wander about to find anything for Ed Dunn. Maybe he will find someone else. Maybe you've been missing something.";
else if score > 5:
say "Before quitting, would you like a list of things you've solved so far, in case you want to change difficulty level?";
if the player consents:
print-so-far;
check restarting the game:
if score > 5:
say "Before restarting, would you like a list of things you've solved so far, in case you are restarting to change difficulty level?";
if the player consents:
print-so-far;
to print-so-far:
repeat through table of findies:
if found entry is 1:
say "[one of][or], [stopping][tally entry]";
say ".";
book items
chapter task-list
the task-list is a privately-named thing. the printed name of task-list is "list of needs". understand "list/needs" and "list of needs" as the task-list.
task-list can be super-alpha, alpha or kinda-random. task-list is super-alpha.
description of task-list is "BUG should be kicked elsewhere."
does the player mean opening the task-list: it is very unlikely.
instead of doing anything other than examining or dropping task-list:
say "It's just a list. No need to do anything exotic.";
check examining the task-list for the first time:
if the player's command matches the regular expression "list", case insensitively:
say "(Note: you can just type X to re-examine the list.)";
after examining the task-list for the first time:
if score is 0:
say "You think a moment. Some of these locations listed twice, there has to be something if you just walk right there. Especially the ones nearby.";
continue the action.
does the player mean examining the task-list: it is very likely.
chapter button
description of the pocket teleporter device is "It's got a button you can push. You're reminded how, with so many buttons to push in Threediopolis, the letter 'p' is a verb meaning 'push the button.'";
the button is part of the pocket teleporter device.
description of the button is "It looks as pushable as any other button, you'd guess."
check pushing the button:
if ns is 4 and ew is 4 and ud is 4:
if your-tally is "":
say "That'd be kind of pointless here. Well, technically, here and now." instead;
now your-tally is "";
say "Nothing seems to happen. You think. But you blink once, and everything FEELS different.";
reset-game instead;
now your-tally is "";
say "Teleporting technology, apparently only for the very richest people, kicks you back to the center of the city[one of]. Your employer must really be loaded[or][stopping].";
reset-game instead;
instead of switching on teleporter device:
try pushing the button instead;
instead of pushing teleporter device:
try pushing the button instead;
chapter ping
ping is an action applying to nothing.
understand the command "p" as something new.
understand "p" as ping.
carry out ping:
try pushing the button instead;
chapter teleporter device
chapter mysterious package
the mysterious package is a thing. description of mysterious package is "You see nothing special about the mysterious package. But you sure SENSE something special under that newfangled top-open-secret material that can hold things several times its size if necessary. Quantum physics is crazy."
instead of opening mysterious package:
say "It's mysterious enough you're worried something bad will happen before you take it where you need to go."
instead of searching mysterious package:
say "That'd be rude."
book when play begins
when play begins (this is the employer-intro rule):
change the prevent undo flag to true;
say "Threediopolis was the first city to have different sidewalk levels, one above another, back in 2050. It's pretty normal now in 2100, but they didn't plan everything right back then, so Threediopolis is still a bit quirky.[paragraph break]You still get lost some days, like today--while remembering a traumatic episode from your youth (adults yelling at you for somehow getting lost on a simple errand) you run across a building you've never seen. You enter and are whisked to a penthouse office. A fellow wearing a fractal power-tie and a white button-down shirt with elbow patches jumps up.[paragraph break]'Ah! You answered my online ad! What? No? You didn't? Even better! You're a natural! Unpoisoned by GPS! Just what I need! It's not anyone can find here. I'm Ed Dunn. You are? ...'[paragraph break]Before you can answer, Ed hands you a list of tasks, an equally mysterious package you're told not to open, and a pocket teleporter device, for getting back if you get even more lost than you need to.[paragraph br
eak]'Getting here was the hard part, kid. But if you don't get everything on this list done before you get back here, that's okay.'[paragraph break]Before you can ask what list, Ed makes a hush-hush gesture. 'It's organized by travel time, kid. Or it should be, once you find how to use it. Don't worry, just--don't lose it.'[paragraph break]He explains how some things just don't need to be traced electronically, and how there's lots of weird scenery to see if you're interested in that sort of thing, but a good employee won't go exploring it.[paragraph break]'One other thing, kid. You might want to use that teleporter pretty quickly if you don't see anything to start. Say, no further than five blocks. Til you get your bearings.'[paragraph break]Ed stares at his computer, then snaps his fingers. 'Oh, hey, I should push this button. Alphabetize this whole list, sort of. Make things easier for the rookie. What do you say?'";
if the player consents:
now task-list is alpha;
else:
now task-list is kinda-random;
if ed-annoyance is 4:
say "'You'll never know what you missed out on, kid. Not answering a simple yes/no question.' Ed Dunn is a busy man, but he has time to chew you out. He complains how you just aren't the sort of flaky and whimsical he needs for the job until he finds someone else to order around. You are escorted out.";
end the story;
follow the shutdown rules;
else:
say "'Got it. You look smart enough to [if task-list is kinda-random]take the extra challenge.[no line break][else]know the value of a little organization. Hey, stop on back if you need an extra hint, eh?[no line break][end if]'[paragraph break]Pep talk time. 'You got potential. You seem like someone who knows it's not just getting there, but HOW you get there.' You've heard that truism before...but does it mean anything? You have no time to ask. Security whisks you away as Ed booms 'And keep with it. Keep notes of where you've been. That'll help with the tough places.'[paragraph break]It's not a huge list. You even have addresses of where to go. It can't be too hard, can it?";
now the player has the task-list;
now the player has the pocket teleporter device;
now the player has the mysterious package;
pause the game;
to re-randomize:
repeat through table of findies:
if there is a rand-score entry:
if rand-score entry is 0:
now rand-score entry is a random number between 0 and 99;
else:
let Q be a random number between 0 and 99;
increase Q by 100 * number of characters in tally entry;
now rand-score entry is Q;
let R be -1;
sort table of findies in rand-score order;
repeat through table of findies:
let Q be rand-score entry / 100;
if Q > R:
now R is Q;
now breakbefore entry is 1;
else:
now breakbefore entry is 0;
description of player is "You are dressed in clothes similar in style to one hundred years ago, except for their name brand and their biodegradability. I mean, they don't degrade while you wear them. There are special enzymes. At a garbage plant."
book outside area
outside-area is a privately-named room. Printed name of outside-area is "Threediopolis, Sector [ud][ns][ew]"
after printing the locale description of outside-area when outside-area is unvisited:
say "You glance quickly at Ed Dunn's list: some things are in sector 444, but you can't see anything resembling them. [italic type][bracket]Note: the room descriptions are random and for amusement only. Type B to get rid of them or V to have them appear again,[close bracket][roman type][line break]";
description of outside-area is "[if number of characters in your-tally is 0]Everything here sort of looks like everything else and doesn't at the same time. Going one direction seems as good as going any other.[otherwise][blahdeblah][run paragraph on][end if]"
check waking up:
say "But you have not been sleeping on the job." instead;
check listening:
say "The sounds of Threediopolis are always changing. But you don't want them distracting you from your job." instead;
instead of eating:
say "Are you hungry for a meal, or a job that'll buy several of them? Get back to wandering.";
instead of kissing:
say "You aren't looking for romance, here.";
to say blahdeblah:
if a random chance of 1 in 2 succeeds:
say "[one of]You're lost, or maybe you're not. It's so hard to know, for sure. Everything looks the same as elsewhere, yet different at the same time[or]You may or may not have wandered down this block before[or]You note a three-way street sign: Avenue [dig of ud][ns], Street [dig of ud][ew], Updownway [dig of ns][ew][cycling].[no line break]";
else:
say "[one of]You pass some kid being bullied for his lame 1-GB internet connection and 32-megapixel phone. Eh, not your business.[no line break][or]You pass a public library with the standard door-disclaimer: requests for old-style physical books require legitimate written reasons.[no line break][or]Someone walking the wrong way on a sidewalk is given a ticket.[no line break][or]Some rich showoff with a jetpack flies dangerously close overhead.[no line break][or]You pass two oldsters violently arguing WHY the good old days were better.[no line break][or]You're stuck behind someone babbling into their NetFone for a bit--moving ahead of them, you'd hear the conversation worse.[no line break][or]Two ads in quick succession on a building videoscreen, one for a talk show and one for screen watching addiction.[no line break][or]Another announcement: 'Attention Threediopolis walkers! Would you like to afford a car to tune out announcements like these? The Department of Commerce can help...'[no line break][or]A se
ctarian atheist fight breaks out over why religion is stupid and how the afterlife should be, if it existed.[no line break][or]A sappy autotuned song from a public speaker delivers a [one of]common-sense-reductionist[or]horrendously pedantic[at random] PSA.[no line break][or]Two NetPhoners crash into each other [one of]in the middle of a crosswalk[no line break][or]where two sidewalks meet[cycling].[no line break][or]A Department of Revenue camera flashes--prima facie evidence a pedestrian finished crossing the street too late.[no line break][or]A cheery voice announces: 'Attention potential scofflaws! One-way sidewalks delegitimize jaywalking, except in extreme emergencies!'[no line break][or]Someone yacking into a NetFone bumps you as he passes ahead, but hey, more silence now.[no line break][or]Someone without proper clearance for a vertical transport tube is pulled away and arrested.[no line break][or]You're unable to tell if this is a neighborhood you really should avoid or one you should know back and
forth.[no line break][or]It seems like you've both been here too often before and yet have never seen this area.[no line break][at random]";
to say dig of (dd - a number):
if dd > 0:
say "[dd]";
book waiting
every turn:
if the current action is not waiting:
now waits-in-a-row is 0;
waits-in-a-row is a number that varies. already-slept is a truth state that varies.
zwait is a truth state that varies.
check waiting:
if the player's command matches the text "wait", case insensitively:
say "What a quaintly verbose way to wait! Four whole letters!" instead;
increment waits-in-a-row;
if zwait is false:
now zwait is true;
say "You reflect briefly that Z is the end of the alphabet, and people who Z too much may run afoul of efficiency laws." instead;
if waits-in-a-row is 3:
if already-slept is false:
say "You fall asleep on your journey. You are awakened by whirring and clacking. Droids pick you up and give you an infra-red marking that identifies you as a potential leech on society--and juice and cookies, this time, since your possessions label you as moderately wealthy. They remind you the marking will fade in a year.[line break]" instead;
say "The anti-vagrant/loiterer droids are rougher with you this time. You barely manage to chuck Ed Dunn's paper down a garbage vaporizer before you are locked in a poor house cell for a month. (Fourth wall time: on the bright side, this is about the only chance you get to UNDO.)";
now oopsy-daisy is 1;
end the story instead;
if waits-in-a-row is 2:
say "You hear a [if already-slept is true]familiar [end if]buzzing of droids in the distance." instead;
instead of sleeping:
say "There are laws against that in any civilized city these days. Plus, that's an invitation to get robbed.";
book verbs
chapter thinking
instead of thinking:
if thinked is false:
say "If you were able to do one thing, you're pretty sure you'd know how to get back to Ed Dunn's secret hideout. You just remember it's been hidden." instead;
if door to ed is visible:
say "You think about whether or not you should call it a day[if score is maximum score]. You've done everything, so probably, yeah[end if]." instead;
say "You take a moment to orient yourself, calculate a bit, and then walk back and forth til you arrive at outside Ed Dunn's secret hideout.";
now your-tally is "eddunn";
now ud is 3;
now ns is 6;
now ew is 5;
move Ed Dunn's secret hideout to location of player;
try looking instead;
chapter yessage
check saying yes:
if word number 1 in the player's command in lower case is "yes":
say "Without Ed Dunn around, being a yes-man won't do much good. Especially not such a verbose one. Three whole letters!" instead;
say "You nod your head, but nothing appreciably changes. You probably need to put your head down and keep getting lost." instead;
chapter going
section directions
to say losted:
say "You're lost. You have strayed beyond the city bounds. A border droid takes your ID and whisks you back to the center.";
check going south:
now your-tally is "[your-tally]s";
if ns is 0:
say "You're lost. You have strayed beyond the city bounds. A border droid takes your ID and whisks you back to the center.";
reset-game instead;
decrement ns;
check going north:
now your-tally is "[your-tally]n";
increment ns;
if ns is 10:
say "[losted]";
reset-game instead;
check going west:
now your-tally is "[your-tally]w";
if ew is 0:
say "[losted]";
reset-game instead;
decrement ew;
check going east:
now your-tally is "[your-tally]e";
increment ew;
if ew is 10:
say "[losted]";
reset-game instead;
gone-up-or-down is a truth state that varies.
check going up:
if gone-up-or-down is false:
say "Boy, those transport tubes are handy for saving energy during vertical travel.";
now gone-up-or-down is true;
if stairway to heaven is visible:
say "Did you mean to go up the stairway? Just checking.";
if the player consents:
try entering stairway instead;
now your-tally is "[your-tally]u";
increment ud;
if ud is 10:
say "[losted]";
reset-game instead;
check going down:
if gone-up-or-down is false:
say "Boy, those transport tubes are handy for saving energy during vertical travel.";
now gone-up-or-down is true;
now your-tally is "[your-tally]d";
if ud is 0:
say "[losted]";
reset-game instead;
decrement ud;
section generics
check going:
if number of characters in your-tally > 11:
say "You've been wandering for too long. You get tired, and you figure it's probably best to start over with a clean look on things. You push the button on your teleporter device, and back you go to the center.";
reset-game instead;
tally-and-place;
to tally-and-place:
let A be indexed text;
now A is your-tally;
repeat with Q running through things in outside-area:
if Q is not player:
now Q is off-stage;
repeat through table of findies:
if A is tally entry in lower case:
if found entry is not 1 and location of what-drops entry is not outside-area:
move what-drops entry to outside-area;
if what-drops entry is door to Ed Dunn's secret hideout:
now thinked is true;
if the current action is waiting:
say "[line break]You see something you didn't before--[what-drops entry].";
repeat through table of findies:
if A is tally entry in lower case:
if found entry is not 1 and location of what-drops entry is not outside-area:
move what-drops entry to outside-area;
section diagonals
going southwest is diaging.
going northwest is diaging.
going southeast is diaging.
going northeast is diaging.
outside-area is west of outside-area.
outside-area is north of outside-area.
outside-area is up of outside-area.
instead of diaging:
say "You can't cut through buildings. Even with a teleporter device. Well, apparently you could cut through some lobbies years ago, but surveillance and keycard-doors have taken care of that.";
check opening front door:
say "That would be rude. Try knocking instead." instead;
book entering
instead of entering front door: try opening front door instead;
book knocking
knocking is an action applying to nothing.
understand the commands "k" and "knock" as something new.
understand "k" and "knock" as knocking.
carry out knocking:
if ominous is visible:
try processing instead;
if front door is visible:
try processing instead;
otherwise if number of visible quasi-entries > 0:
say "No need to be so formal. Walk on in.";
otherwise:
say "Nothing to knock at.";
knock1ing is an action applying to one thing.
understand the command "knock on [something]" as something new.
understand "knock on [something]" as knock1ing.
carry out knock1ing:
if noun is front door:
try knocking instead;
if noun is the player:
say "That's just silly." instead;
say "No need to be so formal. Walk on in.";
does the player mean knock1ing the player: it is unlikely.
book processing
thinked is a truth state that varies.
en-notify is a truth state that varies.
processing is an action applying to nothing.
carry out processing:
let A be indexed text;
now A is your-tally;
repeat through table of findies:
if A is tally entry in lower case and what-drops entry is visible:
if there is a findies entry:
say "[findies entry][line break]";
otherwise:
say "Aha! You've found [tally entry].";
repeat with en running through visible quasi-entries:
now en is off-stage;
if found entry is not 2:
if ever-fast is false and number of characters in tally entry > 3 and what-drops entry is not door to ed:
say "NOTE: you can type F so that from now on you don't have to type periods between moves e.g. NSEW instead of N.S.E.W.";
increment the score;
now plus-ticker is 0;
now hint-iter is 0;
if tally entry is "See":
now found entry is 2;
otherwise:
now found entry is 1;
if what-drops entry is Ed Dunn's secret hideout:
endgame-process instead;
if en-notify is false:
say "(Note: from now on you can type IN once you see a place to enter or, if there's a door to knock on, K. On which to knock.)";
now en-notify is true;
if look-mode is false:
reset-game;
the rule succeeds;
say "Nothing to knock on here.";
the rule succeeds;
section score-ranks
table of score ranks
stuff-i-did eval
1 "'Not up to it, eh? Geez, you found me, but some of these others woulda been easier to find. Well, I'll find else who else'll turn up.'"
2 "'Bare minimum, eh? Well, here's a bare-minimum payment. Actually, pennies are kind of valuable, since we haven't made any new ones for a while.'"
5 "'Hmph. Probably took more time coming here to quit than actually doing the tasks. Eh, well. Here, have an antique zip drive.'"
8 "He seems moderately impressed and hands you a bunch of bananas. They're quite rare now that banana trees are dying off because they were genetically engineered not to have seeds. You eat one, and it tastes almost as good as artificial banana flavoring."
11 "He hands you a vintage Chicago Cubs 2017 World Champions t-shirt. Hard to imagine they were lovable losers once and it was the now sad-sack New York Yankees everyone hated."
15 "He gives you a one-cubic-foot block of dehydrated beer for your efforts. 'This stuff ain't that REAL good stuff, kid. But it's good enough to last a bit. For the effort you gave, this seems appropriate.'"
19 "Ed Dunn hands you a bogus ID with high-level clearance. 'Don't worry, it's airtight. No way you can get busted. Look, if you are out of a job, this'll give you a little extra unemployment pay. Maybe even some disability pay. I mean, we have a lot of lazy people, but with computers being as important as they are these days, people who are able to game the system are more likely to be able to learn a computer job eventually. I don't know how you are with them, but I like you, kid, so I'm giving you this. It's got black market value, too.'"
23 "He hands you an envelope. 'Pretty good, kid. I have made it worth your time. If you have anyone even more efficient than you, let me know, and I'll give you a referral fee.' When you get outside, you realize he is right. There is about a year's worth of pay at your regular job here."
27 "'Almost good enough for a full-time job, kid! tell you what, I'll recommend you to someone almost as important as me for these sorts of tasks. Maybe you'll make it back some day.' He hands you a wad of bills you're instructed not to count until you get outside. In them, you see the letter of recommendation. It's got a few backhanded compliments, but for even a fraction of this pay rate, you can deal."
31 "'Not bad, kid! Not bad at all! I'd like to offer you a permanent job, and I am sure you can take care of the last few things next time.'"
35 "'You are almost too good to be true, kid. If you are any better, you might make it into my inner circle pretty quickly. But I want you back for next month's errands.'"
39 "'You've been wasting your life, kid. I'm glad you stumbled on this place. You aren't going to be a messenger forever, that's for sure. I'm definitely inviting you to this secret party. You'll make connections there.'"
43 "'Wow! Almost perfect. If you were perfect, I'd be worried you wasted your life fetching stuff for me. I'd like to keep you around.'"
50 "'Kid, you're too good to be a messenger. You should be the one ordering messengers around. It's a surprisingly lucrative business. Once you've got the hang of it, you can sit around and play silly freeware games all day, and make profits even without doing anything. But I like you, and I think you deserve it. What do you say?'[paragraph break]That is fine with you. You sit down to a game of good old-fashioned FreeCell, but your new friend assures you you can do much better than that. There are some MAME games you never played yet...and some tragically unappreciated-in-their-time text adventures by some fellow named Andrew Schultz.."
100 "'Wow! You did everything and more! This should be impossible, but congratulations, like.'"
book looking
check looking:
if the player's command matches the regular expression "^(l|look)\b":
say "[one of]Looking around won't be enough to get you lost the way you need to get lost. It seems it might even add one more variable, or layer of complexity, beyond just waiting.[paragraph break]You could say doing so in the middle of a journey is [italic type]useless[roman type].[or][run paragraph on][stopping]";
suspicious-guy-help is a truth state that varies.
suspicious-seen is a truth state that varies.
after looking:
if your-tally is "suss":
if suspicious-guy-help is false:
if score is maximum score - 2:
say "A suspicious guy walks up to you, says 'Psst!' and then, before you can respond, says, 'Never mind. I can't help you.' before running away." instead;
say "[one of]A suspicious guy[or]That suspicious guy (again)[stopping] sidles up and says, 'Psst! Pal! Got some hints. Somethin['] to help with yer tasks? [if score < 10]Might wanna wait. Can only do this once and y'might be bummed with an early hint[otherwise]Could help with somethin['] tough remaining[end if].'";
if the player consents:
choose a random row in the table of findies;
while tally entry is "Suss" or found entry > 0 or searchedfor entry is 0 or what-drops entry is front door:
choose a random row in the table of findies;
say "He whispers '[tally entry]' in your ear and disappears.";
now suspicious-guy-help is true;
otherwise:
say "'No probs. Maybe come back later when you got just tough problems left.'";
if suspicious-seen is false:
now suspicious-seen is true;
increment the score;
now plus-ticker is 0;
now hint-iter is 0;
follow the notify score changes rule;
let A be indexed text;
now A is your-tally;
repeat through table of stupid scenery:
if A is tally entry and found-yet entry is 0:
now found-yet entry is 1;
say "[descrip entry][one of][paragraph break]But what you noticed doesn't seem practical, so you put it out of your mind as you continue pacing. Places you can't enter won't help you help Ed Dunn.[line break][or][line break][stopping]";
continue the action;
book xyzzying
xyzzying is an action applying to nothing.
understand the command "xyzzy" as something new.
understand "xyzzy" as xyzzying.
carry out xyzzying:
say "Yes, indeed, the game map has 3 axes--x, y and z.";
the rule succeeds;
book hinting
hinting is an action out of world.
understand the command "h/hint/help" as something new.
understand "h" and "hint" and "help" as hinting.
carry out hinting:
if score is 0:
say "[one of]You may notice that traveling to some areas shows nothing. Maybe it is how you get there that is important. (Note--there'll be a few more hints. But it'll be more fun if you figure it out. Hopefully.)[or]Try for the least difficult tasks first. Remember, you always push the button to get back into the center.[or]Do you see anything unusual about your employer's name? Ed Dunn?[or]One brute force way to get through is to find the person or thing that is two moves away from the center. Once you see it, you will probably figure what this game is about.[or]The author is in this game. He is one of the friends. Take a look at his first name. Also, please forgive him for addressing himself in the third person. He didn't find any better way to say things.[or]Your friends' names are Dee, Des, Ewen, Ned, Sue, Swen, Wendee and Wes.[or]If you're really stumped, take a look at the source code.[stopping]" instead;
say "I don't want to give specific hints here. The list should tell you the easiest remaining task, and also, two of the places have hints on the side[news-hint]." instead;
the rule succeeds;
to say news-hint:
choose row with a tally of "Suss" in table of findies;
if found entry is 1:
say ", and you've been to the random one. Just don't enter, and you'll get some real news";
chapter walkthroughing
walkthroughing is an action applying to nothing.
understand the command "walkthrough" as something new.
understand "walkthrough" as walkthroughing.
carry out walkthroughing:
say "In lieu of a walkthrough, you should look to either the logic document included with the story file, or the Table of Findies in the source code. It can be searched easiest with [bracket]t[if 1 is 1][end if]of[close bracket]. With or without brackets.";
the rule succeeds;
book creditsing
creditsing is an action out of world.
abouting is an action out of world.
understand the command "credits" as something new.
understand "credits" as creditsing.
understand the command "about" as something new.
understand "about" as abouting.
carry out abouting:
say "This game wasn't intended to be huge on plot, but rather, I saw a way to do things, and I figured why not. I put the skeleton on the shelf after starting it in May 2012, toyed with it for a post-IFComp 2012 release, then got so lazy I saw I could submit it in time for IFComp 2013![paragraph break]Type CREDITS for testers and such.[paragraph break][if score < 2]A previous IFComp game that might spoil this game's mechanic[else]Brian Rapp's [italic type]Under, In Erebus[roman type][end if] also probably had considerable influence on this game, though it does have a lot more plot and cool locations.[paragraph break]I hope you enjoy this. I recognize some people won't, and that's cool, and I don't want to play the 'I know some philistines may hate it' card. However, if it helps someone who doesn't like it try their [italic type]own[roman type] thing, that'd be way cool.";
the rule succeeds;
carry out creditsing:
say "Thanks to (alphabetized by first name) DJ Hastings, Geoff Moore, Jim Warrenfeltz, Kevin Jackson-Mead, Melvin Rangasamy (who also provided I6 coding help), and Wade Clarke, who also designed the cover art that gave me a few extra ideas.[paragraph break]Heartless Zombie provided hash code for a previous game, which, simplified, facilitated the user input here.[paragraph break]Olivia Pourzia and Stephen Watson provided advice for inter-comp releases.[paragraph break]Tangential thanks to PERL creators/maintainers and more importantly the people who created and maintained Inform.[paragraph break]By the way, the source code and a logical walkthrough should be readily available if you want to get all the points and easter eggs. I hope nothing is too obscure or unfair.";
the rule succeeds;
book quasi-entry list
a quasi-entry is a kind of thing.
a quasi-entry is usually fixed in place.
a quasi-entry can be openable. a quasi-entry is usually not openable.
instead of taking a quasi-entry:
say "That'd be vandalism. Probably [if noun is front door]KNOCK[else if noun is openable]OPEN or ENTER it[otherwise]ENTER it[end if], instead.";
the blurry doors that seem only half there are a plural-named quasi-entry.
description of blurry doors that seem only half there is "The more you try to make out details, the less they really seem fair. However, they seem more likely to fade away then to solidify into a wall, though, so you might as well risk entering them."
the front door is a quasi-entry.
description of front door is "It looks familiar, slightly different from all the identical ones."
the extremely ominous door is a quasi-entry.
description of ominous door is "It says VOLUNTARY POPULATION CONTROL CLINIC."
the stained-glass entryway is a quasi-entry.
description of stained-glass entryway is "It is impressive. It would make you believe in religion, if you hadn't convinced yourself long ago you'd probably pick the wrong one."
the hinged wooden gate is a quasi-entry.
description of hinged wooden gate is "It may be more for show and seems woefully out of place here."
the door shaped like a champagne bottle is a quasi-entry.
description of champagne bottle is "It's a bit tacky, but it gets the point across. You will learn something about partying if you go through it."
the restaurant door is a quasi-entry.
description of restaurant door is "Seen one, seen them all."
the cobblestone archway is a quasi-entry.
description of cobblestone archway is "It seems Fully designed to seem just the right age to be charming yet not falling apart."
the stairway to heaven is a quasi-entry.
the printed name of the stairway to heaven is "a stairway to heaven, or, more likely these days, the humanist daydreamer's equivalent"
description of stairway to heaven is "It gets bright near the top--an illusion every grade-school kid knows, but it's still awe-inspiring in person."
instead of climbing stairway to heaven:
try entering stairway instead;
the clothing store is a quasi-entry.
description of clothing store is "You'll have to walk in to see what's so special. Nothing in the windows outside really captures you."
the loading dock is a quasi-entry.
description of loading dock is "It isn't exciting. Loading docks are stuck there is nothing to bar you from entry."
the md is a privately-named quasi-entry. understand "metal" and "door" and "metal door" as md. the printed name of md is "a metal door with a one-way peephole".
the peephole is part of the md. description of peephole is "It's for looking out, not looking in."
instead of searching peephole:
say "Just walk in, geez. You're an employed ADULT.";
description of md is "It's plain, and the builders planned it that way."
the surprising new store is a quasi-entry. description of surprising new store is "You can tell it's clean and cheery and, looking inside, you see welcome signs."
the welcome signs are part of the surprising new store. description of welcome signs is "They're inviting you to come in."
instead of doing something other than examining the signs:
say "They're only for looking at."
the barely detectable gladed trail is a quasi-entry.
description of the barely detectable gladed trail is "It's kept up well. But it's also narrow enough that if you weren't looking for it, you'd miss it."
dunes are a quasi-entry.
description of dunes is "Very sandy but off-limits to those without a reservation. You assume one is in your mysterious package."
the door to Ed Dunn's secret hideout is a quasi-entry.
initial appearance of the door to Ed Dunn's secret hideout is "[one of]Hey, here's the door to Ed Dunn's secret hideout! You remember how you got here, and you remember to THINK how to get back, which may save time[now-think][or]Ed Dunn's secret hideout door is just where you remember it. You can enter it to report to your employer[stopping]."
to say now-think:
now thinked is true;
description of door to Ed Dunn's secret hideout is "It's surprisingly ordinary, and it doesn't even have Ed's name on it."
opening a quasi-entry is pointscoring.
entering a quasi-entry is pointscoring.
[instead of examining a quasi-entry:
say "Stop staring and walk inside!"]
the intimidating 15-foot revolving door is a quasi-entry.
description of the intimidating 15-foot revolving door is "Fortunately, the door handle is a more reasonable three feet above."
the door handle is part of the 15-foot revolving door.
instead of doing something with the door handle:
say "It's the door itself you want to mess with.";
description of door handle is "BUG";
instead of doing something with the intimidating 15-foot revolving door:
try processing instead;
the clothing store is a quasi-entry.
the tiny yet inviting door is a quasi-entry.
description of the tiny yet inviting door is "It's meant to radiate charm and a simpler life. More practically, it stands out from the cookie-cutter doors around it, so you know you've found the right place."
the big glass doors are a quasi-entry. the big glass doors are plural-named.
description of big glass doors is "They help the business inside look important."
instead of going inside:
let Q be a random visible quasi-entry;
if Q is nothing:
say "Nothing to enter. It's all so unfamiliar.";
otherwise:
try entering Q instead;
rule for supplying a missing noun when the current action is entering:
if there is a visible quasi-entry:
now noun is a random visible quasi-entry.
does the player mean opening a quasi-entry: it is likely.
instead of opening a quasi-entry:
if front door is visible:
say "That front door is someone's home. You should really knock instead." instead;
try processing instead;
instead of entering a quasi-entry:
if noun is front door:
say "You should really knock instead." instead;
if noun is ominous door:
say "From the list, it looks like Ed wants you to punk them instead. Plus, you think you know what 'Voluntary Population Control' might mean. So, it'd be better to knock instead, wouldn't it?";
unless the player consents:
say "You walk into the population control clinic. Inside is a Death Panel. No, silly, not the health care type. Those're even more secretive! You're briefly thanked for doing your small part to allievate overpopulation and given forms to sign.[paragraph break]As you are strapped into the lethal comfy chair with all these needles, they discuss whether you were useless to society or too lazy to contribute any more. It's emotionally, if not physically, painful.[paragraph break]P.S. they confiscate your package, since you probably stole it, and there's illegal stuff anyway. It's useful when establishing trumped-up charges against Ed Dunn to confiscate his vast possessions five years later.";
now oopsy-daisy is 3;
end the story;
if noun is door to ed:
unless score < maximum score - 1:
say "You're confident you smoked this challenge. You blow past the guard at the front door!";
try processing instead;
if task-list is alpha:
say "As you approach the door, a guard asks your business. You recall Ed Dunn's offer of help. Are you looking for help?";
if the player consents:
say "You explain your situation, hand the guard your list of needs, and get a spiffy new one back! It's even better organized than before! You can't wait to give things another crack, so you push the device button.";
now task-list is super-alpha;
sort the table of findies in tally order;
reset-game instead;
say "You loaf around a bit, worried about facing Ed Dunn, but the guard at the door doesn't seem to want you to hang around. Go in?";
unless the player consents:
say "The guard mumbles, 'I'm a busy man. Don't waste my time!' and turns away. Slightly ashamed, you push the transporter device button to escape the awkwardness.";
reset-game instead;
say "Evaluation time!";
try processing instead;
a library entrance is a quasi-entry.
description of library entrance is "It's barred, almost like a jail, which scares away the dumber people. That's a good thing, because they often tie up books that could be used by someone smarter."
instead of entering library:
try processing instead;
a vacant lot is a quasi-entry.
description of vacant lot is "It's for loafing around in, not loafing around around. Try entering it, instead."
instead of entering vacant lot:
try processing instead;
the shiny new store door is a quasi-entry.
description of the shiny new store door is "Okay, it's not super shiny, but it feels shiny, as something new should."
the secret entry is a quasi-entry. description of secret entry is "A door that blends in nicely with the wall. But not quite well enough."
friends-printed is a truth state that varies.
to say line-clue:
say "[one of]friends mostly super near:[or]extra near:[or]near:[or]kinda near:[or]kinda far:[or]far:[or]extra far:[cycling]"
carry out examining the task-list:
let Z be a list of numbers;
let temp be 0;
say "[bold type]**************ED DUNN'S NEEDS**************[roman type][paragraph break]LOOKING IN MIDDLE OF JOURNEY IS USELESS.[run paragraph on]";
if task-list is not super-alpha:
repeat through table of findies:
say "[if there is a breakbefore entry and breakbefore entry is 1][paragraph break]--[line-clue] [otherwise], [end if]";
if found entry is 1 and unlist entry is false:
say "[italic type][tally entry][roman type]";
else if unlist entry is false:
say "[descrip entry]@[sector-num of tally entry]";
else:
say "[line break]";
else:
super-alpha-it;
if task-list is not kinda-random and score < 4:
say "[one of][paragraph break]Hm, he said it was alphabetized, but you aren't sure yet what he was talking about.[or][line break][stopping]";
if score > 18 and ok-now is false:
say "You figure Ed Dunn would be pretty happy with how you've done so far. But maybe you can do better.";
now ok-now is true;
the rule succeeds;
ok-now is a truth state that varies. ok-now is false.
farsies is a list of text variable. farsies is { "buggily near", "buggily near", "extra near", "near", "kinda near", "kinda far", "far", "extra far" }
to say nearness of ( xxxx - indexed text ):
let ch be the number of characters in xxxx;
if ch > 8:
say "buggily far";
else if ch < 3:
say "buggily near";
else:
say "[entry ch of farsies]";
to super-alpha-it:
let a be indexed text;
now a is "a";
repeat through table of findies:
let b be character number 1 in "[tally entry]" in lower case;
if a is not b:
say "[paragraph break]--";
now a is b;
else:
say ", ";
if found entry is 1 and unlist entry is false:
say "[italic type][tally entry][roman type] ([nearness of tally entry])";
else if unlist entry is false:
say "[descrip entry]@[sector-num of tally entry]";
book examining
carry out examining a direction:
if noun is northwest or noun is northeast or noun is southeast or noun is southwest:
say "Hey! Looking at street names on signposts is cheating!" instead;
say "You didn't get your job with Ed Dunn by paying careful attention to where you were going. Or where you came from.";
the rule succeeds;
book inventory stub
After printing the name of the task-list while taking inventory:
say " (can be examined with just X)";
book ening
ening is an action applying to nothing.
understand the command "en" as something new.
understand "en" as ening.
carry out ening:
if number of visible quasi-entries is 0:
say "Nowhere to enter." instead;
try processing instead;
book cheatlooking
table of hashes
Letter (indexed text) Code
"e" 5
"w" 5
"n" 3
"s" 3
"u" 100
"d" 100
look-mode is a truth state that varies.
understand "[number]" as cheatlooking when look-mode is true.
to decide what indexed text is the filtered name of (t - a value of kind K):
let s be t in lower case;
replace the regular expression "<^abcdefghijklmnopqrstuvwxyz>" in s with ""; [ a-z would include accented characters]
decide on s;
to decide what number is the hash of (t - a value of kind K):
let s be the filtered name of t;
let hash be 0;
repeat with c running from 1 to the number of characters in s:
if there is a letter of character number c in s in the table of hashes:
increase hash by the Code corresponding to a Letter of character number c in s in the table of hashes;
else:
decide on 500;
decide on hash;
to dirparse (dirlump - indexed text):
let ef be ever-fast;
if ever-fast is false:
say "You pick up the pace of your wandering, there, planning a few blocks ahead.";
now ever-fast is true;
else:
say "[one of]You plan ahead, yet don't plan at all at the same time, as you zigzag through Threediopolis[or]You put your head down and power-walk, only looking up for 3-d traffic lights[or]You walk by several identical twenty-story buildings owned by Tiny-Rise Condos[or]You find a cool shortcut with moving walkways that you soon forget[or]It's a quick journey. The lines for the vertical transport tubes are short[or]You careen past police robots gaffling a fellow walker for aggravated wrong-way walking[in random order].";
repeat with charnum running from 1 to number of characters in dirlump:
if character number charnum in dirlump is "w":
try going west;
if character number charnum in dirlump is "e":
try going east;
if character number charnum in dirlump is "n":
try going north;
if character number charnum in dirlump is "s":
try going south;
if character number charnum in dirlump is "u":
try going up;
if character number charnum in dirlump is "d":
try going down;
if character number charnum in dirlump is ".":
say "Note: ignoring period.";
[?? option to turn off diagonal warning, or give boolean to keep something before YES]
ever-fast is a truth state that varies.
fast-run is a truth state that varies.
reserve-command is indexed text that varies.
after reading a command:
let locom be the player's command in lower case;
if look-mode is true:
if locom matches the regular expression "<a-z>":
say "[the player's command] -- You need to input a number--0 will decline help for the moment.";
reject the player's command;
if fast-run is false:
if number of characters in locom is 2 or number of characters in locom is 3:
now reserve-command is locom;
let HH be hash of locom;
if HH is 108 or HH is 105 or HH is 103 or HH is 8:
say "[if HH is 108]That's a pretty crazy diagonal direction. You'd crash into something, even with a jetpack[else if HH is 8]It would be more efficient if you could walk through buildings, but they're private property[else]Upward-diagonal directions are possible, but even with a jetpack, you could get ticketed for them[end if]. Did you mean to run these directions in order?";
if the player consents:
say "[italic type][bracket]NOTE: you can [one of]always[or]still[stopping] bypass this command check with F (for fast moving.)[close bracket][roman type]";
dirparse reserve-command;
else:
say "Ok--you can always bypass the two-to-three-letter-command check with F (for fast moving.)";
the rule succeeds;
if the number of characters in locom > 1:
if locom matches the regular expression "^<ewnsud\.>*$":
dirparse the player's command;
the rule succeeds;
let w1 be word number 1 in the player's command in lower case;
if the w1 is "g" or w1 is "again":
say "That would actually make getting around in Threediopolis more complex. Because you can't really move from there to here, again, or not that way[if the score is 0]. You'll understand once you score your first point--it'd just allow all kinds of extra crazy [italic type]guesses[roman type][else]. You understand? Having scored a point and all[end if]. Using one-word directions should be quick enough.";
reject the player's command;
cheatlooking is an action applying to one number.
saw-see is a truth state that varies.
carry out cheatlooking:
let found-one be false;
let temp be 0;
let temp2 be 0;
let start-number be 0;
let end-number be 0;
now saw-see is true;
if the number understood is 0:
say "You decline hints for now.";
now look-mode is false;
now the command prompt is ">";
reset-game instead;
if the number understood is 1 or the number understood is 2 or the number understood is 9:
say "Nothing's quite that [if the number understood is 9]far[else]near[end if]." instead;
if the number understood > 10:
say "Even if something were there, it'd be too far to walk without getting tired." instead;
if the number understood is not listed in L:
say "Bad news: that isn't available as an option. Good news: it's because you've gotten everything like that." instead;
now look-mode is false;
now the command prompt is ">";
increment num-hints-given;
let LN be a list of numbers;
repeat through table of findies:
increment temp;
if number of characters in tally entry is the number understood:
now end-number is temp;
if found-one is false:
now start-number is temp;
now found-one is true;
if found entry is 0:
add temp to LN;
sort LN in random order;
now temp is entry 1 of LN;
choose row temp in table of findies;
say "[line break]You see a graphical depiction of someone walking [dir-go of tally entry], but then your vision loses focus.[paragraph break]You're informed you have [3 - num-hints-given] hint[if num-hints-given is not 2]s[end if] left. Then you push the teleporter device button to get back to where it'll be easier to follow that person.";
reset-game;
to say dir-go of (t - text):
let tt be indexed text;
now tt is "[t in lower case]";
repeat with X running from 1 to the number of characters in tt:
if X > 1:
say ", ";
if X is the number of characters in tt:
say "then finally ";
if character number X in tt is "e":
say "east";
if character number X in tt is "w":
say "west";
if character number X in tt is "n":
say "north";
if character number X in tt is "s":
say "south";
if character number X in tt is "u":
say "up";
if character number X in tt is "d":
say "down";
chapter fasting
fasting is an action out of world.
understand the command "f" as something new.
understand "f" as fasting.
carry out fasting:
now ever-fast is true;
if fast-run is false:
say "Allowing fast movement e.g. NSEW instead of N.S.E.W.";
now fast-run is true;
else:
say "Disallowing fast movement e.g. you can no longer use NSEW instead of N.S.E.W.";
now fast-run is false;
the rule succeeds;
chapter default
check waking up:
say "You had your vitamin mush this morning. You're wide awake." instead;
check waving:
say "If Ed Dunn is watching, he may want you to get on with it. If the government is watching, they aren't amused." instead;
check jumping:
say "No reason to, with vertical transport tubes to go up and down." instead;
check smelling:
if your-tally is "weed":
say "Smells like someone's having a mellow time." instead;
say "Pollution is 96% less stinky than a hundred years ago. Which isn't all good. You don't know if it's killing you." instead;
chapter yes
instead of saying yes:
say "The y-axis is north or south. I mean, N or S.";
book scoring
carry out requesting the score:
say "You have completed [score] of [number of rows in table of findies - 1] searching tasks. You can look at your list (just type X) for what's left.";
the rule succeeds;
Procedural rule: ignore the print final score rule.
to say found-friend:
say "You found one of Ed's friends! [your-tally in title case] appreciates the old-fashioned personal invite as opposed to the cold technological way. You mark [your-tally in title case] down for your employer's party.[no line break]"
book disambiguation
Rule for clarifying the parser's choice of task-list: do nothing.
book stupid scenery
table of stupid scenery
tally (text) descrip (text) found-yet
"dedsune" "This feels like one of those seedy areas you were warned about, where a pack of bad-spelling thugs might jump out and kill you." 0
"dedududu" "A song from the 1980s echoes through your head. The chorus, anyway." 0
"dense" "You're in an unusually overpopulated area of Threediopolis. And yet, nothing seems worth visiting." 0
"denude" "Some weirdo runs by and tries to pull your pants down. You swat him away. He won't try again!" 0
"dude" "There's an argument in the distance about whether someone crossed a foul line while bowling. Someone out of his element with no frame of reference shouts 'Well, that's just your OPINION, man!' Silence abides." 0
"due" "You suddenly feel as though you're owed...well, not quite owed, what's the word again...a[if score > 0]nother[end if] place of Ed Dunn's to find, now or soon." 0
"dundee" "You hear vague Scottish accents around." 0
"eden" "You think back to how humanity started, for some reason." 0
"eee" "You hear a piercing scream! Well, it's not the first you've heard. In city life, you learn to deal." 0
"eeeee" "You hear an even more piercing scream than the one you heard a bit ago! Well, you didn't hear any other yelling, so it can't be THAT bad." 0
"eesus" "Some guy in a purple shirt and matching bowling ball moonwalks past. He advises you not to mess with him, then disappears." 0
"esses" "You walk by a rare curving side street. No time to see where it leads." 0
"euwe" "People play chess--the simple version solved as a draw in 2037, not even the Fischer 960 version dissected ten years later--and yell in Dutch as you walk by." 0
"eww" "You just stepped in something disgusting. You shuffle your shoe to scrape it off and move on." 0
"needed" "You feel that much surer you're being an irreplacable help to Ed Dunn." 0
"needs" "You hear someone whining he HAS to have this and that and the other. But you tune it out." 0
"new" "A construction site you pass by--and promptly forget about--promises state of the art homes for sale soon." 0
"seen" "You hear the whirr of a hidden security camera." 0
"sen" "You are redirected around where a congressman is giving a speech." 0
"senesense" "One of those retirement homes that tries to be too hip is here. You can't--you won't look--you just move on. Not something to think about." 0
"senessense" "One of those retirement homes that tries to be too hip is here. You can't--you won't look--you just move on. Not something to think about." 0
"sued" "Someone moans about his trouble with lawyers. You tune that whining out." 0
"sudden" "A loud noise from nowhere surprises you." 0
"suns" "As you walk by, the sun manages to bounce off two buildings curved so that the sun hits your eyes--twice. You blink and can't recognize anything[if-snus]."
"sussud" "A song from the 1980s echoes through your head. You remember about three-quarters of it." 0
"wednesd" "You temporarily forget what day it is. Wait, it's on the tip of your tongue." 0
"undue" "Someone walks by and gives you an insult you didn't deserve." 0
"unneeded" "You suddenly feel as if nobody, not even Ed Dunn, cares about you." 0
"unseeded" "You hear a pep rally for the local underdog team who's gone rather far in some tournament in some sport or other." 0
"weed" "Based on the smell, maybe there are private gardens behind some walls here, maybe not. Some people just won't pay the exorbitant taxes for growing...THAT." 0
"weewee" "You just stepped in a puddle, though it hasn't rained much lately. Whoever, uh, made that puddle is really juvenile." 0
"wend" "Your most recent turning and twisting around seems like it should've led somewhere. But it did not." 0
to say if-snus:
choose row with a tally of "Snus" in table of findies;
if found entry is 0:
say ", though you figure you must've been close, somehow, some way"; [this was a weird one according to testers]
book finding table
table of findies [tof]
tally (text) descrip (text) findies (text) what-drops found searchedfor breakbefore unlist rand-score
"Dee" "pal" "[found-friend]" front door 0 1 1 false 0
"Des" "pal (English name)" "[found-friend]" front door -- -- -- false 0
"Ewen" "[if task-list is not super-alpha]near [end if]pal (Scottish-Canadian name)" "[found-friend]" front door -- -- -- false 0
"Ned" "pal" "Ned is working at the computer at -- well, one of his silly text adventures few people play any more. He absent-mindedly mentions he'll be there before getting back to work. You mark [your-tally in title case] down for your employer's party.[no line break]" front door -- -- -- false 0
"Sue" "pal (female)" "[found-friend]" front door -- -- -- false 0
"Swen" "[if task-list is not super-alpha]near [end if]pal" "[found-friend]" front door -- -- -- false 0
"Wendee" "[if task-list is not super-alpha]far [end if]pal" "[found-friend]" front door -- -- -- false 0
"Wes" "pal" "[found-friend]" front door -- -- -- false 0
"Den" "Visit ultimate super-private man-cave and report" "You realize that your employer has done you a favor by allowing you to view this. You take extra careful notes on how the party is, what's being served, what a party should be, and the general atmosphere and how people are acting you are sure Ed Dunn will know what to do with the information." a door shaped like a champagne bottle -- -- 1
"Dew" "Park with wet grass" "A kid on a lonely park bench. 'So you're the one my uncle got to play with me today. You'll do, I guess.' It's actually rather fun, and the kid gets bored first." gladed trail
"Dns" "Chat with my web service" "You probably took less time to walk there than it would've taken to stay on hold if you called in. Or get an email response. Internet customer service was so much better a hundred years ago! You straighten out a few things about your employer's websites, both the ones people know he owns and the one they don't[acro-thick]." big glass doors
"Edu" "Visit online learning center's physical home" "While you're not sure what business Ed Dunn has here, the secretaries there recognize it immediately. Apparently, Ed Dunn has a .EDU domain offering real-world business advice, and one of the main projects is getting people to do busy work for you, whether you really need it done or not[acro-thick]." big glass doors
"End" "punk the Voluntary Population Control Clinic" "You reach into the mysterious package and pull out a stink-bomb, then knock and run away. Since you didn't light it INSIDE the clinic, there's nothing they can do to you. There's legal precedent--plus if they prosecuted you, they'd have to reveal the address in court, which would mean more annoying protestors. You're glad your benefactor has a conscience!" the extremely ominous door
"See" "[if saw-see is true][bold type][see-3][roman type][else]A powerful spying telescope, to help you find somewhere on here[end if]" "[see-hints]" secret entry
"Sew" "Repair holes in my clothes" "Most people just have to dispose of clothes and get new recyclable ones, but Ed Dunn can afford more expensive stuff. You dump out the clothes that need repairing and get a receipt with the ready date. Technology hasn't managed to speed up clothes mending." tiny yet inviting door
"Sun" "Soak Up Vitamin D" "It's so rare to get natural sun. Usually the heat lamps are enough. Someone punches your ration card and you return to your home, cheerier. You're given a dark bottle of instant sunlight for your employer, too. He seems to be on the monthly plan, and it's too fragile to mail to him." big glass doors
"Deus" "Church where Latin is spoken" "What with the brutal unholy war over atheists' best reasons to disbelieve in God, religion has made a comeback. The priests here acknowledge you've traveled long and hard and far. You're not sure if you've gone anywhere. But they mention the journey is important, and the cliche provides comfort. There's a weird coin in the package, with which you buy a candle to light. Perhaps it is pre-penance for the party." a stained-glass entryway -- -- 1
"Duds" "Clothes, new or used" "You walk into the store and realize you don't know what you should buy. A sales associate dubiously asks if he can help you, and when you mention it's not quite you but Ed Dunn, he whistles and hands you some clothes, with obsequious gratitude to be one of several suppliers to Ed Dunn." clothing store
"Ewes" "Sheep's milk" "Well, people apparently like all sorts of crazy stuff at parties. You guess. You'd never have noticed this mini-farm if you hadn't been told where to locate it." hinged wooden gate
"News" "Information--for you and me" "There is a setup for an old-fashioned newscast. People still watch them, epsecially in the morning, mostly because the anchors are attractive and perky, and none of the reported news is too jarringly thoughtful. However, your package is frisked, and when one of the guards alerts one of the news station big-shots about whom you work for, the big shot schmoozes a bit, gives you a few presents and secret after-party invitations to pass on, and asks for a few favors." big glass doors
"Nuns" "A conventional convent" "You hand the nuns a folded sheet marked 'Ed Dunn's Undue Deeds.' Apparently Ed Dunn is enough of a benefactor that the nuns forgive all his sins--and yours--after you say his penance for him!" a stained-glass entryway
"Send" "Package handling and deployment" "You write down your employer's name, location, reason for having to send something physical--and you're promised the package will be sent off." loading dock
"Sewn" "Handmade clothes with love in every stitch, 1" "Nobody really cares about clothes any more, but, you know, there are things like standards. Your benefactor also needs a variety of clothes." clothing store
"Snus" "Smokeless tobacco (for others, natch)" "Of course, the smokable kind's been illegal a while, smoking outdoors being proved worse than smoking indoors being proved worse than smoking outdoors. But this stuff is there, if people MUST. It's been genetically engineered to be okay to snort but very toxic to smoke--just in case people get ideas." big glass doors
"Suds" "Root Beer &/or Cream Soda" "You've never been a Coke or Pepsi man, particularly after they aligned themselves with opposing political parties. Other soft drinks are taxed at a higher rate except for the bootleg stuff. Except here. Your employer apparently Knows People. Because he is such a good customer, you even get some illicit phosphate-filled laundry detergent." restaurant door
"Suse" "New Linux system--boo Windows 27" "If only the people extolling Linux weren't so annoying, you'd have fallen in line with them sooner once you saw why. You suspect your employer felt the same. You pick up a lightweight custom computer for your employer." shiny new store door
"Suss" "[if suspicious-seen is true][bold type]Can still SUSS[roman type][else]Get a free hint[end if]" "Well, I guess your employer knows that he can't expect utter perfection. But you can't imagine you get more than one thing." shiny new store door -- -- 0
"Deeds" "pay property tax" "People seem surprised to see you. You don't look like a property owner. But once they see your list, they realize who you are working for. You paying in person has saved him $20 in electronic handling fees." intimidating 15-foot revolving door -- -- 1
"Dudes" "cowboy hat and boots" "You reflect that, ironically, you didn't have to go west once to enter here. You buy a fold-up cowboy hat that fits nicely into your big mysterious package." clothing store
"Dunes" "sandy beaches" "It's not fully a natural beach, and you can't go in the water, but people shouldn't have to drive to a less wired area just to see the dunes. You are able to reserve the dunes for a weekend for your benefactor at a nice discount. The agents like that, because people who reserve on-line cancel more frequently." dunes
"Nudes" "ART not porn" "Obviously there needs to be a crackdown on sicko-porn masquerading as art, but this has been certified by the Ministry of Art as relatively intellectual stuff. It will provoke dynamic conversation at Ed Dunn's party, too, for sure. You pick out a sculpture from the No-Photograph Zone for later delivery to your benefactor." md
"Seeds" "stuff to grow in private garden" "Genetic engineering advances have made it so most people, even if they get seeds, can only grow plants for one year. A power grab by agribusiness? Perhaps. But nobody much goes hungry. And no farmland wasted where real estate could grow. You pay for and take the valuable seed packets." secret entry
"Sewed" "handmade clothes with love in every stitch, 2" "Nobody really cares about clothes any more, but, you know, there are things like standards. Your benefactor also needs a variety of clothes." clothing store
"Suede" "leathery clothes, not the fancy stuff" "Real leather's a bit scarce, even for rich people, but suede still costs about the same, adjusted for inflation. Anyway, it's just like artificial flavors in food--you get used to it, with all the other advances." clothing store
"Unwed" "Matchmaker--for happiness" "You walk in. 'Are you searching for that special someone...?' a clerk asks.[paragraph break]You mumble 'Um...not for me, this guy needs it.'[paragraph break]'Ah, quite so. Mr. Dunn offers our services as a surprise gift to people who have impressed him. I am not surprised you have not.' Whoa!" secret entry
"Weeds" "visit that vacant lot I loved as a kid" "There aren't many vacant lots left here, and eventually they'll be phased out above the concerns of environmentalists, but this one's still here. You take a few phone-pictures for your benefactor to remember, and you take time to remember your own vacant lot." vacant lot
"EdDunn" "Return to Ed Dunn for evaluation and reward" "You return, with a list of what you've done.[line break]" door to Ed Dunn's secret hideout -- -- 1
"Senses" "a smell test. And a taste test, I hear" "You are evaluated on various senses, and surprisingly, you are graded high on a sixth sense. You don't know what it is, but you're afraid asking will forfeit your score. You're given a certificate of senseness, which goes in the mysterious package. This will please Ed...I think?" secret entry
"Sweden" "reserve Scandinavian vacation" "Well, I guess your benefactor wants to have a few 24 hour days of sunlight. You place the reservation for a summer vacation." big glass doors
"Unseen" "Invisible Institute secret docs" "Your benefactor must have some reason for the stuff that is locked away in one of the more private parts of the library. You aren't allowed to see what it is, only to trade a piece of paper from your package that has the instructions inside. You're not sure what the Invisible Institute is for, and you still aren't sure you want to find out." blurry doors that seem only half there
"Unused" "brand new stuff-in-general" "Your benefactor deserves this new stuff, you imagine. You get a free new spatula for visiting in-person. You get some new pocket-sized technology for your benefactor. It all goes back in your package." shiny new store door
"Wedded" "new bride and groom stuff" "Expensive wedding presents have been discouraged by the government ever since the population was deemed unsustainable. But people now get married and divorced much more frequently, so non-loners still have that racket going. Well, it's your benefactor's money, not yours." shiny new store door
"Wusses" "the anti-athletic club" "You're surprised places like this exist, once you know what it really is. It isn't just rebellion against mandatory exercise for people who do not have computer jobs. It's a group of lazy people who are very clever about mooching off the various welfare programs. Perhaps your benefactor takes tips from them? You are given a manuscript that you throw in your package, and it's understood you had better not look at it." library
"NewDuds" "unworn clothes boutique" "You wouldn't wear any clothes like this year's fashions, but you're not paying. You put the clothes in the mysterious package." clothing store -- -- 1
"Weenees" "improperly vowelled hot dog hut" "Man, you have heard a lot of reasons why this place or that place is good for comfort food, but one thing you can always rely on: owners misspell, grub will excel. You're given a few free samples for such a bulk order, and man, you already wish you got more." restaurant door
"UsedDuds" "2nd-hand clothing boutique" "Arriving in the used clothes store, you suddenly realize that there are probably used clothes in the mysterious package. You take them out and give them to the clerk, who credits your employer's account." clothing store -- -- 1
to say see-3:
say "See [3 - num-hints-given] more thing[if num-hints-given is not 2]s[end if]";
to say acro-thick:
say "[one of]. The acronyms are flying around, here. You hope you don't have to put up with much more of this[or]. This has to be all the acronymage you can put up with for today[stopping]";
book see-hints
num-hints-given is a number that varies.
L is a list of numbers that varies.
to say see-hints:
if num-hints-given > 2:
say "You are turned away. You've already used enough hints.";
continue the action;
now L is { 0 };
repeat through the table of findies:
let A be the number of characters in "[tally entry]";
if A is not listed in L:
if what-drops entry is not front door and found entry is 0:
add A to L;
say "You're given a scope to look through--you can follow someone as they make their way to one of your locations. You notice it has settings at [L], where 0 means you'll do nothing. What do you choose?[no line break]";
now look-mode is true;
now command prompt is "Choose one of [L]:";
[?? en]
volume 2 - not for release
when play begins:
say "There is a total of [maximum score] possible things to do. Guess you better get on it!"
every turn (this is the debug-tracking rule):
do nothing.
[say "[your-tally].";]
test fiddly with "x list/x/x button/x device/x package/open package/drop package/drop device/drop list/xyzzy"
test errthru with "d/d/d/d/d/u/u/u/u/u/w/w/w/w/w/s/s/s/s/s/e/n/w/u/d/u/d/u/d/u/d"
test wslash with "d/e/e/knock/d/e/s/knock/e/w/e/n/knock/n/e/d/knock/s/u/e/knock/s/w/e/n/knock/w/e/n/d/e/e/knock/w/e/s/knock/d/e/n/enter/d/e/w/enter/d/n/s/enter/e/d/u/enter/e/n/d//p/s/e/e/enter/0/p/s/e/w/enter/s/u/n/enter/d/e/u/s/enter/d/u/d/s/enter/e/w/e/s/enter/n/e/w/s/enter/n/u/n/s/enter/s/e/n/d/enter/s/e/w/n/enter/s/n/u/s/enter/s/u/d/s/enter/s/u/s/e/enter/s/u/s/s//n/p/d/e/e/d/s/enter/d/u/d/e/s/enter/d/u/n/e/s/enter/n/u/d/e/s/enter/s/e/e/d/s/enter/s/e/w/e/d/enter/s/u/e/d/e/enter/u/n/w/e/d/enter/w/e/e/d/s/enter/enter/s/e/n/s/e/s/enter/s/w/e/d/e/n/enter/u/n/s/e/e/n/enter/u/n/u/s/e/d/enter/w/e/d/d/e/d/enter/w/u/s/s/e/s/enter/n/e/w/d/u/d/s/enter/w/e/e/n/e/e/s/enter/u/s/e/d/d/u/d/s/enter/e/d/d/u/n/n/in"
test wnoslash with "dee/knock/des/y/f/knock/ewen/knock/ned/knock/sue/knock/swen/knock/wendee/knock/wes/knock/den/enter/dew/enter/dns/enter/edu/enter/end/p/see/enter/0/p/sew/enter/sun/enter/deus/enter/duds/enter/ewes/enter/news/enter/nuns/enter/send/enter/sewn/enter/snus/enter/suds/enter/suse/enter/suss/n/p/deeds/enter/dudes/enter/dunes/enter/nudes/enter/seeds/enter/sewed/enter/suede/enter/unwed/enter/weeds/enter//enter/senses/enter/sweden/enter/unseen/enter/unused/enter/wedded/enter/wusses/enter/newduds/enter/weenees/enter/usedduds/enter/eddunn/in"
test eggslash with "d/e/d/s/u/n/e/enter/d/e/d/u/d/u/d/u/enter/d/e/n/s/e/enter/d/e/n/u/d/e/enter/d/u/d/e/enter/d/u/e/enter/d/u/n/d/e/e/enter/e/d/e/n/enter/e/e/e/enter/e/e/e/e/e/enter/e/e/s/u/s/enter/e/s/s/e/s/enter/e/u/w/e/enter/e/w/w/enter/n/e/e/d/e/d/enter/n/e/e/d/s/enter/n/e/w/enter/s/e/e/n/enter/s/e/n/enter/s/e/n/e/s/e/n/s/e/enter/s/e/n/e/s/s/e/n/s/e/enter/s/u/e/d/enter/s/u/d/d/e/n/enter/s/u/s/s/u/d/enter/w/e/d/n/e/s/d/enter/u/n/d/u/e/enter/u/n/n/e/e/d/e/d/enter/u/n/s/e/e/d/e/d/enter/w/e/e/d/enter/w/e/e/w/e/e/enter/w/e/n/d/enter/"
test eggnoslash with "dedsune/enter/dedududu/enter/dense/enter/denude/enter/dude/enter/due/enter/dundee/enter/eden/enter/eee/yeeeee/enter/eesus/enter/esses/enter/euwe/enter/eww/enter/needed/enter/needs/enter/new/enter/seen/enter/sen/enter/senesense/enter/senessense/enter/sued/enter/sudden/enter/sussud/enter/wednesd/enter/undue/enter/unneeded/enter/unseeded/enter/weed/enter/weewee/enter/wend/enter/"
[#Generated walkthrough
wtest("/", "wslash", "table of findies");
wtest("", "wnoslash", "table of findies");
wtest("/", "eggslash", "table of stupid scenery");
wtest("", "eggnoslash", "table of stupid scenery");
open(B, ">debug.txt");
sub wtest
{
my $readIt = 0, $count = 0, $lines = 0;
my $cmds;
my $b = "", $final = "";