#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of shell archive."
# Contents:  advent.doc makefile aamain.f asubs.f asetup.f iors.f
#   advdat
# Wrapped by ibmpc@laphroig.UUCP on Mon Aug 20 09:40:35 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f advent.doc -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"advent.doc\"
else
echo shar: Extracting \"advent.doc\" \(4732 characters\)
sed "s/^X//" >advent.doc <<'END_OF_advent.doc'
XThis is the hopefully portable ADVENTURE 551 program. Its BETA!!!!!
XI've tested it as well as I can, but you never know!!!! It comes as three
XFortran files, aamain.f, the main game program; asetup.f, a program that 
Xreads the ASCII data file ADVDAT and makes a runtime data file ADVTXT;
Xasubs.f, that needs to be liked with each of the above; and ADVDAT,
Xthe ASCII data file itself (note all caps for Unix users). 
X
X
XIt is based on the old old old Fortran one posted recently in comp.sources.
Xgames - or rather one very close to that. I added a small piece of game,
Xand the version I started from was lacking a tiny (and uncompleted) part.
XBut mostly I fixed bugs. Oh! My! What a mess it was. You think it is
Xbad now? Well, it is still F66 spaghetti, but previously it was full
Xof Holleriths, system dependencies, and just plain bugs. Code bugs,
Xgame bugs, out of range subscripts ad nauseum. I played it to
Xcompletion, and got all 551 points. That means it is possible to win. But
Xit does NOT guarantee no bugs - as I found a bad one just playing it
Xthis last time. So have other testers. The only blatent non-portability
Xis that it assumes ASCII. 
X
XFor Unix people with Fortran, first make sure that the file is ADVDAT,
Xall upper case, make sure the name of your Fortran compiler is right in the
Xmakefile and then type 'make'. To play, type "adventure".
X
XIf your Unix system lacks the MIL std Fortran functions ior, ieor, and iand,
Xyou'll have to make up some with whatever bit functions you do have.
XIt's up to you. These functions just take two integer variables and
Xreturn the appropriate bitwise functions OR, XOR, and AND. If you get them
Xwrong the asetup program will die at section 9 of the data file. 
X
XFor folks on MS-DOS, rename the .f files to .for. Then compile and link
Xasetup with asubs to make asetup.exe. Make SURE to have your Fortran compiler
Xuse 4-byte integers!!! (Use /4I4 for Microsoft Fortran).  Run asetup.exe.
XThen compile aamain.for and link with asubs.obj to make aamain.exe.
XRename aamain.exe to "adventure" and play the game.
X
XFor VMS folks, do as MS-DOS except that you have to add ".dat" to the advdat
Xfilename, and compile with /check=noover. This last is necessary as the
Xrandom number generator actually depends on overflows.
X
X
XFor folks with Unix systems and no (or broken!!! - Sun 3's) Fortran compilers,
Xit works with the "f2c" program available from research.att.com. This took
Xme a bit of work on our Mips machine. It is easy to generate the f2c program
Xand its two libraries libF77 and libI77 but it didn't link right. The solution
Xwas to use the librarian (ar) to make a single library libF2C with all the
X.o files from BOTH libraries, put that in the directory you are working
Xwith and tell cc to use that as an ordinary object file - i.e.
Xf2c *.f
X<<edit iors.c as instructed in the iors.f file!!!!!>>
Xcc -c *.c
Xcc asetup.o asubs.o iors.o libF2C -lm -lc
Xa.out
Xcc aamain.o asubs.o iors.o libF2C -lm -lc
Xmv a.out adventure
X
X(Note the lack of a -l before the libF2C - read the READMEs that
Xcome with f2c.)
X
Xthen just play! I suppose I could distribute the .c files f2c produces,
Xbut the main problem is that I would also have to distribute the libs,
Xwhich are the big problem anyway.
X
X
XIt hopefully will just work. There are two places to look at the
Xsource code: First, look in asubs.f for the string ?????, which occurs
Xtwice. Thereabouts is code which works on VMS, the IBM-PC, and f2c to allow 
Xyou to get a prompt on the same line as your response. It fails miserably in
XF77 on my MIPS Unix machine. If you can make this or some other prompting
Xmechanism work on your machine, PLEASE report it to me. Second, in aamain.f
Xlook for the the string ?????. There you can uncomment a line to activate
XWizard mode, which allows a modest amount of cheating. Uncautious use
Xof it, however, can prevent actually winning.
X
XThis version compiles and runs using f77 on a MIPS unix box, on the VAX using
XVMS VAX Fortran or using Ultrix and its Fortran compiler (though you must
Xsupply the bitwise functions), on the IBM PC using either the MicroWay 386 
X32-bit compiler or Microsoft Fortran 4.1 in large model, and on the IBM
XRiscstation 6000.
X
XIt compiles but does NOT run on a Sun 3 (with a F77 compiler with a 1988
Xdate) due to the compiler simply being unable (with no help from 
Xswitches) to compile correctly the main program. Tests indicate that
Xthis compiler barfs on files with much more than 400 lines of significant code.
XIf anybody can get it to run on a Sun 3, please let me know how.
XI find it hard to believe that they would let out a compiler this limited.
X
X
X
X
XDoug McDonald (mcdonald@aries.scs.uiuc.edu)
X
XAdventurer Grandmaster!!!
X(its not easy, even if you do read the source code)
END_OF_advent.doc
if test 4732 -ne `wc -c <advent.doc`; then
    echo shar: \"advent.doc\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f makefile -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"makefile\"
else
echo shar: Extracting \"makefile\" \(181 characters\)
sed "s/^X//" >makefile <<'END_OF_makefile'
Xall: asetup adventure ADVTXT
X
Xasetup: asetup.o asubs.o
X	f77 -o asetup asetup.o asubs.o
Xadventure: aamain.o asubs.o
X	f77 -o adventure aamain.o asubs.o
XADVTXT: ADVDAT asetup
X	asetup
X
END_OF_makefile
if test 181 -ne `wc -c <makefile`; then
    echo shar: \"makefile\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f aamain.f -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"aamain.f\"
else
echo shar: Extracting \"aamain.f\" \(98021 characters\)
sed "s/^X//" >aamain.f <<'END_OF_aamain.f'
XC  THIS IS THE FIRST LINE OF ADVENTURE, MAIN MODULE.
X
XC  CURRENT LIMITS:
XC      20000 WORDS OF MESSAGE TEXT (LINES, LINSIZ).
XC       1600 TRAVEL OPTIONS (TRAVEL, TRVSIZ).
XC       600 VOCABULARY WORDS (KTAB, ATAB, TABSIZ).
XC       250 LOCATIONS (LTEXT, STEXT, KEY, LOCCON, ABB, ATLOC,
XC                       LOCSIZ, MAXLOC).
XC       150 OBJECTS (PLAC, PLACE, FIXD, FIXED, LINK (TWICE), PTEXT, POINTS,
XC                       HOLDER, HLINK, OBJCON, PROP, WEIGHT, MAXOBJ).
XC        60 "ACTION" VERBS (ACTSPK, VRBSIZ, VKEY).
XC       300 VERB/PREP/OBJ COMBINATIONS (PTAB, PTBSIZ).
XC        50 ADJECTIVES (ADJKEY, ADJSIZ)
XC       150 MODIFIED NOUNS (ADJTAB, MAXOBJ)
XC       450 RANDOM MESSAGES (RTEXT, RTXSIZ).
XC        12 DIFFERENT PLAYER CLASSIFICATIONS (CTEXT, CVAL, CLSMAX).
XC        20 HINTS, LESS 3 (HINTLC, HINTED, HINTS, HNTSIZ, HNTMIN).
X
XC  THERE ARE ALSO LIMITS WHICH CANNOT BE EXCEEDED DUE TO THE STRUCTURE OF
XC  THE DATABASE.  (E.G., THE VOCABULARY USES N/1000 TO DETERMINE WORD TYPE,
XC  SO THERE CAN'T BE MORE THAN 1000 WORDS OF ANY CLASS.)  THESE UPPER
XC  LIMITS ARE:
XC       1000 NON-SYNONYMOUS VOCABULARY WORDS OF EACH CLASS.  CURRENTLY DEFINED
XC       CLASSES ARE:
XC               1. MOTION/DIRECTION WORDS (EAST, WEST, UP, JUMP, ETC.)
XC               2. NOUNS/OBJECTS (LAMP, KEYS, TROLL, ETC.)
XC               3. ACTION VERBS, TRANSITIVE & INTRANSITIVE (TAKE, DROP, KILL, IN
XC               4. MISCELLANEOUS WORDS; MOSTLY THINGS OR ACTIONS WHICH GENERATE
XC                  FIXED REPLIES (FEE-FIE-FOE-FOO, TREE, CAVE, CURSES)
XC               5. PREPOSITIONS, DUPLICATES MANY WORDS IN SECTION 1.
XC               6. ADJECTIVES
XC               7. CONJUNCTIONS
XC       450 LOCATIONS
XC       100 OBJECTS WHICH CAN BE USED IN TRAVEL TABLE (PLUS 900 MORE, WHICH CAN'
X
X
XC  DESCRIPTION OF THE DATABASE FORMAT
XC
XC
XC  THE DATA FILE CONTAINS SEVERAL SECTIONS.  EACH BEGINS WITH A LINE CONTAINING
XC  A NUMBER IDENTIFYING THE SECTION, AND ENDS WITH A LINE CONTAINING "-1".
XC
XC  SECTION 1: LONG FORM DESCRIPTIONS.  EACH LINE CONTAINS A LOCATION NUMBER,
XC       A TAB, AND A LINE OF TEXT.  THE SET OF (NECESSARILY ADJACENT) LINES
XC       WHOSE NUMBERS ARE X FORM THE LONG DESCRIPTION OF LOCATION X.
XC
XC  SECTION 2: SHORT FORM DESCRIPTIONS.  SAME FORMAT AS LONG FORM.  NOT ALL
XC       PLACES HAVE SHORT DESCRIPTIONS.
XC
XC  SECTION 3: VOCABULARY.  EACH LINE CONTAINS A NUMBER (N), A TAB, AND A
XC       FIVE-LETTER WORD.  CALL M=N/1000.  IF M=0, THEN THE WORD IS A MOTION
XC       VERB FOR USE IN TRAVELLING (SEE SECTION 4).  ELSE, IF M=1, THE WORD IS
XC       AN OBJECT.  ELSE, IF M=2, THE WORD IS AN ACTION VERB (SUCH AS "CARRY"
XC       OR "ATTACK").  ELSE, IF M=3, THE WORD IS A SPECIAL CASE VERB (SUCH AS
XC       "DIG") AND N MOD 1000 IS AN INDEX INTO SECTION 6.  OBJECTS FROM 50 TO
XC       (CURRENTLY, ANYWAY) 79 ARE CONSIDERED TREASURES (FOR PIRATE, CLOSEOUT).
XC
XC  SECTION 4: TRAVEL TABLE.  EACH LINE CONTAINS A LOCATION NUMBER (X), A SECOND
XC       LOCATION NUMBER (Y), AND A LIST OF MOTION VERBS (SEE SECTION 3).
XC       EACH MOTION REPRESENTS A VERB WHICH WILL GO TO Y IF CURRENTLY AT X.
XC       Y, IN TURN, IS INTERPRETED AS FOLLOWS.  LET M=Y/1000, N=Y MOD 1000.
XC               IF N<=MAXLOC    IT IS THE LOCATION TO GO TO.
XC               IF MAXLOC<N<=500   N-MAXLOC IS USED IN A COMPUTED GOTO
XC                                       TO A SECTION OF SPECIAL CODE.
XC               IF N>500        MESSAGE N-500 FROM SECTION 6 IS PRINTED,
XC                                       AND HE STAYS WHEREVER HE IS.
XC       MEANWHILE, M SPECIFIES THE CONDITIONS ON THE MOTION.
XC               IF M=0          IT'S UNCONDITIONAL.
XC               IF 0<M<100      IT IS DONE WITH M% PROBABILITY.
XC               IF M=100        UNCONDITIONAL, BUT FORBIDDEN TO DWARVES.
XC               IF 100<M<=200   HE MUST BE CARRYING OBJECT M-100.
XC               IF 200<M<=300   MUST BE CARRYING OR IN SAME ROOM AS M-200.
XC               IF 300<M<=400   PROP(M MOD 100) MUST *NOT* BE 0.
XC               IF 400<M<=500   PROP(M MOD 100) MUST *NOT* BE 1.
XC               IF 500<M<=600   PROP(M MOD 100) MUST *NOT* BE 2, ETC.
XC       IF THE CONDITION (IF ANY) IS NOT MET, THEN THE NEXT *DIFFERENT*
XC       "DESTINATION" VALUE IS USED (UNLESS IT FAILS TO MEET *ITS* CONDITIONS,
XC       IN WHICH CASE THE NEXT IS FOUND, ETC.).  TYPICALLY, THE NEXT DEST WILL
XC       BE FOR ONE OF THE SAME VERBS, SO THAT ITS ONLY USE IS AS THE ALTERNATE
XC       DESTINATION FOR THOSE VERBS.  FOR INSTANCE:
XC               15      110022  29      31      34      35      23      43
XC               15      14      29
XC       THIS SAYS THAT, FROM LOC 15, ANY OF THE VERBS 29, 31, ETC., WILL TAKE
XC       HIM TO 22 IF HE'S CARRYING OBJECT 10, AND OTHERWISE WILL GO TO 14.
XC               11      303008  49
XC               11      9       50
XC       THIS SAYS THAT, FROM 11, 49 TAKES HIM TO 8 UNLESS PROP(3)=0, IN WHICH
XC       CASE HE GOES TO 9.  VERB 50 TAKES HIM TO 9 REGARDLESS OF PROP(3).
XC       (SEE DESCRIPTION FOR SECTION 14 FOR A SCHEMATIC OF TABLES.)
XC
XC  SECTION 5: OBJECT DESCRIPTIONS.  EACH LINE CONTAINS A NUMBER (N), A TAB,
XC       AND A MESSAGE.  IF N IS FROM 1 TO MAXOBJ, THE MESSAGE IS THE "INVENTORY"
XC       MESSAGE FOR OBJECT N.  OTHERWISE, N SHOULD BE 0000, 1000, 2000, ETC., AN
XC       THE MESSAGE SHOULD BE THE DESCRIPTION OF THE PRECEDING OBJECT WHEN ITS
XC       PROP VALUE IS N/1000.  THE N/1000 IS USED ONLY TO DISTINGUISH MULTIPLE
XC       MESSAGES FROM MULTI-LINE MESSAGES; THE PROP INFO ACTUALLY REQUIRES ALL
XC       MESSAGES FOR AN OBJECT TO BE PRESENT AND CONSECUTIVE.  PROPERTIES WHICH
XC       PRODUCE NO MESSAGE SHOULD BE GIVEN THE MESSAGE "<$$<".  NOTE THAT
XC       OBJECTS WITH N>100 CANNOT BE USED FOR CONDITIONAL MOTIONS IN
XC       TRAVEL TABLE.
XC
XC  SECTION 6: ARBITRARY MESSAGES.  SAME FORMAT AS SECTIONS 1, 2, AND 5, EXCEPT
XC       THE NUMBERS BEAR NO RELATION TO ANYTHING (EXCEPT FOR SPECIAL VERBS
XC       IN SECTION 3).
XC
XC  SECTION 7: CONTAINS LOTS OF OBJECT INFO:
XC       (1) OBJECT LOCATIONS & WEIGHTS.  EACH LINE CONTAINS AN OBJECT NUMBER
XC       AND ITS INITIAL LOCATION (ZERO (OR OMITTED) IF NONE).  IF THE OBJECT IS
XC       IMMOVABLE, THE LOCATION IS FOLLOWED BY A "-1".  IF IT HAS TWO LOCATIONS
XC       (E.G. THE GRATE) THE FIRST LOCATION IS FOLLOWED WITH THE SECOND, AND
XC       THE OBJECT IS ASSUMED TO BE IMMOVABLE.  IF THE OBJECT IS MOVABLE, IT
XC       HAS A THIRD NUMBER WHICH IS ITS RELATIVE WEIGHT.
XC       (2) DEFAULT OBJECT NAMES. TEN CHARACTER MAXIMUM, TO PERMIT PRINTING
XC       OBJECT NAMES WHEN HERO SAYS 'TAKE ALL' OR SUCH.
XC       (3) POINTS.  OBJECT NUMBER, A SCORE
XC       VALUE, A PROP VALUE, AND A LOCATION NUMBER.  THE SCORE IS
XC       FOR LEAVING IT AT THE NAMED LOCATION WITH THE RIGHT PROP VALUE.
XC       SCORES ARE ASSIGNED ON A DIFFICULTY SCALE OF 1-5 (1 IS
XC       FOR EASY TREASURES; 5 IS FOR REAL HARD ONES), AND ARE MULTIPLIED
XC       BY SOME APPROPRIATE FACTOR AT SCORING TIME.
XC
XC  SECTION 8: ACTION DEFAULTS.  EACH LINE CONTAINS AN "ACTION-VERB" NUMBER AND
XC       THE INDEX (IN SECTION 6) OF THE DEFAULT MESSAGE FOR THE VERB.
XC
XC  SECTION 9: LIQUID ASSETS, ETC.  EACH LINE CONTAINS A NUMBER (N) AND UP TO 20
XC       LOCATION NUMBERS.  
XC       FOR THE LOW BYTE BIT N (WHERE 0 IS THE UNITS BIT) IS SET IN LOCCON(LOC
XC       FOR EACH LOC GIVEN.  THE COND BITS CURRENTLY ASSIGNED ARE:
XC               0       LIGHT
XC               1       IF BIT 3 IS ON: ON FOR OIL, OFF FOR WATER
XC               2       IF BIT 3 IS ON: ON FOR WINE, OFF FOR WATER & OIL
XC               3       LIQUID ASSET, SEE BITS 1 & 2
XC               4       PIRATE DOESN'T GO HERE UNLESS FOLLOWING PLAYER
XC               5       ALL LOCATIONS IN EITHER 'PORTAL';  I.E., NOT OUTSIDE
XC                       CAVE, BUT NOT FAR IN
XC               6       ALL LOCATIONS OUTSIDE THE CAVE
XC       THE HIGH BYTE IS USED TO INDICATE AREAS OF INTEREST TO "HINT" ROUTINES:
XC	THE NUMBER 256*(BIT-7) INDICATES THE HINT
XC               1       LOST IN MAZE
XC               2       PONDERING DARK ROOM
XC               3       AT WITT'S END
XC               4       TRYING TO EXTRACT SWORD
XC               5       TRYING TO GO UP SLIDE
XC               6       TRYING TO GET INTO CAVE VIA SEA ENTRANCE
XC               7      TRYING TO FIND CAVE (ANY ENTRANCE)
XC               8      TRYING TO CATCH BIRD
XC               9       TRYING TO GET OVER THE RAINBOW
XC               10      STYMIED BY DOG
XC               11      TRYING TO DEAL WITH SNAKE
XC               12      TRYING TO GET TO THE CASTLE
XC	ONLY ONE HINT PER LOC IS ALLOWED
XC       LOCCON(LOC) IS SET TO 2, OVERRIDING ALL OTHER BITS, IF LOC HAS FORCED
XC       MOTION.
XC
XC  SECTION 10: CLASS MESSAGES.  EACH LINE CONTAINS A NUMBER (N), A TAB, AND A
XC       MESSAGE DESCRIBING A CLASSIFICATION OF PLAYER.  THE SCORING SECTION
XC       SELECTS THE APPROPRIATE MESSAGE, WHERE EACH MESSAGE IS CONSIDERED TO
XC       APPLY TO PLAYERS WHOSE SCORES ARE HIGHER THAN THE PREVIOUS N BUT NOT
XC       HIGHER THAN THIS N.  NOTE THAT THESE SCORES PROBABLY CHANGE WITH EVERY
XC       MODIFICATION (AND PARTICULARLY EXPANSION) OF THE PROGRAM.
XC
XC  SECTION 11: HINTS.  EACH LINE CONTAINS A HINT NUMBER (CORRESPONDING TO A
XC       COND BIT, SEE SECTION 9), THE NUMBER OF TURNS HE MUST BE AT THE RIGHT
XC       LOC(S) BEFORE TRIGGERING THE HINT, THE POINTS DEDUCTED FOR TAKING THE
XC       HINT, THE MESSAGE NUMBER (SECTION 6) OF THE QUESTION, AND THE MESSAGE
XC       NUMBER OF THE HINT.  THESE VALUES ARE STASHED IN THE "HINTS" ARRAY.
XC       HNTMAX IS SET TO THE MAX HINT NUMBER (<= HNTSIZ).  NUMBERS 1-6 ARE
XC       UNUSABLE SINCE COND BITS ARE OTHERWISE ASSIGNED, SO 2 IS USED TO
XC       REMEMBER IF HE'S READ THE CLUE IN THE REPOSITORY, AND 3 IS USED TO
XC       REMEMBER WHETHER HE ASKED FOR INSTRUCTIONS (GETS MORE TURNS, BUT LOSES
XC       POINTS).  HNTMIN IS SET TO THE NUMBER OF THE FIRST USABLE HINT.
XC
XC  SECTION 14: PREPOSITION TABLE.  EACH LINE CONTAINS A VERB, A PREPOSITION
XC       AND VALID OBJECTS FOR THAT VERB/PREP COMBINATION.  THEY ARE CONVERTED
XC       INTO TWO TABLES SIMILAR IN FORMAT TO THE TRAVEL TABLE.  THE FIRST
XC       TABLE, VKEY, HAS ONE ENTRY PER VERB.  A ZERO ENTRY INDICATES NO
XC       PREPOSITION IS VALID WITH THAT VERB.  A NON-ZERO ENTRY POINTS TO THE
XC       BEGINNING OF THE PREP/OBJ LIST FOR THAT VERB.  THE POSITION OF THE
XC       ENTRY IN VKEY CORRESPONDS TO THE VERB NUMBER.  THE PREP/OBJ LIST,
XC       PTAB, FOR A GIVEN VERB CONSISTS OF A SERIES OF ONE-WORD ENTRIES
XC       DELIMITED BY A NEGATIVE ENTRY.  EACH WORD CONTAINS THE PREPOSITION
XC       NUMBER TIMES 1000 PLUS THE NUMBER OF A VALID OBJECT.  A SCHEMATIC
XC       FOLLOWS.  ENTRIES IN VKEY ARE REPRESENTED BY V1, V2, ... VN.
XC       ENTRIES IN PTAB ARE REPRESENTED BY P1, P2, ..., PN (PREPOSITIONS),
XC       AND OB1, OB2,..., OBN (OBJECTS).
XC
XC           I   VKEY(I)         PTAB(J) J
XC           -   -------         ------- -
XC           1.  V1==========>>  P1,OB1  1.
XC                               P1,OB2  2.
XC                               P1,OB3  3.
XC                               P1,OB4  4.
XC                               P1,OB5  5.
XC                               P2,OB1  6.
XC                               P2,OB2  7.
XC                               P3,OB1  8.
XC                               P3,OB2  9.
XC                               P3,OB3  10.
XC                              -P3,OB4  11.
XC           2.  V2==========>>  P1,OB1  12.
XC                               P1,OB2  13.
XC                               P2,OB1  14.
XC                              -P3,OB1  15.
XC           3.  0  (THE VERB CORRESPONDING TO THIS POSITION TAKES NO PREPOSITION
XC           4.  V3==========>>  P1,OB1  16.
XC                              -P2,OB1  17.
XC
XC SECTION 15: OBJECT ATTRIBUTES.  EACH LINE CONTAINS A BIT NUMBER AND
XC       UP TO 20 OBJECT NUMBERS.  BIT N (WHERE ZERO IS THE UNITS BIT) IS SET
XC       IN OBJCON(OBJ) FOR EACH OBJECT GIVEN.  THE BITS CURRENTLY ASSIGNED
XC       ARE:
XC               1       THE OBJ CAN BE OPENED/CLOSED. (DOORS, GRATE, CLAM, ETC.)
XC               2       THE OBJ IS CURRENTLY OPEN.
XC               3       IT HAS A LOCK. (GRATE, CHAIN, ELFIN DOOR, ETC.)
XC               4       IT IS CURRENTLY LOCKED.
XC               5       FLAMMABLE.  (IT WILL BURN IF IGNITED.)
XC               6       IT IS CURRENTLY BURNING.
XC               7       EDIBLE.  FOOD, MUSHROOMS, ETC.
XC               8       PRINTED MATERIAL, ANYTHING READABLE
XC               9       A LIVING BEASTIE, E.G., DWARF, DOG, WUMPUS, ETC.
XC               10      DEAD (KILLED) BEASTIE: WUMPUS, DRAGON, SLEEPING DOG
XC               11      CAN BE WORN: CROWN, SHOES, CLOAK, JEWELS
XC               12      IS CURRENTLY BEING WORN
XC               13      REQUIRES PLURAL RESPONSES (SHOES, COINS, ETC.)
XC               14      TREASURE.
XC               15      CONTAINER.
XC               16      OBJECT IS "SMALL". (CAN FIT INTO SACK OR CHEST)
XC               17      CONTAINER IS OPAQUE -- CONTENTS ARE NOT VISIBLE UNLESS
XC                       CONTAINER IS OPEN.
XC
XC  SECTION 16: ADJECTIVE/NOUN LIST.  EACH VALID ADJECTIVE IS FOLLOWED BY
XC       ALL NOUNS WHICH IT MAY MODIFY.
XC
XC  SECTION 0: END OF DATABASE.
X
X       IMPLICIT INTEGER(A-Z)
X       LOGICAL DSEEN,BLKLIN,HINTED,YES,START,TERSE,ISWIZ,LOGOUT
X       LOGICAL WZDARK,KILLED,RDFLAG,LIVING
X      CHARACTER*6 DTK(9),ATAB,DJJ,DK,DKK,DL,DLL
X      CHARACTER*6 VTXT,OTXT,IOTXT,TXT
X      CHARACTER ZAPP(20)
X      CHARACTER*2 KK2C
X
X      COMMON/IZWIZ/ISWIZ
X       COMMON /ADJCOM/ ADJKEY(50),ADJTAB(150),ADJSIZ
X       COMMON /BITCOM/ OPENBT,LOCKBT,BURNBT,WEARBT
X       COMMON /BLKCOM/ BLKLIN
X       COMMON /CONCOM/ LOCCON(250),OBJCON(150)
X       COMMON /DIECOM/ NUMDIE,MAXDIE,TURNS,KILLED
X       COMMON /DWFCOM/ DWARF,KNIFE,KNFLOC,DFLAG,DSEEN(6),DLOC(6),
X     1  ODLOC(6),DWFMAX
X       COMMON /HLDCOM/ HOLDER(150),HLINK(150)
X       COMMON /HNTCOM/ HINTLC(20),HINTED(20),HINTS(20,4),HNTSIZ,HNTMIN
X       COMMON /LIQCOM/ BOTTLE,CASK,WATER,OIL,WINE,LIQTYP(5)
X       COMMON /LOCCOM/ LOC,OLDLOC,OLDLC2,NEWLOC,MAXLOC
X       COMMON /MNECOM/ BACK,CAVE,DPRSSN,ENTRNC,EXIT,GO,LOOK,NULL,
X     1 AXE,BEAR,BOAT,BOOK,BOOK2,BOOTH,CARVNG,CHASM,CHASM2,DOOR,GNOME,
X     2 GRATE,LAMP,PDOOR,PLANT,PLANT2,ROCKS,ROD,ROD2,SAFE,
X     3 TDOOR,TDOOR2,TROLL,TROLL2,EMRALD,SPICES,
X     4 FIND,YELL,INVENT,LEAVE,POUR,SAY,TAKE,THROW,
X     5 IWEST,PHUCE(2,4),TK(20)
X
X       COMMON /LTXCOM/ LTEXT(250),STEXT(250),KEY(250),ABB(250),LOCSIZ
X       COMMON /OBJCOM/ PLAC(150),FIXD(150),WEIGHT(150),PROP(150),
X     1          POINTS(150)
X       COMMON /PLACOM/ ATLOC(250),LINK(300),PLACE(150),
X     1          FIXED(150),MAXOBJ
X       COMMON /PRPCOM/ VKEY(60),PTAB(300),VKYSIZ,PTBSIZ
X       COMMON /TRVCOM/ TRAVEL(1600)
X       COMMON /TXTCOM/ LINES(25000),RTEXT(450),PTEXT(150)
X       COMMON /UTXCOM/ WDX
X       COMMON /VOCCOM/ KTAB(600),TABSIZ
X       COMMON /WRDCOM/ VERBS(45),VRBX,OBJS(45),
X     1  OBJX,IOBJS(15),IOBX,PREP,WORDS(45)
X
X       COMMON /SAVCOM/ABBNUM,ADJ,ATBS,ATTACK,BCROSS,BONUS,CHASE,
X     1   CLOCK1,CLOCK2,CLOCK3,CLOSED,CLOSNG,CLSMAX,COMBO,DEADBT,
X     2   DETAIL,DKILL,DTOTAL,DWARFN,FLG239,
X     3   FOO,FOOBAR,FOOD,GAVEUP,HEALTH,HINT,HIT,HNTMAX,I,IKK,ILOC,
X     4   IOBJ,J,JJ,JK1,JKK,K,K1,KK,L,L1,LIMIT,
X     5   LINSIZ,LL,LMWARN,LOCK,LOGOUT,MESSAG,OBJ,PANIC,
X     6   PORTAL,PTBS,RDFLAG,RETN,RTXSIZ,SCORE,SCORNG,SECT,
X     7   SKEY,SLOC,SPK,START,STICK,TABNDX,TALLY,TALLY2,TERSE,
X     8   TRVS,TRVSIZ,VEND,VERB,VRBSIZ,WASTE,WKDAY,WKEND,WZDARK,
X     9   YEA,ACTSPK,CTEXT,CVAL,HNAME
X       COMMON /SV2COM/ANVIL,BATTER,BEES,BILLBD,BIRD,BRUSH,CAGE,
X     1   CAKES,CHAIN,CHEST,CHLOC,CHLOC2,CLAM,CLOAK,CLSSES,COINS,CROWN,
X     2   DALTLC,DOG,DRAGON,EGGS,FISSUR,FLOWER,GATLOC,GRAIL,HIVE,
X     3   HONEY,HORN,JEWELS,KEYS,LYRE,
X     4   MAGZIN,MIRROR,MUSHRM,MXSCOR,NUGGET,OYSTER,PEARL,PHONE,
X     5   PILLOW,POLE,POSTER,PREPAT,PREPDN,PREPFR,PREPIN,PREPOF,
X     6   PREPON,PYRAM,RADIUM,RING,RUG,SAPPHI,SHIELD,SHOES,
X     7   SHUT,SLUGS,SNAKE,SPHERE,STEPS,STICKS,SWORD,TABLET,TRIDNT,
X     8   UNLOCK,VASE,WALL,WALL2,WEAR,WUMPUS,Y2,YANK
X       COMMON /SV3COM/DTK,ATAB(600),VTXT(45,2),OTXT(45,2),IOTXT(15,2)
X     1      ,TXT(35,2)
X	COMMON /TNOUX/INDENT
X       DIMENSION ACTSPK(60),CTEXT(12),CVAL(12)
X       DIMENSION HNAME(10)
X
X       LOGICAL AJAR,AT,ATHAND,BITSET,BLIND,CLOSED,CLOSNG,
X     1  DARK,DEAD,EDIBLE,ENCLSD,FORCED,
X     2  GAVEUP,HERE,HINGED,HOLDNG,INSIDE,LMWARN,LOCKS,OUTSID,OPAQUE,
X     3  PANIC,PCT,PLURAL,PORTAL,PRINTD,SCORNG,SMALL,
X     4  TOTING,TREASR,LOCKED,VESSEL,WEARNG,WORN,YEA,
X     5  YESM
X
XC       DATA LINSIZ/25000/,TRVSIZ/1600/,TABSIZ/600/,LOCSIZ/250/,
XC     1  VRBSIZ/60/,RTXSIZ/450/,CLSMAX/12/,HNTSIZ/20/,
XC     2  MAXOBJ/150/,MAXLOC/300/,HNTMIN/7/,PTBSIZ/300/,ADJSIZ/50/,
XC     3  VKYSIZ/60/,BLKLIN/.TRUE./,DWFMAX/6/,ISWIZ/.FALSE./
X
X      DATA LINUSE/0/
XC  PHUCE CONSISTS OF FOUR PAIRS OF ORIGIN/DESTINATION LOCATIONS FROM/TO
XC  WHICH ONE IS TRANSPORTED ON UTTERING THE ELFIN CURSE AT THE TINY
XC  DOOR.  HE CAN GO FROM BIG TO SMALL OR SMALL TO BIG, ON EITHER SIDE OF
XC  THE DOOR.
X
X
XC  STATEMENT FUNCTIONS
XC
XC
XC  AJAR(OBJ     = TRUE IF THE OBJECT IS OPEN
XC  AT(OBJ)      = TRUE IF ON EITHER SIDE OF TWO-PLACED OBJECT
XC  ATHAND(OBJ)  = TRUE IF OBJECT IS HERE AND NOT IN CLOSED CONTAINER.
XC  BITSET(COND,L,N) = TRUE IF COND(L) HAS BIT N SET (BIT 0 IS UNITS BIT)
XC  BLIND(DUMMY) = TRUE IF HERO CAN'T SEE (TOO DARK OR GLAREY)
XC  DARK(DUMMY)  = TRUE IF LOCATION "LOC" IS DARK
XC  DEAD(OBJ)    = TRUE IF CRITTER IS KILLED (OR IN ENCHANTED SLEEP)
XC  FORCED(LOC)  = TRUE IF LOC MOVES WITHOUT ASKING FOR INPUT (COND=2)
XC  HERE(OBJ)    = TRUE IF THE OBJ IS AT "LOC" (OR IS BEING CARRIED)
XC  HINGED(OBJ)  = TRUE IF OBJECT CAN BE OPENED/SHUT.
XC  INSIDE(LOC)  = TRUE IF LOCATION IS WELL WITHIN THE CAVE
XC  LIQ(DUMMY)   = OBJECT NUMBER OF LIQUID IN BOTTLE
XC  LIQLOC(LOC)  = OBJECT NUMBER OF LIQUID (IF ANY) AT LOC
XC  LIVING(OBJ)  = TRUE IF OBJ IS SOME SORT OF CRITTER
XC  LOCKED(OBJ)  = TRUE IF OBJECT IS LOCKED. (NEED NOT HAVE A LOCK,
XC                  E.G., RUSTY DOOR)
XC  LOCKS(OBJ)   = TRUE IF OBJECT HAS A LOCK.
XC  OPAQUE(OBJ)  = TRUE IF CONTAINER IS NOT TRANSPARENT (SACK, CHEST)
XC                 TRANSPARENT OBJS: BOTTLE(GLASS), CAGE(WICKER)
XC  OUTSID(LOC)  = TRUE IF LOCATION IS OUTSIDE THE CAVE
XC  PCT(N)       = TRUE N% OF THE TIME (N INTEGER FROM 0 TO 100)
XC  PLURAL(OBJ)  = TRUE IF IT IS A PLURAL OBJ (SHOES, KEYS, ETC.)
XC  PORTAL(LOC)  = TRUE IS LOCATION IS IN CAVE "ENTRANCE"
XC  PRINTD(OBJ)  = TRUE IF OBJECT CAN BE READ.
XC  SMALL(OBJ)   = TRUE IF OBJ FITS INTO SACK
XC  TOTING(OBJ)  = TRUE IF THE OBJ IS BEING CARRIED
XC  TREASR(OBJ)  = TRUE IF OBJECT IS A TREASURE
XC  VESSEL(OBJ)  = TRUE IF OBJECT IS A CONTAINER
XC  WEARNG(OBJ)  = TRUE IF OBJECT IS BEING WORN
XC  WORN(OBJ)    = TRUE IF THE OBJECT CAN BE WORN
XC
XC  CLOSED SAYS WHETHER WE'RE ALL THE WAY CLOSED
XC  CLOSNG SAYS WHETHER ITS CLOSING TIME YET
XC  DEMO IS TRUE IF THIS IS A PRIME-TIME DEMONSTRATION GAME
XC  GAVEUP SAYS WHETHER HE EXITED VIA "QUIT"
XC  LMWARN SAYS WHETHER HE'S BEEN WARNED ABOUT LAMP GOING DIM
XC  PANIC SAYS WHETHER HE'S FOUND OUT HE'S TRAPPED IN THE CAVE
XC  SCORNG INDICATES TO THE RATING ROUTINE WHETHER WE'RE DOING A "SCORE" COMMAND
XC  WZDARK SAYS WHETHER THE LOC HE'S LEAVING WAS DARK
XC  YEA IS RANDOM YES/NO REPLY
X
X
X
X
XC  CLEAR OUT THE VARIOUS TEXT-POINTER ARRAYS.  ALL TEXT IS STORED IN ARRAY
XC  LINES; EACH LINE IS PRECEDED BY A WORD POINTING TO THE NEXT POINTER (I.E.
XC  THE WORD FOLLOWING THE END OF THE LINE).  THE POINTER IS NEGATIVE IF THIS IS
XC  FIRST LINE OF A MESSAGE.  THE TEXT-POINTER ARRAYS CONTAIN INDICES OF
XC  POINTER-WORDS IN LINES.  STEXT(N) IS SHORT DESCRIPTION OF LOCATION N.
XC  LTEXT(N) IS LONG DESCRIPTION.  PTEXT(N) POINTS TO MESSAGE FOR PROP(  PROPN)=0
XC  SUCCESSIVE PROP MESSAGES ARE FOUND BY CHASING POINTERS.  RTEXT CONTAINS
XC  SECTION 6'S STUFF.  CTEXT(N) POINTS TO A PLAYER-CLASS MESSAGE.  MTEXT IS FOR
XC  SECTION 12.  WE ALSO CLEAR COND.  SEE DESCRIPTION OF SECTION 9 FOR DETAILS.
X
X
XC     ****** CALL THE ROUTINE TO RESTORE FORM DISK ALL THE COMMONS
X   
XC        DEADBT = 10
XC        OPENBT = 2
XC        LOCKBT = 4
XC        BURNBT = 6
XC        WEARBT = 12 
XC       DATA PHUCE/158,160,160,158,167,166,166,167/
X
X	OPEN (UNIT=16,FILE='ADVTXT',STATUS='OLD',FORM=
X     1   'UNFORMATTED',ACCESS='SEQUENTIAL')
X        READ(16)ISWIZ,ADJKEY,ADJTAB,ADJSIZ,OPENBT,LOCKBT,BURNBT,WEARBT
X        READ(16)BLKLIN,LOCCON,OBJCON,NUMDIE,MAXDIE,TURNS
X        READ(16)DWARF,KNIFE,KNFLOC,DFLAG,DSEEN,DLOC,ODLOC,DWFMAX
X        READ(16)HOLDER,HLINK,HINTLC,HINTED,HINTS,HNTSIZ,HNTMIN
X        READ(16)BOTTLE,CASK,WATER,OIL,WINE,LIQTYP
X        READ(16)LOC,OLDLOC,OLDLC2,NEWLOC,MAXLOC
X        READ(16) LTEXT,STEXT,KEY,ABB,LOCSIZ
X        READ(16) BACK,CAVE,DPRSSN,ENTRNC,EXIT,GO,LOOK,NULL,
X     1 AXE,BEAR,BOAT,BOOK,BOOK2,BOOTH,CARVNG,CHASM,CHASM2,DOOR,GNOME,
X     2 GRATE,LAMP,PDOOR,PLANT,PLANT2,ROCKS,ROD,ROD2,SAFE,
X     3 TDOOR,TDOOR2,TROLL,TROLL2,EMRALD,SPICES,
X     4 FIND,YELL,INVENT,LEAVE,POUR,SAY,TAKE,THROW,
X     5 IWEST,PHUCE,TK
X
X       READ(16)PLAC,FIXD,WEIGHT,PROP,POINTS
X       READ(16) ATLOC,LINK,PLACE,
X     1          FIXED,MAXOBJ
X       READ(16) VKEY,PTAB,VKYSIZ,PTBSIZ,TRAVEL
X       READ(16)LINES,RTEXT,PTEXT,WDX,KTAB,TABSIZ
X       READ(16) VERBS,VRBX,OBJS,
X     1  OBJX,IOBJS,IOBX,PREP,WORDS
X
X       READ(16)ABBNUM,ADJ,ATBS,ATTACK,BCROSS,BONUS,CHASE,
X     1   CLOCK1,CLOCK2,CLOCK3,CLOSED,CLOSNG,CLSMAX,COMBO,DEADBT,
X     2   DETAIL,DKILL,DTOTAL,DWARFN,FLG239,
X     3   FOO,FOOBAR,FOOD,GAVEUP,HEALTH,HINT,HIT,HNTMAX,I,IKK,ILOC,
X     4   IOBJ,J,JJ,JK1,JKK,K,K1,KK,L,L1,LIMIT,
X     5   LINSIZ,LL,LMWARN,LOCK,LOGOUT,MESSAG,OBJ,PANIC,
X     6   PORTAL,PTBS,RDFLAG,RETN,RTXSIZ,SCORE,SCORNG,SECT,
X     7   SKEY,SLOC,SPK,START,STICK,TABNDX,TALLY,TALLY2,TERSE,
X     8   TRVS,TRVSIZ,VEND,VERB,VRBSIZ,WASTE,WKDAY,WKEND,WZDARK,
X     9   YEA,ACTSPK,CTEXT,CVAL,HNAME
X       READ(16)ANVIL,BATTER,BEES,BILLBD,BIRD,BRUSH,CAGE,
X     1   CAKES,CHAIN,CHEST,CHLOC,CHLOC2,CLAM,CLOAK,CLSSES,COINS,CROWN,
X     2   DALTLC,DOG,DRAGON,EGGS,FISSUR,FLOWER,GATLOC,GRAIL,HIVE,
X     3   HONEY,HORN,JEWELS,KEYS,LYRE,
X     4   MAGZIN,MIRROR,MUSHRM,MXSCOR,NUGGET,OYSTER,PEARL,PHONE,
X     5   PILLOW,POLE,POSTER,PREPAT,PREPDN,PREPFR,PREPIN,PREPOF,
X     6   PREPON,PYRAM,RADIUM,RING,RUG,SAPPHI,SHIELD,SHOES,
X     7   SHUT,SLUGS,SNAKE,SPHERE,STEPS,STICKS,SWORD,TABLET,TRIDNT,
X     8   UNLOCK,VASE,WALL,WALL2,WEAR,WUMPUS,Y2,YANK
X       READ(16)DTK,ATAB,VTXT,OTXT,IOTXT
X     1      ,TXT
X        CLOSE(16)
X        LOC = 1
X        INDENT = 0
XC  FINALLY, SINCE WE'RE CLEARLY SETTING THINGS UP FOR THE FIRST TIME...
X
XC  START-UP, DWARF STUFF
X
X1	CONTINUE
X       I=RANZ(1)
X       CALL RSPEAK(325)
X       HINTED(3)=YES(65,1,0)
X       NEWLOC=1
X       LIMIT=650
X	FLG239=0
X       IF(HINTED(3))LIMIT=400
X
XC  CAN'T LEAVE CAVE ONCE IT'S CLOSING (EXCEPT BY MAIN OFFICE).
X
X2       IF(.NOT.OUTSID(NEWLOC).OR.NEWLOC.EQ.0.OR..NOT.CLOSNG)GOTO 71
X       CALL RSPEAK(130)
X       NEWLOC=LOC
X       IF(.NOT.PANIC)CLOCK2=15
X       PANIC=.TRUE.
X
XC  SEE IF A DWARF HAS SEEN HIM AND HAS COME FROM WHERE HE WANTS TO GO.  IF SO,
XC  THE DWARF'S BLOCKING HIS WAY.  IF COMING FROM PLACE FORBIDDEN TO PIRATE
XC  (DWARVES ROOTED IN PLACE) LET HIM GET OUT (AND ATTACKED).
X
X71    IF(NEWLOC.EQ.LOC)GOTO 74
X      ILOC=LOC
X171   IF(FORCED(ILOC))GOTO 74
X172   IF(IAND(LOCCON(ILOC),16).NE.0)GOTO 74
X      L1=DWFMAX-1
X       DO 73 I=1,L1
X       IF(ODLOC(I).NE.NEWLOC.OR..NOT.DSEEN(I))GOTO 73
X       NEWLOC=LOC
X       CALL RSPEAK(2)
X       GOTO 74
X73      CONTINUE
X74      LOC=NEWLOC
X
XC  DWARF STUFF.  SEE EARLIER COMMENTS FOR DESCRIPTION OF VARIABLES.  REMEMBER
XC  SIXTH DWARF IS PIRATE AND IS THUS VERY DIFFERENT EXCEPT FOR MOTION RULES.
X
XC  FIRST OFF, DON'T LET THE DWARVES FOLLOW HIM INTO A PIT OR A WALL.  ACTIVATE
XC  THE WHOLE MESS THE FIRST TIME HE GETS AS FAR AS THE HALL OF MISTS (LOC 15).
XC  IF NEWLOC IS FORBIDDEN TO PIRATE (IN PARTICULAR, IF IT'S BEYOND THE TROLL
XC  BRIDGE), BYPASS DWARF STUFF.  THAT WAY PIRATE CAN'T STEAL RETURN TOLL, AND
XC  DWARVES CAN'T MEET THE BEAR.  ALSO MEANS DWARVES WON'T FOLLOW HIM INTO DEAD
XC  END IN MAZE, BUT C'EST LA VIE.  THEY'LL WAIT FOR HIM OUTSIDE THE DEAD END.
X
X       IF(LOC.EQ.0.OR.FORCED(LOC).OR.IAND(LOCCON(NEWLOC),16).NE.0)
X     1  GOTO 2000
X       IF(DFLAG.NE.0)GOTO 6000
X       IF(INSIDE(LOC))DFLAG=1
X       GOTO 2000
X
XC  WHEN WE ENCOUNTER THE FIRST DWARF, WE KILL 0, 1, OR 2 OF THE DWFMAX DWARVES.
XC  IF ANY OF THE SURVIVORS IS AT LOC, REPLACE HIM WITH THE ALTERNATE.
X
X6000    IF(DFLAG.NE.1)GOTO 6010
X       IF(.NOT.INSIDE(LOC).OR.PCT(95))GOTO 2000
X       DFLAG=2
X       DO 6001 I=1,2
X       J=1+RANZ(DWFMAX-1)
X6001    IF(PCT(50))DLOC(J)=0
X      L1=DWFMAX-1
X       DO 6002 I=1,L1
X       IF(DLOC(I).EQ.LOC)DLOC(I)=DALTLC
X6002    ODLOC(I)=DLOC(I)
X       CALL RSPEAK(3)
X       CALL DROP(AXE,LOC)
X       GOTO 2000
X
XC  THINGS ARE IN FULL SWING.  MOVE EACH DWARF AT RANDOM, EXCEPT IF HE'S SEEN US
XC  HE STICKS WITH US.  DWARVES NEVER GO TO LOCS WHICH ARE OUTSIDE OR IN
XC  EITHER OF THE TWO PORTAL AREAS.  IF WANDERING AT RANDOM, THEY
XC  DON'T BACK UP UNLESS THERE'S NO ALTERNATIVE.  IF THEY DON'T HAVE TO
XC  MOVE, THEY ATTACK.  AND, OF COURSE, DEAD DWARVES DON'T DO MUCH OF ANYTHING.
X
X6010    DTOTAL=0
X       ATTACK=0
X       STICK=0
X       DO 6030 I=1,DWFMAX
X       IF(DLOC(I).EQ.0)GOTO 6030
X       J=1
X       KK=KEY(DLOC(I))
X       IF(KK.EQ.0)GOTO 6016
X6012    NEWLOC=MOD(IABS(TRAVEL(KK))/1000,1000)
X       IF(NEWLOC.GT.MAXLOC.OR.NEWLOC.EQ.ODLOC(I)
X     1  .OR..NOT.INSIDE(NEWLOC)
X     2  .OR.(J.GT.1.AND.NEWLOC.EQ.TK(J-1)).OR.J.GE.20
X     3  .OR.NEWLOC.EQ.DLOC(I).OR.FORCED(NEWLOC)
X     4  .OR.(I.EQ.DWFMAX.AND.IAND(LOCCON(NEWLOC),16).NE.0)
X     5  .OR.IABS(TRAVEL(KK))/1000.EQ.100)GOTO 6014
X       TK(J)=NEWLOC
X       J=J+1
X6014    KK=KK+1
X       IF(TRAVEL(KK-1).GE.0)GOTO 6012
X6016    TK(J)=ODLOC(I)
X       IF(J.GE.2)J=J-1
X       J=1+RANZ(J)
X       ODLOC(I)=DLOC(I)
X       DLOC(I)=TK(J)
X       DSEEN(I)=(DSEEN(I).AND.INSIDE(LOC))
X     1  .OR.(DLOC(I).EQ.LOC.OR.ODLOC(I).EQ.LOC)
X       IF(.NOT.DSEEN(I))GOTO 6030
X       DLOC(I)=LOC
X       IF(I.NE.DWFMAX)GOTO 6027
X
XC  THE PIRATE'S SPOTTED HIM.  HE LEAVES HIM ALONE ONCE WE'VE FOUND CHEST.
XC  K COUNTS IF A TREASURE IS HERE.  IF NOT, AND TALLY=TALLY2 PLUS ONE FOR
XC  AN UNSEEN CHEST, LET THE PIRATE BE SPOTTED.
X
X       IF(LOC.EQ.CHLOC.OR.PROP(CHEST).GE.0)GOTO 6030
X       K=0
X       DO 6020 J=1,MAXOBJ
XC  PIRATE WON'T TAKE PYRAMID FROM PLOVER ROOM OR DARK ROOM (TOO EASY!).
X       IF(.NOT.TREASR(J).OR.(J.EQ.CASK.AND.LIQ(CASK).NE.WINE))GOTO 6020
X       IF(J.EQ.PYRAM.AND.(LOC.EQ.PLAC(PYRAM)
X     1  .OR.LOC.EQ.PLAC(EMRALD)))GOTO 6020
X       IF(TOTING(J).AND.ATHAND(J))GOTO 6022
X6020    IF(HERE(J).AND.TREASR(J))K=1
X       IF(TALLY.EQ.TALLY2+1.AND.K.EQ.0.AND.PLACE(CHEST).EQ.0
X     1  .AND.ATHAND(LAMP).AND.PROP(LAMP).EQ.1)GOTO 6025
X       IF(ODLOC(DWFMAX).NE.DLOC(DWFMAX).AND.PCT(30))CALL RSPEAK(127)
X       GOTO 6030
X
X6022    CALL RSPEAK(128)
XC  DON'T STEAL CHEST BACK FROM TROLL!
X       IF(PLACE(MESSAG).EQ.0)CALL MOVE(CHEST,CHLOC)
X       CALL MOVE(MESSAG,CHLOC2)
X       DO 6023 J=1,MAXOBJ
X       IF(.NOT.TREASR(J).OR.(J.EQ.PYRAM.AND.
X     1  (LOC.EQ.PLAC(PYRAM).OR.LOC.EQ.PLAC(EMRALD))).OR.
X     2  (J.EQ.CASK.AND.LIQ(CASK).NE.WINE).OR.
X     3  (ENCLSD(J).AND..NOT.ATHAND(J)))GOTO 6023
X       IF(AT(J).AND.FIXED(J).EQ.0)CALL CARRY(J,LOC)
X       IF(ENCLSD(J))CALL REMOVE(J)
X       IF(.NOT.HOLDNG(J))GOTO 6023
X       CALL INSERT(J,CHEST)
X       IF(.NOT.WEARNG(J))GOTO 6023
X       PROP(J)=0
X       CALL BITOFF(J,WEARBT)
X6023    CONTINUE
X6024    DLOC(DWFMAX)=CHLOC
X       ODLOC(DWFMAX)=CHLOC
X       DSEEN(DWFMAX)=.FALSE.
X       GOTO 6030
X
X6025    CALL RSPEAK(186)
X       CALL MOVE(CHEST,CHLOC)
X       CALL MOVE(MESSAG,CHLOC2)
X       GOTO 6024
X
XC  THIS THREATENING LITTLE DWARF IS IN THE ROOM WITH HIM!
X
X6027    DTOTAL=DTOTAL+1
X       IF(ODLOC(I).NE.DLOC(I))GOTO 6030
X       ATTACK=ATTACK+1
X       IF(KNFLOC.GE.0)KNFLOC=LOC
X       IF(RANZ(1000).LT.250*(DFLAG-2))STICK=STICK+1
X6030    CONTINUE
X
XC  NOW WE KNOW WHAT'S HAPPENING.  LET'S TELL THE POOR SUCKER ABOUT IT.
X
X       IF(DTOTAL.EQ.0)GOTO 2000
X       IF(DTOTAL.EQ.1)GOTO 75
X       WRITE(*,67)DTOTAL
X67      FORMAT(/' There are ',I1,' threatening little dwarves in the'
X     1  ,' room with you!')
X       GOTO 77
X75      CALL RSPEAK(4)
X77      IF(ATTACK.EQ.0)GOTO 2000
X       IF(DFLAG.EQ.2)DFLAG=3
X       IF(ATTACK.EQ.1)GOTO 79
X       WRITE(*,78)ATTACK
X78      FORMAT(/' ',I1,' of them throw knives at you!')
X       K=6
X82      IF(STICK.GT.1)GOTO 83
X       CALL RSPEAK(K+STICK)
X       IF(STICK.EQ.0)GOTO 2000
X       GOTO 84
X83      WRITE(*,68)STICK
X68      FORMAT(/' ',I1,' of them get you!')
X84      OLDLC2=LOC
X       GOTO 94100
X
X79      CALL RSPEAK(5)
X       K=52
X       GOTO 82
XC  DESCRIBE THE CURRENT LOCATION AND (MAYBE) GET NEXT COMMAND.
X
XC  PRINT TEXT FOR CURRENT LOC.
X
X2000    IF(LOC.EQ.0)GOTO 94100
X       JKK=STEXT(LOC)
X       IF(VERB.EQ.LOOK.OR.JKK.EQ.0.OR.
X     1 (.NOT.TERSE.AND.MOD(ABB(LOC),ABBNUM).EQ.0) )JKK=LTEXT(LOC)
X       IF((FORCED(LOC).OR..NOT.DARK(0)).AND.LOC.NE.200)GOTO 2001
X       IF(LOC.NE.200.AND. (DARK(0).OR.PROP(LAMP).EQ.0
X     1  .OR..NOT.ATHAND(LAMP)) )GOTO 2003
X       IF(PROP(LAMP).EQ.0.OR..NOT.ATHAND(LAMP))GOTO 2020
X       IF(PCT(35))GOTO 94000
X       JKK=RTEXT(294)
X       GOTO 2020
X
X2003    IF(WZDARK.AND.PCT(35))GOTO 94000
X       JKK=RTEXT(16)
X2001    IF(HOLDNG(BEAR).AND..NOT.DARK(0))CALL RSPEAK(141)
X2020    CALL SPEAK(JKK)
X       K=1
X       ABB(LOC)=ABB(LOC)+1
X       IF(.NOT.FORCED(LOC))GOTO 2022
X       CALL TRAVL(K,BCROSS,TALLY2)
X       IF(KILLED)GOTO 94100
X       GOTO 2
X
X2022    ABB(LOC)=ABB(LOC)-1
X       IF(LOC.EQ.Y2.AND.PCT(25).AND..NOT.CLOSNG)CALL RSPEAK(8)
X       IF(LOC.EQ.147.AND.ABB(LOC).EQ.1)CALL RSPEAK(216)
X
XC  SEE IF HE IS WASTING HIS BATTERIES OUT IN THE OPEN.
X       K=0
X       IF(.NOT.OUTSID(LOC).OR.PROP(LAMP).EQ.0)GOTO 2030
X       K=WASTE+1
X       IF(K.LE.12)GOTO 2030
X       CALL RSPEAK(324)
X       K=0
X2030    WASTE=K
X
XC  IF WUMPUS IS CHASING STOOGE, SEE IF WUMPUS GETS HIM.
X       IF(CHASE.EQ.0)GOTO 2040
X       CHASE=CHASE+1
X       KK=CHASE/2
X       PROP(WUMPUS)=KK
X       CALL MOVE(WUMPUS,LOC)
X       IF(KK.LT.5)GOTO 2040
X       IF(DARK(0))CALL RSPEAK(270)
X       CALL PSPEAK(WUMPUS,5)
X       GOTO 94100
X
XC  CHECK FOR RADIATION POISONING.
X2040    K=1
X       IF(OUTSID(LOC))K=3
X       HEALTH=MIN0(HEALTH+K,100)
X       IF(.NOT.HERE(RADIUM).OR.
X     1 (PLACE(RADIUM).EQ.-SHIELD.AND..NOT.AJAR(SHIELD)) )GOTO 2045
X       HEALTH=HEALTH-7
X       IF(HEALTH.GE.60)GOTO 2045
X       CALL RSPEAK(391+(60-HEALTH)/10)
X       IF(HEALTH.LE.0)GOTO 94100
XC  PRINT OUT DESCRIPTIONS OF OBJECTS AT THIS LOCATION.  IF NOT CLOSING AND
XC  PROPERTY VALUE IS NEGATIVE, TALLY OFF ANOTHER TREASURE.  RUG IS SPECIAL
XC  CASE; ONCE SEEN, ITS PROP IS 1 (DRAGON ON IT) TILL DRAGON IS KILLED.
XC  SIMILARLY FOR CHAIN; PROP IS INITIALLY 1 (LOCKED TO BEAR).
XC  LIKEWISE, FOR SWORD (MUST PROVE ELFIN ROYALTY).
X
X2045    IF(OLDLOC.NE.188.OR.LOC.EQ.189.OR.LOC.EQ.188
X     1  .OR.PROP(BOOTH).NE.1)GOTO 2021
X       CALL MOVE(GNOME,0)
X       PROP(BOOTH)=0
X2021    IF(BLIND(0))GOTO 2100
X       ABB(LOC)=ABB(LOC)+1
X       I=ATLOC(LOC)
X2004    IF(I.EQ.0)GOTO 2100
X       OBJ=I
X       IF(OBJ.GT.MAXOBJ)OBJ=OBJ-MAXOBJ
X       IF(OBJ.EQ.STEPS.AND.TOTING(NUGGET))GOTO 2008
X       IF(PROP(OBJ).GE.0)GOTO 2006
X       IF(CLOSED)GOTO 2008
X       PROP(OBJ)=0
X       IF(OBJ.EQ.RUG.OR.OBJ.EQ.CHAIN.OR.OBJ.EQ.SWORD
X     1  .OR.OBJ.EQ.CASK)PROP(OBJ)=1
X       IF(OBJ.EQ.CLOAK.OR.OBJ.EQ.RING)PROP(OBJ)=2
X       TALLY=TALLY-1
XC  IF REMAINING TREASURES TOO ELUSIVE, ZAP HIS LAMP.
X       IF(TALLY.EQ.TALLY2.AND.TALLY.NE.0)LIMIT=MIN0(35,LIMIT)
X2006    KK=PROP(OBJ)
X       IF(OBJ.EQ.STEPS.AND.LOC.EQ.FIXED(STEPS))KK=1
X      CALL PSPEAK(OBJ,KK)
X       CALL LOOKIN(OBJ)
X2008    I=LINK(I)
X       GOTO 2004
X
XC  "I DON'T UNDERSTAND THAT!"
X2060    SPK=CONFUZ(0)
X       GOTO 2011
X
XC  "YOU CAN'T DO THAT!"  (AN IMPOSSIBLE ACT, E.G., "OPEN SWORD", "FEED BOAT", ET
X2070    SPK=NOWAY(0)
X       GOTO 2011
X
X2009    SPK=54
X2011    IF(OBJ.EQ.0.OR.(OBJS(2).EQ.0.AND.IOBJS(2).EQ.0))GOTO 2015
X       CALL PSPEAK(OBJ,-1)
X       CALL TNOUA
X       BLKLIN=.FALSE.
X2015    CALL RSPEAK(SPK)
X       BLKLIN=.TRUE.
X
X2100    RDFLAG=.FALSE.
X       IF(OBJX.EQ.0)GOTO 2110
X       OBJX=OBJX+1
X       IF(OBJS(OBJX).EQ.0)OBJX=0
X2110    IF(OBJX.GT.0.AND.OBJS(OBJX).NE.0)GOTO 2120
X       IF(IOBX.EQ.0)GOTO 2120
X       IOBX=IOBX+1
X       IF(IOBJS(IOBX).EQ.0)IOBX=0
X       IF(IOBX.NE.0.AND.OBJS(1).NE.0)OBJX=1
X
X2120    IF(OBJX.GT.0.OR.IOBX.GT.0)GOTO 2600
X       IF(OBJS(1).NE.0)OBJX=1
X       IF(IOBJS(1).NE.0)IOBX=1
X       VRBX=VRBX+1
X       IF(VERBS(VRBX).NE.0)GOTO 2600
X       CALL CLRLIN
X       RDFLAG=.TRUE.
X
XC  CHECK IF THIS LOC IS ELIGIBLE FOR ANY HINTS.  IF BEEN HERE LONG ENOUGH,
XC  BRANCH TO HELP SECTION (ON LATER PAGE).  HINTS ALL COME BACK HERE EVENTUALLY
XC  TO FINISH THE LOOP.  IGNORE "HINTS" < HNTMIN (SPECIAL STUFF, SEE DATABASE
XC  NOTES).
X
X2600    DO 2601 HINT=HNTMIN,HNTMAX
X       IF(HINTED(HINT))GOTO 2601
X      IF((LOCCON(LOC)/256).NE.HINT-6)HINTLC(HINT)=-1
X       HINTLC(HINT)=HINTLC(HINT)+1
X       IF(HINTLC(HINT).GE.HINTS(HINT,1))GOTO 40000
X2601     CONTINUE
X2602     CONTINUE
XC  KICK THE RANDOM NUMBER GENERATOR JUST TO ADD VARIETY TO THE CHASE.  ALSO,
XC  IF CLOSING TIME, CHECK FOR ANY OBJECTS BEING TOTED WITH PROP < 0 AND SET
XC  THE PROP TO -1-PROP.  THIS WAY OBJECTS WON'T BE DESCRIBED UNTIL THEY'VE
XC  BEEN PICKED UP AND PUT DOWN SEPARATE FROM THEIR RESPECTIVE PILES.  DON'T
XC  TICK CLOCK1 UNLESS WELL INTO CAVE (AND NOT AT Y2).
X
X       IF(.NOT.CLOSED)GOTO 2605
X       IF(PROP(OYSTER).LT.0.AND.TOTING(OYSTER))
X     1  CALL PSPEAK(OYSTER,1)
X       DO 2604 I=1,MAXOBJ
X2604    IF(TOTING(I).AND.PROP(I).LT.0)PROP(I)=-1-PROP(I)
X2605    WZDARK=DARK(0)
X       IF(KNFLOC.GT.0.AND.KNFLOC.NE.LOC)KNFLOC=0
X       I=RANZ(1)
X       IF(.NOT.RDFLAG)GOTO 2608
X
XC  GET A NEW INPUT CLAUSE, OR FINISH GETTING CURRENT ONE.
X
X       CALL GETWDS
X       VRBX=1
X       OBJX=0
X       IF(OBJS(1).NE.0)OBJX=1
X       IOBX=0
X       IF(IOBJS(1).NE.0)IOBX=1
X       RDFLAG=.TRUE.
X
XC  EVERY INPUT, CHECK "FOOBAR" FLAG.  IF ZERO, NOTHING'S GOING ON.  IF POS,
XC  MAKE NEG.  IF NEG, HE SKIPPED A WORD, SO MAKE IT ZERO.
X
X2608    FOOBAR=MIN0(0,-FOOBAR)
X       COMBO=MIN0(0,-COMBO)
X       TURNS=TURNS+1
X2609    IF(TURNS.EQ.310.AND.ABBNUM.NE.10000.AND..NOT.TERSE)
X     1  CALL RSPEAK(273)
X
XC  BUMP ALL THE RIGHT CLOCKS FOR RECONNING BATTERY LIFE AND CLOSING.
X
X       IF(CLOSED)CLOCK3=CLOCK3-1
X       IF(CLOCK3.EQ.-7)GOTO 93300
X       IF(CLOCK3.NE.0)GOTO 2621
X       PROP(PHONE)=0
X       PROP(BOOTH)=0
X       CALL RSPEAK(284)
X2621    IF(TALLY.EQ.0.AND.INSIDE(LOC).AND.LOC.NE.Y2)CLOCK1=CLOCK1-1
X       IF(CLOCK1.EQ.0)GOTO 90000
X       IF(CLOCK1.LT.0)CLOCK2=CLOCK2-1
X       IF(CLOCK2.EQ.0)GOTO 91000
X       IF(PROP(LAMP).EQ.1)LIMIT=LIMIT-1
X       IF(LIMIT.EQ.0)GOTO 92400
X       IF(LIMIT.LT.0.AND.OUTSID(LOC))GOTO 92600
X       IF(LIMIT.LE.40)GOTO 92000
X
X19999   VERB=VAL(VERBS(VRBX))
X       OBJ=0
X       IF(OBJX.NE.0)OBJ=OBJS(OBJX)
X       IOBJ=0
X       IF(IOBX.NE.0)IOBJ=IOBJS(IOBX)
X       IF(KNFLOC.NE.LOC.OR.(OBJ.NE.KNIFE.AND.IOBJ.NE.KNIFE))GOTO 19998
X       KNFLOC=-1
X       SPK=116
X       GOTO 2011
X
X19998   GOTO (2750,2700,4000,2710), CLASS(VERBS(VRBX))
X2700    CALL BUG(22)
X
X2710    SPK=VERB
X       GOTO 2011
X
XC  IT IS A MOTION VERB.  ANALYZE IT & LOOP TO 2, IF NOT DEAD.
X2750    CALL TRAVL(VERB,BCROSS,TALLY2)
X       IF(KILLED)GOTO 94100
X       GOTO 2
X
XC  ACTION VERB 'LEAVE' (DROP) HAS NO OBJECT.
X3100    CALL BUG(29)
X
XC  VERB 'SAY' OR 'YELL' SLIPPED THROUGH WITH AN OBJECT.
X3200    CALL BUG(34)
X
XC  ANALYSE A VERB.
X4000    SPK=ACTSPK(VERB)
X       IF(OBJ.NE.0.OR.IOBJ.NE.0)GOTO 4090
X
XC  ANALYSE AN INTRANSITIVE VERB (IE, NO OBJECT GIVEN YET).
X
X       GOTO(
X     9 10100,10000,10000,10400, 2009,10400,20700,20800,10000,10000,
X     9  2011,21200,11300,11400,11500,10000,10000,11800,10000,12000,
X     9 10000,12200,12300,12400,12500,12600,10000,10000,10000,13000,
X     9 13100,10100,10000,10000,13500,23600, 3100,13800,10000,10000,
X     9 10000,10000,10000,10100,10100,10100,10100,14800,10400,10400,
X     9 25100,25200,25300,25400,25500,25600,25700,25800,25900),VERB
XC 01-10    TAKE  DROP   SAY  OPEN  NOTH CLOSE    ON   OFF  WAVE  CALM
XC 11-20    WALK  KILL  POUR   EAT DRINK   RUB THROW  QUIT  FIND INVEN
XC 21-30    FEED  FILL BLAST SCORE   FOO BRIEF  READ BREAK  WAKE SUSPD
XC 31-40   RESUM  YANK  WEAR   HIT ANSWR  BLOW LEAVE  YELL  DIAL  PLAY
XC 41-50    PICK   PUT  TURN   GET INSRT REMOV  BURN GRIPE  LOCK UNLOK
XC 51-60  HEALTH  LOOK COMBO SWEEP TERSE WIZ   MAP   GATE   PIRLOC
X       CALL BUG(23)
X
XC  ANALYSE A TRANSITIVE VERB.
X
X4090    GOTO(
X     9 20100,20200, 3200,20400, 2009,20600,20700,20800,20900, 2011,
X     9  2011,21200,21300,21400,21500,21600,21700, 2011,21900,21900,
X     9 22100,22200,12300, 2011, 2011,22600,22700,22800,22900, 2011,
X     9  2011,23200,23300,23400,23500,23600,20200, 3200,23900,24000,
X     9 24100,24200,24300,24400,24500,24600,24700, 2060,24900,25000,
X     9  2060,25200, 2070,25400, 2060, 2060, 2060, 2060, 2060),VERB
XC 01-10    TAKE  DROP   SAY  OPEN  NOTH CLOSE    ON   OFF  WAVE  CALM
XC 11-20    WALK  KILL  POUR   EAT DRINK   RUB THROW  QUIT  FIND INVEN
XC 21-30    FEED  FILL BLAST SCORE   FOO BRIEF  READ BREAK  WAKE SUSPD
XC 31-40    HOUR  YANK  WEAR   HIT ANSWR  BLOW LEAVE  YELL  DIAL  PLAY
XC 41-50    PICK   PUT  TURN   GET INSRT REMOV  BURN GRIPE  LOCK UNLOK
XC 51-60  HEALTH  LOOK COMBO SWEEP TERSE WIZ    MAP   GATE  PIRLOC
X       CALL BUG(24)
XC  ROUTINES FOR PERFORMING THE VARIOUS ACTION VERBS
X
XC  STATEMENT NUMBERS IN THIS SECTION ARE 10000 FOR INTRANSITIVE VERBS, 20000 FOR
XC  TRANSITIVE, PLUS 100 TIMES THE VERB NUMBER.  MANY INTRANSITIVE VERBS USE THE
XC  TRANSITIVE CODE, AND SOME VERBS USE CODE FOR OTHER VERBS, AS NOTED BELOW.
X
XC  RANDOM INTRANSITIVE VERBS COME HERE.  CLEAR OBJ JUST IN CASE (SEE "ATTACK").
X
X10000   CALL A5TOA1(VTXT(VRBX,1),VTXT(VRBX,2),'_What?',ZAPP,K)
X       WRITE(*,10002)(ZAPP(I),I=1,K)
X10002   FORMAT(/' ',20A1)
X       OBJS(1)=0
X       OBJX=0
X       GOTO 2600
X
X
X10010   CALL A5TOA1(VTXT(VRBX,1),VTXT(VRBX,2),'_it?  ',ZAPP,K)
X       WRITE(*,10012)(ZAPP(I),I=1,K)
X10012   FORMAT(/' Where do you want to ',20A1)
X       GOTO 2600
X
X
XC  CONSTRUCT MSG: "I DON'T KNOW HOW TO [VERB] THE [OBJ]", AND VARIANTS.
X
XC  CARRY, NO OBJECT GIVEN YET.  OK IF ONLY ONE OBJECT PRESENT.
X
X10100   IF(ATLOC(LOC).EQ.0.OR.LINK(ATLOC(LOC)).NE.0.OR.BLIND(0))
X     1  GOTO 10000
X      L1=DWFMAX-1
X       DO 10110 I=1,L1
X       IF(DLOC(I).EQ.LOC.AND.DFLAG.GE.2)GOTO 10000
X10110   CONTINUE
X       OBJ=ATLOC(LOC)
X       IF(VERB.EQ.YANK)GOTO 23200
X       IF(VERB.EQ.WEAR)GOTO 23300
X
XC  CARRY AN OBJECT.  SPECIAL CASES FOR BIRD AND CAGE (IF BIRD IN CAGE, CAN'T
XC  TAKE ONE WITHOUT THE OTHER.  LIQUIDS ALSO SPECIAL, SINCE THEY DEPEND ON
XC  STATUS OF BOTTLE.  ALSO VARIOUS SIDE EFFECTS, ETC.
XC  "YANK" AND "WEAR" ALSO WEAVE INTO THIS CODE, SINCE THEY ARE MOSTLY
XC  JUST RESTRICTED CARRY'S.
X
X20100   IF(OBJ.EQ.BOAT)SPK=281
X       IF(PLURAL(OBJ))SPK=297
X       IF(OBJ.EQ.BIRD.AND..NOT.CLOSED.AND.ATHAND(BIRD)
X     1   .AND.PLACE(BIRD).NE.LOC)GOTO 20102
X       IF(PREP.NE.PREPOF)GOTO 20104
X       IF(OBJ.NE.0.AND.IOBJ.NE.0)GOTO 2060
X       IF(OBJ.EQ.0)OBJ=IOBJ
X       IOBJ=0
X       GOTO 20200
X20102    CALL RSPEAK(407)
X       GOTO 2
X
X20104   IF(HOLDNG(OBJ))GOTO 2011
X       ASSIGN 20106 TO RETN
X       GOTO 20190
X
X20106   IF(PREP.EQ.PREPIN)GOTO 24500
X       IF(PREP.EQ.PREPFR.OR.ENCLSD(OBJ))GOTO 24600
X
XC  THE NEXT LINES ARE FOR 'TAKING' LIQUIDS (WATER, OIL & WINE).
XC  IF WE ARE HOLDING A CONTAINER (BOTTLE OR CASK), WE CAN TAKE THE
XC  THE LIQUID BY FILLING THE CONTAINER.  IF THERE IS A CONTAINER NEARBY
XC  HOLDING THE REQUESTED LIQUID, WE WILL PICK UP THE CONTAINER.
X
X       IF(IOBJ.EQ.0)GOTO 20110
X       SPK=313
X       IF(OBJ.NE.CASK.AND.OBJ.NE.BOTTLE)GOTO 2011
X       K=0
X       IF(OBJ.EQ.CASK)K=1
X       IOBJ=IOBJ+K
X       IF(LIQ(OBJ).EQ.IOBJ)GOTO 20116
X       SPK=302+K
X       IF(PROP(OBJ).NE.1)GOTO 2011
X       GOTO 20118
X
X20110   IF(OBJ.NE.WATER.AND.OBJ.NE.OIL.AND.OBJ.NE.WINE)GOTO 20120
X       IOBJ=OBJ
X       K=0
X       OBJ=BOTTLE
X       IF(.NOT.HERE(BOTTLE))GOTO 20114
X       IF(PROP(BOTTLE).NE.1)GOTO 20112
X       IF(.NOT.HERE(CASK).OR.(HERE(CASK).AND.PROP(CASK).EQ.1))
X     1  GOTO 20118
X       OBJ=0
X       CALL RSPEAK(304)
X       GOTO 2600
X
X20112   IF(LIQ(BOTTLE).EQ.IOBJ)GOTO 20116
X20114   SPK=312
X       IF(.NOT.HERE(CASK))GOTO 2011
X       OBJ=CASK
X       K=1
X       IF(PROP(CASK).EQ.1)GOTO 20118
X       IF(LIQ(CASK).EQ.IOBJ)GOTO 20116
X       SPK=315
X       IF(.NOT.ATHAND(BOTTLE))SPK=303
X       GOTO 2011
X
X20116   IF(.NOT.HOLDNG(OBJ))GOTO 20120
X       SPK=302+K
X       GOTO 2011
X
X20118   IF(HOLDNG(OBJ))GOTO 22200
X       GOTO 20120
XC  *** END OF LIQUID STUFF
X
XC  'WEAR' AND 'YANK' WEAVE IN HERE.
X
X20120   SPK=343
X       IF(OBJ.EQ.BEAR .OR. BURDEN(0)+BURDEN(OBJ).LE.15 )GOTO 20125
X       SPK=92
X       IF(.NOT.WEARNG(OBJ))GOTO 2011
X       PROP(OBJ)=0
X       CALL BITOFF(OBJ,WEARBT)
X       GOTO 2011
X
XC  CLOAK.  BIG TROUBLE AHEAD.  CAN ONLY GET HERE VIA 'YANK'.
X20125   IF(OBJ.NE.CLOAK.OR.PROP(CLOAK).NE.2)GOTO 20130
X       PROP(ROCKS)=1
X       PROP(CLOAK)=0
X       FIXED(CLOAK)=0
X       CALL CARRY(CLOAK,LOC)
X       CALL RSPEAK(241)
X       IF(AT(WUMPUS).AND.PROP(WUMPUS).EQ.0)GOTO 22900
X       GOTO 2100
X
XC  POSTER: HIDES WALL SAFE.
X20130   IF(OBJ.NE.POSTER.OR.PLACE(SAFE).NE.0)GOTO 20160
X       PROP(POSTER)=1
X       SPK=362
XC  MOVE SAFE AND WALL CONTAINING SAFE INTO VIEW.
X       CALL DROP(SAFE,LOC)
X       CALL DROP(WALL2,LOC)
X       GOTO 20180
X
XC  BOAT: NEED THE POLE TO PUSH IT
X20160   IF(OBJ.NE.BOAT)GOTO 20165
X       SPK=218
X       IF(.NOT.TOTING(POLE).AND.PLACE(POLE).NE.-BOAT)GOTO 2011
X       PROP(BOAT)=1
X       SPK=221
X       GOTO 20180
X
XC  BIRD: GOT TO HAVE CAGE, BUT ROD CAN'T BE AROUND TO TAKE BIRD
X20165   IF(OBJ.NE.BIRD.OR.PROP(BIRD).NE.0)GOTO 20170
X       SPK=26
X       IF(ATHAND(ROD))GOTO 2011
X       SPK=27
X       IF(.NOT.HOLDNG(CAGE))GOTO 2011
X       CALL INSERT(BIRD,CAGE)
X       CALL BITOFF(CAGE,OPENBT)
X       GOTO 2009
X
XC  SWORD: IF IN ANVIL, NEEDS CROWN & MUST YANK.
X20170   IF(OBJ.NE.SWORD.OR.PROP(SWORD).EQ.0)GOTO 20180
X       IF(IOBJ.NE.0.AND.IOBJ.NE.ANVIL)GOTO 2070
X       IF(VERB.EQ.YANK)GOTO 20175
X
XC  HE WANTS THE SWORD, BUT HASN'T ESTABLISHED HIS ROYAL BLOOD, OR HE
XC  HASN'T PULLED HARD ENOUGH.  OR NEITHER.
X
X       IF(.NOT.YES(215,0,0))GOTO 2009
X20175   IF(WEARNG(CROWN))GOTO 20180
X       CALL PSPEAK(SWORD,2)
X       IF(CLOSED)GOTO 93000
X       FIXED(SWORD)=-1
X       PROP(SWORD)=3
X       GOTO 2100
X
X20180   CALL CARRY(OBJ,LOC)
X       IF(OBJ.EQ.POLE.OR.OBJ.EQ.SKEY.OR.OBJ.EQ.SWORD
X     1  .OR.((OBJ.EQ.CLOAK.OR.OBJ.EQ.RING)
X     2          .AND..NOT.WEARNG(OBJ)) )PROP(OBJ)=0
X       IF(VERB.NE.YANK.OR.OBJ.EQ.SWORD)GOTO 2011
X       SPK=204
X       GOTO 2011
X
X
XC  THIS IS A QUASI-SUBROUTINE, CALLED FROM 'TAKE' AND FROM 'INSERT', WHEN
XC  THE ITEM IS NOT CURRENTLY BEING TOTED.  'RETN' IS A VARIABLE DEFINED
XC  TO BE THE RETURN ADDRESS.
X
X20190   SPK=NOWAY(0)
X       IF(OBJ.EQ.PLANT.AND.PROP(PLANT).LE.0)SPK=115
X       IF(OBJ.EQ.BEAR.AND.PROP(BEAR).EQ.1)SPK=169
X       IF(OBJ.EQ.CHAIN.AND.PROP(BEAR).NE.0)SPK=170
X       IF(OBJ.EQ.SWORD.AND.PROP(SWORD).EQ.5)SPK=208
X       IF(OBJ.EQ.CLOAK.AND.PROP(CLOAK).EQ.2)SPK=242
X       IF(OBJ.EQ.AXE.AND.PROP(AXE).EQ.2)SPK=246
X       IF(OBJ.EQ.PHONE)SPK=251
X       IF(OBJ.EQ.BEES.OR.OBJ.EQ.HIVE)SPK=295
X       IF(OBJ.EQ.STICKS)SPK=296
X       IF(FIXED(OBJ).NE.0)GOTO 2011
X       GOTO RETN
XC  DROP/DISCARD OBJECT.  "THROW" ALSO COMES HERE FOR MOST OBJECTS.
XC  SPECIAL CASES FOR BIRD (MIGHT ATTACK SNAKE OR DRAGON) AND CAGE (MIGHT
XC  CONTAIN BIRD) AND VASE.
XC  DROP COINS IN VENDING MACHINE FOR EXTRA BATTERIES.
X
X20200   IF(HOLDNG(ROD2).AND.OBJ.EQ.ROD.AND..NOT.HOLDNG(ROD))OBJ=ROD2
X       IF(PLURAL(OBJ))SPK=105
X       K=LIQ(BOTTLE)
X       IF(K.EQ.OBJ)OBJ=BOTTLE
X       IF(OBJ.NE.BOTTLE)K=LIQ(CASK)
X       IF(OBJ.NE.BOTTLE.AND.K.EQ.OBJ)OBJ=CASK
X       IF(.NOT.TOTING(OBJ))GOTO 2011
X       IF(PREP.EQ.PREPIN)GOTO 24500
X       IF(OBJ.NE.BIRD.OR..NOT.HERE(SNAKE))GOTO 20220
X       CALL RSPEAK(30)
X       IF(CLOSED)GOTO 93000
X       CALL REMOVE(BIRD)
X       CALL DSTROY(SNAKE)
XC  SET SNAKE PROP FOR USE BY TRAVEL OPTIONS
X       PROP(SNAKE)=1
X       CALL DROP(BIRD,LOC)
X       GOTO 2100
X
X20220   SPK=344
X       IF(VERB.EQ.LEAVE)SPK=353
X       IF(VERB.EQ.THROW)SPK=352
X       IF(VERB.EQ.TAKE)SPK=54
X       IF(OBJ.NE.POLE.OR..NOT.HOLDNG(BOAT))GOTO 20240
X       SPK=280
X       GOTO 2011
X
X20240   IF(OBJ.NE.BIRD.OR..NOT.AT(DRAGON).OR.PROP(DRAGON).NE.0)
X     1  GOTO 20260
X       CALL RSPEAK(154)
X       CALL REMOVE(BIRD)
X       CALL DSTROY(BIRD)
X       IF(PLACE(SNAKE).EQ.PLAC(SNAKE))TALLY2=TALLY2+1
X       GOTO 2100
X
X20260   IF(OBJ.NE.BEAR.OR..NOT.AT(TROLL))GOTO 20270
X       SPK=163
X       CALL DSTROY(TROLL)
X       CALL DSTROY(TROLL+MAXOBJ)
X       CALL MOVE(TROLL2,PLAC(TROLL))
X       CALL MOVE(TROLL2+MAXOBJ,FIXD(TROLL))
X       CALL JUGGLE(CHASM)
X       PROP(TROLL)=2
X       GOTO 20290
X
X20270   IF(OBJ.NE.VASE.OR.LOC.EQ.PLAC(PILLOW))GOTO 20280
X       PROP(VASE)=2
X       IF(AT(PILLOW))PROP(VASE)=0
X       CALL PSPEAK(VASE,PROP(VASE)+1)
X       IF(PROP(VASE).NE.0)FIXED(VASE)=-1
X       GOTO 20290
X
X20280   IF(WORN(OBJ).OR.OBJ.EQ.POLE.OR.OBJ.EQ.BOAT)PROP(OBJ)=0
X       IF(WORN(OBJ))CALL BITOFF(OBJ,WEARBT)
X       IF(OBJ.EQ.POLE)PROP(BOAT)=0
X20290   IF(ENCLSD(OBJ))CALL REMOVE(OBJ)
X       CALL DROP(OBJ,LOC)
X       GOTO 2011
XC  OPEN/CLOSE/LOCK/UNLOCK: NO OBJECT GIVEN.
XC  ASSUME VARIOUS THINGS IF PRESENT.
X
X10400   SPK=28
X       K=0
X       DO 10410 I=1,MAXOBJ
X       IF(.NOT.(HERE(I).AND.HINGED(I)))GOTO 10410
X       OBJ=I
X       K=K+1
X10410   CONTINUE
X       IF(K.GT.1)GOTO 10000
X       IF(OBJ.NE.0)GOTO 10420
X       IF(VERB.EQ.LOCK.OR.VERB.EQ.UNLOCK)GOTO 2011
X       GOTO 10000
X
X10420   IF(VERB.EQ.LOCK)GOTO 24900
X       IF(VERB.EQ.UNLOCK)GOTO 25000
X       IF(VERB.EQ.SHUT)GOTO 20600
X
XC  OPEN.   SPECIAL STUFF FOR OPENING CLAM/OYSTER.
XC  THE FOLLOWING CAN BE OPENED WITHOUT A KEY:
XC       CLAM/OYSTER, DOOR, PDOOR, BOTTLE, CASK, CAGE
X
X20400   IF(.NOT.HINGED(OBJ))GOTO 2070
X       SPK=253
X       IF(OBJ.EQ.PDOOR.AND.PROP(PDOOR).EQ.1)GOTO 2011
X       SPK=336
X       IF(AJAR(OBJ))GOTO 2011
X       IF(LOCKS(OBJ).OR.IOBJ.EQ.KEYS.OR.IOBJ.EQ.SKEY)GOTO 25000
X       SPK=337
X       IF(OBJ.EQ.DOOR)SPK=111
X       IF(LOCKED(OBJ))GOTO 2011
X       IF(OBJ.EQ.CLAM.OR.OBJ.EQ.OYSTER)GOTO 20410
X       CALL BITON(OBJ,OPENBT)
X       GOTO 2009
X
XC  CLAM/OYSTER.
X20410   K=0
X       IF(OBJ.EQ.OYSTER)K=1
X       SPK=124+K
X       IF(HOLDNG(OBJ))SPK=120+K
X       IF(.NOT.ATHAND(TRIDNT))SPK=122+K
X       IF(IOBJ.NE.0.AND.IOBJ.NE.TRIDNT)SPK=376+K
X       IF(SPK.NE.124)GOTO 2011
X       CALL DSTROY(CLAM)
X       CALL DROP(OYSTER,LOC)
X       CALL DROP(PEARL,105)
X       GOTO 2011
X
X
XC  CLOSE.  SHUT.
XC  THE FOLLOWING CAN BE CLOSED WITHOUT KEYS:
XC       DOOR, PDOOR, BOTTLE, CASK, CAGE
X
X20600   IF(.NOT.HINGED(OBJ))GOTO 2070
X       SPK=338
X       IF(.NOT.AJAR(OBJ))GOTO 2011
X       IF(LOCKS(OBJ))GOTO 24900
X       CALL BITOFF(OBJ,OPENBT)
X       GOTO 2009
XC  LIGHT LAMP
X
X20700   IF(.NOT.ATHAND(LAMP))GOTO 2011
X       SPK=184
X       IF(LIMIT.LT.0)GOTO 2011
X       SPK=321
X       IF(PROP(LAMP).EQ.1)GOTO 2011
X       PROP(LAMP)=1
X       K=39
X       IF(LOC.EQ.200)K=108
X       CALL RSPEAK(K)
X       IF(WZDARK)GOTO 2000
X       GOTO 2100
X
XC  LAMP OFF
X
X20800   IF(.NOT.ATHAND(LAMP))GOTO 2011
X       SPK=322
X       IF(PROP(LAMP).EQ.0)GOTO 2011
X       PROP(LAMP)=0
X       CALL RSPEAK(40)
X       IF(DARK(0))CALL RSPEAK(16)
X       GOTO 2100
X
XC  WAVE.  NO EFFECT UNLESS WAVING ROD AT FISSURE.
X
X20900   IF((.NOT.HOLDNG(OBJ)).AND.(OBJ.NE.ROD.OR..NOT.HOLDNG(ROD2)))
X     1  SPK=29
X       IF(OBJ.NE.ROD.OR..NOT.AT(FISSUR).OR..NOT.HOLDNG(OBJ)
X     1  .OR.CLOSNG)GOTO 2011
X       IF(IOBJ.NE.0.AND.IOBJ.NE.FISSUR)GOTO 2011
X       PROP(FISSUR)=1-PROP(FISSUR)
X       CALL PSPEAK(FISSUR,2-PROP(FISSUR))
X       IF(CHASE.EQ.0.OR.PROP(FISSUR).NE.0)GOTO 2100
X
XC  DEMISE OF THE WUMPUS.  CHAMP MUST HAVE JUST CROSSED BRIDGE.
X
X       IF((LOC.EQ.17.AND.OLDLOC.NE.27)
X     1  .OR.(LOC.EQ.27.AND.OLDLOC.NE.17))GOTO 2100
X       CALL RSPEAK(244)
X       CHASE=0
X       CALL DROP(RING,209)
X       CALL MOVE(WUMPUS,209)
X       PROP(WUMPUS)=6
X       CALL BITON(WUMPUS,DEADBT)
X       IF(PLACE(AXE).NE.PLAC(WUMPUS))GOTO 2100
X       FIXED(AXE)=0
X       PROP(AXE)=0
X       GOTO 2100
X
XC  ATTACK.  ASSUME TARGET IF UNAMBIGUOUS.  "THROW" ALSO LINKS HERE.  ATTACKABLE
XC  OBJECTS FALL INTO TWO CATEGORIES: ENEMIES (SNAKE, DWARF, ETC.)  AND OTHERS
XC  (BIRD, CLAM).  AMBIGUOUS IF TWO ENEMIES, OR IF NO ENEMIES BUT TWO OTHERS.
X
XC  KILL OBJ WITH IOBJ.
X
X21200       L1=DWFMAX-1
X        DO 21210 DWARFN=1,L1
X       IF(DLOC(DWARFN).EQ.LOC.AND.DFLAG.GE.2)GOTO 21220
X21210   CONTINUE
X       DWARFN=0
X21220   IF(OBJ.NE.0)GOTO 21240
X       IF(DWARFN.NE.0)OBJ=DWARF
X       IF(HERE(SNAKE))OBJ=OBJ*MAXOBJ+SNAKE
X       IF(AT(DRAGON).AND.PROP(DRAGON).EQ.0)OBJ=OBJ*MAXOBJ+DRAGON
X       IF(AT(TROLL))OBJ=OBJ*MAXOBJ+TROLL
X       IF(HERE(GNOME))OBJ=OBJ*MAXOBJ+GNOME
X       IF(HERE(BEAR).AND.PROP(BEAR).EQ.0)OBJ=OBJ*MAXOBJ+BEAR
X       IF(HERE(WUMPUS).AND.PROP(WUMPUS).EQ.0)OBJ=OBJ*MAXOBJ+WUMPUS
X       IF(OBJ.GT.MAXOBJ)GOTO 10000
X       IF(OBJ.NE.0)GOTO 21240
XC  CAN'T ATTACK BIRD BY THROWING AXE.
X       IF(HERE(BIRD).AND.VERB.NE.THROW)OBJ=BIRD
XC  CLAM AND OYSTER BOTH TREATED AS CLAM FOR INTRANSITIVE CASE; NO HARM DONE.
X       IF(HERE(CLAM).OR.HERE(OYSTER))OBJ=MAXOBJ*OBJ+CLAM
X       IF(OBJ.GT.MAXOBJ)GOTO 10000
X21240   IF(OBJ.NE.BIRD)GOTO 21250
X       SPK=137
X       IF(CLOSED)GOTO 2011
X       CALL DSTROY(BIRD)
X       PROP(BIRD)=0
X       IF(PLACE(SNAKE).EQ.PLAC(SNAKE))TALLY2=TALLY2+1
X       SPK=45
X21250   IF(OBJ.EQ.DWARF)GOTO 21270
X       IF(OBJ.EQ.0)SPK=44
X       IF(OBJ.EQ.CLAM.OR.OBJ.EQ.OYSTER)SPK=150
X       IF(AT(DOG).AND.PROP(DOG).EQ.1)SPK=291
X       IF(OBJ.EQ.SNAKE)SPK=46
X       IF(OBJ.EQ.DRAGON.OR.(OBJ.EQ.WUMPUS.AND.PROP(WUMPUS).EQ.6))SPK=167
X       IF(OBJ.EQ.TROLL)SPK=157
X       IF(OBJ.EQ.BEAR)SPK=165+(PROP(BEAR)+1)/2
X       IF(OBJ.EQ.GNOME)SPK=320
X       IF(IOBJ.NE.AXE.OR.VERB.EQ.THROW.OR.
X     1  (OBJ.NE.DOG.AND.OBJ.NE.WUMPUS.AND.OBJ.NE.DRAGON
X     2   .AND.OBJ.NE.TROLL))GOTO 21253
X       IOBJ=OBJ
X       OBJ=IOBJS(IOBX)
X       SPK=110
X       GOTO 21700
X
X21253   IF(IOBJ.NE.0.AND.IOBJ.NE.AXE)GOTO 2070
X       IF(.NOT.(OBJ.NE.DRAGON.OR.PROP(DRAGON).NE.0))GOTO 21294
X      IF(OBJ.NE.TROLL.AND.SPK.EQ.158)SPK=110
X	GOTO 2011
X
XC  FUN STUFF FOR DRAGON.  IF HE INSISTS ON ATTACKING IT, WIN!  SET PROP TO DEAD,
XC  MOVE DRAGON TO CENTRAL LOC (STILL FIXED), MOVE RUG THERE (NOT FIXED), AND
XC  MOVE HIM THERE, TOO.  THEN DO A NULL MOTION TO GET NEW DESCRIPTION.
XC  THERE IS SOME AMOUNT OF PAIN HERE, TO FORCE GETWDS TO DO THE RIGHT THING.
X
X21294       CALL RSPEAK(49)
X       CALL GETLIN
X       WDX=0
X       CALL CLRLIN
X       IF(TXT(1,1).EQ.'Y     '.OR.TXT(1,1).EQ.'YES   ')GOTO 21255
X       WORDS(1)=-2
X       RDFLAG=.TRUE.
X       GOTO 2600
X
X21255   CALL PSPEAK(DRAGON,1)
X       CALL BITON(DRAGON,DEADBT)
X       PROP(DRAGON)=2
X       PROP(RUG)=0
X       K=(PLAC(DRAGON)+FIXD(DRAGON))/2
X       CALL MOVE(DRAGON+MAXOBJ,-1)
X       CALL MOVE(RUG+MAXOBJ,0)
X       CALL MOVE(DRAGON,K)
X       CALL MOVE(RUG,K)
X       DO 21260 OBJ=1,MAXOBJ
X       IF(PLACE(OBJ).EQ.PLAC(DRAGON).OR.PLACE(OBJ).EQ.FIXD(DRAGON))
X     1  CALL MOVE(OBJ,K)
X21260   CONTINUE
X       WORDS(1)=0
X       LOC=K
X       NEWLOC=K
X       GOTO 2
X
XC  HE IS ATTACKING A DWARF.  IF USING SOMETHING OTHER THAN AXE OR SWORD,
XC  GOODBYE CHARLIE.  IF USING NOTHING, DON'T LET HIM.  IF USING AXE OR
XC  SWORD, THE FOLLOWING ODDS PREVAIL (IF I CALCULATED THIS MESS RIGHT!)
XC  (THE END OF LINE FIGURE IS THE CULULATIVE PROBABILITY OF THE EVENT):
XC  .25 - HERO KILLS DWARF (.25)
XC  .75 - HERO MISSES
XC       .25 - HERO GETS KNIFE IN (HIS) RIBS.  DIES. (.1875)
XC       .75 - HERO CAN'T MAKE A CLEAN THRUST
XC               .36 - STANDOFF (.2)
XC               .64 - DWARF SLASHES
XC                       .61 - DWARF MISSES! (.22)
XC                       .39 - DWARF KILLS HERO (.14)
XC  ADVENTURER HAS 1/3 CHANCE OF GETTING NAILED, 1/4 CHANCE OF NAILING
XC  DWARF.  ALL BY WAY OF ENCOURAGING HIM TO THROW THE AXE.
X
X21270   IF(OBJ.EQ.DWARF.AND.CLOSED)GOTO 93000
X       SPK=49
X       IF(IOBJ.EQ.0)GOTO 2011
X       SPK=355
X       IF(IOBJ.NE.AXE.AND.IOBJ.NE.SWORD)GOTO 21275
X       IF(PCT(25))GOTO 21753
X       IF(PCT(25))GOTO 21275
X       CALL RSPEAK(354)
X       IF(PCT(36))GOTO 2100
X       CALL RSPEAK(356)
X       SPK=52
X       IF(PCT(61))GOTO 2011
X       SPK=53
X
XC  HERO IS GONZO.
X21275   CALL RSPEAK(SPK)
X       OLDLC2=LOC
X       GOTO 94100
XC  POUR.  IF NO OBJECT, ASSUME LIQ IN CONTAINER, IF HOLDING ONLY ONE.
XC  SPECIAL TESTS FOR POURING WATER OR OIL ON PLANT OR RUSTY DOOR.
X
X11300   IF(.NOT.HOLDNG(BOTTLE).AND..NOT.HOLDNG(CASK))GOTO 10000
X       K=LIQ(BOTTLE)
X       KK=LIQ(CASK)
X       IF(HOLDNG(BOTTLE).AND.K.NE.0.AND.HOLDNG(CASK)
X     1  .AND.KK.NE.0)GOTO 10000
X       IF(KK.NE.0.AND.HOLDNG(CASK))OBJ=CASK
X       IF(K.NE.0.AND.HOLDNG(BOTTLE))OBJ=BOTTLE
X       IF(OBJ.EQ.0)GOTO 10000
X
XC  POUR OBJ FROM IOBJ.
X21300   SPK=78
X       IF(OBJ.NE.BOTTLE.AND.OBJ.NE.CASK)GOTO 21310
X       IOBJ=OBJ
X       OBJ=LIQ(IOBJ)
X       SPK=316
X       IF(OBJ.EQ.0)GOTO 2011
X       GOTO 21320
X
X21310   IF(OBJ.LT.WATER.OR.OBJ.GT.WINE+1)GOTO 2011
X       SPK=29
X       IF(.NOT.HOLDNG(BOTTLE).AND..NOT.HOLDNG(CASK))GOTO 2011
X       IF(HOLDNG(BOTTLE).AND.LIQ(BOTTLE).EQ.OBJ)IOBJ=BOTTLE
X       IF(HOLDNG(CASK).AND.LIQ(CASK).EQ.OBJ)IOBJ=CASK
X       IF(IOBJ.EQ.0)GOTO 2011
X21320   SPK=335
X       IF(.NOT.AJAR(IOBJ))GOTO 2011
X       IF(IOBJ.EQ.CASK)OBJ=OBJ+1
X       PROP(IOBJ)=1
X       CALL REMOVE(OBJ)
X       PLACE(OBJ)=0
X       SPK=77
X       IF(IOBJ.NE.CASK)GOTO 21330
X       OBJ=OBJ-1
X       SPK=104
X21330   IF(.NOT.(AT(PLANT).OR.AT(DOOR).OR.AT(SWORD)).OR.
X     1  AT(SWORD).AND.PROP(SWORD).EQ.0)GOTO 2011
X
X       IF(AT(DOOR))GOTO 21340
X       IF(AT(SWORD))GOTO 21350
X       SPK=112
X       IF(OBJ.NE.WATER)GOTO 2011
X       CALL PSPEAK(PLANT,PROP(PLANT)+1)
X       PROP(PLANT)=MOD(PROP(PLANT)+2,6)
X       PROP(PLANT2)=PROP(PLANT)/2
X       NEWLOC=LOC
X       GOTO 2
X
X21340   PROP(DOOR)=0
X       IF(OBJ.NE.OIL)GOTO 21341
X       PROP(DOOR)=1
X       CALL BITOFF(DOOR,LOCKBT)
X       CALL BITON(DOOR,OPENBT)
X21341   SPK=113+PROP(DOOR)
X       GOTO 2011
X
XC  IF SWORD IS ALREADY OILY, DON'T LET HIM CLEAN IT.  NO SOAP.
X
X21350   IF(PROP(SWORD).EQ.5)GOTO 21360
X       PROP(SWORD)=4
X       IF(OBJ.NE.OIL)GOTO 21360
X       PROP(SWORD)=5
X       FIXED(SWORD)=-1
X21360   SPK=206+PROP(SWORD)-4
X       GOTO 2011
XC  EAT.  INTRANSITIVE: ASSUME EDIBLE IF PRESENT, ELSE ASK WHAT.  TRANSITIVE:
XC  FOOD/MUSHROOMS/CAKES OK, SOME THINGS LOSE APPETITE, REST ARE RIDICULOUS.
XC  IF HE HAS MORE THAN ONE EDIBLE, OR NONE, 'EAT' IS AMBIGUOUS WITHOUT
XC  AN EXPLICIT OBJECT.
X
X11400   K=0
X       DO 11410 I=1,MAXOBJ
X       IF(.NOT.(HERE(I).AND.EDIBLE(I))) GOTO 11410
X       K=K+1
X       KK=I
X11410   CONTINUE
X       IF(K.NE.1)GOTO 10000
X       OBJ=KK
X       IF(OBJ.NE.FOOD.AND.OBJ.NE.HONEY)GOTO 21400
X11420   IF(OBJ.EQ.HONEY)TALLY2=TALLY2+1
X       CALL DSTROY(OBJ)
X       SPK=72
X       GOTO 2011
X
XC  IF HE ATE THE RIGHT THING AND IS IN THE RIGHT PLACE, MOVE HIM TO
XC  THE OTHER PLACE WITH ALL HIS JUNK.  OTHERWISE, NARKY MESSAGE.
X21400   IF(OBJ.EQ.FOOD.OR.OBJ.EQ.HONEY)GOTO 11420
X       IF(OBJ.EQ.BIRD.OR.OBJ.EQ.SNAKE.OR.OBJ.EQ.CLAM.OR.OBJ.EQ.OYSTER
X     1  .OR.OBJ.EQ.FLOWER)SPK=301
X       IF(OBJ.EQ.DWARF.OR.OBJ.EQ.DRAGON.OR.OBJ.EQ.TROLL
X     1  .OR.OBJ.EQ.DOG.OR.OBJ.EQ.WUMPUS.OR.OBJ.EQ.BEAR
X     2  .OR.OBJ.EQ.GNOME)SPK=250
X       IF(OBJ.NE.MUSHRM.AND.OBJ.NE.CAKES)GOTO 2011
X
X       K=OBJ-MUSHRM
X       LL=229+K
X       K=159-K
X       KK=SKEY
X       IF(OBJ.EQ.MUSHRM)KK=TDOOR
X       IF(OBJ.EQ.MUSHRM.AND.LOC.NE.158)TALLY2=TALLY2+1
X       CALL DSTROY(OBJ)
X       SPK=228
X       IF(.NOT. (HERE(KK).OR.FIXED(KK).EQ.LOC) )GOTO 2011
X       CALL RSPEAK(LL)
XC  IF HE HASN'T TAKEN TINY KEY OFF SHELF, DON'T LET HIM GET IT FOR FREE!
X       DO 21440 OBJ=1,MAXOBJ
X       IF(OBJ.EQ.SKEY.AND.PROP(SKEY).EQ.1)GOTO 21440
X       IF(PLACE(OBJ).EQ.PLAC(KK).AND.FIXED(OBJ).EQ.0)CALL MOVE(OBJ,K)
X21440   CONTINUE
X       IF(LOC.EQ.PLAC(SKEY).AND.PLACE(SKEY).EQ.PLAC(SKEY))
X     1  TALLY2=TALLY2+1
X       LOC=K
X       NEWLOC=K
X       GOTO 2
XC  DRINK.  IF NO OBJECT, ASSUME WATER OR WINE AND LOOK FOR THEM HERE.
XC  IF POTABLE IS IN BOTTLE OR CASK, DRINK THAT.  IF NOT, SEE IF THERE
XC  IS SOMETHING DRINKABLE NEARBY (STREAM, LAKE, WINE FOUNTAIN, ETC.),
XC  AND DRINK THAT.  IF HE HAS STUFF IN BOTH CONTAINERS, ASK WHICH.
X
XC  DRINK OBJ FROM IOBJ
X11500   LL=LIQLOC(LOC)
X       IF(.NOT.ATHAND(BOTTLE).AND..NOT.ATHAND(CASK)
X     1  .AND.LL.NE.WINE.AND.LL.NE.WATER)GOTO 10000
X       K=LIQ(BOTTLE)
X       KK=LIQ(CASK)
X       IF(.NOT.ATHAND(BOTTLE).OR.K.EQ.0)GOTO 11520
X       IF(ATHAND(CASK).AND.KK.NE.0.AND.KK.NE.K)GOTO 10000
X       OBJ=K
X       IOBJ=BOTTLE
X       GOTO 21560
X
X11520   IF(.NOT.ATHAND(CASK).OR.KK.EQ.0)GOTO 11540
X       OBJ=KK
X       IOBJ=CASK
X       GOTO 21560
X
X11540   IF(LL.EQ.0)GOTO 10000
X       OBJ=LL
X       IOBJ=-1
X       GOTO 21560
X
X21500   IF(OBJ.EQ.0.AND.(IOBJ.EQ.BOTTLE.OR.IOBJ.EQ.CASK))OBJ=LIQ(IOBJ)
X       SPK=110
X       IF(OBJ.EQ.OIL)SPK=301
X       IF(OBJ.NE.WATER.AND.OBJ.NE.WINE)GOTO 2011
X       IF(IOBJ.NE.0)GOTO 21560
X       IF(OBJ.EQ.LIQLOC(LOC))IOBJ=-1
X       IF(ATHAND(CASK).AND.OBJ.EQ.LIQ(CASK))IOBJ=CASK
X       IF(ATHAND(BOTTLE).AND.OBJ.EQ.LIQ(BOTTLE))IOBJ=BOTTLE
X21560   SPK=73
X       IF(IOBJ.EQ.-1)GOTO 21570
X       IF(IOBJ.EQ.CASK)OBJ=OBJ+1
X       CALL REMOVE(OBJ)
X       PLACE(OBJ)=0
X       PROP(IOBJ)=1
X       SPK=74
X       IF(IOBJ.EQ.CASK)SPK=299
X21570   IF(OBJ.EQ.WATER.OR.OBJ.EQ.WATER+1)GOTO 2011
X
XC  UH-OH.  HE'S A WINO.  LET HIM REAP THE REWARDS OF INCONTINENCE.
XC  HE'LL WANDER AROUND FOR AWHILE, THEN WAKE UP SOMEWHERE OR OTHER,
XC  HAVING DROPPED MOST OF HIS STUFF.
X
X       CALL RSPEAK(300)
X       IF(PROP(LAMP).EQ.1)LIMIT=LIMIT-RANZ(LIMIT)/2
X       IF(LIMIT.LT.10)LIMIT=25
X       K=0
X       IF(PCT(15))K=49
X       IF(K.EQ.0.AND.PCT(15))K=53
X       IF(K.EQ.0.AND.PCT(25))K=132
X       IF(K.EQ.0)K=175
X       IF(OUTSID(LOC))K=5
X       IF(K.EQ.LOC)GOTO 2100
X       IF(HOLDNG(AXE))CALL MOVE(AXE,K)
X       IF(HOLDNG(LAMP))CALL MOVE(LAMP,K)
X       DO 21580 J=1,MAXOBJ
X       IF(WEARNG(J))CALL BITOFF(J,WEARBT)
X21580   IF(HOLDNG(J))CALL DROP(J,LOC)
X       LOC=K
X       NEWLOC=K
X       GOTO 2
X
X
X
X
X
XC  RUB.  YIELDS VARIOUS SNIDE REMARKS.
X
X21600   IF(OBJ.NE.LAMP)SPK=76
X       GOTO 2011
XC  THROW OBJ AT IOBJ.
XC  SAME AS DISCARD UNLESS AXE.  THEN SAME AS ATTACK EXCEPT IGNORE BIRD,
XC  AND IF DWARF IS PRESENT THEN ONE MIGHT BE KILLED.
XC  AXE ALSO SPECIAL FOR DRAGON, BEAR, DOG, WUMPUS AND TROLL.
XC  TREASURES SPECIAL FOR TROLL.
XC  IF THROWING FOOD AT SOMEONE WHO MIGHT BE HUNGRY, GO FEED HIM.
X
X21700   IF(PREP.EQ.PREPDN)GOTO 24200
X       IF(HOLDNG(ROD2).AND.OBJ.EQ.ROD.AND..NOT.HOLDNG(ROD))OBJ=ROD2
X       IF(.NOT.HOLDNG(OBJ))GOTO 2011
X       IF(OBJ.EQ.BOAT.OR.OBJ.EQ.BEAR)GOTO 2070
X       DWARFN=0
X       IF(IOBJ.NE.0)GOTO 21750
X
XC  NO INDIRECT OBJ WAS SPECIFIED.  IF A DWARF IS PRESENT, ASSUME IT
XC  IS THE IOBJ.  IF NOT, LOOK FOR ANY OTHER LIVING THING.  IF NO LIVING
XC  THINGS PRESENT, TREAT 'THROW' AS 'DROP'.
X
X      L1=DWFMAX-1
X       DO 21710 DWARFN=1,L1
X       IF(DLOC(DWARFN).EQ.LOC.AND.DFLAG.GE.2)GOTO 21718
X21710   CONTINUE
X       DWARFN=0
X
XC  NO DWARVES PRESENT; FIGURE OUT PLAUSIBLE OBJECT.
X
X       K=0
X       DO 21715 I=1,MAXOBJ
X       IF(.NOT. (AT(I).AND.LIVING(I)) )GOTO 21715
X       IOBJ=I
X       K=K+1
X21715   CONTINUE
X       IF(K.EQ.0)GOTO 20200
X
XC  IT IS A BEASTIE OF SOME SORT.  IS THERE MORE THAN ONE?
XC  DON'T KILL THE BIRD BY DEFAULT.
X
X21717   IF(K.EQ.1)GOTO 21718
X       CALL RSPEAK(43)
X       GOTO 2600
X
X21718   IF(IOBJ.EQ.BIRD)GOTO 20200
X       IF(TREASR(OBJ).AND.AT(TROLL))IOBJ=TROLL
X
X21750   IF(TREASR(OBJ).AND.IOBJ.EQ.TROLL)GOTO 21790
X       IF(OBJ.EQ.SWORD.OR.OBJ.EQ.BOTTLE)GOTO 22800
X       IF(DWARFN.NE.0)IOBJ=DWARF
X       IF(OBJ.EQ.FLOWER.AND.IOBJ.EQ.HIVE)IOBJ=BEES
X       IF(EDIBLE(OBJ).AND.LIVING(IOBJ))GOTO 22100
X       IF(OBJ.NE.AXE)GOTO 20200
X       SPK=152
X       IF(IOBJ.EQ.DRAGON.AND.PROP(DRAGON).EQ.0)GOTO 21755
X       SPK=158
X       IF(IOBJ.EQ.TROLL)GOTO 21755
X       IF(IOBJ.NE.DWARF)GOTO 21760
X       SPK=48
X       IF(RANZ(4).EQ.0)GOTO 21755
X       IF(DWARFN.NE.0)GOTO 21753
X      L1=DWFMAX-1
X       DO 21752 DWARFN=1,L1
X       IF(DLOC(DWARFN).EQ.LOC.AND.DFLAG.GE.2)GOTO 21753
X21752   CONTINUE
XC  'ATTACK' WITH AXE OR SWORD LINKS IN HERE.
X21753   DSEEN(DWARFN)=.FALSE.
X       DLOC(DWARFN)=0
X       SPK=47
X       DKILL=DKILL+1
X       IF(DKILL.EQ.1)SPK=149
X21755   CALL RSPEAK(SPK)
X       CALL DROP(AXE,LOC)
X       NEWLOC=LOC
X       GOTO 2
X
XC  THIS'LL TEACH HIM TO THROW THE AXE AT THE BEAR!
X21760   IF(IOBJ.NE.BEAR.OR.PROP(BEAR).NE.0)GOTO 21765
X       SPK=164
X       CALL DROP(AXE,LOC)
X       FIXED(AXE)=-1
X       PROP(AXE)=1
X       CALL JUGGLE(BEAR)
X       GOTO 2011
X
XC  OR THE WUMPUS!
X21765   IF(IOBJ.NE.WUMPUS.OR.PROP(WUMPUS).EQ.6)GOTO 21770
X       IF(PROP(WUMPUS).EQ.6)GOTO 20200
X       SPK=245
X       PROP(AXE)=2
X       IF(PROP(WUMPUS).EQ.0)GOTO 21780
X       SPK=243
X       CALL DSTROY(AXE)
X       GOTO 2011
X
XC  OR THE NICE DOGGIE!
X21770   IF(IOBJ.NE.DOG.OR.PROP(DOG).EQ.1)GOTO 21790
X       SPK=248
X       PROP(AXE)=3
X21780   CALL DROP(AXE,LOC)
X       FIXED(AXE)=-1
X       CALL JUGGLE(IOBJ)
X       GOTO 2011
X
XC  SNARF A TREASURE FOR THE TROLL.
X21790   IF(IOBJ.NE.TROLL)GOTO 21795
X       PREP=0
X       IF(OBJ.EQ.CASK.AND.LIQ(CASK).NE.WINE)GOTO 20200
X       SPK=159
X       CALL DROP(OBJ,0)
X       IF(OBJ.EQ.CASK)PLACE(WINE+1)=0
X       CALL MOVE(TROLL,0)
X       CALL MOVE(TROLL+MAXOBJ,0)
X       CALL DROP(TROLL2,PLAC(TROLL))
X       CALL DROP(TROLL2+MAXOBJ,FIXD(TROLL))
X       CALL JUGGLE(CHASM)
X       GOTO 2011
X
XC  THROWING AXE AT NONE OF THE ABOVE.  ASSUME 'ATTACK'.
X21795      OBJ=IOBJ
X       IOBJ=OBJS(OBJX)
X       GOTO 21200
XC  QUIT.  INTRANSITIVE ONLY.  VERIFY INTENT AND EXIT IF THAT'S WHAT HE WANTS.
X
X11800   GAVEUP=YES(22,54,54)
X11850   IF(GAVEUP)GOTO 95000
X       GOTO 2100
X
XC  FIND.  MIGHT BE CARRYING IT, OR IT MIGHT BE HERE.  ELSE GIVE CAVEAT.
X
X21900   IF(AT(OBJ).OR.(LIQ(BOTTLE).EQ.OBJ.AND.AT(BOTTLE))
X     1  .OR.K.EQ.LIQLOC(LOC))SPK=94
X      L1=DWFMAX-1
X       DO 21920 I=1,L1
X21920   IF(DLOC(I).EQ.LOC.AND.DFLAG.GE.2.AND.OBJ.EQ.DWARF)SPK=94
X       IF(CLOSED)SPK=138
X       IF(ATHAND(OBJ))SPK=24
X       GOTO 2011
X
X
X
XC  INVENTORY.  IF OBJECT, TREAT SAME AS FIND.  ELSE REPORT ON CURRENT BURDEN.
XC  THERE ARE SOME FUNNY CASES, LIKE THE WEARABLE THINGS.  ALSO, BOAT
XC  AND BEAR, WHICH AREN'T REALLY CARRIED.  LIST OUTER-LEVEL CONTAINERS
XC  AND CONTENTS, IF CONTAINER IS OPEN OR TRANSPARENT.
X
X12000   SPK=98
X       DO 12050 I=1,MAXOBJ
X       IF(I.EQ.BEAR.OR.I.EQ.BOAT.OR..NOT.HOLDNG(I))GOTO 12050
X       IF(WEARNG(I))GOTO 12050
X       IF(SPK.EQ.98)CALL RSPEAK(99)
X       BLKLIN=.FALSE.
X       CALL PSPEAK(I,-1)
X       SPK=0
X       IF(I.NE.BOAT)CALL LOOKIN(I)
X12050   CONTINUE
X
XC  TELL HIM WHAT HE IS WEARING.
X
X       K=0
X       DO 12060 I=1,MAXOBJ
X       IF(.NOT.WEARNG(I))GOTO 12060
X       IF(K.EQ.0)WRITE(*,12052)
X12052   FORMAT(' You are wearing:')
X       CALL TNOUA
X       CALL PSPEAK(I,-1)
X       K=-1
X12060   CONTINUE
X
X       IF(.NOT.HOLDNG(BOAT))GOTO 12090
X       CALL RSPEAK(221)
X       CALL LOOKIN(BOAT)
X12090   IF(HOLDNG(BEAR))SPK=141
X       GOTO 2011
XC  FEED.  IF BIRD, NO SEED.  SNAKE, DRAGON, TROLL: QUIP.  IF DWARF, MAKE HIM
XC  MAD.  BEAR, SPECIAL.
X
XC  CASE 1: FEED CRITTER.   *OR*
XC  CASE 2: FEED CRITTER EDIBLE.
XC        [** THIS CASE TRANSFORMED BY PARSER INTO CASE 3 **]
XC  CASE 3: FEED EDIBLE TO CRITTER.
X
X22100   IF(IOBJ.NE.0.AND.LIVING(IOBJ))GOTO 22120
X       SPK=100
X       IF(OBJ.EQ.BIRD)GOTO 2011
X       IF(.NOT.LIVING(OBJ))GOTO 2070
X
XC  SEE IF THERE IS ANYTHING EDIBLE AROUND HERE.
X       KK=0
X       K=0
X       DO 22110 I=1,MAXOBJ
X       IF(.NOT.HERE(I).OR..NOT.EDIBLE(I))GOTO 22110
X       K=K+1
X       KK=I
X22110   CONTINUE
X       IOBJ=OBJ
X       OBJ=KK
X       IF(K.EQ.1.OR.DEAD(IOBJ))GOTO 22120
X       CALL A5TOA1(OTXT(OBJX,1),OTXT(OBJX,2),'?     ',ZAPP,K)
X       WRITE(*,22112)(ZAPP(I),I=1,K)
X22112   FORMAT (/' What do you want to feed the ',20A1)
X       OBJS(1)=0
X       OBJX=0
X       GOTO 2600
X
XC  FEED OBJ TO IOBJ.
X22120   IF(IOBJ.NE.SNAKE.AND.IOBJ.NE.DRAGON.AND.IOBJ.NE.TROLL)GOTO 22130
X       SPK=102
X       IF(IOBJ.EQ.DRAGON.AND.PROP(DRAGON).NE.0)SPK=NOWAY(0)
X       IF(IOBJ.EQ.TROLL)SPK=182
X       IF(IOBJ.NE.SNAKE.OR.CLOSED.OR.OBJ.NE.BIRD)GOTO 2011
X       SPK=101
X       CALL DSTROY(BIRD)
X       PROP(BIRD)=0
X       TALLY2=TALLY2+1
X       GOTO 2011
X
XC  FEED DWARF?
X22130   IF(IOBJ.NE.DWARF)GOTO 22140
X       SPK=103
X       DFLAG=DFLAG+1
X       GOTO 2011
X
XC  FEED BEAR?
X22140   SPK=102
X       IF(IOBJ.NE.BEAR)GOTO 22150
X       IF(PROP(BEAR).EQ.3)SPK=NOWAY(0)
X       IF(PROP(BEAR).EQ.1.OR.PROP(BEAR).EQ.2)SPK=264
X       IF(OBJ.EQ.FOOD)SPK=278
X       IF(OBJ.NE.HONEY)GOTO 2011
X       PROP(BEAR)=1
X       FIXED(AXE)=0
X       PROP(AXE)=0
X       SPK=168
X       CALL DSTROY(HONEY)
X       GOTO 2011
X
XC  FEED DOG?
X22150   IF(IOBJ.NE.DOG)GOTO 22160
X       IF(PROP(DOG).EQ.1)SPK=291
X       IF(OBJ.NE.FOOD.OR.PROP(DOG).EQ.1)GOTO 2011
X       SPK=249
X       CALL DSTROY(FOOD)
X       GOTO 2011
X
XC  FEED WUMPUS?
X22160   IF(IOBJ.NE.WUMPUS)GOTO 22170
X       IF(PROP(WUMPUS).EQ.6)SPK=326
X       IF(PROP(WUMPUS).EQ.0)SPK=327
X       IF(OBJ.EQ.FOOD)SPK=240
X       GOTO 2011
X
XC  FEED BEES?
X22170   IF(IOBJ.NE.BEES.OR.OBJ.NE.FLOWER)GOTO 2070
X       IF(ENCLSD(FLOWER))CALL REMOVE(FLOWER)
X       CALL DROP(FLOWER,LOC)
X       FIXED(FLOWER)=-1
X       PROP(FLOWER)=1
X       CALL DROP(HONEY,LOC)
X       CALL JUGGLE(HONEY)
X       SPK=267
X       PROP(HIVE)=1
X       GOTO 2011
XC  FILL.  BOTTLE/CASK MUST BE EMPTY, AND SOME LIQUID AVAILABLE.
XC  (VASE IS NASTY & GRAIL IS CRACKED.)
X12200   IF( (.NOT.HERE(BOTTLE).AND..NOT.HERE(CASK)) .OR.
X     1  (HERE(BOTTLE).AND.HERE(CASK)) )GOTO 10000
X       IF(PROP(CASK).EQ.1.AND.HERE(CASK))OBJ=CASK
X       IF(PROP(BOTTLE).EQ.1.AND.HERE(BOTTLE))OBJ=BOTTLE
X       IF(OBJ.EQ.0)GOTO 10000
X
XC  FILL OBJ WITH IOBJ
X22200   SPK=313
X       IF(.NOT.VESSEL(OBJ))GOTO 2011
X       IF(IOBJ.EQ.0)IOBJ=LIQLOC(LOC)
X       IF(OBJ.NE.BOTTLE.AND.OBJ.NE.CASK)GOTO 22220
X       K=0
X       IF(OBJ.EQ.CASK)K=1
X       SPK=0
X       IF(IOBJ.EQ.0)SPK=304+K
X       IF(LIQ(OBJ).NE.0)SPK=302+K
X       IF(SPK.NE.0)GOTO 2011
X       SPK=306+K
X       IF(IOBJ.EQ.OIL)SPK=308+K
X       IF(IOBJ.EQ.WINE)SPK=310+K
X       PROP(OBJ)=MOD(LOCCON(LOC),8)/2*2
X       PLACE(IOBJ+K)=-1
X       CALL INSERT(IOBJ+K,OBJ)
X       GOTO 2011
X
XC  VASE.  (NASTY).
X22220   IF(OBJ.NE.VASE)GOTO 22230
X       SPK=144
X       IF(IOBJ.EQ.0.OR..NOT.HOLDNG(VASE))GOTO 2011
X       CALL RSPEAK(145)
X       PROP(VASE)=2
X       FIXED(VASE)=-1
X       GOTO 20290
X
XC  GRAIL OR OTHER.
X22230   SPK=339
X       IF(OBJ.EQ.GRAIL)SPK=298
X       GOTO 2011
X
XC  BLAST.  NO EFFECT UNLESS YOU'VE GOT DYNAMITE, WHICH IS A NEAT TRICK!
X
X12300   IF(CLOSED)GOTO 12310
X       GO TO 2011
X12310  BONUS=135
X       IF(PLACE(ROD2).EQ.212.AND.LOC.EQ.116)BONUS=133
X       IF(PLACE(ROD2).EQ.116.AND.LOC.NE.116)BONUS=134
X       CALL RSPEAK(BONUS)
X       GOTO 95000
XC  SCORE.
X
X12400   SCORNG=.TRUE.
X       CALL RATING(SCORE,BONUS,GAVEUP,SCORNG,CLOSNG,CLOSED
X     1   ,HNTMAX)
X       SCORNG=.FALSE.
X       WRITE(*,12412)SCORE,MXSCOR,TURNS
X12412   FORMAT(/' If you were to quit now, you would score',I4
X     1  ,' out of',I4,' using',I4,' turns.')
XC       GAVEUP=YES(143,54,54)
XC       GOTO 11850
X      GOTO 2100
X
XC  FEE FIE FOE FOO (AND FUM).  ADVANCE TO NEXT STATE IF GIVEN IN PROPER ORDER.
XC  LOOK UP WD1 IN SECTION 3 OF VOCAB TO DETERMINE WHICH WORD WE'VE GOT.  LAST
XC  WORD ZIPS THE EGGS BACK TO THE GIANT ROOM (UNLESS ALREADY THERE).
X
X12500   K=VOCABX(VTXT(VRBX,1),4)
X       SPK=42
X       IF(FOOBAR.EQ.1-K)GOTO 12520
X       IF(FOOBAR.NE.0)SPK=151
X       GOTO 2011
X
X12520   FOOBAR=K
X       IF(K.NE.4)GOTO 2009
X       FOOBAR=0
X       IF(PLACE(EGGS).EQ.PLAC(EGGS)
X     1  .OR.(TOTING(EGGS).AND.LOC.EQ.PLAC(EGGS)))GOTO 2011
XC  BRING BACK TROLL IF WE STEAL THE EGGS BACK FROM HIM BEFORE CROSSING.
X       IF(PLACE(EGGS).EQ.0.AND.PLACE(TROLL).EQ.0.AND.PROP(TROLL).EQ.0)
X     1  PROP(TROLL)=1
X       K=2
X       IF(HERE(EGGS))K=1
X       IF(LOC.EQ.PLAC(EGGS))K=0
X       CALL MOVE(EGGS,PLAC(EGGS))
X       CALL PSPEAK(EGGS,K)
X       GOTO 2100
X
XC  BRIEF/UNBRIEF.  INTRANSITIVE ONLY.
XC  SUPPRESS LONG DESCRIPTIONS AFTER FIRST TIME.
X
X12600   DETAIL=3
X       TERSE=.FALSE.
X       IF(ABBNUM.EQ.10000)GOTO 12610
X       SPK=156
X       ABBNUM=10000
X       GOTO 2011
X
X12610   ABBNUM=5
X       SPK=374
X       GOTO 2011
X
X22600   IF(OBJ.NE.0.AND.LIVING(OBJ).AND.IOBJ.NE.0)GOTO 2011
X       GOTO 2060
X
XC  READ.  MAGAZINES IN DWARVISH, MESSAGE WE'VE SEEN, AND . . . OYSTER?
X
X22700   IF(BLIND(0))GOTO 2011
X       IF(OBJ.NE.0.AND.IOBJ.NE.0)GOTO 2060
X       SPK=CONFUZ(0)
X       IF(OBJ.EQ.0)OBJ=IOBJ
X       IF(OBJ.EQ.BOOK.OR.OBJ.EQ.BOOK2)SPK=142
X       IF(OBJ.EQ.BILLBD)SPK=361
X       IF(OBJ.EQ.CARVNG)SPK=372
X       IF(OBJ.EQ.MAGZIN)SPK=190
X       IF(OBJ.EQ.MESSAG)SPK=191
X       IF(OBJ.EQ.OYSTER.AND.HINTED(2).AND.HOLDNG(OYSTER))SPK=194
X       IF(OBJ.EQ.POSTER)SPK=370
X       IF(OBJ.EQ.TABLET)SPK=196
X       IF(OBJ.NE.OYSTER.OR.HINTED(2).OR..NOT.HOLDNG(OYSTER)
X     1  .OR..NOT.CLOSED)GOTO 2011
X       HINTED(2)=YES(192,193,54)
X       GOTO 2100
XC  BREAK.  WORKS FOR MIRROR IN REPOSITORY AND, OF COURSE, THE
XC  VASE AND BOTTLE.  ALSO, THE SWORD IS MORE BRITTLE THAN IT APPEARS.
X
X22800   IF(OBJ.EQ.MIRROR)SPK=148
X       IF(OBJ.EQ.VASE.AND.PROP(VASE).EQ.0)GOTO 22820
X       IF(OBJ.EQ.BOTTLE.AND.PROP(BOTTLE).NE.3)GOTO 22840
X       IF(OBJ.EQ.SWORD)GOTO 22860
X       IF(OBJ.NE.MIRROR.OR..NOT.CLOSED)GOTO 2011
X       CALL RSPEAK(197)
X       GOTO 93000
X
X22820   SPK=198
X       PROP(VASE)=2
X22830   IF(ENCLSD(OBJ))CALL REMOVE(OBJ)
X       IF(HOLDNG(OBJ))CALL DROP(OBJ,LOC)
X       FIXED(OBJ)=-1
X       GOTO 2011
X
X22840   SPK=231
X       K=LIQ(BOTTLE)
X       PROP(BOTTLE)=3
X       IF(K.EQ.0)GOTO 22830
X       CALL REMOVE(K)
X       PLACE(K)=0
X       GOTO 22830
X
XC  HE'D BETTER NOT SLING THE SWORD AROUND!
X22860   SPK=29
X       IF(.NOT.HOLDNG(SWORD))GOTO 2011
X       SPK=279
X       PROP(SWORD)=4
X       GOTO 22830
X
XC  ERWACHE.  ONLY USE IS TO DISTURB THE DWARVES OR THE WUMPUS.
XC  OTHER WUMPUS-WAKERS LINK HERE.
X
X22900   IF(.NOT.AT(WUMPUS))GOTO 22940
X       CHASE=1
X       PROP(WUMPUS)=1
X       SPK=276
X       GOTO 2011
X
X22940   IF(AT(DOG).AND.PROP(DOG).EQ.1)SPK=291
X       IF(OBJ.NE.DWARF.OR..NOT.CLOSED)GOTO 2011
X       CALL RSPEAK(199)
X       GOTO 93000
X
X13000   SPK=201
X	
X	OPEN (UNIT=16,FILE='ASAVE',STATUS='UNKNOWN',FORM=
X     1   'UNFORMATTED',ACCESS='SEQUENTIAL')
X        WRITE(16)ISWIZ,OPENBT,LOCKBT,BURNBT,WEARBT
X        WRITE(16)BLKLIN,LOCCON,OBJCON,NUMDIE,MAXDIE,TURNS,KILLED
X        WRITE(16)DWARF,KNIFE,KNFLOC,DFLAG,DSEEN,DLOC,ODLOC,DWFMAX
X        WRITE(16)HOLDER,HLINK
X        WRITE(16)BOTTLE,CASK,WATER,OIL,WINE,LIQTYP
X        WRITE(16)LOC,OLDLOC,OLDLC2,NEWLOC,MAXLOC
X        WRITE(16) LTEXT,STEXT,KEY,ABB,LOCSIZ
X
X       WRITE(16)PLAC,FIXD,WEIGHT,PROP,POINTS
X       WRITE(16) ATLOC,LINK,PLACE,
X     1          FIXED,MAXOBJ
X       WRITE(16) VERBS,VRBX,OBJS,
X     1  OBJX,IOBJS,IOBX,PREP,WORDS
X
X       WRITE(16)ABBNUM,ADJ,ATBS,ATTACK,BCROSS,BONUS,CHASE,
X     1   CLOCK1,CLOCK2,CLOCK3,CLOSED,CLOSNG,CLSMAX,COMBO,DEADBT,
X     2   DETAIL,DKILL,DTOTAL,DWARFN,FLG239,
X     3   FOO,FOOBAR,FOOD,GAVEUP,HEALTH,HINT,HIT,HNTMAX,I,IKK,ILOC,
X     4   IOBJ,J,JJ,JK1,JKK,K,K1,KK,L,L1,LIMIT,
X     5   LINSIZ,LL,LMWARN,LOCK,LOGOUT,MESSAG,OBJ,PANIC,
X     6   PORTAL,PTBS,RDFLAG,RETN,RTXSIZ,SCORE,SCORNG,SECT,
X     7   SKEY,SLOC,SPK,START,STICK,TABNDX,TALLY,TALLY2,TERSE,
X     8   TRVS,TRVSIZ,VEND,VERB,VRBSIZ,WASTE,WKDAY,WKEND,WZDARK,
X     9   YEA,ACTSPK,CTEXT,CVAL,HNAME
X        CLOSE(16)
X
X
X
X	GOTO 2100
XC       THE ZSAVE FUNCTION MUST BE CHANGED IF ANY NEW VARIABLES
XC       WHICH CHANGE DURING EXECUTION ARE ADDED.
X
X
XC   RESUME   RESUME GAME BROM BACKUP FILE
X
X13100	CONTINUE
XC	****************************
XC	SEE THE COMMENT ON SUSPEND ABOVE!!!!!!!!!!!
X
X	OPEN (UNIT=16,FILE='ASAVE',STATUS='OLD',FORM=
X     1   'UNFORMATTED',ACCESS='SEQUENTIAL')
X        REWIND(16)
X        READ(16)ISWIZ,OPENBT,LOCKBT,BURNBT,WEARBT
X        READ(16)BLKLIN,LOCCON,OBJCON,NUMDIE,MAXDIE,TURNS
X        READ(16)DWARF,KNIFE,KNFLOC,DFLAG,DSEEN,DLOC,ODLOC,DWFMAX
X        READ(16)HOLDER,HLINK
X        READ(16)BOTTLE,CASK,WATER,OIL,WINE,LIQTYP
X        READ(16)LOC,OLDLOC,OLDLC2,NEWLOC,MAXLOC
X        READ(16) LTEXT,STEXT,KEY,ABB,LOCSIZ
X
X       READ(16)PLAC,FIXD,WEIGHT,PROP,POINTS
X       READ(16) ATLOC,LINK,PLACE,
X     1          FIXED,MAXOBJ
X       READ(16) VERBS,VRBX,OBJS,
X     1  OBJX,IOBJS,IOBX,PREP,WORDS
X
X       READ(16)ABBNUM,ADJ,ATBS,ATTACK,BCROSS,BONUS,CHASE,
X     1   CLOCK1,CLOCK2,CLOCK3,CLOSED,CLOSNG,CLSMAX,COMBO,DEADBT,
X     2   DETAIL,DKILL,DTOTAL,DWARFN,FLG239,
X     3   FOO,FOOBAR,FOOD,GAVEUP,HEALTH,HINT,HIT,HNTMAX,I,IKK,ILOC,
X     4   IOBJ,J,JJ,JK1,JKK,K,K1,KK,L,L1,LIMIT,
X     5   LINSIZ,LL,LMWARN,LOCK,LOGOUT,MESSAG,OBJ,PANIC,
X     6   PORTAL,PTBS,RDFLAG,RETN,RTXSIZ,SCORE,SCORNG,SECT,
X     7   SKEY,SLOC,SPK,START,STICK,TABNDX,TALLY,TALLY2,TERSE,
X     8   TRVS,TRVSIZ,VEND,VERB,VRBSIZ,WASTE,WKDAY,WKEND,WZDARK,
X     9   YEA,ACTSPK,CTEXT,CVAL,HNAME
X        CLOSE(16)
X
X
X
X	GOTO 2100
X
X
XC  YANK.  A VARIANT OF 'CARRY'.  IN GENERAL, NOT A GOOD IDEA.
XC  AT MOST, IT GETS THE CLOAK OR A COUPLE SNIDE COMMENTS.
X
X23200   IF(TOTING(OBJ))GOTO 20200
X       IF(OBJ.EQ.PLANT.OR.OBJ.EQ.SWORD.OR.OBJ.EQ.CHAIN)GOTO 20100
X       SPK=205
X       IF(OBJ.EQ.BEAR.AND.PROP(CHAIN).EQ.1)GOTO 2011
X       IF(OBJ.EQ.CLOAK.AND.PROP(CLOAK).EQ.2)GOTO 20120
X       GOTO 20100
X
XC  WEAR: ONLY GOOD FOR JEWELS, RUBY SLIPPERS, CLOAK & CROWN.
XC  BUT HE MIGHT TRY THE SWORD.  ANYTHING ELSE IS RIDICULOUS.
XC  ANOTHER VARIANT OF 'CARRY'.
X
X23300   SPK=209
X       IF(OBJ.EQ.SWORD.AND.PROP(SWORD).NE.3)GOTO 2011
X       IF(WORN(OBJ))GOTO 23320
X23310   CALL A5TOA1(OTXT(OBJX,1),OTXT(OBJX,2),'?     ',ZAPP,K)
X       WRITE(*,23312)(ZAPP(I),I=1,K)
X23312   FORMAT(/' Just exactly how does one wear a ',20A1)
X       GOTO 2100
X
X23320   SPK=242
X       IF(OBJ.EQ.CLOAK.AND.PROP(CLOAK).EQ.2)GOTO 2011
X       SPK=210
X       IF(OBJ.EQ.SHOES)SPK=227
X       IF(WEARNG(OBJ))GOTO 2011
X       PROP(OBJ)=1
X       CALL BITON(OBJ,WEARBT)
X       IF(ENCLSD(OBJ))CALL REMOVE(OBJ)
X       IF(HOLDNG(OBJ))GOTO 2009
X       GOTO 20120
XC  HIT.  IF NOT PUNCHING OUT TELEPHONE, ASSUME ATTACK.
X
X23400   IF(AT(WUMPUS).AND.PROP(WUMPUS).EQ.0)GOTO 22900
X       IF(OBJ.NE.PHONE)GOTO 21200
X       IF(CLOSED)GOTO 93100
X       SPK=256
X       IF(PROP(PHONE).EQ.2)GOTO 2011
X       CALL DROP(SLUGS,LOC)
X       SPK=257
X       PROP(PHONE)=2
X       PROP(BOOTH)=2
X       GOTO 2011
X
XC  ANSWER (TELEPHONE).  SMARTASS FOR ANYTHING ELSE.
X13500   IF(LOC.NE.189.OR.PROP(PHONE).NE.0)GOTO 10000
X       OBJ=PHONE
X23500   IF(OBJ.NE.PHONE)GOTO 23520
X       SPK=269
X       IF(PROP(PHONE).NE.0)GOTO 2011
X       IF(CLOSED)GOTO 93200
X       SPK=261
X       PROP(PHONE)=1
X       PROP(BOOTH)=2
X       GOTO 2011
X
X23520   IF(OBJ.EQ.DWARF.OR.OBJ.EQ.WUMPUS.OR.OBJ.EQ.SNAKE.OR.OBJ.EQ.BEAR
X     1  .OR.OBJ.EQ.DRAGON)SPK=259
X       IF(OBJ.EQ.TROLL)SPK=258
X       IF(OBJ.EQ.BIRD)SPK=260
X       GOTO 2011
XC  BLOW.  JOSHUA FIT DE BATTLE OF JERICHO, AND DE WALLS....
X
X23600   IF(OBJ.NE.0.AND.IOBJ.NE.0)GOTO 2060
X       IF(OBJ.EQ.0)OBJ=IOBJ
X       IOBJ=0
X       IF(OBJ.EQ.0)SPK=268
X       IF(OBJ.NE.HORN)GOTO 2011
X       SPK=266
X       IF(OUTSID(LOC))SPK=277
X       IF(.NOT.AT(WUMPUS))GOTO 23610
X       IF(PROP(WUMPUS).NE.0)GOTO 2011
X       CALL RSPEAK(SPK)
X       GOTO 22900
X
X23610   IF(PROP(WALL).EQ.1.OR.(LOC.NE.102.AND.LOC.NE.194))GOTO 2011
X       K=196
X       IF(LOC.EQ.194)K=195
X       CALL RSPEAK(265)
X       PROP(WALL)=1
X       DO 23620 OBJ=1,MAXOBJ
X       IF(PLACE(OBJ).EQ.LOC.OR.FIXED(OBJ).EQ.LOC)CALL MOVE(OBJ,K)
X23620   CONTINUE
X       NEWLOC=K
X       GOTO 2
X
X
XC  CALL.  IF NO PHONE IS HANDY, YELL.
X
X13800   IF(.NOT.HERE(PHONE))GOTO 10000
X       GOTO 23910
X
XC  DIAL.  NO EFFECT UNLESS AT PHONE.
X
X23900   IF(OBJ.NE.PHONE)GOTO 2011
X23910   IF(CLOSED)GOTO 93200
X       SPK=271
X       GOTO 2011
X
X
XC  PLAY.  ONLY FOR HORN OR LYRE.
X24000   IF(OBJ.NE.0.AND.IOBJ.NE.0)GOTO 2060
X       IF(OBJ.EQ.0)OBJ=IOBJ
X       IOBJ=0
X       IF(OBJ.EQ.HORN)GOTO 23600
X       IF(OBJ.NE.LYRE)GOTO 2011
X       SPK=287
X       IF(.NOT.HERE(DOG).OR.DEAD(DOG))GOTO 2011
X       PROP(DOG)=1
X       CALL BITON(DOG,DEADBT)
X       FIXED(AXE)=0
X       PROP(AXE)=0
X       SPK=288
X       GOTO 2011
X
X
XC  PICK/PICK UP.  CAN PICK FLOWERS & MUSHROOMS, BUT MUST 'PICK UP' EVERYTHING EL
X
X24100   IF(OBJ.EQ.0)OBJ=IOBJ
X       IOBJ=0
X       IF(OBJ.EQ.FLOWER.OR.OBJ.EQ.MUSHRM)GOTO 20100
X       IF(PREP.NE.0)GOTO 20100
X       GOTO 2060
XC  PUT DOWN: EQUIVALENT TO DROP.
XC  PUT IN: IF LIQUID, MEANS 'FILL'.
XC  PUT ON: WEAR OR DROP.
X
X24200   IF(PREP.NE.0)GOTO 24210
X       CALL A5TOA1(OTXT(OBJX,1),OTXT(OBJX,2),'?     ',ZAPP,K)
X       WRITE(*,24204)(ZAPP(I),I=1,K)
X24204   FORMAT(/' Where do you want to put the ',20A1)
X       GOTO 2600
X
X24210   IF(PREP.EQ.PREPIN)GOTO 24500
X
XC  PUT ON: "WEAR" OR "PUT OBJ ON IOBJ".
X24240   IF(PREP.NE.PREPON)GOTO 24250
X       IF(OBJ.NE.0)GOTO 24242
X       OBJ=IOBJ
X       OTXT(OBJX,1)=IOTXT(IOBX,1)
X       OTXT(OBJX,2)=IOTXT(IOBX,2)
X       IOBJ=0
X24242   IF(WORN(OBJ))GOTO 23300
X       IF(IOBJ.EQ.0)GOTO 23310
X       GOTO 20200
X
XC  PUT DOWN: "DROP"
X24250   IF(OBJ.EQ.0.OR.IOBJ.EQ.0)GOTO 24252
X       GOTO 2070
X
X24252   IF(OBJ.EQ.0)OBJ=IOBJ
X       IOBJ=0
X       GOTO 20200
X
X
XC  TURN ON/OFF.
X
X24300   IF(PREP.EQ.0)GOTO 2060
X       IF(OBJ.EQ.0.AND.IOBJ.EQ.LAMP)OBJ=LAMP
X       IF(OBJ.NE.LAMP)GOTO 2070
X       IF(PREP.EQ.PREPON)GOTO 20700
X       GOTO 20800
X
X
XC  GET (NO PREP): "TAKE"
XC  GET IN: "ENTER"
XC  GET OUT: "LEAVE"
XC****** NEEDS WORK
X
X24400   IF(PREP.EQ.0.OR.PREP.EQ.PREPFR)GOTO 20100
X       IF(OBJ.NE.0)GOTO 2060
X       OBJ=IOBJ
X       IOBJ=0
X       PREP=0
X       GOTO 20100
XC  INSERT/PUT IN.
X
X24500   IF(IOBJ.EQ.0)GOTO 10010
X       SPK=NOWAY(0)
X       IF(OBJ.EQ.SWORD.AND.IOBJ.EQ.ANVIL.AND.PROP(SWORD).EQ.0)SPK=350
X       IF(.NOT.VESSEL(IOBJ))GOTO 2011
X       ASSIGN 24510 TO RETN
X       GOTO 20190
X
X24510   IF(IOBJ.NE.BOTTLE.AND.IOBJ.NE.CASK.AND.IOBJ.NE.VASE
X     1  .AND.IOBJ.NE.GRAIL.AND.(OBJ.LT.WATER.OR.OBJ.GT.WINE+1))
X     2  GOTO 24515
X       OBJ=IOBJ
X       IOBJ=OBJS(OBJX)
X       GOTO 22200
X
X24515   SPK=252
X       IF(OBJ.EQ.IOBJ)GOTO 2011
X       SPK=358
X       IF(.NOT.AJAR(IOBJ))GOTO 2011
X       IF(IOBJ.NE.BOAT.AND.IOBJ.NE.CHEST)GOTO 24520
X       IF(IOBJ.EQ.CHEST.AND.OBJ.EQ.BOAT)GOTO 2070
X       GOTO 24590
X
XC  BIRD GOES INTO CAGE AND ONLY CAGE.  CAGE HOLDS NOTHING ELSE.
XC  BAR VASE & PILLOW FROM SAFE, TO FORCE PUTTING DOWN ON FLOOR.
X24520   SPK=351
X       IF(OBJ.EQ.BIRD.AND.IOBJ.NE.CAGE)GOTO 2011
X       SPK=329
X       IF(IOBJ.EQ.CAGE.AND.OBJ.NE.BIRD)GOTO 2011
X       IF(OBJ.EQ.BIRD)GOTO 20120
X       IF(IOBJ.EQ.SAFE.AND.(OBJ.EQ.VASE.OR.OBJ.EQ.PILLOW))GOTO 2011
X       IF(IOBJ.EQ.SHIELD.AND.OBJ.NE.RADIUM)GOTO 2011
X       IF(IOBJ.NE.PHONE)GOTO 24530
X       IF(OBJ.NE.COINS.AND.OBJ.NE.SLUGS)GOTO 2070
X       CALL DSTROY(OBJ)
X       SPK=330
X       GOTO 2011
X
X24530   IF(IOBJ.NE.VEND)GOTO 24540
X       IF(OBJ.NE.COINS.AND.OBJ.NE.SLUGS)GOTO 2070
X       CALL DSTROY(OBJ)
X       CALL MOVE(BATTER,LOC)
X       IF(PROP(BATTER).NE.1)GOTO 24535
X       CALL RSPEAK(317)
X       PROP(VEND)=1
X24535   PROP(BATTER)=0
X       CALL PSPEAK(BATTER,0)
X       GOTO 2100
X
XC  PUT BATTERIES IN LAMP.
XC  THERE IS A GLITCH HERE, IN THAT IF HE TRIES TO GET A THIRD SET OF
XC  BATTERIES BEFORE THE SECOND SET HAS BEEN INSERTED, THE SECOND SET
XC  DISAPPEARS!  ***FIX THIS SOMETIME***
X24540   IF(IOBJ.NE.LAMP)GOTO 24550
X       IF(OBJ.NE.BATTER.OR.PROP(BATTER).NE.0)GOTO 2070
X       PROP(BATTER)=1
X       IF(ENCLSD(BATTER))CALL REMOVE(BATTER)
X       IF(HOLDNG(BATTER))CALL DROP(BATTER,LOC)
X       LIMIT=400
X       PROP(LAMP)=1
X       LMWARN=.FALSE.
X       SPK=188
X       GOTO 2011
X
X24550   IF(.NOT.SMALL(OBJ))GOTO 2011
X24590   IF(WEARNG(OBJ))CALL BITOFF(OBJ,WEARBT)
X        IF(WORN(OBJ))PROP(OBJ) = 0
X       IF(ENCLSD(OBJ))CALL REMOVE(OBJ)
X       CALL INSERT(OBJ,IOBJ)
X       GOTO 2009
XC  REMOVE/TAKE FROM.
X
X24600   IF(OBJ.NE.RING.OR.PROP(RING).NE.2)GOTO 24610
X       PREP=0
X       IOBJ=0
X       GOTO 20100
X
X24610   SPK=343
X       IF(IOBJ.NE.0)GOTO 24620
X       IF(.NOT.ENCLSD(OBJ))SPK=340
X       IOBJ=-PLACE(OBJ)
X24620   IF(PLACE(OBJ).NE.-IOBJ)SPK=341
X       IF(.NOT.AJAR(IOBJ))SPK=335
X       IF(OBJ.EQ.WATER.OR.OBJ.EQ.OIL.OR.OBJ.EQ.WINE)SPK=342
X       IF(.NOT.TOTING(OBJ).AND.BURDEN(0)+BURDEN(OBJ).GT.15)SPK=92
X       IF(SPK.NE.343)GOTO 2011
X       CALL REMOVE(OBJ)
X       IF(OBJ.EQ.BIRD)GOTO 20200
X       GOTO 2009
X
X
XC  BURN
X
X24700   GOTO 2011
X
X
XC  GRIPE/COMPLAIN/SUGGEST.
X
X14800  CONTINUE
XC       A SUGGESTION MECHANISM USED TO GO HERE. IT IS NOT NEEDED FOR A
XC       SINGLE-USER GAME
X       GOTO 2011
XC  LOCK.  CHAIN, GRATE, CHEST, ELFIN DOOR
XC  HERE ARE THE CURRENT LOCK/UNLOCK MESSAGES & NUMBERS:
XC       31      YOU HAVE NO KEYS.
XC       32      IT HAS NO LOCK.
XC       34      IT'S ALREADY LOCKED.
XC       35      THE GRATE IS NOW LOCKED.
XC       36      THE GRATE IS NOW UNLOCKED.
XC       37      IT WAS ALREADY UNLOCKED.
XC       55      YOU CAN'T UNLOCK THE KEYS.
XC       171     THE CHAIN IS NOW UNLOCKED.
XC       172     THE CHAIN IS NOW LOCKED.
XC       173     THERE IS NOTHING HERE TO WHICH THE CHAIN CAN BE LOCKED.
XC       224     YOUR KEYS ARE ALL TOO LARGE.
XC       234     THE WROUGHT-IRON DOOR IS NOW LOCKED.
XC       235     THE TINY DOOR IS NOW LOCKED.
XC       236     THE WROUGHT-IRON DOOR IS NOW UNLOCKED.
XC       237     THE TINY DOOR IS NOW UNLOCKED.
XC       375     YOU DON'T HAVE THE RIGHT KEY.
XC       333     THE CHEST IS NOW LOCKED.
XC       334     THE CHEST IS NOW UNLOCKED.
XC       367     THE SAFE'S DOOR SWINGS SHUT.
X
X24900   IF(HINGED(OBJ))GOTO 24905
X       CALL A5TOA1(OTXT(OBJX,1),OTXT(OBJX,2),'.     ',ZAPP,K)
X       WRITE(*,24903)(ZAPP(I),I=1,K)
X24903   FORMAT(/' I don''t know how to lock or unlock the ',20A1)
X       GOTO 2100
X
X24905   SPK=375
X       IF(.NOT.LOCKS(OBJ))SPK=32
X       IF(LOCKED(OBJ))SPK=34
X       IF(.NOT.(ATHAND(KEYS).OR.ATHAND(SKEY).OR.OBJ.EQ.SAFE))SPK=31
X       IF(SPK.NE.375)GOTO 2011
X
XC  CHAIN.
X       IF(OBJ.NE.CHAIN)GOTO 24910
X       IF(.NOT.ATHAND(KEYS))GOTO 2011
X       SPK=173
X       IF(LOC.NE.PLAC(CHAIN))GOTO 2011
X       SPK=172
X       PROP(CHAIN)=2
X       IF(ENCLSD(CHAIN))CALL REMOVE(CHAIN)
X       IF(HOLDNG(CHAIN))CALL DROP(CHAIN,LOC)
X       FIXED(CHAIN)=-1
X       GOTO 24990
X
XC  CHEST.
X24910   IF(OBJ.NE.CHEST)GOTO 24920
X       IF(.NOT.ATHAND(KEYS))GOTO 2011
X       SPK=334
X       GOTO 24990
X
XC  ELFIN DOOR.
X24920   IF(OBJ.NE.TDOOR.AND.OBJ.NE.TDOOR2)GOTO 24930
X       SPK=224
X       IF(.NOT.TOTING(SKEY))GOTO 2011
X       PROP(TDOOR)=0
X       PROP(TDOOR2)=0
X       SPK=234+2*PROP(TDOOR)+(TDOOR2-OBJ)
X       K=TDOOR+(TDOOR2-OBJ)
X       CALL BITON(K,LOCKBT)
X       CALL BITOFF(K,OPENBT)
X       GOTO 24990
X
XC  GRATE.
X24930   IF(OBJ.NE.GRATE)GOTO 24940
X       IF(.NOT.ATHAND(KEYS))GOTO 2011
X       PROP(GRATE)=0
X       SPK=35
X       GOTO 24990
X
XC  SAFE.
X24940   PROP(SAFE)=0
X       SPK=367
XC       GOTO 24990
X
X24990   CALL BITON(OBJ,LOCKBT)
X       CALL BITOFF(OBJ,OPENBT)
X       GOTO 2011
XC  UNLOCK.  CHAIN, GRATE, CHEST, ELFIN DOOR.
X
X25000   SPK=55
X       IF(OBJ.EQ.KEYS.OR.OBJ.EQ.SKEY)GOTO 2011
X       IF(.NOT.HINGED(OBJ))GOTO 24900
X       SPK=375
X       IF(.NOT.LOCKED(OBJ))SPK=37
X       IF(.NOT.LOCKS(OBJ))SPK=32
X       IF(OBJ.EQ.SAFE)SPK=342
X       IF(OBJ.EQ.SAFE.AND.(IOBJ.EQ.KEYS.OR.IOBJ.EQ.SKEY))SPK=368
X       IF(.NOT.(ATHAND(KEYS).OR.ATHAND(SKEY).OR.OBJ.EQ.SAFE))SPK=31
X       IF(SPK.NE.375)GOTO 2011
X
XC  CHAIN.
X       IF(OBJ.NE.CHAIN)GOTO 25020
X       IF(.NOT.ATHAND(KEYS))GOTO 2011
X       SPK=171
X       IF(PROP(BEAR).EQ.0)SPK=41
X       IF(SPK.NE.171)GOTO 2011
X       PROP(CHAIN)=0
X       FIXED(CHAIN)=0
X       IF(PROP(BEAR).NE.3)PROP(BEAR)=2
X       FIXED(BEAR)=2-PROP(BEAR)
X       GOTO 25090
X
XC  CHEST.
X25020   IF(OBJ.NE.CHEST)GOTO 25030
X       IF(.NOT.ATHAND(KEYS))GOTO 2011
X       SPK=333
X       GOTO 25090
X
XC  ELFIN DOOR.
XC  STUFF TO LOCK/UNLOCK TINY DOOR W/SPECIAL KEY.
XC  THE DAMN THING IS REALLY AT FOUR PLACES, AND WE WANT THE RIGHT
XC  MESSAGES IF HE ONLY HAS 'BIG' KEYS (OR NO KEYS).  ALSO, HE
XC  CAN UNLOCK IT EITHER WHILE HE IS BIG OR SMALL.
X25030   IF(OBJ.NE.TDOOR.AND.OBJ.NE.TDOOR2)GOTO 25040
X       SPK=224
X       IF(.NOT.ATHAND(SKEY))GOTO 2011
X       IF(CLOSNG)GOTO 25060
X       PROP(TDOOR)=1
X       PROP(TDOOR2)=1
X       SPK=234+2*PROP(TDOOR)+(TDOOR2-OBJ)
X       K=TDOOR+(TDOOR2-OBJ)
X       CALL BITOFF(K,LOCKBT)
X       CALL BITON(K,OPENBT)
X       GOTO 25090
X
XC  GRATE.
X25040   IF(.NOT.ATHAND(KEYS))GOTO 2011
X       IF(CLOSNG)GOTO 25060
X       PROP(GRATE)=1
X       SPK=36
X
X25090   CALL BITOFF(OBJ,LOCKBT)
X       CALL BITON(OBJ,OPENBT)
X       GOTO 2011
X
XC  CLOSING.  NO EXIT THIS WAY.
X25060   SPK=130
X       IF(.NOT.PANIC)CLOCK2=15
X       PANIC=.TRUE.
X       GOTO 2011
X
X
XC  HEALTH.  GIVE HIM A DIAGNOSIS.
X
X25100   IF(HEALTH.LT.100)WRITE(*,25102)HEALTH
X25102   FORMAT(/' You''re health rating is ',I2,
X     1  ' out of a possible 100.')
X       IF(PCT(50))SPK=349
X       IF(HEALTH.GE.95)GOTO 2011
X       SPK=381 + (100-HEALTH)/20
X       GOTO 2011
X
X
XC  LOOK.  CAN'T GIVE MORE DETAIL.  PRETEND IT WASN'T DARK (THOUGH IT MAY "NOW"
XC  BE DARK) SO HE WON'T FALL INTO A PIT WHILE STARING INTO THE GLOOM.
X
X25200   IF(OBJ.NE.0)GOTO 2060
X       IF(IOBJ.NE.0)GOTO 25210
X25201   IF(DETAIL.LT.3)CALL RSPEAK(15)
X       DETAIL=DETAIL+1
X       WZDARK=.FALSE.
X       ABB(LOC)=0
X       NEWLOC=LOC
X       GOTO 2
X
XC  LOOK INTO SOMETHING (A CONTAINER).
X25210   IF(.NOT.VESSEL(IOBJ))GOTO 25220
X       IF(.NOT.AJAR(IOBJ).AND.OPAQUE(IOBJ))GOTO 2011
X       SPK=359
X       IF(HOLDER(IOBJ).EQ.0)GOTO 2011
X       WRITE(*,25212)
X25212   FORMAT(' ')
X       CALL LOOKIN(IOBJ)
X       GOTO 2100
X
XC  LOOK AT SOMETHING.  IF WRITTEN, READ IT.
X25220   IF(.NOT.PRINTD(IOBJ))GOTO 25230
X       OBJ=IOBJ
X       IOBJ=0
X       GOTO 22700
X
X25230   IF(IOBJ.NE.SPHERE)GOTO 25201
X	IF(INSIDE(LOC).AND.(.NOT.ATHAND(SAPPHI)))GOTO 25232
X	CALL RSPEAK(42)
X	GO TO 2100
X25232	CALL RSPEAK(400)
X	WRITE(*,*)'  '
X	SLOC=PLACE(SAPPHI)
X	IF((MOD(LOCCON(SLOC),2).EQ.0.OR.ENCLSD(SAPPHI)).AND.SLOC.NE.200
X     1   .AND..NOT.(PLACE(LAMP).EQ.SLOC.AND.PROP(LAMP).NE.0))
X     1   GO TO 25234
X	CALL SPEAK(LTEXT(SLOC))
X	IF(SLOC.NE.239.OR.FLG239.NE.0)GOTO 25235
X	CALL RSPEAK(403)
X	FLG239=1
X25235	GO TO 25236
X25234	CALL RSPEAK(401)
X25236	WRITE(*,*)'  '
X	CALL RSPEAK(402)
X	GO TO 2100
X
XC  COMBO: TRYING TO OPEN SAFE.  SEE COMMENTS FOR FEE FIE FOE FOO.
X
X25300   IF(.NOT.AT(SAFE))GOTO 2060
X       K=VOCABX(VTXT(VRBX,1),4)-10
X       SPK=42
X       IF(COMBO.EQ.1-K)GOTO 25320
X       IF(COMBO.NE.0)SPK=366
X       GOTO 2011
X
X25320   COMBO=K
X       SPK=371
X       IF(K.NE.3)GOTO 2011
X       COMBO=0
X       CALL BITOFF(SAFE,LOCKBT)
X       CALL BITON(SAFE,OPENBT)
X       PROP(SAFE)=1
X       SPK=365
X       IF(PROP(BOOK).GE.0)GOTO 2011
X       TALLY=TALLY-1
X	PROP(BOOK)=0
XC  IF REMAINING TREASURES TOO ELUSIVE, ZAP HIS LAMP.
XC  THIS COPIES SOME CODE LOCATED AROUND LABEL 2000.  MUST BE DONE
XC  HERE SINCE BOOK IS CONTAINED IN SAFE & TALLY STUFF ONLY WORKS FOR THINGS
XC  DEPOSITED AT A LOC.
X       IF(TALLY.EQ.TALLY2.AND.TALLY.NE.0)LIMIT=MIN0(35,LIMIT)
X       GOTO 2011
XC  DUST/SWEEP.
X25400   IF(.NOT.ATHAND(BRUSH))SPK=342
X       IF(.NOT.AT(CARVNG).OR..NOT.ATHAND(BRUSH).OR.PROP(CARVNG).EQ.1)
X     1  GOTO 2011
X       PROP(CARVNG)=1
X       CALL RSPEAK(363)
X       SPK=372
X       GOTO 2011
X
X
XC  TERSE/UNTERSE.  SUPRESS ALL LONG-FORM DESCRIPTIONS.
X
X25500   TERSE=.NOT.TERSE
X       DETAIL=3
X       GOTO 2009
XC  WIZ STUFF
X
X25600       CONTINUE
XC ???????????? UNCOMMENT THE FOLLOWING LINE TO ACTIVATE WIZARD MODE:
XC           ISWIZ = .NOT.ISWIZ
X25700       GOTO 2009
X25800       IF(.NOT.ISWIZ) GOTO 2009
X            WRITE(*,25801)
X25801       FORMAT (1X,'LOCATION ?')
X            READ (*,25802) GATLOC
X25802       FORMAT (I4)
X            IF ((GATLOC.GT.0).AND.(GATLOC.LE.MAXLOC))
X     +       LOC=GATLOC
X      GOTO 2009
X25900       IF(ISWIZ)WRITE(*,25902)(DLOC(KQQQ),KQQQ=1,DWFMAX-1)
X25902	    FORMAT(1X,'THE DWARFS ARE AT LOCATIONS ',/,
X     1            8I6)
X            IF(ISWIZ) WRITE(*,25901) DLOC(DWFMAX)
X25901       FORMAT(1X,'THE PIRATE IS AT LOCATION ',I4)
X      GOTO 2009
X
XC  HINTS
X
XC  COME HERE IF HE'S BEEN LONG ENOUGH AT REQUIRED LOC(S) FOR SOME UNUSED HINT.
XC  HINT NUMBER IS IN VARIABLE "HINT".  BRANCH TO QUICK TEST FOR ADDITIONAL
XC  CONDITIONS, THEN COME BACK TO DO NEAT STUFF.  GOTO 40010 IF CONDITIONS ARE
XC  MET AND WE WANT TO OFFER THE HINT.  GOTO 40020 TO CLEAR HINTLC BACK TO ZERO,
XC  40030 TO TAKE NO ACTION YET.
X
X40000   GOTO (40700,40800,40900,41000,41100,41200,41300,41400,41500,
X     1     41600,41700,40010),(HINT+1-HNTMIN)
XC             MAZE  DARK  WITT  SWORD SLIDE CAVE1 BIRD  CAVE2 RNBOW
XC             SNAKE STYX
X
X       WRITE(*,40002)HINT
X40002   FORMAT (' TRYING TO PRINT HINT # ',I1,/)
X       CALL BUG(27)
X
X40010   HINTLC(HINT)=0
X       IF(.NOT.YES(HINTS(HINT,3),0,54))GOTO 2602
X       WRITE(*,40012)HINTS(HINT,2)
X40012   FORMAT(/' I am prepared to give you a hint, but it will cost
X     1 you',    I2,' points.')
X       HINTED(HINT)=YES(175,HINTS(HINT,4),54)
X       IF(HINTED(HINT).AND.LIMIT.GT.30)LIMIT=LIMIT+30*HINTS(HINT,2)
X40020   HINTLC(HINT)=0
X40030   GOTO 2602
X
XC  NOW FOR THE QUICK TESTS.  SEE DATABASE DESCRIPTION FOR ONE-LINE NOTES.
X
X40700   IF(ATLOC(LOC).EQ.0.AND.ATLOC(OLDLOC).EQ.0.AND.
X     1  ATLOC(OLDLC2).EQ.0.AND.BURDEN(0).GT.1)GOTO 40010
X       GOTO 40020
X
X40800   IF(PROP(EMRALD).NE.-1.AND.PROP(PYRAM).EQ.-1)GOTO 40010
X       GOTO 40020
X
X40900   GOTO 40010
X
X41000   IF( (PROP(SWORD).EQ.1.OR.PROP(SWORD).EQ.5)
X     1  .AND..NOT.TOTING(CROWN))GOTO 40010
X       GOTO 40020
X
X41100   GOTO 40010
X
X41200   IF(PROP(GRATE).EQ.0.AND..NOT.ATHAND(KEYS))GOTO 40010
X       GOTO 40020
X
X41300   IF(HERE(BIRD).AND.ATHAND(ROD).AND.OBJ.EQ.BIRD)GOTO 40010
X       GOTO 40030
X
X41400   IF(ABB(159).EQ.0)GOTO 40010
X       GOTO 40020
X
X41500   IF(.NOT.TOTING(SHOES).OR.ABB(205).EQ.0)GOTO 40010
X       GOTO 40020
X
X41600   IF(.NOT.ATHAND(LYRE).AND.PROP(DOG).NE.1)GOTO 40010
X       GOTO 40020
X
X41700   IF(HERE(SNAKE).AND..NOT.HERE(BIRD))GOTO 40010
X       GOTO 40020
XC  CAVE CLOSING AND SCORING
X
X
XC  THESE SECTIONS HANDLE THE CLOSING OF THE CAVE.  THE CAVE CLOSES "CLOCK1"
XC  TURNS AFTER THE LAST TREASURE HAS BEEN LOCATED (INCLUDING THE PIRATE'S
XC  CHEST, WHICH MAY OF COURSE NEVER SHOW UP).  NOTE THAT THE TREASURES NEED NOT
XC  HAVE BEEN TAKEN YET, JUST LOCATED.  HENCE CLOCK1 MUST BE LARGE ENOUGH TO GET
XC  OUT OF THE CAVE (IT ONLY TICKS WHILE INSIDE THE CAVE).  WHEN IT HITS ZERO,
XC  WE BRANCH TO 90000 TO START CLOSING THE CAVE, AND THEN SIT BACK AND WAIT FOR
XC  HIM TO TRY TO GET OUT.  IF HE DOESN'T WITHIN CLOCK2 TURNS, WE CLOSE THE
XC  CAVE; IF HE DOES TRY, WE ASSUME HE PANICS, AND GIVE HIM A FEW ADDITIONAL
XC  TURNS TO GET FRANTIC BEFORE WE CLOSE.  WHEN CLOCK2 HITS ZERO, WE BRANCH TO
XC  90000 TO TRANSPORT HIM INTO THE FINAL PUZZLE.  NOTE THAT THE PUZZLE DEPENDS
XC  UPON ALL SORTS OF RANDOM THINGS.  FOR INSTANCE, THERE MUST BE NO WATER OR
XC  OIL, SINCE THERE ARE BEANSTALKS WHICH WE DON'T WANT TO BE ABLE TO WATER,
XC  SINCE THE CODE CAN'T HANDLE IT.  ALSO, WE CAN HAVE NO KEYS, SINCE THERE IS A
XC  GRATE (HAVING MOVED THE FIXED OBJECT!) THERE SEPARATING HIM FROM ALL THE
XC  TREASURES.  MOST OF THESE PROBLEMS ARISE FROM THE USE OF NEGATIVE PROP
XC  NUMBERS TO SUPPRESS THE OBJECT DESCRIPTIONS UNTIL HE'S ACTUALLY MOVED THE
XC  OBJECTS.
X
XC  WHEN THE FIRST WARNING COMES, WE LOCK THE GRATE, DESTROY THE BRIDGE, KILL
XC  ALL THE DWARVES (AND THE PIRATE), REMOVE THE TROLL AND BEAR (UNLESS DEAD),
XC  AND SET "CLOSNG" TO TRUE.  LEAVE THE DRAGON; TOO MUCH TROUBLE TO MOVE IT.
XC  FROM NOW UNTIL CLOCK2 RUNS OUT, HE CANNOT UNLOCK THE GRATE, MOVE TO ANY
XC  LOCATION OUTSIDE THE CAVE (LOC=BITSET(LOCCON,6)), OR CREATE THE BRIDGE.  NOR
XC  RESURRECTED IF HE DIES.  NOTE THAT THE SNAKE IS ALREADY GONE, SINCE HE GOT
XC  TO THE TREASURE ACCESSIBLE ONLY VIA THE HALL OF THE MT. KING.  ALSO, HE'S
XC  BEEN IN GIANT ROOM (TO GET EGGS), SO WE CAN REFER TO IT.  ALSO ALSO, HE'S
XC  GOTTEN THE PEARL, SO WE KNOW THE BIVALVE IS AN OYSTER.  *AND*, THE DWARVES
XC  MUST HAVE BEEN ACTIVATED, SINCE WE'VE FOUND CHEST.
X
X90000   PROP(GRATE)=0
X       PROP(FISSUR)=0
X       PROP(TDOOR)=0
X       PROP(TDOOR2)=0
X       DO 90010 I=1,6
X       DSEEN(I)=.FALSE.
X90010   DLOC(I)=0
X       CALL MOVE(TROLL,0)
X       CALL MOVE(TROLL+MAXOBJ,0)
X       CALL MOVE(TROLL2,PLAC(TROLL))
X       CALL MOVE(TROLL2+MAXOBJ,FIXD(TROLL))
X       CALL JUGGLE(CHASM)
X       IF(PROP(BEAR).NE.3)CALL DSTROY(BEAR)
X       PROP(CHAIN)=0
X       FIXED(CHAIN)=0
X       PROP(AXE)=0
X       FIXED(AXE)=0
X       CALL RSPEAK(129)
X       CLOCK1=-1
X       CLOSNG=.TRUE.
X       GOTO 19999
X
XC  ONCE HE'S PANICKED, AND CLOCK2 HAS RUN OUT, WE COME HERE TO SET UP THE
XC  STORAGE ROOM.  THE ROOM HAS TWO LOCS, HARDWIRED AS 115 (NE) AND 116 (SW).
XC  AT THE NE END, WE PLACE EMPTY BOTTLES, A NURSERY OF PLANTS, A BED OF
XC  OYSTERS, A PILE OF LAMPS, RODS WITH STARS, SLEEPING DWARVES, PHONE BOOTH AND
XC  AT THE SW END WE PLACE GRATE OVER TREASURES, SNAKE PIT, COVEY OF CAGED BIRDS,
XC  MORE RODS, AND PILLOWS.  A MIRROR STRETCHES ACROSS ONE WALL.  MANY OF THE
XC  OBJECTS COME FROM KNOWN LOCATIONS AND/OR STATES (E.G. THE SNAKE IS KNOWN TO
XC  HAVE BEEN DESTROYED AND NEEDN'T BE CARRIED AWAY FROM ITS OLD "PLACE"),
XC  MAKING THE VARIOUS OBJECTS BE HANDLED DIFFERENTLY.  WE ALSO DROP ALL OTHER
XC  OBJECTS HE MIGHT BE CARRYING (LEST HE HAVE SOME WHICH COULD CAUSE TROUBLE,
XC  SUCH AS THE KEYS).  WE DESCRIBE THE FLASH OF LIGHT AND TRUNDLE BACK.
XC  THE PHONE MAKES IT IMPOSSIBLE FOR THE WALDO TO FART AROUND IN THE
XC  REPOSITORY TOO LONG.  WHEN CLOCK3 TICKS TO ZERO, THE PHONE STARTS
XC  RINGING.  WHEN IT HITS -7, THE DWARVES WAKE UP.  IF HE FIDDLES WITH
XC  THE PHONE, HE GETS ZONKED IN OTHER WAYS.
X
X91000   PROP(BOTTLE)=PUT(BOTTLE,115,1)
X       PROP(PLANT)=PUT(PLANT,115,0)
X       PROP(OYSTER)=PUT(OYSTER,115,0)
X       PROP(LAMP)=PUT(LAMP,115,0)
X       PROP(ROD)=PUT(ROD,115,0)
X       PROP(DWARF)=PUT(DWARF,115,0)
X       LOC=115
X       OLDLOC=115
X       NEWLOC=115
X
XC  LEAVE THE GRATE WITH NORMAL (NON-NEGATIVE PROPERTY).
X
X       FOO=PUT(GRATE,116,0)
X       PROP(SNAKE)=PUT(SNAKE,116,1)
X       PROP(BIRD)=PUT(BIRD,116,1)
X       PROP(CAGE)=PUT(CAGE,116,0)
X       PROP(ROD2)=PUT(ROD2,116,0)
X       PROP(PILLOW)=PUT(PILLOW,116,0)
X
X       PROP(BOOTH)=PUT(BOOTH,116,-4)
X       FIXED(BOOTH)=115
X       PROP(PHONE)=PUT(PHONE,212,-4)
X
X       PROP(MIRROR)=PUT(MIRROR,115,0)
X       PROP(BOOK2)=PUT(BOOK2,115,0)
X       FIXED(MIRROR)=116
X
X       DO 91010 I=1,MAXOBJ
X       IF(TOTING(I).AND.ENCLSD(I))CALL REMOVE(I)
X91010   IF(TOTING(I))CALL DSTROY(I)
X
X       CALL RSPEAK(132)
X       CLOSED=.TRUE.
X       GOTO 2
XC  ANOTHER WAY WE CAN FORCE AN END TO THINGS IS BY HAVING THE LAMP GIVE OUT.
XC  WHEN IT GETS CLOSE, WE COME HERE TO WARN HIM.
XC  92000 IS FOR CASES OF LAMP DYING.  92400 IS WHEN IT GOES OUT,
XC  AND 92600 IS IF HE'S WANDERED OUTSIDE AND THE LAMP IS USED UP, IN WHICH
XC  CASE WE FORCE HIM TO GIVE UP.
X
X92000   IF(LMWARN.OR..NOT.HERE(LAMP))GOTO 19999
X       LMWARN=.TRUE.
X       SPK=187
X       IF(PROP(BATTER).EQ.1)SPK=323
X       IF(PLACE(BATTER).EQ.0)SPK=183
X       IF(PROP(VEND).EQ.1)SPK=189
X       CALL RSPEAK(SPK)
X       GOTO 19999
X
X92400   LIMIT=-1
X       PROP(LAMP)=0
X       IF(HERE(LAMP))CALL RSPEAK(184)
X       GOTO 19999
X
X92600   CALL RSPEAK(185)
X       GAVEUP=.TRUE.
X       GOTO 95000
X
X
XC  OH DEAR, HE'S DISTURBED THE DWARVES.
X
X93000   CALL RSPEAK(136)
X       GOTO 95000
X
XC  HIT THE PHONE.  JINGLE, JANGLE, CRASH!
X93100   CALL RSPEAK(282)
X       GOTO 93000
X
XC  WHOOPS.  DOWN THE CHUTE.
X93200   CALL RSPEAK(283)
X       GOTO 95000
X
XC  DWARVES CAN'T SLEEP THRU ALL THIS RINGING!
X93300   CALL RSPEAK(254)
X       GOTO 95000
XC  "YOU'RE DEAD, FRED."         "YOU DIED, CLYDE?"
XC
XC  IF THE CURRENT LOC IS ZERO, IT MEANS THE CLOWN GOT HIMSELF KILLED.  WE'LL
XC  ALLOW THIS MAXDIE TIMES.  MAXDIE IS AUTOMATICALLY SET BASED ON THE NUMBER OF
XC  SNIDE MESSAGES AVAILABLE.  EACH DEATH RESULTS IN A MESSAGE (81, 83, ETC.)
XC  WHICH OFFERS REINCARNATION; IF ACCEPTED, THIS RESULTS IN MESSAGE 82, 84,
XC  ETC.  THE LAST TIME, IF HE WANTS ANOTHER CHANCE, HE GETS A SNIDE REMARK AS
XC  WE EXIT.  WHEN REINCARNATED, ALL OBJECTS BEING CARRIED GET DROPPED AT OLDLC2
XC  (PRESUMABLY THE LAST PLACE PRIOR TO BEING KILLED) WITHOUT CHANGE OF PROPS.
XC  THE LOOP RUNS BACKWARDS TO ASSURE THAT THE BIRD IS DROPPED BEFORE THE CAGE.
XC  (THIS KLUGE COULD BE CHANGED ONCE WE'RE SURE ALL REFERENCES TO BIRD AND CAGE
XC  ARE DONE BY KEYWORDS.)  THE LAMP IS A SPECIAL CASE (IT WOULDN'T DO TO LEAVE
XC  IT IN THE CAVE).  IT IS TURNED OFF AND LEFT OUTSIDE THE BUILDING (ONLY IF HE
XC  WAS CARRYING IT, OF COURSE).  HE HIMSELF IS LEFT INSIDE THE BUILDING (AND
XC  HEAVEN HELP HIM IF HE TRIES TO XYZZY BACK INTO THE CAVE WITHOUT THE LAMP!).
XC  OLDLOC IS ZAPPED SO HE CAN'T JUST "RETREAT".
X
XC  THE EASIEST WAY TO GET KILLED IS TO FALL INTO A PIT IN PITCH DARKNESS.
X
X94000   CALL RSPEAK(23)
X       OLDLC2=LOC
X
XC  OKAY, HE'S DEAD.  LET'S GET ON WITH IT.
X
X94100   IF(CLOSNG)GOTO 94500
X       YEA=YES(81+NUMDIE*2,82+NUMDIE*2,54)
X       NUMDIE=NUMDIE+1
X       IF(NUMDIE.EQ.MAXDIE.OR..NOT.YEA)GOTO 95000
X       IF(CHASE.EQ.0)GOTO 94160
X
XC  CHAMP WAS BEING CHASED BY WUMPUS, & DIED ANOTHER WAY.
XC  PUT WUMPUS BACK TO SLEEP, IN CASE OUR HERO STILL HASN'T GOT THE CLOAK.
X       CHASE=0
X       PROP(WUMPUS)=0
X       CALL MOVE(WUMPUS,174)
X94160   IF(TOTING(LAMP))PROP(LAMP)=0
X       DO 94200 J=1,MAXOBJ
X       IF(.NOT.HOLDNG(J))GOTO 94200
X       LOC=OLDLC2
X       IF(J.EQ.LAMP)LOC=1
X       CALL DROP(J,LOC)
X       IF(.NOT.WEARNG(J))GOTO 94200
X       PROP(J)=0
X       CALL BITOFF(J,WEARBT)
X94200   CONTINUE
X       LOC=3
X       OLDLOC=LOC
X       WDX=0
X       WORDS(1)=0
X       CALL CLRLIN
X       HEALTH=100
X       GOTO 2000
X
XC  HE DIED DURING CLOSING TIME.  NO RESURRECTION.  TALLY UP A DEATH AND EXIT.
X
X94500   CALL RSPEAK(131)
X       NUMDIE=NUMDIE+1
X       GOTO 95000
XC  IT'S OVER.  TALLY SCORE.
X
X95000   CALL RATING(SCORE,BONUS,GAVEUP,SCORNG,CLOSNG,CLOSED
X     1    ,HNTMAX)
X
XC  THAT SHOULD BE GOOD ENOUGH.  LET'S TELL HIM ALL ABOUT IT.
X
X
X       WRITE(*,95100)SCORE,MXSCOR,TURNS
X95100   FORMAT(///' You scored',I4,' out of a possible',I4,
X     1  ', using',I5,' turns.')
X
X       DO 95200 I=1,CLSSES
X       IF(CVAL(I).GE.SCORE)GOTO 95210
X95200   CONTINUE
X       WRITE(*,95202)
X95202   FORMAT(/' You just went off my scale!!'/)
X       GOTO 98000
X
X95210   CALL SPEAK(CTEXT(I))
X       IF(I.EQ.CLSSES-1)GOTO 95220
X       K=CVAL(I)+1-SCORE
X       KK2C='s.'
X       IF(K.EQ.1)KK2C='. '
X       WRITE(*,95212)K,KK2C
X95212   FORMAT(/' To achieve the next higher rating, you need',I3,
X     1  ' more point',A2/)
X       GOTO 98000
X
X95220   WRITE(*,95222)
X95222   FORMAT(/' To achieve the next higher rating ',
X     1  'would be a neat trick!'//' CONGRATULATIONS!!'/)
X
XC98000  STOP
X98000   STOP
X
X       END
X
X
X
X
X
X
X
END_OF_aamain.f
if test 98021 -ne `wc -c <aamain.f`; then
    echo shar: \"aamain.f\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f asubs.f -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"asubs.f\"
else
echo shar: Extracting \"asubs.f\" \(63057 characters\)
sed "s/^X//" >asubs.f <<'END_OF_asubs.f'
X
X
X
X
X
XC***   A5TOA1
X
X       SUBROUTINE A5TOA1(A,B,C,QQ,LENG)
X
XC  A AND B CONTAIN A 1- TO 12-CHARACTER WORD IN A6 FORMAT, C CONTAINS ANOTHER
XC  WORD AND/OR PUNCTUATION.  THEY ARE UNPACKED TO ONE CHARACTER PER WORD IN THE
XC  ARRAY "CHARS".
XC  THE INDEX OF THE LAST NON-BLANK CHAR IN CHARS IS RETURNED IN LENG.
X
X       IMPLICIT INTEGER(A-Z)
X       CHARACTER*6 A,B,C
X       CHARACTER QQ(20)
X	DO 300 JJ=1,6
X	QQ(JJ)=A(JJ:JJ)
X300	QQ(JJ+6)=B(JJ:JJ)
X      DO 5 I=1,12
X      IF(QQ(I).EQ.' ')GOTO 10
X5     CONTINUE
X      LENG=12
X      GOTO 15
X10    CONTINUE
X      LENG=I-1
X15    DO 20 I=1,6
X      IF(C(I:I).NE.' ')THEN
X          LENG=LENG+1
X          QQ(LENG) = C(I:I)
X      ENDIF
X20    CONTINUE
X      DO 21 I= LENG+1,20
X21    QQ(I) = ' '    
X      DO 22 I= 1,20
X22    IF(QQ(I).EQ.'_')QQ(I) = ' '
X      
X      RETURN
X      END
X
X
X
XC***  AJAR   .TRUE. IF OBJ IS CONTAINER AND IS OPEN
XC  THE NEXT LOGICAL FUNCTIONS DESCRIBE ATTRIBUTES OF OBJECTS.
XC  (AJAR, HINGED, OPAQUE, PRINTD, TREASR, VESSEL, WEARNG)
X
X       LOGICAL FUNCTION AJAR(OBJ)
X
XC  AJAR(OBJ)    = TRUE IF OBJECT IS AN OPEN OR UNHINGED CONTAINER.
X
X       IMPLICIT INTEGER(A-Z)
X       LOGICAL BITSET,HINGED,VESSEL
X       COMMON /BITCOM/ OPENBT,UNLKBT,BURNBT,WEARBT
X       COMMON /CONCOM/ LOCCON(250),OBJCON(150)
X
X      AJAR=BITSET(OBJCON(OBJ),OPENBT).OR.
X     1  (VESSEL(OBJ).AND..NOT.HINGED(OBJ))
X       RETURN
X       END
X
X
XC***  AT     .TRUE. IF AT OBJ
X       LOGICAL FUNCTION AT(OBJ)
X
XC  AT(OBJ)      = TRUE IF ON EITHER SIDE OF TWO-PLACED OBJECT
X
X       IMPLICIT INTEGER(A-Z)
X       COMMON /LOCCOM/ LOC,OLDLOC,OLDLC2,NEWLOC,MAXLOC
X       COMMON /PLACOM/ ATLOC(250),LINK(300),PLACE(150),
X     1          FIXED(150),MAXOBJ
X       AT = .FALSE.
X       IF(OBJ.LT.1.OR.OBJ.GT.MAXOBJ)RETURN
X       AT=PLACE(OBJ).EQ.LOC.OR.FIXED(OBJ).EQ.LOC
X       RETURN
X       END
X
X
X
XC***  ATHAND .TRUE. IF OBJ READILY AVAILABLE
X
X
X       LOGICAL FUNCTION ATHAND(OBJ)
X
XC  ATHAND(OBJ)  = TRUE IF OBJ IS READILY REACHABLE.
XC                 IT CAN BE LYING HERE, IN HAND OR IN OPEN CONTAINER.
X
X       IMPLICIT INTEGER(A-Z)
X       COMMON /LOCCOM/ LOC,OLDLOC,OLDLC2,NEWLOC,MAXLOC
X       COMMON /PLACOM/ ATLOC(250),LINK(300),PLACE(150),
X     1          FIXED(150),MAXOBJ
X       LOGICAL TOTING,AJAR,ENCLSD,HOLDNG,AAA
X
X       ATHAND = .FALSE.
X       IF(PLACE(OBJ).EQ.LOC.OR.HOLDNG(OBJ))THEN
X             ATHAND = .TRUE.
X             RETURN
X       ENDIF
X       IF(.NOT.ENCLSD(OBJ))RETURN
X       CONTNR=-PLACE(OBJ)
X       
X
X       ATHAND=
X     1      (AJAR(CONTNR).AND.
X     2          (PLACE(CONTNR).EQ.LOC.OR.
X     3          (TOTING(OBJ).AND.HOLDNG(CONTNR))))
X
X       RETURN
X       END
X
X
X
X
XC***   BITOFF
X
X
X       SUBROUTINE BITOFF(OBJ,BIT)
X
XC  TURNS OFF (SETS=0) A BIT IN OBJCON.
X
X       IMPLICIT INTEGER(A-Z)
X       COMMON /CONCOM/ LOCCON(250),OBJCON(150)
X
XC      OBJCON(OBJ)=IAND(OBJCON(OBJ),INOT(BITS(BIT)))
XC THE FOLLOWING SHOULD BE EQUIVALENT TO THE ABOVE
X       OBJCON(OBJ)=IOR(OBJCON(OBJ),(BITS(BIT)))-BITS(BIT)
X       RETURN
X       END
X
X
X
X
XC***   BITON
X
X
X       SUBROUTINE BITON(OBJ,BIT)
X
XC  TURNS ON (SETS=1) A BIT IN OBJCON.
X
X       IMPLICIT INTEGER(A-Z)
X       COMMON /CONCOM/ LOCCON(250),OBJCON(150)
X
X      OBJCON(OBJ)=IOR(OBJCON(OBJ),BITS(BIT))
X       RETURN
X       END
X
X
X
X
X
X
XC***   BITS
X      INTEGER FUNCTION BITS(SHIFT)
X      IMPLICIT INTEGER (A-Z)
X      BITS=(2**SHIFT)
X      RETURN
X      END
X
X
X
X
XC***   BITSET
XC  MISCELLANEOUS LOGICAL FUNCTIONS (BITSET, PCT)
XC  ALSO, SUBROUTINES FOR TURNING BITS ON AND OFF (BITON, BITOFF).
X
X       LOGICAL FUNCTION BITSET(WORD,N)
X
XC  BITSET(COND,L,N) = TRUE IF COND(L) HAS BIT N SET
X
X       IMPLICIT INTEGER(A-Z)
X      BITSET=IAND(WORD,2**N).NE.0
X5      RETURN
X       END
X
X
X
X
X
X
XC***  BLIND  .TRUE. IF YOU CAN'T SEE AT THIS LOC
XC  LOCATION ATTRIBUTES.  (BLIND, DARK, FORCED, INSIDE, OUTSID, PORTAL)
X
X
X       LOGICAL FUNCTION BLIND(DUMMY)
X
XC  TRUE IF ADVENTURER IS "BLIND" AT THIS LOC, (DARKNESS OR GLARE)
X
X       IMPLICIT INTEGER(A-Z)
X       COMMON /CONCOM/ LOCCON(250),OBJCON(150)
X       COMMON /LOCCOM/ LOC,OLDLOC,OLDLC2,NEWLOC,MAXLOC
X       COMMON /OBJCOM/ PLAC(150),FIXD(150),WEIGHT(150),PROP(150),
X     1          POINTS(150)
X      LOGICAL DARK,ATHAND
X       DATA LAMP /2/
X
X       BLIND=DARK(0).OR.(LOC.EQ.200.AND.ATHAND(LAMP).AND.PROP(LAMP)
X     1      .EQ.1)
X
X       RETURN
X       END
X
X
X
X
X
XC***   BUG
X
X       SUBROUTINE BUG(NUM)
X       IMPLICIT INTEGER(A-Z)
X
XC  THE FOLLOWING CONDITIONS ARE CURRENTLY CONSIDERED FATAL BUGS.  NUMBERS < 20
XC  ARE DETECTED WHILE READING THE DATABASE; THE OTHERS OCCUR AT "RUN TIME".
XC       0       MESSAGE LINE > 70 CHARACTERS
XC       1       NULL LINE IN MESSAGE
XC       2       TOO MANY WORDS OF MESSAGES
XC       3       TOO MANY TRAVEL OPTIONS
XC       4       TOO MANY VOCABULARY WORDS
XC       5       REQUIRED VOCABULARY WORD NOT FOUND
XC       6       TOO MANY RTEXT OR MTEXT MESSAGES
XC       7       TOO MANY HINTS
XC       8       LOCATION HAS COND BIT BEING SET TWICE
XC       9       INVALID SECTION NUMBER IN DATABASE
XC       10      OUT OF ORDER LOCS OR RSPEAK ENTRIES.
XC       11      ILLEGAL MOTION WORD IN TRAVEL TABLE
XC       12      ** UNUSED **.
XC       13      UNKNOWN OR ILLEGAL WORD IN ADJECTIVE TABLE.
XC       14      ILLEGAL WORD IN PREP/OBJ TABLE
XC       15      TOO MANY ENTRIES IN PREP/OBJ TABLE
XC       16      OBJECT HAS CONDITION BIT SET TWICE
XC       17      OBJECT NUMBER TOO LARGE
XC       18      TOO MANY ENTRIES IN ADJECTIVE/NOUN TABLE.
XC       20      SPECIAL TRAVEL (500>L>300) EXCEEDS GOTO LIST
XC       21      RAN OFF END OF VOCABULARY TABLE
XC       22      VERB CLASS (N/1000) NOT BETWEEN 1 AND 3
XC       23      INTRANSITIVE ACTION VERB EXCEEDS GOTO LIST
XC       24      TRANSITIVE ACTION VERB EXCEEDS GOTO LIST
XC       25      CONDITIONAL TRAVEL ENTRY WITH NO ALTERNATIVE
XC       26      LOCATION HAS NO TRAVEL ENTRIES
XC       27      HINT NUMBER EXCEEDS GOTO LIST
XC       28      INVALID MONTH RETURNED BY DATE FUNCTION
XC       29      ACTION VERB 'LEAVE' HAS NO OBJECT.
XC       30      PREPOSITION FOUND IN UNEXPECTED TABLE
XC       31      RECEIVED AN UNEXPECTED WORD TERMINATOR FROM A1TOA5
XC       32      TRYING TO PUT A CONTAINER INTO ITSELF (TRICKY!)
XC       33      UNKNOWN WORD CLASS IN GETWDS
XC       35      TRYING TO CARRY A NON-EXISTENT OBJECT
X
X       WRITE(*,1) NUM
X1       FORMAT (' FATAL ERROR, SEE SOURCE CODE FOR INTERPRETATION.'/
X     1  ' PROBABLE CAUSE: ERRONEOUS INFO IN DATABASE OR BAD ASAVE.DAT'/
X     2  ' ERROR CODE =',I2/)
X       STOP
X       END
X
X
XC***  BURDEN .. RETURNS WEIGHT OF ITEMS BEING CARRIED
X
X       INTEGER FUNCTION BURDEN(OBJ)
X
XC  IF OBJ=0, BURDEN CALCULATES THE TOTAL WEIGHT OF THE ADVENTURER'S BURDEN,
XC       INCLUDING EVERYTHING IN ALL CONTAINERS (EXCEPT THE BOAT) THAT HE IS
XC       CARRYING.
XC  IF OBJ#0 AND OBJ IS A CONTAINER, CALCULATE THE WEIGHT OF EVERYTHING INSIDE
XC       THE CONTAINER (INCLUDING THE CONTAINER ITSELF).  SINCE DONKEY FORTRAN
XC       ISN'T RECURSIVE, WE WILL ONLY CALCULATE WEIGHTS OF CONTAINED CONTAINERS
XC       ONE LEVEL DOWN.  THE ONLY SERIOUS CONTAINED CONTAINER WOULD BE THE SACK
XC       THE ONLY THINGS WE'LL MISS WILL BE FILLED VS EMPTY BOTTLE OR CAGE.
XC  IF OBJ#0 AND ISN'T A CONTAINER, RETURN ITS WEIGHT.
X
X       IMPLICIT INTEGER(A-Z)
X       COMMON /OBJCOM/ PLAC(150),FIXD(150),WEIGHT(150),PROP(150),
X     1          POINTS(150)
X       COMMON /HLDCOM/ HOLDER(150),HLINK(150)
X       COMMON /PLACOM/ ATLOC(250),LINK(300),PLACE(150),
X     1          FIXED(150),MAXOBJ
X       LOGICAL TOTING,WEARNG
X       DATA BOAT /48/
X
X       BURDEN=0
X       IF(OBJ.NE.0)GOTO 200
X       DO 100 I=1,MAXOBJ
X       IF(.NOT.TOTING(I).OR.PLACE(I).EQ.-BOAT)GOTO 100
X       BURDEN=BURDEN+WEIGHT(I)
X100     CONTINUE
X       RETURN
X
X200     BURDEN=WEIGHT(OBJ)
X       IF(OBJ.EQ.BOAT)RETURN
X       TEMP=HOLDER(OBJ)
X210     IF(TEMP.EQ.0)RETURN
X       BURDEN=BURDEN+WEIGHT(TEMP)
X       TEMP=HLINK(TEMP)
X       GOTO 210
X
X       END
X
X
X
X
X
X
XC***   CARRY
X
X       SUBROUTINE CARRY(OBJECT,WHERE)
X
XC  START TOTING AN OBJECT, REMOVING IT FROM THE LIST OF THINGS AT ITS FORMER
XC  LOCATION.  IF OBJECT>MAXOBJ (MOVING "FIXED" SECOND LOC),
XC  DON'T CHANGE PLACE.
X
X       IMPLICIT INTEGER(A-Z)
X       COMMON /PLACOM/ ATLOC(250),LINK(300),PLACE(150),
X     1          FIXED(150),MAXOBJ
X
X       IF(OBJECT.GT.MAXOBJ)GOTO 5
X       IF(PLACE(OBJECT).EQ.-1)RETURN
X       PLACE(OBJECT)=-1
X5       IF(ATLOC(WHERE).NE.OBJECT)GOTO 6
X       ATLOC(WHERE)=LINK(OBJECT)
X       RETURN
X
X6       TEMP=ATLOC(WHERE)
X7       IF(LINK(TEMP).EQ.OBJECT)GOTO 8
X       TEMP=LINK(TEMP)
X       IF(TEMP.NE.0)GOTO 7
X       CALL BUG(35)
X
X8       LINK(TEMP)=LINK(OBJECT)
X       RETURN
X       END
X
X
XC***   CLASS
X
X
X       INTEGER FUNCTION CLASS(WORD)
X
XC  RETURNS WORD CLASS NUMBER (1=MOTION VERB; 2=NOUN; 3=ACTION VERB;
XC  4=MISCELLANEOUS WORD; 5=PREPOSITION; 6=ADJECTIVE; 7=CONJUNCTION).
X
X
X       IMPLICIT INTEGER(A-Z)
X
X       CLASS=WORD/1000 +1
X       IF(WORD.LT.0)CLASS=-1
X       RETURN
X       END
X
X
X
XC***   CLRLIN
X
X       SUBROUTINE CLRLIN
X
XC  CLEARS OUT ALL CURRENT SYNTAX ARGS IN PREPARATION FOR A NEW INPUT LINE
X
X       IMPLICIT INTEGER(A-Z)
X       CHARACTER*6 VTXT,OTXT,IOTXT,DTK,ATAB,TXT,ALLZERO
X       COMMON /WRDCOM/ VERBS(45),VRBX,OBJS(45),
X     1  OBJX,IOBJS(15),IOBX,PREP,WORDS(45)
X       COMMON /SV3COM/DTK(9),ATAB(600),VTXT(45,2),OTXT(45,2),IOTXT(15,2)
X     1      ,TXT(35,2)
X
X       DO 3333 I=1,6
X3333   ALLZERO(I:I) = CHAR(0)
X       DO 1 I=1,45
X       OBJS(I)=0
X       VERBS(I)=0
X       DO 1 J=1,2
X1       VTXT(I,J)=ALLZERO
X
X       DO 3 I=1,15
X       IOBJS(I)=0
X       DO 3 J=1,2
X       IOTXT(I,J)=ALLZERO
X3       OTXT(I,J)=ALLZERO
X
X       VRBX=0
X       OBJX=0
X       IOBX=0
X       PREP=0
X       RETURN
X
X       END
X
X
X
XC***   CONFUZ
X
X
X       INTEGER FUNCTION CONFUZ(DUMMY)
X
XC  GENERATES SOME VARIANT OF "DON'T UNDERSTAND THAT" MESSAGE.
X
X       IMPLICIT INTEGER(A-Z)
X      LOGICAL PCT
X       CONFUZ=60
X       IF(PCT(50))CONFUZ=61
X       IF(PCT(33))CONFUZ=13
X       IF(PCT(25))CONFUZ=347
X       IF(PCT(20))CONFUZ=195
X       RETURN
X       END
X
X
X
X
XC***  DARK   .TRUE. IF THERE IS NO LIGHT HERE
X
X
X       LOGICAL FUNCTION DARK(DUMMY)
X
XC  TRUE IF LOCATION "LOC" IS DARK
X
X       IMPLICIT INTEGER(A-Z)
X       COMMON /CONCOM/ LOCCON(250),OBJCON(150)
X       COMMON /LOCCOM/ LOC,OLDLOC,OLDLC2,NEWLOC,MAXLOC
X       COMMON /OBJCOM/ PLAC(150),FIXD(150),WEIGHT(150),PROP(150),
X     1          POINTS(150)
X      LOGICAL ATHAND
X       DATA LAMP /2/
X
X       DARK=MOD(LOCCON(LOC),2).EQ.0.AND.(PROP(LAMP).EQ.0.OR.
X     1  .NOT.ATHAND(LAMP))
X       RETURN
X       END
X
X
X
X
X
X
X
XC***   DEAD  .TRUE. IF OBJ IS NOW DEAD
X      LOGICAL FUNCTION DEAD(OBJ)
X      IMPLICIT INTEGER(A-Z)
X      LOGICAL BITSET
X      COMMON/CONCOM/LOCCON(250),OBJCON(150)
X      DEAD=BITSET(OBJCON(OBJ),10)
X      RETURN
X      END
X
XC***   DROP
X
X
X
X       SUBROUTINE DROP(OBJECT,WHERE)
X
XC  PLACE AN OBJECT AT A GIVEN LOC, PREFIXING IT ONTO THE ATLOC LIST.
X
X       IMPLICIT INTEGER(A-Z)
X       COMMON /PLACOM/ ATLOC(250),LINK(300),PLACE(150),
X     1          FIXED(150),MAXOBJ
X
X       IF(OBJECT.GT.MAXOBJ)GOTO 1
X       PLACE(OBJECT)=WHERE
X       GOTO 2
X
X1       FIXED(OBJECT-MAXOBJ)=WHERE
X2       IF(WHERE.LE.0)RETURN
X       LINK(OBJECT)=ATLOC(WHERE)
X       ATLOC(WHERE)=OBJECT
X       RETURN
X       END
X
X
X
X
XC***   DSTROY
X
X
X       SUBROUTINE DSTROY(OBJECT)
X
XC  PERMANENTLY ELIMINATE "OBJECT" BY MOVING TO A NON-EXISTENT LOCATION.
X
X       IMPLICIT INTEGER(A-Z)
X
X       CALL MOVE(OBJECT,0)
X       RETURN
X       END
X
X
X
X
XC***   EDIBLE  .TRUE. IF OBJ CAN BE EATEN
X
X      LOGICAL FUNCTION EDIBLE(OBJ)
X      IMPLICIT INTEGER(A-Z)
X      LOGICAL BITSET
X      COMMON/CONCOM/LOCCON(250),OBJCON(150)
X      EDIBLE=BITSET(OBJCON(OBJ),7)
X      RETURN
X      END
X
X
XC***  ENCLSD .TURE. IF OBJ INSIDE SOMETHING
X
X
X       LOGICAL FUNCTION ENCLSD(OBJECT)
X
XC  ENCLSD(OBJ) = TRUE IF THE OBJ IS IN A CONTAINER
X
X       IMPLICIT INTEGER(A-Z)
X       COMMON /PLACOM/ ATLOC(250),LINK(300),PLACE(150),
X     1          FIXED(150),MAXOBJ
X       ENCLSD=.FALSE.
X       IF(OBJECT.LT.1.OR.OBJECT.GT.MAXOBJ)RETURN
X       ENCLSD=PLACE(OBJECT).LT.-1
X       RETURN
X       END
X
X
X
X
X
XC***   FORCED
X
X
X       LOGICAL FUNCTION FORCED(LOC)
X
XC  A FORCED LOCATION IS ONE FROM WHICH HE IS IMMEDIATELY BOUNCED TO ANOTHER.
XC  NORMAL USE IS FOR DEATH (FORCE TO LOC ZERO) AND FOR DESCRIPTIONS OF
XC  JOURNEY FROM ONE PLACE TO ANOTHER.
X
X       IMPLICIT INTEGER(A-Z)
X       COMMON /CONCOM/ LOCCON(250),OBJCON(150)
X
X       FORCED=LOCCON(LOC).EQ.2
X
X       RETURN
X       END
X
X
X
XC***   GETLIN
X
X       SUBROUTINE GETLIN
X
X
X       IMPLICIT INTEGER(A-Z)
X       LOGICAL BLKLIN
X       COMMON /BLKCOM/ BLKLIN
X      CHARACTER*6 TXT,WDS(2),KK,DTK,ATAB,VTXT,OTXT,IOTXT,TXT2(35,2)
X      LOGICAL ACTIVE
X       COMMON /UTXCOM/ WDX
X       CHARACTER CHRS(150), CHR2(150),CHRX(70)
X       COMMON /SV3COM/DTK(9),ATAB(600),VTXT(45,2),OTXT(45,2),IOTXT(15,2)
X     1      ,TXT(35,2)
X
X10      DO 15 I=1,35
X       DO 15 J=1,2
X        TXT2(I,J) = '      '
X15      TXT(I,J)  = '      '
X
X20      IF(BLKLIN)WRITE(*,*)'  '
X	WRITE(*,1266)
X1266	FORMAT(' >')
XC??????????????????????????????? THE FOLLOWING WORKS ON MANY COMPUTERS:
XC1266	FORMAT(' >',$)
X30      READ (*,50)CHRX
X50      FORMAT(70A1)
X        DO 1 I=1,70
X        CHRX(I) = CHAR(IAND(ICHAR(CHRX(I)), 127))
X        IF(CHRX(I).LT.' ')CHRX(I) = ' '
X        IF(CHRX(I).GE.'`')CHRX(I) = CHAR(ICHAR(CHRX(I)) - 32)
X1       CONTINUE
X      
X        DO 4 I=1,70
X        IF(CHRX(I).NE.' ') GOTO 6
X4       CONTINUE
X        GOTO 20
X6       CONTINUE
X
X        INDX = 1
X        DO 2 I=1,70
X        IF(CHRX(I).EQ.'.'.OR.CHRX(I).EQ.';'.OR.CHRX(I).EQ.',')THEN
X          CHR2(INDX) = ' '
X          INDX = INDX + 1
X          CHR2(INDX) = 'A'
X          INDX = INDX + 1
X          CHR2(INDX) = 'N'
X          INDX = INDX + 1
X          CHR2(INDX) = 'D'
X          INDX = INDX + 1
X          CHR2(INDX) = ' '
X          INDX = INDX + 1
X        ELSE
X          CHR2(INDX) = CHRX(I)
X          INDX = INDX + 1
X        ENDIF
X2       CONTINUE
X        CHR2(INDX) = '.'
X
X
X        DO 70 INDX2= 1,INDX
X70      IF(CHR2(INDX2).NE.' ') GOTO 73
X73      CONTINUE
X        J = 1
X        DO 71 I = INDX2,INDX
X        IF(I.NE.INDX2.AND.CHRS(J-1).EQ.' '.AND.CHR2(I).EQ.' ')GOTO71
X        CHRS(J) = CHR2(I)
X        J = J+1
X71      CONTINUE
X        IF(CHRS(1).EQ.'.') GOTO 20
X
X        WDX = 1
X        J = 1
X        DO 100 I=1,100        
X              IF(CHRS(I).EQ.'.') GO TO 200
X              IF(CHRS(I).EQ.' ') GO TO 120
X              IF(J.LE.6)TXT2(WDX,1)(J:J) = CHRS(I)
X              IF(J.GT.6.AND.J.LE.12)TXT2(WDX,2)(J-6:J-6) = CHRS(I)
X              J = J+1
X              GOTO 100
X120        CONTINUE
X           J = 1
X           WDX = WDX + 1
X100     CONTINUE
X200     CONTINUE
X        TXT(1,1) = TXT2(1,1)
X        TXT(1,2) = TXT2(1,2)
X        J = 1
X        DO 210 I=2,35
X          IF(TXT(J,1).NE.'AND   '.OR.TXT2(I,1).NE.'AND   ')THEN
X               J = J+1
X               TXT(J,1) = TXT2(I,1)
X               TXT(J,2) = TXT2(I,2)
X          ELSE
X               WDX = WDX - 1
X          ENDIF
X210     CONTINUE
X
XC          WRITE(*,12345)(TXT(IQQ,1),IQQ = 1,35)
XC12345  FORMAT(' ',5A6)
X
X
X       END
X
X
X
XC***   GETOBJ
X
X       SUBROUTINE GETOBJ(OBJ)
X
XC  ANALYSE AN OBJECT WORD.  SEE IF THE THING IS HERE, WHETHER WE'VE GOT A VERB
XC  YET, AND SO ON.  OBJECT MUST BE HERE UNLESS VERB IS "FIND" OR "INVENT(ORY)"
XC  (AND NO NEW VERB YET TO BE ANALYSED).  WATER, OIL AND WINE ARE ALSO
XC  FUNNY, SINCE THEY ARE NEVER ACTUALLY DROPPED AT ANY LOCATION, BUT MIGHT
XC  BE HERE INSIDE THE BOTTLE OR AS A FEATURE OF THE LOCATION.
XC
XC  HAS THREE POSSIBLE RETURN VALUES FOR 'OBJ':
XC       VAL > 0 :: A POSITIVE OBJECT NUMBER
XC       VAL = 0 :: OBJECT NOT FOUND HERE.  ERROR MESSAGE PRINTED.
XC       VAL < 0 :: OBJECT WORD REALLY SOMETHING ELSE.  RETURN NEGATIVE
XC                       VALUE OF SUBSTITUTED WORD.
X
X       IMPLICIT INTEGER(A-Z)
X      LOGICAL AT
X       CHARACTER ZAPP(20)
X       COMMON /DWFCOM/ DWARF,KNIFE,KNFLOC,DFLAG,DSEEN(6),DLOC(6),
X     1  ODLOC(6),DWFMAX
X       COMMON /LIQCOM/ BOTTLE,CASK,WATER,OIL,WINE,LIQTYP(5)
X       COMMON /LOCCOM/ LOC,OLDLOC,OLDLC2,NEWLOC,MAXLOC
X       COMMON /MNECOM/ BACK,CAVE,DPRSSN,ENTRNC,EXIT,GO,LOOK,NULL,
X     1 AXE,BEAR,BOAT,BOOK,BOOK2,BOOTH,CARVNG,CHASM,CHASM2,DOOR,GNOME,
X     2 GRATE,LAMP,PDOOR,PLANT,PLANT2,ROCKS,ROD,ROD2,SAFE,
X     3 TDOOR,TDOOR2,TROLL,TROLL2,EMRALD,SPICES,
X     4 FIND,YELL,INVENT,LEAVE,POUR,SAY,TAKE,THROW,
X     5 IWEST,PHUCE(2,4),TK(20)
X       COMMON /OBJCOM/ PLAC(150),FIXD(150),WEIGHT(150),PROP(150),
X     1          POINTS(150)
X       COMMON /PLACOM/ ATLOC(250),LINK(300),PLACE(150),
X     1          FIXED(150),MAXOBJ
X      CHARACTER*6 TXT
X       COMMON /UTXCOM/ WDX
X      CHARACTER*6 VTXT,OTXT,IOTXT,DTK,ATAB
X       COMMON /WRDCOM/ VERBS(45),VRBX,OBJS(45),
X     1  OBJX,IOBJS(15),IOBX,PREP,WORDS(45)
X       LOGICAL ATHAND,BLIND,HERE,HOLDNG,PLURAL
X       COMMON /SV3COM/DTK(9),ATAB(600),VTXT(45,2),OTXT(45,2),IOTXT(15,2)
X     1      ,TXT(35,2)
X
X
X       IF(HOLDNG(OBJ))RETURN
X       IF(BLIND(0))GOTO 280
X       IF(FIXED(OBJ).EQ.LOC.OR.ATHAND(OBJ))GOTO 290
X       IF(.NOT.HERE(OBJ))GOTO 205
X       K=335
X       IF(PLURAL(OBJ))K=373
X       OBJ=0
X       CALL RSPEAK(K)
X       RETURN
X
X205     IF(OBJ.NE.GRATE)GOTO 210
X       IF(LOC.EQ.1.OR.LOC.EQ.4.OR.LOC.EQ.7)OBJ=-DPRSSN
X       IF(LOC.GT.9.AND.LOC.LT.15)OBJ=-ENTRNC
X       IF(OBJ.EQ.GRATE)GOTO 280
X       RETURN
X
X210     IF(OBJ.NE.DWARF)GOTO 220
X      L1=DWFMAX-1
X       DO 212 I=1,L1
X       IF(DLOC(I).EQ.LOC.AND.DFLAG.GE.2)GOTO 290
X212     CONTINUE
X       GOTO 280
X
X220     IF(OBJ.EQ.LIQLOC(LOC).OR.
X     1  (ATHAND(BOTTLE).AND.LIQ(BOTTLE).EQ.OBJ).OR.
X     2  (ATHAND(CASK).AND.LIQ(CASK).EQ.OBJ))GOTO 290
X       IF(OBJ.NE.PLANT.OR..NOT.AT(PLANT2).OR.PROP(PLANT2).EQ.0)GOTO 230
X       OBJ=PLANT2
X       GOTO 290
X
X230     IF(OBJ.NE.ROCKS.OR..NOT.AT(CARVNG))GOTO 240
X       OBJ=CARVNG
X       GOTO 290
X
X240     IF(OBJ.NE.ROD.OR..NOT.ATHAND(ROD2))GOTO 250
X       OBJ=ROD2
X       GOTO 290
X
X250     IF(OBJ.NE.DOOR.OR..NOT.
X     1  (AT(SAFE).OR.AT(TDOOR).OR.AT(TDOOR2).OR.AT(PDOOR)))
X     2  GOTO 260
X       OBJ=TDOOR
X       IF(AT(TDOOR2))OBJ=TDOOR2
X       IF(AT(PDOOR))OBJ=PDOOR
X       IF(AT(SAFE))OBJ=SAFE
X       GOTO 290
X
X260     IF(OBJ.NE.BOOK.OR..NOT.ATHAND(BOOK2))GOTO 270
X       OBJ=BOOK2
X       GOTO 290
X
X270     IF(VERBS(VRBX).EQ.FIND.OR.VERBS(VRBX).EQ.INVENT)GOTO 290
X
XC  IT ISN'T HERE.  TELL HIM & RETURN.
X280     OBJ=0
X       CALL A5TOA1(TXT(WDX,1),TXT(WDX,2),'_here.',ZAPP,K)
X       WRITE(*,282)(ZAPP(I),I=1,K)
X282     FORMAT(/' I see no ',20A1)
X
X290     RETURN
X
X       END
X
X
X
X
X
XC***   GETWDS
X       SUBROUTINE GETWDS
X
XC  WHEN CALLED, CHECKS IF PREVIOUS WORDS VECTOR HAS BEEN EXHAUSTED.
XC  IF NOT, BRANCH AROUND THE CODE WHICH READS IN A NEW LINE.  IF VECTOR IS EMPTY
XC  SUCK UP A LINE FROM THE TTY, THEN CHECK EACH WORD FOR INTELLIGIBILITY.
XC  IF THE WORD IS VALID, ITS NUMBER GETS STUCK INTO THE WORDS VECTOR.
XC  THEN EACH WORD IS PARSED BY THE APPROPRIATE CODE.  THE LABELS BELOW ARE
XC  100 TIMES THE WORD CLASS.
XC
XC  THE FOLLOWING VECTORS ARE USED:
XC       TXT(WDX,2)              HOLD THE RAW TEXT FROM GETLIN
XC       WORDS(WDX)              LIST OF WORD NUMBERS, CONVERTED FROM TXT(WDX,1).
XC       VTXT(VRBX,2)            HOLD THE TEXT FOR VERB VRBX.
XC       VERBS(VRBX)             IS THE LIST OF VALIDATED VERB NUMBERS.
XC       OTXT(OBJX,2)            HOLDS THE TEXT OF THE OBJECT OBJX.
XC       OBJX(OBJX)              IS THE LIST OF VALIDATED OBJECT NUMBERS.
XC       IOTXT(IOBX,2)           HOLDS THE TEXT FOR PREP'S IOBJ.
X
X       IMPLICIT INTEGER(A-Z)
X       LOGICAL BLIND,LIVING,PCT,PFLAG,HINGED,AT,ATHAND,TOTING,K1,ISWIZ
X       LOGICAL KILLED
X      CHARACTER*6 WORD1,WORD2,DKK,DK
X      CHARACTER ZAPP(20)
X
X      COMMON/IZWIZ/ISWIZ
X       COMMON /ADJCOM/ ADJKEY(50),ADJTAB(150),ADJSIZ
X       COMMON /DIECOM/ NUMDIE,MAXDIE,TURNS,KILLED
X       COMMON /DWFCOM/ DWARF,KNIFE,KNFLOC,DFLAG,DSEEN(6),DLOC(6),
X     1  ODLOC(6),DWFMAX
X       COMMON /LIQCOM/ BOTTLE,CASK,WATER,OIL,WINE,LIQTYP(5)
X       COMMON /LOCCOM/ LOC,OLDLOC,OLDLC2,NEWLOC,MAXLOC
X       COMMON /MNECOM/ BACK,CAVE,DPRSSN,ENTRNC,EXIT,GO,LOOK,NULL,
X     1 AXE,BEAR,BOAT,BOOK,BOOK2,BOOTH,CARVNG,CHASM,CHASM2,DOOR,GNOME,
X     2 GRATE,LAMP,PDOOR,PLANT,PLANT2,ROCKS,ROD,ROD2,SAFE,
X     3 TDOOR,TDOOR2,TROLL,TROLL2,EMRALD,SPICES,
X     4 FIND,YELL,INVENT,LEAVE,POUR,SAY,TAKE,THROW,
X     5 IWEST,PHUCE(2,4),TK(20)
X       COMMON /PLACOM/ ATLOC(250),LINK(300),PLACE(150),
X     1          FIXED(150),MAXOBJ
X       COMMON /PRPCOM/ VKEY(60),PTAB(300),VKYSIZ,PTBSIZ
X      CHARACTER*6 TXT,DTK(9),ATAB
X       COMMON /UTXCOM/ WDX
X      CHARACTER*6 VTXT,OTXT,IOTXT
X       COMMON /WRDCOM/ VERBS(45),VRBX,OBJS(45),
X     1  OBJX,IOBJS(15),IOBX,PREP,WORDS(45)
X       DIMENSION TAKDIR(20)
X       COMMON /SV3COM/DTK,ATAB(600),VTXT(45,2),OTXT(45,2),IOTXT(15,2)
X     1      ,TXT(35,2)
X
XC            MOTION  NOUN  ACTION  MISC   PREP   ADJ    CONJ
X       DATA CLASSD,CLASSN,CLASSA,CLASSM,CLASSP,CLASSJ,CLASSC
X     1 /1,2,3,4,5,6,7/
XC
XC  A FEW MORE ACTION VERBS NOT IN COMMON.
X       DATA DROP,FEED,NOTHNG,LIGHT,DRINK,SCORE /02,21,05,07,15,24/
X       DATA PICK,PUT,GET /41,42,44/
XC
XC  AND A MOTION VERB:
X       DATA ENTER /3/
XC
XC  AND TO GET/DROP EVERYTHING IN SIGHT:
X       DATA ALL /109/
XC
XC  TAKDIR IS A LIST OF MOTION VERBS WHICH ARE ACCEPTABLE AFTER 'TAKE'.
X       DATA TAKDIR/2,6,9,10,11,13,14,17,23,25,33,34,
X     1                  36,37,39,78,79,80,89,-1/
XC
XC  IF WORDS(WDX+1) HAS SOMETHING IN IT, WE ARE STILL PROCESSING OLD INPUT LINE.
XC  IF WORDS(1) = -2, SOMEONE ELSE HAS CALLED GETLIN (E.G., KILL DRAGON).
X
X       POUR = 13
X       IF(WORDS(WDX+1).GT.0)GOTO 30
X
XC  IF WORDS(1) HAS BEEN SET TO -2, SOMEONE ELSE HAS ALREADY READ IN
XC  THE NEW LINE, PRESUMABLY TO CHECK FOR SOME NON-STANDARD WORD.
XC  (THIS HAPPENS WHEN KILLING DRAGON WITH BARE HANDS.)
X20      IF(WORDS(1).NE.-2)CALL GETLIN
X       WDX=0
X       DO 25 I=1,35
X       WORDS(I)=0
X       IF(TXT(I,1).NE.'      ')WORDS(I)=VOCABX(TXT(I,1),-1)
X25      CONTINUE
X
XC  THE FIRST WORD OF EACH CLAUSE GETS SPECIAL CHECKING, MOSTLY LOOKING
XC  FOR IDIOMS.
X
XC  SPECIAL HANDLING FOR 'SAY' AND 'CALL'.  WIN IF SAYING/CALLING
XC  MAGIC WORDS.  NARKY IF UTTERING ANYTHING ELSE.  IF NO OBJ, PASS
XC  ON FOR HIGHER LEVEL PARSING.
X30      PFLAG=.FALSE.
X       WDX=WDX+1
X       WORD=WORDS(WDX)
X       IF(WORD)830,800,32
X
X32      KK=CLASS(WORD)
X       IF(KK.EQ.-1)GOTO 91
X       IF(KK.EQ.CLASSA.OR.KK.EQ.CLASSD.OR.KK.EQ.CLASSM)CALL CLRLIN
X       K=VAL(WORD)
X       IF(KK.NE.CLASSA.OR.(K.NE.SAY.AND.K.NE.YELL))GOTO 40
X
XC  'SAY' OR 'CALL'.  IF NO NEXT WORD, PASS ON TO HIGHER POWERS.
XC  IF OBJECT IS MAGIC WORD ('SAY XYZZY'), FLUSH 'SAY' & TAKE NEXT WORD.
X       IF(WORDS(WDX+1).EQ.0.OR.CLASS(WORDS(WDX+1)).EQ.CLASSC)GOTO 99
X       WDX=WDX+1
X       IF(K.EQ.SAY)CALL A5TOA1(TXT(WDX,1),TXT(WDX,2),'".    ',ZAPP,K)
X       IF(K.EQ.YELL)CALL A5TOA1(TXT(WDX,1),TXT(WDX,2),'"!!!!!',ZAPP,K)
X       WORD=WORDS(WDX)
X       IF(WORD.EQ.62.OR.WORD.EQ.65.OR.WORD.EQ.71.OR.WORD.EQ.82
X     1  .OR.WORD.EQ.2025)GOTO 99
X       WRITE(*,37)(ZAPP(I),I=1,K)
X37      FORMAT(/' Okay, "',20A1)
X       GOTO 860
X
XC  SPECIAL STUFF FOR 'ENTER'.  CAN'T GO INTO WATER.
XC  'ENTER BOAT' MEANS 'TAKE BOAT'.
X40      WORD1=TXT(WDX,1)
X       WORD2=TXT(WDX+1,1)
X       IF(WORD1.NE.'ENTER ')GOTO 50
X       IF(WORD2.EQ.'      ')GOTO 91
X       SPK=43
X       IF(LIQLOC(LOC).EQ.WATER)SPK=70
X       IF(WORD2.EQ.'STREAM'.OR.WORD2.EQ.'WATER '.OR.WORD2.EQ.
X     1  'RESERV'.OR.WORD2.EQ.'OCEAN '.OR.WORD2.EQ.'SEA   '
X     2  .OR.WORD2.EQ.'POOL  ')GOTO 810
X       IF(WORD2.NE.'BOAT  '.AND.WORD2.NE.'ROWBOA')GOTO 99
X       WORD=TAKE+2000
X       GOTO 99
X
XC  'LEAVE' IS A MOTION VERB, UNLESS LEAVING AN OBJECT,
XC  E.G., 'LEAVE BOAT' OR 'LEAVE BOTTLE'.  BUT MAKE SURE TO LEAVE ('DROP')
XC  ONLY TOTABLE OBJECTS.
X50      KK=WORDS(WDX+1)
X       IF(WORD1.NE.'LEAVE '.OR.CLASS(KK).NE.CLASSN)
X     1  GOTO 55
X       IF(HINGED(VAL(KK)).OR.FIXED(VAL(KK)).NE.0)GOTO 99
X       WORD=LEAVE+2000
X       GOTO 99
X
XC  IF 'LIGHT LAMP', LIGHT MUST BE TAKEN AS AN ACTION VERB, NOT A NOUN.
X55      IF(WORD1.NE.'LIGHT'.OR.WORDS(WDX+1).NE.(LAMP+1000))GOTO 60
X       WORD=LIGHT+2000
X       GOTO 99
X
XC  'WATER PLANT' BECOMES 'POUR WATER', IF WE ARE AT PLANT.
XC  'OIL DOOR' BECOMES 'POUR OIL', ETC., ETC.
X60      IF((WORD1.NE.'WATER '.AND.WORD1.NE.'OIL   ')
X     1  .OR.(WORD2.NE.'PLANT '.AND.WORD2.NE.'DOOR  '
X     2     .AND.WORD2.NE.'SWORD '.AND.WORD2.NE.'ANVIL '))GOTO 65
X       IF(.NOT.AT(VOCABX(WORD2,CLASSN)))GOTO 61
X       WORDS(WDX+1)=WORDS(WDX)
X       TXT(WDX+1,1)=WORD1
X       TXT(WDX+1,2)=TXT(WDX,2)
X61      WORD=POUR+2000
X       GOTO 99
X
XC  CHECK FILLING OR EMPTYING A CONTAINER.
X65      IF((WORD1.NE.'EMPTY ').OR.
X     1  (CLASS(WORDS(WDX+1)).NE.CLASSN))GOTO 91
X       KK=VAL(WORDS(WDX+1))
XC      IF(KK.NE.SACK.AND.KK.NE.SAFE.AND.KK.NE.BOAT.AND.KK.NE.CHEST)
XC    1  GOTO 91
XC  *** UNFINISHED CODE HERE ***
XC    ALL THAT ACTUALLY HAPPENS IS OFF ERROR MESSAGES. THE STOOGE
XC    SIMPLY CAN'T SAY 'EMPTY SACK OR 'TAKE ALL FROM SACK' ETC
X            GOTO 91
X
X
XC  THIS IS THE 'INNER' LOOP.  DISPATCHING OF ALL WORDS IN A CLAUSE AFTER
XC  THE FIRST COMES THRU HERE.
X
X90      WDX=WDX+1
X       WORD=WORDS(WDX)
X91      IF(WORD)830,900,92
X
X96      WCLASS=WCLASS+1
X       WORD=VOCABX(TXT(WDX,1),-(WCLASS+1))
X       IF(WORD.EQ.-1)GOTO 800
X       WORDS(WDX)=WORD
X92      IF(CLASS(WORD).NE.CLASSN)GOTO 99
X
XC  IT'S NOT THE FIRST: MAKE SURE HE INCLUDED A COMMA OR 'AND'.
XC  DIFFERENTIATE BETWEEN DIR & INDIR OBJECTS.
XC  CHECK FOR SPECIAL CASE OF MULTIPLE OBJECTS: 'FEED BEAR HONEY' OR
XC  'THROW TROLL NUGGET'.
X       K=OBJX
X       IF(PFLAG)K=IOBX
X       IF(K.EQ.0.OR.CLASS(WORDS(WDX-1)).EQ.CLASSC)GOTO 99
X       KK=VAL(VERBS(VRBX))
X       IF(.NOT.LIVING(OBJS(OBJX)).OR.(KK.NE.THROW.AND.KK.NE.FEED))
X     1  GOTO 800
X       IOBX=IOBX+1
X       IOBJS(IOBX)=OBJS(OBJX)
X       OBJS(OBJX)=0
X       OBJX=OBJX-1
X
X99      WCLASS=CLASS(WORD)
X       GOTO(100,200,300,400,500,600,700),WCLASS
XC            MWD OBJ AVB MVB PRP ADJ CNJ
X       CALL BUG(33)
XC  MOTION VERB.
XC  A MOTION VERB IS EITHER A DIRECTION ('WEST') OR A MOTION ('JUMP').
XC  MULTIPLE MOTIONS MUST BE SEPARATED BY COMMAS OR AND'S.  THERE ARE
XC  SOME IDIOMATIC USES WHICH MUST BE SCANNED FOR, SUCH AS 'TAKE BRIDGE',
XC  WHICH BECOMES 'BRIDGE' AND 'GO WEST', WHICH BECOMES 'WEST', AND 'LEAVE THING'
XC  IS DIFFERENT FROM JUST 'LEAVE'.
XC
XC  IF ORIGINAL VERB WAS 'GO', FLUSH IT & REPLACE WITH THIS ONE.
XC  I.E., 'GO WEST' BECOMES 'WEST'.
XC
XC  CHECK TAKDIR(20) LIST FOR VALID OBJECT MOTION VERBS FOR 'TAKE'.
XC  IF FOUND, THROW AWAY 'TAKE' AND USE THE MOTION VERB.
XC
XC  SINCE THE ORIGINAL VERB IS AN ACTION VERB, CHECK THIS WORD IN THE
XC  NOUN TABLE.  MAYBE IT IS AN OBJECT SYNONYMOUS WITH A VERB ('ROCKS').
XC
XC  IF IT ISN'T A VALID MOTION-OBJECT OF 'TAKE' OR 'GO', NOR AN OBJECT,
XC  CHECK THE PREP TABLE.  IF FOUND, HAND IT TO THE PREPOSITION ANALYZER.
X
X100     IF(VRBX.EQ.0)GOTO 180
X       K=VERBS(VRBX)
X       IF(CLASS(K).GT.CLASSA)GOTO 800
X       IF(CLASS(K).NE.CLASSA)GOTO 140
X       IF(VAL(K).EQ.GO)GOTO 180
X
X       IF(VAL(K).NE.TAKE)GOTO 96
X       KK=VAL(WORD)
X       DO 110 I=1,20
X       IF(TAKDIR(I).EQ.KK)GOTO 180
X110     CONTINUE
X       GOTO 96
X
XC  IF ORIGINAL MOTION VERB WAS CRAWL, JUMP OR CLIMB, IGNORE CURRENT WORD.
XC  I.E., 'CLIMB UP' OR 'JUMP OVER' BECOME 'CLIMB' & 'JUMP' ONLY.
X140     IF(K.EQ.17.OR.K.EQ.39.OR.K.EQ.56)GOTO 90
XC            'CRAWL'     'JUMP'    'CLIMB'
X
X180     VERBS(1)=WORD
X       VRBX=1
X       IF(TXT(WDX,1).NE.'WEST  ')GOTO 90
X       IWEST=IWEST+1
X       IF(IWEST.EQ.10)CALL RSPEAK(17)
X       K=VAL(WORD)
X       IF(K.EQ.EXIT.OR.K.EQ.ENTER)GOTO 860
X       GOTO 90
XC  ANALYZE OBJECT.
XC  IF PFLAG IS TRUE, THEN WE ARE PROCESSING A SET OF INDIRECT (PREP)
XC  OBJECTS, NOT DIRECT OBJS.
X
X200     IF(PFLAG)GOTO 503
X       IF(VRBX.NE.0)GOTO 220
X       K=VOCABX(TXT(WDX,1),-(CLASSA+1))
X       IF(K.EQ.-1)GOTO 220
X       WORD=K
X       GOTO 300
X
X220     WORD=VAL(WORD)
X       IF(WORD.EQ.ALL)GOTO 280
X222     CALL GETOBJ(WORD)
X       IF(WORD)230,860,240
X
XC  IT WASN'T REALLY AN OBJECT.  GO SEE WHAT IT WAS.
X230     WORD=-WORD
X       GOTO 99
X
XC  IT WAS REALLY AN OBJECT & IT IS HERE.
X240     OBJX=OBJX+1
X       OBJS(OBJX)=WORD
X       OTXT(OBJX,1)=TXT(WDX,1)
X       OTXT(OBJX,2)=TXT(WDX,2)
X       GOTO 90
X
XC  TAKE EVERYTHING NOT BATTENED DOWN.
X
X280     KK=VAL(VERBS(VRBX))
X       K1=.FALSE.
X       IF(KK.EQ.DROP.OR.KK.EQ.PUT.OR.KK.EQ.LEAVE)GOTO 281
X       K1=.TRUE.
X       IF(KK.NE.TAKE.AND.KK.NE.PICK.AND.KK.NE.GET)GOTO 800
X       SPK=357
X       IF(BLIND(0))GOTO 810
X281     DO 289 I=1,MAXOBJ
X       IF(.NOT.ATHAND(I).OR.FIXED(I).NE.0)GOTO 289
X       IF(I.GE.WATER.AND.I.LE.WINE+1)GOTO 289
X       IF((K1.AND.TOTING(I)) .OR. (.NOT.K1.AND..NOT.TOTING(I)) )GOTO 289
X       OBJX=OBJX+1
X       OBJS(OBJX)=I
XC       OTXT(OBJX,1)=NTXT(I,1)
XC       OTXT(OBJX,2)=NTXT(I,2)
X	OTXT(OBJX,1)='BUG???'
X	OTXT(OBJX,2)='      '
X       IF(OBJX.EQ.44)GOTO 90
X289     CONTINUE
X       GOTO 90
XC  ACTION VERB.
X300     IF(VRBX.EQ.0)GOTO 370
X       IF(VAL(VERBS(VRBX)).NE.TAKE)GOTO 320
X       K=VAL(WORD)
X       IF(K.EQ.DRINK.OR.K.EQ.INVENT.OR.K.EQ.SCORE.OR.K.EQ.NOTHNG
X     1  .OR.K.EQ.LOOK)GOTO 371
X       IF(K.NE.GO)GOTO 800
X       DK=TXT(WDX,1)
X       IF(DK.EQ.'WALK  '.OR.DK.EQ.'RUN   '.OR.DK.EQ.'HIKE  ')
X     1  GOTO 371
X       GOTO 800
X
X320     IF(OBJX.NE.0.OR.CLASS(WORDS(WDX-1)).NE.CLASSC)GOTO 800
X370     VRBX=VRBX+1
X371     VERBS(VRBX)=WORD
X       VTXT(VRBX,1)=TXT(WDX,1)
X       VTXT(VRBX,2)=TXT(WDX,2)
X       GOTO 90
X
X
XC  MISCELLANEOUS WORDS/VERBS.
X400     IF(VRBX.NE.0)GOTO 800
X       VERBS(1)=WORD
X       VRBX=1
X       GOTO 90
XC  ANALYZE A PREPOSITION AND ITS OBJECT.  CHECK THAT PREP
XC  IS VALID FOR THIS VERB, AND THEN CHECK THAT THE OBJECT IS VALID
XC  FOR THIS PREPOSITION.  IF FIRST CHECK FAILS, SYNTAX IS MESSED
XC  UP; IF SECOND PART FAILS, IT MAY MERELY BE AN IMPOSSIBLE ACT.
X
X500     IF(CLASS(VERBS(VRBX)).NE.CLASSA.OR.IOBX.NE.0)GOTO 800
X       IF(PFLAG)GOTO 503
X       VRBKEY=VKEY(VAL(VERBS(VRBX)))
X       IF(VRBKEY.EQ.0)GOTO 800
X       PREP=VAL(WORD)
X       PFLAG=.TRUE.
X       WDX=WDX+1
X       WORD=WORDS(WDX)
X       IF(WORD.EQ.0)GOTO 510
X       GOTO(800,503,800,800,800,600,510),CLASS(WORD)
X       GOTO 840
X
X503     WORD=VAL(WORD)
X       IF(WORD.EQ.ALL)GOTO 510
X504     CALL GETOBJ(WORD)
X       IF(WORD)570,860,505
X
X505     IOBX=IOBX+1
X       IOBJS(IOBX)=WORD
X       IOTXT(IOBX,1)=TXT(WDX,1)
X       IOTXT(IOBX,2)=TXT(WDX,2)
X510     KK=IABS(PTAB(VRBKEY)/1000)
X       IF(KK.NE.PREP)GOTO 525
X
XC  PREP IS VALID WITH THIS VERB.  NOW CHECK OBJECT OF PREP.
X       IF(WORD.EQ.0.OR.CLASS(WORD).EQ.CLASSC)GOTO 530
X
XC  AN OBJ FOLLOWS THE PREP.  SEE IF IT'S PLAUSIBLE.
X520     KK=IABS((MOD(PTAB(VRBKEY),0001000)))
X       IF(KK.EQ.WORD.AND.KK.EQ.ALL)GOTO 280
X       IF(KK.EQ.WORD.OR.KK.EQ.999)GOTO 90
X525     VRBKEY=VRBKEY+1
X       IF(PTAB(VRBKEY-1).GE.0)GOTO 510
X       GOTO 570
X
XC  NO OBJ FOLLOWS PREP.  CHECK SPECIAL CASES.
X530     PFLAG=.FALSE.
X       WDX=WDX-1
X       DK=TXT(WDX,1)
X       DKK=VTXT(VRBX,1)
X       IF((DK.NE.'ON    '.AND.DK.NE.'OFF   ').AND.
X     1 (DKK.NE.'TURN  '.OR.OBJS(OBJX).NE.LAMP) .AND.
X     2 (DKK.NE.'TAKE  '.AND.DKK.NE.'PUT   ') )GOTO 570
X       IF((DK.EQ.'UP    '.AND.DKK.NE.'PICK  ').OR.
X     1 (DK.EQ.'DOWN  '.AND.(DKK.NE.'PUT   '.AND.VERBS(VRBX).NE.THROW
X     2 )))GOTO 570
X       WDX=WDX+1
X       WORD=WORDS(WDX)
X       IF(WORD.EQ.0)GOTO 900
X       IF(CLASS(WORD).NE.CLASSC)GOTO 800
X       GOTO 91
X
XC  YOU CAN'T DO THAT!!
X570     SPK=NOWAY(0)
X       GOTO 810
XC  ADJECTIVE HANDLER.
XC  SCARF THE NEXT WORD, MAKE SURE IT IS A VALID OBJECT FOR THIS ADJ.
XC  THEN CALL GETOBJ TO SEE IF IT IS REALLY THERE, THEN LINK INTO OBJ
XC  CODE.
X
X600     ADJ=VAL(WORD)
X       WDX=WDX+1
X       WORD=WORDS(WDX)
X       IF(WORD)840,640,605
X
X605     IF(CLASS(WORD).EQ.CLASSC) GOTO 640
X       IF(CLASS(WORD).NE.CLASSN) WORD=VOCABX(TXT(WDX,1),-(CLASSN+1))
X       IF(WORD.EQ.-1.OR.CLASS(WORD).NE.CLASSN.OR.VAL(WORD).EQ.ALL)
X     1  GOTO 800
X       WORDS(WDX)=WORD
X       KK=VAL(WORD)
X       K=ADJKEY(ADJ)
X610     IF(KK.EQ.IABS(ADJTAB(K)))GOTO 92
X       IF(ADJTAB(K).LT.0)GOTO 800
X       K=K+1
X       GOTO 610
X
X640     CALL A5TOA1(TXT(WDX-1,1),TXT(WDX-1,2),'_WHAT?',ZAPP,K)
X       WRITE(*,642)(ZAPP(I),I=1,K)
X642     FORMAT(1X, 20A1)
X       GOTO 20
X
X
XC  ANALYZE A CONJUNCTION.  MAY BE A COMMA OR AN EXPLICIT "AND".
XC  LOOK AHEAD AT NEXT WORD.  IF IT IS AN ACTION VERB AND NO OBJECT
XC  HAS YET BEEN SPECIFIED, PUT IT INTO THE VERB STACK.  IF IT IS
XC  AN OBJECT, ADD IT TO THE PILE.
XC  ELSE, BUMP BACK THE WORD POINTER, ASSUME END OF CLAUSE, AND
XC  RETURN.
X700     WDX=WDX+1
X       WORD=WORDS(WDX)
X       IF(WORD)840,800,710
X
X710     GOTO(790,92,720,790,800,92,800),CLASS(WORD)
X
XC  A NEW ACTION VERB FOLLOWS.  IF NO PREVIOUS VERB HAS BEEN TYPED,
XC  HE LOSES.  IF PREVIOUS VERB IS NOT AN ACTION VERB, HE LOSES.
XC  IF AN OBJ/IOBJ WAS SPECIFIED FOR PREV ACT VERB, HE LOSES.  ONLY
XC  VALID SYNTAX IS: 'GET AND OPEN CAGE'.
X720     IF(VRBX.NE.0.AND.CLASS(VERBS(VRBX)).EQ.CLASSA
X     1  .AND.OBJX.EQ.0.AND.IOBX.EQ.0)GOTO 92
X790     WDX=WDX-1
X       GOTO 900
XC  GEE, I DON'T UNDERSTAND.  FLUSH REST OF CURRENT CLAUSE, UP TO
XC  EOL OR CONJUNCTION & CONTINUE.
X800     SPK=CONFUZ(0)
X810     CALL RSPEAK(SPK)
X820     CALL CLRLIN
X       GOTO 20
X
XC  AN IRREGULAR WORD WAS TYPED IN BY USER.  CHECK FOR WIZARDRY.
X830     CONTINUE
X
X840     CONTINUE
X841     IF(PCT(25))GOTO 850
X       CALL A5TOA1(TXT(WDX,1),TXT(WDX,2),'.     ',ZAPP,K)
X       WRITE(*,842)(ZAPP(I),I=1,K)
X842     FORMAT(/' I don''t understand the word ',20A1)
X       CALL CLRLIN
X       GOTO 20
X
X850     CALL A5TOA1(TXT(WDX,1),TXT(WDX,2),'?     ',ZAPP,K)
X       WRITE(*,852)(ZAPP(I),I=1,K)
X852     FORMAT(/' Mumble?  ',20A1)
X       CALL CLRLIN
X       GOTO 20
X
X
XC  SCAN TO CONJ OR END OF LINE.
X860     CALL CLRLIN
X       PFLAG=.FALSE.
X862     WDX=WDX+1
X       IF(WORDS(WDX).EQ.0)GOTO 20
X       IF(CLASS(WORDS(WDX)).EQ.CLASSC)GOTO 90
X       GOTO 862
X
XC  END OF CLAUSE.  WE APPEAR TO HAVE REACHED THE END OF A SENTENCE.
XC  IT WAS TERMINATED EITHER BY CRLF OR A CONJUNCTION.  IF A CONJ,
XC  THE CONJ ANALYZER CLAIMS  THAT THE NEXT WORDS ARE NOT PART OF
XC  THIS CLAUSE.  DECIDE WHETHER OR NOT WE HAVE ENOUGH TO WORK WITH.
X900     PFLAG=.FALSE.
X       IF(VERBS(1).NE.0)GOTO 930
X       IF(OBJS(1).EQ.0)GOTO 800
X       IF(OBJS(2).NE.0)GOTO 920
X       CALL A5TOA1(OTXT(1,1),OTXT(1,2),'?     ',ZAPP,K)
X       WRITE(*,915)(ZAPP(I),I=1,K)
X915     FORMAT(/' What do you want to do with the ',20A1)
X       GOTO 20
X
X920    WRITE(*,*)' What do you want to do with them'
X       GOTO 20
X
X930     IF(OBJX.GT.1.AND.IOBX.GT.1)GOTO 800
X       RETURN
X
X       END
X
X
X
X
X
XC***  HERE   .TRUE. IF OBJ AT THIS LOCATION
X
X
X       LOGICAL FUNCTION HERE(OBJ)
X
XC  HERE(OBJ)    = TRUE IF THE OBJ IS AT "LOC" (OR IS BEING CARRIED)
X
X       IMPLICIT INTEGER(A-Z)
X       COMMON /LOCCOM/ LOC,OLDLOC,OLDLC2,NEWLOC,MAXLOC
X       COMMON /PLACOM/ ATLOC(250),LINK(300),PLACE(150),
X     1          FIXED(150),MAXOBJ
X       LOGICAL TOTING
X       HERE = .FALSE.
X       IF(OBJ.LT.1.OR.OBJ.GT.MAXOBJ)RETURN
X       HERE=PLACE(OBJ).EQ.LOC.OR.TOTING(OBJ)
X       RETURN
X       END
X
X
X
X
X
XC***  HINGED .TRUE. IF OBJ CAN BE OPENED
X
X
X       LOGICAL FUNCTION HINGED(OBJ)
X
XC  HINGED(OBJ)  = TRUE IF OBJECT CAN BE OPENED/SHUT.
X
X       IMPLICIT INTEGER(A-Z)
X       LOGICAL BITSET
X       COMMON /CONCOM/ LOCCON(250),OBJCON(150)
X
X      HINGED=BITSET(OBJCON(OBJ),1)
X
X       RETURN
X       END
X
X
X
X
XC***  HOLDNG .TRUE. IF HOLDING OBJ
X
X
X       LOGICAL FUNCTION HOLDNG(OBJ)
X
XC  HOLDNG(OBJ)  = TRUE IF THE OBJ IS BEING CARRIED IN HAND.
X
X       IMPLICIT INTEGER(A-Z)
X       COMMON /PLACOM/ ATLOC(250),LINK(300),PLACE(150),
X     1          FIXED(150),MAXOBJ
X       HOLDNG = .FALSE.
X       IF(OBJ.LT.1.OR.OBJ.GT.MAXOBJ)RETURN
X       HOLDNG=PLACE(OBJ).EQ.-1
X       RETURN
X       END
X
X
X
X
X
X
X
XC***   INSERT
X
X       SUBROUTINE INSERT(OBJECT,CONTNR)
X
X       IMPLICIT INTEGER(A-Z)
X       COMMON /HLDCOM/ HOLDER(150),HLINK(150)
X       COMMON /LOCCOM/ LOC,OLDLOC,OLDLC2,NEWLOC,MAXLOC
X       COMMON /PLACOM/ ATLOC(250),LINK(300),PLACE(150),
X     1          FIXED(150),MAXOBJ
X
X       IF(CONTNR.EQ.OBJECT)CALL BUG(32)
X       CALL CARRY(OBJECT,LOC)
X
X       TEMP=HOLDER(CONTNR)
X       HOLDER(CONTNR)=OBJECT
X       HLINK(OBJECT)=TEMP
X       PLACE(OBJECT)=-CONTNR
X       RETURN
X
X       END
XC***   INSIDE .TRUE. IF LOCATION IS WELL WITHIN THE CAVE
X
X
X       LOGICAL FUNCTION INSIDE(LOC)
X
XC  INSIDE(LOC)  = TRUE IF LOCATION IS WELL WITHIN THE CAVE
X
X       IMPLICIT INTEGER(A-Z)
X       LOGICAL OUTSID,PORTAL
X       INSIDE=.NOT.OUTSID(LOC).AND..NOT.PORTAL(LOC)
X       RETURN
X       END
X
X
X
X
X
X
X
X
XC***   JUGGLE
X
X       SUBROUTINE JUGGLE(OBJECT)
X
XC  JUGGLE AN OBJECT BY PICKING IT UP AND PUTTING IT DOWN AGAIN, THE PURPOSE
XC  BEING TO GET THE OBJECT TO THE FRONT OF THE CHAIN OF THINGS AT ITS LOC.
X
X       IMPLICIT INTEGER(A-Z)
X       COMMON /PLACOM/ ATLOC(250),LINK(300),PLACE(150),
X     1          FIXED(150),MAXOBJ
X
X       I=PLACE(OBJECT)
X       J=FIXED(OBJECT)
X       CALL MOVE(OBJECT,I)
X       CALL MOVE(OBJECT+MAXOBJ,J)
X       RETURN
X       END
X
X
X
XC***   LIQ
X
X
X       INTEGER FUNCTION LIQ(OBJ)
X       IMPLICIT INTEGER(A-Z)
X       COMMON /LIQCOM/ BOTTLE,CASK,WATER,OIL,WINE,LIQTYP(5)
X       COMMON /OBJCOM/ PLAC(150),FIXD(150),WEIGHT(150),PROP(150),
X     1          POINTS(150)
X
XC       LIQ=LIQ2(MAX0(PROP(OBJ),-1-PROP(OBJ)))
X       LIQ = 0
X       IF(OBJ.NE.BOTTLE.AND.OBJ.NE.CASK)RETURN
X          IQ = MAX0(PROP(OBJ)+1,-1-(PROP(OBJ)+1))
X          IF(IQ.LE.0)RETURN
X          LIQ=LIQTYP(IQ)
X       RETURN   
X       END
X
X
X
X
X
XC***   LIQ2
XC  NON-LOGICAL (ILLOGICAL?) FUNCTIONS (CLASS,LIQ,LIQ2,LIQLOC,VAL)
X
X       INTEGER FUNCTION LIQ2(PBOTL)
X       IMPLICIT INTEGER(A-Z)
X       COMMON /LIQCOM/ BOTTLE,CASK,WATER,OIL,WINE,LIQTYP(5)
X
X       LIQ2=(1-PBOTL)*WATER+(PBOTL/2)*(WATER+OIL)+(PBOTL/4)
X     1  *(WATER+WINE-2*OIL)
X       RETURN
X       END
X
X
X
X
X
X
X
X
X
XC***   LIQLOC
X
X       INTEGER FUNCTION LIQLOC(LOC)
X       IMPLICIT INTEGER(A-Z)
X       COMMON /LIQCOM/ BOTTLE,CASK,WATER,OIL,WINE,LIQTYP(5)
X      INTEGER WRD(2)
X       COMMON /CONCOM/ LOCCON(250),OBJCON(150)
X      EQUIVALENCE (LOCCON,WRD)
XC      CALL TOOCT(LOCCON(LOC))
XC      CALL TOOCT(WRD(LOC*2))
X
X       LIQLOC=LIQ2((MOD(LOCCON(LOC)/8,2)*(MOD(LOCCON(LOC)/2*2,16)-9)
X     1  +1))
X
X       RETURN
X       END
X
X
X
XC***  LIVING .TRUE. IF OBJ IS LIVING, BEAR FOR EXAMPLE
X
X
X       LOGICAL FUNCTION LIVING(OBJ)
X
XC  LIVING(OBJ)  = TRUE IF OBJ IS SOME SORT OF CRITTER
X
X       IMPLICIT INTEGER(A-Z)
X       LOGICAL BITSET
X       COMMON /CONCOM/ LOCCON(250),OBJCON(150)
X
X      LIVING=BITSET(OBJCON(OBJ),9)
X
X       RETURN
X       END
X
X
X
X
XC***   LOCKED  .TRUE. IF LOCKABLE OBJ IS LOCKED
X
X      LOGICAL FUNCTION LOCKED(OBJ)
X      IMPLICIT INTEGER(A-Z)
X      LOGICAL BITSET
X      COMMON/CONCOM/LOCCON(250),OBJCON(150)
X      LOCKED=BITSET(OBJCON(OBJ),4)
X      RETURN
X      END
X
XC***   LOCKS  .TRUE. IF YOU CAN LOCK THIS OBJ
X
X      LOGICAL FUNCTION LOCKS(OBJ)
X      IMPLICIT INTEGER(A-Z)
X      LOGICAL BITSET
X      COMMON/CONCOM/LOCCON(250),OBJCON(150)
X      LOCKS=BITSET(OBJCON(OBJ),3)
X      RETURN
X      END
X
X
X
X
X
X
XC***   LOOKIN
X
X       SUBROUTINE LOOKIN(CONTNR)
X
XC  LIST CONTENTS IF OBJ IS A CONTAINER AND IS OPEN OR TRANSPARENT.
XC  SAVE INITIAL VALUE OF BLKLIN THRU SUBROUTINE.
X
X       IMPLICIT INTEGER(A-Z)
X       COMMON /BLKCOM/ BLKLIN
X       COMMON /HLDCOM/ HOLDER(150),HLINK(150)
X       LOGICAL VESSEL,AJAR,OPAQUE,BLKLIN,BSAVE
X       DIMENSION TK(20)
X
X       IF(.NOT.VESSEL(CONTNR).OR.
X     1  (.NOT.AJAR(CONTNR).AND.OPAQUE(CONTNR)) )RETURN
X       TEMP=HOLDER(CONTNR)
X       LOOP=0
X       BSAVE=BLKLIN
X20      IF(TEMP.EQ.0)RETURN
X       BLKLIN=.FALSE.
X       IF(LOOP.EQ.0)CALL RSPEAK(360)
X       CALL TNOUA
X       CALL PSPEAK(TEMP,-1)
X       BLKLIN=BSAVE
X       TEMP=HLINK(TEMP)
X       LOOP=-1
X       GOTO 20
X
X       END
X
X
X
X       SUBROUTINE MOVE(OBJECT,WHERE)
X
XC  PLACE ANY OBJECT ANYWHERE BY PICKING IT UP AND DROPPING IT.  MAY ALREADY BE
XC  TOTING, IN WHICH CASE THE CARRY IS A NO-OP.  MUSTN'T PICK UP OBJECTS WHICH
XC  ARE NOT AT ANY LOC, SINCE CARRY WANTS TO REMOVE OBJECTS FROM ATLOC CHAINS.
X
X       IMPLICIT INTEGER(A-Z)
X       COMMON /PLACOM/ ATLOC(250),LINK(300),PLACE(150),
X     1          FIXED(150),MAXOBJ
X      LOGICAL ENCLSD
X
X       IF(OBJECT.GT.MAXOBJ)THEN
X              FROM=FIXED(OBJECT-MAXOBJ)
X       ELSE
X              IF(ENCLSD(OBJECT))CALL REMOVE(OBJECT)
X              FROM=PLACE(OBJECT)
X       ENDIF
X       IF(FROM.GT.0.AND.FROM.LE.MAXOBJ*2)CALL CARRY(OBJECT,FROM)
X       CALL DROP(OBJECT,WHERE)
X       RETURN
X       END
X
X
X
X
X
X
XC***   NOWAY
X
X
X       INTEGER FUNCTION NOWAY(DUMMY)
X
XC  GENERATE'S SOME VARIANT OF "CAN'T DO THAT" MESSAGE.
X
X       IMPLICIT INTEGER(A-Z)
X      LOGICAL PCT
X
X       NOWAY=14
X       IF(PCT(50))NOWAY=110
X       IF(PCT(33))NOWAY=147
X       IF(PCT(25))NOWAY=250
X       IF(PCT(20))NOWAY=262
X       IF(PCT(17))NOWAY=25
X       IF(PCT(14))NOWAY=345
X       IF(PCT(12))NOWAY=346
X       RETURN
X       END
X
X
X
X
X
X
XC***  OPAQUE .TRUE. IF OBJ IS NON-TRANSPARENT CONTAINER
X
X
X       LOGICAL FUNCTION OPAQUE(OBJ)
X
XC  OPAQUE(OBJ)  = TRUE IF OBJECT IS NOT TRANSPARENT.  E.G., BAG & CHEST ARE OPAQ
XC                 WICKER CAGE & GLASS BOTTLE ARE TRANSPARENT.
X
X       IMPLICIT INTEGER(A-Z)
X       LOGICAL BITSET
X       COMMON /CONCOM/ LOCCON(250),OBJCON(150)
X
X      OPAQUE=BITSET(OBJCON(OBJ),6)
X
X       RETURN
X       END
X
XC***   OUTSID .TRUE. IF LOCATION IS OUTSIDE THE CAVE
X
X
X       LOGICAL FUNCTION OUTSID(LOC)
X
XC  OUTSID(LOC)  = TRUE IF LOCATION IS OUTSIDE THE CAVE
X
X       IMPLICIT INTEGER(A-Z)
X       LOGICAL BITSET
X       COMMON /CONCOM/ LOCCON(250),OBJCON(150)
X
X       OUTSID=BITSET(LOCCON(LOC),6)
X
X       RETURN
X       END
X
X
X
X
XC***   PCT
X
X
X      LOGICAL FUNCTION PCT(N)
X
XC  PCT(N)       = TRUE N% OF THE TIME (N INTEGER FROM 0 TO 100)
X
X       IMPLICIT INTEGER(A-Z)
X       PCT=RANZ(100).LT.N
X       RETURN
X       END
X
X
X
X
X
X
XC***  PLURAL .TRUE. IF OBJ IS MULTIPLE OBJS
X
X
X       LOGICAL FUNCTION PLURAL(OBJ)
X
XC  PLURAL(OBJ)  = TRUE IF OBJECT IS A "BUNCH" OF THINGS (COINS, SHOES).
X
X       IMPLICIT INTEGER(A-Z)
X       LOGICAL BITSET
X       COMMON /CONCOM/ LOCCON(250),OBJCON(150)
X
X      PLURAL=BITSET(OBJCON(OBJ),13)
X
X       RETURN
X       END
X
X
X
X
X
X
XC***   PORTAL .TRUE. IF LOCATION IS IN CAVE ENTRANCE
X
X
X       LOGICAL FUNCTION PORTAL(LOC)
X
XC  PORTAL(LOC)  = TRUE IS LOCATION IS IN CAVE "ENTRANCE"
X
X       IMPLICIT INTEGER(A-Z)
X       LOGICAL BITSET
X       COMMON /CONCOM/ LOCCON(250),OBJCON(150)
X
X       PORTAL=BITSET(LOCCON(LOC),5)
X
X       RETURN
X       END
X
X
X
X
XC***  PRINTD .TRUE. IF OBJ CAN BE READ
X
X
X       LOGICAL FUNCTION PRINTD(OBJ)
X
XC  PRINTD(OBJ)  = TRUE IF OBJECT CAN BE READ.
X
X       IMPLICIT INTEGER(A-Z)
X       LOGICAL BITSET
X       COMMON /CONCOM/ LOCCON(250),OBJCON(150)
X
X      PRINTD=BITSET(OBJCON(OBJ),8)
X
X       RETURN
X       END
X
X
X
X
XC***   PSPEAK
X
X
X
X       SUBROUTINE PSPEAK(MSG,SKIP)
X
XC  FIND THE SKIP+1ST MESSAGE FROM MSG AND PRINT IT.  MSG SHOULD BE THE INDEX OF
XC  THE INVENTORY MESSAGE FOR OBJECT.  (INVEN+N+1 MESSAGE IS PROP=N MESSAGE).
X
X       IMPLICIT INTEGER(A-Z)
X       COMMON /TXTCOM/ LINES(25000),RTEXT(450),PTEXT(150)
X
X       M=PTEXT(MSG)
X       IF(SKIP.LT.0)GOTO 9
X       DO 3 I=0,SKIP
X1       M=IABS(LINES(M))
X       IF(LINES(M).GE.0)GOTO 1
X3       CONTINUE
X9       CALL SPEAK(M)
X       RETURN
X       END
X
X
X
X
X
X
X
XC***   PUT
X
X
X
X       INTEGER FUNCTION PUT(OBJECT,WHERE,PVAL)
X
XC  PUT IS THE SAME AS MOVE, EXCEPT IT RETURNS A VALUE USED TO SET UP THE
XC  NEGATED PROP VALUES FOR THE REPOSITORY OBJECTS.
X
X       IMPLICIT INTEGER(A-Z)
X
X       CALL MOVE(OBJECT,WHERE)
X       PUT=(-1)-PVAL
X       RETURN
X       END
X
X
X
X
XC***   RANZ
XC  UTILITY ROUTINES (SHIFT, RAN, DATIME, CIAO, BUG, LOG)
X
X        INTEGER FUNCTION RANZ(RANGE)
X        IMPLICIT INTEGER (A-Z)
X        SAVE
X        DATA SEED/12345/
X        SEED = SEED*69069+1
X        I = 16384/RANGE
X        J = IABS(SEED)/I
X        RANZ = MOD(J,RANGE)
X        RETURN
X        END
X
X
X
XC***   RATING
X
X       SUBROUTINE RATING(SCORE,BONUS,GAVEUP,SCORNG,CLOSNG,CLOSED
X     1    ,HNTMAX)
X
XC  CALCULATE WHAT THE PLAYER'S SCORE WOULD BE IF HE QUIT NOW.
XC  THIS MAY BE THE END OF THE GAME, OR HE MAY JUST BE WONDERING
XC  HOW HE IS DOING.  
X
X       IMPLICIT INTEGER(A-Z)
X       LOGICAL TREASR,GAVEUP,CLOSNG,CLOSED,SCORNG,HINTED,KILLED
X       COMMON /MNECOM/ BACK,CAVE,DPRSSN,ENTRNC,EXIT,GO,LOOK,NULL,
X     1 AXE,BEAR,BOAT,BOOK,BOOK2,BOOTH,CARVNG,CHASM,CHASM2,DOOR,GNOME,
X     2 GRATE,LAMP,PDOOR,PLANT,PLANT2,ROCKS,ROD,ROD2,SAFE,
X     3 TDOOR,TDOOR2,TROLL,TROLL2,EMRALD,SPICES,
X     4 FIND,YELL,INVENT,LEAVE,POUR,SAY,TAKE,THROW,
X     5 IWEST,PHUCE(2,4),TK(20)
X       COMMON /DIECOM/ NUMDIE,MAXDIE,TURNS,KILLED
X       COMMON /DWFCOM/ DWARF,KNIFE,KNFLOC,DFLAG,DSEEN(6),DLOC(6),
X     1  ODLOC(6),DWFMAX
X       COMMON /HNTCOM/ HINTLC(20),HINTED(20),HINTS(20,4),HNTSIZ,HNTMIN
X       COMMON /OBJCOM/ PLAC(150),FIXD(150),WEIGHT(150),PROP(150),
X     1          POINTS(150)
X       COMMON /PLACOM/ ATLOC(250),LINK(300),PLACE(150),
X     1          FIXED(150),MAXOBJ
X       COMMON /SV2COM/ANVIL,BATTER,BEES,BILLBD,BIRD,BRUSH,CAGE,
X     1   CAKES,CHAIN,CHEST,CHLOC,CHLOC2,CLAM,CLOAK,CLSSES,COINS,CROWN,
X     2   DALTLC,DOG,DRAGON,EGGS,FISSUR,FLOWER,GATLOC,GRAIL,HIVE,
X     3   HONEY,HORN,JEWELS,KEYS,LYRE,
X     4   MAGZIN,MIRROR,MUSHRM,MXSCOR,NUGGET,OYSTER,PEARL,PHONE,
X     5   PILLOW,POLE,POSTER,PREPAT,PREPDN,PREPFR,PREPIN,PREPOF,
X     6   PREPON,PYRAM,RADIUM,RING,RUG,SAPPHI,SHIELD,SHOES,
X     7   SHUT,SLUGS,SNAKE,SPHERE,STEPS,STICKS,SWORD,TABLET,TRIDNT,
X     8   UNLOCK,VASE,WALL,WALL2,WEAR,WUMPUS,Y2,YANK
X
X       DIMENSION QK(20)
X
XC  THE PRESENT SCORING ALGORITHM IS AS FOLLOWS:
XC  (TREASURE POINTS ARE EXPLAINED IN A FOLLOWING COMMENT)
XC     OBJECTIVE:          POINTS:        PRESENT TOTAL POSSIBLE:
XC  GETTING WELL INTO CAVE   25                    25
XC  TOTAL POSSIBLE FOR TREASURES (+MAG)           426
XC  SURVIVING             (MAX-NUM)*10             30
XC  NOT QUITTING              4                     4
XC  REACHING "CLOSNG"        20                    20
XC  "CLOSED": QUIT/KILLED    10
XC            KLUTZED        20
XC            WRONG WAY      25
XC            SUCCESS        30                    30
XC  ROUND OUT THE TOTAL      16                    16
XC                                       TOTAL:   551
XC  (POINTS CAN ALSO BE DEDUCTED FOR USING HINTS.)
X
X       SCORE=0
X       MXSCOR=0
X
XC  FIRST TALLY UP THE TREASURES.  MUST BE IN BUILDING AND NOT BROKEN.
XC  GIVE THE POOR GUY PARTIAL SCORE JUST FOR FINDING EACH TREASURE.
XC  GETS FULL SCORE, QK(3), FOR OBJ IF:
XC       OBJ IS AT LOC QK(1), AND
XC       OBJ HAS PROP VALUE OF QK(2)
XC
XC               WEIGHT          TOTAL POSSIBLE
XC  MAGAZINE     1 (ABSOLUTE)            1
XC
XC  ALL THE FOLLOWING ARE MULTIPLIED BY 5 (RANGE 5-25):
XC  BOOK         2
XC  CASK         3 (WITH WINE ONLY)
XC  CHAIN        4 (MUST ENTER VIA STYX)
XC  CHEST        5
XC  CLOAK        3
XC  CLOVER       1
XC  COINS        5
XC  CROWN        2
XC  CRYSTAL-BALL 2
XC  DIAMONDS     2
XC  EGGS         3
XC  EMERALD      3
XC  GRAIL        2
XC  HORN         2
XC  JEWELS       1
XC  LYRE         1
XC  NUGGET       2
XC  PEARL        4
XC  PYRAMID      4
XC  RADIUM       4
XC  RING         4
XC  RUG          3
XC  SAPPHIRE     1
XC  SHOES        3
XC  SPICES       1
XC  SWORD        4
XC  TRIDENT      2
XC  VASE         2
XC  DROPLET      5
XC  TREE         5
XC       TOTAL: 85 * 5 = 425 + 1 ==> 426
X
X       DO 1010 OBJ=1,MAXOBJ
X       IF(POINTS(OBJ).EQ.0)GOTO 1010
X	QK(3)=IABS(POINTS(OBJ))/1000000
X	QK(2)=(IABS(POINTS(OBJ))-QK(3)*1000000)/1000
X	QK(1)=IABS(POINTS(OBJ))-QK(3)*1000000-QK(2)*1000
X       IF(POINTS(OBJ).LT.0) QK(1)=-QK(1)
X       K=0
X       IF(.NOT.TREASR(OBJ))GOTO 1007
X       K=QK(3)*2
X       IF(PROP(OBJ).GE.0)SCORE=SCORE+K
X       QK(3)=QK(3)*5
X1007    IF(PLACE(OBJ).EQ.QK(1).AND.PROP(OBJ).EQ.QK(2).AND.
X     1  (PLACE(OBJ).NE.-CHEST.OR.PLACE(CHEST).EQ.3).AND.
X     2  (PLACE(OBJ).NE.-SHIELD.OR.PLACE(SHIELD).EQ.-SAFE))
X     3  SCORE=SCORE+QK(3)-K
X       MXSCOR=MXSCOR+QK(3)
X1010    CONTINUE
XC  NOW LOOK AT HOW HE FINISHED AND HOW FAR HE GOT.  MAXDIE AND NUMDIE TELL US
XC  HOW WELL HE SURVIVED.  GAVEUP SAYS WHETHER HE EXITED VIA QUIT.  DFLAG WILL
XC  TELL US IF HE EVER GOT SUITABLY DEEP INTO THE CAVE.  CLOSNG STILL INDICATES
XC  WHETHER HE REACHED THE ENDGAME.  AND IF HE GOT AS FAR AS "CAVE CLOSED"
XC  (INDICATED BY "CLOSED"), THEN BONUS IS ZERO FOR MUNDANE EXITS OR 133, 134,
XC  135 IF HE BLEW IT (SO TO SPEAK).
X
X       ASCORE=(MAXDIE-NUMDIE)*10
X       MXSCOR=MXSCOR+MAXDIE*10
X       IF(.NOT.(SCORNG.OR.GAVEUP))ASCORE=ASCORE+4
X       MXSCOR=MXSCOR+4
X       IF(DFLAG.NE.0)ASCORE=ASCORE+25
X       MXSCOR=MXSCOR+25
X       IF(CLOSNG)ASCORE=ASCORE+20
X       MXSCOR=MXSCOR+20
X       IF(.NOT.CLOSED)GOTO 1020
X       IF(BONUS.EQ.0)ASCORE=ASCORE+10
X       IF(BONUS.EQ.135)ASCORE=ASCORE+20
X       IF(BONUS.EQ.134)ASCORE=ASCORE+25
X       IF(BONUS.EQ.133)ASCORE=ASCORE+30
X1020    MXSCOR=MXSCOR+30
XC  ROUND IT OFF.
X
X       ASCORE=ASCORE+16
X       MXSCOR=MXSCOR+16
X
XC  DEDUCT POINTS FOR HINTS.  HINTS < HNTMIN ARE SPECIAL; SEE DATABASE DESCRIPTIO
X
X       DO 1030 I=1,HNTMAX
X1030    IF(HINTED(I))SCORE=SCORE-HINTS(I,2)
X       JTURNS=TURNS/100
X	IF(JTURNS.EQ.0)ASCORE=0
X        IF(JTURNS.EQ.1)ASCORE=ASCORE/3
X        IF(JTURNS.EQ.2)ASCORE=(ASCORE*2)/3
X        SCORE=SCORE+ASCORE
X        IF(SCORE.LT.0) SCORE=0
X	RETURN
X       END
X
X
X
X
XC***   REMOVE
X
X
X       SUBROUTINE REMOVE(OBJECT)
X
X       IMPLICIT INTEGER(A-Z)
X       COMMON /HLDCOM/ HOLDER(150),HLINK(150)
X       COMMON /PLACOM/ ATLOC(250),LINK(300),PLACE(150),
X     1          FIXED(150),MAXOBJ
X
X       CONTNR=-PLACE(OBJECT)
X       PLACE(OBJECT)=-1
X
X       IF(HOLDER(CONTNR).NE.OBJECT)GOTO 1
X       HOLDER(CONTNR)=HLINK(OBJECT)
X       RETURN
X
X1       TEMP=HOLDER(CONTNR)
X2       IF(HLINK(TEMP).EQ.OBJECT)GOTO 3
X       TEMP=HLINK(TEMP)
X       GOTO 2
X
X3       HLINK(TEMP)=HLINK(OBJECT)
X       RETURN
X       END
X
X
X
X
X
XC***   RSPEAK
X
X       SUBROUTINE RSPEAK(I)
X
XC  PRINT THE I-TH "RANDOM" MESSAGE (SECTION 6 OF DATABASE).
X
X       IMPLICIT INTEGER(A-Z)
X       COMMON /TXTCOM/ LINES(25000),RTEXT(450),PTEXT(150)
X
X       IF(I.LE.0)RETURN
X       M=RTEXT(I)
X       CALL SPEAK(M)
X       RETURN
X       END
X
X
X
X
X
XC***   SMALL  .TRUE. IF IT FITS IN SACK OR SMALL CONTAINER
X
X      LOGICAL FUNCTION SMALL(OBJ)
X      IMPLICIT INTEGER(A-Z)
X      LOGICAL BITSET
X      COMMON/CONCOM/LOCCON(250),OBJCON(150)
X      SMALL=BITSET(OBJCON(OBJ),5)
X      RETURN
X      END
X
X
X
XC***   SPEAK
X
X       SUBROUTINE SPEAK(N)
X
XC  PRINT THE MESSAGE WHICH STARTS AT LINES(N).  PRECEDE IT WITH A BLANK LINE
XC  UNLESS BLKLIN IS FALSE.
X
X       IMPLICIT INTEGER(A-Z)
X       LOGICAL BLKLIN
X	COMMON /TNOUX/INDENT
X       COMMON /TXTCOM/ LINES(25000),RTEXT(450),PTEXT(150)
X       COMMON /BLKCOM/ BLKLIN
X       DIMENSION OLINE(30)
XC	DATA ZCLYD/'CLYD'/,ZLS/'<$$<'/
XC        ZCLYD = 0
XC       ZCLYD = 37+256*(9+256*(20+256*15))
X       ZCLYD =    ICHAR('c')+256*(ICHAR('L')+ 256*(ICHAR('y')
X     1     +256*ICHAR('D')))
X       ZLS = 60+256*(36+256*(36+256*60))
X	XCLYD=IEOR(ZCLYD,ZLS)
X100    IF(N.EQ.0)GOTO 145
X      IF(LINES(N+1).EQ.XCLYD)GOTO 4
X       K=N
X1      CONTINUE
X        L=IABS(LINES(K))-K-1
X       DO 2 I=1,L
X2     OLINE(I)=IEOR(LINES(K+I),ZCLYD)
X       IF(INDENT.EQ.0)WRITE(*,3) (OLINE(I),I=1,L)
X	IF(INDENT.EQ.1)WRITE(*,133)(OLINE(I),I=1,L)
X133	FORMAT(6X,19A4)
X3       FORMAT(' ',19A4)
X       K=K+L+1
X       IF(LINES(K).GE.0)GOTO 1
X4      CONTINUE
X145	INDENT=0
X      RETURN
X       END
X
X
XC       A HORRIBLE KLUDGE
X	SUBROUTINE TNOUA
X	INTEGER INDENT
X	COMMON /TNOUX/INDENT
X	INDENT=1
X	RETURN
X	END
X
X
X
XC***  TOTING .TRUE. IF OBJ SOMEWHERE ON PERSON
X
X
X       LOGICAL FUNCTION TOTING(OBJ)
X
XC  TOTING(OBJ)  = TRUE IF THE OBJ IS BEING CARRIED (IN HAND OR
XC                 CONTAINER).  OBJ MAY NOT BE REACHABLE.  SEE
XC                 ALSO: ENCLSD, ATHAND, HOLDNG.
X
X       IMPLICIT INTEGER(A-Z)
X       COMMON /PLACOM/ ATLOC(250),LINK(300),PLACE(150),
X     1          FIXED(150),MAXOBJ
X       LOGICAL HOLDNG,ENCLSD,AAA,BBB,CCC
X
X
X  
X       TOTING = .FALSE.
X       IF(HOLDNG(OBJ))THEN
X          TOTING = .TRUE.
X          RETURN
X       ENDIF
X       CONTNR=-PLACE(OBJ)
X       IF(CONTNR.LE.0)RETURN
X       IF(HOLDNG(CONTNR))THEN
X          TOTING = .TRUE.
X          RETURN
X       ENDIF
X       OUTER=-PLACE(CONTNR)
X       IF(OUTER.LE.0)RETURN
X       IF(HOLDNG(OUTER))THEN
X          TOTING = .TRUE.
X          RETURN
X       ENDIF
X       OUTER2=-PLACE(OUTER)
X       IF(OUTER2.LE.0)RETURN
X       IF(HOLDNG(OUTER2))THEN
X          TOTING = .TRUE.
X          RETURN
X       ENDIF
X       RETURN
X
X       END
X
X
X
X
X
XC***   TRAVL
XC  FIGURE OUT THE NEW LOCATION
XC
XC  GIVEN THE CURRENT LOCATION IN "LOC", AND A MOTION VERB NUMBER IN "K", PUT
XC  THE NEW LOCATION IN "NEWLOC".  THE CURRENT LOC IS SAVED IN "OLDLOC" IN CASE
XC  HE WANTS TO RETREAT.  THE CURRENT OLDLOC IS SAVED IN OLDLC2, IN CASE HE
XC  DIES.  (IF HE DOES, NEWLOC WILL BE LIMBO, AND OLDLOC WILL BE WHAT KILLED
XC  HIM, SO WE NEED OLDLC2, WHICH IS THE LAST PLACE HE WAS SAFE.)
X
X       SUBROUTINE TRAVL(K,BCROSS,TALLY2)
X       IMPLICIT INTEGER(A-Z)
X
X       LOGICAL KILLED,PCT,HOLDNG,ENCLSD
X       LOGICAL INSIDE,OUTSID,PORTAL,TOTING,HERE,AT,FORCED
X
X       COMMON /DIECOM/ NUMDIE,MAXDIE,TURNS,KILLED
X       COMMON /TRVCOM/ TRAVEL(1600)
X       COMMON /LTXCOM/ LTEXT(250),STEXT(250),KEY(250),ABB(250),LOCSIZ
X       COMMON /PLACOM/ ATLOC(250),LINK(300),PLACE(150),
X     1          FIXED(150),MAXOBJ
X       COMMON /OBJCOM/ PLAC(150),FIXD(150),WEIGHT(150),PROP(150),
X     1          POINTS(150)
X       COMMON /LOCCOM/ LOC,OLDLOC,OLDLC2,NEWLOC,MAXLOC
X       COMMON /MNECOM/ BACK,CAVE,DPRSSN,ENTRNC,EXIT,GO,LOOK,NULL,
X     1 AXE,BEAR,BOAT,BOOK,BOOK2,BOOTH,CARVNG,CHASM,CHASM2,DOOR,GNOME,
X     2 GRATE,LAMP,PDOOR,PLANT,PLANT2,ROCKS,ROD,ROD2,SAFE,
X     3 TDOOR,TDOOR2,TROLL,TROLL2,EMRALD,SPICES,
X     4 FIND,YELL,INVENT,LEAVE,POUR,SAY,TAKE,THROW,
X     5 IWEST,PHUCE(2,4),TK(20)
X
X       KILLED=.FALSE.
X       KK=KEY(LOC)
X       NEWLOC=LOC
X       IF(KK.EQ.0)CALL BUG(26)
X       IF(K.EQ.NULL)RETURN
X       IF(K.EQ.BACK)GOTO 20
X       IF(K.EQ.CAVE)GOTO 40
X       OLDLC2=OLDLOC
X       OLDLOC=LOC
X
X9       LL=IABS(TRAVEL(KK))
X       IF(MOD(LL,0001000).EQ.1.OR.MOD(LL,0001000).EQ.K)
X     1  GOTO 10
X       IF(TRAVEL(KK).LT.0000000)GOTO 50
X       KK=KK+1
X       GOTO 9
X
X10      LL=LL/0001000
X11    NEWLOC=LL/0001000
X       K=MOD(NEWLOC,100)
X       IF(NEWLOC.LE.MAXLOC)GOTO 13
X       IF(PROP(K).NE.NEWLOC/100-3)GOTO 16
X12      IF(TRAVEL(KK).LT.0)CALL BUG(25)
X       KK=KK+1
X       NEW1=IABS(TRAVEL(KK))/1000
X       IF(NEW1.EQ.LL)GOTO 12
X       LL=NEW1
X       GOTO 11
X
X13      IF(NEWLOC.LE.100)GOTO 14
X       IF(TOTING(K).OR.(NEWLOC.GT.200.AND.AT(K)))GOTO 16
X       GOTO 12
X
X14      IF(NEWLOC.NE.0.AND..NOT.PCT(NEWLOC))GOTO 12
X16      NEWLOC=MOD(LL,1000)
X       IF(NEWLOC.LE.MAXLOC)GO TO 2000
X       IF(NEWLOC.LE.500)GOTO 30000
X       CALL RSPEAK(NEWLOC-500)
X       NEWLOC=LOC
X       RETURN
XC  HANDLE "GO BACK".  LOOK FOR VERB WHICH GOES FROM LOC TO OLDLOC, OR TO OLDLC2
XC  IF OLDLOC HAS FORCED-MOTION.  K2 SAVES ENTRY -> FORCED LOC -> PREVIOUS LOC.
X
X20      K=OLDLOC
X       IF(FORCED(K))K=OLDLC2
X       OLDLC2=OLDLOC
X       OLDLOC=LOC
X       K2=0
X       IF(K.NE.LOC)GOTO 21
X       CALL RSPEAK(91)
X       GO TO 2000
X
X21      LL=MOD((IABS(TRAVEL(KK))/1000),1000)
X       IF(LL.EQ.K)GOTO 25
X       IF(LL.GT.MAXLOC)GOTO 22
X       J=KEY(LL)
X       IF(FORCED(LL).AND.MOD((IABS(TRAVEL(J))/1000),1000).EQ.K)
X     1  K2=KK
X22      IF(TRAVEL(KK).LT.000000)GOTO 23
X       KK=KK+1
X       GOTO 21
X
X23      KK=K2
X       IF(KK.NE.0)GOTO 25
X       CALL RSPEAK(140)
X2000    IF(NEWLOC.LT.242.OR.NEWLOC.GT.247)RETURN
X       IF(NEWLOC.NE.242)GOTO 2010
X       KALFLG=0
X       RETURN
X2010   IF(NEWLOC.NE.OLDLOC+1)GOTO 2020
X       KALFLG=KALFLG+1
X       RETURN
X2020   KALFLG=-10
X       RETURN
X
X25      K=MOD(IABS(TRAVEL(KK)),1000)
X       KK=KEY(LOC)
X       GOTO 9
X
XC  CAVE.  DIFFERENT MESSAGES DEPENDING ON WHETHER ABOVE GROUND.
X
X40      IF(OUTSID(LOC))CALL RSPEAK(57)
X       IF(.NOT.OUTSID(LOC))CALL RSPEAK(58)
X       RETURN
X
XC  NON-APPLICABLE MOTION.  VARIOUS MESSAGES DEPENDING ON WORD GIVEN.
X
X50      SPK=12
X       IF(K.GE.43.AND.K.LE.50)SPK=9
X       IF(K.EQ.29.OR.K.EQ.30)SPK=9
X       IF(K.EQ.7.OR.K.EQ.36.OR.K.EQ.37)SPK=10
X       IF(K.EQ.11.OR.K.EQ.19)SPK=11
X       IF(K.EQ.62.OR.K.EQ.65.OR.K.EQ.82)SPK=42
X       IF(K.EQ.17)SPK=80
X       CALL RSPEAK(SPK)
X       RETURN
XC  SPECIAL MOTIONS COME HERE.  LABELLING CONVENTION: STATEMENT NUMBERS NNNXX
XC  (XX=00-99) ARE USED FOR SPECIAL CASE NUMBER NNN (NNN=301-500).
X
X30000   NEWLOC=NEWLOC-MAXLOC
X       GOTO (30100,30200,30300,30400,30500,30600,30700),NEWLOC
XC             ALCOV PLOVR TROLL PHUCE BOOTH BRDGE
X      WRITE(*,1001)NEWLOC
X1001  FORMAT('BUG IN TRAVEL TABLES.  NEWLOC= ',I5)
X       CALL BUG(20)
X
XC  TRAVEL 301.  PLOVER-ALCOVE PASSAGE.  CAN CARRY ONLY EMERALD.  NOTE: TRAVEL
XC  TABLE MUST INCLUDE "USELESS" ENTRIES GOING THROUGH PASSAGE, WHICH CAN NEVER
XC  BE USED FOR ACTUAL MOTION, BUT CAN BE SPOTTED BY "GO BACK".
X
X30100   NEWLOC=99+100-LOC
X       KK=BURDEN(0)
X       IF(KK.EQ.0.OR.(KK.EQ.BURDEN(EMRALD).AND.HOLDNG(EMRALD)))RETURN
X       NEWLOC=LOC
X       CALL RSPEAK(117)
X       RETURN
X
XC  TRAVEL 302.  PLOVER TRANSPORT.  DROP THE EMERALD (ONLY USE SPECIAL TRAVEL IF
XC  TOTING IT), SO HE'S FORCED TO USE THE PLOVER-PASSAGE TO GET IT OUT.  HAVING
XC  DROPPED IT, GO BACK AND PRETEND HE WASN'T CARRYING IT AFTER ALL.
X
X30200   IF(ENCLSD(EMRALD))CALL REMOVE(EMRALD)
X       CALL DROP(EMRALD,LOC)
X       GOTO 12
X
XC  TRAVEL 303.  TROLL BRIDGE.  MUST BE DONE ONLY AS SPECIAL MOTION SO THAT
XC  DWARVES WON'T WANDER ACROSS AND ENCOUNTER THE BEAR.  (THEY WON'T FOLLOW THE
XC  PLAYER THERE BECAUSE THAT REGION IS FORBIDDEN TO THE PIRATE.)  IF
XC  PROP(TROLL)=1, HE'S CROSSED SINCE PAYING, SO STEP OUT AND BLOCK HIM.
XC  (STANDARD TRAVEL ENTRIES CHECK FOR PROP(TROLL)=0.)  SPECIAL STUFF FOR BEAR.
X
X30300   IF(PROP(TROLL).NE.1)GOTO 30310
X       CALL PSPEAK(TROLL,1)
X       PROP(TROLL)=0
X       CALL MOVE(TROLL2,0)
X       CALL MOVE(TROLL2+MAXOBJ,0)
X       CALL MOVE(TROLL,PLAC(TROLL))
X       CALL MOVE(TROLL+MAXOBJ,FIXD(TROLL))
X       CALL JUGGLE(CHASM)
X       NEWLOC=LOC
X       RETURN
X
X30310   NEWLOC=PLAC(TROLL)+FIXD(TROLL)-LOC
X       IF(PROP(TROLL).EQ.0)PROP(TROLL)=1
X       IF(.NOT.HOLDNG(BEAR))RETURN
X       CALL RSPEAK(162)
X       PROP(CHASM)=1
X       PROP(TROLL)=2
X       CALL DROP(BEAR,NEWLOC)
X       FIXED(BEAR)=-1
X       PROP(BEAR)=3
X       IF(PROP(SPICES).LT.0)TALLY2=TALLY2+1
X       OLDLC2=NEWLOC
X       KILLED=.TRUE.
X       RETURN
XC  TRAVEL 304.  GROWING OR SHRINKING IN AREA OF TINY DOOR.  EACH TIME
XC  HE DOES THIS, EVERYTHING MUST BE MOVED TO THE NEW LOC.  PRESUMABLY,
XC  ALL HIS POSSESIONS ARE SHRUNK OR STRECHED ALONG WITH HIM.
XC  PHUCE(2,4) IS AN ARRAY CONTAINING FOUR PAIRS OF "HERE" (K) AND
XC  "THERE" (KK) LOCATIONS.
X
X30400   K=PHUCE(1,LOC-161+1)
X       NEWLOC=PHUCE(2,LOC-161+1)
X       DO 30410 OBJ=1,MAXOBJ
X       IF(OBJ.EQ.BOAT)GOTO 30410
X       IF(PLACE(OBJ).EQ.K.AND.(FIXED(OBJ).EQ.0.OR.FIXED(OBJ).EQ.-1))
X     1  CALL MOVE(OBJ,NEWLOC)
X30410   CONTINUE
X       RETURN
X
XC  TRAVEL #5.  PHONE BOOTH IN ROTUNDA.
XC  TRYING TO SHOVE PAST GNOME, TO GET INTO PHONE BOOTH.
X
X30500   IF((PROP(BOOTH).EQ.0.AND.PCT(55)).OR.ABB(LOC).EQ.1)GOTO 30510
X       NEWLOC=189
X       IF(PROP(BOOTH).NE.1)RETURN
X       CALL RSPEAK(253)
X       GOTO 30512
X
X30510   CALL RSPEAK(263)
X       PROP(BOOTH)=1
X       CALL MOVE(GNOME,188)
X30512   NEWLOC=LOC
X       RETURN
X
XC  TRAVEL #6.  COLLAPSING CLAY BRIDGE.  HE CAN CROSS WITH THREE (OR FEWER)
XC  THINGS.  IF MORE, OR IF CARRYING OBVIOUSLY HEAVY THINGS, HE MAY END UP
XC  IN THE DRINK.
X
X30600   NEWLOC=235
X       IF(LOC.EQ.235)NEWLOC=190
X       BCROSS=BCROSS+1
X       KK=BURDEN(0)
X       IF(KK.LE.4)RETURN
X       K=MAX0( ((KK+BCROSS)**2)/10, 10)
X30605   IF(PCT(K))GOTO 30610
X       CALL RSPEAK(318)
X       RETURN
X
X30610   CALL RSPEAK(319)
X       NEWLOC=236
X       IF(HOLDNG(LAMP))CALL MOVE(LAMP,236)
X       IF(TOTING(AXE).AND.ENCLSD(AXE))CALL REMOVE(AXE)
X       IF(HOLDNG(AXE))CALL MOVE(AXE,208)
X       DO 30620 OBJ=1,MAXOBJ
X30620   IF(TOTING(OBJ))CALL DSTROY(OBJ)
X       PROP(CHASM2)=1
X       RETURN
XC      THE KALEIDOSCOPE CODE IS HERE
X30700       IF(KALFLG.NE.5)GOTO 30701
X	NEWLOC=248
X       OLDLOC=247
X       RETURN
X30701    NEWLOC=242+RANZ(5)
X	OLDLOC=NEWLOC-1
X	CALL RSPEAK(406)
X	KALFLG=-10
X        IF(NEWLOC.EQ.242)KALFLG=0
X	RETURN
X
XC  END OF SPECIALS.
X
X       END
X
X
XC***  TREASR .TRUE. IF OBJ IS VALUABLE FOR POINTS
X
X
X       LOGICAL FUNCTION TREASR(OBJ)
X
XC  TREASR(OBJ)  = TRUE IF OBJECT IS A TREASURE
X
X       IMPLICIT INTEGER(A-Z)
X       LOGICAL BITSET
X       COMMON /CONCOM/ LOCCON(250),OBJCON(150)
X
X       TREASR=BITSET(OBJCON(OBJ),14)
X
X       RETURN
X       END
X
X
X
X
X
X
X
XC***   VAL
X
X
X       INTEGER FUNCTION VAL(WORD)
X
XC  RETURNS THE 'VALUE' OF A WORD, MODULO 1000.
X
X       IMPLICIT INTEGER(A-Z)
X       VAL=MOD(WORD,1000)
X       RETURN
X       END
X
X
X
X
XC***  VESSEL .TRUE. IF OBJ CAN HOLD A LIQUID
X
X
X       LOGICAL FUNCTION VESSEL(OBJ)
X
XC  VESSEL(OBJ)  = TRUE IF OBJECT IS A CONTAINER
X
X       IMPLICIT INTEGER(A-Z)
X       LOGICAL BITSET
X       COMMON /CONCOM/ LOCCON(250),OBJCON(150)
X
X       VESSEL=BITSET(OBJCON(OBJ),15)
X
X       RETURN
X       END
X
X
X
X
X
XC***   VOCABX
X
X
X       INTEGER FUNCTION VOCABX(ID,INIT)
X
XC  LOOK UP ID IN THE VOCABULARY (ATAB) AND RETURN ITS "DEFINITION" (KTAB
XC  -1 IF NOT FOUND.  IF INIT IS POSITIVE, THIS IS AN INITIALISATION CALL
XC  UP A KEYWORD VARIABLE, AND NOT FINDING IT CONSTITUTES A BUG.  IT ALSO
XC  THAT ONLY KTAB VALUES WHICH TAKEN OVER 1000 EQUAL INIT MAY BE CONSIDE
XC  (THUS "STEPS", WHICH IS A MOTION VERB AS WELL AS AN OBJECT, MAY BE LO
XC  AS AN OBJECT.)  AND IT ALSO MEANS THE KTAB VALUE IS TAKEN MOD 1000.
X
X       IMPLICIT INTEGER(A-Z)
X      CHARACTER*6 ATAB,DTK,ID,VTXT,OTXT,IOTXT,TXT
X       COMMON /VOCCOM/ KTAB(600),TABSIZ
X       COMMON /SV3COM/DTK(9),ATAB(600),VTXT(45,2),OTXT(45,2),IOTXT(15,2)
X     1      ,TXT(35,2)
X
XC       HASH=ID.XOR.'PHROG'             (DONE BY CALLER)
X       WDCLAS=INIT
X       IF(INIT.LT.0)WDCLAS=-INIT-1
X       DO 1 I=1,TABSIZ
X       IF(KTAB(I).EQ.-1)GOTO 2
X       IF(ATAB(I).NE.ID)GOTO 1
X       IF(CLASS(KTAB(I)).GE.WDCLAS)GOTO 3
X1       CONTINUE
X       CALL BUG(21)
X
X2       VOCABX=-1
X       IF(INIT.LT.0)RETURN
X       WRITE(*,4)ID
X4       FORMAT (' VOCAB ERROR: CAN''T FIND WORD ''',A5,''' IN TABLE.')
X       CALL BUG(5)
X
X3      VOCABX=KTAB(I)
X       IF(INIT.GE.0)VOCABX=MOD(VOCABX,1000)
X       RETURN
X       END
X
X
X
XC***  WEARNG .TRUE. IF WEARING OBJ
X
X
X       LOGICAL FUNCTION WEARNG(OBJ)
X
XC  WEARNG(OBJ)  = TRUE IF THE OBJ IS BEING WORN
X
X       IMPLICIT INTEGER(A-Z)
X       COMMON /BITCOM/ OPENBT,UNLKBT,BURNBT,WEARBT
X       COMMON /CONCOM/ LOCCON(250),OBJCON(150)
X      LOGICAL BITSET
X
X       WEARNG=BITSET(OBJCON(OBJ),WEARBT)
X       RETURN
X       END
X
X
X
X
X
XC***   WORN  .TRUE. IF OBJ IS BEING WORN
X
X      LOGICAL FUNCTION WORN(OBJ)
X      IMPLICIT INTEGER(A-Z)
X      LOGICAL BITSET
X      COMMON/CONCOM/LOCCON(250),OBJCON(150)
X      WORN=BITSET(OBJCON(OBJ),11)
X      RETURN
X      END
X
X
X
X
XC***   YES
X
X
X
X       LOGICAL FUNCTION YES(X,Y,Z)
X
XC  PRINT MESSAGE X, WAIT FOR YES/NO ANSWER.  
X
X       IMPLICIT INTEGER(A-Z)
X      CHARACTER*6 REPLY
X
X1       IF(X.NE.0)CALL RSPEAK(X)
X        WRITE(*,338)
X338    FORMAT(/,' >')
XC??????????????? THE FOLLOWING WORKS BETTER ON VAXES, ETC:
XC338    FORMAT(/,' >',$)
X       READ(*,30)REPLY
X30     FORMAT(A6)
X       DO 2 I=1,6
X       IF(REPLY(I:I).GE.'a'.AND.REPLY(I:I).LE.'z')
X     1  REPLY(I:I) = CHAR(ICHAR(REPLY(I:I)) -32) 
X2      CONTINUE
X       IF(REPLY.EQ.'YES   '.OR.REPLY.EQ.'Y     ')GOTO 10
X       IF(REPLY.EQ.'NO    '.OR.REPLY.EQ.'N     ')GOTO 20
X       
X       WRITE(*,*)' Please answer the question.'
X       GOTO 1
X10      YES=.TRUE.
X       IF(Y.NE.0)CALL RSPEAK(Y)
X       RETURN
X20      YES=.FALSE.
X       IF(Z.NE.0)CALL RSPEAK(Z)
X       RETURN
X       END
X
X
X
END_OF_asubs.f
if test 63057 -ne `wc -c <asubs.f`; then
    echo shar: \"asubs.f\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f asetup.f -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"asetup.f\"
else
echo shar: Extracting \"asetup.f\" \(29694 characters\)
sed "s/^X//" >asetup.f <<'END_OF_asetup.f'
XC  THIS IS THE FIRST LINE OF THE SETUP OF ADVENTURE.
XC THE COMMENTS ARE IN THE MAIN PROGRAM
X
X       IMPLICIT INTEGER(A-Z)
X       LOGICAL DSEEN,BLKLIN,HINTED,YES,START,TERSE,ISWIZ,LOGOUT
X       LOGICAL WZDARK,KILLED,RDFLAG,LIVING
X      CHARACTER*6 DTK(9),ATAB,DJJ,DK,DKK,DL,DLL
X      CHARACTER*6 VTXT,OTXT,IOTXT,TXT
X      DIMENSION PHUCE2(2,4)
X
X       COMMON/IZWIZ/ISWIZ
X       COMMON /ADJCOM/ ADJKEY(50),ADJTAB(150),ADJSIZ
X       COMMON /BITCOM/ OPENBT,LOCKBT,BURNBT,WEARBT
X       COMMON /BLKCOM/ BLKLIN
X       COMMON /CONCOM/ LOCCON(250),OBJCON(150)
X       COMMON /DIECOM/ NUMDIE,MAXDIE,TURNS,KILLED
X       COMMON /DWFCOM/ DWARF,KNIFE,KNFLOC,DFLAG,DSEEN(6),DLOC(6),
X     1  ODLOC(6),DWFMAX
X       COMMON /HLDCOM/ HOLDER(150),HLINK(150)
X       COMMON /HNTCOM/ HINTLC(20),HINTED(20),HINTS(20,4),HNTSIZ,HNTMIN
X       COMMON /LIQCOM/ BOTTLE,CASK,WATER,OIL,WINE,LIQTYP(5)
X       COMMON /LOCCOM/ LOC,OLDLOC,OLDLC2,NEWLOC,MAXLOC
X       COMMON /LTXCOM/ LTEXT(250),STEXT(250),KEY(250),ABB(250),LOCSIZ
X       COMMON /MNECOM/ BACK,CAVE,DPRSSN,ENTRNC,EXIT,GO,LOOK,NULL,
X     1 AXE,BEAR,BOAT,BOOK,BOOK2,BOOTH,CARVNG,CHASM,CHASM2,DOOR,GNOME,
X     2 GRATE,LAMP,PDOOR,PLANT,PLANT2,ROCKS,ROD,ROD2,SAFE,
X     3 TDOOR,TDOOR2,TROLL,TROLL2,EMRALD,SPICES,
X     4 FIND,YELL,INVENT,LEAVE,POUR,SAY,TAKE,THROW,
X     5 IWEST,PHUCE(2,4),TK(20)
X
X       COMMON /OBJCOM/ PLAC(150),FIXD(150),WEIGHT(150),PROP(150),
X     1          POINTS(150)
X       COMMON /PLACOM/ ATLOC(250),LINK(300),PLACE(150),
X     1          FIXED(150),MAXOBJ
X       COMMON /PRPCOM/ VKEY(60),PTAB(300),VKYSIZ,PTBSIZ
X       COMMON /TRVCOM/ TRAVEL(1600)
X       COMMON /TXTCOM/ LINES(25000),RTEXT(450),PTEXT(150)
X       COMMON /UTXCOM/ WDX
X       COMMON /VOCCOM/ KTAB(600),TABSIZ
X       COMMON /WRDCOM/ VERBS(45),VRBX,OBJS(45),
X     1  OBJX,IOBJS(15),IOBX,PREP,WORDS(45)
X
X       COMMON /SAVCOM/ABBNUM,ADJ,ATBS,ATTACK,BCROSS,BONUS,CHASE,
X     1   CLOCK1,CLOCK2,CLOCK3,CLOSED,CLOSNG,CLSMAX,COMBO,DEADBT,
X     2   DETAIL,DKILL,DTOTAL,DWARFN,FLG239,
X     3   FOO,FOOBAR,FOOD,GAVEUP,HEALTH,HINT,HIT,HNTMAX,I,IKK,ILOC,
X     4   IOBJ,J,JJ,JK1,JKK,K,K1,KK,L,L1,LIMIT,
X     5   LINSIZ,LL,LMWARN,LOCK,LOGOUT,MESSAG,OBJ,PANIC,
X     6   PORTAL,PTBS,RDFLAG,RETN,RTXSIZ,SCORE,SCORNG,SECT,
X     7   SKEY,SLOC,SPK,START,STICK,TABNDX,TALLY,TALLY2,TERSE,
X     8   TRVS,TRVSIZ,VEND,VERB,VRBSIZ,WASTE,WKDAY,WKEND,WZDARK,
X     9   YEA,ACTSPK,CTEXT,CVAL,HNAME
X       COMMON /SV2COM/ANVIL,BATTER,BEES,BILLBD,BIRD,BRUSH,CAGE,
X     1   CAKES,CHAIN,CHEST,CHLOC,CHLOC2,CLAM,CLOAK,CLSSES,COINS,CROWN,
X     2   DALTLC,DOG,DRAGON,EGGS,FISSUR,FLOWER,GATLOC,GRAIL,HIVE,
X     3   HONEY,HORN,JEWELS,KEYS,LYRE,
X     4   MAGZIN,MIRROR,MUSHRM,MXSCOR,NUGGET,OYSTER,PEARL,PHONE,
X     5   PILLOW,POLE,POSTER,PREPAT,PREPDN,PREPFR,PREPIN,PREPOF,
X     6   PREPON,PYRAM,RADIUM,RING,RUG,SAPPHI,SHIELD,SHOES,
X     7   SHUT,SLUGS,SNAKE,SPHERE,STEPS,STICKS,SWORD,TABLET,TRIDNT,
X     8   UNLOCK,VASE,WALL,WALL2,WEAR,WUMPUS,Y2,YANK
X       COMMON /SV3COM/DTK,ATAB(600),VTXT(45,2),OTXT(45,2),IOTXT(15,2)
X     1      ,TXT(35,2)
X       DIMENSION ACTSPK(60),CTEXT(12),CVAL(12)
X       DIMENSION HNAME(10)
X
X       LOGICAL AJAR,AT,ATHAND,BITSET,BLIND,CLOSED,CLOSNG,
X     1  DARK,DEAD,EDIBLE,ENCLSD,FORCED,
X     2  GAVEUP,HERE,HINGED,HOLDNG,INSIDE,LMWARN,LOCKS,OUTSID,OPAQUE,
X     3  PANIC,PCT,PLURAL,PORTAL,PRINTD,SCORNG,SMALL,
X     4  TOTING,TREASR,LOCKED,VESSEL,WEARNG,WORN,YEA,
X     5  YESM
X
XC       DATA LINSIZ/25000/,TRVSIZ/1600/,TABSIZ/600/,LOCSIZ/250/,
XC     1  VRBSIZ/60/,RTXSIZ/450/,CLSMAX/12/,HNTSIZ/20/,
XC     2  MAXOBJ/150/,MAXLOC/300/,HNTMIN/7/,PTBSIZ/300/,ADJSIZ/50/,
XC     3  VKYSIZ/60/,BLKLIN/.TRUE./,DWFMAX/6/,ISWIZ/.FALSE./
X
X      DATA LINUSE/0/
XC  PHUCE CONSISTS OF FOUR PAIRS OF ORIGIN/DESTINATION LOCATIONS FROM/TO
XC  WHICH ONE IS TRANSPORTED ON UTTERING THE ELFIN CURSE AT THE TINY
XC  DOOR.  HE CAN GO FROM BIG TO SMALL OR SMALL TO BIG, ON EITHER SIDE OF
XC  THE DOOR.
X       DATA PHUCE2/158,160,160,158,167,166,166,167/
X
X
XC       DATA DEADBT,OPENBT,LOCKBT,BURNBT,WEARBT /10,2,4,6,12/
XC  STATEMENT FUNCTIONS
XC
XC
XC  AJAR(OBJ     = TRUE IF THE OBJECT IS OPEN
XC  AT(OBJ)      = TRUE IF ON EITHER SIDE OF TWO-PLACED OBJECT
XC  ATHAND(OBJ)  = TRUE IF OBJECT IS HERE AND NOT IN CLOSED CONTAINER.
XC  BITSET(COND,L,N) = TRUE IF COND(L) HAS BIT N SET (BIT 0 IS UNITS BIT)
XC  BLIND(DUMMY) = TRUE IF HERO CAN'T SEE (TOO DARK OR GLAREY)
XC  DARK(DUMMY)  = TRUE IF LOCATION "LOC" IS DARK
XC  DEAD(OBJ)    = TRUE IF CRITTER IS KILLED (OR IN ENCHANTED SLEEP)
XC  FORCED(LOC)  = TRUE IF LOC MOVES WITHOUT ASKING FOR INPUT (COND=2)
XC  HERE(OBJ)    = TRUE IF THE OBJ IS AT "LOC" (OR IS BEING CARRIED)
XC  HINGED(OBJ)  = TRUE IF OBJECT CAN BE OPENED/SHUT.
XC  INSIDE(LOC)  = TRUE IF LOCATION IS WELL WITHIN THE CAVE
XC  LIQ(DUMMY)   = OBJECT NUMBER OF LIQUID IN BOTTLE
XC  LIQLOC(LOC)  = OBJECT NUMBER OF LIQUID (IF ANY) AT LOC
XC  LIVING(OBJ)  = TRUE IF OBJ IS SOME SORT OF CRITTER
XC  LOCKED(OBJ)  = TRUE IF OBJECT IS LOCKED. (NEED NOT HAVE A LOCK,
XC                  E.G., RUSTY DOOR)
XC  LOCKS(OBJ)   = TRUE IF OBJECT HAS A LOCK.
XC  OPAQUE(OBJ)  = TRUE IF CONTAINER IS NOT TRANSPARENT (SACK, CHEST)
XC                 TRANSPARENT OBJS: BOTTLE(GLASS), CAGE(WICKER)
XC  OUTSID(LOC)  = TRUE IF LOCATION IS OUTSIDE THE CAVE
XC  PCT(N)       = TRUE N% OF THE TIME (N INTEGER FROM 0 TO 100)
XC  PLURAL(OBJ)  = TRUE IF IT IS A PLURAL OBJ (SHOES, KEYS, ETC.)
XC  PORTAL(LOC)  = TRUE IS LOCATION IS IN CAVE "ENTRANCE"
XC  PRINTD(OBJ)  = TRUE IF OBJECT CAN BE READ.
XC  SMALL(OBJ)   = TRUE IF OBJ FITS INTO SACK
XC  TOTING(OBJ)  = TRUE IF THE OBJ IS BEING CARRIED
XC  TREASR(OBJ)  = TRUE IF OBJECT IS A TREASURE
XC  VESSEL(OBJ)  = TRUE IF OBJECT IS A CONTAINER
XC  WEARNG(OBJ)  = TRUE IF OBJECT IS BEING WORN
XC  WORN(OBJ)    = TRUE IF THE OBJECT CAN BE WORN
XC
XC  CLOSED SAYS WHETHER WE'RE ALL THE WAY CLOSED
XC  CLOSNG SAYS WHETHER ITS CLOSING TIME YET
XC  DEMO IS TRUE IF THIS IS A PRIME-TIME DEMONSTRATION GAME
XC  GAVEUP SAYS WHETHER HE EXITED VIA "QUIT"
XC  LMWARN SAYS WHETHER HE'S BEEN WARNED ABOUT LAMP GOING DIM
XC  PANIC SAYS WHETHER HE'S FOUND OUT HE'S TRAPPED IN THE CAVE
XC  SCORNG INDICATES TO THE RATING ROUTINE WHETHER WE'RE DOING A "SCORE" COMMAND
XC  WZDARK SAYS WHETHER THE LOC HE'S LEAVING WAS DARK
XC  YEA IS RANDOM YES/NO REPLY
X
X
X
X
XC  CLEAR OUT THE VARIOUS TEXT-POINTER ARRAYS.  ALL TEXT IS STORED IN ARRAY
XC  LINES; EACH LINE IS PRECEDED BY A WORD POINTING TO THE NEXT POINTER (I.E.
XC  THE WORD FOLLOWING THE END OF THE LINE).  THE POINTER IS NEGATIVE IF THIS IS
XC  FIRST LINE OF A MESSAGE.  THE TEXT-POINTER ARRAYS CONTAIN INDICES OF
XC  POINTER-WORDS IN LINES.  STEXT(N) IS SHORT DESCRIPTION OF LOCATION N.
XC  LTEXT(N) IS LONG DESCRIPTION.  PTEXT(N) POINTS TO MESSAGE FOR PROP(  PROPN)=0
XC  SUCCESSIVE PROP MESSAGES ARE FOUND BY CHASING POINTERS.  RTEXT CONTAINS
XC  SECTION 6'S STUFF.  CTEXT(N) POINTS TO A PLAYER-CLASS MESSAGE.  MTEXT IS FOR
XC  SECTION 12.  WE ALSO CLEAR COND.  SEE DESCRIPTION OF SECTION 9 FOR DETAILS.
X
X        DEADBT = 10
X        OPENBT = 2
X        LOCKBT = 4
X        BURNBT = 6
X        WEARBT = 12 
X        DO 2238 I = 1,2
X          DO 2239 J = 1,4
X          PHUCE(I,J) = PHUCE2(I,J)
X2239      CONTINUE
X2238    CONTINUE
XC       DATA LINSIZ/25000/,TRVSIZ/1600/,TABSIZ/600/,LOCSIZ/250/,
XC     1  VRBSIZ/60/,RTXSIZ/450/,CLSMAX/12/,HNTSIZ/20/,
XC     2  MAXOBJ/150/,MAXLOC/300/,HNTMIN/7/,PTBSIZ/300/,ADJSIZ/50/,
XC     3  VKYSIZ/60/,BLKLIN/.TRUE./,DWFMAX/6/,ISWIZ/.FALSE./
X        LINSIZ = 25000
X        TRVSIZ = 1600
X        TABSIZ = 600
X        LOCSIZ = 250
X        VRBSIZ = 60
X        RTXSIZ = 450
X        CLSMAX = 12
X        HNTSIZ = 20
X        MAXOBJ = 150
X        MAXLOC = 300 
X        HNTMIN = 7 
X        PTBSIZ = 300 
X        ADJSIZ = 50
X        VKYSIZ = 60 
X        BLKLIN = .TRUE.
X        DWFMAX =  6
X        ISWIZ = .FALSE.
X
X       ZCLYD =    ICHAR('c')+256*(ICHAR('L')+ 256*(ICHAR('y')
X     1     +256*ICHAR('D')))
X       ALLSPACE = 32+256*(32+256*(32+256*32))
X       DO 1001 I=1,MAXLOC
X       IF(I.LE.MAXOBJ)PTEXT(I)=0
X       IF(I.LE.RTXSIZ)RTEXT(I)=0
X       IF(I.LE.CLSMAX)CTEXT(I)=0
X       IF(I.GT.LOCSIZ)GOTO 1001
X       STEXT(I)=0
X       LTEXT(I)=0
X       LOCCON(I)=0
X1001    CONTINUE
X	DO 1278 I=1,MAXOBJ
X         POINTS(I)=0
X1278    OBJCON(I)=0
X	OPEN (UNIT=2,FILE='ADVDAT',STATUS='OLD')
X      DO 1279 I=1,250
X      KEY(I) = 0
X1279  CONTINUE
X      DO 1280 I = 1,50
X1280  ADJKEY(I) = 0
X      DO 1281 I=1,150
X      WEIGHT(I) = 0
X      PLAC(I) = 0
X      FIXD(I) = 0
X1281  ADJTAB(I) = 0
X       LINUSE=1
X       TRVS=1
X       PTBS=1
X       ATBS=1
X       CLSSES=1
X
X
XC  START NEW DATA SECTION.  SECT IS THE SECTION NUMBER.
X
X1002    READ(2,1003)SECT
X1003    FORMAT(I8)
X       WRITE(*,1015)SECT
X1015   FORMAT (' READING TABLE ',I2,'...')
X       OLDLOC=-1
X       GOTO(1190,1004,1004,1040,1030,1004,1004,1050,1060,1070,1004,
X     1    1080,0999,0999,1100,1120,1140),(SECT+1)
XC             (0)  (1)  (2)  (3)  (4)  (5)  (6)  (7)  (8)  (9)  (10)
XC            (11) (12) (13) (14) (15) (16)
X999     CALL BUG(9)
X
XC  SECTIONS 1, 2, 5, 6, 10  READ MESSAGES AND SET UP POINTERS.
X
X1004  JL1=LINUSE+1
X      JL2=LINUSE+18
X      
X        READ(2,1005)LOC,(LINES(J12),J12=JL1,JL2),KK
X1005  FORMAT(I8,19A4)
X       IF(KK.EQ.ALLSPACE)GOTO 1017
X       PRINT 1016,LOC
X1016    FORMAT (1X,'LINE FOR LOCN ',I4,' TOO LONG.')
X       CALL BUG(0)
X
X1017    IF(LOC.EQ.-1)GOTO 1002
X       DO 1006 K=1,18
X       JKK=LINUSE+19-K
X       IF(LINES(JKK).NE.ALLSPACE)GOTO 1007
X1006    CONTINUE
X       IF(LOC.EQ.0)GOTO 1004
XC  ABOVE KLUGE IS TO AVOID F40 BUG IF CRLF BROKEN ACROSS RECORD BOUNDARY
X       CALL BUG(1)
X
X1007  JL1=LINUSE+1
X        DO 1008 JK1=JL1,JKK
X1008  LINES(JK1)=IEOR(LINES(JK1),ZCLYD)
X       LINES(LINUSE)=JKK+1
X       IF(LOC.EQ.OLDLOC)GOTO 1020
X       IF(LOC.GT.OLDLOC.OR.SECT.EQ.5)GOTO 1019
X       PRINT 1018,LOC,SECT
X1018    FORMAT (/' LINE ',I3,' OUT OF ORDER IN SECTION ',I2)
X       CALL BUG(10)
X
X1019    LINES(LINUSE)=-LINES(LINUSE)
X       IF(SECT.EQ.10)GOTO 1012
X       IF(SECT.EQ.6)GOTO 1011
X       IF(SECT.EQ.5)GOTO 1010
X       IF(SECT.EQ.1)GOTO 1009
X
X       STEXT(LOC)=LINUSE
X       GOTO 1020
X
X1009    LTEXT(LOC)=LINUSE
X       GOTO 1020
X
X1010    IF(LOC.GT.0.AND.LOC.LE.MAXOBJ)PTEXT(LOC)=LINUSE
X       GOTO 1020
X
X1011    IF(LOC.GT.RTXSIZ)CALL BUG(6)
X       RTEXT(LOC)=LINUSE
X       GOTO 1020
X
X1012    CTEXT(CLSSES)=LINUSE
X       CVAL(CLSSES)=LOC
X       CLSSES=CLSSES+1
X       GOTO 1020
X
X
X1020    LINUSE=JKK+1
X       LINES(LINUSE)=-1
X       OLDLOC=LOC
X       IF(LINUSE+18.GT.LINSIZ)CALL BUG(2)
X       GOTO 1004
X
XC  THE STUFF FOR SECTION 4 IS ENCODED HERE.  EACH "FROM-LOCATION" GETS A
XC  CONTIGUOUS SECTION OF THE "TRAVEL" ARRAY.  EACH ENTRY IN TRAVEL IS
XC  NEWLOC*1000 + KEYWORD (FROM SECTION 3, MOTION VERBS), AND IS NEGATED IF
XC  THIS IS THE LAST ENTRY FOR THIS LOCATION.  KEY(N) IS THE INDEX IN TRAVEL
XC  OF THE FIRST OPTION AT LOCATION N.
X
X1030    READ(2,1031)LOC,JNEW,(DTK(I),I=1,8)
X1031  FORMAT(2I8,8(A6,2X))
X       IF(LOC.EQ.0)GOTO 1030
XC  ABOVE KLUGE IS TO AVOID AFOREMENTIONED F40 BUG
X       IF(LOC.EQ.-1)GOTO 1002
X       IF(LOC.GE.OLDLOC)GOTO 1032
X       PRINT 1018,LOC,SECT
X       CALL BUG(10)
X
X1032    IF(KEY(LOC).NE.0)GOTO 1033
X       KEY(LOC)=TRVS
X       GOTO 1035
X
X1033    TRAVEL(TRVS-1)=-TRAVEL(TRVS-1)
X1035    DO 1037 L=1,8
X       IF(DTK(L).EQ.'      ')GOTO 1039
X       K=VOCABX(DTK(L),-1)
X       TRAVEL(TRVS)=JNEW*1000+K
X       TRVS=TRVS+1
X       IF(TRVS.EQ.TRVSIZ)CALL BUG(3)
X1037    CONTINUE
X1039    TRAVEL(TRVS-1)=-TRAVEL(TRVS-1)
X       GOTO 1030
X
XC  HERE WE READ IN THE VOCABULARY.  KTAB(N) IS THE WORD NUMBER, ATAB(N) IS
XC  THE CORRESPONDING WORD.  THE -1 AT THE END OF SECTION 3 IS LEFT IN KTAB
XC  AS AN END-MARKER.  THE WORDS ARE GIVEN A MINIMAL HASH TO MAKE READING THE
XC  CORE-IMAGE HARDER.  
X
X1040    DO 1042 TABNDX=1,TABSIZ
X1043    READ(2,1041)KTAB(TABNDX),ATAB(TABNDX)
X1041  FORMAT(I8,A6)
XC       IF(KTAB(TABNDX).EQ.0)GOTO 1043
XC  ABOVE KLUGE IS TO AVOID AFOREMENTIONED F40 BUG
X       IF(KTAB(TABNDX).EQ.-1)GOTO 1002
X1042  CONTINUE
X       CALL BUG(4)
X
XC  READ IN THE INITIAL LOCATIONS FOR EACH OBJECT.  ALSO THE IMMOVABILITY INFO.
XC  PLAC CONTAINS INITIAL LOCATIONS OF OBJECTS.  FIXD IS -1 FOR IMMOVABLE
XC  OBJECTS (INCLUDING THE SNAKE), OR = SECOND LOC FOR TWO-PLACED OBJECTS.
XC  WEIGHT CONTAINS THE HEAVINESS OF EACH OBJ, ON A SCALE OF 1-10.
X
X1050    READ(2,1052) OBJ,J,K,KK,DL,DLL,(TK(I),I=1,3)
X1052  FORMAT(4I8,2(A6,2X),3I8)
X       IF(OBJ.EQ.-1)GOTO 1002
X       IF(OBJ.LE.0.OR.OBJ.GT.MAXOBJ)CALL BUG(17)
X       PLAC(OBJ)=J
X       FIXD(OBJ)=K
X       WEIGHT(OBJ)=KK
XC  READ DEFAULT OBJECT NAMES.  FOR USE IN 'TAKE ALL' COMMANDS.
XC  READ POINT VALUES FOR TREASURES.
X       K=1
X       IF(TK(3).LT.0)K=-1
X       POINTS(OBJ)= (TK(1)*1000000*K) + (TK(2)*1000*K) + TK(3)
X       GOTO 1050
X
XC  READ DEFAULT MESSAGE NUMBERS FOR ACTION VERBS, STORE IN ACTSPK.
X
X1060    READ(2,1061)VERB,J
X1061    FORMAT(10I8)
X       IF(VERB.EQ.-1)GOTO 1002
X       ACTSPK(VERB)=J
X       GOTO 1060
X
XC  READ INFO ABOUT AVAILABLE LIQUIDS AND OTHER CONDITIONS, STORE IN COND.
X
X1070    READ(2,1061)K,(TK(I),I=1,9)
X       IF(K.EQ.-1)GOTO 1002
X       DO 1071 I=1,9
X       LOC=TK(I)
X       IF(LOC.EQ.0)GOTO 1070
X	IF(K.GT.7)GOTO 1072
X      IF(BITSET(LOCCON(LOC),K))CALL BUG(8)
X        LOCCON(LOC)=LOCCON(LOC)+BITS(K)
X	GOTO 1071
X1072	LOCCON(LOC)=IOR(LOCCON(LOC),(256*(K-7)))
X1071	CONTINUE
X       GOTO 1070
X
XC  READ DATA FOR HINTS.
X
X1080    HNTMAX=0
X1081    READ(2,1061)K,(TK(I),I=1,9)
X       IF(K.EQ.-1)GOTO 1002
X       IF(K.EQ.0)GOTO 1081
X       IF(K.LT.0.OR.K.GT.HNTSIZ)CALL BUG(7)
X       DO 1083 I=1,4
X1083    HINTS(K,I)=TK(I)
X       HNTMAX=MAX0(HNTMAX,K)
X       GOTO 1081
X
XC  SECTION 14 IS THE PREPOSITION TABLE.
X1100    READ(2,1101)DK,DKK,(DTK(I),I=1,8)
X1101  FORMAT(10(A6,2X))
XC       IF(DK.EQ.0)GOTO 1100
XC  ABOVE KLUGE IS TO AVOID AFOREMENTIONED F40 BUG
X       IF(DK.EQ.'-1    ')GOTO 1002
X       VERB=VAL(VOCABX(DK,-4))
X       DJJ=DK
X       IF(VERB.EQ.-1)GOTO 7645
X       PREP=VAL(VOCABX(DKK,-6))
X       DJJ=DKK
X       IF(PREP.EQ.-1)GOTO 7645
X
X       IF(VKEY(VERB).NE.0)GOTO 1104
X       VKEY(VERB)=PTBS
X       GOTO 1105
X
X7645    PRINT 1107,DJJ
X       CALL BUG(14)
X       GOTO 1100
X
X
X1104    PTAB(PTBS-1)=-PTAB(PTBS-1)
X1105    DO 1110 L=1,8
X       IF(DTK(L).EQ.'      ')GOTO 1111
X       K=VAL(VOCABX(DTK(L),-3))
X       IF(K.NE.-1)GOTO 1108
X       K=999
X       IF(L.EQ.1.AND.DTK(1).EQ.'ANY   ')GOTO 1108
X       DJJ=DTK(L)
X1106    PRINT 1107,DJJ
X1107    FORMAT(/' UNRECOGNIZED WORD "',A6,'" IN PREP/OBJ TABLE.')
X       CALL BUG(14)
X
X1108    PTAB(PTBS)=PREP*1000+K
X       PTBS=PTBS+1
X       IF(PTBS.EQ.PTBSIZ)CALL BUG(15)
X1110    CONTINUE
X1111    PTAB(PTBS-1)=-PTAB(PTBS-1)
X       GOTO 1100
X
XC  READ CONDITION BITS FOR OBJECTS.  KK IS THE BIT; TK(I), THE OBJ LIST.
X
X1120    READ(2,1061)IKK,(TK(I),I=1,9)
X       IF(IKK.EQ.-1)GOTO 1002
X       DO 1125 I=1,9
X       OBJ=TK(I)
X       IF(OBJ.EQ.0)GOTO 1120
X       IF(OBJ.LE.0.OR.OBJ.GT.MAXOBJ)CALL BUG(17)
X      IF(.NOT.BITSET(OBJCON(OBJ),IKK))GOTO 1125
X      WRITE(6,101)OBJ,IKK
X101   FORMAT('BIT SET TWICE OBJ=',I5,'  BIT= ',I5)
X      CALL BUG(16)
X1125    OBJCON(OBJ)=IOR(OBJCON(OBJ),BITS(IKK))
X       GOTO 1120
X
XC  SECTION 17 IS THE ADJECTIVE TABLE.
X1140    CONTINUE
X        READ(2,1141)DK,(DTK(I),I=1,9)
X1141    FORMAT(10(A6,2X))
XC       IF(DK.EQ.0)GOTO 1140
XC  ABOVE KLUGE IS TO AVOID AFOREMENTIONED F40 BUG
X       IF(DK.EQ.'-1    ')GOTO 1002
X       ADJ=VOCABX(DK,-7)
X       DJJ=DK
X       IF(ADJ.EQ.-1.OR.CLASS(ADJ).NE.6)GOTO 1148
X       ADJ=VAL(ADJ)
X       IF(ADJKEY(ADJ).NE.0)GOTO 1142
X       ADJKEY(ADJ)=ATBS
X       GOTO 1143
X
X1142    ADJTAB(ATBS-1)=-ADJTAB(ATBS-1)
X1143    DO 1145 L=1,9
X       IF(DTK(L).EQ.'      ')GOTO 1146
X       DJJ=DTK(L)
X       K=VOCABX(DTK(L),-3)
X       IF(K.EQ.-1.OR.CLASS(K).NE.2)GOTO 1148
X       ADJTAB(ATBS)=VAL(K)
X       ATBS=ATBS+1
X       IF(ATBS.EQ.MAXOBJ)CALL BUG(18)
X1145    CONTINUE
X1146    ADJTAB(ATBS-1)=-ADJTAB(ATBS-1)
X       GOTO 1140
X
X1148    PRINT 1149,DJJ
X1149    FORMAT(/' UNRECOGNIZED WORD "',A6,'" IN ADJECTIVE TABLE.')
X       CALL BUG(13)
X
X
XC  EVERYTHING IS READ!  NOW FINISH CONSTRUCTING INTERNAL DATA FORMAT.
XC  DEFINE SOME HANDY MNEMONICS.  THESE CORRESPOND TO OBJECT NUMBERS.
XC  (INCLUDES TREASURES.)
X
X1190	CLOSE(UNIT=2)
X        ANVIL=VOCABX('ANVIL ',2)
X       AXE=VOCABX('AXE   ',2)
X       BATTER=VOCABX('BATTER',2)
X       BEAR=VOCABX('BEAR  ',2)
X       BEES=VOCABX('BEES  ',2)
X       BILLBD=VOCABX('BILLBO',2)
X       BIRD=VOCABX('BIRD  ',2)
X       BOAT=VOCABX('BOAT  ',2)
X       BOOK=VOCABX('BOOK  ',2)
X       BOOK2=BOOK+1
X       BOOTH=VOCABX('BOOTH ',2)
X       BOTTLE=VOCABX('BOTTLE',2)
X       BRUSH=VOCABX('BRUSH ',2)
X       CAGE=VOCABX('CAGE  ',2)
X       CAKES=VOCABX('CAKES ',2)
X       CARVNG=VOCABX('CARVIN',2)
X       CASK=VOCABX('CASK  ',2)
X       CHAIN=VOCABX('CHAIN ',2)
X       CHASM=VOCABX('CHASM ',2)
X       CHASM2=CHASM+1
X       CHEST=VOCABX('CHEST ',2)
X       CLAM=VOCABX('CLAM  ',2)
X       CLOAK=VOCABX('CLOAK ',2)
X       COINS=VOCABX('COINS ',2)
X       CROWN=VOCABX('CROWN ',2)
X       DOG=VOCABX('DOG   ',2)
X       DOOR=VOCABX('DOOR  ',2)
X       DRAGON=VOCABX('DRAGON',2)
X       DWARF=VOCABX('DWARF ',2)
X       EGGS=VOCABX('EGGS  ',2)
X       EMRALD=VOCABX('EMERAL',2)
X       FISSUR=VOCABX('FISSUR',2)
X       FLOWER=VOCABX('FLOWER',2)
X       FOOD=VOCABX('FOOD  ',2)
X       GNOME=VOCABX('GNOME ',2)
X       GRAIL=VOCABX('GRAIL ',2)
X       GRATE=VOCABX('GRATE ',2)
X       HIVE=VOCABX('HIVE  ',2)
X       HONEY=VOCABX('HONEY ',2)
X       HORN=VOCABX('HORN  ',2)
X       JEWELS=VOCABX('JEWELS',2)
X       KEYS=VOCABX('KEYS  ',2)
X       KNIFE=VOCABX('KNIFE ',2)
X       LAMP=VOCABX('LAMP  ',2)
X       LYRE=VOCABX('LYRE  ',2)
X       MAGZIN=VOCABX('MAGAZI',2)
X       MESSAG=VOCABX('MESSAG',2)
X       MIRROR=VOCABX('MIRROR',2)
X       MUSHRM=VOCABX('MUSHRO',2)
X       NUGGET=VOCABX('NUGGET',2)
X       OIL=VOCABX('OIL   ',2)
XC       OIL2=OIL+1
X       OYSTER=VOCABX('OYSTER',2)
X       PEARL=VOCABX('PEARL ',2)
X       PHONE=VOCABX('PHONE ',2)
X       PILLOW=VOCABX('PILLOW',2)
X       PLANT=VOCABX('PLANT ',2)
X       PLANT2=PLANT+1
X       POLE=VOCABX('POLE  ',2)
X       POSTER=VOCABX('POSTER',2)
X       PYRAM=VOCABX('PYRAMI',2)
X       RADIUM=VOCABX('RADIUM',2)
X       RING=VOCABX('RING  ',2)
X       ROCKS=VOCABX('ROCKS ',2)
X       ROD=  VOCABX('ROD   ',2)
X       ROD2=ROD+1
X       RUG=VOCABX('RUG   ',2)
X       SAFE=VOCABX('SAFE  ',2)
X	SAPPHI=VOCABX('SAPPHI',2)
X       SHIELD=VOCABX('TUBE  ',2)
X       SHOES=VOCABX('SHOES ',2)
X       SKEY=VOCABX('KEY   ',2)
X       SLUGS=VOCABX('SLUGS ',2)
X       SNAKE=VOCABX('SNAKE ',2)
X       SPICES=VOCABX('SPICES',2)
X	SPHERE=VOCABX('SPHERE',2)
X       STEPS=VOCABX('STEPS ',2)
X       STICKS=VOCABX('STICKS',2)
X       SWORD=VOCABX('SWORD ',2)
X       TABLET=VOCABX('TABLET',2)
X       TDOOR=DOOR+1
X       TDOOR2=TDOOR+1
X       PDOOR=TDOOR2+1
X       TRIDNT=VOCABX('TRIDEN',2)
X       TROLL=VOCABX('TROLL ',2)
X       TROLL2=TROLL+1
X       VASE=VOCABX('VASE  ',2)
X       VEND=VOCABX('MACHIN',2)
X       WALL=VOCABX('WALL  ',2)
X       WALL2=WALL+1
X       WATER=VOCABX('WATER ',2)
XC       WATER2=WATER+1
X       WINE=VOCABX('WINE  ',2)
XC       WINE2=WINE+1
X       WUMPUS=VOCABX('WUMPUS',2)
X
XC  THESE ARE MOTION-VERB NUMBERS.
X
X       BACK=VOCABX('BACK  ',1)
X       CAVE=VOCABX('CAVE  ',1)
X       DPRSSN=VOCABX('DEPRES',1)
X       ENTRNC=VOCABX('ENTRAN',1)
X       EXIT=VOCABX('EXIT  ',1)
X       NULL=VOCABX('NULL  ',1)
X
XC  AND SOME ACTION VERBS.
X
X       FIND=VOCABX('FIND  ',3)
X       GO=VOCABX('GO    ',3)
X       HIT=VOCABX('HIT   ',3)
X       LOOK=VOCABX('LOOK  ',3)
X       YELL=VOCABX('CALL  ',3)
X       INVENT=VOCABX('INVENT',3)
X       LEAVE=VOCABX('LEAVE ',3)
X       LOCK=VOCABX('LOCK  ',3)
X       SAY=VOCABX('SAY   ',3)
X       SHUT=VOCABX('CLOSE ',3)
X       TAKE=VOCABX('TAKE  ',3)
X       THROW=VOCABX('THROW ',3)
X       UNLOCK=VOCABX('UNLOCK',3)
X       WEAR=VOCABX('WEAR  ',3)
X       YANK=VOCABX('YANK  ',3)
X
XC  AND A FEW PREPOSITIONS.  PREFIX 'PREP' TO DISTINGUISH THEM FROM FUNCTIONS & R
X
X       PREPAT=VOCABX('AT    ',5)
X       PREPDN=VOCABX('DOWN  ',5)
X       PREPFR=VOCABX('FROM  ',5)
X       PREPIN=VOCABX('IN    ',5)
X       PREPOF=VOCABX('OFF   ',5)
X       PREPON=VOCABX('ON    ',5)
X
XC  A POPULAR LOCATION IS:
X
X       Y2=33
X1200	CONTINUE
X
XC  HAVING READ IN THE DATABASE, CERTAIN THINGS ARE NOW CONSTRUCTED.  PROPS ARE
XC  SET TO ZERO.  WE FINISH SETTING UP COND BY CHECKING FOR FORCED-MOTION TRAVEL
XC  ENTRIES.  THE PLAC AND FIXD ARRAYS ARE USED TO SET UP ATLOC(N) AS THE FIRST
XC  OBJECT AT LOCATION N, AND LINK(OBJ) AS THE NEXT OBJECT AT THE SAME LOCATION
XC  AS OBJ.  (OBJ>MAXOBJ INDICATES THAT FIXED(OBJ-MAXOBJ)=LOC; LINK(OBJ) IS STILL
XC  THE CORRECT LINK TO USE.)  ABB IS ZEROED; IT CONTROLS WHETHER THE ABBREVIATED
XC  DESCRIPTION IS PRINTED.  COUNTS MOD 5 UNLESS "LOOK" IS USED.
X
X       LOC = 1
X       DO 1201 I=1,MAXOBJ
X       PLACE(I)=0
X       PROP(I)=0
X       HOLDER(I)=0
X       HLINK(I)=0
X       LINK(I)=0
X1201    LINK(I+MAXOBJ)=0
X
X       DO 1202 I=1,LOCSIZ
X       ABB(I)=0
X       IF(LTEXT(I).EQ.0.OR.KEY(I).EQ.0)GOTO 1202
X       K=KEY(I)
X       IF(MOD(IABS(TRAVEL(K)),0001000).EQ.1)LOCCON(I)=2
X1202    ATLOC(I)=0
X
XC  SET UP THE ATLOC AND LINK ARRAYS AS DESCRIBED ABOVE.  WE'LL USE THE DROP
XC  SUBROUTINE, WHICH PREFACES NEW OBJECTS ON THE LISTS.  SINCE WE WANT THINGS
XC  IN THE OTHER ORDER, WE'LL RUN THE LOOP BACKWARDS.  IF THE OBJECT IS IN TWO
XC  LOCS, WE DROP IT TWICE.  THIS ALSO SETS UP "PLACE" AND "FIXED" AS COPIES OF
XC  "PLAC" AND "FIXD".  ALSO, SINCE TWO-PLACED OBJECTS ARE TYPICALLY BEST
XC  DESCRIBED LAST, WE'LL DROP THEM FIRST.
X
X       DO 1206 I=1,MAXOBJ
X       K=MAXOBJ+1-I
X       IF(FIXD(K).LE.0)GOTO 1206
X       CALL DROP(K+MAXOBJ,FIXD(K))
X       CALL DROP(K,PLAC(K))
X1206    CONTINUE
X
X       DO 1207 I=1,MAXOBJ
X       K=MAXOBJ+1-I
X       FIXED(K)=FIXD(K)
X1207    IF(PLAC(K).NE.0.AND.FIXD(K).LE.0)CALL DROP(K,PLAC(K))
X
XC  MAKE SURE ALL THE RIGHT THINGS GET CLOSED AND LOCKED, ETC., BEFORE
XC  WE GET STARTED.
X
X
XC  TREASURES, AS NOTED EARLIER, ARE OBJECTS WITH BITSET(14) IN OBJCON.
XC  THEIR PROPS ARE INITIALLY -1, AND ARE SET TO 0 THE FIRST TIME THEY ARE
XC  DESCRIBED.  TALLY KEEPS TRACK OF HOW MANY ARE NOT YET FOUND, SO WE KNOW
XC  WHEN TO CLOSE THE CAVE.  TALLY2 COUNTS HOW MANY CAN NEVER BE FOUND (E.G. IF
XC  LOST BIRD OR BRIDGE).
X
X       TALLY=0
X       TALLY2=0
X       DO 1240 I=1,MAXOBJ
X       IF(.NOT.TREASR(I))GOTO 1240
X       IF(PTEXT(I).NE.0)PROP(I)=-1
X1240    TALLY=TALLY-PROP(I)
X
X
XC  CLEAR THE HINT STUFF.  HINTLC(I) IS HOW LONG HE'S BEEN AT LOC WITH COND BIT
XC  I.  HINTED(I) IS TRUE IFF HINT I HAS BEEN USED.
X
X       DO 1300 I=1,HNTMAX
X       HINTED(I)=.FALSE.
X1300    HINTLC(I)=0
X
XC  INITIALISE THE DWARVES.  DLOC IS LOC OF DWARVES, HARD-WIRED IN.  ODLOC IS
XC  PRIOR LOC OF EACH DWARF, INITIALLY GARBAGE.  DALTLC IS ALTERNATE INITIAL LOC
XC  FOR DWARF, IN CASE ONE OF THEM STARTS OUT ON TOP OF THE ADVENTURER.  (NO 2
XC  OF THE 5 INITIAL LOCS ARE ADJACENT.)  DSEEN IS TRUE IF DWARF HAS SEEN HIM.
XC  DFLAG CONTROLS THE LEVEL OF ACTIVATION OF ALL THIS:
XC       0       NO DWARF STUFF YET (WAIT UNTIL REACHES HALL OF MISTS)
XC       1       REACHED HALL OF MISTS, BUT HASN'T MET FIRST DWARF
XC       2       MET FIRST DWARF, OTHERS START MOVING, NO KNIVES THROWN YET
XC       3       A KNIFE HAS BEEN THROWN (FIRST SET ALWAYS MISSES)
XC       3+      DWARVES ARE MAD (INCREASES THEIR ACCURACY)
XC  SIXTH DWARF IS SPECIAL (THE PIRATE).  HE ALWAYS STARTS AT HIS CHEST'S
XC  EVENTUAL LOCATION INSIDE THE MAZE.  THIS LOC IS SAVED IN CHLOC FOR REF.
XC  THE DEAD END IN THE OTHER MAZE HAS ITS LOC STORED IN CHLOC2.
X
X       CHLOC=114
X       CHLOC2=140
X       DO 1700 I=1,DWFMAX
X1700    DSEEN(I)=.FALSE.
X       DFLAG=0
X       DLOC(1)=PLAC(SNAKE)
X       DLOC(2)=PLAC(BOOTH)
X       DLOC(3)=Y2
X       DLOC(4)=44
X       DLOC(5)=PLAC(CLAM)
XC       DLOC(6)=PLAC(VEND)
X       DLOC(DWFMAX)=CHLOC
X       DALTLC=PLAC(NUGGET)
X
XC  OTHER RANDOM FLAGS AND COUNTERS, AS FOLLOWS:
XC       ABBNUM  HOW OFTEN WE SHOULD PRINT NON-ABBREVIATED DESCRIPTIONS
XC       BCROSS  NUMBER OF TIMES COLLAPSING BRIDGE HAS BEEN TRAVERSED.
XC       BONUS   USED TO DETERMINE AMOUNT OF BONUS IF HE REACHES CLOSING
XC       CHASE   TELLS HOW CLOSE THE WUMPUS IS TO GOBBLING HIM UP
XC       CLOCK1  NUMBER OF TURNS FROM FINDING LAST TREASURE TILL CLOSING
XC       CLOCK2  NUMBER OF TURNS FROM FIRST WARNING TILL BLINDING FLASH
XC       CLOCK3  NUMBER OF TURNS IN REPOSITORY TILL PHONE RINGS.
XC               AFTER TICKING TO 0, TICKS 7 TIMES TO WAKE DWARVES.
XC       COMBO   CURRENT PROGRESS IN GIVING SAFE'S COMBINATION
XC       DETAIL  HOW OFTEN WE'VE SAID "NOT ALLOWED TO GIVE MORE DETAIL"
XC       DKILL   NUMBER OF DWARVES KILLED (UNUSED IN SCORING, NEEDED FOR MSG)
XC       FOOBAR  CURRENT PROGRESS IN SAYING "FEE FIE FOE FOO".
XC       HEALTH  PERCENTAGE OF MAXIMUM (100) FITNESS
XC       IWEST   HOW MANY TIMES HE'S SAID "WEST" INSTEAD OF "W"
XC       KNFLOC  0 IF NO KNIFE HERE, LOC IF KNIFE HERE, -1 AFTER CAVEAT
XC       LIMIT   LIFETIME OF LAMP (NOT SET HERE)
XC       MAXDIE  NUMBER OF REINCARNATION MESSAGES AVAILABLE (UP TO 5)
XC       NUMDIE  NUMBER OF TIMES KILLED SO FAR
XC       TERSE   IF TRUE, NEVER PRINT LONG LOCATION DESCRIPTIONS
XC       TURNS   TALLIES HOW MANY COMMANDS HE'S GIVEN (IGNORES YES/NO)
XC       WASTE   TELLS HOW LONG HE HAS USED LAMP IN LIGHTED AREA.
X
XC       LOGICALS WERE EXPLAINED EARLIER
X
X       ABBNUM=5
X       BCROSS=0
X       BONUS=0
X       CLOCK1=30
X       CLOCK2=50
X       CLOCK3=20+RANZ(20)
X       CHASE=0
X       CLOSED=.FALSE.
X       CLOSNG=.FALSE.
X       COMBO=0
X       DETAIL=0
X       DKILL=0
X       FOOBAR=0
X       GAVEUP=.FALSE.
X       HEALTH=100
X       IWEST=0
X       KNFLOC=0
X       LMWARN=.FALSE.
X       DO 1800 I=0,4
X1800    IF(RTEXT(2*I+81).NE.0)MAXDIE=I+1
X       NUMDIE=0
X       PANIC=.FALSE.
X       SCORNG=.FALSE.
X       TERSE=.FALSE.
X       TURNS=0
X       WASTE=0
X
XC  SETUP THE LIQUIDS ACCORDING TO CONTAINER PROP VALUES
X       LIQTYP(1)=WATER
X       LIQTYP(2)=0
X       LIQTYP(3)=OIL
X       LIQTYP(4)=0
X       LIQTYP(5)=WINE
X
X       PROP(POLE)=1
X       PROP(SKEY)=1
X       PLACE(WATER)=-1
X       CALL INSERT(WATER,BOTTLE)
X       PLACE(BOOK)=-1
X       CALL INSERT(BOOK,SAFE)
X
XC  AND CLEAR OUT ANY LEFTOVER WORD VECTORS...
X       CALL CLRLIN
X       DO 1810 WDX=1,35
X1810    WORDS(WDX)=0
X       WDX=0
X
XC  IF SETUP=1, REPORT ON AMOUNT OF ARRAYS ACTUALLY USED, TO PERMIT REDUCTIONS.
X
X
X       JJ=0
X       DO 1989 K=1,VKYSIZ
X1989    IF(VKEY(K).NE.0)JJ=JJ+1
X
X       DO 1998 K=1,LOCSIZ
X       KK=LOCSIZ+1-K
X       IF(LTEXT(KK).NE.0)GOTO 1997
X1998    CONTINUE
X
X1997    LL=0
X       OBJ=0
X       DO 1996 K=1,MAXOBJ
X       IF(TREASR(K))LL=LL+1
X1996    IF(PTEXT(K).NE.0)OBJ=OBJ+1
X
X       DO 1995 K=1,TABNDX
X1995    IF(KTAB(K)/1000.EQ.2)VERB=KTAB(K)-2000
X
X       DO 1994 K=1,RTXSIZ
X       J=RTXSIZ+1-K
X       IF(RTEXT(J).NE.0)GOTO 1993
X1994    CONTINUE
X
X1993    CONTINUE
X1992    CONTINUE
X
X
X1991  CALL RATING(SCORE,0,.FALSE.,.FALSE.,.FALSE.,.FALSE.,
X     1   HNTMAX) 
X       K=MAXOBJ
X        PRINT 1999,LINUSE,LINSIZ,TRVS,TRVSIZ,TABNDX,TABSIZ,KK,
X     1  LOCSIZ,OBJ,K,LL,VERB,VRBSIZ,J,RTXSIZ,CLSSES,CLSMAX,
X     2  HNTMAX,HNTSIZ,PTBS,PTBSIZ,JJ,VERB,
X     3  MXSCOR
X1999    FORMAT (' TABLE SPACE USED:'/
X     1  ' ',I6,' OF ',I6,' WORDS OF MESSAGES'/
X     2  ' ',I6,' OF ',I6,' TRAVEL OPTIONS'/
X     3  ' ',I6,' OF ',I6,' VOCABULARY WORDS'/
X     4  ' ',I6,' OF ',I6,' LOCATIONS'/
X     5  ' ',I6,' OF ',I6,' OBJECTS OF WHICH ',I2,' ARE TREASURES.'/
X     6  ' ',I6,' OF ',I6,' ACTION VERBS'/
X     7  ' ',I6,' OF ',I6,' RTEXT MESSAGES'/
X     8  ' ',I6,' OF ',I6,' CLASS MESSAGES'/
X     9  ' ',I6,' OF ',I6,' HINTS'/
X     2  ' ',I6,' OF ',I6,' VERB/PREP/OBJ OPTIONS'/
X     3  ' ',I6,' OF ',I6,' VERBS TAKE PREPOSITIONS'/
X     4  /' MAXIMUM SCORE FOR THIS VERSION IS ',I4,' POINTS.'/
X     5  )
X8445	OPEN (UNIT=16,FILE='ADVTXT',STATUS='UNKNOWN',FORM=
X     1   'UNFORMATTED',ACCESS='SEQUENTIAL')
X        WRITE(16)ISWIZ,ADJKEY,ADJTAB,ADJSIZ,OPENBT,LOCKBT,BURNBT,WEARBT
X        WRITE(16)BLKLIN,LOCCON,OBJCON,NUMDIE,MAXDIE,TURNS,KILLED
X        WRITE(16)DWARF,KNIFE,KNFLOC,DFLAG,DSEEN,DLOC,ODLOC,DWFMAX
X        WRITE(16)HOLDER,HLINK,HINTLC,HINTED,HINTS,HNTSIZ,HNTMIN
X        WRITE(16)BOTTLE,CASK,WATER,OIL,WINE,LIQTYP
X        WRITE(16)LOC,OLDLOC,OLDLC2,NEWLOC,MAXLOC
X        WRITE(16) LTEXT,STEXT,KEY,ABB,LOCSIZ
X        WRITE(16) BACK,CAVE,DPRSSN,ENTRNC,EXIT,GO,LOOK,NULL,
X     1 AXE,BEAR,BOAT,BOOK,BOOK2,BOOTH,CARVNG,CHASM,CHASM2,DOOR,GNOME,
X     2 GRATE,LAMP,PDOOR,PLANT,PLANT2,ROCKS,ROD,ROD2,SAFE,
X     3 TDOOR,TDOOR2,TROLL,TROLL2,EMRALD,SPICES,
X     4 FIND,YELL,INVENT,LEAVE,POUR,SAY,TAKE,THROW,
X     5 IWEST,PHUCE,TK
X
X       WRITE(16)PLAC,FIXD,WEIGHT,PROP,POINTS
X       WRITE(16) ATLOC,LINK,PLACE,
X     1          FIXED,MAXOBJ
X       WRITE(16) VKEY,PTAB,VKYSIZ,PTBSIZ,TRAVEL
X       WRITE(16)LINES,RTEXT,PTEXT,WDX,KTAB,TABSIZ
X       WRITE(16) VERBS,VRBX,OBJS,
X     1  OBJX,IOBJS,IOBX,PREP,WORDS
X
X       WRITE(16)ABBNUM,ADJ,ATBS,ATTACK,BCROSS,BONUS,CHASE,
X     1   CLOCK1,CLOCK2,CLOCK3,CLOSED,CLOSNG,CLSMAX,COMBO,DEADBT,
X     2   DETAIL,DKILL,DTOTAL,DWARFN,FLG239,
X     3   FOO,FOOBAR,FOOD,GAVEUP,HEALTH,HINT,HIT,HNTMAX,I,IKK,ILOC,
X     4   IOBJ,J,JJ,JK1,JKK,K,K1,KK,L,L1,LIMIT,
X     5   LINSIZ,LL,LMWARN,LOCK,LOGOUT,MESSAG,OBJ,PANIC,
X     6   PORTAL,PTBS,RDFLAG,RETN,RTXSIZ,SCORE,SCORNG,SECT,
X     7   SKEY,SLOC,SPK,START,STICK,TABNDX,TALLY,TALLY2,TERSE,
X     8   TRVS,TRVSIZ,VEND,VERB,VRBSIZ,WASTE,WKDAY,WKEND,WZDARK,
X     9   YEA,ACTSPK,CTEXT,CVAL,HNAME
X       WRITE(16)ANVIL,BATTER,BEES,BILLBD,BIRD,BRUSH,CAGE,
X     1   CAKES,CHAIN,CHEST,CHLOC,CHLOC2,CLAM,CLOAK,CLSSES,COINS,CROWN,
X     2   DALTLC,DOG,DRAGON,EGGS,FISSUR,FLOWER,GATLOC,GRAIL,HIVE,
X     3   HONEY,HORN,JEWELS,KEYS,LYRE,
X     4   MAGZIN,MIRROR,MUSHRM,MXSCOR,NUGGET,OYSTER,PEARL,PHONE,
X     5   PILLOW,POLE,POSTER,PREPAT,PREPDN,PREPFR,PREPIN,PREPOF,
X     6   PREPON,PYRAM,RADIUM,RING,RUG,SAPPHI,SHIELD,SHOES,
X     7   SHUT,SLUGS,SNAKE,SPHERE,STEPS,STICKS,SWORD,TABLET,TRIDNT,
X     8   UNLOCK,VASE,WALL,WALL2,WEAR,WUMPUS,Y2,YANK
X       WRITE(16)DTK,ATAB,VTXT,OTXT,IOTXT
X     1      ,TXT
X        CLOSE(16)
X
X	STOP
X	END
END_OF_asetup.f
if test 29694 -ne `wc -c <asetup.f`; then
    echo shar: \"asetup.f\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f iors.f -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"iors.f\"
else
echo shar: Extracting \"iors.f\" \(704 characters\)
sed "s/^X//" >iors.f <<'END_OF_iors.f'
Xc     this file is not needed for most modern Fortran compilers
Xc     it is for the f2c system or as a TEMPLATE for code if your
Xc     Fortran compiler lacks these functions
X      integer function ior(i,j)
X      implicit integer (a-z)
X      ior = i+j
Xc        change the '+' above to '|' in the c code
Xc        emitted by f2c
X      return
X      end
X      integer function iand(i,j)
X      implicit integer (a-z)
X      iand = i+j
Xc        change the '+' above to '&' in the c code
Xc        emitted by f2c
X      return
X      end
X      integer function ieor(i,j)
X      implicit integer (a-z)
X      ieor = i+j
Xc        change the '+' above to '^' in the c code
Xc        emitted by f2c
X      return
X      end
X
END_OF_iors.f
if test 704 -ne `wc -c <iors.f`; then
    echo shar: \"iors.f\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f advdat -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"advdat\"
else
echo shar: Extracting \"advdat\" \(132545 characters\)
sed "s/^X//" >advdat <<'END_OF_advdat'
X1
X1       You are standing at the end of a road before a small brick building.
X1       Around you is a forest.  A small stream flows out of the building and
X1       down a gully.
X2       You have walked up a hill, still in the forest.  The road slopes back
X2       down the other side of the hill.  There is a building in the distance.
X3       You are inside a building, a well house for a large spring.  Off
X3       to one side is a small pantry.
X4       You are in a valley in the forest beside a stream tumbling along a
X4       rocky bed.
X5       You are in open forest, with a deep valley to one side.  Not far
X5       is a large billboard.
X6       You are in open forest near both a valley and a road.
X7       At your feet all the water of the stream splashes into a 2-inch slit
X7       in the rock.  Downstream the streambed is bare rock.
X8       You are in a 20-foot depression floored with bare dirt.  Set into the
X8       dirt is a strong steel grate mounted in concrete.  A dry streambed
X8       leads into the depression.
X9       You are in a small chamber beneath a 3x3 steel grate to the surface.
X9       A low crawl over cobbles leads inward to the west.
X10      You are crawling over cobbles in a low passage.  There is a dim light
X10      at the east end of the passage.
X11      You are in a debris room filled with stuff washed in from the surface.
X11      A low wide passage with cobbles becomes plugged with mud and debris
X11      here, but an awkward canyon leads upward and west.  A note on the wall
X11      says "Magic Word XYZZY".
X12      You are in an awkward sloping east/west canyon.
X13      You are in a splendid chamber thirty feet high.  The walls are frozen
X13      rivers of orange stone.  An awkward canyon and a good passage exit
X13      from east and west sides of the chamber.
X14      At your feet is a small pit breathing traces of white mist.  An east
X14      passage ends here except for a small crack leading on.
X15      You are at one end of a vast hall stretching forward out of sight to
X15      the west.  There are openings to either side.  Nearby, a wide stone
X15      staircase leads downward.  The hall is filled with wisps of white mist
X15      swaying to and fro almost as if alive.  A cold wind blows up the
X15      staircase.  There is a passage at the top of a dome behind you.
X16      The crack is far too small for you to follow.
X17      You are on the east bank of a fissure slicing clear across the hall.
X17      The mist is quite thick here, and the fissure is too wide to jump.
X18      This is a low room with a crude note on the wall.  The note says,
X18      "You won't get it up the steps".
X19      You are in the Hall of the Mountain King, with passages off in all
X19      directions.
X20      You are at the bottom of the pit with a broken neck.
X21      You didn't make it.
X22      The dome is unclimbable.
X23      You are at the west end of the Twopit Room.  There is a large hole in
X23      the wall above the pit at this end of the room.
X24      You are at the bottom of the eastern pit in the Twopit Room.  There is
X24      a small pool of oil in one corner of the pit.
X25      You are at the bottom of the western pit in the Twopit Room.  There is
X25      a large hole in the wall about 25 feet above you.
X26      You clamber up the plant and scurry through the hole at the top.
X27      You are on the west side of the fissure in the Hall of Mists.
X28      You are in a low N/S passage at a hole in the floor.  The hole goes
X28      down to an E/W passage.
X29      You are in the South Side Chamber.
X30      You are in the West Side Chamber of the Hall of the Mountain King.
X30      A passage continues west and up here.
X31      <$$<
X32      You can't get by the snake.
X33      You are in a large room, with a passage to the south, a passage to the
X33      west, and a wall of broken rock to the east.  There is a large "Y2" on
X33      a rock in the room's center.
X34      You are in a jumble of rock, with cracks everywhere.
X35      You're at a low window overlooking a huge pit, which extends up out of
X35      sight.  A floor is indistinctly visible over 50 feet below.  Traces of
X35      white mist cover the floor of the pit, becoming thicker to the right.
X35      Marks in the dust around the window would seem to indicate that
X35      someone has been here recently.  Directly across the pit from you and
X35      25 feet away there is a similar window looking into a lighted room.  A
X35      shadowy figure can be seen there peering back at you.
X36      You are in a dirty broken passage.  To the east is a crawl.  To the
X36      west is a large passage.  Above you is a hole to another passage.
X37      You are on the brink of a small clean climbable pit.  A crawl leads
X37      west.
X38      You are in the bottom of a small pit with a little stream, which
X38      enters and exits through tiny slits.
X39      You are in a large room full of dusty rocks.  There is a big hole in
X39      the floor.  There are cracks everywhere, and a passage leading east.
X40      You have crawled through a very low wide passage parallel to and north
X40      of the Hall of Mists.
X41      You are at the west end of Hall of Mists.  A low wide crawl continues
X41      west and another goes north.  To the south is a little passage 6 feet
X41      off the floor.
X42      You are in a maze of twisty little passages, all alike.
X43      You are in a maze of twisty little passages, all alike.
X44      You are in a maze of twisty little passages, all alike.
X45      You are in a maze of twisty little passages, all alike.
X46      Dead end.
X47      Dead end.
X48      Dead end.
X49      You are in a maze of twisty little passages, all alike.
X50      You are in a maze of twisty little passages, all alike.
X51      You are in a maze of twisty little passages, all alike.
X52      You are in a maze of twisty little passages, all alike.
X53      You are in a maze of twisty little passages, all alike.
X54      Dead end.
X55      You are in a maze of twisty little passages, all alike.
X56      Dead end.
X57      You are on the brink of a thirty foot pit with a massive orange column
X57      down one wall.  You could climb down here but you could not get back
X57      up.  The maze continues at this level.
X58      Dead end.
X59      You have crawled through a very low wide passage parallel to and north
X59      of the Hall of Mists.
X60      You are at the east end of a very long hall apparently without side
X60      chambers.  In the south wall are several wide cracks and a high
X60      hole, but the hole is far above your head.  To the east a wide
X60      crawl slants up.  To the north a round two foot hole slants down.
X61      You are at the west end of a very long featureless hall.  The hall
X61      joins up with a narrow north/south passage.
X62      You are at a crossover of a high N/S passage and a low E/W one.
X63      Dead end.
X64      You are at a complex junction.  A low hands and knees passage from the
X64      north joins a higher crawl from the east to make a walking passage
X64      going west.  There is also a large room above.  The air is damp here.
X65      You are in Bedquilt, a long east/west passage with holes everywhere.
X65      To explore at random select north, south, up, or down.
X66      You are in a room whose walls resemble swiss cheese.  Obvious passages
X66      go west, east, NE, and NW.  Part of the room is occupied by a large
X66      bedrock block.
X67      You are at the east end of the Twopit Room.  The floor here is
X67      littered with thin rock slabs, which make it easy to descend the pits.
X67      There is a path here bypassing the pits to connect passages from east
X67      and west.  There are holes all over, but the only big one is on the
X67      wall directly over the west pit where you can't get to it.
X68      You are in a large low circular chamber whose floor is an immense slab
X68      fallen from the ceiling (Slab Room).  East and west there once were
X68      large passages, but they are now filled with boulders.  Low small
X68      passages go north and south, and the south one quickly bends west
X68      around the boulders.
X69      You are in a secret N/S canyon above a large room.
X70      You are in a secret N/S canyon above a sizable passage.
X71      You are in a secret canyon at a junction of three canyons, bearing
X71      north, south, and SE.  The north one is as tall as the other two
X71      combined.
X72      You are in a large low room.  Crawls lead north, NE, and SW.
X73      Dead end crawl.
X74      You are in a secret canyon which here runs E/W.  It crosses over a
X74      very tight canyon 15 feet below.  If you go down you may not be able
X74      to get back up.
X75      You are at a wide place in a very tight N/S canyon.
X76      The canyon here becomes too tight to go further south.
X77      You are in a tall E/W canyon.  A low tight crawl goes 3 feet north and
X77      seems to open up.
X78      The canyon runs into a mass of boulders -- dead end.
X79      The stream flows out through a pair of 1 foot diameter sewer pipes.
X79      It would be advisable to use the exit.
X80      You are in a maze of twisty little passages, all alike.
X81      Dead end.
X82      Dead end.
X83      You are in a maze of twisty little passages, all alike.
X84      You are in a maze of twisty little passages, all alike.
X85      Dead end.
X86      Dead end.
X87      You are in a maze of twisty little passages, all alike.
X88      You are in a long, narrow corridor stretching out of sight to the
X88      west.  At the eastern end is a hole through which you can see a
X88      profusion of leaves.
X89      There is nothing here to climb.  Use "up" or "out" to leave the pit.
X90      You have climbed up the plant and out of the pit.
X91      You are at the top of a steep incline above a large room.  You could
X91      climb down here, but you would not be able to climb up.  There is a
X91      passage leading back to the north.
X92      You are in the Giant Room.  The ceiling here is too high up for your
X92      lamp to show it.  Cavernous passages lead east, north, and south.  On
X92      the west wall is scrawled the inscription, "FEE FIE FOE FOO" [sic].
X93      The passage here is blocked by a recent cave-in.
X94      You are at one end of an immense north/south passage.
X95      You are in a magnificent cavern with a rushing stream, which cascades
X95      over a sparkling waterfall into a roaring whirlpool which disappears
X95      through a hole in the floor.  Passages exit to the south and west.
X96      You are in the Soft Room.  The walls are covered with heavy curtains,
X96      the floor with a thick pile carpet.  Moss covers the ceiling.
X97      This is the Oriental Room.  Ancient oriental cave drawings cover the
X97      walls.  A gently sloping passage leads upward to the north, another
X97      passage leads SE, and a hands and knees crawl leads east.
X98      You are following a wide path around the outer edge of a large cavern.
X98      Far below, through a heavy white mist, strange splashing noises can be
X98      heard.  The mist rises up through a fissure in the ceiling.  The path
X98      hugs the cavern's rim to the NE and south, while another branch forks
X98      west.  A round chute with extremely smooth walls angles sharply up
X98      to the southwest.
X99      You are in an alcove.  A small NW path seems to widen after a short
X99      distance.  An extremely tight tunnel leads east.  It looks like a very
X99      tight squeeze.  An eerie light can be seen at the other end.
X100     You're in a small chamber lit by an eerie green light.  An extremely
X100     narrow tunnel exits to the west, and a dark corridor leads NE.
X101     You're in the Dark-Room.  A corridor leading south is the only exit.
X102     You are in an arched hall.  A coral passage once continued up and east
X102     from here, but is now blocked by debris.  The air smells of sea water.
X103     You're in a large room carved out of sedimentary rock.  The floor and
X103     walls are littered with bits of shells imbedded in the stone.  A
X103     shallow passage proceeds downward, and a somewhat steeper one leads
X103     up.  A low hands and knees passage enters from the south.
X104     You are in a long sloping corridor with ragged sharp walls.
X105     You are in a cul-de-sac about eight feet across.
X106     You are in an anteroom leading to a large passage to the east.  Small
X106     passages go west and up.  The remnants of recent digging are evident.
X106     A sign in midair here says "Cave under construction beyond this point.
X106     Proceed at own risk.  [Witt Construction Company]".
X107     You are in a maze of twisty little passages, all different.
X108     You are at Witt's End.  Passages lead off in *ALL* directions.
X109     You are in a north/south canyon about 25 feet across.  The floor is
X109     covered by white mist seeping in from the north.  The walls extend
X109     upward for well over 100 feet.  Suspended from some unseen point far
X109     above you, an enormous two-sided mirror is hanging parallel to and
X109     midway between the canyon walls.  (The mirror is obviously provided
X109     for the use of the dwarves, who as you know, are extremely vain.)  A
X109     small window can be seen in either wall, some fifty feet up.
X110     You're at a low window overlooking a huge pit, which extends up out of
X110     sight.  A floor is indistinctly visible over 50 feet below.  Traces of
X110     white mist cover the floor of the pit, becoming thicker to the left.
X110     Marks in the dust around the window would seem to indicate that
X110     someone has been here recently.  Directly across the pit from you and
X110     25 feet away there is a similar window looking into a lighted room.  A
X110     shadowy figure can be seen there peering back at you.
X111     A large stalactite extends from the roof and almost reaches the floor
X111     below.  You could climb down it, and jump from it to the floor, but
X111     having done so you would be unable to reach it to climb back up.
X112     You are in a little maze of twisting passages, all different.
X113     You are at the edge of a large underground reservoir.  An opaque cloud
X113     of white mist fills the room and rises rapidly upward.  The lake is
X113     fed by a stream, which tumbles out of a hole in the wall about 10 feet
X113     overhead and splashes noisily into the water somewhere within the
X113     mist.  The indistinct shape of the opposite shore can be dimly seen
X113     through the mist.  The only passage goes back toward the south.
X114     Dead end.
X115     You are at the northeast end of an immense room, even larger than the
X115     Giant Room.  It appears to be a repository for the "ADVENTURE"
X115     program.  Massive torches far overhead bathe the room with smokey
X115     yellow light.  Scattered about you can be seen a pile of bottles (all
X115     of them empty), a nursery of young beanstalks murmuring quietly, a bed
X115     of oysters, a bundle of black rods with rusty stars on their ends, and
X115     a collection of brass lanterns.  Off to one side a great many dwarves
X115     are sleeping on the floor, snoring loudly.  A sign nearby reads: "Do
X115     not disturb the dwarves!"  An immense mirror is hanging against one
X115     wall, and stretches to the other end of the room, where various other
X115     sundry objects can be glimpsed dimly in the distance.  An unoccupied
X115     telephone booth stands against the north wall.
X116     You are at the southwest end of the repository.  To one side is a pit
X116     full of fierce green snakes.  On the other side is a row of small
X116     wicker cages, each of which contains a little sulking bird.  In one
X116     corner is a bundle of black rods with rusty marks on their ends.  A
X116     large number of velvet pillows are scattered about on the floor. 
X116     Beside one of the pillows is a large, dusty, leather-bound volume
X116     with the title "History of Adventure" embossed in pure gold.
X116     A vast mirror stretches off to the northeast, almost reaching the
X116     phone booth.  At your feet is a large steel grate, next to which is
X116     a sign which reads, "Treasure Vault. Keys in Main Office."
X117     You are on one side of a large, deep chasm.  A heavy white mist rising
X117     up from below obscures all view of the far side.  A SW path leads away
X117     from the chasm into a winding corridor.
X118     You are in a long winding corridor sloping out of sight in both
X118     directions.
X119     You are in a secret canyon which exits to the north and east.
X120     You are in a secret canyon which exits to the north and east.
X121     You are in a secret canyon which exits to the north and east.
X122     You are on the northeast side of a deep chasm.  A NE path leads away
X122     from the chasm on this side.
X123     You're in a long east/west corridor.  A faint rumbling noise can be
X123     heard in the distance.
X124     The path forks here.  The left fork leads northeast.  A dull rumbling
X124     seems to get louder in that direction.  The right fork leads southeast
X124     down a gentle slope.  The main corridor enters from the west.
X125     The walls are quite warm here.  From the north can be heard a steady
X125     roar, so loud that the entire cave seems to be trembling.  Another
X125     passage leads south, and a low crawl goes east.
X126     You are on the edge of a breath-taking view.  Far below you is an
X126     active volcano, from which great gouts of molten lava come surging
X126     out, cascading back down into the depths.  The glowing rock fills the
X126     farthest reaches of the cavern with a blood-red glare, giving every-
X126     thing an eerie, macabre appearance.  The air is filled with flickering
X126     sparks of ash and a heavy smell of brimstone.  The walls are hot to
X126     the touch, and the thundering of the volcano drowns out all other
X126     sounds.  Embedded in the jagged roof far overhead are myriad twisted
X126     formations composed of pure white alabaster, which scatter the murky
X126     light into sinister apparitions upon the walls.  To one side is a deep
X126     gorge, filled with a bizarre chaos of tortured rock which seems to
X126     have been crafted by the devil himself.  An immense river of fire
X126     crashes out from the depths of the volcano, burns its way through the
X126     gorge, and plummets into a bottomless pit far off to your left.  To
X126     the right, an immense geyser of blistering steam erupts continuously
X126     from a barren island in the center of a sulfurous lake, which bubbles
X126     ominously.  The far right wall is aflame with an incandescence of its
X126     own, which lends an additional infernal splendor to the already
X126     hellish scene.  A dark, foreboding passage exits to the south.
X127     You are in a small chamber filled with large boulders.  The walls are
X127     very warm, causing the air in the room to be almost stifling from the
X127     heat.  The only exit is a crawl heading west, through which is coming
X127     a low rumbling.
X128     You are walking along a gently sloping north/south passage lined with
X128     oddly shaped limestone formations.
X129     You are standing at the entrance to a large, barren room.  A sign
X129     posted above the entrance reads:  "Caution!  Bear in room!"
X130     You are inside a barren room.  The center of the room is completely
X130     empty except for some dust.  Marks in the dust lead away toward the
X130     far end of the room.  The only exit is the way you came in.
X131     You are in a maze of twisting little passages, all different.
X132     You are in a little maze of twisty passages, all different.
X133     You are in a twisting maze of little passages, all different.
X134     You are in a twisting little maze of passages, all different.
X135     You are in a twisty little maze of passages, all different.
X136     You are in a twisty maze of little passages, all different.
X137     You are in a little twisty maze of passages, all different.
X138     You are in a maze of little twisting passages, all different.
X139     You are in a maze of little twisty passages, all different.
X140     Dead end.
X141     You are on a narrow promontory at the foot of a waterfall, which
X141     spurts from an overhead hole in the rock wall and splashes into a
X141     large reservoir, sending up clouds of mist and spray.
X141     Through the thick white mist looms a polished marble slab, to
X141     which is affixed an enormous rusty iron anvil.  In golden letters
X141     are written the words: "Whoso Pulleth Out This Sword of This
X141     Stone and Anvil, is Rightwise King-Born of All This Mountain."
X141     There is a narrow chimney on the east side of the promontory.
X142     You are on a narrow shelf above and east of the top of a very steep
X142     chimney.  A long smooth granite slide curves down out of sight
X142     to the east.  If you go down the slide, you may not be able to
X142     climb back up.
X143     You are in the private chamber of the Mountain King.  Hewn into the
X143     solid rock of the east wall of the chamber is an intricately-wrought
X143     throne of elvish design.  There is an exit to the west.
X144     You are on the east side of the throne room.  On the arm of the throne
X144     has been hung a sign which reads "Gone for the day: visiting
X144     sick snake. --M.K."
X145     You are dragged down, down, into the depths of the whirlpool.
X145     Just as you can no longer hold your breath, you are shot out over
X145     a waterfall into the shallow end of a large reservoir.  Gasping
X145     and sputtering, you crawl weakly towards the shore....
X146     You are in dense forest, with a hill to one side.  The trees appear
X146     to thin out towards the north and east.
X147     You are at the high point of a wide grassy knoll, partially surrounded
X147     by dense forest.  The land rises to the south and east, and drops off
X147     sharply to the north and west.  The air smells of sea water.
X148     You are at the edge of a trackless salt marsh.  Tall reeds obscure
X148     the view.
X149     You're in salt marsh.
X150     You're in salty marsh.
X151     You are in salt marsh.
X152     Dead end.
X153     You're on a sandy beach at the edge of the open sea.  The beach
X153     ends a short distance south and the land rises to a point. To
X153     the north, the beach ends cliffs and broken rocks.
X154     You are at a jumble of large broken rocks.  A gentle path leads up
X154     to the top of the nearby cliffs.  A narrow treacherous path
X154     disappears among the rocks at the foot of the cliff.
X155     You are on a high cliff overlooking the sea.  Far below the
X155     rolling breakers smash into a jumble of large broken rocks.
X155     The thunder of the surf is deafening.
X156     You're at the bottom of the cliff, smashed to smithereens by the
X156     pounding surf.
X157     You are at Thunder Hole, a funnel shaped cavern opening onto the sea.
X157     The noise of the surf pounding against the outer rocks of the cave is
X157     amplified by the peculiar shape of the cave, causing a thunder-like
X157     booming sound to reverberate throughout the cave.  Outside, a narrow
X157     path leads south towards some large rocks.
X158     You are at the top of some arched steps.  On one side is a blank wall
X158     with a tiny door at the base and a shelf overhead.  On the other side
X158     a westward passage leads to the sea.
X159     You are in a low cramped chamber at the back of a small cave.
X159     There is a shelf in the rock wall at about the height of your
X159     shoulder.
X160     You are on a wide ledge, bounded on one side by a rock wall,
X160     and on the other by a sheer cliff.  The only way past is through
X160     a large wrought-iron door.
X161     You feel dizzy...Everything around you is spinning, expanding,
X161     growing larger....  Dear me!  Is the cave bigger or are you smaller?
X162     You are again overcome by a sickening vertigo, but this time
X162     everything around you is shrinking...Shrinking...
X163     You are again overcome by a sickening vertigo, but this time
X163     everything is shrinking... I mean, you are growing.  This is
X163     terribly confusing!
X164     You feel dizzy...Everything around you is spinning, expanding,
X164     growing larger....
X165     You're at the bottom of the cliff with a broken neck.
X166     You are at the western tip of the Blue Grotto.  A large lake almost
X166     covers the cavern floor, except for where you are standing.  Small
X166     holes high in the rock wall to the east admit a dim light.  The
X166     reflection of the light from the water suffuses the cavern with
X166     a hazy bluish glow.
X167     You are on the shore of an underground sea.  A high wooden
X167     structure of vast proportions extends out into the water to the
X167     east.  The way west is through a wrought-iron door.
X168     You are on the eastern shore of the Blue Grotto.  An ascending
X168     tunnel disappears into the darkness to the SE.
X169     You are at a high rock on the NE side of a watery chamber at the mouth
X169     of a small brook.  An unknown gas bubbles up through the water from
X169     the chamber floor.  A bluish light can be seen to the southwest.
X170     You are in a windy tunnel between two large rooms.
X171     You are in the Bat Cave.  The walls and ceiling are covered with
X171     sleeping bats.  The floor is buried by a mass of dry, foul-smelling
X171     guano.  The stench is overpowering.  Exits to the NW and east.
X172     You are in a very tight N/S crack.  The passage seems to widen to
X172     the south.
X173     You are in a very tight N/S crack.  The passage south is blocked
X173     by a recent cave-in.
X174     You're in the Cloakroom.  This is where the dreaded Wumpus repairs
X174     to sleep off heavy meals.  (Adventurers are his favorite dinner!)
X174     Two very narrow passages exit NW and NE.
X175     You're in a room containing several small climable pits.  Passages
X175     exit to the east and north.
X176     You are at the bottom of a small featureless pit.
X177     You are at a high hole in a rock wall.
X178     The NE passage is blocked by a recent cave-in.
X179     You are in a sloping muddy defile, next to a tumbling brook.
X180     You are in a level E/W passage partially blocked by an overhanging
X180     tongue of rock.  A steep scramble would take you up over the tongue,
X180     whence continues an upward crawl.
X181     The dog won't let you pass.
X182     You're in the Upper Passage, a long level E/W tunnel.
X183     You are in a star-shaped chamber.  Passages exit north, east, south,
X183     and west.
X184     You are at an elbow in a winding E/W passage.
X185     Dead end.
X186     You're at the intersection of two long tunnels.  One goes NW,
X186     the other NE.
X187     You're in a long narrow east-west passage which curves out of sight
X187     at both ends.
X188     You're in the Rotunda.  Corridors radiate in all directions.
X188     There is a telephone booth standing against the north wall.
X189     You are standing in a telephone booth at the side of a large chamber.
X189     Hung on the wall is a banged-up pay telephone of ancient design.
X190     You're at the Devil's Chair, a large crystallization shaped like a
X190     seat, at the edge of a black abyss.  You can't see the bottom.
X190     An upward path leads away from the abyss.
X191     You're in a dead-end crack.
X192     You're on a small gravel beach at the south wall of the Blue Grotto.
X192     A gravelly path leads east.
X193     You are in the Flower Room.  The walls are covered with colorful,
X193     intricate, flower-like patterns of crystallized gypsum. A hole leads
X193     to the west.
X194     You are at the end of a short E/W corridor.
X195     You are looking west from the end of a short E/W corridor.  At your
X195     feet is a pile of loose rubble.  On your left is a hole into another
X195     chamber.
X196     You are in an arched hall.  The remnants of a now-plugged coral
X196     passage lie to the east.  The north wall has partially crumbled,
X196     exposing a large connecting hole to another room.
X197     You're in the Vestibule, a short east-west passage between two rooms.
X198     You are in the Fairy Grotto.  All around you innumerable stalactites,
X198     arranged in immense colonnades, form elegant arches.  On every side
X198     you hear the dripping of water, like the footsteps of a thousand
X198     fairies.  A small stream runs from the SW corner.  A bright glow
X198     emanates from the south side of the grotto, and a steep passage
X198     descends to the east.
X199     You have approached the lower end of a steep passage, but it is
X199     just too cold here to hang around, and you aren't properly equipped
X199     to continue.  With teeth chattering, you climb back up....
X200     You are in the Crystal Palace.  An overhead vein of phosphorescent
X200     quartz casts a liminous glow which is reflected by countless chips of
X200     mica embedded in both walls, which consist of some sort of highly
X200     reflective glass, apparently of volcanic origin.  A winding path
X200     of yellow sandstone leads west and rises steeply to the east.
X201     You are following a yellow sandstone path.  There is a glow
X201     to the west.
X202     You are in a very tall chamber whose walls are comprised of many
X202     different rock strata.  Layers of red and yellow sandstone
X202     intertwine with bright bands of calcareous limestone in a rainbow-
X202     like profusion of color.  The rainbow effect is so real, you
X202     are almost tempted to look for a pot of gold!  Poised far over
X202     your head, a gigantic slab, wedged tightly between the north and
X202     south walls, forms a natural bridge across the roof of the chamber.
X202     A trail leads east and west.
X203     You're in a steeply sloping passage.  It is very cold here.
X204     You are in the Hall of Ice, in the deepest part of the caverns.
X204     During winter, frigid outside air settles here, making this room
X204     extremely cold all year round.  The walls and ceilings are covered
X204     with a thick coating of ice.  An upward passage exits to the west.
X205     You are standing on a natural bridge far above the floor of a circular
X205     chamber whose walls are a rainbow of multi-colored rock.  The bridge
X205     was formed eons ago by a huge slab which fell from the ceiling and
X205     is now jammed between the north and south walls of the chamber.
X206     You are in a low, wide room below another chamber.  A small green
X206     pond fills the center of the room.  The lake is apparently spring-
X206     fed.  A small stream exits through a narrow passage to the north.
X206     A larger passage continues west.
X207     You are in a tight north/south crawl through a stratum of red
X207     colored rock.  The air is damp with mist.
X208     You are in a tall canyon on the south side of a swift, wide river.
X208     Written in the mud in crude letters are the words: "You Have Found
X208     Lost River."  A wide path leads east and west along the bank.  A tight
X208     crawlway would take you south out of the canyon.
X209     You are standing on a large flat rock table at the western end of
X209     Lost River Canyon.  Beneath your feet, the river disappears amidst
X209     foam and spray into a large sinkhole.  A gentle path leads east
X209     along the river's south shore.  Another leads sharply upward along
X209     the river's north side.
X210     You are at a niche in the canyon wall, far above a raging river.
X210     The air is filled with mist and spray, making it difficult to see
X210     ahead.  A downward sloping ledge narrows to the east. The path
X210     to the west is easier.
X211     The ledge is growing very narrow and treacherous, and falls off almost
X211     vertically.  You could go down, but you won't be able to climb
X211     back.
X212     You are standing in a telephone booth at the side of the Repository.
X213     You're at the east end of a level passage at a hole in the floor.
X214     You're at the north edge of a dark cove.
X215     You are in a dry granite basin, worn smooth eons ago by water
X215     swirling down from a now-dry spillway.
X216     You're in a dry spillway east of and above a smooth rock basin.
X217     You are in the Winery, a cool dark room which extends some
X217     distance off to the east.
X218     You are to the east of the Winery, where the room ends in a thicket
X218     of high, sharp, pointed, climable limestone pinnacles.  There is a
X218     narrow ledge just above the top of the spires.  If you go up, it
X218     might be difficult to get back down.
X219     You are in a high-vaulted cavern whose roof rises over fifty
X219     meters to culminate in a series of pointed arches directly over
X219     your head.  There are also two low arches to either side, forming
X219     side portals.  The whole effect is that of a gothic cathedral.
X219     You can proceed north, south, east, or west.
X220     You're at the east portal of the Gothic Cathedral. The path leads
X220     east and west.
X221     You're at the west portal of the Gothic Cathedral.
X222     You are at the foot of the Altar, an immense, broad stalagmite.
X222     An opening leads south.
X223     You're on top of an enormous, broad stalagmite.  There is a hole
X223     in the ceiling overhead.
X224     You are in a room the size and shape of a small crypt.  A narrow
X224     cut exits east.  There is a hole in the floor.
X225     You are in the Gothic Chapel, a small chamber adjoining the Gothic
X225     Cathedral. A path leads west.
X226     You are on the floor of the Rainbow Room.  In fact, you are spread
X226     *ALL OVER* the floor of the Rainbow Room.
X227     You are in a dimly lit passage behind Thunder Hole.  Etched into
X227     the rock wall are the ominous words:
X227     *       "You are approaching the River Styx.      *
X227     *        Laciate Ogni Speranza Voi Ch'Entrate."   *
X228     You are at the River Styx, a narrow little stream cutting directly
X228     across the passageway.  The edge of the stream is littered with sticks
X228     and other debris washed in by a recent rainfall.  On the far side
X228     of the river, the passage continues east.
X229     You're on the east side of the river's sticks.
X230     You are on a ledge at the northern end of a long N/S crawl.  The
X230     ledge is above a large number of sharp vertical limestone spires.
X230     An attempt to climb down could be dangerous, if you get my *point*!
X231     You are very neatly skewered on the point of a sharp rock.
X232     You have poled your boat across the calm water.
X233     You have poled your boat across the dark water.
X234     You have poled your boat across the Blue Grotto.
X235     You're at Dante's Rest, on the north side of a yawning dark chasm.
X235     A passage continues west along the chasm's edge.
X236     You are at the east end of a riverbank path in Lost River Canyon.
X237     The staircase is now unclimable.
X238     You're in the caretaker's pantry.
X239     You are on a small rise overlooking a beautiful bay. In the center
X239     of the bay is the castle of the elves.
X240     You are on the highest pinnacle of the castle in the bay.
X240     Steps lead down into the garden.
X241     You are in the outer courtyard of the garden of the elves.
X241     Steps lead up to the tower, and to the west, separating you
X241     from the inner courtyard, is a maze of hedges, living things,
X241     but almost crystalline in their multicolored splendor.
X242     From the inside the maze looks like a kaleidoscope, with
X242     swatches of color dancing as you move. In this part the colors
X242     are produced by shining red berries on the branches.
X243     You are surrounded by a tall hedge with sharp iridescent leaves
X243     and metallic orange flowers.
X244     You are in the center of the living maze. The plants here are
X244     dormant this season, but still carry brilliant yellow leaves.
X245     Unlike the other areas of the hedge system, this area seems to 
X245     have no metallic gleam; nevertheless it is still breathtaking.
X245     The trees and bushes are all varigated shades of green, the
X245     evergreens being a rich dark shade while the seasonal bushes
X245     are a lighter yellowish green, making a startling contrast.
X246     You are near the edge of the maze. You sample the blueberries
X246     on the bushes. They are delicious.
X247     You are at the western end of the living maze. Beside the
X247     shrubs forming the walls are tastefully planted beds of
X247     violets and brilliant purple pansies.
X247     To the west is the inner garden.
X248     You are in the inner garden of the elves. In the center is
X248     a living tree, with shimmering silvery bark, glistening metallic
X248     green leaves, and flowers ripe with nectar. As the nectar falls
X248     to the ground it forms droplets of silver. Around the tree is
X248     a hedge of briars which cannot be crossed. Unfortunately for
X248     adventurers such as you, most of the nectar falls inside the hedge.
X248     The exit is to the east.
X-1      END
X2
X1       You're at end of road again.
X2       You're at hill in road.
X3       You're inside building.
X4       You're in valley.
X5       You're in forest.
X6       You're in forest.
X7       You're at slit in streambed.
X8       You're outside grate.
X9       You're below the grate.
X10      You're in cobble crawl.
X11      You're in Debris Room.
X13      You're in Bird Chamber.
X14      You're at top of small pit.
X15      You're in Hall of Mists.
X17      You're on east bank of fissure.
X18      You're in Nugget of Gold Room.
X19      You're in Hall of Mt King.
X23      You're at west end of Twopit Room.
X24      You're in east pit.
X25      You're in west pit.
X33      You're at "Y2".
X35      You're at window on pit.
X36      You're in dirty passage.
X39      You're in dusty rock room.
X41      You're at west end of Hall of Mists.
X57      You're at brink of pit.
X60      You're at east end of Long Hall.
X61      You're at west end of Long Hall.
X64      You're at Complex Junction.
X66      You're in Swiss Cheese Room.
X67      You're at east end of Twopit Room.
X68      You're in Slab Room.
X71      You're at junction of three secret canyons.
X74      You're in secret E/W canyon above tight canyon.
X88      You're in narrow corridor.
X91      You're at steep incline above large room.
X92      You're in Giant Room.
X95      You're in cavern with waterfall.
X96      You're in Soft Room.
X97      You're in Oriental Room.
X98      You're in Misty Cavern.
X99      You're in Alcove.
X100     You're in Plover Room.
X101     You're in Dark-Room.
X102     You're in Arched Hall.
X103     You're in Shell Room.
X106     You're in Anteroom.
X108     You're at Witt's End.
X109     You're in Mirror Canyon.
X110     You're at window on pit.
X111     You're at top of stalactite.
X113     You're at Reservoir.
X115     You're at NE end.
X116     You're at SW end.
X117     You're on SW side of chasm.
X118     You're in sloping corridor.
X122     You're on NE side of chasm.
X123     You're in corridor.
X124     You're at fork in path.
X125     You're at junction with warm walls.
X126     You're at breath-taking view.
X127     You're in Chamber of Boulders.
X128     You're in Limestone Passage.
X129     You're in front of Barren Room.
X130     You're in Barren Room.
X141     You're at Sword Point.
X142     You're at top of slide.
X143     You're at entrance to Throne Room.
X144     You're on east side of Throne Room.
X145     <$$<
X146     You're in forest.
X147     You're on grassy knoll.
X153     You're on sandy beach.
X154     You're at broken rocks.
X155     You're at Ocean Vista.
X157     You're at Thunder Hole.
X158     You're at top of steps in back of Thunder Hole.
X159     You're in cramped chamber.
X160     You're at ledge by wrought-iron door.
X161     <$$<
X162     <$$<
X163     <$$<
X164     <$$<
X166     You're at west wall of Blue Grotto.
X167     You're at underground sea.
X168     You're on east side of the Blue Grotto.
X169     You're in Bubble Chamber.
X171     You're in Bat Cave.
X174     You're in the Cloakroom.
X180     You're at Tongue of Rock.
X183     You're in Star Chamber.
X188     You're in Rotunda.
X189     You're in phone booth.
X190     You're at Devil's Chair.
X192     You're on gravel beach.
X193     You're in Flower Room.
X194     You are at east end of short E/W corridor.
X195     You are at east end of short E/W corridor.
X196     You're in Arched Hall.
X198     You're in the Fairy Grotto.
X200     You're in the Crystal Palace.
X202     You're in the Rainbow Room.
X204     You're in the Hall of Ice.
X205     You are over the Rainbow (Room).
X206     You're in Green Lake Room.
X207     You're in red rock crawl.
X208     You're on south side of Lost River Canyon.
X209     You're at end of Lost River Canyon.
X210     You're at niche in ledge above Lost River.
X212     You're in phone booth.
X214     You're in dark cove.
X215     You're in dry basin.
X216     You're in old spillway.
X217     You're in the Winery.
X218     You're at limestone pinnacles.
X219     You're in Gothic Cathedral.
X223     You're on top of stalagmite.
X224     You're in the Crypt.
X225     You're in Gothic Chapel.
X227     You are at approach to River Styx.
X228     You're at the River Styx.
X230     You're on ledge above limestone pinnacles.
X235     You're at Dante's Rest.
X236     You're at east end of Lost River Canyon.
X239     You're on a small rise over the bay.
X241     You are in the outer courtyard of the elves.
X242     You are in the living maze. There are red berries here.
X248     You're in the inner courtyard of the elves.
X-1
X3
X1       FORCD
X2       ROAD
X2       HILL
X3       ENTER
X4       UPSTREAM
X5       DOWNSTREAM
X6       FOREST
X7       FORWARD
X7       CONTINUE
X7       ONWARD
X8       BACK
X8       RETURN
X8       RETREAT
X9       VALLEY
X10      STAIR
X10      STAIRS
X11      OUT
X11      OUTSIDE
X11      EXIT
X11      LEAVE
X12      BUILDING
X12      HOUSE
X13      GULLY
X14      STREAM
X15      ROCK
X16      BED
X17      CRAWL
X18      COBBLE
X19      INWARD
X19      INSIDE
X19      IN
X20      SURFACE
X21      NULL
X21      NOWHERE
X22      DARK
X23      PASSAGE
X23      TUNNEL
X23      DEFILE
X24      LOW
X25      CANYON
X26      AWKWARD
X27      GIANT
X28      VIEW
X29      UPWARD
X29      UP
X29      U
X29      ABOVE
X29      ASCEND
X30      D
X30      DOWNWARD
X30      DOWN
X30      DESCEND
X31      PIT
X32      OUTDOORS
X33      CRACK
X34      STEPS
X35      DOME
X36      LEFT
X37      RIGHT
X38      HALL
X39      JUMP
X39      LEAP
X40      BARREN
X41      OVER
X42      ACROSS
X43      EAST
X43      E
X44      WEST
X44      W
X45      NORTH
X45      N
X46      SOUTH
X46      S
X47      NE
X47      NORTHEAST
X48      SE
X48      SOUTHEAST
X49      SW
X49      SOUTHWEST
X50      NW
X50      NORTHWEST
X51      DEBRIS
X52      HOLE
X53      WALL
X54      BROKEN
X55      Y2
X56      CLIMB
X57      PANTRY
X58      FLOOR
X59      ROOM
X60      SLIT
X61      SLAB
X61      SLABROOM
X62      XYZZY
X63      DEPRESSION
X64      ENTRANCE
X65      PLUGH
X66      SECRET
X67      CAVE
X69      CROSS
X70      BEDQUILT
X71      PLOVER
X72      ORIENTAL
X73      CAVERN
X74      SHELL
X75      RESERVOIR
X76      MAIN
X76      OFFICE
X77      FORK
X78      CHIMNEY
X79      SLIDE
X80      POOL
X80      WHIRL
X80      WHIRLPOOL
X81      KNOLL
X82      PHUCE
X83      LEDGE
X83      SHELF
X84      THUNDER
X85      CLICK
X88      ICE
X89      BRIDGE
X90      ALTAR
X91      GROTTO
X92      PRAY
X92      PRAYER
X93      SAINT-MICHEL
X1002    LAMP
X1002    HEADLAMP
X1002    LANTERN
X1002    LIGHT
X1003    GRATE
X1004    CAGE
X1005    WAND
X1005    ROD
X1006    ROD     (MUST BE NEXT OBJECT AFTER "REAL" ROD)
X1007    STEPS
X1008    *****
X1009    POLE
X1010    PILLOW
X1011    SNAKE
X1012    FISSURE
X1013    TABLET
X1014    CLAM
X1015    OYSTER
X1016    MAGAZINE
X1016    ISSUE
X1016    SPELUNKER
X1016    "SPELUNKER"
X1017    DWARF
X1017    DWARVES
X1018    KNIFE
X1018    KNIVES
X1019    FOOD
X1019    RATION
X1019    SANDWICH
X1020    BOTTLE
X1020    JAR
X1021    CHASM   (TROLL BRIDGE)
X1022    CHASM   (DECREPIT BRIDGE)
X1023    MIRROR
X1024    PLANT
X1024    BEANS
X1025    PLANT   (MUST BE NEXT OBJECT AFTER "REAL" PLANT)
X1026    STALAGMITE
X1027    FIGURE
X1028    AXE
X1029    DRAWING
X1030    PIRATE
X1031    DRAGON
X1033    TROLL
X1034    TROLL   (MUST BE NEXT OBJECT AFTER "REAL" TROLL)
X1035    BEAR
X1036    MESSAGE
X1037    VOLCANO
X1037    GEYSER   (SAME AS VOLCANO)
X1038    MACHINE
X1039    BATTERIES
X1040    CARPET
X1040    MOSS
X1041    DOOR            (GIANT DOOR)
X1042    DOOR            (TINY DOOR - TDOOR)
X1043    DOOR            (WROUGHT-IRON DOOR - TDOOR2)
X1044    DOOR            (DOOR TO PHONE BOOTH)
X1045    *****
X1046    FLOWER
X1047    CLOAK
X1047    CAPE
X1048    BOAT
X1048    SHIP
X1048    ROWBOAT
X1049    STICK
X1049    STICKS
X1050    NUGGET
X1051    DIAMOND
X1052    HORN
X1053    JEWELRY
X1053    JEWELS
X1054    COINS
X1055    CHEST
X1055    BOX
X1056    EGGS
X1056    EGG
X1056    NEST
X1057    TRIDENT
X1058    VASE
X1058    SHARDS
X1058    SHARDS
X1058    POTTERY
X1059    EMERALD
X1060    PYRAMID
X1061    PEARL
X1062    RUG
X1063    SPICES
X1064    CHAIN
X1065    SWORD
X1066    CROWN
X1067    SHOES
X1067    HEELS
X1067    SLIPPERS
X1068    LYRE
X1069    SAPPHIRE
X1070    CHALICE
X1070    GRAIL
X1070    CUP
X1071    CASK
X1071    KEG
X1072    RING
X1073    CLOVER
X1074    TREE
X1075    DROPLET
X1076    *****
X1077    *****
X1078    *****
X1079    *****
X1080    *****
X1081    WATER           IN BOTTLE
X1081    H20
X1082    WATER           IN CASK
X1083    OIL             IN BOTTLE
X1084    OIL             IN CASK
X1085    WINE            IN BOTTLE
X1086    WINE            IN CASK
X1087    BEE
X1087    BEES
X1087    BUMBLE
X1088    WALL            IN BLUE GROTTO
X1089    WALL            FOR WALLSAFE
X1090    KEY
X1091    ANVIL
X1092    ROCKS
X1093    BOOTH
X1094    TELEPHONE
X1094    PHONE
X1094    PHONEBOOTH
X1095    SLUGS
X1096    HONEY
X1096    COMB
X1096    HONEYCOMB
X1097    BEEHIVE
X1097    HIVE
X1098    DOG
X1098    HOUND
X1098    WOLF
X1099    WUMPUS
X1100    *****
X1101    BIRD
X1102    KEYS
X1103    FOUNTAIN
X1104    BAT
X1104    BATS
X1104    GUANO
X1104    BATSHIT
X1105    GNOME
X1106    MUSHROOMS
X1106    PEYOTE
X1107    CAKES           (MUST FOLLOW MUSHROOMS)
X1107    CAKE
X1107    CUPCAKES
X1108    SACK
X1108    KNAPSACK
X1109    ALL
X1109    EVERYTHING
X1110    BOOK
X1110    VOLUME
X1110    TOME
X1111    BOOK            (FOR REPOSITORY)
X1112    SAFE
X1113    POSTER
X1114    BROOM
X1114    WHISK
X1114    BRUSH
X1115    CARVING
X1115    ROCKS
X1116    BILLBOARD
X1117    *****
X1118    CANNISTER
X1118    TUBE
X1118    SHIELD
X1119    RADIUM
X1119    ROCK
X1119    STONE
X1120    SPHERE
X1120    BALL
X2001    CARRY
X2001    TAKE
X2001    KEEP
X2001    CATCH
X2001    STEAL
X2001    CAPTURE
X2001    TOTE
X2002    DROP
X2002    RELEASE
X2002    FREE
X2002    DISCARD
X2002    DUMP
X2002    DOFF
X2003    SAY
X2003    CHANT
X2003    SING
X2003    UTTER
X2003    MUMBLE
X2004    OPEN
X2005    NOTHING
X2006    CLOSE
X2006    SHUT
X2007    LIGHT
X2008    EXTINGUISH
X2009    WAVE
X2009    SHAKE
X2009    SWING
X2010    CALM
X2010    PLACATE
X2010    TAME
X2011    WALK
X2011    RUN
X2011    GO
X2011    PROCEED
X2011    CONTINUE
X2011    EXPLORE
X2011    GOTO
X2011    FOLLOW
X2011    TRAVEL
X2011    HIKE
X2012    ATTACK
X2012    KILL
X2012    FIGHT
X2012    SLAY
X2013    POUR
X2013    EMPTY
X2014    EAT
X2014    DEVOUR
X2015    DRINK
X2016    RUB
X2017    THROW
X2017    TOSS
X2017    HURL
X2017    FLING
X2017    HEAVE
X2018    QUIT
X2018    Q
X2019    FIND
X2019    WHERE
X2020    INVENTORY
X2020    I
X2021    FEED
X2022    FILL
X2022    REFILL
X2023    BLAST
X2023    DETONATE
X2023    IGNITE
X2023    BLOWUP
X2024    SCORE
X2025    FEE
X2025    FIE
X2025    FOE
X2025    FOO
X2025    FUM
X2026    BRIEF
X2026    UNBRIEF
X2027    READ
X2027    PERUSE
X2028    BREAK
X2028    SHATTER
X2028    SMASH
X2029    WAKE
X2029    WAKEN
X2029    DISTURB
X2029    AWAKEN
X2030    SUSPEND
X2030    PAUSE
X2030    SAVE
X2031    RESTOR  
X2032    YANK
X2032    JERK
X2032    PULL
X2032    GRAB
X2033    WEAR
X2033    DON
X2034    HIT
X2034    STRIKE
X2034    KICK
X2034    PUNCH
X2034    POUND
X2034    WHACK
X2035    ANSWER
X2035    REPLY
X2036    BLOW
X2037    LEAVE
X2038    CALL
X2039    DIAL
X2040    PLAY
X2040    STRUM
X2041    PICK
X2042    PUT
X2043    TURN
X2044    GET
X2045    INSERT
X2046    REMOVE
X2047    BURN
X2048    GRIPE
X2048    BITCH
X2048    COMPLAIN
X2048    SUGGEST
X2048    REPORT
X2049    LOCK
X2050    UNLOCK
X2051    HEALTH
X2051    DIAGNOSE
X2052    LOOK
X2052    L
X2052    EXAMINE
X2052    DESCRIBE
X2053    7
X2053    22
X2053    34
X2054    SWEEP
X2054    BRUSH
X2054    DUST
X2055    TERSE
X2055    UNTERSE
X2056    WIZ
X2057    MAP
X2058    GATE
X2059    PIRLOC
X3001    FEE
X3002    FIE
X3003    FOE
X3004    FOO
X3005    FUM
X3011    7
X3012    22
X3013    34
X3050    SESAME
X3050    OPENSESAME
X3050    ABRA
X3050    ABRACD
X3050    ALACAZ
X3050    SHAZAM
X3050    HOCUS
X3050    POCUS
X3051    HELP
X3051    ?
X3064    TREE
X3064    TREES
X3066    DIG
X3066    EXCAVATE
X3068    LOST
X3069    MIST
X3079    FUCK
X3079    FUCK!
X3139    STOP
X3147    SWIM
X3106    SHIT
X3106    SHIT!
X3106    CRAP
X3106    CRAP!
X3107    PISS
X3107    PISS!
X4001    IN
X4001    INTO
X4001    INSIDE
X4002    ON
X4002    ONTO
X4002    UPON
X4003    WITH
X4004    TO
X4005    FROM
X4006    OFF
X4007    UP
X4008    DOWN
X4009    AT
X5001    GOLD
X5001    GOLDEN
X5002    PERSIAN
X5003    WOODEN
X5004    BRASS
X5005    WICKER
X5006    BLACK
X5007    VELVET
X5008    VENDING
X5009    WORN-OUT
X5009    WORNOUT
X5009    WORN
X5009    USED
X5010    FRESH
X5011    IRON
X5012    TINY
X5012    SMALL
X5012    LITTLE
X5013    SILK
X5013    SILKEN
X5014    SILVER
X5015    TREASURE
X5016    MING
X5017    PLATINUM
X5018    RARE
X5019    ELFIN
X5020    RUBY
X5021    HOLY
X5022    OAKEN
X5022    OAK
X5023    LEAD
X5023    LEADEN
X5024    LEATHER
X5025    STEEL
X5026    STAR
X5027    SHADOWY
X5028    RUSTY
X5029    GIANT
X5030    TASTY
X5031    GLOWING
X5032    GREEN
X5032    GREY
X5033    CRYSTAL
X5034    4-LEAFED
X5034    FOUR-LEAFED
X5035    METAL
X5036    QUARTZ
X6001    AND
X-1
X4
X1       2       ROAD    W       U       CLIMB
X1       3       ENTER   BUILDIN IN      E
X1       4       DOWNSTR GULLY   STREAM  S       DOWN
X1       5       FOREST  N       EAST
X1       8       DEPRESS
X1       147     KNOLL
X1       157     HOLE    THUNDER
X2       1       ROAD    BUILDIN FORWARD E       N       D
X2       30146   FOREST
X2       5       FOREST  N       S
X2       146     WEST
X3       1       EXIT    OUTDOOR W
X3       11      XYZZY
X3       33      PLUGH
X3       467785  CLICK
X3       202     CLICK
X3       79      DOWNSTR STREAM
X3       238     PANTRY  ENTER   IN
X4       1       UPSTREA BUILDIN N
X4       5       FOREST  E       W       U
X4       7       DOWNSTR S       D
X4       8       DEPRESS
X5       4       VALLEY  E       D
X5       50005   FOREST  FORWARD N
X5       6       FOREST
X5       5       WEST    S
X6       1       ROAD    N
X6       4       VALLEY  E       W       D
X6       5       FOREST  S
X7       1       BUILDIN
X7       4       UPSTREA N
X7       5       FOREST  EAST    WEST
X7       8       DOWNSTR ROCKY   BED     S
X7       595     SLIT    STREAM  DOWN
X8       5       FOREST  E       W       S
X8       1       BUILDIN
X8       7       UPSTREA GULLY   N
X8       303009  ENTER   IN      D
X8       593     ENTER
X9       303008  EXIT    UP
X9       593     EXIT
X9       10      CRAWL   COBBLE  IN      W
X9       14      PIT
X9       11      DEBRIS
X10      9       EXIT    SURFACE NULL    EAST
X10      11      IN      DARK    W       DEBRIS
X10      14      PIT
X11      303008  DEPRESS
X11      9       ENTRANC
X11      10      CRAWL   COBBLE  PASSAGE LOW     E
X11      12      CANYON  IN      U       W
X11      3       XYZZY
X11      14      PIT
X12      303008  DEPRESS
X12      9       ENTRANC
X12      11      D       E       DEBRIS
X12      13      IN      U       W
X12      14      PIT
X13      303008  DEPRESS
X13      9       ENTRANC
X13      11      DEBRIS
X13      12      CANYON  E
X13      14      PASSAGE PIT     W
X14      303008  DEPRESS
X14      9       ENTRANC
X14      11      DEBRIS
X14      13      PASSAGE E
X14      150020  D       PIT     STEPS
X14      15      DOWN
X14      16      CRACK   W
X15      18      LEFT    S
X15      17      FORWARD HALL    W
X15      19      STAIRS  D       N
X15      150022  U       PIT     STEPS   DOME    PASSAGE E       CLIMB STAIRS
X15      14      UP
X15      33      Y2
X16      14      FORCD
X17      15      HALL    E
X17      312596  JUMP
X17      412021  FORWARD
X17      412597  OVER    ACROSS  W       CROSS   BRIDGE
X17      27      OVER
X18      15      HALL    EXIT    N
X19      150237  U       PIT     STEPS   DOME    PASSAGE E       CLIMB STAIRS
X19      15      UP
X19      15      STAIRS  U       E
X19      75556   NE
X19      311143  NE
X19      311028  N       LEFT
X19      311029  S       RIGHT
X19      311030  WEST    FORWARD
X19      32      N
X19      15074   SW
X19      211032  SW
X19      74      SECRET
X20      0       FORCD
X21      0       FORCD
X22      15      FORCD
X23      67      EAST    ACROSS
X23      68      WEST    SLAB
X23      25      DOWN    PIT
X23      648     HOLE
X24      67      UP      EXIT
X24      92      GIANT
X25      23      UP      EXIT
X25      724031  CLIMB
X25      26      CLIMB
X26      88      FORCD
X27      312596  JUMP
X27      412021  FORWARD
X27      412597  OVER    ACROSS  E       CROSS   BRIDGE
X27      17      OVER
X27      40      N
X27      41      WEST
X28      19      HALL    EXIT    S
X28      33      N       Y2
X28      36      DOWN    HOLE
X29      19      HALL    EXIT    N
X30      19      HALL    EXIT    EAST
X30      62      WEST    UP
X31      524089  FORCD
X31      90      FORCD
X32      19      FORCD
X33      3       PLUGH
X33      28      S
X33      34      EAST    WALL    BROKEN
X33      35      WEST
X33      159302  PLOVER
X33      100     PLOVER
X34      33      DOWN    Y2
X34      15      UP
X35      33      EAST    Y2
X35      20      JUMP
X36      37      EAST    CRAWL
X36      28      UP      HOLE
X36      39      WEST
X36      65      BEDQUIL
X37      36      WEST    CRAWL
X37      38      DOWN    PIT     CLIMB
X38      37      CLIMB   UP      EXIT
X38      595     SLIT    STREAM  DOWN    UPSTREA DOWNSTR
X39      36      EAST    PASSAGE
X39      64      DOWN    HOLE    FLOOR
X39      65      BEDQUIL
X40      41      FORCD
X41      42      S       U       PASSAGE CLIMB
X41      27      EAST
X41      59      N
X41      60      WEST    CRAWL
X42      41      UP
X42      42      N
X42      43      EAST
X42      45      S
X42      80      WEST
X43      42      WEST
X43      44      S
X43      45      EAST
X44      43      EAST
X44      48      DOWN
X44      50      S
X44      82      N
X45      42      WEST
X45      43      N
X45      46      EAST
X45      47      S
X45      87      UP      DOWN
X46      45      WEST    EXIT
X47      45      EAST    EXIT
X48      44      UP      EXIT
X49      50      EAST
X49      51      WEST
X50      44      EAST
X50      49      WEST
X50      51      DOWN
X50      52      S
X51      49      WEST
X51      50      UP
X51      52      EAST
X51      53      S
X52      50      WEST
X52      51      EAST
X52      52      S
X52      53      UP
X52      55      N
X52      86      DOWN
X53      51      WEST
X53      52      N
X53      54      S
X54      53      WEST    EXIT
X55      52      WEST
X55      55      N
X55      56      DOWN
X55      57      EAST
X56      55      UP      EXIT
X57      13      DOWN    CLIMB
X57      55      WEST
X57      58      S
X57      83      N
X57      84      EAST
X58      57      EAST    EXIT
X59      27      FORCD
X60      41      EAST    UP      CRAWL
X60      61      WEST
X60      62      N       DOWN    HOLE
X60      50191   S       CRACK
X60      392173  S       CRACK
X60      172     S       CRACK
X60      648     CLIMB
X61      60      EAST
X61      62      N
X61      100107  S
X62      60      WEST
X62      63      N
X62      30      EAST
X62      61      S
X63      62      S       EXIT
X64      39      UP      CLIMB   ROOM
X64      65      WEST    BEDQUIL
X64      103     N       SHELL
X64      106     EAST
X65      64      EAST
X65      66      WEST
X65      40556   S
X65      68      SLAB
X65      40556   UP
X65      50070   UP
X65      39      UP
X65      40556   N
X65      50072   N
X65      71      N
X65      50556   DOWN
X65      106     DOWN
X66      65      NE
X66      67      WEST
X66      80556   S
X66      77      CANYON
X66      96      EAST
X66      50556   NW
X66      97      ORIENTAL
X67      66      EAST
X67      23      WEST    ACROSS
X67      24      DOWN    PIT
X68      23      S
X68      69      UP      CLIMB
X68      65      N
X69      68      DOWN    SLAB
X69      331120  S
X69      119     S
X69      109     N
X69      113     RESERVO
X70      71      N
X70      65      DOWN    PASSAGE
X70      111     S
X71      65      SE
X71      70      S
X71      110     N
X72      65      BEDQUIL
X72      118     NE
X72      73      N
X72      97      SW      ORIENTA
X73      72      S       CRAWL   EXIT
X74      19      EAST
X74      331120  WEST
X74      121     WEST
X74      75      DOWN
X75      76      S
X75      77      N
X76      75      N
X77      75      EAST
X77      78      WEST
X77      66      N       CRAWL
X78      77      S
X79      3       FORCD
X80      42      N
X80      80      WEST
X80      80      S
X80      81      EAST
X81      80      WEST    EXIT
X82      44      S       EXIT
X83      57      S
X83      84      EAST
X83      85      WEST
X84      57      N
X84      83      WEST
X84      114     NW
X85      83      EAST    EXIT
X86      52      UP      EXIT
X87      45      UP      DOWN
X88      25      DOWN    CLIMB   EAST
X88      20      JUMP
X88      92      WEST    GIANT
X89      25      FORCD
X90      23      FORCD
X91      95      N       CAVERN  PASSAGE
X91      72      DOWN    CLIMB
X92      88      S
X92      93      EAST
X92      94      N
X93      92      S       GIANT   EXIT
X94      92      S       GIANT   PASSAGE
X94      341095  N       ENTER   CAVERN
X94      611     N
X95      94      S       EXIT
X95      92      GIANT
X95      91      WEST
X95      145     DOWN    JUMP    POOL    HOLE
X96      66      WEST    EXIT
X97      66      SE
X97      72      EAST    CRAWL
X97      98      UP      N       CAVERN
X98      235     NE
X98      97      S       ORIENTA
X98      99      WEST
X98      3142    UP      SW      CLIMB   SLIDE
X98      75702   UP      SW      CLIMB   SLIDE
X98      703     UP      SW      CLIMB   SLIDE
X98      141     CHIMNEY
X99      98      NW      CAVERN
X99      301     EAST    PASSAGE
X99      100     EAST
X100     301     WEST    PASSAGE EXIT
X100     99      WEST
X100     159302  PLOVER  Y2
X100     33      PLOVER  Y2
X100     101     NE      DARK
X101     100     S       PLOVER  EXIT
X102     103     DOWN    SHELL   EXIT
X103     388196  UP      HALL
X103     102     UP      HALL
X103     104     DOWN
X103     114618  S
X103     115619  S
X103     64      S
X104     103     UP      SHELL
X104     105     DOWN
X105     104     UP      EXIT
X105     103     SHELL
X106     64      UP
X106     65      WEST
X106     108     EAST
X107     131     S
X107     132     SW
X107     133     NE
X107     134     SE
X107     135     UP
X107     136     NW
X107     137     EAST
X107     138     WEST
X107     139     N
X107     61      DOWN
X108     90556   E       N       S       NE      SE      SW      NW      U
X108     90556   D
X108     106     EAST
X108     626     WEST
X109     69      S
X109     113     N       RESERVO
X110     71      WEST
X110     20      JUMP
X111     70      N
X111     40050   DOWN    JUMP    CLIMB
X111     50053   DOWN
X111     45      DOWN
X112     131     SW
X112     132     N
X112     133     EAST
X112     134     NW
X112     135     SE
X112     136     NE
X112     137     WEST
X112     138     DOWN
X112     139     UP
X112     140     S
X113     109     S       EXIT
X114     84      SE
X115     116     SW      ACROSS  CROSS
X115     212     IN      ENTER   N
X116     115     NE      ACROSS  SW
X116     593     DOWN
X117     118     SW
X117     233660  OVER    ACROSS  CROSS   NE      BRIDGE
X117     332661  OVER
X117     303     OVER
X117     332021  JUMP
X117     596     JUMP
X118     72      DOWN
X118     117     UP
X119     69      N       EXIT
X119     653     EAST    FORWARD
X120     69      N
X120     74      EAST
X121     74      EAST    EXIT
X121     653     N       FORWARD
X122     123     NE
X122     233660  OVER    ACROSS  CROSS   SW      BRIDGE
X122     303     OVER
X122     596     JUMP
X122     124     FORK
X122     126     VIEW
X122     129     BARREN
X123     122     WEST
X123     124     EAST    FORK
X123     126     VIEW
X123     129     BARREN
X124     123     WEST
X124     125     NE      LEFT
X124     128     SE      RIGHT   DOWN
X124     126     VIEW
X124     129     BARREN
X125     124     S       FORK
X125     126     N       VIEW
X125     127     EAST    CRAWL
X126     125     S       PASSAGE EXIT
X126     124     FORK
X126     610     DOWN    JUMP
X127     125     WEST    EXIT    CRAWL
X127     124     FORK
X127     126     VIEW
X128     124     N       UP      FORK
X128     129     S       DOWN    BARREN
X128     126     VIEW
X129     128     WEST    UP
X129     124     FORK
X129     130     EAST    IN      BARREN  ENTER
X129     126     VIEW
X130     129     WEST    EXIT
X130     124     FORK
X130     126     VIEW
X131     107     WEST
X131     132     SE
X131     133     NW
X131     134     SW
X131     135     NE
X131     136     UP
X131     137     DOWN
X131     138     N
X131     139     S
X131     112     EAST
X132     107     NW
X132     131     UP
X132     133     N
X132     134     S
X132     135     WEST
X132     136     SW
X132     137     NE
X132     138     EAST
X132     139     DOWN
X132     112     SE
X133     107     UP
X133     131     DOWN
X133     132     WEST
X133     134     NE
X133     135     SW
X133     136     EAST
X133     137     N
X133     138     NW
X133     139     SE
X133     112     S
X134     107     NE
X134     131     N
X134     132     NW
X134     133     SE
X134     135     EAST
X134     136     DOWN
X134     137     S
X134     138     UP
X134     139     WEST
X134     112     SW
X135     107     N
X135     131     SE
X135     132     DOWN
X135     133     S
X135     134     EAST
X135     136     WEST
X135     137     SW
X135     138     NE
X135     139     NW
X135     112     UP
X136     107     EAST
X136     131     WEST
X136     132     UP
X136     133     SW
X136     134     DOWN
X136     135     S
X136     137     NW
X136     138     SE
X136     139     NE
X136     112     N
X137     107     SE
X137     131     NE
X137     132     S
X137     133     DOWN
X137     134     UP
X137     135     NW
X137     136     N
X137     138     SW
X137     139     EAST
X137     112     WEST
X138     107     DOWN
X138     131     EAST
X138     132     NE
X138     133     UP
X138     134     WEST
X138     135     N
X138     136     S
X138     137     SE
X138     139     SW
X138     112     NW
X139     107     SW
X139     131     NW
X139     132     EAST
X139     133     WEST
X139     134     N
X139     135     DOWN
X139     136     SE
X139     137     UP
X139     138     S
X139     112     NE
X140     112     N       EXIT
X141     142     UP      EAST    CLIMB   CHIMNEY SLIDE
X142     98      EAST    DOWN    FORWARD SLIDE
X142     141     BACK    WEST    CHIMNEY
X143     19      WEST    EXIT
X143     144     EAST
X144     143     WEST    BACK
X144     19      EXIT
X145     141     FORCD
X146     2       EAST    UP      ROAD    CLIMB
X146     50006   S       FOREST
X146     146     S       FOREST
X146     147     WEST
X146     148     N
X147     146     EAST    S
X147     148     N
X147     153     WEST
X147     157     HOLE
X147     3       BUILDIN
X147     157     THUNDER
X148     50147   S
X148     146     S
X148     149     EAST    WEST    N
X148     3       BUILDIN
X148     166     GROTTO
X149     149     S
X149     151     EAST
X149     150     WEST
X149     152     N
X150     151     N       S
X150     149     EAST    WEST
X151     148     EAST
X151     152     WEST
X151     150     N
X151     149     S
X152     151     EAST
X152     150     S
X153     154     N
X153     239     S
X153     147     EAST
X153     3       BUILDIN
X154     50155   N
X154     157     N       DOWN
X154     155     UP
X154     153     S
X154     3       BUILDIN
X155     154     DOWN    BACK    S
X155     156     JUMP
X155     3       BUILDIN
X156     0       FORCD
X157     227     IN      EAST
X157     154     EXIT    S       UP
X157     3       BUILDIN
X158     229     WEST    STEPS   DOWN
X158     157     EXIT
X158     161     PHUCE
X158     725     CLIMB   UP
X158     726     LEDGE
X158     747     ENTER   IN      EAST    ENTRANC
X159     732     EXIT    WEST    STEPS
X160     343167  EAST    IN      ENTER
X160     738     EAST
X160     162     PHUCE
X160     723     WEST    CLIMB   DOWN
X160     165     JUMP
X161     304     FORCD
X162     304     FORCD
X163     304     FORCD
X164     304     FORCD
X165     0       FORCD
X166     747     ENTER   EXIT    IN      WEST
X166     148232  EAST    CROSS   OVER    ACROSS
X166     148169  NE
X166     148233  S
X166     148234  N
X166     717     EAST    CROSS   OVER    ACROSS  NE
X166     448164  PHUCE
X166     720     PHUCE
X167     163     PHUCE
X167     343160  WEST    EXIT    ENTER   IN
X167     739     WEST
X167     722     EAST    CROSS   OVER    ACROSS
X168     448170  SE      UP      PASSAGE
X168     719     SE      UP      PASSAGE
X168     148169  N
X168     148192  S
X168     148166  WEST    CROSS   OVER    ACROSS
X168     717     WEST    N       S
X169     148168  S
X169     148166  SW
X169     717     SW      S
X169     448179  PASSAGE EAST    UP
X169     719     PASSAGE UP
X170     171     EAST    UP
X170     168     WEST    DOWN
X171     170     NW      DOWN
X171     180     EAST    UP
X172     60      N
X172     174     S
X173     60      N
X174     392178  NE
X174     172     NE      CRACK
X174     175     NW
X175     177     N
X175     174     EAST
X175     176     PIT     DOWN    CLIMB
X176     175     UP      CLIMB   EXIT    BACK
X177     60      DOWN    CLIMB   JUMP
X177     175     S       BACK
X178     174     FORCD
X179     169     DOWN    WEST
X179     198     UP      EAST    STREAM
X180     171     WEST
X180     182     UP      CLIMB
X180     213     EAST
X181     227     FORCD
X182     180     WEST
X182     183     EAST
X183     182     WEST
X183     50184   EAST
X183     186     EAST
X183     185     S
X183     187     N
X184     183     SW
X184     188     SE
X185     183     N
X186     183     NW
X186     188     NE
X187     183     WEST
X187     188     EAST
X188     187     N
X188     184     WEST
X188     65190   SW      DOWN
X188     186     SW
X188     305     IN      ENTER
X189     188     EXIT    BACK
X190     422306  CROSS   N       ACROSS  BRIDGE
X190     661     CROSS
X190     188     UP      BACK
X191     60      N
X192     148166  N
X192     148168  NE
X192     717     N       NE
X192     448197  EAST
X192     720     EAST
X193     197     WEST
X194     224     WEST
X195     196     HOLE    WALL    S       CROSS   LEFT
X195     224     WEST
X196     103     DOWN    SHELL
X196     114618  HOLE    WALL    N       CROSS
X196     195     HOLE
X197     193     EAST
X197     192     WEST
X198     179     SW      STREAM  DOWNSTR PASSAGE
X198     203     DOWN    EAST
X198     402200  S       UP
X198     772     S       UP
X199     198     FORCD
X200     198     WEST
X200     201     EAST    UP
X201     402200  WEST    DOWN
X201     772     WEST    DOWN
X201     202     EAST
X201     230     N
X202     201     WEST
X202     467785  CLICK
X202     205     CLICK
X202     206     EAST
X203     447199  DOWN    EAST    ICE
X203     204     DOWN    EAST    ICE
X203     198     UP      WEST
X204     203     UP      WEST    BACK    EXIT
X205     219     N
X205     467785  CLICK
X205     202     CLICK
X205     226     JUMP
X206     207     N       CRAWL
X206     202     WEST
X206     648     UP      HOLE
X207     208     N
X207     206     S
X208     236     EAST
X208     207     S       CRAWL
X208     209     WEST
X208     793     CROSS   ACROSS  N
X209     208     EAST
X209     210     UP      CLIMB
X210     211     DOWN    EAST
X210     209     WEST
X211     210     UP      BACK    WEST
X211     122     DOWN    EAST
X212     115     EXIT    BACK    S
X213     206     DOWN    HOLE
X213     180     WEST    BACK
X214     148166  S
X214     148169  SE
X214     717     S       SE
X214     448215  NE
X214     720     NE
X215     214     SW
X215     216     UP
X216     215     DOWN
X216     217     EAST    UP
X217     216     WEST    DOWN    EXIT
X217     218     EAST    PIT
X218     217     BACK    WEST
X218     230     UP      CLIMB
X219     205     S       BRIDGE
X219     222     N       ALTAR
X219     220     EAST
X219     221     WEST
X219     3       PRAY
X220     219     WEST
X220     225     EAST
X221     219     EAST
X222     219     S
X222     223     UP
X222     3       PRAY
X223     222     DOWN
X223     224     UP
X224     223     DOWN    HOLE
X224     388195  EAST
X224     194     EAST
X225     220     WEST
X226     0       FORCD
X227     157     WEST    EXIT    UP
X227     398228  EAST    IN      DOWN
X227     181     EAST    IN      DOWN
X228     792     N       S       UPSTREA DOWNSTR CRACK
X228     227     UP      WEST    EXIT
X228     229     JUMP
X228     786     EAST    IN      ACROS   CROSS   OVER
X229     792     N       S       UPSTREA DOWNSTR CRACK
X229     228     JUMP
X229     786     WEST    EXIT    ACROSS  CROSS   OVER
X229     158     EAST    IN      STEPS
X230     65218   DOWN    JUMP
X230     231     DOWN    JUMP
X230     201     S       CRAWL
X231     0       FORCD
X232     168     FORCD
X233     192     FORCD
X234     214     FORCD
X235     422306  CROSS   S       ACROSS  BRIDGE
X235     661     CROSS
X235     98      WEST
X236     208     WEST
X237     19      FORCD
X238     3       EXIT    OUT     ENTRANC
X239     153     N       NE
X239     240     SAINT-MI
X240     239     NE      ACROSS  CROSS   SAINT-
X240     241     D
X241     240     U
X241     242     W
X242     241     E
X242     243     SW
X242     244     W
X242     246     NW
X243     242     NE
X243     244     N
X243     247     NW
X244     242     E
X244     243     S
X244     245     W
X244     246     N
X245     243     S
X245     244     E
X245     246     N
X245     247     W
X246     242     SE
X246     245     S
X246     247     SW
X247     243     SE
X247     245     E
X247     246     NE
X247     307     W
X248     247     E
X-1
X5
X2       Brass lantern
X0000    There is a shiny brass lamp nearby.
X1000    There is a lamp shining nearby.
X3       *Grate
X0000    The grate is locked.
X1000    The grate is open.
X4       Wicker cage
X0000    There is a small wicker cage discarded nearby.
X5       Black rod
X0000    A three foot black rod with a rusty star on an end lies nearby.
X6       Black rod
X0000    A three foot black rod with a rusty mark on an end lies nearby.
X7       *Steps
X0000    Rough stone steps lead down the pit.
X1000    Rough stone steps lead up the dome.
X9       Wooden pole
X0000    A wooden pole is lying nearby.
X1000    A wooden pole has been stuck in the mud here.
X10      Velvet pillow
X0000    A small velvet pillow lies on the floor.
X11      *Snake
X0000    A huge green fierce snake bars the way!
X1000    <$$<  (Chased away)
X12      *Fissure
X0000    <$$<
X1000    A crystal bridge now spans the fissure.
X2000    The crystal bridge has vanished!
X13      *Stone tablet
X0000    A massive stone tablet imbedded in the wall reads:
X0000    "Congratulations on bringing light into the Dark-Room!"
X14      Giant clam  >grunt!<
X0000    There is an enormous clam here with its shell tightly closed.
X15      Giant oyster  >groan!<
X0000    There is an enormous oyster here with its shell tightly closed.
X1000    Interesting.  There seems to be something written on the underside of
X1000    the oyster.
X16      "Spelunker Today"
X0000    There are a few recent issues of "Spelunker Today" magazine here.
X19      Tasty food
X0000    There is food here.
X20      Small bottle
X0000    There is a bottle of water here.
X1000    There is an empty bottle here.
X2000    There is a bottle of oil here.
X3000    There is a broken bottle here.
X4000    There is a bottle of wine here.
X21      *Chasm - troll bridge
X0000    A rickety wooden bridge extends across the chasm, vanishing into the
X0000    mist.  A sign posted on the bridge reads, "Stop! Pay troll!"
X1000    The wreckage of a bridge (and a dead bear) can be seen at the bottom
X1000    of the chasm.
X22      *Chasm2 & decrepit natural bridge
X0000    A decrepit natural bridge spans the chasm.  A message scrawled into
X0000    the rock wall reads: "Bridge out of repair.  Maximum load: 35 Foonts."
X1000    The remnants of a natural bridge partially overhang the chasm.
X23      *Mirror
X0000    <$$<
X24      *plant
X0000    There is a tiny little plant in the pit, murmuring "Water, water, ..."
X1000    The plant spurts into furious growth for a few seconds.
X2000    There is a 12-foot-tall beanstalk stretching up out of the pit,
X2000    bellowing "Water!! Water!!"
X3000    The plant grows explosively, almost filling the bottom of the pit.
X4000    There is a gigantic beanstalk stretching all the way up to the hole.
X5000    You've over-watered the plant!  It's shriveling up!  It's, it's...
X25      *Phony plant (seen in twopit room only when tall enough)
X0000    <$$<
X1000    The top of a 12-foot-tall beanstalk is poking out of the west pit.
X2000    There is a huge beanstalk growing out of the west pit up to the hole.
X26      *Stalactite
X0000    <$$<
X27      *shadowy figure
X0000    The shadowy figure seems to be trying to attract your attention.
X28      Dwarf's axe
X0000    There is a little axe here.
X1000    There is a little axe lying beside the bear.
X2000    There is a little axe lying beside the Wumpus.
X3000    There is a little axe lying beside the dog.
X29      *Cave drawings
X0000    <$$<
X30      *pirate
X0000    <$$<
X31      *dragon
X0000    A huge green fierce dragon bars the way!
X1000    Congratulations!  You have just vanquished a dragon with your bare
X1000    hands!  (Unbelievable, isn't it?)
X2000    The body of a huge green dead dragon is lying off to one side.
X33      *Troll
X0000    A burly troll stands by the bridge and insists you throw him a
X0000    treasure before you may cross.
X1000    The troll steps out from beneath the bridge and blocks your way.
X2000    <$$<  (Chased away)
X34      *phony troll
X0000    The troll is nowhere to be seen.
X35      <$$<  (Bear uses rtext 141)
X0000    There is a ferocious cave bear eying you from the far end of the room!
X1000    There is a gentle cave bear sitting placidly in one corner.
X2000    There is a contented-looking bear wandering about nearby.
X3000    <$$<  (Dead)
X36      *Message in second maze
X0000    There is a message scrawled in the dust in a flowery script, reading:
X0000    "This is not the maze where the pirate leaves his treasure chest."
X37      *Volcano and/or geyser
X0000    <$$<
X38      *Vending machine
X0000    There is a massive vending machine here.  The instructions on it
X0000    read:  "Insert coins to receive fresh batteries."
X1000    There is a massive vending machine here.
X39      Batteries
X0000    There are fresh batteries here.
X1000    Some worn-out batteries have been discarded nearby.
X2000    Some worn-out batteries have been discarded nearby.
X40      *Carpet and/or moss
X0000    <$$<
X41      *Rusty door
X0000    The way north is barred by a massive, rusty, iron door.
X1000    The way north leads through a massive, rusty, iron door.
X42      *Tiny door
X0000    The only way past the wall is through a tiny locked door.
X1000    The only way past the wall is through a tiny open door.
X43      *Tiny door-2
X0000    The door is locked.
X1000    The door is open.
X44      *Phone booth door
X0000    <$$<
X46      Beautiful flowers
X0000    There are some beautiful flowers here!
X1000    On the other side of the room a swarm of bees eagerly buzzes over
X1000    a bunch of fresh flowers.
X47      Silken cloak
X0000    There is a silken cloak here!
X1000    <$$<  (wearing cloak)
X2000    A lovely silken cloak lies partially buried under a pile of
X2000    loose rocks.
X48      Wooden boat
X0000    There is a small wooden boat here.
X1000    You are in a wooden boat.
X49      *Sticks at Styx
X0000    <$$<
X50      Large gold nugget
X0000    There is a large sparkling nugget of gold here!
X51      Several diamonds
X0000    There are diamonds here!
X52      Silver horn
X0000    There is a silver horn here!
X53      Precious jewelry
X0000    There is precious jewelry here!
X1000    <$$<  (wearing jewelry)
X54      Rare coins
X0000    There are many coins here!
X55      Treasure chest
X0000    The pirate's treasure chest is here!
X56      Golden eggs
X0000    There is a large nest here, full of golden eggs!
X1000    The nest of golden eggs has vanished!
X2000    Done!
X57      Jeweled trident
X0000    There is a jewel-encrusted trident here!
X58      Ming vase
X0000    There is a delicate, precious, ming vase here!
X1000    The vase is now resting, delicately, on a velvet pillow.
X2000    The floor is littered with worthless shards of pottery.
X3000    The ming vase drops with a delicate crash.
X59      Egg-sized emerald
X0000    There is an emerald here the size of a plover's egg!
X60      Platinum pyramid
X0000    There is a platinum pyramid here, 8 inches on a side!
X61      Glistening pearl
X0000    Off to one side lies a glistening pearl!
X62      Persian rug
X0000    There is a persian rug spread out on the floor!
X1000    The dragon is sprawled out on a persian rug!!
X63      Rare spices
X0000    There are rare spices here!
X64      Golden chain
X0000    There is a golden chain lying in a heap on the floor!
X1000    The bear is locked to the wall with a golden chain!
X2000    There is a golden chain locked to the wall!
X65      Gleaming sword
X0000    There is a gleaming sword here!
X1000    A gleaming sword is stuck into the anvil!
X3000    You grasp the sword's handle and give a mighty heave, but with a
X3000    loud clang the sword blade shatters into several fragments.
X4000    Rusty shards of a elven sword lie scattered about.
X5000    A very clean sword is stuck into the anvil!
X6000    An oily sword is stuck into the anvil.
X66      Elfin crown
X0000    An ancient crown of elfin kings lies here!
X1000    <$$<  (wearing crown)
X67      Ruby slippers
X0000    There is a pair of ruby slippers here.
X1000    <$$<  (wearing slippers)
X2000    There is a pair of ruby slippers here.
X68      Delicate lyre
X0000    There is a delicate lyre here!
X69      Star sapphire
X0000    There is a star sapphire here!
X70      Holy Grail
X0000    There is an ornate silver chalice here!
X71      Oaken cask
X0000    There is a cask of water here.
X1000    There is an empty oaken cask here.
X2000    There is a cask of oil here.
X3000    <$$<  (Unused)
X4000    There is a cask of wine here.
X72      Golden ring
X0000    There is a small gold ring here.
X1000    <$$<  (wearing ring)
X2000    On the Wumpus' finger is a small gold ring.
X73      Four-leafed clover
X0000    There is a four-leafed clover here!
X1000    <$$<  (wearing clover)
X74      Gold tree
X1000    There is a gold statue of a tree here.
X75      Silver droplet
X1000    There is a single droplet of silver on the ground here.
X81      Clear water
X82      Cool water
X83      Thick, black oil
X84      Thick, black oil
X85      Vintage wine
X86      Vintage wine
X87      *Bumblebees
X0000    <$$<
X1000    Some bumblebees are swarming around a bunch of fresh flowers.
X88      *Hollow wall
X0000    Your footsteps echo hollowly throughout the chamber.
X1000    <$$<
X89      *Wall with safe
X0000    A steel safe is embedded in the wall.
X90      Tiny brass key
X0000    There is a tiny brass key here.
X1000    There is a tiny brass key on the shelf.
X91      *Anvil
X0000    <$$<
X92      *rocks on cloak
X0000    <$$<  (ON CLOAK)
X1000    <$$<  (AFTER ROCKSLIDE)
X93      *telephone booth
X0000    The telephone booth is empty.  The phone is ringing.
X1000    The phone booth is occupied by a gnome.  He is talking excitedly
X1000    to someone at the other end.
X2000    The telephone booth is empty.
X3000    <$$<
X94      *Telephone
X0000    The phone is ringing.
X1000    The telephone is out of order.
X2000    The telephone is out of order.  It is badly dented.
X3000    <$$<
X95      Lead slugs
X0000    There are some lead slugs here!
X96      Sweet honeycomb
X0000    There is a sweet honeycomb here!
X97      *Beehive
X0000    There is an active beehive nearby.  The bees hum protectively
X0000    around the hive.
X1000    There is an empty beehive nearby.
X98      *Black dog
X0000    A hideous black dog bares his teeth and growls at your approach.
X1000    Nearby, a large black dog is in a deep slumber.
X99      *Dreaded Wumpus
X0000    In the corner, a Wumpus is sleeping peacefully.
X1000    A sleepy Wumpus is ambling towards you.  He wants to invite you to
X1000    dinner.  He wants you to *be* the dinner!
X2000    The Wumpus is still on your trail!  And he's getting closer!!
X3000    The Wumpus is only a few steps behind you!  All this exercise is
X3000    making him veerrrrry hungry!
X4000    The Wumpus almost has you in his grasp!  You can feel his hot breath
X4000    on your neck!
X5000    "Chomp, chomp."  Crunch!  Chew!  Slurp!  Smack!  Yum!!!
X6000    Nearby is the smashed body of a defunct Wumpus.
X101     Little bird in cage
X0000    A cheerful little bird is sitting here singing.
X1000    There is a little bird in the cage.
X102     Set of keys
X0000    There are some keys on the ground here.
X103     *Fountain
X0000    There is a fountain of sparkling vintage wine here!
X104     *Bats & guano in bat-cave
X0000    <$$<
X105     *gnome in phone booth
X0000    <$$<
X106     Colored mushrooms
X0000    There are some oddly-colored mushrooms here.
X107     Tiny cakes
X0000    There are some tiny cakes on the shelf.
X108     Leather Sack
X0000    There is a leather sack here.
X110     Rare book
X0000    There is a dusty, leather-bound volume here.
X111     Rare book
X0000    There is a dusty, leather-bound volume here.
X112     Steel wall-safe
X0000    The safe door is locked.
X1000    The safe door is open.
X113     Faded poster
X0000    Taped to the wall is a faded poster.
X1000    There is a faded poster here.
X114     Whiskbroom
X0000    There is a small whiskbroom here.
X115     *Carving on dusty rocks
X0000    <$$<
X1000    <$$<
X116     *Billboard
X0000    <$$<
X118     Small metal cannister
X0000    There is a heavy, grey, metal cannister here.
X119     Glowing stone
X0000    Nearby, a strange, greenish stone is glowing brightly.
X120     Quartz sphere
X0000    There is a polished sphere of pure quartz here!
X-1
X6
X1       Somewhere nearby is Colossal Cave, where others have found fortunes in
X1       treasure and gold, though it is rumored that some who enter are never
X1       seen again.  Magic is said to work in the cave.  I will be your eyes
X1       and hands.  Direct me with natural English commands.  I should warn
X1       you that I look at only the first six letters of each word. Also you
X1       should enter "Northeast" as "NE" to distinguish it from "North".
X1       (Should you get stuck, type "HELP" or "?" for some general hints.)
X1       Good Luck!
X1       - - - -
X2       A little dwarf with a big knife blocks your way.
X3       A little dwarf just walked around a corner, saw you, threw a little
X3       axe at you which missed, cursed, and ran away.
X4       There is a threatening little dwarf in the room with you!
X5       One sharp nasty knife is thrown at you!
X6       None of them hit you!
X7       One of them gets you!
X8       A hollow voice says "Plugh".
X9       There is no way to go that direction.
X10      I am unsure how you are facing.  Use compass points or nearby objects.
X11      I don't know in from out here.  Use compass points or name something
X11      in the general direction you want to go.
X12      I don't know how to apply that word here.
X13      I don't understand that!
X14      I'm game.  Would you care to explain how?
X15      Sorry, but I am not allowed to give more detail.  I will repeat the
X15      long description of your location.
X16      It is now pitch dark.  If you proceed you will likely fall into a pit.
X17      If you prefer, simply type "W" rather than "West".
X18      Are you trying to catch the bird?
X19      The bird is frightened right now and you cannot catch it no matter
X19      what you try.  Perhaps you might try later.
X20      Are you trying to somehow deal with the snake?
X21      You can't kill the snake, or drive it away, or avoid it, or anything
X21      like that.  There is a way to get by, but you don't have the necessary
X21      resources right now.
X22      Do you really want to quit now?
X23      You fell into a pit and broke every bone in your body!
X24      You are already carrying it!
X25      You can't be serious!
X26      The bird was unafraid when you entered, but as you approach it becomes
X26      disturbed and you cannot catch it.
X27      You can catch the bird, but you cannot carry it.
X28      There is nothing here with a lock!
X29      You aren't carrying it!
X30      The little bird attacks the green snake, and in an astounding flurry
X30      drives the snake away.
X31      You have no keys!
X32      It has no lock.
X33      I don't know how to lock or unlock such a thing.
X34      It was already locked.
X35      The grate is now locked.
X36      The grate is now unlocked.
X37      It was already unlocked.
X38      You have no source of light.
X39      Your lamp is now on.
X40      Your lamp is now off.
X41      There is no way to get past the bear to unlock the chain, which is
X41      probably just as well.
X42      Nothing happens.
X43      Where?
X44      There is nothing here to attack.
X45      The little bird is now dead.  Its body disappears.
X46      Attacking the snake both doesn't work and is very dangerous.
X47      You killed a little dwarf.
X48      You attack a little dwarf, but he dodges out of the way.
X49      With what?  Your bare hands?
X50      Good try, but that is an old worn-out magic word.
X51      To move, try words like FOREST, BUILDING, DOWNSTREAM, IN, EAST, NORTH,
X51      UP, OR DOWN. Saying a place name may take you there, as may some
X51      magic words. You can say TAKE LAMP or DROP LAMP or PUT LAMP IN SACK.
X51      Some objects have side effects; for instance, the rod scares the bird.
X51      You can take or drop multiple objects by saying TAKE BOOK AND LAMP,
X51      etc. To list what you are currently holding, say INVENTORY, or just I.
X51      To reprint the detailed description of where you are, say LOOK
X51      or L. You can also LOOK IN or LOOK AT appropriate objects. Other 
X51      useful commands are HEALTH, QUIT, SCORE, BRIEF, TERSE, UNBRIEF, 
X51      UNTERSE, SAVE, and RESTORE. The latter two save or restore your
X51      current position. To get full credit for a treasure, you must have
X51      left it **safely** in the building. Some non-treasure items are best
X51      left near where you find them. There are clues for various problems
X51      lying about the cave: look and listen. If you seem to have found
X51      all the treasures, keep looking around a while, something else
X51      may happen to you (for a bonus!)
X51      (The word "give" doesn't exist, but you can say FEED BONE TO DOG or
X51      THROW BONE AT DOG. Also, you can use conveyances or animals(!)
X51      by TAKEing and DROPing them.)
X52      It misses!
X53      It gets you!
X54      Ok
X55      You can't unlock the keys.
X56      You have crawled around in some little holes and wound up back in the
X56      main passage.
X57      I don't know where the cave is, but hereabouts no stream can run on
X57      the surface for long.  I would try the stream.
X58      I need more detailed instructions to do that.
X59      I can only tell you what you see as you move about and manipulate
X59      things.  I cannot tell you where remote things are.
X60      I can't make any sense out of that.
X61      What?
X62      Are you trying to get into the cave?
X63      The grate is very solid and has a hardened steel lock.  You cannot
X63      enter without a key, and there are no keys nearby.  I would recommend
X63      looking elsewhere for the keys.
X64      The trees of the forest are large hardwood oak and maple, with an
X64      occasional grove of pine or spruce.  There is quite a bit of under-
X64      growth, largely birch and ash saplings plus nondescript bushes of
X64      various sorts.  This time of year visibility is quite restricted by
X64      all the leaves, but travel is quite easy if you detour around the
X64      spruce and berry bushes.
X65      Welcome to ADVENTURE!!  Would you like instructions?
X66      Digging without a shovel is quite impractical.  Even with a shovel
X66      progress is unlikely.
X67      Blasting requires dynamite.
X68      I'm as confused as you are.
X69      Mist is a white vapor, usually water, seen from time to time in
X69      caverns.  It can be found anywhere but is frequently a sign of a deep
X69      pit leading down to water.
X70      Your feet are now wet.
X71      I think I just lost my appetite.
X72      Thank you, it was delicious!
X73      You have taken a drink from the stream.  The water tastes strongly of
X73      minerals, but is not unpleasant.  It is extremely cold.
X74      The bottle is now empty.
X75      Rubbing the electric lamp is not particularly rewarding.  Anyway,
X75      nothing exciting happens.
X76      Peculiar.  Nothing unexpected happens.
X77      Your bottle is empty and the ground is wet.
X78      You can't pour that.
X79      Watch it!
X80      Which way?
X81      Oh dear, you seem to have gotten yourself killed.  I might be able to
X81      help you out, but I've never really done this before.  Do you want me
X81      to try to reincarnate you?
X82      All right.  But don't blame me if something goes wr......
X82      *                    --- POOF!! ---                    *
X82      You are engulfed in a cloud of orange smoke.  Coughing and gasping,
X82      you emerge from the smoke and find....
X83      You clumsy oaf, you've done it again!  I don't know how long I can
X83      keep this up.  Do you want me to try reincarnating you again?
X84      Okay, now where did I put my orange smoke?....  >POOF!<
X84      Everything disappears in a dense cloud of orange smoke.
X85      Now you've really done it!  I'm out of orange smoke!  You don't expect
X85      me to do a decent reincarnation without any orange smoke, do you?
X86      Okay, if you're so smart, do it yourself!  I'm leaving!
X90      >>> Messages 81 thru 90 are reserved for "Obituaries". <<<
X91      Sorry, but I no longer seem to remember how it was you got here.
X92      It's too heavy.  You'll have to drop something first.
X93      You can't go through a locked steel grate!
X94      I believe what you want is right here with you.
X95      You don't fit through a two-inch slit!
X96      I respectfully suggest you go across the bridge instead of jumping.
X97      There is no way across the fissure.
X98      You're not carrying anything.
X99      You are currently holding the following:
X100     It's not hungry (it's merely pinin' for the fjords).  Besides, you
X100     have no bird seed.
X101     The snake has now devoured your bird.
X102     There's nothing here it wants to eat (except perhaps you).
X103     You fool, dwarves eat only coal!  Now you've made him *REALLY* mad!!
X104     Your cask is empty and the ground is soaked.
X105     You aren't carrying them!
X106     I don't need to, thank you.
X107     The ground is wet and the air is smelly.
X108     Your lamp is now on, but the glare from the walls is absolutely
X108     blinding.  If you proceed you are likely to fall into a pit.
X109     You haven't any matches.
X110     Don't be ridiculous!
X111     The door is extremely rusty and refuses to open.
X112     The plant indignantly shakes dry its leaves and asks, "Water?"
X113     The hinges are quite thoroughly rusted now and won't budge.
X114     The oil has freed up the hinges so that the door will now move,
X114     although it requires some effort.
X115     The plant has exceptionally deep roots and cannot be pulled free.
X116     The dwarves' knives vanish as they strike the walls of the cave.
X117     Something you're carrying won't fit through the tunnel with you.
X117     You'd best take inventory and drop something.
X118     You can't fit this five-foot clam through that little passage!
X119     You can't fit this five-foot oyster through that little passage!
X120     I advise you to put down the clam before opening it.  >Strain!<
X121     I advise you to put down the oyster before opening it.  >Wrench!<
X122     You don't have anything strong enough to open the clam.
X123     You don't have anything strong enough to open the oyster.
X124     A glistening pearl falls out of the clam and rolls away.  Goodness,
X124     this must really be an oyster.  (I never was very good at identifying
X124     bivalves.)  Whatever it is, it has now snapped shut again.
X125     The oyster creaks open, revealing nothing but oyster inside.  It
X125     promptly snaps shut again.
X126     You have crawled around in some little holes and found your way
X126     blocked by a recent cave-in.  You are now back in the main passage.
X127     There are faint rustling noises from the darkness behind you.
X128     Out from the shadows behind you pounces a bearded pirate!  "Har, har,"
X128     he chortles, "I'll just take all this booty and hide it away with me
X128     chest deep in the maze!"  He snatches your treasure and vanishes into
X128     the gloom.
X129     A sepulchral voice reverberating through the cave, says, "Cave closing
X129     soon.  All adventurers exit immediately through Main Office."
X130     A mysterious recorded voice groans into life and announces:
X130        "This exit is closed.  Please leave via Main Office."
X131     It looks as though you're dead.  Well, seeing as how it's so close to
X131     closing time anyway, I think we'll just call it a day.
X132     The sepulchral voice entones, "The cave is now closed."  As the echoes
X132     fade, there is a blinding flash of light (and a small puff of orange
X132     smoke). . . .    As your eyes refocus, you look around and find...
X133     There is a loud explosion, and a twenty-foot hole appears in the far
X133     wall, burying the dwarves in the rubble.  You march through the hole
X133     and find yourself in the Main Office, where a cheering band of
X133     friendly elves carry the conquering adventurer off into the sunset.
X134     There is a loud explosion, and a twenty-foot hole appears in the far
X134     wall, burying the snakes in the rubble.  A river of molten lava pours
X134     in through the hole, destroying everything in its path, including you!
X135     There is a loud explosion, and you are suddenly splashed across the
X135     walls of the room.
X136     The resulting ruckus has awakened the dwarves.  There are now several
X136     threatening little dwarves in the room with you!  Most of them throw
X136     knives at you!  All of them get you!
X137     Oh, leave the poor unhappy bird alone.
X138     I daresay whatever you want is around here somewhere.
X139     I'm not sure what you mean by "Stop".  Use "Quit" if you want to give
X139     up.
X140     You can't get there from here.
X141     You are being followed by a very large, tame bear.
X142     -          *** THE HISTORY OF ADVENTURE (ABRIDGED) ***          -
X142     -                    ** By Ima Wimp **                          -
X142     ADVENTURE was originally developed by William Crowther, and later
X142     substantially rewritten and expanded by Don Woods at Stanford Univ.
X142     According to legend, Crowther's original version was modelled on an
X142     a real cavern, called Colossal Cave, which is a part of Kentucky's
X142     Mammoth Caverns.  That version of the game included the main maze
X142     and a portion of the third-level (Complex Junction - Bedquilt -
X142     Swiss Cheese rooms, etc.), but not much more.
X142     Don Woods and some others at Stanford later rewrote portions of
X142     the original program, and greatly expanded the cave.  That version
X142     of the game is recognizable by the maximum score of 350 points.
X142     Some major additions were done by David Long while at the University
X142     of Chicago, Graduate School of Business. Long's additions include the
X142     seaside entrance and all of the cave on the "far side" of Lost River
X142     (Rainbow Rm - Crystal Palace - Blue Grotto, etc.).
X142     The castle problem was added in late 1984 by an anonymous writer.
X142     Thanks are owed to Roger Matus and David Feldman, both of U. of C.,
X142     for several suggestions, including the Rainbow Room, the telephone
X142     booth and the fearsome Wumpus. Most thanks (and apologies)
X142     go to Thomas Malory, Charles Dodgson, the Grimm Brothers, Dante,
X142     Homer, Frank Baum and especially Anon., the real authors of ADVENTURE.
X143     Do you indeed wish to quit now?
X144     There is nothing here with which to fill the vase.
X145     The sudden change in temperature has delicately shattered the vase.
X146     It is beyond your power to do that.
X147     I don't know how.
X148     It is too far up for you to reach.
X149     You killed a little dwarf.  The body vanishes in a cloud of greasy
X149     black smoke.
X150     The shell is very strong and is impervious to attack.
X151     What's the matter, can't you read?  Now you'd best start over.
X152     The axe bounces harmlessly off the dragon's thick scales.
X153     The dragon looks rather nasty.  You'd best not try to get by.
X154     The little bird attacks the green dragon, and in an astounding flurry
X154     gets burnt to a cinder.  The ashes blow away.
X155     On what?
X156     Okay, from now on I'll only describe a place in full the first time
X156     you come to it.  To get the full description, say "LOOK".
X157     Trolls are close relatives with the rocks and have skin as tough as
X157     that of a rhinoceros.  The troll fends off your blows effortlessly.
X158     The troll deftly catches the axe, examines it carefully, and tosses it
X158     back, declaring, "Good workmanship, but it's not valuable enough."
X159     The troll catches your treasure and scurries away out of sight.
X160     The troll refuses to let you cross.
X161     There is no longer any way across the chasm.
X162     Just as you reach the other side, the bridge buckles beneath the
X162     weight of the bear, which was still following you around.  You
X162     scrabble desperately for support, but as the bridge collapses you
X162     stumble back and fall into the chasm.
X163     The bear lumbers toward the troll, who lets out a startled shriek and
X163     scurries away.  The bear soon gives up the pursuit and wanders back.
X164     The axe misses and lands near the bear where you can't get at it.
X165     With what?  Your bare hands?  Against *HIS* bear hands??
X166     The bear is confused; he only wants to be your friend.
X167     For crying out loud, the poor thing is already dead!
X168     The bear eagerly licks up the honeycomb, after which he seems to calm
X168     down considerably and even becomes rather friendly.
X169     The bear is still chained to the wall.
X170     The chain is still locked.
X171     The chain is now unlocked.
X172     The chain is now locked.
X173     There is nothing here to which the chain can be locked.
X174     There is nothing here to eat.
X175     Do you want the hint?
X176     Do you need help getting out of the maze?
X177     You can make the passages look less alike by dropping things.
X178     Are you trying to explore beyond the Plover Room?
X179     There is a way to explore that region without having to worry about
X179     falling into a pit.  None of the objects available is immediately
X179     useful in discovering the secret.
X180     Do you need help getting out of here?
X181     Don't go west.
X182     Gluttony is not one of the troll's vices.  Avarice, however, is.
X183     Your lamp is getting dim.  You'd best start wrapping this up, unless
X183     you can find some fresh batteries.  I seem to recall there's a vending
X183     machine in the maze.  Bring some coins with you.
X184     Your lamp has run out of power.
X185     There's not much point in wandering around out here, and you can't
X185     explore the cave without a lamp.  So let's just call it a day.
X186     There are faint rustling noises from the darkness behind you.  As you
X186     turn toward them, the beam of your lamp falls across a bearded pirate.
X186     He is carrying a large chest.  "Shiver me timbers!", he cries, "I've
X186     been spotted!  I'd best hie meself off to the maze to hide me chest!"
X186     With that, he vanishes into the gloom.
X187     Your lamp is getting dim.  You'd best replace those batteries.
X188     Your lamp is now shining with renewed strength.
X189     Your lamp is getting dim, and you haven't any more coins.  You'd
X189     best start wrapping this up.
X190     I'm afraid the magazine is written in dwarvish.
X191     "This is not the maze where the pirate leaves his treasure chest."
X192     Hmmm, this looks like a clue, which means it'll cost you 10 points to
X192     read it.  Should I go ahead and read it anyway?
X193     It says, "Not all black rods are magic wands. Some are useful for
X193     other cave construction purposes. There might be some around here."
X194     It says the same thing it did before.
X195     I'm afraid I don't understand.
X196     "Congratulations on bringing light into the dark-room!"
X197     You strike the mirror a resounding blow, whereupon it shatters into a
X197     myriad tiny fragments.
X198     You have taken the vase and hurled it delicately to the ground.
X199     You prod the nearest dwarf, who wakes up grumpily, takes one look at
X199     you, curses, and grabs for his axe.
X200     Is this acceptable?
X201     There's no point in suspending a demonstration game.
X202     You managed to climb about halfway up before losing your hold and
X202     sliding back.
X203     You were only a few yards from the top when you slipped and tumbled
X203     all the way back down.
X204     Ok, ok.  No need to be grabby.
X205     Pulling an angry bear around is a good way to get your arm ripped off.
X206     The sword is now very clean.
X207     The sword is now covered with oil.
X208     The handle is now too slippery to grasp.
X209     You have no scabbord!
X210     You are already wearing it!
X211     Do you want to extract the sword from the anvil?
X212     If you could convince me of your royal blood, you might get somewhere.
X213     Are you trying to go up the slide?
X214     Maybe you'd better look for another way into the cave.
X215     You grasp the sword's handle and pull, but the sword won't budge.
X215     Do you want to try yanking it out?
X216     A tiny elf runs straight at you, shouts "Phuce!", and
X216     disappears into the forest.
X217     You can't swim.  You'd best go by boat.
X218     The boat's oars were stolen by the dwarves to play bing-bong.
X218     (That's dwarvish ping-pong -- with rocks!).  You have no way
X218     to propel the boat.
X219     You are still in the boat.  It is too heavy to carry.
X220     You had better leave the boat first.
X221     You are now sitting in a small boat.
X222     You couldn't possibly cross this sea without a large ship.
X223     The cliff is unscalable.
X224     Your keys are all too large for the lock.
X225     The wall is too smooth to climb.
X226     The shelf is beyond your reach.
X227     You are already wearing them!
X228     You thought maybe these were peyote??  You feel a little dizzy,
X228     but nothing happens.
X229     You are growing taller, expanding like a telescope!  Just before
X229     your head strikes the top of the chamber, the mysterious process
X229     stops as suddenly as it began.
X230     You are closing up like an accordian....shrinking..shrinking.  You
X230     are now your normal size.
X231     You have smashed your bottle all over the ground.
X232     You are now too big to leave the way you came in.
X233     This is obviously an elfin entrance.  Unless you can squeeze
X233     yourself through a six-inch door, you'll have to find another
X233     way into the cave.
X234     The wrought-iron door is now locked.
X235     The tiny door is now locked.
X236     The wrought-iron door is now unlocked.
X237     The tiny door is now unlocked.
X238     You are blocked by a wall of solid rock.
X239     <$$<
X240     The Wumpus looks at the food with distaste.  He looks at *YOU* with
X240     relish!
X241     You have jerked the cloak free of the rocks.  However, in doing
X241     so you have caused a small rockslide, blocking the entrance
X241     and making an unholy din.
X242     The cloak is stuck tight under the rocks.  You'll probably have to
X242     yank it out.
X243     The Wumpus grabs the axe, stops and picks his teeth with it for a few
X243     moments while looking thoughtfully at you.  When he finishes picking
X243     his teeth, he eats the axe, belches, farts... and starts after
X243     you again!
X244     As the bridge disappears, the Wumpus scrambles frantically to reach
X244     your side of the fissure.  He misses by inches, and with a horrible
X244     shriek plunges to his death in the depths of the fissure!
X245     You can't even hit a sleeping Wumpus!  The axe is now lying too near
X245     the Wumpus for you to retrieve it.
X246     The Wumpus is between you and the axe.  You can't reach it.
X247     You can't fit through a six-inch door!
X248     The dog easily dodges the axe, which lands beyond him where you can't
X248     get at it.
X249     The dog wolfs (natch) down the food and looks around hungrily for
X249     more.  However, he does not appear to be any better disposed towards
X249     your presence.
X250     You've got to be kidding!
X251     It's attached to the wall!
X252     You can't put a thing into itself!
X253     The gnome firmly blocks the door of the booth.  You can't enter.
X254     The constant ringing has awakened the dwarves!
X254     There are now several threatening little dwarves in the room with
X254     you!  Most of them throw knives at you!  All of them get you!
X255     The telephone is out of order.
X256     The telephone is out of order and your hand is sore.
X257     A couple of lead slugs drop from the coinbox.  (Gnomes are
X257     notoriously cheap....)  But you've broken the phone beyond
X257     all hope.
X258     He wants treasure, not gab.
X259     He didn't say anything!
X260     It isn't a parrot.  He didn't say anything.
X261     No one replies.  The line goes dead with a faint "Click".
X262     I think you are a little confused!
X263     As you move towards the phone booth, a gnome suddenly streaks
X263     around the corner, jumps into the booth and rudely slams the door
X263     in your face.  You can't get in.
X264     He isn't hungry.
X265     As the blast of the horn reverberates through the chamber, the
X265     seemingly solid rock wall crumbles away, revealing another room just
X265     beyond.  The wall was most likely worn thin by an ancient watercourse
X265     which dried up just before completely wearing away the rock.
X266     The chamber reverberates to the blast of the horn.
X266     (Satchmo you ain't!)
X267     The bees swarm over the fresh flowers, leaving the hive unguarded
X267     and revealing a sweet honeycomb.
X268     You are now out of breath.
X269     It isn't ringing!
X270     A hairy paw reaches out of the darkness and....
X271     You don't have the correct change.
X272     You go a short way down the bright passage, but the light
X272     grows to blinding intensity.  You can't continue.
X273     You know, if you type "BRIEF", I won't have to keep repeating these
X273     long descriptions of each room.
X274     Are you trying to reach the natural bridge?
X275     You can't get to it by climbing the walls or jumping or anything
X275     like that.  You could always put in a telephone call to the local
X275     spelunking club for advice, if you could find a phone.
X276     You turkey!!!  Now you've done it!  It took some effort, but you
X276     woke up the Wumpus.  He slowly opens one red eye, and then another,
X276     and then one more (!!), and looks at you sleepily.  He had been
X276     dreaming of a late snack.  If you don't act quickly, you'll
X276     be a *late* adventurer!
X277     The blast of your horn echos throughout hill and dale.
X278     All you have are watercress sandwiches.  The bear is less than
X278     interested.
X279     You have smashed your sword to smithereens against a rock.
X280     Setting yourself adrift in the boat with no way to propel it would
X280     not be very smart.  Best to keep the pole.
X281     You're already in it!
X282     You've hit the jackpot!!  Hundreds of coins and slugs cascade from
X282     the telephone's coin return slot and spill all over the floor of
X282     the booth.
X283     Whoops!  The floor has opened out from under you!  It seems you
X283     have fallen into a bottomless pit.  As a matter of fact, you're
X283     still falling!  Well, I have better things to do than wait around
X283     for you to strike bottom, so let's just assume you're dead.
X283     Sorry about that, Chief.
X284     The telephone in the booth has begun to ring.
X285     I don't understand what you are trying to do!
X286     How do you propose to cross the river?
X287     The air is filled with beautiful music.
X288     The air fills with beautiful music.  The dog gradually becomes
X288     less fierce, and after a short while he lies down by the side of
X288     the cavern and falls into a deep sleep.
X289     Are you trying to get past the dog?
X290     The only person I can remember who managed to get past the dog
X290     was that singer, ummm, what's his name... Euridice's friend....
X291     That wouldn't be wise.  It is best to let sleeping dogs lie.
X292     The stream flows out of one very small crack and into another.
X292     You can't go that way.
X293     The river is too wide and deep to cross.
X294     The glare is absolutely blinding.  If you proceed you are likely
X294     to fall into a pit.
X295     The hum of the bees rises to an angry buzz as you move towards
X295     the hive.
X296     The sticks and branches are all in a tangle and are stuck in the
X296     mud.  You'd need a shovel to dig them out.
X297     You're already carrying them!
X298     The chalice is slightly cracked.  It won't hold any liquids.
X299     The cask is now empty.
X300     The wine goes right to your head.  You reel around in a drunken
X300     stupor and finally pass out.  You awaken with a splitting headache,
X300     and try to focus your eyes....
X301     Yeeeecchhh!!
X302     Your bottle is already full.
X303     The cask is already full.
X304     There is nothing here with which to fill the bottle.
X305     There is nothing here which you would want to put into the cask.
X306     Your bottle is now full of water.
X307     The cask is now full of water.
X308     Your bottle is now full of oil.
X309     The cask is now full of oil.
X310     The bottle is now full of wine.
X311     The cask is now full of wine.
X312     You have nothing in which to carry it.
X313     You can't fill that.
X314     Do you want it in the bottle or the cask?
X315     Your containers are both full.
X316     It's empty.
X317     Hmmm, I see you have already gone through an extra set of batteries.
X317     I'll get rid of the trash for you.
X318     The bridge shakes as you cross.  Large hunks of clay and rock near
X318     the edge break off and hurtle far down into the chasm.  Several of
X318     the cracks on the bridge surface widen perceptibly.
X319     The load is too much for the bridge!  With a roar, the entire
X319     structure gives way, plunging you headlong into the raging river at
X319     the bottom of the chasm and scattering all your holdings.  As the
X319     icy waters close over your head, you flail and thrash with all your
X319     might, and with your last ounce of strength pull yourself onto the
X319     south bank of the river.
X320     You can't get at him.  He is inside the phone booth.
X321     Your lamp is already on.
X322     Your lamp is already off.
X323     Your lamp is again growing dim.  You'd better get some more batteries.
X324     You know, you are wasting your batteries by wandering around out
X324     here with your light on.
X325     <Generic Adventure 551 -- Version:6.6, August 1990>
X326     Dead wumpi, as a rule, are light eaters.  Nothing happens.
X327     How do expect to feed a sleeping Wumpus?
X328     You aren't holding it!
X329     It won't fit!
X330     The coin drops into the slot with a dull "clunk".  There is no
X330     dial tone.
X331     It's already there.
X332     Please read the supplied documentation files to find out where to
X332     send complaints, suggestions, and bug reports.
X333     The chest is now unlocked.
X334     The chest is now locked.
X335     You can't get at it.
X336     It's already open.
X337     It's locked.
X338     It's already closed.
X339     You can't fill that.  It would leak all over the place.
X340     It's not inside anything.
X341     It isn't there!
X342     How?
X343     Taken.
X344     Dropped.
X345     I don't think I can.
X346     Interesting.  How?
X347     Huh?
X348     You are in perfect health.
X349     You are fit as a fiddle.
X350     Only wizards can do that!
X351     Are you kidding?  Do you want to suffocate the poor thing?
X352     Thrown.
X353     Left.
X354     You can't get close enough for a clean thrust.
X355     As you move in for the kill, the dwarf neatly slips a knife
X355     between your ribs.
X356     As you approach, the dwarf slashes out with his knife!
X357     It's too dark to see anything!
X358     It's not open.
X359     There's nothing inside.
X360     It contains:
X361     The billboard reads:
X361     "Visit Beautiful Colossal Cave.  Open Year Around.  Fun for
X361     the entire family, or at least for those who survive."
X361     Below the headline is an impossibly complicated map showing how
X361     to find Colossal Cave.  Not that it matters, because all the
X361     directions are written in Elvish.
X362     Hidden behind the poster is a steel safe, embedded in the wall.
X363     Brushing the dust from one of the larger rocks reveals some carved
X363     characters.
X364     Enough dusting, already!  You're making me sneeze.
X365     The safe door smoothly swings open.
X366     Maybe if you rubbed your fingertips with sandpaper....
X367     The safe's door clicks shut.
X368     This is a combination safe.  The keys won't help.
X369     I certainly can't read in this light.
X370     The poster has a picture of a thin man with a long white beard.
X370     He is wearing a high pointed cap embroidered with strange symbols,
X370     and he is pointing a finger at you.  Below the picture are the words:
X370     "I want you!--To report all good ideas for extensions to this game
X370     to me without delay.  Remember: ask not what ADVENTURE can do to
X370     you; ask what you can do for ADVENTURE."
X370     -                       *  *  *                              -
X370     "A public service of the John Dillinger Died for You Society."
X371     "Click."
X372     In the rock is carved the message "7-22-34".
X373     You can't get at them.
X374     Ok, I'll give you the full description whenever you enter a room
X374     for the first time.
X375     You don't have the right key.
X376     That's not strong enough to open the clam.
X377     That's not strong enough to open the oyster.
X378     ** Unused **
X379     ** Unused **
X380     >>> Messages 381 thru 389 are reserved for "Diagnoses". <<<
X381     You are a bit off top form, but nothing to worry about.
X382     You are weaker than usual.  Better avoid fights.
X383     You really ought to take a break.  You're in tough shape.
X384     You are on the edge of collapse.  Lots of sun and fresh air will
X384     speed your recovery.
X385     Your strength is nearly gone.  Only a miracle can save you now.
X386     ** Unused **
X387     ** Unused **
X388     ** Unused **
X389     ** Unused **
X390     >>> Messages 391 thru 399 are reserved for Radium Poisoning. <<<
X391     Is it hot in here?  You are flushed and sweating.
X392     You are feeling definitely peculiar, weak....
X393     You're dizzy, nauseous.  You can barely stand.
X394     You are really ill.  If you don't find an antidote soon, it's
X394     curtains.
X395     You are a walking wound.  You are very weak.  You'd better find out
X395     what's wrong before it's too late.
X396     Sheeesh!  What a mess!  Your hair has fallen out and your skin is
X396     covered with blisters.  And not an asprin in sight!
X397     Well, you tried, but your strength is gone.  The agony is finally
X397     over.
X398     ** Unused **
X399     ** Unused **
X400     You feel rather disembodied, as if you were suddenly somewhere
X400     else entirely.
X401     You sense that you are in a dark place. The only thing in sight
X401     appears to be a companion to the crystal ball which holds your
X401     gaze. It seems to be searching the gloom for something to
X401     show you, but all it can see is itself: a brilliant blue
X401     six-pointed star suspended in space.
X402     Your gaze withdraws from the crystal ball, and you are now back
X402     in your normal senses.
X403     A large, stately elf walks up the rise, says the word
X403     "Saint-Michel", and is instantly transported to the castle.
X404     Are you trying to get to the castle?
X405     It's easy to get there if you know how. The elves cross over
X405     from here so perhaps you might watch an elf to see how.
X405     Of course they are a bit shy, so keep a good way off while you
X405     watch.
X406     You get a tingling feeling as you walk through the gate, and ...
X407     Fiddling with the bird in its cage is not useful.
X407     If you had it in your hand it would make a mess.
X408     Would you like a map?
X-1
X7
X2       3       0       1       Brass lamp      0       0       0
X3       8       9       0       Grate           0       0       0
X4       10      0       1       Cage            0       0       0
X5       11      0       2       Black rod       0       0       0
X6       0       0       2       Black rod       0       0       0
X7       14      15      0       Steps           0       0       0
X9       148     0       2       Wood Pole       0       0       0
X10      96      0       1       Pillow          0       0       0
X11      19      -1      0       Snake           0       0       0
X12      17      27      0       Fissure         0       0       0
X13      101     -1      0       Tablet          0       0       0
X14      103     0       7       Giant clam      0       0       0
X15      0       0       7       Oyster          0       0       0
X16      106     0       1       Magazines       1       0       108
X17      0       -1      0       Dwarf           0       0       0
X18      0       0       0       Knife           0       0       0
X19      238     0       2       Tasty Food      0       0       0
X20      238     0       1       Bottle          0       0       0
X21      117     122     0       *Chasm1         0       0       0
X22      190     235     0       *Chasm2         0       0       0
X23      109     -1      0       Mirror          0       0       0
X24      25      -1      0       Tiny Plant      0       0       0
X25      23      67      0       Beanstalk       0       0       0
X26      111     -1      0       Stalagmite      0       0       0
X27      35      110     0       Figure          0       0       0
X28      0       0       3       Small Axe       0       0       0
X29      97      -1      0       *Drawings       0       0       0
X30      0       -1      0       Pirate          0       0       0
X31      119     121     0       Dragon          0       0       0
X33      117     122     0       Troll           0       0       0
X34      0       0       0       Troll           0       0       0
X35      130     -1      0       Tame Bear       0       0       0
X36      0       -1      0       *Message        0       0       0
X37      126     -1      0       Volcano         0       0       0
X38      140     -1      0       Machine         0       0       0
X39      0       0       3       Batteries       0       0       0
X40      96      -1      0       *Moss           0       0       0
X41      94      -1      0       Giant Door      0       0       0
X42      158     166     0       Elfin door      0       0       0
X43      160     167     0       Iron door       0       0       0
X44      188     189     0       Door            0       0       0
X46      155     0       1       Flowers         0       0       0
X47      174     -1      1       Silk Cloak      3       0       -112
X48      166     0       0       Wood Boat       0       0       0
X49      228     229     0       Sticks          0       0       0
X50      18      0       6       Nugget          2       0       -55
X51      204     0       1       Diamonds        2       0       -112
X52      27      0       2       Horn            2       0       -112
X53      29      0       2       Jewelry         1       0       -112
X54      30      0       3       Rare Coins      5       0       -112
X55      0       0       5       Chest           5       0       3
X56      92      0       4       Gold Eggs       3       0       -112
X57      168     0       3       Trident         2       0       -55
X58      97      0       2       Ming vase       2       0       3
X59      100     0       3       Emerald         3       0       -112
X60      101     0       4       Pyramid         4       0       -112
X61      0       0       1       Pearl           4       0       -112
X62      119     121     3       Rug             3       0       3
X63      127     0       1       Spices          1       0       -112
X64      130     -1      3       Gold Chain      4       0       -112
X65      141     0       2       Sword           4       0       -112
X66      144     0       1       Crown           2       0       -112
X67      205     0       1       Ruby Shoes      3       0       -112
X68      28      0       2       Lyre            1       0       -112
X69      183     0       2       Sapphire        1       0       -112
X70      225     0       2       Holy grail      2       0       -112
X71      230     0       3       Oaken Cask      3       4       -55
X72      0       0       1       Gold ring       4       0       -112
X73      147     0       1       Clover          1       0       -112
X74      241     0       3       Tree            5       0       -112
X75      248     0       1       Droplet         5       0       -112
X81      0       0       2       Water           0       0       0
X82      0       0       2       Water           0       0       0
X83      0       0       2       Oil             0       0       0
X84      0       0       2       Oil             0       0       0
X85      0       0       2       Wine            0       0       0
X86      0       0       2       Wine            0       0       0
X87      193     -1      0       Bumblebees      0       0       0
X88      102     194     0       *Wall           0       0       0
X89      0       -1      0       *Wall           0       0       0
X90      159     0       1       Tiny key        0       0       0
X91      141     -1      0       *Anvil          0       0       0
X92      172     174     0       *Rocks          0       0       0
X93      188     -1      0       Phonebooth      0       0       0
X94      189     -1      0       Telephone       0       0       0
X95      0       0       3       Lead Slugs      0       0       0
X96      0       0       2       Honeycomb       0       0       0
X97      193     -1      0       Beehive         0       0       0
X98      227     -1      0       Large dog       0       0       0
X99      174     -1      0       Wumpus          0       0       0
X101     13      0       2       Bird            0       0       0
X102     238     0       1       Keys            0       0       0
X103     217     -1      0       Fountain        0       0       0
X104     171     -1      0       Bats            0       0       0
X105     0       -1      0       Gnome           0       0       0
X106     146     0       1       Mushrooms       0       0       0
X107     159     0       1       Cakes           0       0       0
X108     3       0       2       Large Sack      0       0       0
X110     0       0       3       Rare Book       2       0       -112
X111     0       0       3       Rare Book       0       0       0
X112     0       -1      0       Safe            0       0       0
X113     3       0       1       Old Poster      0       0       0
X114     180     0       1       Whiskbroom      0       0       0
X115     39      -1      0       *Carving        0       0       0
X116     5       -1      0       *Billbd         0       0       0
X118     110     0       3       Metal Tube      0       0       0
X119     169     0       1       Green Rock      4       0       -118
X120     200     0       2       Crys. Ball      2       0       -112
X-1      -1      -1      -1      END LIST        -1      -1      -1
X8
X1       24
X2       29
X3       0
X4       33
X5       0
X6       33
X7       38
X8       38
X9       42
X10      14
X11      43
X12      110
X13      29
X14      110
X15      73
X16      75
X17      29
X18      13
X19      59
X20      59
X21      174
X22      313
X23      67
X24      13
X25      147
X26      155
X27      369
X28      146
X29      110
X30      13
X31      13
X32      24
X33      25
X34      110
X35      262
X36      14
X37      29
X38      271
X39      14
X40      14
X41      24
X42      29
X43      38
X44      24
X45      331
X46      24
X47      109
X48      332
X49      0
X50      0
X51      348
X52      358
X53      0
X54      364
X55      0
X-1
X9
X0       1       2       3       4       5       6       7       8       9
X0       99      100     115     116     212     126     239     240     200
X0       146     147     148     149     150     151     152     153     154
X0       157     158     159     166     167     168     169     160     192
X0       198     201     214     227     228     229     238     155     156
X0       241     242     243     244     245     246     247     248
X1       24
X2       217
X3       24      33      217     1       3       4       7       38      95
X3       166     167     168     169     192     198     206     207     208
X3       214     228     229     113
X4       46      47      48      54      56      58      82      85      86
X4       122     123     124     125     126     127     128     129     130
X4       141     142     189
X5       9       10      11      12      13      14      166     167
X6       1       2       3       4       5       6       7       8       239
X6       146     147     148     149     150     151     152     153     154
X6       157     158     159     160     227     228     229     238     240
X6       241     242     243     244     245     246     247     248
X8       42      43      44      45      46      47      48      49      50
X8       52      53      54      55      56      80      81      82      86
X9       99      100     101
X10       108
X11      141
X12      98
X13      8
X14      13
X15      158
X16      202
X17      157     227
X18      19
X19      239
X-1
X10
X72      You are obviously a rank amateur.  Better luck next time.
X130     Your score qualifies you as a Novice Class Adventurer.
X200     You have achieved the rating: "Experienced Adventurer".
X250     You may now consider yourself a "Seasoned Adventurer".
X350     You have reached "Junior Master" status.
X450     Your score puts you in Master Adventurer Class C.
X500     Your score puts you in Master Adventurer Class B.
X550     Your score puts you in Master Adventurer Class A.
X9999    All of Adventuredom gives tribute to you, Adventurer Grandmaster!
X-1
X11
X2       9999    10      0       0
X3       9999    5       0       0
X7       75      4       176     177
X8       25      5       178     179
X9       20      3       180     181
X10      6       10      211     212
X11      16      5       213     214
X12      4       2       62      63
X13      5       2       18      19
X14      10      2       62      233
X15      8       5       274     275
X16      10      5       289     290
X17      8       2       20      21
X18      5       2       404     405
X-1
X14
XBREAK   WITH    AXE     SWORD   POLE    ROD
XDRINK   FROM    CASK    CUP     VASE    BOTTLE
XDROP    IN      CHEST   SACK    MACHINE BOTTLE  CASK    GRAIL   VASE    CAGE
XDROP    IN      BOAT    ANVIL   PHONE   SAFE    LAMP    TUBE
XDROP    ON      RUG     CROWN   CLOAK   SHOES   JEWELS  SWORD   PILLOW
XDUST    WITH    BROOM
XFEED    TO      TROLL   SNAKE   BIRD    BEAR    WUMPUS  DOG     DWARF   BAT
XFEED    TO      CLAM    OYSTER  BEES
XFILL    WITH    OIL     WINE    WATER
XGET     FROM    CHEST   SACK    BOTTLE  CASK    GRAIL   VASE    CAGE    BOAT
XGET     FROM    ANVIL   SAFE    WUMPUS  TUBE
XGET     IN      CHEST   SACK    BOTTLE  CASK    GRAIL   VASE    CAGE    BOAT
XGET     IN      ANVIL   SAFE    WUMPUS  TUBE
XHIT     WITH    AXE     SWORD   POLE    ROD     KNIFE
XINSERT  IN      CHEST   SACK    MACHINE BOTTLE  CASK    GRAIL   VASE    CAGE
XINSERT  IN      CAGE    BOAT    ANVIL   PHONE   SAFE    LAMP    TUBE
XKILL    WITH    AXE     SWORD   KNIFE
XLEAVE   IN      CHEST   SACK    MACHINE BOTTLE  CASK    GRAIL   VASE
XLEAVE   IN      CAGE    BOAT    ANVIL   PHONE   SAFE    TUBE
XLEAVE   ON      RUG     CROWN   CLOAK   SHOES   JEWELS  SWORD   PILLOW
XLOCK    WITH    KEYS    KEY
XLOOK    IN      CHEST   SACK    BOTTLE  CASK    GRAIL   VASE    CAGE    BOAT
XLOOK    IN      ANVIL   CLAM    OYSTER  SAFE    TUBE    BALL    SPHERE  
XLOOK    AT      ANY
XOPEN    WITH    KEY     KEYS    AXE     TRIDENT SWORD   POLE    ROD
XPICK    UP      ANY
XPLAY    ON      HORN    LYRE
XPOUR    ON      PLANT   SWORD   ANVIL   DOOR    CLOVER
XPOUR    FROM    CASK    CUP     VASE    BOTTLE
XPUT     DOWN    ANY
XPUT     ON      RUG     CROWN   CLOAK   SHOES   JEWELS  SWORD   PILLOW  CLOVER
XPUT     IN      CHEST   SACK    MACHINE BOTTLE  CASK    GRAIL   VASE    CAGE
XPUT     IN      BOAT    ANVIL   PHONE   SAFE    LAMP    TUBE
XREAD    ON      CLAM    OYSTER  TABLET  BILLBOA
XREAD    FROM    CLAM    OYSTER  TABLET  MAGAZIN BOOK    POSTER  BILLBOA
XREMOVE  FROM    CHEST   SACK    BOTTLE  CASK    GRAIL   VASE    CAGE    BOAT
XREMOVE  FROM    ANVIL   CLAM    OYSTER  SAFE    WUMPUS  TUBE
XSHUT    WITH    KEYS    KEY
XTAKE    OFF     CROWN   CLOAK   SHOES   JEWELRY RING    CLOVER
XTAKE    FROM    CHEST   SACK    BOTTLE  CASK    GRAIL   CAGE    CAGE    BOAT
XTAKE    FROM    ANVIL   SAFE    WUMPUS  TUBE
XTAKE    IN      CHEST   SACK    BOTTLE  CASK    GRAIL   VASE    CAGE    BOAT
XTAKE    IN      ANVIL   TUBE
XTOSS    TO      TROLL   SNAKE   BIRD    BEAR    WUMPUS  DOG     DWARF   BAT
XTOSS    TO      FIGURE  BEES
XTOSS    AT      ANY
XTOSS    DOWN    ANY
XTURN    ON      LAMP
XTURN    OFF     LAMP
XUNLOCK  WITH    KEYS    KEY
XWAVE    AT      ANY
XWAVE    TO      TROLL   SNAKE   BIRD    BEAR    WUMPUS  BEES    DOG     DWARF
XWAVE    TO      BAT     FIGURE
XYANK    FROM    ANY
X-1
X15
X1       3       4       14      15      20      41      42      43      44
X1       64      71      108     110     111     112     118
X2       108
X3       3       42      43      55      64      112
X4       3       42      43      55      64      112     41
X7       19      24      46      63      96      101     106     107
X8       13      14      15      16      36      110     111     113     115
X9       11      14      15      17      30      31      33      35      87
X11      47      53      66      67      72      73
X13      7       29      39      46      53      54      56      67      87
X13      102     106     107
X14      47      50      51      52      53      54      55      56      57
X14      59      60      61      62      63      64      65      66      67
X14      69      70      71      72      73      110     119     120     58
X14      68      74      75
X15      2       4       20      38      48      55      58      70      71
X15      112     118     108
X5       2       5       6       10      16      19      20      28      39
X5       47      51      52      53      54      56      58      59      60
X5       61      63      64      65      66      67      68      69      70
X5       72      73      101     102     106     107     108     110     113
X5       114     118     119     120     74      75
X6       55      108     112     118
X-1
X16
XBLACK   ROD     DOG     OIL
XBRASS   LAMP    KEY
XELFIN   CROWN   DOOR    KEY
XFRESH   BATTERI
XGIANT   DOOR    CLAM    OYSTER  NUGGET  SNAKE
XGOLD    NUGGET  CHAIN   EGGS    RING    TREE
XTASTY   FOOD
XGREEN   RADIUM  EMERALD CLOVER
XGREY    TUBE
XGLOWING RADIUM
XHOLY    GRAIL
XIRON    DOOR
XLEAD    SLUGS   TUBE
XMETAL   TUBE
XMING    VASE
XOAKEN   CASK
XQUARTZ  SPHERE
XLEATHER BOOK    SACK
XCRYSTAL BALL
X4-LEAF  CLOVER
XPERSIAN RUG
XPLATINU PYRAMID
XRARE    BOOK    COINS   SPICES
XRUBY    SHOES
XRUSTY   DOOR
XSHADOWY FIGURE
XSILKEN  CLOAK
XSILVER  HORN    DROPLET
XSTAR    SAPPHIR
XSTEEL   SWORD   SAFE    GRATE
XTINY    DOOR    RING    KEY     BOTTLE  BIRD    CAKES   TUBE
XTREASUR CHEST
XVELVET  PILLOW
XVENDING MACHINE
XWICKER  CAGE
XWOODEN  BOAT    POLE    CASK
XWORN-OU BATTERI
X-1
X0
X
X
END_OF_advdat
if test 132545 -ne `wc -c <advdat`; then
    echo shar: \"advdat\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: End of shell archive.
exit 0