From d17981093d98bb4e5c904ea3c461ee30b787bcb4 Mon Sep 17 00:00:00 2001 From: Jared Miller Date: Fri, 24 Apr 2015 08:39:32 -0400 Subject: [PATCH] init commit --- Fwander.o | Bin 0 -> 45292 bytes NFwander.o | Bin 0 -> 45432 bytes READ_ME | 35 ++ READ_ME_TOO | 143 ++++++++ a3.misc | 401 +++++++++++++++++++++ a3.wrld | 969 +++++++++++++++++++++++++++++++++++++++++++++++++++ castle.misc | 194 +++++++++++ castle.wrld | 914 ++++++++++++++++++++++++++++++++++++++++++++++++ library.misc | 130 +++++++ library.wrld | 661 +++++++++++++++++++++++++++++++++++ mac | 102 ++++++ misc.nr | 247 +++++++++++++ tut.misc | 28 ++ tut.wrld | 112 ++++++ wanddef.h | 187 ++++++++++ wander.nr | 301 ++++++++++++++++ wandglb.c | 176 ++++++++++ wrld.nr | 423 ++++++++++++++++++++++ 18 files changed, 5023 insertions(+) create mode 100644 Fwander.o create mode 100644 NFwander.o create mode 100644 READ_ME create mode 100644 READ_ME_TOO create mode 100644 a3.misc create mode 100644 a3.wrld create mode 100644 castle.misc create mode 100644 castle.wrld create mode 100644 library.misc create mode 100644 library.wrld create mode 100644 mac create mode 100644 misc.nr create mode 100644 tut.misc create mode 100644 tut.wrld create mode 100644 wanddef.h create mode 100644 wander.nr create mode 100644 wandglb.c create mode 100644 wrld.nr diff --git a/Fwander.o b/Fwander.o new file mode 100644 index 0000000000000000000000000000000000000000..3963fead5b4417c1bbe3eb4dc84420b6b12a1ed7 GIT binary patch literal 45292 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 SycDn=n`OjH{0-{IHO*tNGEn4dk$V6g8k|u!x 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 u6)*7ST>j3IR=q!fcg0IG_7*tqWdCjmisc.doc" will create the documentation. + +I want to keep track of the distribution and usage of Wander, so: +The material on this tape is not to be distributed without explicit, +written permission from Peter Langston. + +Let me know if I've overlooked anything, if something doesn't work, +or if further explanation would be helpful. + + Peter Langston + 127 W. 26th St. 11th fl. + New York, NY 10001 + +(c) P. Langston, NYC NY All rights reserved. diff --git a/READ_ME_TOO b/READ_ME_TOO new file mode 100644 index 0000000..d8f2faf --- /dev/null +++ b/READ_ME_TOO @@ -0,0 +1,143 @@ +Changes incorporated in wander as of April 9, 1980 + +SCCS Versions are: +wander: + wander.c 2.12 with ftell() last mod 4/9/80 -- (c) psl 1978 + wanddef.h 1.5 last mod 4/9/80 -- (c) psl 1978 + wandglb.c 2.7 last mod 4/9/80 -- (c) psl 1978 + wanddef.h 1.5 last mod 4/9/80 -- (c) psl 1978 + + + + MISCELLANEOUS CHANGES + +Save & Restore + Save makes a snapshot of the game; restore reads in the saved +snapshot and restores the game to the state it was when the snapshot +was taken. In order to provide reasonable speed the saved file is a +lot bigger than I'd like; too bad. The default name for a save file +is the world name with the extension ".save" tagged on; e.g. for "a3" +"a3.save" is created. Both save and restore can take an argument which +will be used for the file name. Invocation of Wander with the "-r" +flag will cause the save file to be read in. "wander -r a3" will +restore from "a3.save"; "wander -rfoo" will restore from "foo". + +All + Whenever the word "all" is encountered as the second recognized +word of user input on a line it will be macro expanded. This expansion +replaces the word "all" with each object in the current location including +objects being carried. E.g. "drop all" may expand to "drop keys; drop net; +drop leaflet". + +Re-start + The built-in command "re-start" has been renamed "init" for fairly +arbitrary reasons. + + + + NEW VARIABLES + +INP_N1 & INP_N2 + These two variables are set to the values of the first and second +"numbers" input in a command by the user. The corresponding word entries +are set to the symbols "N1" and "N2" so that the following work: + "take N1 apples" v+4.%INP_N1% m="You now have %4% apples." + "add N1 and N2" v=22.%INP_N1% v+22.%INP_N2% m="Sum is %22%" + +NUM_MOVES & NUM_PLACES + These are the counters that the program keeps. Combined with +%NOW_ET% they make for interesting score algorithms. + +BREVITY + This variable allows you to control the frequency of long versus +short descriptions. The following values produce the specified results: + -1 Long description only once; the first time a loc is visited + 0 No long descriptions; always short + 1 All long descriptions; never short + 2 Long descriptions every second time + 3 Long descriptions every third time +and so on, up to a maximum period of 127. See "a3.misc" for simple usage. + +LOC_VIEW + This variable controls the source for the long description and is +useful for such things as turning off a lamp... + 0 Use the descriptions from the current location + 1 Use the description from location 1 + 2 Use the description from location 2 +and so on. Typically you might set up a dummy location 200 which has, as +its short and long descriptions: "It is pitch black -- You can't see a thing." + +OBJ_VIEW + This variable controls visibility of objects in a very simple +way; if it's zero you can see fine, if it's non-zero all objects are +invisible. + + + + NEW ACTION FIELDS + +The "Been" Fields + Seven new test/result field types have been added to test and/or +manipulate the counters that show whether the user has "been" to a given +location and how long it has "been" since the long description was given +for that location. For each location an 8-bit counter is kept that is +zero until the location has been seen. After that it is incremented each +time a description is given and then set to 1 each time a long description +is given. The following fields access these counters: +b?12.0 true if counter for loc 12 is zero, (never been there) +b~12.0 true if counter for loc 12 is non-zero (been there) +b<12.2 true if counter for loc 12 less that 2 (so what?) +b>12.0 true if counter for loc 12 greater than 0 +b=12.0 set counter for loc 12 to zero +b+12.1 add one to the counter for loc 12 +b-12.3 subtract three from counter for loc 12 + + + + CHANGES THAT AFFECT THE .misc FILE + +Object Flags + A third field has been added to the definition of words in the +.misc file. This field contains a flag that specifies how the word is +to be output and essentially assumes that the word is an object, (as I +shall assume here by calling it "object" rather than "word"). It is +expected that this field will only rarely be needed so I haven't gone +to great lengths to make it nice cosmetically. The field contains a +number that is the sum of the following options: + 1 The object is singular even though it ends with an 's' + 2 The object is plural even though it doesn't end with an 's' + 4 The object already contains an article; don't supply one + 8 The object is a complete description as is; don't use + constructions like "there is a *** here" for it. + 16 This form of the object is to be used ONLY when describing + it in a location, not when being carried, dropped, etc. +Note that 1 and 2 need only rarely be used, e.g. if you have a 'princess' +she will be described as "some princess" unless you specify a 1, but seldom +do such examples seem to arise. +Note also that 8 usually requires 16, (i.e. 24), whereas 16 doesn't always +require 8. +If you use the 16 code be sure that it is the zeroth synonym and that there +is a first synonym following it that can be used for the carrying, dropping, +etc. cases, e.g.: +"A weeping damsel huddles before you" 0 0 24 +tear-soaked\ damsel 1 +damsel 2 +The second synonym here, (damsel), is to allow the user to say "drop damsel"; +without it the user would have to say "drop tear-soaked" or the like. + +Words Section + The words section of the .misc file can no longer be headed by +a "verbs" or "objects" line; the line must start with the word "words". +However it can say "words verbs" or "words (objects)" and there can be +any number of such sections. + +Location Field in Word Definitions + To have an object start out "on-the-user", i.e. being carried, +the location field must contain a "-1". Previously all that was required +was the "-". E.g. +Wander\ Instruction\ Guide 0 -1 + + +I think that's it; but these are just the changes since version 2.10 or so +of wander.c. The documentation should have a margin character next to +all recent changes... diff --git a/a3.misc b/a3.misc new file mode 100644 index 0000000..3d2a049 --- /dev/null +++ b/a3.misc @@ -0,0 +1,401 @@ +: (c) P. Langston & N. Howard %W% last mod %G% -- P.S.L. games +" Just Imagine ... + +You are travelling as First Under-secretary to the Ambassador for +the Corps Diplomatique Terrestrienne, (CDT). Your direct +superior, Mr. Magnan, has managed to duck out of the action and +leave you as sole assistant to his superior, Ambassador +Pouncetrifle. (The Ambassador is a classic bungler and would, if +left on his own, mess things up badly.) + +You have been sent to Aldebaran III where you are to avert an +uprising against Terran nationals expected at the end of April. + +During your trip you were able to peruse the ship's meager +library and make a few notes on the history, life-forms and +society of Aldebaran III, but much of Aldebaran culture is still +a mystery. + +It is the middle of the night; the ship on which you arrived has +just departed from the small spaceport which you find to be windy +and deserted." + + words (verbs) +ask +question 1 +attack +hit 1 +beat 2 +kick 3 +kill 4 +buy +purchase 1 +steal +borrow 1 +purloin 2 +read +examine 1 +in +enter 1 +exit +out 1 +leave 2 +push +press 1 +drop +throw 1 + + words (objects) +i +me +you +official\ identity\ papers 0 -1 +papers 1 +notes 0 -1 +credit\ card 0 1 +card 1 +electronic\ all-dialect\ dictionary +dictionary 1 +cigarette\ pack +pack 1 +cigarettes 2 +drink +beer 1 +liquor 2 +subwalk\ tokens +tokens 1 +half-empty\ wine\ bottle 0 101 +bottle 1 +shovel 0 12 +pale\ xyller +xyller 1 +alabaster\ yangst +yangst 1 +green\ zwerf +zwerf 1 +keys 0 5 +money +peace +directions +information 1 +drunken\ ruffians +ruffians 1 +transylvanian\ count +vampire 1 +count 2 + + pre actions + * v+9.%7% ,,, + * v=7.1 ,,, + * v>8.27 v?9.24 m="Tensions seem at the breaking point as" ,,, + * v?9.24 v=9.0 v+8.1 m="Another day passes..." ,,, + take\ xyller o?xyller t?yangst ,,, m="\ +The yangst seems to twitch and roll slightly in your grip." + take\ yangst o?yangst t?zwerf ,,, m="\ +The zwerf seems to twitch and soften in your hand for a moment." + * o?yangst t~yangst o?zwerf t~zwerf ,,, o-zwerf m="\ +As you watch, amazed, the yangst turns a muddy, opaque brown and +starts to spin, rolling toward the zwerf which, in turn, +melts into a green, viscous fluid and starts seeping into the ground! + +The yangst is now spinning madly and rolls over traces of the zwerf +which seem to boil away on contact! + +After the last trace of the zwerf has been vaporized the spinning +yangst slows to a stop and resumes its alabaster translucency. +" + * o?xyller t~xyller o?yangst t~yangst ,,, o-yangst m="\ +Before your startled eyes the pale xyller turns a deep crimson and, +emitting a piercing wail, slides toward the yangst! + +The yangst frantically tries to roll away but is overtaken, engulfed +and consumed by the flushed xyller! + +The xyller burps once and returns to its previous pale color, its wail +dying down to silence. + +You realize that you've been holding your breath the whole time. +" + * t?tokens v?2.0 t-tokens ,,, + * o~tokens v>2.0 v=2.0 o+tokens@0 ,,, m="\ +I understand that theft is not uncommon on Aldebaran III." + * v?13.1 c?33 o?vampire@%PREV_LOC% v~PREV_LOC.42 ,,, o+vampire m="\ +FLAP FLAP FLAP POOF!.... Suddenly, you are not alone." + * v?13.1 c?33 v>9.19 o~vampire o+vampire@%PREV_LOC% ,,, m="\ +You hear the flap of wings nearby ..." + * v?13.1 c?50 v<9.6 o~vampire o+vampire@%PREV_LOC% ,,, m="\ +You hear the flap of wings ..." + * o?vampire v~CUR_LOC.42 v?13.1 v?9.6 o-vampire v=13.2 m=" +At that moment, (6:00 A.S.T) the sun rises, and the +embarassed Vampire crumbles into dust, (lucky you)." + * v?13.1 v>9.6 v<9.19 o~vampire@42 ,,, o+vampire@42 + * o?vampire v?13.1 c?33 ,,, m="\ +The Count launches himself at you, but you dodge out of the way! +" + * o?vampire v?13.1 c?33 ,,, m="\ +The Vampire makes a dive for your neck, but misses! +" + * o?vampire v?13.1 v>NUM_CARRY.1 c?33 ,,, c=drop\ all m="\ +The Vampire make a sweeping grab for you which you frantically fend off, +dropping everything in the process! +" + insert\ token t~tokens m="You don't have any tokens!" + insert\ card o~card m="You don't have one!" + dig o~shovel m="Digging without a shovel is quite ... impractical." + translate t~dictionary m="You'd need a dictionary to do that!" + note: m=Noted + + post actions + brief v=BREVITY.-1 m="Long descriptions only once" + superbrief v=BREVITY.0 m="No long description" + verbose v=BREVITY.1 m="All long descriptions" + date|time v?9.0 m="12:01 a.m., April %8%, 2148" + date|time v<9.12 m="%9% a.m., April %8%, 2148" + date|time v?9.12 m="Noon, April %8%, 2148" + date|time v=10.%9% v-10.12 m="%10% p.m., April %8%, 2148" + axolotyl|rub\ ring c?66 m="Nothing happens." + axolotyl|rub\ ring m="Nothing happens, naturally." + read\ bottle o?bottle o?dictionary m=" + : : + : . . . . . . . . . . . . . . . . . . : + : : Bezel & Dung Fruit Blended Wine : : + : : +-----------------------+ : : + : : U | o | F : : + : : N | o @ | O o | I : : + : : C | \\ \\_|_/ / | N : : + : : L |o \\/ w \\/ o| E : : + : : E |oo { \\___/ } OO| S : : + :=--..: |ooo {=======} OOO| T : : + :=====: F |oooo \\_____/ oOOO| : : + :=====: R |ooooo /// \\\\\\ OOOOO| W : : + :=====: E + - - - - - - - - - - - + I :=--..: + :=====: L -=[ OUR FOUNDER ]=- N :=====: + :=====: K Bottled under his strict E :=====: + :=====: ' supervisions at the North R :=====: + :=====: S Groaci Bottling Company Y :=====: + :=====:.................................:=====: + :=============================================: + :=============================================: +" + read\ bottle o?bottle m="\ + : : + : . . . . . . . . . . . . . . . . . . : + : : Cgzgn & Fwuj Gtwky Cnguigi Xkug : : + : : +-----------------------+ : : + : : Y | o | G : : + : : P | o @ | O o | O : + : : D | \\ \\_|_/ / | P : : + : : M |o \\/ w \\/ o| I : : + : : I |oo { \\___/ } OO| T : : + :=--..: |ooo {===:===} OOO| V : : + :=====: G |oooo \\_____/ oOOO| : : + :=====: S |ooooo /// \\\\\\ OOOOO| X : : + :=====: I + - - - - - - - - - - - + O :=--..: + :=====: M UYS GUYPFIS P :=====: + :=====: L Cqyyngi wuigt okv vytkfy I :=====: + :=====: ' vwrgtxkvkquv cy yog Pqtyo S :=====: + :=====: T Htqcfk Cqyynkuj Dqprcub A :=====: + :=====:.................................:=====: + :=============================================: + :=============================================: +" + read\ ring\ bottle o?ring o?bottle o?dictionary m="\ +The tiny characters on the ring translate as follows: + + Handcrafted Entirely from Native Materials + by + the Magic Artisan's Collective + Crystal City, A III + + inscription I. I. Surr + materials M. X. Pensif + process P. Dequeue + engraving E. Wonts-Tunno + rubies R. Redd + idea I. M. Gonnapuke + usage test U. Thant Dothatherenow + message M. Ryeteer + + Friction activation guaranteed on clean, dry surface only +" + read\ ring\ bottle o?ring o?bottle m="\ +The tiny characters on the ring are as follows: + + Gepfbtedyaf Apyotamx dtil Peyova Leyatoems + cx + yga Lehob Etyosep's Bimmabyova + Btxsyem Boyx, E OOO + + opsbtoryoip O. O. Swtt + leyatoems L. U. Rapsod + rtibass R. Faqwawa + aphtevoph A. Zipys-Ywppi + twcoas T. Taff + ofae O. L. Hipperwja + wseha yasy W. Ygepy Fiygeygatapiz + lasseha L. Txayaat + + Dtobyoip ebyoveyoip hwetepyaaf ip bmaep, ftx swtdeba ipmx +" + read\ ring o?ring m="\ +Inside the band you find some writing in tiny letters, too small to read." + read\ dictionary t?dictionary m=\ +"The dictionary is not in itself readable like a book, +it is a machine that allows you to read documents +written in Aldebaranese dialects." + read\ card v=10.%8% ... + read\ card v+10.1 m="\ + + Galactic Credit Bureau Card #547596.6347501 + + + Issued to: J. Retief + -------------------------- + + Expires: 04-%10%-048 + -------------------------- + + Current Balance: %6%.00 G.Credits + -------------------- + +" + smoke\ cigarette t?pack v?3.1 v=3.0 m=\ +"That last butt always tastes so awful!" + smoke\ cigarette t?pack v>3.1 v-3.1 m="\ +Your head spins slightly as you light up." + smoke\ cigarette m="You're all out of smokes." + balance o?card v?6.1 m="Your account holds %6% credit." + balance o?card m="Your account holds %6% credits." + balance m="You need a card to find out your balance." + count\ cigarettes t?pack m="You have %3%." + count\ cigarettes m="You have no cigarettes." + count\ tokens t?tokens m="You have %2%." + count\ tokens m="You have no tokens." + * o~tokens v>2.0 c?50 v=2.0 ,,, m="\ +I understand that theft is not uncommon on Aldebaran III." + help|info m="\ +I will carry out any actions that you ask me to (assuming I understand what +you ask). In general, you should type commands of one or two words; like +`take card', `count cigarettes' or `quit'. To move around type the direction +you want to go; e.g. `north', `up', etc. The following commands are handy: +take, inventory, drop, quit, shell.\n" + read\ notes o~notes m="I don't see any notes here ... " + read\ notes v?17.6 v=17.0 ,,, m=\ +"At this point the notes trail off into meaningless scribbles and, thinking +back, you vaguely remember an interesting interlude with some rather illicit +drugs and two stewardesses on the trip here ... Ahhh ... Anyway, going back +to the beginning of the notes ... +" + read\ notes v?17.0 v+17.1 m="\ + Page %17% + Aldebaran III is an eighty-four percent earth normal planet which + revolves around a brilliant red star, (Aldebaran, or Alpha Tauri). + A III has an atmosphere consisting of 52%% nitrogen, 26%% helium, + 20%% oxygen and 2%% other gases, (by volume). The period of revo- + lution of A III is 18.628 Earth Standard hours which is expressed + in local time as 24 hours. The axis of A III tilts less than a + degree with respect to the ecliptic, (47.6'), providinig virtually + no variation in season and length of daylight, (sunrise is at 6:00 + Aldebaran Standard Time, sunset at 7:00 p.m. A.S.T.). +... (the notes continue, but your interest wanes) +" + read\ notes v?17.1 v+17.1 m="\ + Page %17% + The ruling species on Aldebaran III is a large, six \"legged\", (actually + \"pseudopoded\"), mammal with a roughly Humanoid torso and a perfectly + spherical \"brain-case\" containing, in most cases, a brain the size of + a filbert. (In a few, exceptional cases the brain is believed to be quite + large. This increased \"brain-power\" has no effect on intelligence but + is believed to provide the ability to alter body appearance at will.) +" + read\ notes v?17.2 v+17.1 m="\ + Page %17% + The natives of Aldebaran compensate for lack of intellect with sensitive + organs for sight and smell located on five stalk-like extremities which + radiate from the \"brain-case\". + + Aldebaranites are deeply religious. They display fierce devotion to + causes which they espouse without apparent rhyme or reason and which + they may suddenly disavow for no apparent reason. Much importance is + said to be attached to symbolic acts and objects. +" + read\ notes v?17.3 v+17.1 m="\ + Page %17% + Until the first Aldebaran-Terran trade treaty was negotiated in 2078 + by Adm. Kurasawa Perry the concepts of private property and monetary + currency were unknown. Since that time every sentient race in the + galaxy has established trade with A III but, in compliance with the + Galactic Accords of 2018, no military bases have been built on A III. + The currency in use is the Galactic Credit but \"magic\" artifacts are + still highly valued although very little is known about these artifacts. +" + read\ notes v?17.4 v+17.1 m="\ + Page %17% + Government is a representative democracy with all laws being made by the + elected governmental representative, (called \"the Rep\"), whose term of + office is 3 years unless that would cause and election to be held in a + year divisible by fourteen in which case the term of office is 6 years. + + Aldebaran law, being the manifestation of the Rep, is held in great + reverence by the populace and the punishments for infractions are + extremely severe. Because each new Rep must, during his first five + months in office, repeal all laws enacted by the previous Rep and may + not recreate any laws that a prior Rep had created no attempt will be + made here to provide do's and dont's for A III. +" + read\ notes v?17.5 v+17.1 m="\ + Page %17% + The official diplomatic language on Aldebarran is Glottus but very few, + (if any), natives are believed to speak it. Instead, approximately + 213 varieties of local dialect are used. The dialectic differences + between neighboring regions are small enough that most natives can under- + stand the dialects of all neighboring regions but rarely the dialects + of further regions. The single, underlying factor in understanding + any dialect of Aldebaran ... +" + read\ papers t?papers m=\ +"Your identity papers have a picture of you, (not flattering), and say: + + + + OFFICIAL IDENTITY PAPERS + Corps Diplomatique Terrestrienne + +NAME: Jaime Retief + ------------------------------------- +TITLE: 1st Under-Sec'y to the Amb. to the Aldebarran System + ------------------------------------- +CDT ID: # 5375865346a547 + +Affiliations: C.I.B., Hero's Guild, A.S.P.C.T., Unix User's Group, Est + + +" + drink o~bottle m="I suppose if you had a bottle you could drink" + drink m="\ +FAAAGHHH! That wine is AWFUL! It tastes like cardboard squeezings!" + why? m="Because, (natch)" + check\ pockets ,,, c=inventory m=Okay + take\ vampire o?vampire c?50 m="Now that IS a stupid idea" + take\ vampire o?vampire m="You have the strangest sex drive..." + xyzzy|sesame|abracadabra m="\ +Nice try, but that's an old worn-out magic word." + take\ ash m="The ash slips through your fingers and scatters." + * v=7.0 ,,, + + variables +1 0 temp variable (used for customs) +2 0 number of tokens +3 0 number of cigarettes +4 0 temp variable used for barkeep/map +5 0 temp for left/right hint +6 50 credits left +7 0 used to gauge activity on each command +8 1 day of the month, (April) +9 0 hour of the day +10 0 temp variable used for calculations +11 0 local variable; used in Rep's reception room & church +12 0 local variable; used in church +13 0 0: initial, 3: count, 1: vampire following you, 2: dead +17 0 the current page of notes +MAX_CARRY 6 we can only carry 6 things at once diff --git a/a3.wrld b/a3.wrld new file mode 100644 index 0000000..921c7a3 --- /dev/null +++ b/a3.wrld @@ -0,0 +1,969 @@ +: (c) P. Langston & N. Howard %W% last mod %G% -- P.S.L. games +#1 Aldebaran III Spaceport +You're in the Aldebaran III spaceport. An electrified chain link fence +surrounds the area with gates leading west and south. + south 2 + west 100 + north|east|ne|nw|se|sw m="ZZZAAAAPPPP! OUCH!" + take\ card o?card t+card m="\ +Done +Your account has 50 credits left. +(You can type "balance" any time to find current status)." + drop\ card t?card o+card@101 m="\ +Done +A southeast wind blows your credit card over the fence." + drop\ papers t?papers o+papers@2 m="\ +Done +A brisk north wind blows your identity papers away." + +#2 Waiting Room +"You are in the tiny waiting room for the spaceport. No one is around. +There is a large vending machine here with a dark window, several buttons, +and a large slot marked \"insert credit card here\"." + north|out 1 + insert\ card v<6.10 o+card m=\ +"The machine lights up, +A light blinks \"Insufficient Credit\", +and your card is spit out onto the floor." + insert\ card o+card s=2.1 m="The machine lights up" + attack\ machine m=\ +"That would only help if the machine was broken, and it's not!" + press\ button v?INP_W3.button m="Nothing happens" + press\ button m="I'm not sure which button you mean." + condoms v?INP_W1.condoms m="Let's keep this on a high, moral plane, buddy." + take\ coins o?tokens ,,, c="take tokens" + +#2.1 You're in front of the vending machine in the Spaceport waiting room. +"You are in front of the vending machine in the waiting room for the spaceport. +A credit card protrudes from a large slot and four buttons are lit: + blue button --- \"Cigarettes 10 CR\" + puce button --- \"Mystery Grab Bag 10 CR\" + red button --- \"Biorhythms 25 CR\" + grey button --- \"Exotic Coins 25 CR\"" + push v<6.10 m="-=[Insufficient Credit]=- flashes." + push\ blue\ button o~pack v-6.10 v+3.10 o+pack m="Rattle, rattle,... thunk!" + push\ blue\ button m="-=[Sold Out]=- flashes." + push\ puce\ button o~condoms v-6.10 o+condoms m="KaChunk ... Plop" + push\ puce\ button o~dictionary v-6.10 o+dictionary m="KaChunk ... CRASH!" + push\ puce\ button m="-=[Sold Out]=- flashes." + push v<6.25 m="-=[Insufficient Credit]=- flashes." + push\ red\ button v-6.25 m="KaChunk! +Your biorhythm reads: +Intellectual-medium\nPhysical-medium\nEmotional-medium\nFinancial-low" + push\ grey\ button o~tokens v-6.25 v+2.2 o+tokens m="\ +Two small, blue metal discs labelled `A S S' on one side and +`Aldebarran Subwalk Systems' on the other bounce out of the machine +and clatter onto the floor at your feet." + push\ grey\ button m="-=[Sold Out]=- flashes." + push\ button m="Push which button?" + push v?INP_WC.2 m="Push %INP_W2% what?" + push m="Push what?" + insert\ card m="Your credit card is already in the machine..." + take\ card s=2.0 t+card m="The card slips out into your hand." + +#100 Customs +"You are in a low-roofed customs building with long tables stretching between +a door at the east and a door at the west. A large sign reads + +---------------------------------+ + | --> SHOW PAPERS HERE <-- | + | --> PAY DUTY HERE <-- | + | HAVE YOU ANYTHING TO DECLARE? | + +---------------------------------+ +in a dozen languages. A serious-looking customs official is eyeing you." + declare m=\ +"\"You can't declare anything until I know your identity!\" says the official." + attack\ official m="\ +\"Relax, Terry. Violence will get you nowhere, here.\"" + * o?papers@5 s=100.2 m=\ +"\"Oh sure; you lost your papers. Well, you had better find them or +there will be a stiff fine!\" The official doesn't seem too convinced." + * 1 o~papers m=\ +"\"What? No papers? You're in trouble, Terry! +Deportation is too good for your kind, but...\"\n" + +#100.0 East End of Customs Building + e 1 m="\ +The official looks a little non-plussed as you back through the door." + show\ papers o?papers s=100.2 m="\"Hmm, a Terry\" mumbles the official" + * c?50 m="\"Your papers, pleese\", lisps the official" + +#100.1 West End of Customs Building + w 3 m="\ +The official makes a little circle by his ear with his finger +while watching you leave." + show\ papers o?papers s=100.2 m="\"Ugh, a Terry\" mumbles the official" + * c?50 m="\"Your papers, pleese\", lisps the official" + +#100.2 +"\"Have you anything to declare?\" snaps the customs official" + sorry m=\ +"\"No reason to apologize, we're used to the ways of Terries...\"" + thanks m="\"No thanks necessary... I'm paid to do this.\"" + east 1 s=100.0 m=\ +"\"...and don't come back, Terry...\", mutters the official as you leave." + west t?card m=\ +"\"I don't believe you've declared that credit card\", admonishes the official." + west t?condoms m=\ +"\"You wouldn't try to slip a package of contraceptive devices through +customs, would you?\" smirks the official." + west t?dictionary m=\ +"The customs official stops you, saying, +\"That looks like a rather new book you're carrying!\"" + west t?cigarettes m=\ +"\"Too bad those aren't Terry cigarettes, but you'll have to declare +them anyway\", you are reminded." + west 3 s=100.1 m=\ +"\"Welcome to Aldebaran III, I suppose\", +intones the official as you pass through." + bribe m="You haven't got anything that the official wants." + out m="Which way out? East or west? (the spaceport is east)" + no m="\"If you really have nothing to declare you may go.\"" + * t?papers t?notes v?NUM_CARRY.2 ... m=\ +"I don't believe you have anything left to declare, you may go..." + declare\ papers|declare\ notes|declare\ tokens|show\ papers m=\ +"\"There is no duty on those\", barks the exasperated official." + declare\ card t?card v-6.5 o+card@3 m=\ +"\"Yes\", says the official and then mutters to himself, +\"credit card -- five credits\"." + declare\ condoms t?condoms v-6.1 o+condoms@3 m=\ +"The guard smiles discreetly and scribbles a \"1\" on his pad." + declare\ dictionary t?dict v-6.3 t?dict o+dict@3 m=\ +"\"Hmm, looks pretty valuable\", he says as he scribbles a \"3\"." + declare\ cigarettes v-6.1 t?cigarettes o+cigarettes@3 m=\ +"\"Filthy habit\", the official mutters, writing a \"1\" on his pad." + declare\ innocence m="Oh sure; we're all innocent of something, eh?" + declare m="Declare what? Never heard of it..." + +#3 Paved Road Outside Door +"You're on a broad, paved road which dead ends before a door into a wide, +low customs building to the east with a chain link fence attached to it. +You are right outside a large corner door with a dilapidated electic sign: + + * * * * * * * * * + * * * * * + * * + * CLUB 407 * * + * + * * * * * * * + * * * * + * * + +To the north an alley winds between this building and another small building +to the northwest." + in|ne 4 + * t?map t-map ,,, m=\ +"The map in your hand glows briefly. You catch a glimpse of a confusing +maze of roads leading west toward an urban area and the scrawled words: + + +\"Find Ignarp in Crystal City + -- +secret password is 'Axolotyl'.\" + + +Then the map turns into sooty ash." + north 5 v>6.30 t?card o+ruffians@4 o+card@4 v-6.20 m=\ +"As you step into the alley two ruffians bump into you & make profuse +apologies... (better check your pockets)." + north 5 + east 100 + west 6 + nw 18 + +#4 Spaceport Bar + buy o?%INP_W2% m="The %INP_W2%'s not for sale." + buy m="\"I'm all out of %INP_W2%\", the bartender insists." + read\ sign ... m=\ +"The sign says \"Jsu Snarret POTE kirs meawed jokero quakonk!\" +(obviously some local dialect)." + read\ sign|translate\ sign t?dictionary m=\ +"Checking your dictionary you discover that the sign says: + \"Due to new liquour law all Terrans MUST show papers before leaving!\"" + show\ papers t~papers m="You don't have any..." + take\ card o?ruffians o?card t~card m="\ +As you reach for the card the smaller of the two ruffians quickly steps on +it, winking at his buddy and feigning nonchalance." + attack\ ruffians o-ruffians t+card t+tokens v+2.2 m="\ +\"My! What lovely sandals!\" You exclaim as you pick up the small thug by all +six pseudopods and dangle him over the pitcher of foul smelling brew at their +table. \"B..But I thought you Terries were pacifists! Let go of me!\" he +squeals. \"Oh, you're quite right; I beg your pardon\", you agree, dropping +him into the pitcher eyestalks first. As the other ruffian starts to get up +from the booth to attack, you flick the pitcher containing his cohort into +his lap and the two of them disappear under the table in a mass of writhing +pseudopods and eyestalks. Finally extricating themselves the two ruffians +escape out the door as you pocket their valuables." + +#4.0 +"You are in the dimly-lit Spaceport Bar on Aldebaran III, which appears to +be nearly deserted except for you and the burly bartender whose eyestalks +keep twitching suspiciously in your direction. A large sign hangs over +the door to the south." + show\ papers s=4.1 m=\ +"The bartender checks your papers and grunts in amazement." + buy\ drink v<6.5 m="A drink costs 5 credits and you ain't got it." + buy\ drink v-6.5 m=\ +"It cost 5 credits and tastes like kerosene but you slurp it down!" + bribe\ bartender o~dictionary v-6.25 o+dictionary m=\ +"The bartender solemnly folds your offering into his apron and leaves +something sitting on the bar." + bribe\ bartender v-6.10 m=\ +"The bartender solemnly folds your offering into his apron." + hit\ bartender m=\ +"No way! You may be big and strong, but with those six huge manipulative +members he could turn you into a bloody mary!" + ask m=\ +"The bartender doesn't seem too friendly towards you at the moment." + south|out m=\ +"With an amazingly graceful movement for someone his size, +the bartender leaps over the bar and blocks your exit +while pointing at the sign!" + +#4.1 +"You are in the dimly-lit Spaceport Bar on Aldebaran III, which appears to be +nearly deserted except for you and the burly bartender who has brought you a +drink, (on the house), after learning that you are a user of UNIX software." + out 3 m="The bartender waves a pseudopod in farewell." + ask v?4.0 v=4.1 o+map m=\ +"The barkeep feigns ignorance, but leaves something lying on the bar." + ask v>4.0 m=\ +"The bartender gives you a worried look, +probably thinking that you ask too many questions." + read\ map o?map m="It's too dark in here to decipher it." + drink m="Guzzling these free drinks isn't a bad life." + hit\ bartender m="\ +The barkeep is so BIG that your hardest blow strikes him as a brotherly pat +which he returns with great enthusiasm. When the birds stop chirping and +the stars dim a little you grope your way back to a barstool." + +#5 Dark Alley +"You're in a dark alley between buildings. To the south you can see a paved +road that passes in front of the buildings; to the north the alley becomes +even darker." + north 101 + south 3 + +#101 Bum's hangout +"You're in a small cul-de-sac at the end of a dark alley. Even your Terran +nose can clearly detect the overwhelming smell of old urine here and under +your feet you feel damp cardboard. You should probably add the observation +that Aldebaran society includes derelicts to your notes." + north m="Ouch! An electrified chain-link fence blocks your way." + south 5 + east|west m="The wall of a building blocks your way." + take\ cardboard|move\ cardboard m=\ +"The cardboard is so soggy with urine that it falls apart in your hands." + add\ observation o?notes m="\ +Since you have no pen or pencil perhaps you should just remember that..." + +#6 Paved Road +"You're on a paved road that leads east toward the Spaceport and west over a +hill toward some glinting towers in the distance." + east 3 + up|over\ hill|west|towers 7 + +#7 Lumbaga Lane +"You're on Lumbaga Lane, which is on the periphery of a very confusing traffic +interchange completely surrounded by trees. It's impossible to tell north +from south here, you can only tell left from right." + * v?5.112 v=5.0 m="Do you want a hint?" + yes v?5.0 v=5.1 m=\ +"Although the consonants are not wrong, only the vowels are right. +(When choosing street names.)" + left v+5.16 8 + right v+5.16 7 + n|s|e|w m=\ +"Compass directions have no meaning here, BUT going up and over the hill +will get you back toward the spaceport." + up|over 6 + +#8 Anchor Avenue +You are Ambling along Anchor Avenue + left 7 + right 9 + +#9 Retief Road +You are Rambling 'Round Retief Road + left 10 + right 7 + +#10 Ptaav Place +You are Passing Ptaav Place + left 11 + right 7 + +#11 Endore Expressway +You are Enjoying Endore Expressway + left 7 + right 12 + +#12 Ytterbium Yard +Yes! Yt's Ytterbium Yard + left 7 m="Not always..." + right 7 m="Not always..." + sometimes|maybe|both 13 m="Right!!! er, Correct, that is...\n" + +#13 Crystal City Tourist Information (Hoople St.) +"You're in a City fabricated almost entirely from beautiful crystal. +Directly in front of you is a booth marked: + \"Hoople St. Tourist Information 2 CR\" +with a microphone and speaker set into its wall above a large slot." + insert\ card v<6.2 o+card m=\ +"A mechanical voice drones: +\"Insufficient credit\" +and your card pops out." + insert\ card o-card s=13.1 m=\ +"A mechanical voice drones +\"Name the place or person you seek\"." + down 14 + +#13.1 +"Directly in front of you is a booth marked: + \"Hoople St. Tourist Information 2 CR\" +with a microphone and speaker set into its wall above a large slot containing +your credit card. A hum is audible through the speaker." + balance m="Your account now holds %6% credits." + insert\ card m="Your card is already in the machine" + * v<6.2 o+card s=13.2 m=\ +"*** Insufficient Credit Remaining *** (your card pops out)" + ignarp v-6.2 m=\ +"*** Ignarp is where you find Him. ***" + church|temple v-6.2 m=\ +"*** Subwalk to Imperium Worlds Station, rub ring and ask directions. ***" + pouncetrifle v-6.2 m=\ +"*** Amb. Pouncetrifle is usually at the Terran Embassy. ***" + terran\ embassy v-6.2 m=\ +"*** Take the subwalk to Boardwalk Station and walk two blocks east. ***" + subwalk v-6.2 m=\ +"*** If it were a snake it would bite you. ***" + spaceport v-6.2 m=\ +"*** Take the subwalk to Spaceport Station. ***" + rep v-6.2 m=\ +"*** The Rep lives at the end of the line. ***" + take\ card s=13.2 t+card m=\ +"*** Have A Nice Day *** drones the machine." + * c?30 o+card s=13.2 m=\ +"*** Bad Question Syntax *** +(the machine assumes that you are talking to it and spits out your card)" + +#13.2 +"Directly in front of you is a booth marked: + \"Hoople St. Tourist Information 2 CR\" +There is a stairway leading down." + +#14 Change Booth +"You're at the foot of a broad flight of stairs in front of a small, +armored booth with a sign on it. Weird, fat lettering decorates the +entire chamber in faded polychrome. To the south is an iron gate with +a small slot in it." + south 15 + up 13 s=13.2 + read\ sign m=" + )-------------------( + < V U L I P T > + < Jux nepa, qmieti? > + )-------------------(\n" + translate\ sign m=" + )-------------------( + < T O K E N S > + < How many, please? > + )-------------------(\n" + read\ lettering m="\ +Although badly faded, it seems to say:\n +JOdH 83 \% G #\"! &#! !ZZZZZZ! + \"!# U6 TRG127 X @@@@ PRNDL 103 G AB \"$ + H OiSaC 6L9 Y @ @ @ @ @ A RAC \"# + U @!& 9T Z ! @@@ @ @ @@@ #$&! L ADA &$ + U Dollo88 I Z # @ @ @ @ @ K BRA ! + N23 Y POP92 @@@ @ @ 119 213 +" + translate\ lettering o+dictionary m="\ +The all-dialect dictionary hums softly for a moment, +then hums much louder, +then starts to smoke and gets VERY hot, so you drop it." + how\ much|price m="\"Tokens cost a credit each, of course!\"" + buy t~card m="You can't buy anything without your credit card!" + buy\ N1\ tokens v<6.%INP_N1% m="You haven't got enough credit for that many!" + buy\ N1\ tokens v-6.%INP_N1% v+2.%INP_N1% t+tokens m="You now have %2% tokens" + buy\ N1 m="Buy %INP_N1% what?" + buy\ tokens m="\"Buy how many PLEASE! buy 1 token? buy 2 tokens?\"" + buy m="You have to tell me what you want to buy ..." + +#15 Turnstile +You're standing at an iron gate with a small slot in it. +To the north is a small armored booth and a flight of stairs leads upward. + north 14 + up 13 + through|gate|in m="The gate is securely closed and bars your way." + attack\ gate m="Ouch! (It doesn't budge)" + drop\ token|insert\ token 16 v>2.0 v-2.1 m=\ +"The gate lets you through." + +#16 Hoople St. Station +"You're on the platform of the Hoople St. subwalk station. There is a moving +walkway going east and a walkway going west from here." + east 17 + west 19 + out 14 m="The one-way door clangs closed behind you." + +#17 Spaceport Station +"You're at the Spaceport subwalk station. A moving walkway goes west. +This is the end of the line going east." + west 16 + out 18 m="You pass through a heavy metal gate." + +#18 Heavy Metal Gate Building +"You're inside a small building. There is a heavy metal gate with a small +slot in it to the north and a door to the southeast." + insert\ token 17 v>2.0 v-2.1 m="The gate swings open and you enter." + out|se 3 + insert\ card m="The slot is too small for your credit card." + n m="The gate won't let you through." + attack\ gate m="You'll only hurt yourself that way." + +#19 Boardwalk Station +You're at the Boardwalk subwalk station. Moving walkways go east and west. + east 16 + west 30 + out 20 m="The iron gate clangs shut behind you." + +#20 Boardwalk Toll Gate +You're standing between a heavy iron gate with a small slot in it and stairs +leading upward. + up 21 + insert\ token 19 v>2.0 v-2.1 m="The gate lets you through." + +#21 Boardwalk +"You're on a north-south street named \"Boardwalk\" which seems strange +since the street is made of shiny white paper. An intersecting street +runs east-west. Sounds of shouting come from the east and vertical bars +can be seen to the west." + north 27 + south m="under construction" + east 22 + west t~keys m=\ +"You spend a little while \"Just Visiting\" but since you don't have any +keys to open the jail, you get bored and go back." + west 99 o-keys m=\ +"You slip your key into the lock and step into the cell." + down 20 + +#99 In Jail +You're in jail, the warden has taken your keys away, (natch), so you can't +get out... + help m=Nope + bribe v<6.1 m="You don't have any credits to bribe anyone with..." + bribe 21 v-6.1 t+keys m="\ +Fortunately you're a slick talker and get away with a very small bribe, +(and your keys)." + +#22 Park Place Riot +"You're in a lovely tree-lined square with a sign \"Park Place\". The +square is filled with angry Aldebarrans shouting and waving signs. +You had better not tarry here since you're not sure at whom their +anger is directed!" + read\ signs m=\ +"The signs are in the same dialect in which all new signs seem to be written." + translate\ signs m=\ +"The signs say things like \"End the Terran Terror!\", \"Death to TerrySymps\", +and \"Send Them Back Where They Came From!\"" + east 23 + west 21 + tarry 23 t-token t-ring t-pack t-dictionary m=\ +"\"You're asking for it Terry\", says a voice behind you. +You are beaten unconscious. Finally you are rescued by a +disguised TerrySymp and dragged out of harm's way." + * c?33 23 t-token t-ring t-pack t-dictionary m=\ +"Someone in the mob sees you and shouts `Kony Ick!' (`There's one!') +In a rush of animal anger the mob beats and robs you. +Finally you are rescued by a Disguised TerrySymp and dragged away." + +#23 Terran Embassy +"You're standing in the ruins of what used to be the Terran Embassy. Marble +and alabaster rubble is everywhere. From beneath a large block of polished +granite a bloody hand is sticking out, wearing a ruby ring that you've seen +hundreds of times as you sat listening to Amb. Pouncetrifle pompously drone +on about \"How-Diplomacy-Ought-To-Be-Carried-Out\" while he fidgets with his +ring." + weep m="Boo Hoo" + save\ pouncetrifle m="I'm afraid he's very dead." + take\ ring t+ring s=23.1 m="\ +The ring slips off easily, being greased as it is with blood." + take\ hand|take\ body m="\ +You tug, but it's stuck under that block, which is too heavy to move." + west 22 + dig c?66 m="You dig through some part of the rubble and find nothing." + dig s=23.2 m="As you dig you find a small stairway leading down." + take\ rubble|take\ alabaster|take\ granite m="The pieces are too big" + +#23.1 +"You're standing in the ruins of what used to be the Terran Embassy. Marble +and alabaster rubble is everywhere. From beneath a large block of polished +granite a bloody hand is sticking out." + * ,,, + +#23.2 +"You're standing in the ruins of what used to be the Terran Embassy. Marble +and alabaster rubble is everywhere. At your feet an opening reveals a +narrow stairway leading into darkness." + dig m="You dig through more of the rubble but find nothing." + down 24 + +#24 Dark Tunnel +"You're in a dark tunnel with light shining in at the head of a small +set of steps leading up and a marble block with a crack running all the +way around it blocking the passage to the east." + up 23 + east m="The marble block fills the passage." + press|push 16 m=\ +"You strain against the block and it suddenly pivots. You're caught +off balance and rush headlong by it only to find thin air under your feet. +You drop 12 feet as you hear the block pivot back with a thud." + +#27 GO + south 21 + pass s=27.5 v+6.50 m="Collect 200 dollars (50 credits)." + move\ stones m="That would be cheating!" + +#27.0 +"You're on another paper covered street named \"GO\". The paper is marked +with a gridwork and some black and white stones are on it in a pattern: + a b c d e f g + 1 + + + + + + + + 2 + @ @ @ @ @ + + 3 + @ O O O @ + + 4 + @ + + + @ + + 5 + + + O + + + + 6 + + + + + + + <-- this one is called g6 +You can collect some credits here if you can figure the right move for @." + d4 s=27.1 + c4|e4|b5|c5|e5|f5 s=27.3 m="And O responds with d4 -- you've blown it." + +#27.1 +" + a b c d e f g + 1 + + + + + + + + 2 + @ @ @ @ @ + + 3 + @ O O O @ + + 4 + @ O @ + @ + And O responds with c4. + 5 + + + O + + + + 6 + + + + + + + Now where?" + c5 s=27.2 + e4|e5 s=27.3 m="And O responds with b5 or c5 and you've blown it." + d6 s=27.3 m="And O responds with c5 and you've blown it." + +#27.2 +" + a b c d e f g + 1 + + + + + + + + 2 + @ @ @ @ @ + + 3 + @ O O O @ + + 4 + @ O + O @ + And O responds with e4 taking your stone from d4. + 5 + + @ O + + + + 6 + + + + + + + Now where?" + e5 s=27.4 v+6.10 m=\ +"Nice going! O is in atari and can't get away. +You win the 10 credit first prize!" + d4 m="Illegal play." + d6 s=27.3 m="Then O plays e6 and you've blown it." + +#27.3 +"You're on a paper covered street named \"GO\". The paper is marked +with a gridwork and black and white stones are jumbled on it in a pattern +that looks like someone got mad and threw them all around. + a b c d e f g + 1 @ O O @ @ @ O + 2 O @ @ @ @ @ @ + 3 @ @ O O O @ O + 4 @ @ @ O @ @ @ + 5 O @ O O @ O O + 6 @ O @ O @ O @ " + south 21 s=27.0 + +#27.4 +"You're on a paper covered street named \"GO\". The paper is marked +with a gridwork and some black and white stones are on it in a pattern: + a b c d e f g + 1 + + + + + + + + 2 + @ @ @ @ @ + + 3 + @ O O O @ + + 4 + @ O + O @ + + 5 + + @ O @ + + + 6 + + + + + + + " + b5|f5|d4|d6 m="You don't seem to know when to give up..." + +#27.5 +"You're on a paper covered street named \"GO\". The paper is marked +with a gridwork and some black and white stones are on it in a pattern: + a b c d e f g + 1 G O + G G G O + 2 O G G G G + + + 3 G G O + O G O + 4 + + G O G + G + 5 O G O + G O O + 6 G O G O G O G " + pass v-6.10 m=\ +"Collect 200 dollars, OOOPS! you landed on Chance! Pay poor tax $240..." + +#30 Imperium Worlds Station +"You're on the platform of the Imperium Worlds subwalk station. This +station is built entirely from bright white plasmeld and has a spotless, +almost antiseptic cleanliness." + out m="I don't think you're quite clean enough for this neighborhood..." + ask o~native m="Ask who? You're the only person here..." + rub\ ring o?ring o~native o+native m=\ +" P O O F ! A very surprised native appears, +in the act of drying his back with a large bath towel." + ask o?native o-native m=\ +"The native replies, +\"Cleanliness is next to godliness\", +then notices your general grubbiness, grimaces and disappears again." + clean|wash|bathe 31 m=\ +"You step into the cleverly disguised autobath and +as the sonic scrub begins ... +the bath starts to spin...\n... +You are tingling all over (and dizzy) by the time the bath dumps you out +on the street." + take\ native m=\ +"I'm not sure how you mean that but in any case it won't work." + east 19 + west 98 + drop\ dirt|shit|piss m=\ +"An alarm sounds and mechanical hands roughly grab you while they swiftly +clean up the mess and then drop you back on the subwalk platform." + +#31 Cleanliness Way +"You're on a street of gleaming white plasmeld. There is not a spot of dirt +anywhere. A lovely building of slightly alien design is visible to the west +and a bridge is visible to the east. There is a gate set in the wall with +a small slot next to it." + insert\ token 30 v>2.0 v-2.1 m="The gate lets you through." + drop\ dirt|shit|piss 30 m=\ +"An alarm sounds and mechanical hands swiftly clean up the mess and +then roughly grab you and deposit you in a hidden chute." + * c?20 ,,, m="\ +You notice a fleck of dust fall from the sky only to be deposited in a hidden +chute by mechanical hands." + west 32 + east 34 + +#32 Worship House Courtyard +"You're in the courtyard of a house of worship, a lovely, many-sided +building. A large door to the north is invitingly open and a large gate +stands open to the east." + north 33 s?33.0 m=\ +"As you pass through the door it silently swings closed." + north 33 + east 31 + +#33 House of Worship + south|out m="You can't open the door." + +#33.0 +"You're in a magnificent seven-sided room with rows of pews in +concentric heptagons facing the center. A door to the south is +tightly closed. A small, gnarled native is standing in the center +of the room and looking expectant." + ask|help m="\ +\"Why should I help you? I don't even know who you are\", the native states." + retief m="\"I don't believe you.\"" + show\ papers o?papers m="\ +\"Papers can always be forged\" he counters." + name|who\ are\ you m=\ +"The man's face turns purple with effort as he answers, +\"My name iss Igna... +my name iss Ig... +Arrrrgh! I cannot lie here, my name iss ... R. Nixon Shilth!, +To defend yoursself, soft one!\" +So saying, the man crouches as if to leap at you..." + axolotyl s=33.1 m="\ +The man fades out and in and out and then back in as a tall woman and out +again and finally fades back in as a strange being with five eyestalks +wearing orange, gold and green polished armor plate. + +\"Ah! That musst be Ignarp'ss ssecret messsage!\" he crows, \"Many thankss, +littermate of genetic inferiorss.\" + +Gleefully twitching his eyestalks the man scuttles through the south door." + attack\ man|attack\ shilth s=33.2 v=12.0 m=\ +"As you battle with the man he starts to fade in and out and finally +undergoes an amazing metamorphosis into a beautiful woman! + +\"Ignarp's the handle\", she says, \"Thanks for distracting Shilth +while I regained control. I'm afraid I foolishly let him slip +a Groaci drug into my prune juice which left me bound by a metamorph- +dominance spell which I couldn't break without a little distraction. +I'd be glad to return the favor ...\"" + +#33.1 +"You're in a magnificent seven-sided room with rows of pews in concentric +heptagons facing the center of the room. A door stands open to the south." + south|out 32 + +#33.2 +"You're in a magnificent seven-sided room with rows of pews in concentric +heptagons facing the center. A door to the south is tightly closed. +A beautiful woman is standing in the center of the room looking expectant." + take\ woman|kiss\ woman|fuck\ woman m="That hardly seems appropriate. +Who do you think you are, anyway? James Bond?" + ask v?12.0 m=" +I'd like to help you, whoever you are, but I'm not sure I should..." + ask v?12.4 m="That's all I know about it, I'm afraid." + axolotyl v=12.1 m=\ +"So you're Retief from the CDT? Perhaps you'd like to hear the story +behind the Aldebarran anger at Terrans?" + no|maybe|perhaps v>12.0 v<12.4 ... c=yes m="\ +Well, I'll tell you anyway" + ask ... c=yes + yes v?12.1 ... m="\ +Mr. Shilth, whom you've already met, is interested in acquiring the grounds +on which the Terran Embassy stands to subdivide into condominiums for +vacationing Groaci Peace Enforcers. Because the land can't be bought while +the Embassy still occupies it, Shilth is hoping to have the Terran Embassy +forcibly removed. Disguised as a native trader, he sold a set of \"Native +Art Objects\" to your Ambassador Pouncetrifle." + yes v?12.1 v=12.2 m="\ +Unfortunately, the objects were stolen from the Rep's Meeting Hall, the +one truly sacred spot on Aldebarran III, which the thieves desecrated with +obscene slogans. Ambassador Pouncetrifle learned of all this when he +proudly displaying them at an Embassy reception. Naturally the Ambassador +was imprisoned. After much verbal footwork the Ambassador convinced the +Rep that the whole matter was a misunderstanding. The Rep graciously +agreed that matters might be set to rights by the return of the objects +and the payment of a token fine of 1,000 galactic credits. +Shall I go on?" + no v?12.2 ... c=yes m="\ +Well, I will anyway; there's no stopping me now ..." + yes v?12.2 ... m="\ +The Ambassador paid most of the fine with the 985 credits he was carrying with +him, (having expected to make further art purchases), and was released from +confinement to gather the remaining 15 credits and the missing objects. +Returning to the Embassy via Park Place the Ambassador made the mistake of +trying out his Aldebarran-English phrase book on a native he believed to be +participating in a quaint street fair. He has not been heard from since, but" + yes v?12.2 ... v=11.31 v-11.%8% + yes v?12.2 v>11.1 ... v=12.3 m="\ +the deadline for returning the objects is only %11% days away and Shilth's +agents are reported to have stolen the objects again!" + yes v?12.2 v?11.1 ... v=12.3 m="\ +the deadline for returning the objects is only one day away and Shilth's +agents are reported to have stolen the objects again!" + yes v?12.2 ... v=12.3 m="\ +the deadline for returning the objects is only %9% hours away and Shilth's +agents are reported to have stolen the objects again!" + yes v?12.3 ... v=12.4 m="\ +If you can find the missing objects and present them to the Rep with the +final 15 credit payment the uprising will probably be averted. + +The three objects are: + a green Zwerf + an alabaster Yangst + and a pale Xyller +They are rumored to be hidden in the graveyard near Pont St. Michel." + thanks m="\"No thanks necessary, I'm still in your debt.\"" + open\ door|leave s=33.1 m=\ +"\"I can return the favor you've done me by helping you leave.\", +so saying, the woman presses a hidden button and disappears." + +#34 West end of Pont St. Michel +You are at the western end of a bridge that has been cleaned so often that +it has become quite flimsy. To the west you see a street made of gleaming +white plasmeld. + w 31 + e|cross v>NUM_CARRY.1 m="\ +The bridge won't support you and all your baggage. +You'll have to drop something to cross safely." + e 35 + +#35.0 East end of Pont St. Michel +You are at the eastern end of a bridge that has been cleaned so often that +it has become quite flimsy. To the east you see a rambling graveyard +through a tall metal gate which is locked. + e m="The gate is locked" + w|cross v>NUM_CARRY.1 m="\ +The bridge won't support you and all your baggage. +You'll have to drop something to cross safely." + w 34 + unlock t~key m="Without a key? Don't be silly!" + unlock s=35.1 o-key m="\ +You fight with the rusty lock which finally turns and then freezes up. +The gate creaks open." + +#35.1 East end of Pont St. Michel +You are at the eastern end of a bridge that has been cleaned so often that +it has become quite flimsy. To the east you see a rambling graveyard +through a tall metal gate which is standing open. + e 36 + w v>NUM_CARRY.1 m="\ +The bridge won't support you and all your baggage. +You'll have to drop something to cross safely." + w 34 + take\ key|lock m="\ +The lock seems permanently stuck, and your key is in it." + +#36 You're in a graveyard. +You're in a graveyard. + n 39 + s|e 36 + w 38 + nw 40 + dig m="You dig down to some bones which turn to ash." + +#36.0 + dig c?50 s=36.1 o+zwerf m="\ +You break through into an open pocket containing a green, vibrating object." + +#36.1 +You're in a graveyard. There is a small hole here. + dig c?50 s=36.2 o+xyller m="\ +You break through into an open pocket containing a pale, cold object." + +#36.2 +You're in a graveyard. There is a large hole here. + dig c?50 m="All you find is more dirt." + +#37 You're in a graveyard. +You're in a graveyard. + n|s 37 + e 41 + w 38 + dig s=37.1 m="You dig down to some bones which turn to ash." + +#37.1 +You're in a graveyard. There is a small hole here. + dig c?50 m="All you find is more dirt." + +#38 You're in a graveyard. +You're in a graveyard. + n 38 + s 37 + e 39 + w 36 + dig s=38.1 m="You dig down to some bones which turn to ash." + +#38.1 +You're in a graveyard. There is a small hole here. + dig c?50 m="All you find is more dirt." + +#39 You're in a graveyard. +You're in a graveyard. + n 37 + s 38 + e 36 + w 39 + dig s=39.1 m="You dig down to some bones which turn to ash." + +#39.1 +You're in a graveyard. There is a small hole here. + dig c?50 m="All you find is more dirt." + +#40 You're in a graveyard. +You're in a graveyard. + n 36 + s 38 + e 39 + w 40 + dig s=39.1 m="You dig down to some bones which turn to ash." + +#40.0 You're in a graveyard. + dig c?50 s=40.1 o+yangst m="\ +You break through into an open pocket containing an alabaster object." + +#40.1 +You're in a graveyard. There is a small hole here. + dig c?50 m="All you find is more dirt." + + +#41 Crypt Entrance +You're at the entrance to a small, stone building. You can hear a +shrill twittering sound from within. + w 37 + in|e 42 + +#42 Inside Crypt +You're inside an ancient crypt of oddly familiar design. It is dark and +gloomy here with cobwebs hanging from every wall. Although there are no +religious articles visible there is a large black coffin sitting on the +ground. There are doorways to the east and west. + w 41 + e 35 + take\ coffin m="Even with your Herculean strength that's not possible." + +#42.0 + open\ coffin v>9.5 v<9.20 m="\ +The lid seems to give a little ... +but then snaps back in place." + open\ coffin o~vampire v?13.0 o+vampire m="\ +The lid seems to give a little ... +and then springs off as a small bat escapes from the coffin. +You hear footsteps approach from behind you ... +" + hello|* o?vampire v?13.0 v=13.3 m=" +The count speaks to you in a charming voice with just the sightest +accent: \"Velcome! It is such a pleasure to meet a fellow Terran in +these lonely parts. Vould you like to rest for a vhile?\"" + no o?vampire v?13.3 m="\"Vell, maybe later, then ...\"" + w o?vampire ,,, m="\ +The count smiles and bows graciously as you leave." + e o?vampire ,,, v=13.1 m=" +His face contorting with rage, the Count speaks again: +\"So, you refuse the hospitality of the Prince of the Wallichans, do you? +You shall bleed for this, Terry! ... um, that is ...\", and vanishes." + +#98 Government Center +"You're in the Government Center subwalk station. This is the end of the +line going west. It is rather dingy and appears to be little used. +There are several signs here and doors at both ends of the platform with +gates and small stairways leading up." + n|left m="The door is chained closed." + s|right 97 m="The gate clangs shut behind you." + e 30 + w m="End Of The Line -- get it?" + up m="Which way up? North? South? Left? Right?" + read\ signs m="\ +A multi-lingual sign overhead says: + \" <---- to Meeting Hall ---< >--- to The Rep ----> \" +The door at the north end of the station bears another sign that reads: + \" Meeting Hall exit closed \" +" + +#97 The Rep's House +"You're in the foyer of The Rep's house. There is a stairway going down +and a large, open door at the north end of the hall." + down 98 m="You sneak through the gate and into the station." + n 96 v=11.12 + +#96 Rep's Reception Room +"You are in the presence of the Rep. \"What do YOU want?\", he growls." + s 97 + * v-11.1 ,,, + * v?11.10 ,,, m="\ +\"I haven't got all day, you know; I'm VERY busy!\"" + * v?11.6 ,,, m="\ +\"If you're just going to waste my time ... \" +(The Rep wiggles his eyebrows meaningfully)" + * v?11.2 m=" +\"I think he needs a priest or a psychiatrist, like most Terries\", +mumbles the Rep." + * 98 v?11.1 m=" +\"Throw the bum out\", he mutters to a LARGE native who appears beside you +wearing `No-Noyz' sneakers and little else. You bounce twice on the stairs +on your way down." + i\ want m="\"Who cares what YOU want, Terry?\"" + want m="\ +\"Want, want, want! You Terries never talk about anything else!\"" + talk m="\"Talk's cheap\", he grumbles." + drop m="\"Don't go dropping things on my good carpet\", growls the Rep" + return|give v=11.15 ,,, + return\ xyller|give\ xyller o+xyller m="\"My Xyller!\", he exclaims." + return\ yangst|give\ yangst o+yangst m="\"My Yangst!\", he crows." + return\ zwerf|give\ zwerf o+zwerf m="\"My Zwerf!\", he coos." + return\ credits|give\ credits o~xyller m="\ +Unless you're going to return my Xyller you may as well keep the credits." + return\ credits|give\ credits o~yangst m="\ +Unless you're going to return my Yangst you may as well keep the credits." + return\ credits|give\ credits o~zwerf m="\ +Unless you're going to return my Zwerf you may as well keep the credits." + return\ credits|give\ credits v<6.15 m="\ +You don't have the fifteen credits, but I can see you mean well ... perhaps, +if you could figure out how to pass go you could get a few more credits..." + return\ credits|give\ credits -2 m="\ +\"You Terries aren't so bad after all\", admits the Rep as he flicks a +switch that cuts the power to all the androids that were leading the +uprising, \"Why don't you stay for dinner?\". Which, of course, you do." + diff --git a/castle.misc b/castle.misc new file mode 100644 index 0000000..0e36a9d --- /dev/null +++ b/castle.misc @@ -0,0 +1,194 @@ +" +Seated late one evening in front of the television, you're startled to notice +that instead of the fuzzy, distorted picture of cowboys and indians that +you're used to seeing on your beat-up set, your television screen is display- +ing an unusual picture of a crossroads with crystal clarity. + +\"If only life were that clear-cut\", you mutter as you heave yourself out of +your armchair -- only to discover that your room has become very hazy and dim. +A sudden fit of vertigo seizes you and as you struggle to regain your balance +you find yourself falling forward ... tumbling blindly ... + +Clutching frantically for support, your hand grasps the channel selector knob +which spins wildly and then snaps off with a twang as you fall into and +through the television screen ... +" + + words (objects) +channel\ selector\ knob 0 -1 +knob 1 +Wander\ instruction\ guide 0 -1 +guide 1 +red\ apple 0 3 +apple 1 +purple\ pear +pear 1 +boat 0 8 +rope 0 14 +keys 0 16 +ladder 0 12 +huge\ balloon 0 27 +balloon 1 +cow\ (dead) 0 26 +butcher\ knife 0 29 +knife 1 +shovel 0 11 +jewels 0 22 +mace 0 +dragon 0 0 +winebottle 0 50 +sacks\ of\ potatoes 0 64 +potatoes 1 +gideon\ bible 0 63 +bible 1 +signet\ ring 0 66 +ring 1 +gossamer\ gown 0 67 +gown 1 +30\ foot\ long\ wig 0 71 +wig 1 +distressed\ damsel 0 69 +damsel 1 +wooden\ match 0 29 +match 1 +ugly\ frog 0 21 +frog 1 +wild\ strawberries 0 18 +strawberries 1 +berries 2 + + words (verbs) +break +smash 1 +hit 2 +attack 3 +eat +taste 1 +enter +in 1 +leave +out 1 +row +float 1 +navigate 2 +sail 3 +board 4 +ride 5 +fuck +lay 1 +screw 2 +go +move 1 +travel 2 +walk 3 +tie +attach 1 + + + pre actions + * v-2.1 ,,, + up|climb|down t?boat m="Carrying a boat? Get serious!" + dig t~shovel m=\ +"Digging without a shovel is quite impractical. Even with a shovel, ... +Well, who knows?" + lock|unlock t~keys m="With no keys? No way!" + * t?damsel o?frog ,,, t+frog o+damsel m="Flirt..." + n|s|e|w|u|d|ne|se|nw|sw v-1.1 ,,, + * v?1.15 v-1.1 ,,, m=\ +"You're getting awfully hungry; if you don't eat soon you'll starve! +" + * v?1.6 v-1.1 ,,, m="You are near starvation ... +" + * 77 v?1.1 m="You have starved!" + + post actions + take\ all o?damsel t~damsel m=\ +"I'm not sure I know which things you mean -- be specific" + drop\ all t?damsel m=\ +"I'm not sure I know which things you mean -- be specific" + drop\ all t?balloon m=\ +"I'm not sure I know which things you mean -- be specific" + back v=CUR_LOC.%PREV_LOC% m="Hmmm, as I remember ... we came this way ..." + out m="I don't know which direction to go ..." + help|instructions m=\ +"Read the Wander Instruction Guide for help. (say \"read guide\")" + read\ guide o~guide m="I don't see any guide here." + read\ guide m=\ +"In general Wander can understand commands consisting of one or two words. +The first is almost always a verb of some kind (`take', `drop', `lock', etc) +and the second, (if needed), is usually an object. + +The following verbs are particularly useful: +inventory\tList objects you are carrying. +look\t\tGive the long description of your surroundings +quit\t\tEnd the wander +save\t\tSave your current environment so that you can continue later. + +Typically, motion is requested by specifying a compass direction +e.g. north, southeast, etc. These can be abbreviated as n, se, etc. + +If you have trouble being understood try rephrasing your commands so that +they use the simplest words possible without being too vague and remember +that only the first TWO WORDS in each command are used by the program." + go m=\ +"Words like 'go', 'move', 'travel' or 'walk' are unnecessary; +if you want to go north simply say 'north'. Most directions in this world +are compass directions, (north, south, northeast, etc), +which may be abbreviated. Also 'up' and 'down' appear fairly frequently." + dig t?shovel m="You poke around, but the shovel doesn't dig in anywhere" + take c?5 ,,, m="Pretty greedy, aren't you?" + drop\ cow c?20 t?cow ,,, m="Thump!" + drop\ damsel t?damsel t-damsel m="Pretty unchivalrous! (Puce smoke)" + xyzzy m="Nice try, but that's an old, worn-out magic word." + eat\ cow m="'scuse me while I throw up..." + eat\ leeches m="I think I'm gonna puke over that one..." + eat\ piranhas m="No, it works the other way around." + eat\ pears 77 m=\ +"YUM! ... URP! ... groan ... gurgle ... aaaaaaaack! Poison!" + eat v>1.25 m="No thanks, you're not really hungry, (yet)." + eat\ berries o?berries o-berries v+1.15 m=\ +"Those berries ought to stave off starvation for a few minutes." + eat\ apple o?apple o-apple v+1.25 m=\ +"That apple was small but tasty; it should hold you for a while." + eat\ potatoes o?potatoes o-potatoes v+1.60 m=\ +"Burp! Those spuds sure hit the spot." + drop\ balloon t?balloon o-balloon m=\ +"Being helium-filled it doesn't exactly drop... (wave bye-bye)" + make\ love m="Why beat around the bush? What do you really mean?" + make m="Only God can make that!" + yes|no m="Really? How interesting..." + why? m="Because (natch)" + define m="Just tell me what you want defined." + qwert? m=\ +"Quoting from the Webster's Middle World Dictionary, 4th ed. + + QWERT (kwirt) n. [MW < OW qwertyuiop, a thirteenth] 1. a unit + of weight equal to 13 poiuyt avoirdupois (or 1.69 kiloliks), + commonly used in structural engineering 2. [Colloq.] one thir- + teenth the load that a fully grown sligo can carry. 3. [Anat.] + a painful irritation of the dermis in the region of the anus + 4. [Slang] person who excites in others the symptoms of a qwert +" + poiuyt?|kiloliks?|sligo? m=\ +"Quoting from the Webster's Middle World Dictionary, 4th ed. + + See \"qwert\". +" + fuck\ you c?25 m="Fuck you, too." + fuck\ you c?33 m="Yaaaa, your mother wears combat boots!" + fuck\ you c?50 m="I'm not THAT hard up!" + fuck\ you m="You can't fuck me here. (Try as you might)" + score m="Keeping score is an outdated, materialistic concept, don't you think?" + inventory v?3.1 ... m="You are wearing a flower." + inventory v>3.1 ... m="You are wearing %3% flowers." + drop\ flowers v?3.0 m="You're not carrying any flowers!" + drop\ flowers v=3.0 m="The flowers wilt & rot into dust as you drop them." + find m="I don't know where to look" + * v+2.2 ,,, + * v>2.12 v<2.15 v=2.120 m="If you're confused type `help' for aid" + + variables +1 50 energy, used up by moving, replenished by eating +2 3 confusion count, -1 by recognized actions, +1 by unrecognized +3 0 number of flowers being carried +4 11 hint count for forest diff --git a/castle.wrld b/castle.wrld new file mode 100644 index 0000000..ce77d7b --- /dev/null +++ b/castle.wrld @@ -0,0 +1,914 @@ +#1 You're at the crossroads +"You're at a crossroads in a shallow valley with fields of wild flowers +on all sides. A large road goes north-south while a smaller road goes +east-west. The gently rolling hills that surround you make it hard to +see very far in any direction." + take\ flowers|pick\ flowers v<3.1 v+3.1 m=\ +"You tear a flower from the ground." + take\ flowers|pick\ flowers v<3.127 v+3.1 m=\ +"You tear another flower from the ground." + n 2 + s 3 + e 4 + w 5 + follow\ road|climb|cross m="In what direction?" + valley m="You are already in the valley; try following one of the roads." + * 76 t?frog t-frog t+prince s=76.0 m="POOF! (mauve smoke)" + * 76 t?damsel s=76.1 m="POOF! (magenta smoke)" + +#1.1 +"You're at a crossroads in a shallow valley with fields of wild flowers on all +sides. A large road goes north-south and a smaller road goes east-west. +Although the gently rolling hills that surround you make it hard to see very +far in any direction you can see a small, round hatch in the ground standing +open nearby." + down|climb 36 m="You climb down the iron ladder." + +#2 Sandy beach south of Swan Lake +"You're on a sandy beach bordering a large lake in the shape of a swan. +Across the lake to the north some sort of building is just visible. To the +south lies a valley full of wildflowers." + cross|n|row 6 o?boat o+boat@6 m="Your boat appears to float." + cross|n|swim m="You swim out a little ways, get tired, and swim back." + s|valley 1 + e 7 + w 8 + building m="The building is acroos the lake. How do you propose to get there?" + take\ sand m=\ +"The sand runs through your fingers before you can do anything with it." + +#3 Northeast edge of the woods +"You're at the edge of a dense wood stretching out to the south and west. +A shallow valley is visible to the north along a road that dwindles down +to an overgrown path leading south." + n|valley 1 + s|follow\ path|woods 9 + e 10 + w 9 + +#4 West side of stone wall +"You're at the base of a massive, twenty foot high wall built from smooth +field stones expertly fitted together. A large road bends here, going +north along the wall and west toward a shallow valley." + n 7 + s 10 + e m="You can't walk through walls" + w|valley 1 + up|climb 12 o?ladder m="You climb up the ladder and over" + up|climb m="The wall is too high to climb" + throw\ rope m="The rope doesn't catch on anything and falls back down." + +#5 bridge + n|downstream|downriver 8 + s|upstream|upriver 9 + e|valley 1 + read m=\ +"The sign says, + +\t DANGER! + CONDEMNED BRIDGE + Load limit : 18 qwerts (max) + cross at your own risk + +" + row o?boat m=\ +"Boats aren't very useful for crossing bridges, and the river flows too +swiftly for your boat to make it" + +#5.0 East end of Deep River Bridge +"You're at the east end of a rickety wooden bridge crossing over a deep river. +A road leads east toward a shallow valley filled with wildflowers. There is +a large, official-looking sign here." + cross|west t?boat s=5.1 o-boat m=\ +"As you start to cross the bridge you hear a loud groan and feel the bridge +sag. You drop the boat and rush back just in time to see the boat and the +bridge collapse into the river and get washed away." + cross|west 13 t?balloon m=\ +"It must be helium in that balloon +because you now weigh only 17.9 qwerts" + cross|west m="The bridge won't quite support your weight" + +#5.1 East bank of river where a bridge once was. +"You're on the east bank of a deep river where the end of a rickety, wooden +bridge sticks out into mid-air. There is a large, official-looking sign here." + cross|west|swim m="That would get you very wet and dead!" + +#6 Swan Lake +"You're floating on Swan Lake. From the west come sounds of splashing water +while a dark cliff looms up at the east end of the lake." + swim m="Just before you start to drown you climb back into the boat." + n 14 o+boat@14 + s 2 o+boat@2 + take\ note m="The note has already floated out of reach" + take\ boat m=\ +"Carrying the boat while it is carrying you might be a bit tricky..." + row m="Which direction?" + e m="The cliffs overhanging the lake are too high to climb!" + w m="You would be killed if you tried to float over this waterfall!.." + +#7 West side of gate +"You're at a small, locked gate in a massive stone wall. To the north a tall +cliff looms, and to the northwest a lake is dimly visible" + n m="A sheer cliff blocks your way" + s 4 + e m="The gate is locked" + w 2 + open|unlock t~keys m="You have no keys..." + open|unlock s=7.1 m="The keys fit and the gate creaks open..." + climb o?ladder m=\ +"The wall is too high and smooth to be climbed, even with a ladder." + climb m="The wall is too high and smooth to be climbed." + break\ gate m="The gate resists your futile attempts..." + pick\ lock c?70 m="You fiddle around for a while ... but no luck" + pick\ lock s=7.1 m="You fiddle around for a while ... and the lock opens!" + +#7.1 West side of open gate +"You're standing on the west side of a small gate through which you can +see lawn and some water to the east. To the north a tall cliff looms, +and to the northwest a lake is dimly visible" + e t?boat m="The boat is too big to pass through" + e 15 + lock t?keys s=7.0 + +#8 East bank of river above fork +"You're on the bank of a raging river flowing north. A short distance +downstream it is joined by another rapidly flowing stream from the east." + n|downstream|downriver m="The E-W stream blocks your way." + s|upstream|upriver 5 + e 2 + enter\ boat|west|row o?boat m=\ +"The current is too fast for your boat to make it!" + w m="The stream is much too swift to be crossed." + +#9 Woods +"You're in the woods where the trees are so dense that only a few rays +of sunlight penetrate and it's VERY easy to get lost." + * v-4.1 ,,, + * v?4.0 v=4.12 ,,, m=\ +"FLASH! Was that the glint of a ray of sunlight penetrating from the east?" + n|sw m="You have wandered around in the woods" + s c?50 m="Fallen trees block your way" + s 18 m="Fallen trees block your way" + e|se c?50 v~4.11 m="You're still lost in the woods" + e|ne 10 m=\ +"You're still lost in the ... wait! ................................. +The bushes part and ..." + w|nw m="You have wandered in a circle in the woods" + take\ tree m="Sorry, they're attached (securely) to the ground." + +#10 You're at the top of the well +"You're at an abandoned, apparently dry, well. It's quite deep, you can't +even see the other end of the old well rope hanging down. To the east a +roadway is visible beyond a fence made out of wire and a forest lies to the +south." + n 4 + s|woods|bushes 9 + e m="Barbed wire blocks your way... Ouch! It's electrified, too!" + w 3 + cut\ wire|hit\ wire m="OUCH! There seems to be no way around the wire!" + make\ wish m="Okay, but it won't come true..." + down|climb|well|bottom s=10.2 m=\ +"The well rope has rotted and falls apart in your hands, +you'll need to tie a newer rope to the well to get down." + take\ rope o~rope s=10.2 m=\ +"The rope turns out to be rotten and turns to moldy dust in your hands." + tie\ rope t?rope t-rope s=10.1 m=\ +"You deftly tie a clove hitch and dangle the end of the rope into the well." + jump|fall c?66 m="It's an awfully deep well... Better think twice." + jump|fall 77 c?50 m="Geronimo! ... ... ... ... ... SPLAT!" + jump|fall 16 m="Geronimo! ... ... ... ... ... THUD!" + +#10.1 +"You're at an abandoned, apparently dry, well. It's quite deep, you can't even +see the other end of the new well rope hanging down. To the east a roadway +is visible beyond a fence made out of wire and a forest lies to the south." + down|climb t?boat m=\ +"No way, the boat you're carrying is bigger than the well!" + down|climb 16 + take\ rope m="The rope is tied to the well." + untie\ rope s=10.2 o+rope m="Okay" + +#10.2 +"You're at an abandoned, apparently dry, well. It's quite deep, you can't see +the bottom. To the east a roadway is visible beyond a fence made out of wire +and a forest lies to the south." + down|climb m=\ +"You need something to hold onto ... e.g. a rope tied to the well." + tie t?rope t-rope s=10.1 m=\ +"You deftly tie a clove hitch and dangle the end of the rope into the well." + +#11 Woods +"You're in a dark and dreary woods with dense foliage in all directions. +Splashing sounds and bird calls seem to come from the east." + n|nw c?70 m="You must be lost; you've wandered in a circle" + n|upriver 13 + s|sw m="This spot looks awful familiar." + e|row o?boat m="The boat is too fragile for the river." + e|se|ne m="The way is blocked by a deep river." + w m="You've made a circle." + +#12 East side of wall +"You're at the base of a massive stone wall. +A vague spire can be seen in the distance to the north-east" + n 15 + e 23 + w m="There's a wall in your way, bimbo" + up|climb 4 o?ladder m="You climb up the ladder and over" + up|climb m="The wall is too high to climb" + ne 19 + +#13 West end of bridge +"You're at the west end of a rickety bridge crossing a raging river. +A sign posted here reads, Load Limit : 17.9 qwerts." + n|downstream|downriver 17 + s|upstream|upriver 11 + e|cross t?boat m="The boat is much too heavy for the bridge." + e|cross 5 t?balloon m=\ +"The bridge sags a little but the balloon makes you enough lighter to cross." + e|cross m="The bridge won't support your weight." + +#14 Cottage on Swan Lake +"You're at a honeymoon cottage on the north beach of Swan Lake. +No one is around, it must be the off season..." + s|row 6 o?boat o+boat@6 m=\ +"As you row out you see an old, worn-out slip of paper float by. +It says \"Magic word : xyzzy\"" + s|swim m="Take swimming lessons first" + unlock t?keys m="Your keys don't seem to fit these locks" + unlock m="No keys..." + building|cottage|enter m="The cottage is all locked up" + +#15 East side of gate +"You're just inside a gate in a massive stone wall. A small building lies +to the north and an impressive spire is dimly visible to the east." + s 12 + n 27 + e 19 + w 7 s?7.1 + w m="The gate is locked" + lock s?7.1 s=7.0 m="The gate is now locked" + lock s?7.0 m="It's already locked" + unlock s?7.0 s=7.1 m="The gate creaks open" + unlock s?7.1 m="It's already open" + +#16 Bottom of well +"You're at the slimy bottom of an abandoned well. Someone has scratched +Can you dig it? on one of the walls." + dig 16 t?shovel s=16.1 s=31.1 m=\ +"Your shovel breaks through into a dark passage" + up|climb s?10.0 s=10.2 m=\ +"You grab the well rope and it falls apart in your hands!" + up|climb 10 s?10.1 m="You shinny up the well rope." + up|climb s?10.2 m=\ +"The walls are much too slick to climb and there's no rope with which to +pull yourself up -- you're in trouble!" + * s?10.2 t~shovel v-1.2 ,,, + +#16.1 Bottom of well +"You're at the bottom of an abandoned well with a hole into a dark passage." + dig m="All the other walls seem to be bedrock" + enter m="Which way? The passage goes north aod northeast." + n 30 + ne 31 + +#17 West bank of river +"You're on the west bank of a swiftly-moving north-south river." + n|downstream|downriver m="Your way is blocked by dense foliage." + s|upstream|upriver 13 + e|row o?boat c?30 m=\ +"The current grabs your boat and you frantically row back to the shore" + e|row 8 o?boat t+boat m=\ +"You strain against the current and barely make it." + e m="The river is too deep and fast to be crossed" + +#18 Woods +"You're in the woods where the trees are so dense that only a few rays +of sunlight penetrate and it's hard not to get lost." + n|s|e|w 9 m="You're still wandering in the woods" + ne|nw|se|sw 9 m="You're getting more lost..." + +#19 Western moat +"You're at the western edge of a shallow moat teeming with piranhas. +To the northwest a small building is visible and to the west of you is +a high stone wall with a gate in it while across the moat a large, +dark castle almost seems to be watching you..." + n 24 + s 23 + e m="Those piranhas wouldn't let you take two steps (using what for feet?)" + w 15 + nw 27 + sw 12 + +#20 Tree-lined drive +"You're on a gorgeous tree-lined drive running north toward a high wall" + n 22 + s 21 + w 10 + +#21 Garden entrance +"You're at the entrance to a traditional English garden. A tree-lined drive +proceeds north from here." + n 20 + in|s m="Garden under construction." + +#22 Portcullis +"You're just south of the blasted remains of a large portcullis set in a massive +stone wall, through which a moat can be seen indistinctly. A broad road +winds away to the north." + n 23 + s 20 + w m="Electrified barbed wire makes that impossible." + +#23 Southern moat +"You're between a portcullis set in a massive stone wall and +the southern edge of a shallow moat filled with hungry alligators" + n 51 s?51.1 m="You cross the moat on the open drawbridge." + n 25 t?cow m="The alligators get one sniff of the dead cow and vanish" + n m="These alligators would love that!" + s m="The portcullis blocks your way" + w 12 + +#23.1 +"You're between the blasted remains of a portcullis set in a massive stone wall +and the southern edge of a shallow moat filled with hungry alligators" + s 22 m="The remains of the portcullis are very warm as you pass..." + +#24 Northern moat +"You're north of the castle moat, at the southern edge of some kind of +pear orchard. A small building is visible to the west and a gateway in +a high stone way lies slightly to the west of southwest." + n 26 + s m="Oops! The moat here is filled with gigantic leeches!" + w 27 + sw 19 + +#25 South lawn +"You're on the south lawn between the castle to the north and the alligator +moat curving from the west to the east on the south side of you. Ten feet +above you is a massive drawbridge." + n m="There is no opening in the castle wall at this height." + s 23 t?cow m=\ +"The 'gators won't come near you with that stinking cow carcass" + s|e|w m="The 'gators are still drooling..." + ne|nw 28 m="You circle around to the other side of the castle" + climb m="You find nothing to grab onto." + up s?51.0 m="You can't reach the raised drawbridge." + up s?51.1 m="You can't quite reach the lowered drawbridge." + +#26 Pear orchard +"You're standing next to a sign in an pear orchard that has almost been +picked clean of purplish pears." + s 24 + w 27 + read m=\ +"The sign reads\"DANGER! POISON PURPLE PEARS being grown for Halloween\"." + take\ pear|pick\ pear t+pear s=26.1 m="Done" + eat m="Eat what?" + +#26.1 +"You're standing next to a sign in an pear orchard that has been +picked clean of purplish pears." + take\ pears m="There are no more pears" + +#27 Outhouses +"You're seated on one of several thrones in the castle outhouses." + * t?keys c?33 s=7.0 t-keys m=\ +"Ooops! The sound of a gate clanging startled you and you dropped your keys, +you know where..." + s 15 + e 24 + w m="The castle wall here extends quite high; you can't climb it" + out|leave m="You can go south or east..." + down|dig t?keys s~7.0 m="Are you kidding? Not without a good reason!" + down|dig m="You are now covered with shit and flies (but, alas, no keys)" + +#28 North lawn +"You're on the north castle lawn, between the service entrance and the moat." + n m="The leeches look much to thirsty, forget it" + s c?70 m=\ +"Just as you are about to sneak in you think you hear someone coming, +and run back out." + s t?cow m=\ +"That rotting cow carcass is much too large to fit through the door" + s 29 m=\ +"Just as you are about to sneak in you think you hear someone coming, + but decide to chance it..." + e|west 25 m="You circle around to the front of the castle" + +#29 Castle Kitchen +"You're in a large, rectangular kitchen with ovens covering most of +the south wall. There are four doors leading from the kitchen, each has a +sign. The signs read coming, going, servants and out." + n|out t?damsel m=\ +"When the aristocratic damsel sees that you intend leaving by that back door +she turns up her nose and refuses to leave \"by the tradesmen's entrance\"!" + n|out 28 m="The out door leads outside." + e|coming m="The coming door doesn't open this way." + s|going 38 m="The going door swings aside." + nw|servants t?damsel m=\ +"When the aristocratic damsel sees that you intend leaving by that door +she turns up her nose and refuses to leave \"by the servant's door\"!" + nw|servants 41 m="The servants door swings aside." + light\ match t?match o-match m=\ +"The match flares up, burns briefly, and goes out." + +#30 Glass tunnel +"You're in a cylindrical tunnel whose shiny black walls are as smooth as glass. +Sunlight coming through a hole at the south end reflects a few times and then +is soaked up by the walls." + s 16 s?16.1 + n 33 + +#31 Loose steps +"You're at the top of a staircase made up of loose rock steps leading northeast +and down. A translucent section of wall has ?ti gid uoy naC written on it." + ne|down 32 + dig t?shovel s=31.1 s=16.1 m=\ +"Your shovel breaks through the translucent wall." + +#31.1 +"You're at the top of a staircase made up of loose rock steps leading northeast +and down. Light shines in through a hole to the southwest." + sw 16 + dig m="The rest of these walls seem to be bedrock." + +#32 Secret tunnel +"You're in the king's secret escape tunnel. The light is dim here but you can +see that it comes from both the east and southwest." + e 57 s?57.0 + e m="A heavy gate blocks this passage." + sw 31 + +#33 Vertical Shaft +"You're at a junction with a ten-foot diameter vertical shaft, made of some +glassy substance, going down and up, and a horizontal tunnel. The Horizontal +tunnel ends here, but a set of rusty rungs are set into the shaft walls." + s 30 + up 34 m=\ +"You climb up the rungs into the darkness. These rungs don't feel as rusty +as the lower ones." + tie\ rope t?rope s=33.1 t-rope m=\ +"You tie your rope to the top, secure rung." + down m=\ +"The second rung you try breaks off and you almost fall to your death! +If you want to go lower you'll have to find something else to climb on." + climb m="Up or down?" + +#33.1 Vertical Shaft +"You're at a junction of a ten-foot diameter vertical shaft going down and up +with a Horizontal tunnel which ends here. A set of rusty rungs are set into +the smooth shaft walls and a rope dangles down from one of them." + untie|take\ rope s=33.0 t+rope m="Done" + down 37 m="You climb down the rope." + +#34 Top of Shaft +"You're hanging onto some smooth metal rungs in the wall of a vertical shaft +with a metal plate or something right above your head. Something that feels +like paper is glued to the ceiling, but the light is so dim that you can +only make out the letters ...ILO. To la...open doo...uck!." + light\ match t?match s=34.1 m="Your match flares up and you discover..." + open door s=34.2 m="The missile silo doors swing open with a clang!" + down 33 + read m="Without more light you can't read the rest" + +#34.1 Top of Missile Silo +"You're hanging a few inches below a sign posted on two immense metal doors. +The sign reads: + MISSILE SILO. To launch missile manually, open door and duck!" + open s=34.2 m="The silo doors swing open with a clang!" + down 33 s=34.0 m="Your match has burned out." + read m="That's all it says." + duck m="Okay, now would you like to quack? (Don't answer that)" + +#34.2 Top of Missile Silo +"You're in a missile silo with the doors wide open. +The hum of active machinery wells up from below you." + duck 35 s=34.0 m=\ +"You duck back into a small chamber as a huge missile flashes by." + * 77 s=77.0 m=\ +"Before you have a chance a huge missile comes screaming up the shaft and +smears you all over its warhead." + +#35 Missile Control +"You're in a small chamber where a control console display is flashing a message: +CHOOSE TARGET. There is an active keyboard awaiting input of target name." + choose|target m="Choose target? Which one?" + type m="Type what?" + portcullis o+button m="The display flashes 'Press button to detonate.'" + press\ button 36 o?button s=23.1 o-button m="A distant boom is heard." + take\ button o?button m="You can't; it's attached." + * 36 o-button m=\ +"The display resonds \"Premature detonation\" and a loud BOOM! is heard." + +#36 Missile Control +"You're in a small chamber with a large control console and a display that has +a single illuminated indicator with a sign that reads standby. A metal +ladder leads through a hole in the ceiling." + up 1 s=1.2 m=\ +"Sunlight streams in as you open the small hatch and climb out." + +#37 End of rope +"You're at the end of your rope, swinging freely. You could take a chance +by going further down, but who knows how far you'd fall..." + down 77 m=\ +"You fall for a full 12 seconds before being smashed to death." + drop\ penny m="12 seconds later ... tink" + drop m=\ +"Rather than drop anything substantial, you drop a penny. +12 seconds later you hear it hit metal -- a LONG way down!" + up|climb 33 m="It's a hard climb, but you make it." + +#38 Banquet Hall +"You're in a long banquet hall with windows on the east, several arched +doors on the west, two swinging doors going nw & ne, and a wooden panel +at the south end." + s m="You bang your head into the wooden panel (it sounds hollow)" + e m="The windows are barred and you can't fit through" + w 40 + nw m="This door doesn't swing that way." + ne 39 + cut\ panel t?knife s=38.1 m="The soft wood cuts like butter." + +#38.1 +"You're in a long banquet hall with windows on the east, several arched +doors on the west, two swinging doors going nw & ne, and a wooden panel +with a hole in it at the south end." + s 43 s=38.0 m="As you go through, a new panel slides into place." + +#39 Dirty dish room +"You're in a room with a small basin full of murky water and hundreds of dirty +dishes stacked all over on the floor. There are swinging doors to the +west and south." + s m="Another, damn one-way door!" + w 29 + +#40 Grand Ballroom +"You're in the Grand Ballroom. There is a massive throne set against the +north wall. The floor is an exquisite wood parquet design. A broad, +curved staircase goes up to a balcony, a large barred door leads south +and a long hall can be seen through several arches to the east." + s m="The bars are made of 3\" thick metal" + e 38 + up 53 + +#41 Servant's Hallway +"You're in a short hallway with doors leading south and east and a spiral +staircase going up and down." + s 45 + e 29 + up 49 + down 50 + +#42 Courtyard +"You're in an open courtyard." + n m="This door is barred on the inside." + s 51 + w 46 + +#43 Guard's Quarters +"You're in an L-shaped room with sleeping mats, piles of clothing and +Playboy center-folds adorning the walls. The guards sleep here. +The north and west walls have doors set into them." + n m="The door opens but there is a wood panel blocking further progress." + w 51 + cut\ panel 38 t?knife s=38.1 m=\ +"The soft wood cuts like butter and you step through." + +#44 Armory +"You're in the castle armory. There are suits of chain mail, maces, lances, +swords, suits of armor, axes, etc, etc here. Most seem to be made of either +crude metal, perhaps iron, or a smooth grey substance; all of them, even the +wooden lances, appear to be held to the wall by some magnetic, (or is it +magic?) force. A small black and yellow sign is posted on the wall. +A small doorway leads to some stone steps going up and down." + e 51 + up 52 + down 58 + read\ sign m="The sign says: \"Danger -- Shock Hazard\"" + +#44.0 + take m="You can't budge anything, the strange force is stronger than you are." + drop t?%INP_OBJ% s=44.1 o+mace o+%INP_OBJ% m=\ +"clank ... ... K A B O O M ! ! +The slight shock seems to have detonated some plastic explosive! +" +#44.1 Armory +"You're still in the castle armory but most of the armament is scrap now +and the rubble blocks a small doorway. Only the hardiest weapons, (and +yourself, of course) could survive that blast; even the mysterious force +seems to have been disrupted." + up|down m="Too much rubble." + +#45 Servant's Quarters +"You're in a dim room filled with grass mats and drunken servants. +There is one door." + n 41 + +#46 Antechamber +"You're in a small antechamber with a sign that says: + Leave ALL Weapons Here +above a door leading south." + e 42 + s t?knife t-knife m="The sign blinks twice, and your knife disappears" + s t?mace t-mace m="The sign blinks twice, and your mace disappears" + s 47 + +#47 Small Throne Room +"You're in the Throne Room! The throne is set on a high dais with small steps +leading up to it." + n 46 + up 48 + take\ throne m=\ +"You didn't happen to bring along an elephant to carry it, by any chance?" + +#48 The Throne +"You're standing on the dais by the throne. From here you can see how a king +would look impressive to his supplicants as he sits regally on this throne." + down 47 s=48.0 + take\ throne m="It weighs 350 qwerts!" + sit s=48.1 m=\ +"As you lean back you feel the curtain behind you move slightly." + +#48.1 +"You're sitting on the throne. A small draft seems to be blowing from +the south through the room." + stand s=48.0 + s 54 s=48.0 m=\ +"As you step through the curtain a door slides silently closed behind you." + +#49 Guard Hall +"You're at the north end of the guard's passage where a spiral stair leads +up and down and doors lead east, se and south." + s 52 + e 64 + se 53 + down 41 + up 70 + +#50 Mead Cellar +"You're in the castle mead cellar. Row upon row of casks fill the musty +chamber." + up 41 + take\ casks m="The casks are huge and heavy. Forget it." + drink c?50 m="URP!" + drink m=\ +"Eeeech! That cask has gone bad ... and something's swimming in it!" + +#51 Sallyport +"You're in the entryway to the castle, known as the Sallyport because +it is from this portal that the knights sally forth. To the north a +courtyard is visible; to the south is a drawbridge held up by an iron chain. +Doors also lead east and west." + n 42 + s m="The drawbridge is up." + e 43 + w 44 + lower\ drawbridge m="The chain seems to be rusted solid and won't budge!" + break\ chain t?mace s=51.1 m=\ +"The mace smashes the chain and the drawbridge slams down." + +#51.1 +"You're in the Sallyport. To the north a courtyard is visible; +to the south is an open drawbridge leading over a moat full of alligators. +Doors also lead east and west." + s 23 + +#52 Parapet +"You're on a parapet overlooking the entrance to the castle and moat on the +south and the courtyard on the south. At the west end a set of steps +leads downward." + down|west s?44.1 m="The steps are blocked by rubble." + down|west 44 + nw 49 + +#53 Balcony +"You're on a balcony with several interesting doors in strange locations." + e 66 + w 63 + ne 65 + se 67 + sw 62 + down 40 + nw 49 + +#54 Secret Stairs +"You're in a secret stairway. Steps lead up and down. +There is a blue button mounted on the wall." + up s?55.1 m="The steps seem to be blocked by rubble." + up 55 + down 57 + press\ button c?50 s?56.0 s=56.1 m="Nothing seems to happen." + press\ button m="Nothing happens." + take\ button m="No way, its built into the wall." + +#55 Secret Stairs +"You're in a secret stairway. Steps lead up and down. +There is a green button mounted on the wall." + up 56 + down 54 + press\ button 62 m="A tapestry is revealed; it parts as you brush past." + take\ button m="No way, its built into the wall." + +#55.1 +"You're in a secret stairway. Steps lead up and down but rubble blocks the latter. +There is a green button mounted on the wall." + down m="You are blocked by rubble." + +#56 Secret Stairs +"You're in a secret stairway. Steps lead down. +There is a red button mounted on the wall." + down 55 + press\ button s?55.0 s=55.1 m=" BOOM!" + press\ button m="Nothing happens." + take\ button m="No way, its built into the wall." + +#56.1 Secret Stairs +"You're in a secret stairway. Steps lead down and a small door is open +to the south. There is a red button mounted on the wall." + s 73 + +#57 Secret Stairs +"You're in a secret stairway. Steps lead up. +There is a black button mounted on the wall." + n 58 + w 32 + up 54 + press\ button s=57.1 m="Heavy gates descend along the north and west walls." + take\ button m="The button is too well attached." + +#57.1 Secret Stairs + n|w m="The gate won't budge." + press\ button m="Nothing happens." + +#58 You're in a little cell in the dungeon. +"You're in a dimly-lit little cell in the dungeon with doors to the +north, south, east and west." + n 59 + s 61 + e c?33 m="Cobwebs" + e 60 + w + +#59 You're in a little cell in the dungeon. +"You're in a dimly-lit little cell in the dungeon with doors to the +north, south, east and west." + n 58 + s 60 + e 59 + w c?33 m="Cobwebs" + w 61 + +#60 You're in a little cell in the dungeon. +"You're in a dimly-lit little cell in the dungeon with doors to the +north, south, east and west." + n 61 + s 59 + e c?33 m="Cobwebs" + e 58 + w 57 + +#61 You're in a little cell in the dungeon. +"You're in a dimly-lit little cell in the dungeon with doors to the +north, south, east and west." + n 60 + s 58 + e 61 + w c?33 m="Cobwebs" + w 59 + +#62 King's bedchamber +"You're in the king's bedchamber. There is a magnificent four-poster +bed against the east wall and a beautiful tapestry on the south wall +(well attached to it). The only door is to the north." + n 53 + s 55 m="The tapestry slides aside as you pass." + take\ tapestry m="It's too well attached." + +#63 Guest chamber +"You're in the guest chamber. The furnishings in here are nice, but +nothing special. There is a door in the east wall." + e t?bible m=\ +"Now, that's not very nice; these bibles are put here for weary travelers +to use to renew their faith and find their way through life's puzzles... +You really shouldn't swipe it!" + e 53 + read\ bible t?bible m=\ +"The Good Book falls open to the first chapter of Revelations, where a note +in the margin says: 'light a match before opening any doors in the dark!'" + +#64 Storeroom +"You're in the castle storeroom. The only door leads west." + w 49 + +#65 East tower stairs +"You're at the bottom of a long spiral staircase. There is a door leading sw." + up 68 + sw 53 + +#66 Sanctum +"You're in the sanctum. The walls are lined with bookshelves and +doors lead south and west." + s 67 + w 53 + +#67 Queen's boudoir +"You're in the queen's chambers. There are many barred windows and a door +leading north west." + nw 53 + +#68 East tower stairs +"You're at a landing in a long spiral staircase. Doors lead south and west." + s 72 + w 75 + up s?69.1 m="A blank wall blocks the stairs." + up 69 + down 65 + +#69 Rapunzel tower +"You're high above the castle in the east tower; in fact, you are so high up +that you can see clouds outside the window. A spiral staircase leads down." + down 68 + take\ damsel m="Don't be lewd! (This is neither the time nor the place)" + carry\ damsel|lift\ damsel s=69.1 t+damsel m=\ +"The damsel gratefully climbs into your arms and whispers +\"take me to the cross-roads and I'll repay your kindness!\" +You hear a sound like stone grating on stone." + climb\ rope t?damsel m=\ +"The rope is strong, but not strong enough to carry you and the damsel..." + climb\ rope 68 t?rope m=\ +"You climb to the end of the rope and slip in through a window." + climb\ wig 68 o?wig o-wig m=\ +"You get 9 feet down and find a little tag that says +\"Made in Hong-Kong, Inspcted by no 1\" -- the wig starts to shred!! +You frantically scramble ... +and just manage to get into a window as the wig falls apart." + jump 77 m="Geronimo! .......... SPLAT!" + +#69.1 Rapunzel Tower +"You're high above the castle in the east tower. A spiral staircase leads +downward into a blank wall!" + down m="The blank wall won't budge" + drop\ damsel t-damsel s=69.0 m=\ +"Not very cavalier of you, but there's that grating sound again along with +a puff of oily, ochre smoke." + +#70 West tower stairs +"You're at a landing in a long spiral staircase. Doors lead south and east." + s 74 + e 75 + up 71 + down 49 + +#71 West tower +"You're high above the castle in the west tower. A spiral staircase +leads downward." + down 70 + jump|climb\ wig m="Nice try, but there are no windows..." + +#72 East ramparts +"You're on a long rampart that follows the east wall of the castle." + n 68 + s 73 + +#73 South ramparts +"You're on a long rampart that follows the south wall of the castle." + n 56 s?56.1 + e 72 + w 74 + +#74 West ramparts +"You're on a long rampart that follows the west wall of the castle." + n 70 + s 73 + +#75 North rampart +"You're on a long rampart that follows the north wall of the castle." + e 68 + w 70 + +#76 Nirvana + fuck -1 m=\ +"Oooooooh! Aaaaaaaaah! Congratulations, you are an Expert Wanderer!" + * m="You're wasting time!" + +#76.0 +"You're in Nirvana with the handsome prince, no longer a frog, +who turns out to be the world's best lay!" + * t?damsel s=76.2 m="POOF! (cyan smoke)" + +#76.1 +"You're in Nirvana with the beautiful damsel, no longer in distress, +who turns out to be the world's best lay!" + undress m="You're already naked!" + +#76.2 +"You're in Nirvana with the handsome prince, no longer a frog, AND the +beautiful damsel, no longer in distress, who are tied for the title of +world's best lay!" + fuck -1 m=\ +"OOOOOOOH!!! AAAAAAAAAH!! Congratulations, you are a Master Wanderer!" + +#77 You Are Dead. +"You Are Dead. +" + diff --git a/library.misc b/library.misc new file mode 100644 index 0000000..5dbe5e2 --- /dev/null +++ b/library.misc @@ -0,0 +1,130 @@ +Through the wonder of Wander, you are going to explore the remains +of a world after Chaos has had its way with it. There are treasures +to be had here, but there are also undreamed of dangers. The ghosts +of the people who once ruled this world are there still, and the +products of their godlike meddling have survived them. Be cautious, +daring, and sneaky. + + + words (verbs) +attack 0 0 +kill 1 0 +fight 2 0 +stab 3 0 +press 0 0 +push 1 0 +poke 2 0 +pet 0 0 +stroke 1 0 +scratch 2 0 +take 0 0 +get 1 0 +out 0 0 +leave 1 0 + + + words (objects) +guidebook 0 0 +guide 1 +plastic\ vomit\ bag 0 33 +bag 1 0 +left\ shoe\ of\ a\ gnome 0 0 +shoe 1 0 +plastic\ comb 0 0 +comb 1 0 +gravedigger's\ shovel 0 43 +shovel 1 +first\ edition\ Gutenberg\ Bible\ (signed!) 0 15 +bible 1 +book 2 +set\ of\ odd\ looking\ keys 0 17 +keys 1 0 +wicked\ looking\ inscribed\ knife 0 17 +knife 1 +still-smoking\ gun 0 43 +gun 1 +crushed\ pocketwatch 0 43 +pocketwatch 1 +watch 2 +Zygopetalum\ crinitum 0 43 +orchid 1 +flower 2 +Vulcan\ Ears 0 22 +ears 1 +pointy\ white\ feather. 0 24 +feather 1 0 +large\ black\ runesword 0 23 +runesword 1 +stormbringer 2 +sword 3 +shiny\ quarter 0 8 +quarter 1 0 +coin 2 +diamond\ studded\ vibrator 0 34 +vibrator 1 0 +miraculously\ preserved\ Captain\ America\ number\ 1 0 54 +comic 1 0 +leather\ sack 0 1 +sack 1 0 +nasty\ little\ dwarf\ bristling\ at\ you 0 0 +dwarf 1 0 +dead\ dwarf 0 0 + + + pre + n|s|e|w|ne|se|nw|sw|u|d o?dwarf c?70 m="You can't just leave!" + + post actions + kill\ * o~%INP_W2% m="I don't see any %INP_W2% here" + kill\ dwarf\ with\ sword t?sword c?50 o-dwarf m="The sword neatly stop-thrusts the dwarf, who vanishes." + kill\ dwarf\ with\ sack o?sack o-dwarf o+dead\ dwarf@127 m="You push the sack over the dwarf's head and he suffocates." + shoot\ gun|kill\ *\ with\ gun o?%INP_W2% o?gun m="click!" + read\ knife o?knife m="Acme Knife, Made by Acme knife & throttle Co, Framingham." + wear\ ears 0 t~ears m="What ears?" + wear\ ears 0 t?ears m="They don't stick too well on your ears." + drop\ sword 0 t?sword m="You try, but as soon as your hand opens, something makes it snap convulsively\nclosed around the sword again!" + read\ guidebook t?guidebook m="'Guide to H.E.W. M. L.'\n by\n Ted Rothspangle.\n.......The rest of the guide is illegible except for a reference to 'secret passage in back of rest-room vending machine'\n\n" + version m="This is version 1.7 (4/9/80) of the library" + enter\ sack|in\ sack|enter\ sack o?sack 127 m="You struggle into the sack and then fall in!" + open\ sack o?sack m="The sack is already open" + close\ sack o?sack m="You have nothing to close it with." + put o?sack o?%INP_W2% o+%INP_W2%@127 + put m="You cannot put the %INP_W2% in the sack" + score v=1.0 ,,, + score v+1.2 ,,, + score v+1.3 ,,, + score t?orchid v+1.5 ,,, + score t?comic v+1.5 ,,, + score t?bible v+1.5 ,,, + score m="Your score is %1% points" + help m=\ +"You are playing library, a game by in which you explore the ruins of +an ancient library. The game is a script which is interpreted by +a program letting you interact with it. The script was written by Nat +Howard. The program (called \"wander\") was written by Peter +Langston. + +In this game you move around, looking for the treasures left by the +users of the library, but trying to avoid the hazards, and solve the +puzzles. To move north, say \"north\" or \"n\". + +When you find a treasure, take it to the chapel and put it there. +When you find a puzzle, you might try to solve it. In general, there +are rewards for the solution of puzzles. + +To examine something, (e.g., a blurfo) say \"examine blurfo\" + +One of the objects you'll find is a leather sack. You can put things +in the sack by saying: + put blurfo +where blurfo is the object. Some things do not fit in the sack. +" + * o?dwarf c?30 -1 m="The dwarf slips under your guard and kills you" + + + + vars +1 0 temp variable used in computing score +2 0 0 if not found Capt America #1, 5 otherwise +3 0 0 if not found Bible 5 otherwise +4 0 0 if not found orchid 5 otherwise diff --git a/library.wrld b/library.wrld new file mode 100644 index 0000000..4823f5e --- /dev/null +++ b/library.wrld @@ -0,0 +1,661 @@ +#1 Building Steps +You're at the foot of the stairs of a huge pillored building. There is a faint +inscription on the stone crosspiece above the pillars. Walkways go to the +south, east and west. + east 44 + west m="Jagged rubble blocks your way" + up|north 2 m="You climb up the steps and into the building." + read 1 m="The inscription is much weathered by age and fallout, but you can just make out\nthe words: \'Harry Elkins Widener Memorial Library\'" + south 28 t?sword m="The black sword tugs a bit to the north as you move." + south 28 + +#2 Lobby +You're inside a large vaulted lobby. There is a doorway to the south with light +showing through. There is a door to the east and a desk to the west. The desk +has a sign on it. There are some stairs to the north. + read 2 m="The sign on the desk says \'You MUST show ALL books to the attendant\'" + south 2 t?bible m="Bars fall down across the doorway" s=2.1 + south 1 + north 3 + west 17 + show\ book 2 o?book s=2.3 m="The guard arouses from his drunken stupor long enough to mutter 'O.K.'" + show\ book 2 m="Book? I don't see any book...." + east 18 s?18.0 + east 0 m="Closed elevator doors block your way." + take\ sign m="The sign is lacquered onto the desk and can\'t be removed." + +#2.1 Lobby +You're inside a large vaulted lobby. There is a barred doorway to the south +with light showing through. There is a door to the east and a desk to the west. +The desk has a sign on it. There are some stairs to the north. + read 2 m="The sign on the desk says \'You MUST show ALL books to the attendant\'" + south 2 m="Those bars have the weight of moral rectitude (and are three inches thick!)" + show\ bible 2 s=2.2 m="The guard wakes up long enough to look at your book, pushes a button,\ncausing the south door to open, and dozes off." + north 3 + west 17 + east 18 + +#2.2 Lobby +You're inside a large vaulted lobby. There is a doorway to the south with light +showing through. There is a door to the east and a desk to the west. The desk +has a sign on it. There are some stairs to the north. + show\ bible 2 o?bible m="The guard grumbles, looks at you with bleary eyes, and waves you on, not" bothering to look at your book. + south 1 s=2.0 + north 3 + read 2 m="The sign reads \'THANK YOU for showing your books to the attendant\'" + west 17 + east 18 + +#2.3 Lobby +You're inside a large vaulted lobby. There is a doorway to the south with light +showing through. There is a door to the east and a desk to the west. The desk +has a sign on it. There are some stairs to the north. + east 18 + read 2 m="The sign on the desk says \'You MUST show ALL books to the attendant\'" + south 1 + north 3 + west 17 + show\ book 2 m="The guard mumbles: \'Leave an ol\' soljer alone, willya?" + +#3 Foot of stairs +You're at the foot of the library stairs. To the west is a small door, +to the east is the entrance to a gloomy hallway. There is some light +from the south. + south 2 + up|climb|stairs 4 + east 5 + west 16 + +#4 Top of stairs +You're at the top of some stairs. There are passages to the east and west. + east 6 c?20 m="Uh oh...." + east 6 + west 9 + down|south 3 + +#5 gloomy hallway +You're in a gloomy hallway. There is broken glass on the +floor and some ruined models in display cases mounted on +the walls. There is an opening to the west, and darkness +to the east and north. + take\ models m="It\'s just ruined plastic that turns to dust in your hands." + west 3 + east 30 v=1.1 + north 36 + +#6 You're in the notoriously confusing Folklore & Mythology stacks. +You're in the notoriously confusing Folklore & Mythology stacks. + north 11 + south 13 + east 10 + west 7 + down 4 + +#7 You're in the notoriously confusing Folklore & Mythology stacks. +You're in the notoriously confusing Folklore & Mythology stacks. + north 13 + south 6 + east 12 + west 8 + +#8 You're in the notoriously confusing Folklore & Mythology stacks. +You're in the notoriously confusing Folklore & Mythology stacks. + north 9 + west 7 + east 34 + +#9 You're in the notoriously confusing Folklore & Mythology stacks. +You're in the notoriously confusing Folklore & Mythology stacks. + north 11 + south 12 + east 9 + west 8 + southeast 4 + +#10 You're in the notoriously confusing Folklore & Mythology stacks. +You're in the notoriously confusing Folklore & Mythology stacks. + north 10 + south 8 + east 11 + west 8 + down 11 + northwest 6 + +#11 You're in the notoriously confusing Folklore & Mythology stacks. +You're in the notoriously confusing Folklore & Mythology stacks. + north 9 + south 10 + east 15 + up 10 + +#12 You're in the notoriously confusing Folklore & Mythology stacks. +You're in the notoriously confusing Folklore & Mythology stacks. + north 9 + down 7 + +#13 You're in the notoriously confusing Folklore & Mythology stacks. +You're in the notoriously confusing Folklore & Mythology stacks. + north 7 + south 8 + east 14 + up 13 + +#14 You're in the notoriously confusing Folklore & Mythology stacks. +You're in the notoriously confusing Folklore & Mythology stacks. + north 10 + south 7 + +#15 Rare Books Room +You're in the rare books room of the F & M section. On one wall, in a secured +casing, are the four tons of epic on aluminium records that A.B. Lord brought +back from Serbo-Croatia. There are fabulous old books everywhere here, but +most have become so fragile with age that it would be foolish to touch them. +There is an exit to the east with a sign saying 'REMEMBER STACK PASS', +and another exit to the south. + * v=3.5 ... + east 12 + south 16 m="(an automatic door quietly closes behind you)" + +#16 Union Catalogue +You're in a large room full of card catalogues. There is an exit to the east. + east 3 + read m="The catalogue drawers are fused shut by age." + +#17 behind desk +You're behind the library guard's desk. From here you can see that he is an +audio-animitronic creation. The words 'Walt Disney World, INC' are written on +his back. + east 2 + kill 17 m="You can't kill something that's not alive to begin with." + +#18 library elevator +You're in an elevator used by the building staff at one time. The elevator was +controlled by buttons. The buttons are labeled 'up' and 'down' +There is also an oddly-shaped keyhole on the panel with the buttons. + + +#18.0 library elevator + up|down 18 m="Nothing Happens, though the elevator is clearly functional." + lock 18 m="The elevator keyboard is already locked." + unlock 18 o?keys o-keys m="Your keys stick in the lock, and the doors close" s=18.1 + west|leave 2 + +#18.1 library elevator +You're in an elevator used by the building staff at one time. The elevator was +controlled by buttons. The buttons are labeled 'up' and 'down' +There are some keys stuck into an oddly shaped keyhole on the button panel. + lock 18 m="You turn the keys, there is a click, and the doors open.\nThe keys come loose in your hands" t+keys s=18.0 + west|leave 18 m="The door is closed, and prevents your exit." + up 18 m="under construction" + down 18 s=18.2 m="The elevator plummets with a squeal of old machinery." + +#18.2 library elevator +You're in an elevator used by the building staff at one time. The elevator was +controlled by buttons. The buttons are labeled 'up' and 'down' +There are some keys sticking out of an oddly shaped keyhole on the button panel. + up 18 s=18.1 m="The elevator jumps up with a jerk, then stops." + down 18 m="Nothing happens." + out m="You can't leave, the doors are locked." + lock 18 s=18.3 m="The doors open, and the keys fall into your hands." t+keys + +#18.3 Elevator +You're in an elevator used by the building staff at one time. The elevator was +controlled by buttons. The buttons are labeled 'up' and 'down' +There is also an oddly-shaped keyhole on the panel with the buttons. + out 19 + west 19 + down 18 m="Nothing happens. The buttons seem to be locked." + up 18 m="Nothing happens. The buttons seem to be locked." + unlock 18 t?keys s=18.2 + +#19 Elevator anteroom. +You're in a little anteroom just to the west of an elevator. There are signs +over doors to the west and south. The signs read, respectively +'Science fiction section' and 'Raymond Chandler Room' + west 20 + south 43 v+2.2 + east 18 s?18.3 + east 19 m="The elevator doors are closed." + +#20 Science Fiction antechamber. +You're in the outer chamber of a once-famous collection of science fiction. +There are doors in all directions, and of all different shapes. + east 19 + west 22 + north 23 m="The doorway closes behind you like a certain orifice." + south 25 + + +#22 star-trek room. +You're in the Star-Trek room. This was quite a tourist draw in its time. +Its a mock-up of the Enterprise bridge. Nothing works, of course. +The weapons control board is lit, and a button marked +'Photon Torpedo FIRE' is blinking. + out|east 20 m="[Shtoonk!] The doors open as you pass." + push\ button 22 c?1 m="The screen breaks open and the ziegfield follies girls rush by you and out." + push\ button 22 c?20 m="[ZAAAAP!!!]" + push\ button 22 c?25 m="[BZZZZZZZZTTT!]" + push\ button 22 c?33 m="[beep!]" + push\ button 22 c?50 m="Nothing happens." + push\ button 22 m="[Pow!]" + warp 22 m="HmmmmmMMMMMMM......" + +#23 Moorcock section +You're in the Michael Moorcock room of the sci-fi section. The books are long +dust, but the mirrors on all sides of the room are amazingly clean. +The wall on the south is made of some sort of flesh. It has puckered +closed. There is a door to the north. + south 0 m="The fleshy wall is tougher than flesh, and won't open." + cut\ wall 0 t?sword m="The sword bounces off the wall; the wall has no soul." + cut\ wall 0 t?knife m="The knife is not strong enough to cut the wall" + cut\ wall 0 m="With what?" + tickle\ wall|tickle\ flesh 0 t?feather s=23.1 m="The Wall shudders, and dialates (how moritfying!)" + tickle\ wall|tickle\ flesh 0 m="With what?" + take\ sword 0 t?sword m="You already have it!" + take\ sword 0 o?sword m="There is a faint chuckle from somewhere when you lift the sword.\nIt seems as if you have held it before, and there isin your soul a terrible\nambivalence. Shockingly, the sword seems to settle into your hand of its own\naccord, and a faint hum, something like a dirge and something like a spell\nbeing cast comes from the weapon." t+sword + north 24 s=23.0 + +#23.1 Moorcock section +You're in the Michael Moorcock room of the sci-fi section. The books are long +dust, but the mirrors on all sides of the room are amazingly clean. +The wall on the south is made of some sort of flesh. It has sagged +open. There is a door to the north. + south 20 s=23.0 + cut\ wall 0 m="Not much point in that.... It's open." + tickle\ wall 0 t?feather m="The wall is already exhausted, but some giggling is heard" + take\ sword 0 t?sword m="You're already carrying it!" + take\ sword 0 o?sword m="There is a faint chuckle from somewhere when you lift the sword.\nIt seems as if you have held it before, and there isin your soul a terrible\nambivilence. Shockingly, the sword seems to settle into your hand of its own\naccord, and a faint hum, something like a dirge and something like a spell\nbeing cast comes from the weapon." + north 24 s=23.0 + +#24 closet of Moorcock room. +You're in the closet next to the Michael Moorcock room. + south 23 + +#25 Andre Norton room +You're in the Andre Norton room. The place is filled with vicious-looking +sleeping mutant cats! The slightest sound might wake them, so be very careful! + drop c?50 s=25.1 m="Ooops! Shifting your weight to drop that made some noise. You still\nhave it, but one of the cats has awakened!" + north 20 + south c?50 s=25.1 m="Ooops! The cats mutant sense of hearing makes an ordinary footstep sound to\nthem like a doorbell (odd!). Anyway, one cat has awakened." + south 26 v=26.4 + +#25.1 Andre Norton room +You're in the Andre Norton room. The place is filled with vicious-looking +sleeping mutant cats! A cat the size of a small horse has awakened and +is staring intently at you. + north 0 m="I wouldn't, if I were you. The cat seems to be very sensitive to movement" + kill\ cat t?sword m="As you draw your sword, the cat seems to recognize it, and, hissing with\nfear, backs away into the shadows. The sword snickers, and begins...to...sing." + kill t?knife m="With only that knife? Her teeth are bigger than that knife!" + kill 0 m="Oh sure." + south ,,, v=26.4 + south 26 t?sword m="The sword moans slightly, and seems to dip of its own accord towards\none of the still-sleeping cats. You restrain it with some effort." v=26.4 + south m="Not a chance of slipping by that impassive looking cat." + pet\ cat m="The cat begins to purr, and falls blissfully asleep." s=25.0 + +#26 Dune room +You're inside an odd room filled with sand. Mounds of lightly buried, +(and quite mummified), cat dung make it clear why the cats choose to live +next door. There is a sign with the name 'Frank Herbert' here. There is +a door to the north, and part of a door is above the sand to the east. +The air is so dry that it is dangerous to be here for any length of +time; one's skin dries out and.... well. + * ,,, v-26.1 + * ,,, v<26.2 m="Gasp! Skin's going...." + * -1 v?26.0 m="Cough.... (sweat"!) + north 25 + east m="That door is covered with Dung. You would have to dig it out." + dig t?shovel m="Phew! But with a little effort, you doo it [sic]." s=26.1 + dig m="With no shovel? Through all that cat-doo? No Way!" + +#26.1 Dune room +You're inside an odd room filled with sand. Mounds of lightly buried, +(and quite mummified), cat dung make it clear why the cats choose to live +next door. There is a sign with the name 'Frank Herbert' here. +There is a door to the north, and a recently dug-out door to the east. + * ,,, v-26 + * ,,, v<26.2 m="Gasp! Skin's going...." + * -1 v?26.0 m="Cough.... (sweat"!) + north 25 + dig t?shovel m="Phew! Unrewarding!" + dig m="With no shovel? Through all that cat-doo? No Way!" + east 27 + +#27 computer-game room +You're in a room used to give demonstrations of computer games. There is +a dessiccated corpse still seated at a console, which still displays +the words 'How? With your bare hands?' There is a bright red button here +marked 'off.' There are exits to the west, north, and south. + push\ red|push\ button -1 m="That'll teach ya...." + north 19 m="You slip though some one-way doors." + south 25 m="As you step through, you notice the smell of cats." + west 26 v=26.4 + yes 2 m="The panel glows, and the familiar 'beam-me-up' sound is heard." + no 0 m="nothing happens." + +#28 chapel stairs. +You're at the foot of some stairs which lead into a chapel. +A path leads north, and some stairs lead south and up. + up|south 29 t?sword m="The sword seems to moan and shudder in your hand." + up|south 29 + north 1 + +#29 inside chapel. +You're inside what was once a very, very, socially prominent church. +Murals on the wall show the 'prophet of WWXII', called 'Bo Diddley' by some, +performing the Miracle of the Unclasped Hand. Which happened on +the very ground on which you now stand!!!!!! +There is a door to the north. + out|north 28 + drop\ sword 0 m="A sort of gulping, sucking sound comes from the sword as it drops from your\nhand at last." t-sword o+sword + take\ murals m="The murals are stuck onto the walls." + +#30 dark stairs +You're at the top of some dark stairs. A passage goes west towards some +faint light. + down 31 + west 5 + +#31 You're at the fork in passage. +You're at a fork in a gloomy passage. Sub-passages lead north and south. +There are stairs leading up. + up 30 + north 32 + south 33 + +#32 projection room. +You're in a projection room of some sort. There are many old style +fork switches here. Most have oxidized solidly in place, but one looks +like it was recently installed. It is open. There is one door to the south. + throw|switch|close s=33.1 s=32.1 s=40.1 + south 31 + +#32.1 +You're in a projection room of some sort. There are many old style +fork switches here. Most have oxidized solidly in place, but one looks +like it was recently installed. It is closed. There is one door to the south. + south 31 + open m="[pfft"!] s=33.0 s=32.0 s=40.1 + +#33 Movie Room. +You're in a medium-sized screening room. The screen is dark right now. +There's an open door to the north, and out-only doors to the +southwest and southeast. + north 31 + southwest 37 + southeast 40 + +#33.1 Movie Room. +You're in a medium sized screening room. There is a film being played +over and over again. The film is titled:\n\n\t +'U.S. Army -- Training film #356412864 -- Veneral Disease.\n\n +There's an open door to the north, and out-only doors to the +southwest and southeast. +The film is pretty grotesque, except for the beginning part. + north 31 + southwest 37 + southeast 40 + +#34 Sex book room. +You're in the Blaster's & Swanson collection of erotic books. This place +was clearly looted, but perhaps something of value remains. To the north +are some unclean looking movie booths. To the west is a low hallway with +the a sign on it. There is a hole in the floor, but if you went down, you +probably couldn't get back up again. + west 8 + read\ sign m="The sign says 'Remember Stack Pass'" + read\ book m="Unfortunately, almost all the books are sealed shut with age and, well." + down 36 + north 35 + take\ vibrator o~vibrator m="Maybe you had better just think about it, or take a shower." + take\ vibrator c?50 o?vibrator m="Are you sure you want to do that? Nobody's watching?" + +#35 Movie booth +You're in one of those little movie booths. There is a coinbox with a +sign on it. You are sitting on a little bench facing a plastic +rear-projection screen. + read m="The sign says: Insert one quarter for thrills!" + insert\ coin o~coin m="No coin here fella." + insert\ coin o?coin m="There is a click, a whir, and then a flash from the screen as the light\nburns out." o+coin@36 + out|south 34 + +#36 bookie shop. +You're in what was once a bookie operation run out of the library. +To the north is a basket which caught the coins from the coinslots +in the movies above. To the south is a dark doorway. + south 5 + +#37 Men's room. +You're in a musty-smelling men's room. The urinals are filled with some sort +of softly-glowing fungus. The doors have all fallen off of the stalls. There +is a vending machine here. There are three knobs lettered 'a', 'b', and +'c' sticking out of it. A sign on it says: 'Insert $0.25 and pull knob +for merchandise.' There is a door to the northeast. + ne 33 + pull\ a|pull\ b|pull\ c m="A sign on the machine lights up 'Pay' -- Then Pull'\n" + push\ a m="Coin first, idiot!" + insert\ $0.25 m="The machine does accept quarters, if you have one." + insert\ quarter t~quarter m="You don't seem to have one on you." + insert\ quarter c?30 s=37.2 m="Ka-CHUNK"! o-quarter + insert\ quarter s=37.1 m="KA-chin... Ooops! It seems to have stuck!" o-quarter + +#37.1 Men's room. +You're in a musty-smelling men's room. The urinals are filled with some sort +of softly-glowing fungus. The doors have all fallen off of the stalls. There +is a vending machine here. There are three knobs lettered 'a', 'b', and +'c' sticking out of it. A sign on it says: 'Insert $0.25 and pull knob +for merchandise.' There is a door to the northeast. + ne 33 + hit\ machine c?50 m="...CHUNK! That seems to have freed it up." s=37.2 + hit\ machine m="That didn't quite do the trick..." + pull\ a|pull\ b|pull\ c m="A sign on the machine lights up 'Pay' -- Then Pull'\n" + push\ a m="Coin first, idiot!" + +#37.2 Men's room. +You're in a musty-smelling men's room. The urinals are filled with some sort +of softly-glowing fungus. The doors have all fallen off of the stalls. There +is a vending machine here. There are three knobs lettered 'a', 'b', and +'c' sticking out of it. A sign on it says: 'Insert $0.25 and pull knob +for merchandise.' There is a door to the northeast. + ne 33 + pull\ a s=37.0 o+comb m="[clatter"!] + pull\ b s=37.0 o+guidebook m="[plop"!] + pull\ c m="Button 'c' doesn't pull out. Maybe it is empty." + push\ c m="The vending machine slides into a wall." s=37.3 + +#37.3 Men's room. +You're in a musty-smelling men's room. The urinals are filled with some sort +of softly-glowing fungus. The doors have all fallen off of the stalls. There +is a vending machine here which has slid out of the way to reveal a +secret passage going south. + pull\ c m="The vending machine slides back out of the wall, closing off the passage." s=37.0 + pull\ a|pull\ b m="It won't budge while the machine is in the wall." + south 38 + ne 33 + +#38 Plagarism archives. +You're in a room reserved for examples of plagarism. There are doors to +the north, south, and east. There is also a large pit in the center +of the room. It's too dark to see the bottom. + north 37 + south 39 m="As you go through the door you see a sign that says: K. Laumer/P. Langston&NH\nYou have 50 credits." v=6.50 + east 40 + +#39 Spaceport Bar +You are in the Spaceport Bar on Aldebaran III, which is now deserted +except for you and the burly bartender whose eyestalks keep twitching +suspiciously in your direction. A large sign hangs over the bar. + read\ sign t~guidebook m="The sign says 'Jsu Snarret POTE kirs meawed jokero quakonk!'\n(obviously some local dialect)." + read\ sign m="The sign says 'All Terrans MUST show papers before leaving"!' + show\ papers m="The bartender checks your papers and grunts in amazement." + buy\ drink v>6.4 v-6.5 m="It cost 5 credits but it's good and you slurp it down!" + buy\ drink m="A drink costs 5 credits and you ain't got it." + bribe\ bartender v-6.10 m="The bartender solemnly folds your 10 credit offering into his apron." + hit\ bartender m="No way! With those six meatcleavers for manipulative members you wouldn't even\nbe good for a bloody mary!" + ask m="The bartender doesn't seem too friendly towards you at the moment." + out|north 38 + +#40 Behind projection room. +You're behind a projection room. The screen is dark. It's pretty dusty back +here. There are spiral stair leading up, but they look pretty shaky. There +are doors to the north and west. + north 33 + west m="It's a one-way door (the other way.)" + up 41 m="Those stairs are almost too weak to hold your weight." + +#40.1 Behind projection room. +You're behind a projection room. The screen is lit with blurry figures. +It's pretty dusty back here. There are spiral stairs leading up, but they +look pretty shaky. There are doors to the north and west. + north 33 + west m="It's a one-way door (the other way)." + up 41 m="Those stairs are almost too weak to hold your weight." + +#41 Spiral Staircase Chamber. +You're in a square chamber 5 cubits by 7 cubits by 8 cubits high. +The top of a spiral staircase pokes out of the floor here. +There is an evil gnome here, bristling at you! + kill\ gnome -1 t~knife t~sword c?85 m="The gnome whips his knife up and kills you." + kill\ gnome t?sword m="The black sword pulses in your hand and begins to hum evilly at the\nunfortunate gnome. The gnome pales, and leaps at you, hoping to score\nwith the knife. The sword snarls, and forces your arm up, spitting him.\n\nHis body vanishes." s=41.1 + kill\ gnome t?knife s=41.1 m="Startled that you have a knife, the gnome jumps back." + * c?20 m="'Sure, kid' says the gnome, pulling out a nasty looking barbed knife" + * c?20 m="'Up your nose with a rubber hose.' screams the monster." + * m="The gnome is armed and will not let you pass without a fight!" + +#41.1 Spiral Staircase Chamber. +You're in a square chamber 5 cubits by 7 cubits by 8 cubits high. +The top of a spiral staircase pokes out of the floor here. +There is an evil gnome here, waving a knife at you! + kill\ gnome c?20 m="The gnome dances back from your attack (watch out for a stop thrust)." + kill\ gnome o~shoe c?20 m="The gnome mutters a Spanish curse and kicks off a shoe at you.\n\nThat misses." o+shoe + kill\ gnome c?20 m="'CARAMBA!' yells the gnome as you knick him in the fleshy part of his arm." + kill\ gnome c?20 m="'!MADRE DE DIOS!' hollers the gnome as you slice off one of his fingers." + kill\ gnome c?20 m="'ELECTRIC DONKEY BOTTOM WIPER!' snarls the gnome as your knife cuts his cheek.\nThe gnome seems to have a French accent." + kill\ gnome c?70 s=41.2 m="It's hearts & flowers time for the gnome as your knife guts his spleen" + kill\ gnome -1 c?10 m="The gnome unexpectedly pulls an old Mexican trick on you and neatly\nexcises your liver" + * -1 c?40 m="The gnome seizes the opportunity and slices you all the way from Moose\nCreek to Otter Valley." + * m="Better keep you eye on that gnome, buddy!" + kill\ gnome -1 c?10 m="The gnome unexpectedly pulls an old Mexican trick on you and neatly\nexcises your liver + +#41.2 +You're in a square chamber 5 cubits by 7 cubits by 8 cubits high. +The top of a spiral staircase pokes out of the floor here." + out|leave|east 40 + down 42 + +#42 Vault. +Your're in an anteroom facing a large bank vault door. Rather than +a combination lock, the door has a small sign saying 'Door opens when +other ____ falls.' +There is a spiral stair going up. + up 41 + drop\ shoe t?shoe m=\ +"The shoe falls, and the door opens to reveal a solid brick wall +with the words 'under construction' splashed in spray paint on the wall." + +#43 Mystery Section +You're in the famous Raymond Chandler Memorialmystery collection. +There are thousands of mystery books here, all of them decayed by +the years and by too-critical readers into pulp. + * v=4.5 ... + north 19 + + +#44 Entrance to Pusey +You're at the entrance to the subsidiary Pusey library. It was +called the "Pusey Pit" in its day because it is entirely underground. +except, of course, for this entrance. +A passage enters the library, and another leads north + east|enter|in m="The entrance is blocked" + north 46 + west 1 + +#46 West side of library. +You're on the west side of the main library, in a passage between +it and Pusey. + north 47 + south 44 + +#47 Dexter Gate +You're on a well beaten path that ends here at an old iron gate. The +path was beaten by computer fanatics on their way to the computer +center from the so-called "river houses." + south 46 + north m="The old iron has some strength in it yet. You can't pass" + west 48 + +#48 Back Door +You're at the back door of the main library. There is a lot of ivy +clinging to the walls here, and ivy tendrils hang over most of the door, +waving as if in a breeze.... but there is no breeze. + in|south|enter m="you move forward, but the ivy grabs at you and you must leap back!" + under|crawl\ in|crawl\ south|crawl\ under 49 m="The ivy cannot reach you and so you get in." + +#49 Rear anteroom +You're inside an anteroom at the back of the library. There is an exit +to the north that looks partly blocked by ivy. The main chamber is +to the south. + south 50 + north m="The ivy, which prefers grabbing foes from the inside, wraps around your throat." ... + north t~sword -1 m="... and chokes you death" + north t?sword 48 m="The sword snarls, as if angry at doing menial work, and hacks off some of the ivy. the rest spreads itself out of your way and lets you pass." + +#50 Pit room +"You're in a large circular room with a pit in the middle. A faded sign over +the pit says: + + Throw Literary Critics + + HERE! + | + | + V + + +Bubbling sounds come from the pit." + north|jump -1 m="Geronimooooooooooooo........" + throw\ critic o?critic o-critic m="Noooooo! Agh! AAAAAaaaaahhhhh...." + throw\ critic o~critic m="You seem to be out of critics." + ne|east 51 + west m="steel bars block your way" + south 49 + +#51 East side of pit. +You're on the east side of a very deep pit from which come bubbling sounds. +There's a door to your east. + sw|west 50 + east 52 + jump -1 m="Geronimooooooooooooo........" + +#52 stairwell +You're in a stairwell. Stairs go up and down, and an exit leads west. + west 51 + down 53 + up m="under construction" + +#53 stairwell +You're in a stairwell. Stairs go up and down, and an exit leads west. + west 54 + up 52 + down 55 + +#54 Krazy Komix Kollection +You're in a shelf lined room with comfortable, leather lined chairs, +the bottoms of which are lined with fossilized chewing gum. +A brass plate set in the wall says 'Krazy Komix Kollection' + * v=2.5 ... + east|out 53 + +#55 stairwell +You're in a stairwell. Stairs go up and down, and an exit to the west +is locked. + up 53 + west|out 56 + +#56 spike room +You're in a medium size room the walls of which are lined with +inward-pointing spikes. There's one exit to the east. + east|out 55 + +#127 inside sack +You are inside a leather sack. There is some light above you. + out|up|remove\ bag %101% diff --git a/mac b/mac new file mode 100644 index 0000000..e1a84a8 --- /dev/null +++ b/mac @@ -0,0 +1,102 @@ +.ig + Loosely based on Bell manual macros + psl 5/78 +.. +.if 1-\nP .nr P 66 +.pl \nP +.nr in 5 +.de i0 +.in \n(in +.. +.de lp +.i0 +.ta \\$2 +.in \\$1 +.ti -\\$2 +.. +.de s1 +.sp 1 +.ne 4 +.. +.de s3 +.sp 1 +.. +.de fo +.ev 1 +.sp 1 +.tl ''- % -'' +.bp +.ev +.. +.de th +.de x1 +'sp 2 +'if \\n(.$-2 'tl '\\$1(\\$2)'\\$3'\\$1(\\$2)' +'if !\\n(.$-2 'tl '\\$1'\\$2'\\$1' +'sp 1 +\\.. +.wh -6 fo +.wh 0 x1 +.in \n(in +.. +.de sh +.s3 +.s1 +.ne 5 +.ti 0 +\\$1 \" (used to be .bd "\\$1") +.s3 +.. +.rn bd Bd +.de bd +\kX\\$1\h'|\nXu+2u'\\$1 +.. +.de bn +.tr __ +.ul +\\$1 \c +.. +.rn it il +.de it +.tr __ +.ul +.li +\\$1 +.. +.de dt +.ta 8 16 24 32 40 48 56 64 +.. +.ds b \(*b +.ds G \(*G +.ds a ' +.ds - - +.ds _ _ +.ds v | +.ds ' ' +.ds p \(*p +.ds r +.ds g ` +.ds X X +.ds u u +.ds > -> +.ds | +.de UL +.cu 1 +.li +\\$1 +.. +.de EX +.ti 0 +.li 1 +.. +.de CC \" Copyright notice +.sp +.ce 2 +Copyright (c) by Peter Langston, N.Y.C. +All rights reserved. +.. +.ds DC . +.ds EC \\\\ +.ds SC @ +.ds VC % +.ds T \t diff --git a/misc.nr b/misc.nr new file mode 100644 index 0000000..d1b56df --- /dev/null +++ b/misc.nr @@ -0,0 +1,247 @@ +.so mac +.th "WANDER .MISC SYNTAX" 4/80 +.sh "SYNTAX OF THE .MISC FILE FOR WANDER" + +The +.it .misc +file contains all the location-independent information to describe +a particular "world". +.s1 +The file consists of a series of sections. The sections are: +.nf + + Introductory message + +.mc | + Word definitions +.mc + + Pre-actions + + Post-actions + + Variables + + Notes + +.fi +Any lines in the file that begin with a colon, ":" will be ignored +as comments by +.it Wander. +.sh "INTRODUCTORY MESSAGE" +The introductory message is printed out when wander is first run. +It is not printed out +when wander files are switched during a run, (possible with +.mc | +the "init" verb and the "w=" result field). +.s3 +.mc +.mc | +The introductory message may be any number of lines in length, +(but is limited to a maximum of 1024 characters), +and may contain blank lines, but must not contain a line beginning with a tab +.mc +or space unless the entire message is enclosed in quotes. +If blank space is required at the beginning of a line in an unquoted +introductory message use an escaped space, "\*(EC ", to begin the line. +If you wish to include quote characters in the message they must also be +escaped. +.br +.mc | +.sh "WORD DEFINITIONS" +Word definitions usually fall into two conceptual categories, "verbs" and +"objects" and will be treated that way here although they may be intermingled +freely if the resulting confusion is unimportant. Note that since there +may be any number of "words" sections it is common to have a section with +the header "words (verbs)" and one with "words (objects)". +.sh "WORD (VERB) DEFINITIONS" +.mc +This section is used for defining verbs that have several forms which should +be equivalent (synonyms). It is not necessary to define verbs that don't +need synonyms, although it does no harm to do so. +.s3 +.mc +The verb synonym section is headed by a line containing a tab or sqaces +followed by the word "words" which is optionally followed by "verbs" or +"(verbs)". +.s3 +.mc +Verbs are entered one per line, followed by spaces or a tab and a number. +This number is zero, (or omitted), if the verb is the primary form, +(i.e. the form +that the program will use when it prints the verb out for any reason). +Synonyms will be folowed by ascending integers. +.s3 +Confusing? For example, +if "hit", "strike", "break", "battle" and "attack" are to be synonyms, +with "attack" being the preferred form, the following would define them. +.nf + +attack 0 +hit 1 +strike 2 +break 3 +battle 4 + +.fi +Note that "strike" must be followed by a "2" in the above, else it would +not be a synonym for "attack". +.br +.mc | +.sh "WORD (OBJECT) DEFINITIONS" +This section is used for defining objects that either +have synonyms, or are to be placed in specific locations at the beginning of +the wander, (or being carried by the person playing). +.s3 +The object definition section is headed by a line containing spaces or a tab +and the word "words" optionally followed by something like "objects" +or "(objects)". +.s3 +Objects are entered one per line, followed by spaces or tabs and +up to three numbers. +.br +The first number is zero if the object is the primary form +or an ascending integer if the object is a synonym. +.br +The second number is either the number of the location in which the object +is to appear, zero, or "-1" indicating that the player is already carrying +it. +.br +The third number is a flag indicating "special handling" when describing +the object. It is the sum of any combination of the following numbers: +.nf + 1 The obj is singular even though it ends with an 's' + 2 The obj is plural even though it doesn't end with an 's' + 4 The obj already contains an article; so don't supply one + 8 The obj is a complete description as is; so don't use + constructions like "there is a *** here" for it. +16 This form of the obj is to be used ONLY when describing + it in a location, not when being carried, dropped, etc. +.fi +Note that 1 and 2 need only rarely be used, e.g. if you have a 'princess' +she will be described as "some princess", +as in "there are some princess here", + unless you specify a 1, but seldom +do such examples seem to arise. +Note also that 8 usually requires 16, (i.e. 24), whereas 16 doesn't always +require 8. +If you use the 16 code be sure that it is the zeroth synonym and that there +is a first synonym following it that can be used for the carrying, dropping, +etc. cases. +.s3 +Any omitted number is assumed to be zero. +.s3 +For example, if something called "credit card" is to appear in location +26 and is to have "card" as a synonym, the following would be appropriate: +.nf + +credit\*(EC card 0 26 +card 1 + +.fi +If the object "wallet" is to be carried by the player at the very beginning +then it would be defined as: +.nf + +wallet 0 -1 + +.fi +If the object "sword" is going to appear through some action during the +wander and will change subtly when it is being carried then it could be +defined as: +.nf + +sword 0 0 16 +glowing\ sword 1 + +.fi +Note that the omitted numbers default to zeroes. +.mc +.sh PRE-ACTIONS +Pre-actions are global actions that are checked before any local actions. +.s3 +The order of search for matches to user commands is: +.nf + 1) pre-actions (from .misc) + 2) location.state actions (from .wrld) + 3) location base state actions (from .wrld) + 4) post-actions (from .misc) + 5) built-in actions (quit, look, shell, etc) +.fi +.s3 +The pre-actions section is headed by a line containing spaces or tabs +followed by the word "pre", (actually only the "pr" is checked). +.s3 +Each action takes one line which starts with spaces or tabs +and has the same format as actions in the +.it .wrld +file, (see ".wrld" documentation for details) +.s3 +A typical use might be, in a situation where the credit card defined above +must be "insert"ed into machines to be used and you'd like not to have to +check in each location whether the user has the card, to include the +following: +.nf + +.mc | + insert\*(EC card o~card m="You don't have a credit card." +.mc + +.fi +In the case that someone says "insert card" without having one, the above +message will be output and no local action will be invoked. If, on the +other hand, the card is there the "o~card" condition will not be met and +searching will continue in the local actions. +.sh POST-ACTIONS +Post-actions are used to provide default actions in the case that no +local action is provided for a particular command. +Their format is +the same as pre-actions except that their header is a line beginning with +spaces or tabs and the word "post". +.s3 +A typical example is to provide a way of +determining your credit balance at any time. +.nf + +balance o~card m="You need a credit card to do that!" +balance o?card m="Your account now stands at %6% credits." +.fi +(This assumes that variable 6 contains the number of credits.) +.sh VARIABLES +This section contains initializations of variables and is also a handy +place to keep information about the use of variables. +.s3 +The variables section is headed by a line containing tabs +or spaces and the word "variables". +The format for the following lines is: + +variable number initial value comments. + +For example: +.nf + +0 0 number of treasures found +1 0 number of vampires killed +2 50 dollars in bank account +3 0 temp variable used for dice game +CUR_LOC 3 starting location +MAX_CARRY 4 maximum number of things that can be carried at once + +.fi +Notice the use of the mnemonic names "CUR_LOC" and "MAX_CARRY"; these +are special, built-in variables and are described further in "wander.doc". + +.sh NOTES +The notes section is ignored by +.it Wander +and is provided as a convenient spot to record such things as +reminders of expansion plans, etc. +.s3 +The notes section is headed by a line containing tabs +or spaces and the word "notes". +.s3 +Notes can also be included anywhere in the file in lines that begin with ":". +.sh BUGS +.sh "SEE ALSO" +wrld.doc, wander.doc +.CC diff --git a/tut.misc b/tut.misc new file mode 100644 index 0000000..25f3d9e --- /dev/null +++ b/tut.misc @@ -0,0 +1,28 @@ +: (c) P. Langston, 1978 +You are about to play with, (learn about), logical bit operations. + +If you find you're having a hard time answering a question type \"hint\". +On the other hand, if you want to give up on a question type \"uncle\". + + words +0 +1 +10 +11 +100 +101 +110 +111 +1000 +1001 +1010 +1011 +1100 +1101 +1110 +1111 + + post actions + quit|shell|look|options v=9.1 ... + * v?9.0 v+1.1 m="Nope, try again." + * v?9.1 v=9.0 ... diff --git a/tut.wrld b/tut.wrld new file mode 100644 index 0000000..82b71ba --- /dev/null +++ b/tut.wrld @@ -0,0 +1,112 @@ +: (c) P. Langston, 1978 +#1 What would the binary number for six be? +"Logical bit operations use binary numbers -- that's numbers with only +ones and zeroes. The numbers that we usually use are called \"decimal\" +and use the digits 0, 1, 2, 3, 4, 5, 6, 7, 8, and 9. +You can see that binary stuff should be easier than decimal -- and it is! + + Decimal Binary + 1 1 These columns of numbers are the same, + 2 10 just expressed in two different ways. + 3 11 + 4 100 + 5 101 +The next DECIMAL number is \"6\", what would the next BINARY number be?" + 6 v+1.1 m="No, that's the DECIMAL number for six." + 110 2 m="Right on!\n" + hint m=\ +"If you add 1 + 2 you get 3, in binary that's 1 + 10 = 11 +Try 2 + 4 = 6 in binary..." + uncle 2 v+2.1 m=\ +"The answer is 110 -- Notice that 100 (4) + 10 (2) = 110 (6) !\n" + +#2 What does 1 & 1 equal? +"Now you're going to learn about the AND operation. +The symbol used for AND is \"&\". The logical AND is usually diagrammed as: +\ 0 | 1 | This means that +\ +------+-------+ 0 & 0 = 0 +\ 0 | 0 | 0 | 0 & 1 = 0, +\ -----+------+-------+ 1 & 0 = 0, +\ 1 | 0 | 1 | etc. +\ -----+------+-------+ +What would 1 & 1 be?" + 0 v+1.1 m="No, but you're close..." + 1 3 m="You got it!\n" + 2 v+1.1 m=\ +"No, that's the answer for 1 + 1. +Notice that the AND operation is very similar to multiplication, +except there are no \"carries\"." + hint m=\ +"ANDing binary digits together is just like multiplying them..." + uncle 3 v+2.1 m=\ +"The answer is 1. If you look in the square that's under the 1 on top +and to the right of the 1 on the left you'll see a 1. +That means that 1 & 1 = 1.\n" + +#3 What does 110 & 101 equal? +Okay, now you're ready to learn about ANDing bigger numbers. +\ \ \ 01 & 11 = 01 +If you ANDed together 01 and 11 you would get 01 because +the first bit of 01 is ANDed with the first bit of 11, (0 & 1 = 0); +and the second bit of 01 is ANDed with the second bit of 11, (1 & 1 = 1). +What would you get if you ANDed together 110 and 101? + 100 4 m="Great! You got it.\n" + 110 v+1.1 m="No, the second bit is wrong." + 101 v+1.1 m="Nope, the third bit is wrong." + hint m=\ +"Think of it as three little problems. 1 & 1 = ? 1 & 0 = ? and 0 & 1 = ? +Then take the three answers and run them together." + uncle 4 v+2.1 m=\ +"The answer is 100. Think of it as: + 1 1 0 +& 1 0 1 +------- + 1 0 0" + +#4 What does 1 | 0 equal? +"Now let's look at logical OR (symbol is \"|\"). +Here's the diagram for logical OR: +\ 0 | 1 | +\ +------+-------+ +\ 0 | 0 | 1 | +\ ------+------+-------+ +\ 1 | 1 | 1 | +\ ------+------+-------+ +What does 1 | 0 = ? " + 1 5 m="Nice going!\n" + 0 v+1.1 m="You had a 50/50 chance and you blew it!" + hint m=\ +"Look at the square under the 1 and on the line with the 0 at the left." + uncle 5 v+2.1 m=\ +"The answer is 1. When you're ORing two 1 bit numbers together the answer +will be 1 unless the two bits are BOTH 0 (upper left corner of the diagram)." + +#5 What does 1010 | 1100 equal? +Let's try ORing some bigger numbers. Remember that you treat each bit position +separately to get the answer. +What does 1010 | 1100 equal? + 1010 v+1.1 m="No, the second bit should be = 0 | 1" + 1100 v+1.1 m="The third bit should be = 1 | 0" + 1110 6 m="Yup, that's it!" + hint m=\ +"Think of it as: + 1 0 1 0 +| 1 1 0 0 +--------- + ? ? ? ?" + uncle 6 v+1.2 m="The answer is 1110\n" + +#6 Do you want to know how well you did? +You're all done for today. That was easy, huh? (and FUN, too!) +Do you want to know how well you did? + yes -2 v>2.3 m="You did terrible! You gave up on %2% questions." + yes -2 v>2.1 m="You did so-so, but you gave up on %2% questions." + yes -2 v>2.0 m="You gave up on one and got %1% wrong." + yes -2 v<1.1 m="You got a perfect score!" + yes -2 v<1.5 m=\ +"You got only %1% wrong -- that means you probably learned something!" + yes -2 m=\ +"You got %1% wrong; you probably ought to try this again sometime..." + no -2 m="Okay, be that way..." + hint m="Type yes (of course)." + * ... m="Please answer the question." diff --git a/wanddef.h b/wanddef.h new file mode 100644 index 0000000..3076ce3 --- /dev/null +++ b/wanddef.h @@ -0,0 +1,187 @@ +#include +/* +** WANDDEF.H -- Non-deterministic fantasy story tool header +** Global definitions +** Copyright (c) 1978 by Peter S. Langston - New York, N.Y. +*/ + +#define H_SCCS "@(#)wanddef.h 1.5 last mod 4/9/80 -- (c) psl 1978" + +/* CAVEAT: Only those defines marked as "(MOD)" may be changed, +** (also check `wandglb.c' for other modifiable parameters). +*/ + + /* numbers in [] are #bytes data space used for each */ +#define MAXLOCS 512 /* [2] max locations (MOD) */ +#define MAXACTS 64 /* [10+2*MAXACTWDS+6*MAXFIELDS] acts/state (MOD) */ +#define MAXFIELDS 8/* [6*(MAXACTS+MAXPREACTS+MAXPOSTACTS)] flds/act (MOD) */ +#define PATHLENGTH 64 /* [5] max path length to files (MOD) */ + +#define MAXACTWDS 5 /* [2*(MAXACTS+MAXPREACTS+MAXPOSTACTS)] words/act */ + /* also words/utterance */ +#define MAXVARS 128 /* [2] number of variables, must be == 128 */ +#define BUFSIZE 1024 /* [2+6stack] size of line buffers */ +#define MAXINPNUMS 2 /* numbers/utterance */ + +#define FIELDELIM ' ' /* delimit fields (MOD) */ +#define LINEDELIM '\n' /* delimit lines (MOD) */ +#define ESCHAR '\\' /* escape , , , and (MOD) */ +#define VARCHAR '%' /* indicate variable substitution (MOD) */ +#define DOTCHAR '.' /* make "dotted pairs" as in s=3.2 (MOD) */ +#define ATCHAR '@' /* "at loc pairs" as in o+card@5 (MOD) */ +#define COMCHAR ':' /* indicate comment line (must be first char) */ + +#define BASESTATE -1 /* stuff common to all states of a loc */ +#define FLD1_VAR 0200 /* used in field types */ +#define FLD2_VAR 0100 /* used in field types */ +#define TYPEONLY 0077 /* used to strip previos two from type */ +#define NO_WORD 0 /* indicates no word specified (in acts) */ + + /* return codes from carry_out() and check_act() */ +#define COM_UNREC 0 /* command not recognized */ +#define COM_RECOG 1 /* command recognized */ +#define COM_DONE 2 /* command successful */ +#define COM_DESC 4 /* command needs new prloc() */ +#define COM_NDOBJ 8 /* command needed an object to match */ +#define COM_COMPLETE 16 /* command needs no further attention */ + + /* quit codes (all locs < 0 imply quitting) */ +#define QUIT_SCORE -1 +#define QUIT_QUIET -2 + + /* special variables, must agree with `spvars' in wandglb.c */ +#define CUR_LOC 100 /* current location */ +#define PREV_LOC 101 /* previous location */ +#define INP_W1 102 /* hash of first recognized word in inp comm */ +#define INP_W2 103 /* hash of second recog word from inp comm */ +#define INP_W3 104 /* hash of third recog word from inp comm */ +#define INP_W4 105 /* hash of fourth recog word from inp comm */ +#define INP_W5 106 /* hash of fifth recog word from inp comm */ +#define INP_WC 107 /* number of words in input comm */ +#define NUM_CARRY 108 /* # of things being carried */ +#define MAX_CARRY 109 /* # of thing poss. to carry at once */ +#define NOW_YEAR 110 /* year of decade (0:99) */ +#define NOW_MONTH 111 /* month of year (1:12) */ +#define NOW_DOM 112 /* day of month (1:31) */ +#define NOW_DOW 113 /* day of week (0:6) */ +#define NOW_HOUR 114 /* hour of day (0:23) */ +#define NOW_MIN 115 /* minute of hour (0:59) */ +#define NOW_SEC 116 /* second of minute (0:59) */ +#define NOW_ET 117 /* elapsed time in Wander (seconds) */ +#define BREVITY 118 /* brevity of place descriptions */ +#define LOC_VIEW 119 /* location description override */ +#define OBJ_VIEW 120 /* object description override */ +#define INP_N1 121 /* numeric value of first number from inp comm */ +#define INP_N2 122 /* numeric value of first number from inp comm */ +#define NUM_MOVES 123 /* number of "moves" */ +#define NUM_PLACES 124 /* number of "places" visited */ + + + /* field types */ +#define F_VOID 0 +#define FT_OBJ 1 +#define FT_NOBJ 2 +#define FT_TOOL 3 +#define FT_NTOOL 4 +#define FT_STATE 5 +#define FT_NSTATE 6 +#define FT_EVAR 7 +#define FT_NVAR 8 +#define FT_GVAR 9 +#define FT_LVAR 10 +#define FT_ODDS 11 +#define FT_EBIN 12 +#define FT_NBIN 13 +#define FT_GBIN 14 +#define FT_LBIN 15 + +#define FR_GOBJ 20 +#define FR_LOBJ 21 +#define FR_GTOOL 22 +#define FR_LTOOL 23 +#define FR_SSTATE 24 +#define FR_ISTATE 25 +#define FR_DSTATE 26 +#define FR_SVAR 27 +#define FR_IVAR 28 +#define FR_DVAR 29 +#define FR_MVAR 30 +#define FR_QVAR 31 +#define FR_CSUB 32 +#define FR_WORLD 33 +#define FR_SBIN 34 +#define FR_IBIN 35 +#define FR_DBIN 36 + +struct paramstr { + int p_pathlength; + int p_maxlocs; + int p_maxwrds; + int p_maxvars; + int p_maxindex; + int p_maxpre; + int p_maxpost; + int p_stbuf; + int p_stbp; +} param; + +struct placestr { + int p_loc; + char p_state; + long p_sdesc; /* text address for short description */ + long p_ldesc; /* text address for long description */ + struct actstr { + int a_wrd[MAXACTWDS]; /* command words */ + int a_rloc; /* result location */ + char a_rcont; /* >0 ==> continue to other actions */ + struct fieldstr { + char f_type; + int f_fld1; + int f_fld2; + } a_field[MAXFIELDS]; /* tests & results */ + int a_msgfp; /* file pointer for message text */ + long a_msgaddr; /* result message text address */ + } p_acts[MAXACTS]; +}; + + /* codes for w_flg */ +#define W_SING 1 /* object is singular */ +#define W_PLUR 2 /* object is plural */ +#define W_NOART 4 /* object contains own article */ +#define W_ASIS 8 /* object contains whole phrase */ +#define W_DONLY 16 /* this form only in descript, not for carrying */ + +struct wrdstr { + char *w_word; /* pointer to text of word */ + char w_syn; /* synonym offset */ + char w_flg; /* plural? need article? descript only? */ + int w_loc; /* where it is; 0=>nowhere, -1=>carrying */ +}; + +struct indexstr { + int i_loc; + char i_state; + long i_addr; +}; + +extern struct indexstr index[]; +extern struct placestr place; +extern struct actstr pre_acts[], post_acts[]; +extern struct wrdstr wrds[], spvars[]; +extern char *thereis[], *aansome[]; +extern char fldels[], vardel[], wrdels[]; +extern char listunused[]; +extern char locfile[], miscfile[], tmonfil[], monfile[]; +extern char curfile[], newfile[], *stdpath, *defmfile; +extern char mfbuf[], wfbuf[]; +extern int maxwrds, maxactwds, pathlength, maxinpwd, maxlocs, maxindex; +extern int maxacts, maxpreacts, maxpostacts, maxfields, maxvars; +extern int ldescfreq; +extern char fieldelim, linedelim; +extern char eschar, varchar, dotchar, atchar, comchar; +extern int monitor, monloc, monstate; +extern int max_carry; +extern char inwrd[][32]; +extern char locseen[], locstate[]; +extern int var[]; + diff --git a/wander.nr b/wander.nr new file mode 100644 index 0000000..244da50 --- /dev/null +++ b/wander.nr @@ -0,0 +1,301 @@ +.so mac +.th WANDER 4/80 +.sh NAME +wander \*- Fantasy story tool +.sh SYNOPSIS +.mc | +.bd wander +[ world ] [ +.bd -r[savefile] +] [ +.bd -t\c +# +] +.mc +.sh DESCRIPTION +.it Wander +is a tool for writing non-deterministic fantasy "stories". +The product is a story whose unfolding is affected by decisions +made by the "reader". +.sp +The optional world argument is described below under "WANDER FILES". +.sp +The +.bd -r +flag allows continuation from a previously "saved" wander. +If the form "-rsavefile" is used the saved wander is restored from +"savefile". "-r" by itself refers to the default save file for the +particular wander world, (e.g. "a3.save" for the world "a3"). +.sp +The +.bd -t\c +# flag turns on tracing of action matching; `#' represents a number +whose value controls the amount of diagnostic output produced. +.sh COMMANDS +Wander includes several built-in commands. Aside from recognizing the +standard compass directions (and their abbreviations), +.mc | +and "up" and "down", +.mc +the following commands are recognized: +.nf + +inventory list objects being carried +take pick up specified object +drop drop specified object +quit stop playing +save quit & save environment for later continuation +.mc | +restore restore saved environment +.mc +look print the long description of the current location +.mc | +init read new .wrld & .misc files, (switch worlds) +.mc + The following debugging verbs only work if you own the files +~snoop give a condensed list of possible actions +~goto m move, magically, to location number "m" +~goto m.n move to location "m" and put it in state "n" +~vars print a list of all non-zero variables +~version print miscellaneous parameter information + +.fi +.mc | +Whenever the word "all" is encountered as the second recognized +word of user input on a line it will be macro expanded. This expansion +replaces the word "all" with each object in the current location including +objects being carried. E.g. "drop all" may expand to "drop keys; drop net; +drop leaflet". +.mc +.sh "WANDER FILES" +The +.it world +argument is used to specify which fantasy "world" you wish to +explore. +Each world is described by a +.mc | +minimum of two files. +.mc +One file, (with the extension +.it .wrld), +contains all location-specific information, (long and short descriptions, +local action keywords, conditions and results); another file, +(with the extension +.it .misc), +contains all the global information, (initial message, +.mc | +word synonyms, initial object locations and characteristics, +.mc +global action keywords, conditions and results). +.s3 +These two files have identical first parts of their names, e.g. if you +wish your world to be called "oz", you would name the files +.it oz.wrld +and +.it oz.misc +respectively and you would execute "wander oz". +If no +.it world +is given when executing +.it Wander, +the default +.it world +.mc | +"a3" is used, (i.e. the files are "a3.wrld" and "a3.misc"). +.mc +.sp +A third, optional file related to a particular world is the +.it .mon +file. If such a file exists, (e.g. +.it oz.mon), +a record of each user's commands will be kept there. +If no such file exists, but a file named "/sys/games/.../wand/wand.mon", +(this name can be changed in "wandglb.c"), +does exist then the record of user's commands will be kept there. +If neither file exists or if the symbol "MONITOR" is defined as "0" +in wanddef.h no record will be kept. +This record is often useful in two ways; +it allows the author to see how other users respond to his/her world +and it allows the author to type notes and suggestions as commands +while running +.it Wander +and later use these notes while modifying the +.it .wrld +and +.it .misc +files. +.sp +When a user "saves" his/her environment it is saved in a file +.mc | +whose name is the world name followed by ".save", ("a3.save" +for the default world, "a3"), +in the current working directory. +.mc +.sh "FILE PROTECTION" +Typically, the author of a +.it Wander +world will want the +.it .misc +and +.it .wrld +files to be unreadable by others except through +.it Wander +itself. A simple way to do this is to generate, for each world, a small +C program that runs setuid to the owner of the world and execs +.it Wander. +For example, if "smith" has files /u/smith/oz.misc and /u/smith/oz.wrld, +the following program would suffice: +.nf + +main() +{ + execl("/usr/games/wander", "oz", "/u/smith/oz", 0); +} + +.fi +This program would be compiled; a.out moved to "oz" in some convenient +location and "chmod 4755 egypt" would be done. +At this point running "oz" would make the user effectively "smith" +and thereby allow the oz files, (which would have mode 0600), to be read. +.s3 +It was decided that using encryption on the files was too weak a defense +against a dedicated world-cracker and too much overhead to be worth the +effort. +.sh VARIABLES +.it Wander +provides 128 variables (numbered 0 through 127) which can contain numeric +values of -32768 through 32767. +The variables numbered 0 through 99 are general purpose and may be used +freely; variables 100 through 127 are set aside for pre-defined uses, +(see below). +These variables are referenced with two syntaxes. +Some constructions require the specification of a variable number; +for instance, "v=6.3" is used to set variable 6 to the value 3. +Note that here the "6" is automatically a variable number, while +the "3" is a simple number. +"\*(VC6\*(VC" would be used to specify substitution of the value +contained in variable 6. +Thus, if variable 3 contains 5 and variable 6 contains 2, +\*(VC3\*(VC is equal to 5, and \*(VC6\*(VC is equal to 2. +Moreover: +.nf + +"v=7.\*(VC3\*(VC" will set variable 7 to 5 +"v+\*(VC6\*(VC.4" will add 4 to variable 2 +"v?\*(VC6\*(VC.\*(VC3\*(VC" will test whether variable 2 is equal to 5. +"m=The answer is \*(VC3\*(VC." will print out as "The answer is 5." + +.fi +.sp +The special variables and their mnemonic names are: +.nf +CUR_LOC 100 current location +PREV_LOC 101 previous location +INP_W1 102 hash of first recognized word in inp comm +INP_W2 103 hash of second recog word from inp comm +INP_W3 104 hash of third recog word from inp comm +INP_W4 105 hash of fourth recog word from inp comm +INP_W5 106 hash of fifth recog word from inp comm +INP_WC 107 number of words in input comm +NUM_CARRY 108 # of things being carried +MAX_CARRY 109 # of thing poss. to carry at once +NOW_YEAR 110 year of decade (0:99) +NOW_MONTH 111 month of year (1:12) +NOW_DOM 112 day of month (1:31) +NOW_DOW 113 day of week (0:6) +NOW_HOUR 114 hour of day (0:23) +NOW_MIN 115 minute of hour (0:59) +NOW_SEC 116 second of minute (0:59) +NOW_ET 117 elapsed time in Wander (seconds) +.mc | +BREVITY 118 brevity of place descriptions +LOC_VIEW 119 location description override +OBJ_VIEW 120 object description override +INP_N1 121 numeric value of first number from inp comm +INP_N2 122 numeric value of first number from inp comm +NUM_MOVES 123 number of "moves" +NUM_PLACES 124 number of "places" visited + 125 reserved + 126 reserved + 127 reserved +Note that the actual variable numbers used by these +may vary in later releases but the +mnemonic names should not -- so use the mnemonics. + +.mc +.fi +A common use of these is the following action: +.nf + +back v=CUR_LOC.%PREV_LOC% m="Hmm, I think we came this way..." + +.fi +Note that "\*(VCINP_W1\*(VC", "\*(VCINP_W2\*(VC", etc. are replaced by the +first, second, etc. recognized input words when used in a text message. +Also note that, if you are carrying 5 things, "v?NUM_CARRY.5" will be true +while "v?\*(VCNUM_CARRY\*(VC.5" will only be true if variable 5 is equal to 5. +.mc | +The two variables INP_N1 and INP_N2 are set to the values of the first +and second "numbers" input in a command by the user. +The corresponding word entries are set to the symbols "N1" and "N2" +so that the following constructions work: +.nf + +"take N1 apples" v+4.\*(VCINP_N1\*(VC m="You now have \*(VC4\*(VC apples." +"add N1 and N2" v=22.\*(VCINP_N1\*(VC v+22.\*(VCINP_N2\*(VC m="Sum is \*(VC22\*(VC" + +.mc +.fi +The ".wrld" documentation describes the uses and syntax of variables in +greater detail. +.sh LOCATIONS +.it Wander +is usually set up for 256 to 512 numbered locations, +(rooms, chambers, whatever), +but this limit can be changed by a parameter in the "wanddef.h" file. +Again, the ".wrld" documentation describes these further. +.sh "SYNTACTIC CONVENTIONS" +In reading both the .misc and .wrld files +.it Wander +uses the following conventions. +In order to allow reasonable formatting of lines the following conventions +are implemented: +.mc | +.nf + +\*(EC is completely ignored, +\*(ECn is replaced by , +\*(ECb is replaced by a , +\*(ECt is replaced by , +\*(ECr is replaced by , +\*(EC" is replaced by " (not considered a "quote"), +\*(EC is replaced by + +.fi +In reading the file, each unescaped tab is +replaced by a single space, and quotes are stripped off. +The resulting and +codes created by the escape sequence using `\*(EC' +are turned into non-delimiting or codes. +In addition, all , and codes that appear in a quoted +sequence of characters are treated as non-delimiters, +(`"press red button"' and `press\*(EC red\*(EC button' +generate the same result), +.mc +Otherwise, is +used as the field delimiter, and is used as the line delimiter. +Throughout the doc files the field delimiter may be described as +"spaces or tabs" indicating that one or more of these characters +may be used to delimit fields. In some places "" is used, meaning +a separator, either spaces or tabs. +.sh CAVEAT +Peter found lots of time to write and play +.it Wander; +however, when it came time to write documentation he found he was pressed for +time (so what's new?). As a result, this documentation is of the bare-bones +variety and probably loaded with errors. Sorry. +.sh BUGS +Ho ho ho. +.sh "SEE ALSO" +wrld.doc, misc.doc +.CC diff --git a/wandglb.c b/wandglb.c new file mode 100644 index 0000000..ce7c90f --- /dev/null +++ b/wandglb.c @@ -0,0 +1,176 @@ +#include "wanddef.h" +/* +** WANDGLB -- Non-deterministic fantasy story tool +** Global storage allocations +** Compile: cc -c -O -q wandglb.c +** Copyright (c) 1978 by Peter S. Langston - New York, N.Y. +*/ + +char *whatglb "@(#)wandglb.c 2.7 last mod 4/9/80 -- (c) psl 1978"; +char *glb_h H_SCCS; + +/* the following defines are used only in wandglb.c and may be changed */ + /* numbers in [] are #bytes data space used for each */ +#define MAXWRDS 768 /* [6] max words incl ones mentioned in actions */ +#define MAXINDEX 768 /* [8] max states total (all locs) */ +#define MAXPREACTS 32 /* [10+2*MAXACTWDS+6*MAXFIELDS] max pre actions */ +#define MAXPOSTACTS 128 /* [42+2*MAXACTWDS+6*MAXFIELDS] max post actions */ + + +struct indexstr index[MAXINDEX]; + +struct paramstr param; + +struct placestr place; + +struct actstr pre_acts[MAXPREACTS]; +struct actstr post_acts[MAXPOSTACTS]; + +struct wrdstr wrds[MAXWRDS] { + listunused, 0, 0, MAXWRDS, /* hopefully nothing matches this */ + "inventory", 0, 0, 0, + "take", 0, 0, 0, + "pick", 1, 0, 0, + "drop", 0, 0, 0, + "quit", 0, 0, 0, + "save", 0, 0, 0, + "restore", 0, 0, 0, + "look", 0, 0, 0, + "initialize", 0, 0, 0, + "north", 0, 0, 0, + "n", 1, 0, 0, + "south", 0, 0, 0, + "s", 1, 0, 0, + "east", 0, 0, 0, + "e", 1, 0, 0, + "west", 0, 0, 0, + "w", 1, 0, 0, + "up", 0, 0, 0, + "u", 1, 0, 0, + "down", 0, 0, 0, + "d", 1, 0, 0, + "northeast", 0, 0, 0, + "ne", 1, 0, 0, + "southeast", 0, 0, 0, + "se", 1, 0, 0, + "southwest", 0, 0, 0, + "sw", 1, 0, 0, + "northwest", 0, 0, 0, + "nw", 1, 0, 0, /* must be the last direction verb */ + "~snoop", 0, 0, 0, /* this only works if you are owner */ + "~goto", 0, 0, 0, /* this only works if you are owner */ + "~vars", 0, 0, 0, /* this only works if you are owner */ + "~version", 0, 0, 0, /* this only works if you are owner */ + "*", 0, 0, 0, + "N1", 0, 0, 0, + "N2", 0, 0, 0, + "all", 0, 0, 0, /* used in "take all" & "drop all" */ + 0, 0, 0, 0, /* "all" must be the last defined here */ +}; + +struct wrdstr spvars[] { /* special construct & their meanings */ + "CUR_LOC", 0, 0, CUR_LOC, + "PREV_LOC", 0, 0, PREV_LOC, + "INP_W1", 0, 0, INP_W1, + "INP_W2", 0, 0, INP_W2, + "INP_W3", 0, 0, INP_W3, + "INP_W4", 0, 0, INP_W4, + "INP_W5", 0, 0, INP_W5, + "INP_WC", 0, 0, INP_WC, + "NUM_CARRY", 0, 0, NUM_CARRY, + "MAX_CARRY", 0, 0, MAX_CARRY, + "NOW_YEAR", 0, 0, NOW_YEAR, + "NOW_MONTH", 0, 0, NOW_MONTH, + "NOW_DOM", 0, 0, NOW_DOM, + "NOW_DOW", 0, 0, NOW_DOW, + "NOW_HOUR", 0, 0, NOW_HOUR, + "NOW_MIN", 0, 0, NOW_MIN, + "NOW_SEC", 0, 0, NOW_SEC, + "NOW_ET", 0, 0, NOW_ET, + "BREVITY", 0, 0, BREVITY, + "LOC_VIEW", 0, 0, LOC_VIEW, + "OBJ_VIEW", 0, 0, OBJ_VIEW, + "INP_N1", 0, 0, INP_N1, + "INP_N2", 0, 0, INP_N2, + "NUM_MOVES", 0, 0, NUM_MOVES, + "NUM_PLACES", 0, 0, NUM_PLACES, + 0, 0, 0, 0, +}; + +char *thereis[] { + " ", "There is ", "There is ", "There are ", +}; + +char *aansome[] { + " ", "a ", "an ", "some ", +}; + +char fldels[] { FIELDELIM, LINEDELIM, 0, }; /* delimits fields */ +char vardel[] { VARCHAR, 0, }; /* terminates variables */ +char wrdels[] { /* to separate words */ + ' ', ' ' | 0200, ',', '.', ';', '!', '?', 0, +}; + +char listunused[] "\b\b\b\b"; /* used to mark empty list entries */ + +char locfile[PATHLENGTH]; +char miscfile[PATHLENGTH]; +char tmonfil[PATHLENGTH]; +char monfile[PATHLENGTH]; + +char *stdpath = "/sys/games/.../wand/"; /* where std. worlds live */ +char curfile[PATHLENGTH] = "a3"; /* default world */ +char newfile[PATHLENGTH]; /* temp for world name */ +char *defmfile = "/sys/games/.../wand/wand.mon"; /* def monfil name */ + +char mfbuf[BUFSIZ]; /* so stdio won't sbrk() */ +char wfbuf[BUFSIZ]; /* ditto */ + +int maxwrds = MAXWRDS; +int pathlength = PATHLENGTH; +int maxlocs = MAXLOCS; +int maxindex = MAXINDEX; +int maxacts = MAXACTS; +int maxpreacts = MAXPREACTS; +int maxpostacts = MAXPOSTACTS; +int maxfields = MAXFIELDS; +int maxvars = MAXVARS; +int ldescfreq = 5; /* how often long desc is printed */ + +char fieldelim = FIELDELIM; +char linedelim = LINEDELIM; +char eschar = ESCHAR; +char varchar = VARCHAR; +char dotchar = DOTCHAR; +char atchar = ATCHAR; +char comchar = COMCHAR; + +int monitor = -1; /* -1 => monitor, 0 => don't */ +int monloc, monstate; + +int max_carry = 8; /* default max objects to carry at once */ + +char inwrd[MAXACTWDS][32]; /* current input words */ +char locseen[MAXLOCS], locstate[MAXLOCS]; +int var[MAXVARS]; + + /* SYSTEM DEPENDENT ROUTINES */ + +int myruid() /* return "real" user id */ +{ + return(getuid() & 0377); +} + +int myeuid() /* return "effective" user id */ +{ + return(getuid() >> 8 & 0377); +} + +int myttyn() /* return string identifying current tty */ +{ + static char buf[2]; + + buf[0] = ttyn(2); + buf[1] = '\0'; + return(buf); +} diff --git a/wrld.nr b/wrld.nr new file mode 100644 index 0000000..3542291 --- /dev/null +++ b/wrld.nr @@ -0,0 +1,423 @@ +.so mac +.ll 72 +.th "WANDER .WRLD SYNTAX" 4/80 +.sh "SYNTAX OF THE .WRLD FILE FOR WANDER" + +The +.it .wrld +file contains all the location-specific information to describe +a particular "world". +.s1 +The file consists of a series of entries separated by blank lines, +each describing one location in a particular state +or in all states. +.s3 +The description of a location for a particular +state consists of a location number followed by a period and a state number, +.mc | +(state numbers start at 0), +.mc +an optional short description, +an optional long description, +and a series of actions possible in that state of the location. +.s3 +The description of a location for all states +consists of a location number with no state number, +an optional short description, +an optional long description, +and a series of actions possible in all states of the location. +.s1 +.sh "LOCATION NUMBER & SHORT-DESCRIPTION" +The format of the location number & short-description is: +.br +(a sequence of spaces or tabs is represented by here) +.s3 +.it #lnumber + +.it short-description +.s3 +or +.s3 +.in 0 +.it #lnumber.snumber + +.it short-description +.i0 +.br +.s3 +.it Lnumber, +(location number), is a decimal number in the range +.mc | +1 to ???, (this limit, commonly 256 or 512, is defined by MAXLOCS +.mc +in the file "wanddef.h"), +preceded by '#'. +.s3 +.it Snumber, +(state number), is a decimal number in the range 0 to 127. +.s3 +If the first form is used, (#lnumber), the follwing lines describe the +"base state", i.e. characteristics shared by ALL states of the given +location. If the second form is used, (#lnumber.snumber), the following +lines are only active when the specified state is active. +.s3 +.it Short-description +is a one-line description used to identify the location after its +full description has already been given. +.s3 +Wander initially places the user +.mc | +in state 0 of location 1 +unless the user specifies differently by setting the variable +"CUR_LOC" in the +.it .misc +file, (see ".misc" documentation). +The assignment of numbers to locations +.mc +is entirely up to the user and they need not be in +any particular order in the +.it .wrld +file. +.sh "LONG-DESCRIPTION" +.it Long-description +may be up to 1024 characters in length, +and may contain any number of lines, but may +not contain a line starting with a , (i.e. neither spaces nor tabs), +or '#' +unless the whole thing is in quotes +because the first such line indicates the beginning of the next section, +(actions or a new location/state). +It's common to enclose the entire long description in quotes in which case +lines may begin with a or '#'. +If the long description is not quoted but you +need spaces at the beginning of a line a line starting with an escaped space, +"\*(EC\ ", will work. +.sh "ACTIONS" +The format of actions is as follows: +.s3 +.in 0 +.na +\c +.it match\c +\c +.it dest\c +\c +.it contin\c +\c +.it field\c +\c +.it field\c + . . . +.it "m=text message" +.i0 +.ad +.s3 +.mc | +All of these fields, with the exception of +.it match, +are optional. +.s3 +.mc +.it Match +is either one or several words, often thought of as verb or verb & object. +If it is more than one word the words are separated by escaped spaces or are +enclosed in quotes. This word (or words) is +matched against the user's input by a minimal match process which +facilitates abbreviation. +.it Match +patterns can be combined with logical OR as +.it match +| +.it match +| . . . +.nf +For example, +.EX +light\*(EC up|smoke t?cigarettes m="Eeech! These butts taste awful!" +Which is equivalent to: +.EX +"light up" t?cigarettes m="Eeech! These butts taste awful!" +.EX +smoke t?cigarettes m="Eeech! These butts taste awful!" +.fi +.s3 +The verb "*" is a special case that matches anything typed by the user. +.s1 +.it Dest +is the number of the location to which the user will be moved if all +tests succeed and is optional. A value of 0, (or omission of the dest +field), provides no movement while a negative +value ends the game (-1 is a verbose exit, -2 is a silent exit like "quit"). +A variable value like "\*(VC4\*(VC" will be replaced by the contents of +of the appropriate variable, (variable 4 in this example), +evaluated at the time the user types the command. +.s1 +The optional +.it contin +argument is either "..." or ",,,". +Either form indicates that even if this action passes all tests and is +carried out the search should continue for any further actions that match, +thus allowing multiple actions to be triggered by a single command. +The ",,," form requires that another match be found for the command to be +"satisfied" and the program will complain if none is found, while the +"..." form does not; +(it is common to use ",,," for actions that are "transparent" +or hidden from the user). +.s1 +The +.it "m=text message" +argument may contain an arbitrary text message of up to +.mc | +512 +.mc +characters. +This message is output as the last step in carrying out the results of +an action. "\*(ECb", "\*(ECn", "\*(ECr", and "\*(ECt" are interpreted as +backspace, return-line-feed, return and tab respectively. +The construction "\*(VC3\*(VC" is replaced by the value of variable 3. +The constructions "\*(VCINP_W1\*(VC", "\*(VCINP_W2\*(VC", ..., +"\*(VCINP_W5\*(VC", are replaced by the words used in the last input +command that were recognized by the parser. +The replacement of "\*(EC" and "\*(VC" symbols is done at output time. +.s1 +The +.it field +arguments contain test/result specifications. There may be up to eight, +.it fields +in any action, +.mc | +(this number can be changed by redefining MAXFIELDS in "wanddef.h"), +.mc +and there may be several of a single type. +The result fields are carried out in left-to-right order. +.nf +.s3 +The possible test fields are: +.s1 +.ta 1.5i +.it "test field succeeds if" +t?obj\*TUser has obj ("tool") +t?obj\*(SClval\*TUser has obj ("tool") and is at loc #val +t~obj\*TUser does not have obj ("tool") +t~obj\*(SClval\*TUser does not have obj or is not at loc #val +o?obj\*TObj is here (either being carried or in location) +o?obj\*(SClval\*TObj is at loc #val (includes carrying) +o~obj\*TObj is not here +o~obj\*(SClval\*TObj is not at loc #val +c?val\*TRandom chance of success, (val% in this case) +s?lval.sval\*TLocation lval is in state sval +s~lval.sval\*TLocation lval is not in state sval +v?sval.bval\*TVariable lval is equal to bval +v~sval.bval\*TVariable lval is not equal to bval +vsval.bval\*TVariable lval is greater than bval +.mc | +b?lval.sval\*TThe "been" count for loc lval == sval +b~lval.sval\*TThe "been" count for loc lval != sval +blval.sval\*TThe "been" count for loc lval > sval +.mc +.s1 +The possible result fields are: +.s1 +.it "field result" +s=lval.sval\*TSet state of location lval to sval +s+lval.sval\*TAdd sval to state of location lval +s-lval.sval\*TSubtract sval from state of location lval +v=sval.bval\*TSet variable sval to bval +v+sval.bval\*TAdd bval to var sval (16 bits, 2's comp) +v-sval.bval\*TSub bval from var sval1 (0 if result is neg) +v*sval.bval\*TMultiply var sval by bval (16 bits, 2's comp) +v/sval.bval\*TDivide var sval by bval (16 bits, 2's comp) +o-obj\*TObject "obj" disappears from this loc (if here) +o-obj\*(SClval\*T"obj" disappears from loc val (if there) +o+obj\*TObject "obj" appears at this location +o+obj\*(SClval\*TObject "obj" appears at loc lval +t-obj\*TIf object "obj" was being carried it disappears +t-obj\*(SClval\*TIf "obj" was being carried at loc lval it disappears +t+obj\*TObject "obj" is now being carried +t+obj\*(SClval\*T"obj" is now being carried if its in loc lval +c=command\*T"command" replaces the users input command +w=foo\*T"foo.misc" & "foo.wrld" become the new environment +.mc | +b=lval.sval\*TSet the "been" count for loc lval to sval +b+lval.sval\*TAdd sval to the "been" count for loc lval +b-lval.sval\*TSub sval from the "been" count for loc lval +.mc +.s3 +.fi +In the above, +"sval" must be in the range 0 to 127, +"lval" must be in the range +.mc | +0 +.mc +to 255, (or whatever the maximum location is, check the "~version" command +.mc | +or the definition of MAXLOCS in "wanddef.h"), +.mc +and "bval" must be in the range -32768 to 32767, +Any of these may be expressions of the form "\*(VCsval\*(VC" where sval is +the number of a variable (in the range 0 to 127). +In the \*(VCsval\*(VC case the value of the variable is substituted at the +time of the action. For instance "v=1.\*(VC3\*(VC" will save the current value of +variable 3 in variable 1. +The special variables described in the main +.it Wander +documentation file may also be used, (CUR_LOC, MAX_CARRY, etc). +.s3 +.mc | +The "been to" counter for each location is an 8-bit counter associated +with that location; +it is zero until the location has been seen; +after that it is incremented each +time a description is given and then reset to 1 each time a +long description is given. +.mc +.sh EXAMPLES +A few examples may help: (lines beginning with ":" are comments +and describe the line or lines preceding them.) +.s3 +.in 0 +.nf +#12 Spaceport Bar +: short description used for all states of location 12 +You are in the Spaceport Bar on Aldebaran III, which is now deserted +except for you and the burly bartender whose eyestalks keep twitching +in your direction. A large sign hangs over the bar. +: long description for all states of location 12 + read\*(EC sign t~dictionary m="The sign is in some local dialect." +: if the user has no dictionary and asks to read the sign then this +: message is output and Wander awaits further input. (Note no dest) + read m="The sign says \*(EC"All humans MUST show papers before leaving!\*(EC"" +: if the user asks to read the sign and gets this far he/she must have +: the dictionary; the message is output and Wander awaits further input. +: note the escaped quotes. + buy\*(EC drink v>6.4 v-6.5 m="It cost 5 credits but it's good!" +: if the user types "buy drink" and variable 6 (which, in this case, +: represents how many credits she/he has) is greater than 4 (i.e. +: 5 or more) then the user gets a drink and loses 5 credits. Note +: that if the user types "buy" there will only be a partial match +: and Wander will ask "buy what?" If, on the other hand, the user +: types "buy peanuts" Wander will answer "You can't buy peanuts here". + buy\*(EC drink m="A drink costs 5 credits and you ain't got it." +: this catches the paupers + buy o?\*(VCINP_W2\*(VC m="The \*(VCINP_W2\*(VC's not for sale." + buy m="I'm all out of \*(VCINP_W2\*(VC, buddy." +: if the user asks to buy something else, e.g. drugs, a reasonable +: answer is given, depending on whether it's there or not. + +#12.0 +: Header for state 0 of loc 12. Since no short description or long +: description are provided they default to the all-state ones above. +: the following are state 1 actions + leave -1 m="With an amazingly graceful movement for someone\*(EC +his size, the bartender leaps\*(ECnover the bar and clubs you to death\*(EC +while pointing at the sign!" +: if the user types "leave" or "out" without first showing papers +: the bartender kills him/her and the dest of -1 ends the game. +: Note that the message has escaped line-feeds in it for readability +: which are ignored by Wander. When real line-feeds are needed, +: "\*(ECn" is used instead. + show\*(EC papers s=12.1 m="He checks you papers and grunts happily." +: to match this the user must have typed "show papers". Wander +: prints the happy grunting bartender message and the state of +: this location (12) is changed to 1, (it was zero), all further +: input will be interpreted according to the state 1 actions below + +#12.1 +: because no short description is provided here the all-state one +: (above) is used. +You are in the Spaceport Bar on Aldebaran III, which is now deserted +except for you and the burly bartender who has brought you a drink, +(on the house), after learning that you are a user of UNIX software. +: the long description for state 1 (followed by state 1 actions) + leave 13 m="The bartender wriggles a pseudopod in farewell." +: now it's okay to leave. The user is moved to location 13. + ask o+map m=\*(EC +"The barkeep feigns ignorance, but leaves something lying on the bar." +: if the user types anything beginning with "ask", the bartender +: plays innocent but the "o+map" leaves the map to be taken. + read map o?map m="It's too dark in here to decipher it." +: we expect the user to try this, but we want to put it off a little. + +: the preceding blank line ends location 12. +#13 Outside Bar +You're just outside a large door with a peeling sign that reads +" Ladies and Frelks welcome" +To the north an alley winds between this building and another one to +the west while to the east lies a large spaceport. +: the long description for state 0 (the only one we've used) of loc 13 +: note the " was used to begin a line with spaces. + * t?map ... m=\*(EC +"The map in your hand glows briefly and you read the words: +Find Ignarp in Crystal City and tell him 'Axolotyl'. +Then the map turns into sooty ash." +: If the user has the map, no matter what's been typed, this one +: is invoked. The long message is output and then Wander contimues +: to try to match the user's input (because of the "..."). + north 14 v>6.15 v-6.127 m="As you step into the alley two\*(EC + ruffians bump into you\*(ECnand make profuse apologies." +: if the user enters the alley and has more than 15 units of credit the +: ruffians pick his pocket and the "v-6.127" leaves him with 0 credits. + north 14 +: this matches "north" when the previous one doesn't + east 20 + west 18 +: simple movement to other locations +.fi +.i0 +.s3 +.s1 +These few examples can't demonstrate all the possibilities, but they should +provide a beginning understanding of the mechanisms involved. +.s3 +One last example -- +Let's assume that, rather than express money simply as Cosmic Credits, +we'd like to also have a Credit Card which you must use to establish +your identity. We'd like the ruffians to lift the card itself and +then use up 20 credits in the bar... +In location 13 the ruffian line would be replaced by this one: +.s1 +.in 0 +.nf + north v>6.30 t?card o+card\*(SC12 v-6.20 s+12.2 m=\*(EC +"As you step into the alley two ruffians bump into you & make profuse apologies +(better check your pockets)." +: if you have more than 30 credits (v>6.30) +: and you're carrying the credit card (t?card) +: the card is moved to loc 12 (the Bar), and left there (o+card\*(SC12), +: twenty credits are spent from your account (v-6.20), +: the state of the bar is increased by 2, (s+12.2) +: loc/state 12.2 will contain two ruffians and an unfriendly barkeep, +: loc/state 13.2 will contain two ruffians and a friendly barkeep, +: finally, the message is printed. +.fi +.i0 +.s3 +After this line has been executed the user can go back to the +bar and retrieve his credit card from the now-drunk ruffians. +You might want to allow pocket checking with something like: +.in 0 +.nf +.s3 + check\*(EC pockets t?watch ... m="You're carrying a watch." +: if you have a watch mention it and continue + check\*(EC pockets t?ring ... m="You're carrying a ring." +: if you have a ring mention it and continue + check\*(EC pockets t~watch t~ring ... m="You're empty-pocketed." +: if none of the expected items are there mention that and continue +: (note that the program has a similar built-in response for "inventory" + check\*(EC pockets v=6.1 m="Your account now holds one measly credit." +: being careful about singular/plural + check\*(EC pockets m="Your account now holds \*(VC6\*(VC credits." +: if it gets here then plural is safe +.fi +.i0 +.s3 +.sh BUGS +You see, I found the last bug; but when I killed it ... Well, the funeral +procession reached three times around the computer room. +.sh "SEE ALSO" +misc.doc, wander.doc +.CC