[comp.sources.games] v03i033: crystal - another adventure game, Part01/05

games-request@tekred.TEK.COM (01/13/88)

Submitted by: nrcvax!kosman!kevin
Comp.sources.games: Volume 3, Issue 33
Archive-name: crystal/Part01

	[Note that this is configured for Unix PC's.  I haven't
	 had time to try and port it per the instructions.  -br]

From the author:
[[Well, I haven't gotten around to changing the Makefile to remove or reduce
the UNIX PC specific stuff, so please read PORTING.  This version has run
robustly on UNIX PC's for several years, so any bugs are probably portability
things.  Unless we've got 1-byte shorts or something, I think it should be
okay.  This was my first C program ever, though, so there's no telling what
I did.  I just hope I kept it as simple in fact as I tried to do in theory.
The only real hack in here is the stuff to make the ASCII strings unreadable,
as explained in PORTING.]]


#! /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 archive 1 (of 5)."
# Contents:  README MANIFEST cvlocs.c cvspk.c shlib.head
# Wrapped by billr@tekred on Tue Jan 12 10:11:28 1988
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f README -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"README\"
else
echo shar: Extracting \"README\" \(966 characters\)
sed "s/^X//" >README <<'END_OF_README'
XThis program was translated from a UNIVAC FORTRAN program which bore a
Xremarkable resemblance to the original Crowther & Woods Adventure code.
XNeither one bore any Copright or Authorship notations, so I am presuming
Xall this is in the public domain.  I assert no rights to it, since I don't
Xfeel like claiming rights I wouldn't feel like defending in any case.
X
XThe game plays a lot like Adventure, except for a slightly smarter command
Xparser, and a serious attempt to punish you for knowing anything you may
Xhave learned from Adventure.  It can get pretty funny in here sometimes.
X
XHave fun with it.
X
XThis version is unlikely to make on any system except a UNIX PC, but the
Xfile PORTING gives some information about adapting it to other systems.
X
XThe files whose names are in the file Files are things which would be used
Xto make an installable floppy on a UNIX PC (maybe a 3b2 also).  If you don't
Xneed them, you can delete them.
X
Xkevin@kosman.uucp Nov 25, 1987
X
END_OF_README
if test 966 -ne `wc -c <README`; then
    echo shar: \"README\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f MANIFEST -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"MANIFEST\"
else
echo shar: Extracting \"MANIFEST\" \(1344 characters\)
sed "s/^X//" >MANIFEST <<'END_OF_MANIFEST'
X   File Name		Archive #	Description
X-----------------------------------------------------------
X Files                     5	
X Install                   5	
X MAKEcpio                  5	
X MAKEflop                  4	
X MANIFEST                  1	This shipping list
X Makefile                  5	
X Name                      5	
X Office                    5	
X PORTING                   5	
X README                    1	
X Remove                    5	
X Size                      5	
X Toybox                    5	
X cvact.c                   3	
X cvand.c                   5	
X cvatt.c                   4	
X cvcode.h                  5	
X cvcopy.c                  5	
X cvdie.c                   4	
X cvdwrf.c                  4	
X cvend.c                   3	
X cvgo.c                    4	
X cvinit.c                  5	
X cvinit.h                  5	
X cvlocs.c                  1	
X cvlocs.h                  5	
X cvmain.c                  3	
X cvmisc.h                  5	
X cvmotd.c                  5	
X cvmove.c                  4	
X cvmsg.c                   2	
X cvmsg.h                   5	
X cvobj.c                   2	
X cvobj.h                   5	
X cvocab.c                  4	
X cvocab.h                  3	
X cvorcs.h                  5	
X cvsave.c                  4	
X cvspk.c                   1	
X random.h                  2	
X shlib.head                1	
END_OF_MANIFEST
if test 1344 -ne `wc -c <MANIFEST`; then
    echo shar: \"MANIFEST\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f cvlocs.c -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"cvlocs.c\"
else
echo shar: Extracting \"cvlocs.c\" \(44859 characters\)
sed "s/^X//" >cvlocs.c <<'END_OF_cvlocs.c'
X/*
X * cvlocs.c
X *    - data files for CAVE game program
X *************************************************************************/
X
X#include <stdio.h>
X#include "cvobj.h"
X#include "cvlocs.h"
X#include "cvocab.h"
X
Xstruct hint hints[] = {
X	{0},
X	{0},
X	{9999,10},	/* clue in repository */
X	{9999,5},	/* did he get instructions */
X	{   5, 2, 62, 63,HINT1},	/* gate */
X	{   6,20,121,122,HINT2},	/* dam */
X	{  75,10,176,177,HINT3},	/* drop things */
X	{  20,30,144,145,HINT4},	/* time maze */
X	{  10, 2,179,178,HINT5},	/* woods */
X	{  20,10,172,173,HINT6},	/* rope hint */
X	{-1}};
X
Xstruct rtr rtrav[] = {
X	{ 14,  0, 45,  0, -1},	/* cliff to domepit window */
X	{ 80, 81,  0, 81,  0},	/* torture chamber to dungeon */
X	{ 81, 82,  0, 82,  0},	/* dungeon to corridor */
X	{ 85,  0, 56, 56,  0},	/* window to magnificent chamber */
X	{120,121,  0,121,  0},	/* throne to bottom of throne pit */
X	{129,130,131,131, -1},	/* windshaft to ledge to bottom */
X	{-1}};
X
Xstatic struct cvtrav tr000[] = {{-1}}, /* placeholder */
X
Xtr001[] = {
X	{IN},
X	{ENTER},
X	{BARN,	2},
X	{SW},
X	{PRIVY},
X	{PATH,	3},
X	{EAST},
X	{FIELD,	5},
X	{NW},
X	{SHAFT,	6},
X	{NE,	11},
X	{NORTH,	12},
X	{WEST,	13},
X	{SOUTH,	17},
X	{SE,	18},
X	{-1}},
X
Xtr002[] = {
X	{OUT,	617,12,1,IF_PROP},	/* can't fly there */
X	{OUT,	  1},
X	{M_GATE,	617,12,1,IF_PROP},	/* can't fly there */
X	{M_GATE,	30},
X	{HOPE,	 78},
X	{BANIS,	130,81,2,IF_NPROP},	/* there's a shelf */
X	{BANIS,	661,81,2,IF_PROP,1},	/* tell bad news */
X	{BANIS,	 25},		/* and wind up dead */
X	{MISFO,	301},		/* special code */
X	{-1}},
X
Xtr003[] = {
X	{NE},
X	{BARN},
X	{PATH,	1},
X	{IN},
X	{ENTER},
X	{PRIVY,	4},
X	{NORTH,	13},
X	{WEST},
X	{NW,	14},
X	{SW,	15},
X	{SE},
X	{SOUTH},
X	{BLUFF,	16},
X	{EAST,	17},
X	{-1}},
X
Xtr004[] = {
X	{OUT,	3},
X	{M_GATE,	30},
X	{-1}},
X
Xtr005[] = {
X	{WEST},
X	{BARN,	1},
X	{NORTH,	11},
X	{NW,	12},
X	{SW,	17},
X	{SOUTH,	18},
X	{SE,	19},
X	{EAST},
X	{NE,	26,33},		/* get lost */
X	{NE,	27,50},
X	{NE,	29,100},
X	{-1}},
X
Xtr006[] = {
X	{SE},
X	{BARN,	1},
X	{DOWN},
X	{CLIMB,	7},
X	{EAST,	12},
X	{SOUTH,	13},
X	{SW},
X	{WEST,	14},
X	{NORTH},
X	{NW},
X	{NE,	26,33},		/* get lost */
X	{NE,	27,50},
X	{NE,	29,100},
X	{JUMP,	25},		/* really dumb */
X	{-1}},
X
Xtr007[] = {
X	{EAST},
X	{IN},
X	{ENTER,	8},
X	{-1}},
X
Xtr008[] = {
X	{WEST},
X	{SHAFT},
X	{UP,	7},
X	{EAST},
X	{DOWN},
X	{SINKH,	9},
X	{-1}},
X
Xtr009[] = {
X	{WEST},
X	{IN},
X	{ENTER,	8},
X	{UP,	10},
X	{-1}},
X
Xtr010[] = {
X	{DOWN},
X	{JUMP},
X	{SINKH,	9},
X	{NORTH},
X	{NE},
X	{EAST},
X	{SE},
X	{SOUTH},
X	{SW},
X	{WEST},
X	{NW},
X	{OUT,	11},
X	{-1}},
X
Xtr011[] = {
X	{SW},
X	{BARN},
X	{PATH,	1},
X	{SOUTH},
X	{FIELD,	5},
X	{IN},
X	{ENTER},
X	{SINKH},
X	{PIGPE,	10},
X	{NORTH},
X	{NW},
X	{WEST,	12},
X	{EAST},
X	{NE},
X	{SE,	26,33},		/* get lost */
X	{SE,	27,33},
X	{SE,	29,100},
X	{-1}},
X
Xtr012[] = {
X	{SOUTH},
X	{BARN,	1},
X	{SE},
X	{FIELD,	5},
X	{WEST},
X	{SHAFT,	6},
X	{SW,	13},
X	{EAST},
X	{NE,	11},
X	{NORTH},
X	{NW,	26,33},		/* get lost */
X	{NW,	27,50},
X	{NW,	29,100},
X	{-1}},
X
Xtr013[] = {
X	{EAST},
X	{BARN,	1},
X	{SOUTH},
X	{PRIVY,	3},
X	{NORTH},
X	{SHAFT,	6},
X	{NE,	12},
X	{SW},
X	{NW},
X	{WEST,	14},
X	{SE,	17},
X	{-1}},
X
Xtr014[] = {
X	{SE},
X	{PRIVY,	3},
X	{NE},
X	{SHAFT,	6},
X	{EAST,	13},
X	{SOUTH,	15},
X	{NORTH,	26,33},		/* get lost */
X	{NORTH,	27,50},
X	{NORTH,	29,100},
X	{JUMP,	24},			/* real dumb */
X	{-1}},
X
Xtr015[] = {
X	{NE},
X	{PRIVY,	3},
X	{NORTH,	14},
X	{EAST},
X	{BLUFF,	16},
X	{JUMP,	24},			/* real dumb */
X	{-1}},
X
Xtr016[] = {
X	{NW},
X	{PRIVY,	3},
X	{WEST},
X	{UP,	15},
X	{NORTH,	17},
X	{NE,	18},
X	{EAST},
X	{SE},
X	{HEADQ,	20},
X	{DOWN},
X	{SOUTH},
X	{SW,	22},
X	{-1}},
X
Xtr017[] = {
X	{NORTH},
X	{BARN,	1},
X	{WEST},
X	{PRIVY},
X	{PATH,	3},
X	{NE},
X	{FIELD,	5},
X	{NW,	13},
X	{SE},
X	{SOUTH},
X	{SW},
X	{BLUFF,	16},
X	{EAST,	18},
X	{-1}},
X
Xtr018[] = {
X	{NW},
X	{BARN,	1},
X	{NORTH},
X	{FIELD,	5},
X	{SW},
X	{BLUFF,	16},
X	{WEST,	17},
X	{EAST,	19},
X	{SOUTH},
X	{SE},
X	{HEADQ,	20},
X	{NE},
X	{DOWN,	26,33},		/* get lost */
X	{DOWN,	27,50},
X	{DOWN,	29,100},
X	{-1}},
X
Xtr019[] = {
X	{NW},
X	{FIELD,	5},
X	{WEST,	18},
X	{SOUTH},
X	{SW},
X	{DOWN},
X	{HEADQ,	20},
X	{EAST,	24},
X	{NORTH},
X	{NE},
X	{SE},
X	{UP,	26,33},		/* get lost */
X	{UP,	27,50},
X	{UP,	29,100},
X	{-1}},
X
Xtr020[] = {
X	{NORTH},
X	{NW,	18},
X	{UP},
X	{NE,	19},
X	{IN},
X	{ENTER,	21},
X	{SOUTH},
X	{SW},
X	{DOWN,	22},
X	{WEST},
X	{BLUFF,	16},
X	{EAST,	26,33},
X	{EAST,	27,33},
X	{EAST,	29,100},
X	{-1}},
X
Xtr021[] = {
X	{OUT,	20,56,0,IF_NPROP},	/* is cell open? */
X	{OUT,	21},		/* SOL, aren't you */
X	{-1}},
X
Xtr022[] = {
X	{NORTH},
X	{NW},
X	{UP},
X	{BLUFF,	16},
X	{EAST},
X	{HEADQ},
X	{NE,	20},
X	{WEST},
X	{UPSTR,	23},
X	{SW,	26,33},
X	{SW,	27,50},
X	{SW,	29,100},
X	{-1}},
X
Xtr023[] = {
X	{EAST},
X	{DOWNS,	22},
X	{NORTH},
X	{M_GATE},
X	{UPSTR},
X	{PATH,	30},
X	{SOUTH},
X	{SE},
X	{SW,	26,33},
X	{SW,	27,50},
X	{SW,	29,100},
X	{-1}},
X
Xtr024[] = {
X	{1,	0},
X	{-1}},
X
Xtr025[] = {
X	{1,	0},
X	{-1}},
X
Xtr026[] = {
X	{DOWN,	22,30},	/* this works sometimes */
X	{NORTH},
X	{SOUTH},
X	{EAST},
X	{WEST},
X	{NE},
X	{SE},
X	{NW},
X	{SW},
X	{UP,	27,45},	/* but nothing else works at all */
X	{UP,	29,82},
X	{UP,	5,10},	/* well, on rare occasions . . . */
X	{UP,	6,11},
X	{UP,	11,12},
X	{UP,	12,14},
X	{UP,	14,17},
X	{UP,	18,20},
X	{UP,	19,25},
X	{UP,	20,33},
X	{UP,	22,50},
X	{UP,	23,100},
X	{-1}},
X
Xtr027[] = {
X	{DOWN,	22,30},	/* this works sometimes */
X	{NORTH},
X	{SOUTH},
X	{EAST},
X	{WEST},
X	{NE},
X	{SE},
X	{NW},
X	{SW},
X	{UP,	26,45},	/* but nothing else works at all */
X	{UP,	29,82},
X	{UP,	5,10},	/* well, on rare occasions . . . */
X	{UP,	6,11},
X	{UP,	11,12},
X	{UP,	12,14},
X	{UP,	14,17},
X	{UP,	18,20},
X	{UP,	19,25},
X	{UP,	20,33},
X	{UP,	22,50},
X	{UP,	23,100},
X	{-1}},
X
Xtr028[] = {
X	{1,	0},
X	{-1}},
X
Xtr029[] = {
X	{DOWN,	22,30},	/* this works sometimes */
X	{NORTH},
X	{SOUTH},
X	{EAST},
X	{WEST},
X	{NE},
X	{SE},
X	{NW},
X	{SW},
X	{UP,	26,45},	/* but nothing else works at all */
X	{UP,	27,82},
X	{UP,	5,10},	/* well, on rare occasions . . . */
X	{UP,	6,11},
X	{UP,	11,12},
X	{UP,	12,14},
X	{UP,	14,17},
X	{UP,	18,20},
X	{UP,	19,25},
X	{UP,	20,33},
X	{UP,	22,50},
X	{UP,	23,100},
X	{-1}},
X
Xtr030[] = {
X	{BARN,	2},
X	{PRIVY,	4},
X	{SOUTH},
X	{DOWN},
X	{PATH},
X	{DOWNS,	23},
X	{UP},
X	{NORTH},
X	{IN},
X	{ENTER},
X	{M_GATE},
X	{CROSS},
X	{UPSTR},
X	{CLIMB,	546,60,2,IF_PROP},	/* can't get in if you trash the gate */
X	{CLIMB,	615},		/* and you can't do it that way anyhow */
X	{-1}},
X
Xtr031[] = {
X	{OUT},
X	{DOWNS,	30,60,2,IF_NPROP},	/* can you get out? */
X	{DOWNS,	31},
X	{NORTH},
X	{IN},
X	{ENTER},
X	{UPSTR,	32},
X	{LAKE,	33},
X	{-1}},
X
Xtr032[] = {
X	{SOUTH},
X	{OUT},
X	{DOWNS,	31},
X	{NORTH},
X	{IN},
X	{ENTER},
X	{LAKE},
X	{UPSTR,	33},
X	{UP},		/* GET IN TROUBLE */
X	{CLIMB,	40},
X	{-1}},
X
Xtr033[] = {
X	{SE},
X	{DOWNS},
X	{OUT,	 32,58,0,IF_NHAVE},
X	{EAST,	 34,58,0,IF_NHAVE},
X	{EAST,	619},
X	{NE,	 34,58,3,IF_PROP},
X	{NORTH},
X	{UPSTR,	 38,58,3,IF_PROP},
X	{UPSTR,	618,58,0,IF_HAVE},
X	{UPSTR,	614},
X	{WEST},
X	{NW,	519,58,0,IF_HAVE},
X	{CROSS,	  0,57,1,IF_NPROP,1},
X	{CROSS,	 35,58,0,IF_NHAVE},
X	{CROSS,	519,58,0,IF_HAVE},
X	{CROSS,	614},
X	{-1}},
X
Xtr034[] = {
X	{WEST,	 38,58,3,IF_PROP},
X	{NW},
X	{NORTH,	 39,58,3,IF_PROP},
X	{SW,	 33,58,3,IF_PROP},
X	{SW,	618,58,0,IF_HAVE},
X	{SW,	614},
X	{SOUTH,	 33,58,0,IF_NHAVE},
X	{SOUTH,	619},
X	{-1}},
X
Xtr035[] = {
X	{EAST,	519,58,0,IF_HAVE},
X	{CROSS,	  0,57,1,IF_NPROP,1},
X	{CROSS,	 33,58,0,IF_NHAVE},
X	{CROSS,	519,58,0,IF_HAVE},
X	{CROSS,	614},
X	{NE,	 38,58,3,IF_PROP},
X	{NE,	618,58,0,IF_HAVE},
X	{NE,	614},
X	{WEST,	 42,58,0,IF_NHAVE},
X	{ENTER},
X	{IN},
X	{NW,	 58,58,0,IF_NHAVE},
X	{NW,	619},
X	{-1}},
X
Xtr036[] = {
X	{NE,	 37,58,3,IF_PROP},
X	{EAST},
X	{SE,	 39,58,3,IF_PROP},
X	{SE,	618,58,0,IF_HAVE},
X	{SE,	614},
X	{NORTH,	 37,58,0,IF_NHAVE},
X	{NW},
X	{IN},
X	{ENTER,	 59,58,0,IF_NHAVE},
X	{ENTER,	619},
X	{-1}},
X
Xtr037[] = {
X	{SW,	 36,58,3,IF_PROP},
X	{SE},
X	{SOUTH},
X	{DOWN,	 39,58,3,IF_PROP},
X	{DOWN,	618,58,0,IF_HAVE},
X	{DOWN,	614},
X	{WEST,	 36,59,0,IF_NHAVE},
X	{WEST,	619},
X	{NORTH},
X	{CROSS,	  0,59,0,IF_NPROP,1},
X	{CROSS,	 60,58,3,IF_PROP},
X	{CROSS,	618,58,2,IF_PROP},
X	{CROSS,	514},
X	{-1}},
X
Xtr038[] = {
X	{SOUTH,	 33,58,3,IF_PROP},
X	{EAST},
X	{SE,	 34,58,3,IF_PROP},
X	{WEST},	
X	{SW,	 35,58,3,IF_PROP},
X	{NE},
X	{NW},
X	{UP},
X	{NORTH,	 39,58,3,IF_PROP},
X	{NORTH,	618},		/* IF ANY OF THE ABOVE FAIL */
X	{-1}},
X
Xtr039[] = {
X	{WEST},
X	{NW,	 36,58,3,IF_PROP},
X	{NE},
X	{UP},
X	{NORTH,	 37,58,3,IF_PROP},
X	{SE},
X	{SOUTH},
X	{SW},
X	{DOWN,	 38,58,3,IF_PROP},
X	{DOWN,	618},		/* IF ANY OF THE ABOVE FAIL */
X	{-1}},
X
Xtr040[] = {
X	{DOWN},
X	{CLIMB,	302,40,1,IF_NPROP},
X	{CLIMB,	 32},
X	{UP},
X	{IN},
X	{ENTER,	 41},
X	{-1}},
X
Xtr041[] = {
X	{JUMP,	 28},
X	{DOWN,	 40},
X	{-1}},
X
Xtr042[] = {
X	{EAST},
X	{LAKE,	 35},
X	{WEST},
X	{UP,	 43},
X	{NW},
X	{DOWN,	 47},
X	{-1}},
X
Xtr043[] = {
X	{EAST,	 42},
X	{WEST},
X	{CROSS,	 44,15},
X	{DOWN,	611,0,0,0,1},
X	{DOWN,	 46,80},
X	{JUMP,	 28},		/* IF ALL CHANCES FAIL */
X	{-1}},
X
Xtr044[] = {
X	{EAST},
X	{CROSS,	 43,20},
X	{DOWN,	611,0,0,0,1},
X	{DOWN,	 46,90},
X	{JUMP,	 28},
X	{NW,	 45},
X	{-1}},
X
Xtr045[] = {
X	{EAST},
X	{IN,	 44},
X	{JUMP,	 24},
X	{-1}},
X
Xtr046[] = {
X	{DOWN,	 47},
X	{NE,	 48},
X	{-1}},
X
Xtr047[] = {
X	{SE},
X	{UP,	 42},
X	{NW},
X	{DOWN,	 49},
X	{-1}},
X
Xtr048[] = {
X	{WEST,	 46},
X	{NORTH,	 50},
X	{-1}},
X
Xtr049[] = {
X	{SOUTH,	 47},
X	{NE},
X	{DOWN,	 50},
X	{NW},
X	{UP,	 53},
X	{-1}},
X
Xtr050[] = {
X	{EAST,	 48},
X	{SW},
X	{UP,	 49},
X	{NE},
X	{DOWN,	 51},
X	{-1}},
X
Xtr051[] = {
X	{SOUTH},
X	{UP,	 50},
X	{DOWN},
X	{NORTH,	 52},
X	{-1}},
X
Xtr052[] = {
X	{WEST,	 51},
X	{-1}},
X
Xtr053[] = {
X	{SOUTH},
X	{DOWN,	 49},
X	{UP},
X	{NORTH,	 54},
X	{-1}},
X
Xtr054[] = {
X	{SE},
X	{DOWN,	 53},
X	{EAST},
X	{UP,	 55},
X	{-1}},
X
Xtr055[] = {
X	{DOWN,	 51},
X	{WEST,	 54},
X	{EAST,	 56},
X	{-1}},
X
Xtr056[] = {
X	{WEST,	617,12,1,IF_PROP},
X	{WEST,	 55},
X	{SE,	617,12,1,IF_PROP},
X	{SE,	 57},
X	{-1}},
X
Xtr057[] = {
X	{NORTH,	 56},
X	{SE,	 58},
X	{-1}},
X
Xtr058[] = {
X	{NW,	 57},
X	{SE,	 35},
X	{-1}},
X
Xtr059[] = {
X	{EAST},
X	{OUT,	 36},
X	{-1}},
X
Xtr060[] = {
X	{SOUTH},
X	{CROSS},
X	{DOWNS,	 37,58,3,IF_PROP},
X	{DOWNS,	618,58,0,IF_HAVE},
X	{DOWNS,	614},
X	{NORTH},
X	{IN},
X	{ENTER},
X	{UPSTR,	 61,58,3,IF_PROP},
X	{UPSTR,	618,58,0,IF_HAVE},
X	{UPSTR,	614},
X	{-1}},
X
Xtr061[] = {
X	{SW},
X	{OUT},
X	{DOWNS,	 60,58,3,IF_PROP},
X	{DOWNS,	618,58,0,IF_HAVE},
X	{DOWNS,	614},
X	{NW},
X	{UP},
X	{UPSTR,	 62,58,3,IF_PROP},
X	{UPSTR,	618,58,0,IF_HAVE},
X	{UPSTR,	614},
X	{-1}},
X
Xtr062[] = {
X	{EAST},
X	{DOWNS,	 61,58,3,IF_PROP},
X	{DOWNS,	618,58,0,IF_HAVE},
X	{DOWNS,	614},
X	{WEST},
X	{ENTER,	 63,58,0,IF_NHAVE},
X	{ENTER,	619},
X	{-1}},
X
Xtr063[] = {
X	{EAST},
X	{ENTER,	617,12,1,IF_PROP},
X	{ENTER,	 62},
X	{SOUTH,	 64},
X	{SW,	 65},
X	{WEST,	 71},
X	{NW,	 69},
X	{NORTH,	 70},
X	{-1}},
X
Xtr064[] = {
X	{NE},
X	{NORTH,	 63},
X	{NW,	 71},
X	{WEST,	 65},
X	{SE},
X	{IN},
X	{ENTER,	 90},
X	{-1}},
X
Xtr065[] = {
X	{EAST,	 64},
X	{NE,	 63},
X	{NORTH,	 71},
X	{WEST,	 66},
X	{NW,	 67},
X	{SOUTH},
X	{ENTER,	 79},
X	{-1}},
X
Xtr066[] = {
X	{EAST,	 65},
X	{NORTH,	 67},
X	{NE,	 71},
X	{SW},
X	{ENTER,	 80},
X	{-1}},
X
Xtr067[] = {
X	{SE,	 65},
X	{SOUTH,	 66},
X	{NORTH,	 68},
X	{NE,	 69},
X	{EAST,	 71},
X	{WEST},
X	{ENTER},
X	{PRIVY},
X	{IN,	 78},
X	{-1}},
X
Xtr068[] = {
X	{SOUTH,	 67},
X	{EAST,	 69},
X	{SE,	 71},
X	{NW},
X	{ENTER,	 76},
X	{-1}},
X
Xtr069[] = {
X	{SW,	 67},
X	{WEST,	 68},
X	{NORTH},
X	{ENTER,	 75},
X	{EAST,	 70},
X	{SE,	 63},
X	{SOUTH,	 71},
X	{-1}},
X
Xtr070[] = {
X	{WEST,	 69},
X	{SOUTH,	 63},
X	{SW,	 71},
X	{NE},
X	{ENTER,	 72},
X	{-1}},
X
Xtr071[] = {
X	{EAST,	 63},
X	{SE,	 64},
X	{SOUTH,	 65},
X	{SW,	 66},
X	{WEST,	 67},
X	{NW,	 68},
X	{NORTH,	 69},
X	{NE,	 70},
X	{DOWN,	120,18,0,IF_PROP},
X	{DOWN,	509},
X	{-1}},
X
Xtr072[] = {
X	{SW},
X	{OUT,	 70},
X	{EAST,	 73},
X	{NORTH,	 74},
X	{SOUTH,	 89,22,0,IF_HAVE},
X	{SOUTH,	509},
X	{-1}},
X
Xtr073[] = {
X	{WEST,	 72},
X	{NORTH,	 74},
X	{UP,	 88,22,0,IF_HAVE},
X	{UP,	509},
X	{-1}},
X
Xtr074[] = {
X	{SOUTH,	 72},
X	{EAST,	 73},
X	{WEST,	 75},
X	{-1}},
X
Xtr075[] = {
X	{SOUTH},
X	{OUT,	 69},
X	{EAST},
X	{IN,	 74},
X	{-1}},
X
Xtr076[] = {
X	{SE},
X	{OUT,	 68},
X	{NW},
X	{IN},
X	{ENTER,	 77,91,0,IF_PROP},
X	{ENTER,	696,0,0,0,1},
X	{ENTER,	  0,100},
X	{-1}},
X
Xtr077[] = {
X	{SE},
X	{OUT,	 76},
X	{-1}},
X
Xtr078[] = {
X	{HOPE,	  2},
X	{EAST},
X	{OUT,	 67},
X	{-1}},
X
Xtr079[] = {
X	{NORTH},
X	{OUT,	 65},
X	{-1}},
X
Xtr080[] = {
X	{NE},
X	{OUT,	 66},
X	{OUT,	 81,1},	/* ROPE FUDGE */
X	{-1}},
X
Xtr081[] = {
X	{IN},
X	{ENTER},
X	{NORTH},
X	{NE},
X	{EAST},
X	{SE},
X	{SOUTH},
X	{SW},
X	{WEST},	
X	{NW,	556},
X	{NW,	 80,1},	/* rope fudge */
X	{NW,	 82,1},	/* ROPE FUDGE */
X	{-1}},
X
Xtr082[] = {
X	{SW},
X	{ENTER,	 83,0,1},	/* NO DWARVES HERE */
X	{NW},
X	{IN,	 84,22,0,IF_PROP},
X	{IN,	646},
X	{IN,	 81,1},	/* ROPE FUDGE */
X	{-1}},
X
Xtr083[] = {
X	{NE},
X	{OUT,	557,22,0,IF_WITH,1},
X	{OUT,	 82,22,0,IF_WITH},
X	{OUT,	 82},
X	{-1}},
X
Xtr084[] = {
X	{SE,	557,22,0,IF_WITH,1},
X	{SE,	 82,22,0,IF_WITH},
X	{SE,	 82},
X	{SW,	 85},
X	{NW,	 86},
X	{-1}},
X
Xtr085[] = {
X	{EAST},
X	{OUT,	 84},
X	{JUMP,	 25},
X	{-1}},
X
Xtr086[] = {
X	{SE,	 84},
X	{NORTH},
X	{OUT,	 87},
X	{-1}},
X
Xtr087[] = {
X	{SOUTH,	600,92,1,IF_PROP},
X	{SOUTH,	 86},
X	{-1}},
X
Xtr088[] = {
X	{DOWN,	 73},
X	{-1}},
X
Xtr089[] = {
X	{NORTH,	 72},
X	{-1}},
X
Xtr090[] = {
X	{NW},
X	{OUT,	 64},
X	{UP},
X	{CLIMB,	 91,23,0,IF_HAVE},
X	{CLIMB,	625,23,0,IF_WITH},
X	{CLIMB,	624},
X	{-1}},
X
Xtr091[] = {
X	{DOWN,	 90},
X	{EAST,	 92,23,0,IF_HAVE},
X	{EAST,	 92,20},
X	{EAST,	624},
X	{-1}},
X
Xtr092[] = {
X	{NW,	  0,10,0,IF_HAVE,1},
X	{NW,	303,93,2,IF_PROP},
X	{NW,	 91,100},
X	{NE},
X	{SE},
X	{SW},
X	{SOUTH,	 92},
X	{EAST,	 93},
X	{UP,	 97},
X	{NORTH,	 99},
X	{PAST,	102},
X	{DOWN,	108},
X	{FUTUR},
X	{WEST,	109},
X	{SOUTH,	116},
X	{-1}},
X
Xtr093[] = {
X	{WEST,	 92},
X	{NE},
X	{SE},
X	{SOUTH},
X	{SW},
X	{NW},
X	{DOWN},
X	{PAST,	 93},		/* CONFUSE YOU PRETTY GOOD THIS WAY */
X	{NORTH,	 94},
X	{UP,	 98},
X	{FUTUR,	105},
X	{EAST,	110},
X	{-1}},
X
Xtr094[] = {
X	{SOUTH,	 93},
X	{NE},
X	{EAST},
X	{SE},
X	{SW},	
X	{NW},
X	{DOWN},
X	{NORTH,	 94},
X	{UP,	 95},
X	{WEST,	 99},
X	{FUTUR,	104},
X	{PAST,	109},
X	{-1}},
X
Xtr095[] = {
X	{DOWN,	 94},
X	{NE},
X	{EAST},
X	{SE},
X	{SW},
X	{NW},
X	{UP},
X	{NORTH,	 95},
X	{WEST,	 96},
X	{SOUTH,	 98},
X	{FUTUR,	107},
X	{PAST,	111},
X	{-1}},
X
Xtr096[] = {
X	{EAST,	 95},
X	{NE},
X	{SE},
X	{SW},
X	{WEST},
X	{NW},
X	{UP},
X	{NORTH,	 96},
X	{SOUTH,	 97},
X	{DOWN,	 99},
X	{PAST,	110},
X	{FUTUR,	112},
X	{-1}},
X
Xtr097[] = {
X	{DOWN,	 92},
X	{NORTH,	 96},
X	{NE},
X	{SE},
X	{SOUTH},
X	{SW},
X	{WEST},
X	{NW},
X	{UP,	 97},
X	{EAST,	 98},
X	{PAST,	101},
X	{FUTUR,	113},
X	{-1}},
X
Xtr098[] = {
X	{DOWN,	 93},
X	{NORTH,	 95},
X	{WEST,	 97},
X	{NE},
X	{EAST},
X	{SE},
X	{SOUTH},
X	{SW},	
X	{NW,	 98},
X	{FUTUR,	106},
X	{PAST,	114},
X	{-1}},
X
Xtr099[] = {
X	{SOUTH,	 92},
X	{EAST,	 94},
X	{UP,	 96},
X	{NE},
X	{SE},
X	{SW},
X	{WEST},
X	{NW},
X	{DOWN},
X	{FUTUR,	 99},
X	{PAST,	103},
X	{NORTH,	117},
X	{-1}},
X
Xtr100[] = {
X	{FUTUR,	 96},
X	{EAST},
X	{SE},
X	{SOUTH},
X	{SW},
X	{WEST},
X	{DOWN},
X	{NORTH,	100},
X	{NE,	101},
X	{NW,	103},
X	{UP,	107},
X	{PAST,	116},
X	{-1}},
X
Xtr101[] = {
X	{FUTUR,	 97},
X	{SW,	100},
X	{NE},
X	{EAST},
X	{SE},
X	{SOUTH},
X	{WEST},
X	{DOWN},
X	{NORTH},
X	{PAST,	101},
X	{NW,	102},
X	{UP,	106},
X	{-1}},
X
Xtr102[] = {
X	{FUTUR,	 92},
X	{SE,	101},
X	{NE},
X	{EAST},
X	{SOUTH},
X	{WEST},
X	{NW},
X	{DOWN},
X	{NORTH,	102},
X	{SW,	103},
X	{UP,	105},
X	{PAST,	119},
X	{-1}},
X
Xtr103[] = {
X	{FUTUR,	 99},
X	{SE,	100},
X	{NE,	102},
X	{EAST},
X	{SOUTH},
X	{SW},
X	{WEST},
X	{NW},	
X	{DOWN},
X	{NORTH,	103},
X	{UP,	104},
X	{PAST,	114},
X	{-1}},
X
Xtr104[] = {
X	{PAST,	 94},
X	{DOWN,	103},
X	{EAST},
X	{SOUTH},	
X	{SW},
X	{WEST},
X	{NW},
X	{UP},
X	{NORTH},
X	{FUTUR,	104},
X	{NE,	105},
X	{SE,	107},
X	{-1}},
X
Xtr105[] = {
X	{PAST,	 93},
X	{DOWN,	102},
X	{SW,	104},
X	{NE},
X	{EAST},
X	{SOUTH},
X	{WEST},
X	{NW},
X	{UP},
X	{NORTH},
X	{FUTUR,	105},
X	{SE,	106},
X	{-1}},
X
Xtr106[] = {
X	{PAST,	 98},
X	{DOWN,	101},
X	{NW,	105},
X	{NE},
X	{EAST},
X	{SE},
X	{SOUTH},
X	{WEST},
X	{UP},
X	{NORTH,	106},
X	{SW,	107},
X	{FUTUR,	118},
X	{-1}},
X
Xtr107[] = {
X	{PAST,	 95},
X	{DOWN,	100},
X	{NW,	104},
X	{NE,	106},
X	{EAST},
X	{SE},
X	{SOUTH},
X	{SW},
X	{WEST},
X	{UP},	
X	{NORTH},
X	{FUTUR,	107},
X	{-1}},
X
Xtr108[] = {
X	{WEST,	 92},
X	{-1}},
X
Xtr109[] = {
X	{PAST,	 92,100},	/* WHY 100% ? */
X	{EAST,	 94},
X	{-1}},
X
Xtr110[] = {
X	{FUTUR,	 93,100},
X	{-1}},
X
Xtr111[] = {
X	{FUTUR,	 95,100},
X	{-1}},
X
Xtr112[] = {
X	{PAST,	 96,100},
X	{-1}},
X
Xtr113[] = {
X	{FUTUR,	 97},
X	{-1}},
X
Xtr114[] = {
X	{FUTUR,	 98,100},
X	{-1}},
X
Xtr115[] = {
X	{PAST,	103,100},
X	{-1}},
X
Xtr116[] = {
X	{PAST,	100,100},
X	{-1}},
X
Xtr117[] = {
X	{PAST,	 99,100},
X	{-1}},
X
Xtr118[] = {
X	{PAST,	106,100},
X	{-1}},
X
Xtr119[] = {
X	{PAST,	102,100},
X	{-1}},
X
Xtr120[] = {
X	{UP,	 71},
X	{-1}},
X
Xtr121[] = {
X	{EAST,	122},
X	{-1}},
X
Xtr122[] = {
X	{WEST,	121},
X	{SE,	123},
X	{EAST,	124},
X	{NE,	125},
X	{-1}},
X
Xtr123[] = {
X	{NW,	122},
X	{NE,	124},
X	{NORTH,	125},
X	{-1}},
X
Xtr124[] = {
X	{WEST,	122},
X	{SW,	123},
X	{NW,	125},
X	{EAST,	127},
X	{-1}},
X
Xtr125[] = {
X	{SW,	122},
X	{SOUTH,	123},
X	{SE,	124},
X	{NORTH},
X	{IN},
X	{ENTER,	126},
X	{-1}},
X
Xtr126[] = {
X	{SOUTH},
X	{OUT,	125},
X	{-1}},
X
Xtr127[] = {
X	{WEST,	124},
X	{EAST},
X	{IN},
X	{ENTER,	128},
X	{NORTH},
X	{SHAFT,	129},
X	{-1}},
X
Xtr128[] = {
X	{WEST},
X	{OUT,	127},
X	{-1}},
X
Xtr129[] = {
X	{EAST},
X	{OUT,	127},
X	{JUMP,	 25},
X	{JUMP,	131,1},	/* ??? */
X	{-1}},
X
Xtr130[] = {
X	{JUMP,	 25},
X	{MISFO,	  2},
X	{BANIS,	301},
X	{JUMP,	129,1},	/* ??? */
X	{JUMP,	131,1},
X	{-1}},
X
Xtr131[] = {
X	{WEST},
X	{IN},
X	{ENTER,	132},
X	{BANIS},
X	{MISFO,	714,81,0,IF_PROP,1},
X	{MISFO,	301},
X	{MISFO,	663,81,1,IF_PROP,1},
X	{MISFO,	301},
X	{MISFO,	 42},
X	{MISFO,	129,1},	/* ??? */
X	{-1}},
X
Xtr132[] = {
X	{EAST},
X	{SHAFT,	131},
X	{WEST,	711,11,0,IF_NPROP},
X	{WEST,	133},
X	{-1}},
X
Xtr133[] = {
X	{EAST,	132},
X	{WEST,	  0,12,1,IF_PROP,1},
X	{WEST,	134, 0,1},	/* NO DWARVES */
X	{WEST,	698,12,0,IF_WITH},
X	{WEST,	614},
X	{-1}},
X
Xtr134[] = {
X	{EAST,	133,0,1},	/* NO DWARVES */
X	{WEST,	135,0,1},	/* NO DWARVES */
X	{-1}},
X
Xtr135[] = {
X	{EAST,	  0,12,1,IF_PROP,1},
X	{EAST,	134,0,1},	/* NO DWARVES */
X	{EAST,	698,12,0,IF_WITH},
X	{WEST,	136},
X	{-1}},
X
Xtr136[] = {
X	{EAST,	135},
X	{NORTH},
X	{IN},
X	{ENTER,	137},
X	{WEST,	617,12,1,IF_PROP},
X	{WEST,	138},
X	{-1}},
X
Xtr137[] = {
X	{SOUTH},
X	{OUT,	136},
X	{-1}},
X
Xtr138[] = {
X	{EAST,	136},
X	{WEST},
X	{CROSS,	139},
X	{JUMP,	305},
X	{-1}},
X
Xtr139[] = {
X	{EAST},
X	{CROSS,	138},
X	{JUMP,	715,10},
X	{JUMP,	716,0,0,0,1},
X	{JUMP,	140},
X	{-1}},
X
Xtr140[] = {
X	{EAST},
X	{CROSS,	139},
X	{DOWN},
X	{IN},
X	{ENTER,	141,0,1},	/* NO DWARVES */
X	{JUMP,	305},
X	{-1}},
X
Xtr141[] = {
X	{DOWN,	142},
X	{JUMP,	305},
X	{-1}},
X
Xtr142[] = {
X	{UP},
X	{CLIMB,	141},
X	{DOWN,	143},
X	{JUMP,	305},
X	{-1}},
X
Xtr143[] = {
X	{UP},
X	{CLIMB,	142},
X	{DOWN,	144,0,1},	/* NO DWARVES */
X	{JUMP,	305},
X	{-1}},
X
Xtr144[] = {
X	{UP},
X	{CLIMB,	143},
X	{JUMP,	719,0,0,0,1},
X	{JUMP,	 91},
X	{-1}},
X
Xtr145[] = {
X	{DOWN},
X	{JUMP,	720},
X	{EAST,	146},
X	{SOUTH,	147},
X	{WEST,	148},
X	{NORTH,	149},
X	{-1}},
X
Xtr146[] = {
X	{WEST},
X	{UP},
X	{CLIMB,	145},
X	{SW,	147},
X	{NW,	149},
X	{EAST},
X	{IN},
X	{ENTER,	150},
X	{-1}},
X
Xtr147[] = {
X	{UP},
X	{NORTH},
X	{CLIMB,	145},
X	{NE,	146},
X	{NW,	148},
X	{SOUTH},
X	{IN},
X	{ENTER,	713,0,0,0,1},
X	{ENTER,	  0,100},	/* ??? */
X	{-1}},
X
Xtr148[] = {
X	{EAST},
X	{UP},
X	{CLIMB,	145},
X	{SE,	147},
X	{NE,	149},
X	{WEST},
X	{IN},
X	{ENTER,	710,0,0,0,1},
X	{ENTER,	  0,100},	/* ??? */
X	{-1}},
X
Xtr149[] = {
X	{UP},
X	{CLIMB},
X	{SOUTH,	145},
X	{SW,	148},
X	{SE,	146},
X	{NORTH},
X	{IN},
X	{ENTER,	712,0,0,0,1},
X	{ENTER,	  0,100},	/* ??? */
X	{-1}},
X
Xtr150[] = {
X	{WEST},
X	{OUT,	306},
X	{WEST,	146},
X	{-1}};
X
Xstruct cvloc cvloc[] =
X	{
X
X{ /* 0: no location number zero,
X		but this is used for FIXED and TAKEN */
X0,		/* flags */
Xtr000,		/* travel not NULL to avoid flagging the end */
X"",			/* sdesc not null (for loop terminations) */
X""
X},
X{ /* 1: */
XLIGHT,		/* flags */
Xtr001,
X"You're at the end of road again.\n",
X"\n\
XYou are standing before a barn at the northern end of a road.\n\
XTo the east is a pasture.  To the west and north are woods.\n\
XThere are well-worn paths in several directions.\n"
X},
X{ /* 2: */
XLIGHT|C_WATER,		/* flags */
Xtr002,
X"You're inside barn.\n",
X"You're in the barn.  It has been converted to quarters for spelunkers.\n\
XThere are electric lights, and a number of mattresses strewn about.\n"
X},
X{ /* 3: */
XLIGHT,		/* flags */
Xtr003,
X"You're at privvy.\n",
X"You are in the woods at the end of a path.  Before you is a privvy.\n"
X},
X{ /* 4: */
XLIGHT,		/* flags */
Xtr004,
X"You're in privvy.\n",
X"You're in the privvy.\n"
X},
X{ /* 5: */
XLIGHT,		/* flags */
Xtr005,
X"You're in pasture.\n",
X"You are in a pasture.  On the east are woods.  There's a building to the\n\
Xwest.  A fence and a road border the pasture to the north and the south.\n"
X},
X{ /* 6: */
XLIGHT,		/* flags */
Xtr006,
X"You're at shaft in woods.\n",
X"You are in the woods.  Before you is a wide shaft.  You could climb down\n\
Xhere, but you could not get back up.\n"
X},
X{ /* 7: */
XLIGHT,		/* flags */
Xtr007,
X"You're at bottom of forest shaft.\n",
X"You are at the bottom of a wide shaft.  A dimly lit, muddy crawl leads\n\
Xto the east.\n"
X},
X{ /* 8: */
XLIGHT,		/* flags */
Xtr008,
X"You're in muddy crawl.\n",
X"You are in a muddy, sloping east-west crawlway.  Faint light is visible\n\
Xin either direction.\n"
X},
X{ /* 9: */
XLIGHT,		/* flags */
Xtr009,
X"You're at bottom of sinkhole.\n",
X"You are in the bottom of a smelly sinkhole.  A dimly lit, muddy crawlway\n\
Xleads west.\n"
X},
X{ /* 10: */
XLIGHT,		/* flags */
Xtr010,
X"You're in pigpen.\n",
X"You are inside a fenced pen.  There is a sinkhole here.  There are\n\
Xseveral pigs wandering about.\n"
X},
X{ /* 11: */
XLIGHT,		/* flags */
Xtr011,
X"You're at fence.\n",
X"You are at a fence surrounding a sinkhole.  There are woods all around\n\
Xyou except to the south, where there is a field.  There is a path to the\n\
Xsouthwest.\n"
X},
X{ /* 12: */
XLIGHT,		/* flags */
Xtr012,
XNULL,
X"You are in dense woods.\n"
X},
X{ /* 13: */
XLIGHT,		/* flags */
Xtr013,
XNULL,
X"You are in open woods.\n"
X},
X{ /* 14: */
XLIGHT,		/* flags */
Xtr014,
X"You're at top of cliff.\n",
X"You are at the top of a north-south cliff.  To the north and east are\n\
Xwoods.  Below you is a river.  A sign reads,\n\
X    \"SCALING CLIFF FACE IS HAZARDOUS.  USE PROPER EQUIPMENT.\"\n"
X},
X{ /* 15: */
XLIGHT,		/* flags */
Xtr015,
X"You're at bend of cliff.\n",
X"You are at a bend along the edge of a cliff.  There is a river below.\n\
XTo the east the cliffs become lower.\n"
X},
X{ /* 16: */
XLIGHT,		/* flags */
Xtr016,
X"You're at top of bluff.\n",
X"You are at the top of an east-west bluff.\n"
X},
X{ /* 17: */
XLIGHT,		/* flags */
Xtr017,
X"You're at bend in road.\n",
X"You are at a bend in the road.  To the north the road leads toward a\n\
Xbuilding.  A path leads west through brambles.\n"
X},
X{ /* 18: */
XLIGHT,		/* flags */
Xtr018,
X"You're on road near meadow.\n",
X"You are on a road bordering the south edge of a meadow.\n"
X},
X{ /* 19: */
XLIGHT,		/* flags */
Xtr019,
X"You're at road junction.\n",
X"You are at a junction of an east-west road and a road to the southwest.\n\
XThere is a \"ROAD CLOSED\" sign on the east fork.\n"
X},
X{ /* 20: */
XLIGHT,		/* flags */
Xtr020,
X"You're at park headquarters.\n",
X"You are on a road leading down to the river.  A building nearby says\n\
X    \"CRYSTAL CAVE PARK HEADQUARTERS\"\n"
X},
X{ /* 21: */
XLIGHT,		/* flags */
Xtr021,
XNULL,
X"You are inside the park detention center.\n"
X},
X{ /* 22: */
XLIGHT|C_WATER,		/* flags */
Xtr022,
XNULL,
X"You are on the road by the river.  The road bends westward following a\n\
Xsmall stream that enters the river here.\n"
X},
X{ /* 23: */
XLIGHT|C_WATER,		/* flags */
Xtr023,
X"You're at parking lot.\n",
X"You are at a stream exiting from a cliff.  A sign says:\n\
X        \"CRYSTAL CAVE PARKING LOT.\n\
X     PLEASE FOLLOW PATH BESIDE STREAM\n\
X          NORTH TO CAVE ENTRANCE.\"\n"
X},
X{ /* 24: */
XLIGHT,		/* flags */
Xtr024,
XNULL,
X"You are at the bottom of a cliff with a broken neck.\n"
X},
X{ /* 25: */
XLIGHT,		/* flags */
Xtr025,
XNULL,
X"You are at the bottom of a shaft with a broken neck.\n"
X},
X{ /* 26: */
XLIGHT|HINT5,		/* flags */
Xtr026,
X"You are in a tangled, thick maze of woods.\n",
X"You are in a thick maze of tangled woods.\n"
X},
X{ /* 27: */
XLIGHT|HINT5,		/* flags */
Xtr027,
X"You are in a maze of tangled, thick woods.\n",
X"You are in a maze of thick, tangled woods.\n"
X},
X{ /* 28: */
X0,		/* flags */
Xtr028,
XNULL,
X"You are at the bottom of a pit with a broken neck.\n"
X},
X{ /* 29: */
XLIGHT|HINT5,		/* flags */
Xtr029,
X"You are in a thickly tangled maze of woods.\n",
X"You are in a tangled maze of thick woods.\n"
X},
X{ /* 30: */
XLIGHT|HINT1,		/* flags */
Xtr030,
X"You're at cave mouth.\n",
X"You are at the mouth of the cave.\n"
X},
X{ /* 31: */
XLIGHT,		/* flags */
Xtr031,
X"You're inside entrance.\n",
X"You are inside the entrance.  A stream exits here.  A path runs beside\n\
Xthe stream.\n"
X},
X{ /* 32: */
XLIGHT|C_WATER|RANGER,		/* flags */
Xtr032,
X"You're in stream passage.\n",
X"You are in a passage, beside a swiftly flowing stream.  A dark hole is\n\
Xvisible at the top of a nearby column.\n"
X},
X{ /* 33: */
XLIGHT|C_WATER|RANGER,		/* flags */
Xtr033,
X"You're at south end of lake.\n",
X"You are at a large, misty underground lake.  A stream flows south over\n\
Xrapids.  Across the stream, a large passage heads west.\n"
X},
X{ /* 34: */
XLIGHT|C_WATER,		/* flags */
Xtr034,
XNULL,
X"You are on the east side of the misty lake.\n"
X},
X{ /* 35: */
XLIGHT|C_WATER|RANGER,		/* flags */
Xtr035,
X"You're at west side of lake.\n",
X"You are on the beach on the west side of the misty lake.  A large\n\
Xpassage leads west.  There is a stony crawl here leading northwest.\n"
X},
X{ /* 36: */
XLIGHT|C_WATER,		/* flags */
Xtr036,
X"You're at northwest side of lake.\n",
X"You are on the northwest side of the misty lake.  There is a broken\n\
Xcrawl here.\n"
X},
X{ /* 37: */
XLIGHT|C_WATER|HINT2,		/* flags */
Xtr037,
XNULL,
X"You are at the upper end of the misty lake.\n"
X},
X{ /* 38: */
XLIGHT|C_WATER|DROWN,		/* flags */
Xtr038,
XNULL,
X"You are in the middle of the lower end of the misty lake.\n"
X},
X{ /* 39: */
XLIGHT|C_WATER|DROWN,		/* flags */
Xtr039,
XNULL,
X"You are in the middle of the upper end of the misty lake.\n"
X},
X{ /* 40: */
XLIGHT,		/* flags */
Xtr040,
X"You're at top of column.\n",
X"You are at the top of the column.  A hole leads up.\n"
X},
X{ /* 41: */
X0,		/* flags */
Xtr041,
XNULL,
X"Dead end.\n"
X},
X{ /* 42: */
XLIGHT|RANGER,		/* flags */
Xtr042,
X"You're at junction of 3 passages.\n",
X"You are at the junction of three passages.  One rises steeply, one is\n\
Xlarge and level, and one descends slightly.\n"
X},
X{ /* 43: */
XLIGHT|RANGER,		/* flags */
Xtr043,
X"You're at east edge of domepit.\n",
X"You are at the east edge of a domepit.  You probably can't cross safely.\n"
X},
X{ /* 44: */
XRANGER,		/* flags */
Xtr044,
X"You're at west edge of domepit.\n",
X"You are at the west edge of a domepit.  You probably can't cross safely.\n"
X},
X{ /* 45: */
XLIGHT,		/* flags */
Xtr045,
X"You're at window.\n",
X"You are at a small window at the end of a passage.  The window looks out\n\
Xover a beautiful view of the countryside, and is located in the side of\n\
Xan immense cliff, above a river.\n"
X},
X{ /* 46: */
XLIGHT|RANGER,		/* flags */
Xtr046,
X"You're at bottom of high dome.\n",
X"You are at the bottom of a high dome.  There seems to be a passage near\n\
Xthe top, but you have no way to get to it.  There is a passage to the\n\
Xnortheast, and a hole leading to a lower level.  If you go down, you\n\
Xwon't be able to get back up.\n"
X},
X{ /* 47: */
XLIGHT,		/* flags */
Xtr047,
X"You're in trench room.\n",
X"You are in a long flat room, sloping along a trench in the floor.  There\n\
Xis a hole in the ceiling, but you can't reach it.\n"
X},
X{ /* 48: */
XLIGHT|C_WATER|RANGER,		/* flags */
Xtr048,
X"You're at clock shop.\n",
X"You are at the end of a long passage.  Water drips from a thicket of\n\
Xstalagtites overhead, into a small stone cup under each stalagtite.  The\n\
Xacoustics are such that each drip sounds like a clock ticking, and the\n\
Xgeneral effect is that of being in a clock shop.  A small, muddy crawlway\n\
Xleads off from here.\n"
X},
X{ /* 49: */
XLIGHT|RANGER,		/* flags */
Xtr049,
X"You're at intersection of 3 passages.\n",
X"You are at the intersection of three passages.  One rises slightly, one\n\
Xdrops rapidly.\n"
X},
X{ /* 50: */
XLIGHT|RANGER,		/* flags */
Xtr050,
X"You're in sloping passage with crawl.\n",
X"You are in a long, sloping passage.  A crawl enters from the east.\n"
X},
X{ /* 51: */
XLIGHT,		/* flags */
Xtr051,
X"You're in sloping passage.\n",
X"You are in a long, sloping passage.  There is an opening above, but you\n\
Xcan't climb to it.\n"
X},
X{ /* 52: */
XRANGER,		/* flags */
Xtr052,
X"You're in large chamber.\n",
X"You are in a large chamber.  A passage leads to the west.\n"
X},
X{ /* 53: */
XLIGHT|RANGER,		/* flags */
Xtr053,
XNULL,
X"You are in a steeply sloping passage.\n"
X},
X{ /* 54: */
XLIGHT|RANGER,		/* flags */
Xtr054,
XNULL,
X"You are in a curving, steeply sloping passage.\n"
X},
X{ /* 55: */
XLIGHT|RANGER,		/* flags */
Xtr055,
X"You're in high passage.\n",
X"You are in a high passage.  There is a hole in the floor here, but if\n\
Xyou go down, you will not be able to get back up.\n"
X},
X{ /* 56: */
XLIGHT,		/* flags */
Xtr056,
X"You're in magnificent chamber.\n",
X"You are in a magnificent chamber.  A narrow passage lies to the west,\n\
Xand a small crawl leads off the the southeast.  Overhead, far out of\n\
Xreach, you can dimly make out another passage.\n"
X},
X{ /* 57: */
XRANGER,		/* flags */
Xtr057,
XNULL,
X"You are crawling over sharp, broken, chert.\n"
X},
X{ /* 58: */
XRANGER,		/* flags */
Xtr058,
XNULL,
X"You are crawling over sharp, broken, chert.\n"
X},
X{ /* 59: */
X0,		/* flags */
Xtr059,
X"Dead end.\n",
X"The crawlway has collapsed ahead...dead end.\n"
X},
X{ /* 60: */
XC_WATER,		/* flags */
Xtr060,
X"You're in a low, water-filled passage.\n",
X"You are in a low, water-filled passage.  Water drips from the ceiling\n\
Xhere.  It is very low, but you can get the boat through.\n"
X},
X{ /* 61: */
XC_WATER,		/* flags */
Xtr061,
X"You're in sinuous passage.\n",
X"You are in a long, sinuous passage, the water lapping at both walls.\n"
X},
X{ /* 62: */
XC_WATER,		/* flags */
Xtr062,
X"You're in pool hall.\n",
X"You are in a large hall with a pool of water.  To the south, a waterfall\n\
Xthunders into the pool, and flows out through a passage to the east.  To\n\
Xthe west, a hole in the wall looms beyond a small beach.\n"
X},
X{ /* 63: */
X0,		/* flags */
Xtr063,
X"You're at the east side of the Hall of the Mountain King.\n",
X"You are at the east side of the Hall of the Mountain King.  There is a\n\
Xpassage here.\n"
X},
X{ /* 64: */
X0,		/* flags */
Xtr064,
X"You're at the SE side of the Hall of the Mountain King.\n",
X"You are at the southeast side of the Hall of the Mountain King.  There\n\
Xis a passage here.\n"
X},
X{ /* 65: */
X0,		/* flags */
Xtr065,
X"You're at the south side of the Hall of the Mountain King.\n",
X"You are at the south side of the Hall of the Mountain King.  There is a\n\
Xpassage here.\n"
X},
X{ /* 66: */
X0,		/* flags */
Xtr066,
X"You're at the SW side of the Hall of the Mountain King.\n",
X"You are at the southwest side of the Hall of the Mountain King.  There\n\
Xis a passage here.\n"
X},
X{ /* 67: */
X0,		/* flags */
Xtr067,
X"You're at the west side of the Hall of the Mountain King.\n",
X"You are at the west side of the Hall of the Mountain King.  Inscribed\n\
Xabove a passageway are the words:\n\
X     \"ABANDON HOPE, ALL YE WHO ENTER HERE\".\n"
X},
X{ /* 68: */
X0,		/* flags */
Xtr068,
X"You're at the NW side of the Hall of the Mountain King.\n",
X"You are at the northwest side of the Hall of the Mountain King.  There\n\
Xis a passage here.\n"
X},
X{ /* 69: */
X0,		/* flags */
Xtr069,
X"You're at the north side of the Hall of the Mountain King.\n",
X"You are at the north side of the Hall of the Mountain King.  There is a\n\
Xpassage here.\n"
X},
X{ /* 70: */
X0,		/* flags */
Xtr070,
X"You're at the NE side of the Hall of the Mountain King.\n",
X"You are at the northeast side of the Hall of the Mountain King.  There\n\
Xis a passage here.\n"
X},
X{ /* 71: */
XSECRET,		/* flags */
Xtr071,
X"You're at the center of the Hall of the Mountain King.\n",
X"You are in the center of the Hall of the Mountain King, a large\n\
Xoctagonal room.  There are passages on all sides!\n"
X},
X{ /* 72: */
XSECRET,		/* flags */
Xtr072,
X"You're in the Banquet Hall.\n",
X"You are in the Banquet Hall, with a long table running to the head of\n\
Xthe room.  The moldy remains of a meal are on the table.\n"
X},
X{ /* 73: */
XC_WINE|SECRET,		/* flags */
Xtr073,
X"You're in the King's Storeroom.\n",
X"You are in the King's Storeroom.  It is filled with barrels of wine.\n"
X},
X{ /* 74: */
X0,		/* flags */
Xtr074,
XNULL,
X"You are in the King's Kitchen.\n"
X},
X{ /* 75: */
X0,		/* flags */
Xtr075,
XNULL,
X"You are in the King's Library.\n"
X},
X{ /* 76: */
X0,		/* flags */
Xtr076,
XNULL,
X"You are in the King's Guard Room.\n"
X},
X{ /* 77: */
X0,		/* flags */
Xtr077,
XNULL,
X"You are in the King's Counting Room.\n"
X},
X{ /* 78: */
XLIGHT,		/* flags */
Xtr078,
X"You're in the Privy Chamber.\n",
X"You are in the Privy Chamber.  There is a row of six thrones here.\n\
XFaint light comes from two holes in the ceiling at one corner of the\n\
Xchamber.  On the wall are written the words:\n\
X    \"LIVES THERE A KING WITH SOUL SO DEAD . . .\"\n\
XThe rest is illegible.\n"
X},
X{ /* 79: */
XLIGHT,		/* flags */
Xtr079,
X"You're in the armory.\n",
X"You are in the armory.  A glow comes from the coals in the smith's\n\
Xforge.  There are many tools hanging here.\n"
X},
X{ /* 80: */
X0,		/* flags */
Xtr080,
X"You're in the Torture Chamber.\n",
X"You are in the Torture Chamber.  There is a doorway to the northeast\n\
Xand a deep hole chiseled in the rock floor at the other end of the\n\
Xchamber.  A metal ring has been hammered into the rock at the top of the\n\
Xhole.  There are rusted, useless instruments strewn about.  The remains\n\
Xof something, which are best not to dwell upon, are on the rack.\n"
X},
X{ /* 81: */
XHINT6,		/* flags */
Xtr081,
X"You're in Dungeon.\n",
X"You are in the King's Dungeon.  To the northeast, there is a hole in the\n\
Xceiling above.  At the southwestern end is another deep pit in the floor\n\
Xwith a metal anchor ring.  Around the walls are openings, each sealed\n\
Xwith a huge boulder preventing any access to the cells within.  From the\n\
Xlook of this place, I'm not sure you want to know what's in them anyway.\n"
X},
X{ /* 82: */
XSECRET,		/* flags */
Xtr082,
X"You're in corridor.\n",
X"You are in a narrow, northeast trending corridor.\n"
X},
X{ /* 83: */
XESCAPE,		/* flags */
Xtr083,
X"You're in crypt.\n",
X"You are in the crypt.\n"
X},
X{ /* 84: */
X0,		/* flags */
Xtr084,
X"You're in secret passage.\n",
X"You are in a secret passage running southeast.  A second passage enters\n\
Xfrom the southwest.\n"
X},
X{ /* 85: */
X0,		/* flags */
Xtr085,
XNULL,
X"You are at a low window, overlooking a magnificent chamber.\n"
X},
X{ /* 86: */
XLIGHT|C_WATER,		/* flags */
Xtr086,
X"You're at south end of grotto.\n",
X"You are at the south end of a grotto.  The floor is sand, sloping off to\n\
Xa beach, and a lake to the west.  Faint light is visible to the north.\n\
XThere is evidence of a former passage to the west, but it has collapsed,\n\
Xand there is no way to go in that direction now.  At one time in the far\n\
Xdistant past, the grotto was obviously used by pirates, and there is the\n\
Xtattered remains of a \"Jolly Roger\" hanging from the ceiling.\n"
X},
X{ /* 87: */
XLIGHT|C_WATER,		/* flags */
Xtr087,
X"You're at north end of grotto.\n",
X"You are at the north end of a grotto with a sand floor and a lake.\n\
XLight filters up from the lake, and you can faintly see an opening to the\n\
Xoutside world under water, but it is inaccessible.\n"
X},
X{ /* 88: */
X0,		/* flags */
Xtr088,
XNULL,
X"You're in the King's Cupboard.\n"
X},
X{ /* 89: */
X0,		/* flags */
Xtr089,
XNULL,
X"You're in the King's Cloakroom.\n"
X},
X{ /* 90: */
X0,		/* flags */
Xtr090,
X"You're at bottom of Wizard's Tower.\n",
X"You are at the bottom of the Wizard's Tower.  Finely carved stone steps\n\
Xspiral upward.\n"
X},
X{ /* 91: */
X0,		/* flags */
Xtr091,
X"You're at top of Wizard's Tower.\n",
X"You are at the top of the Wizard's Tower.  Finely carved stone steps\n\
Xspiral downward.  This chamber has a door on the east side, with the\n\
Xwords\n\
X     \"CAUTION: THE TIME MAZE LIES BEYOND\"\n\
Xchiseled above.\n"
X},
X{ /* 92: */
XHINT3,		/* flags */
Xtr092,
XNULL,
X"You're in the Timemaze.\n"
X},
X{ /* 93: */
XHINT3,		/* flags */
Xtr093,
XNULL,
X"You're in the Timemaze.\n"
X},
X{ /* 94: */
XHINT3,		/* flags */
Xtr094,
XNULL,
X"You're in the Timemaze.\n"
X},
X{ /* 95: */
XHINT3,		/* flags */
Xtr095,
XNULL,
X"You're in the Timemaze.\n"
X},
X{ /* 96: */
XHINT3,		/* flags */
Xtr096,
XNULL,
X"You're in the Timemaze.\n"
X},
X{ /* 97: */
XHINT3,		/* flags */
Xtr097,
XNULL,
X"You're in the Timemaze.\n"
X},
X{ /* 98: */
XHINT3,		/* flags */
Xtr098,
XNULL,
X"You're in the Timemaze.\n"
X},
X{ /* 99: */
XHINT3,		/* flags */
Xtr099,
XNULL,
X"You're in the Timemaze.\n"
X},
X{ /* 100: */
XHINT3,		/* flags */
Xtr100,
XNULL,
X"You're in the Timemaze.\n"
X},
X{ /* 101: */
XHINT3,		/* flags */
Xtr101,
XNULL,
X"You're in the Timemaze.\n"
X},
X{ /* 102: */
XHINT3,		/* flags */
Xtr102,
XNULL,
X"You're in the Timemaze.\n"
X},
X{ /* 103: */
XHINT3,		/* flags */
Xtr103,
XNULL,
X"You're in the Timemaze.\n"
X},
X{ /* 104: */
XHINT3,		/* flags */
Xtr104,
XNULL,
X"You're in the Timemaze.\n"
X},
X{ /* 105: */
XHINT3,		/* flags */
Xtr105,
XNULL,
X"You're in the Timemaze.\n"
X},
X{ /* 106: */
XHINT3,		/* flags */
Xtr106,
XNULL,
X"You're in the Timemaze.\n"
X},
X{ /* 107: */
XHINT3,		/* flags */
Xtr107,
XNULL,
X"You're in the Timemaze.\n"
X},
X{ /* 108: */
XHINT4,		/* flags */
Xtr108,
XNULL,
X"Dead end.\n"
X},
X{ /* 109: */
XHINT4,		/* flags */
Xtr109,
XNULL,
X"Dead end.\n"
X},
X{ /* 110: */
XESCAPE,		/* flags */
Xtr110,
XNULL,
X"Dead end.\n"
X},
X{ /* 111: */
XHINT4,		/* flags */
Xtr111,
XNULL,
X"Dead end.\n"
X},
X{ /* 112: */
XHINT4,		/* flags */
Xtr112,
XNULL,
X"Dead end.\n"
X},
X{ /* 113: */
XHINT4,		/* flags */
Xtr113,
X"Dead end.\n",
X"Dead end.  A scrap of a work order has been left behind by the Crystal\n\
XCave Maintenance Engineer.  It reads:\n\
X     \"MOVE SILVER TO WEST OF THE MAZE ENTRANCE.\"\n"
X},
X{ /* 114: */
XHINT4,		/* flags */
Xtr114,
XNULL,
X"Dead end.\n"
X},
X{ /* 115: */
XHINT4,		/* flags */
Xtr115,
XNULL,
X"Dead end.\n"
X},
X{ /* 116: */
XHINT4,		/* flags */
Xtr116,
XNULL,
X"Dead end.\n"
X},
X{ /* 117: */
XHINT4,		/* flags */
Xtr117,
XNULL,
X"Dead end.\n"
X},
X{ /* 118: */
XHINT4,		/* flags */
Xtr118,
XNULL,
X"Dead end.\n"
X},
X{ /* 119: */
XHINT4,		/* flags */
Xtr119,
XNULL,
X"Dead end.\n"
X},
X{ /* 120: */
XESCAPE,		/* flags */
Xtr120,
X"You're at top of throne pit.\n",
X"You are in a small chamber beneath the throne.  There is a deep pit in\n\
Xthe floor.\n"
X},
X{ /* 121: */
XLIGHT,		/* flags */
Xtr121,
X"You're at bottom of throne pit.\n",
X"You are at the bottom of the throne pit.  Light enters through a passage\n\
Xto the east.\n"
X},
X{ /* 122: */
XLIGHT,		/* flags */
Xtr122,
X"You're at west side of garden.\n",
X"You are at the west side of a garden.  There is a murmuring sound to the\n\
Xsoutheast.\n"
X},
X{ /* 123: */
XLIGHT|C_WATER,		/* flags */
Xtr123,
X"You're at south side of garden.\n",
X"You are at the south side of a garden.  There is a sparkling pool of\n\
Xwater here, which overflows and flows northeast as a murmuring stream.\n"
X},
X{ /* 124: */
XLIGHT|C_WATER,		/* flags */
Xtr124,
X"You're at east side of garden.\n",
X"You are at the east side of a garden.  A murmuring stream enters from\n\
Xthe southeast, and exits through a passage to the east.\n"
X},
X{ /* 125: */
XLIGHT,		/* flags */
Xtr125,
X"You're at north side of garden.\n",
X"You are at the north side of a garden.  A murmuring sound can be heard,\n\
Xboth to the south, and to the southeast.  There is a doorway here.\n"
X},
X{ /* 126: */
XLIGHT,		/* flags */
Xtr126,
X"You're in the harem.\n",
X"You are in the harem which is, alas, empty.  The room has been decorated\n\with delicate silken hangings on the walls, except over the doorway to\n\
Xthe south.\n"
X},
X{ /* 127: */
XLIGHT|C_WATER,		/* flags */
Xtr127,
X"You're at junction of three corridors.\n",
X"You are at the junction of three corridors.  One corridor leads east.\n\
XA murmuring stream enters from the west, through a corridor with light at\n\
Xthe far end.  The stream exits to the north, and occasional shreds of\n\
Xmist drift from this corridor, whence can be heard a distant roar.\n"
X},
X{ /* 128: */
XC_WATER,		/* flags */
Xtr128,
X"You're in strongroom.\n",
X"You are in a strongroom, lined with empty shelves.  The only exit is to\n\
Xthe west.\n"
X},
X{ /* 129: */
XC_WATER,		/* flags */
Xtr129,
X"You're at edge of windshaft.\n",
X"You are at the edge of an immense shaft in the rock.  A murmuring stream\n\
Xenters from the east, flows over the edge, and is immediately whipped\n\
Xinto mist by a mighty wind rising up the shaft.\n"
X},
X{ /* 130: */
X0,		/* flags */
Xtr130,
X"You're halfway down the windshaft.\n",
X"You are halfway down the windshaft.  \"BANISH MISFORTUNE\" is scrawled\n\
Xalmost illegibly on the wall.  The wind blows strongly from below.\n"
X},
X{ /* 131: */
XESCAPE,		/* flags */
Xtr131,
X"You're at bottom of windshaft.\n",
X"You are at the bottom of the windshaft, which is filled with needle-\n\
Xsharp rocks.  There is a passage to the west although the air is still\n\
Xat the passage entrance.  There is no hint as to the origin of the wind.\n"
X},
X{ /* 132: */
X0,		/* flags */
Xtr132,
X"You're in smoky chamber.\n",
X"You are in an immense chamber, exiting to the east and west.  It is lit\n\
Xby flickering, smoky torches, each of which gives off a vile, greasy,\n\
Xblack smoke.  Indistinctly visible through the smoke, the walls are seen\n\
Xto be lined with galleries.\n"
X},
X{ /* 133: */
X0,		/* flags */
Xtr133,
X"You're at east edge of sulfurous sea.\n",
X"You are at the edge of a silent, sulfurous sea.  A passage lies to the\n\
Xeast.\n"
X},
X{ /* 134: */
XESCAPE|DROWN,		/* flags */
Xtr134,
X"You're in middle of sulfurous sea.\n",
X"You are surrounded by the silent, sulfurous sea, which fills the passage\n\
Xfrom side to side.  Beaches are faintly visible to the east and west.\n"
X},
X{ /* 135: */
X0,		/* flags */
Xtr135,
X"You're at west edge of sulfurous sea.\n",
X"You are at the edge of a silent, sulfurous sea.  A passage lies to the\n\
Xwest.\n"
X},
X{ /* 136: */
X0,		/* flags */
Xtr136,
X"You're at rune doorway.\n",
X"You are at the end of an immense passage.  In the north wall is a\n\
Xdoorway, framed by great ebony logs, and cleverly carved all over in\n\
Xexquisite runes.  To the west, a tiny passage continues.\n"
X},
X{ /* 137: */
X0,		/* flags */
Xtr137,
X"You're in Rune Room.\n",
X"This is the Rune Room.  It is also covered with exquisite runes,\n\
Xdelicately chased into the golden walls!\n"
X},
X{ /* 138: */
X0,		/* flags */
Xtr138,
X"You're at east side of fissure.\n",
X"You are in a colossal chamber at the east edge of a bottomless fissure.\n\
XA small tunnel leads east.  A spidery stone bridge leads over the fissure\n\
Xinto the darkness.\n"
X},
X{ /* 139: */
X0,		/* flags */
Xtr139,
X"You're at break in bridge.\n",
X"The bridge is broken here!  Above you, the other side of the break looms\n\
Xout of the darkness . . .  Or is it something else?\n"
X},
X{ /* 140: */
X0,		/* flags */
Xtr140,
X"You're at west side of fissure.\n",
X"You are at the west side of the broken bridge, which quickly leads down\n\
Xto the west side of the fissure, and thence to the west side of the\n\
Xcolossal chamber.  There seems to be a faint, ominous gleam at the bottom\n\
Xof the fissure.  Below you, on the side of the fissure, you can see a\n\
Xsmall ledge.  You can get down to it, but you cannot see a way to get\n\
Xback up.\n"
X},
X{ /* 141: */
XESCAPE,		/* flags */
Xtr141,
X"You're on anchor ledge.\n",
X"You are stuck on a ledge on the west side of the fissure.  You cannot go\n\
Xup.  A strand of Grendl's web, leading downward, is attached here.\n"
X},
X{ /* 142: */
XESCAPE,		/* flags */
Xtr142,
X"You're on high, lonely ledge.\n",
X"You are on a high, lonely ledge on the side of the fissure.  Grendl's\n\
Xstrand passes here and continues.\n"
X},
X{ /* 143: */
XESCAPE,		/* flags */
Xtr143,
X"You're on lonely, high ledge.\n",
X"You are on a lonely high ledge on the side of the fissure.  Grendl's\n\
Xstrand passes here and continues.\n"
X},
X{ /* 144: */
XESCAPE,		/* flags */
Xtr144,
X"You're at end of strand.\n",
X"You are hanging at the end of Grendl's strand.  You cannot see any\n\
Xdetails of the murky gloom below you.\n"
X},
X{ /* 145: */
XLIGHT,		/* flags */
Xtr145,
X"You're on top of idol.\n",
X"You are at the top of the idol!  You still cannot see over the walls\n\
Xsurrounding you.\n"
X},
X{ /* 146: */
XLIGHT,		/* flags */
Xtr146,
X"You're at east side of arena.\n",
X"You are at the east side of an immense, high-walled arena.  The center\n\
Xof the arena is occupied by a colossal jade idol, facing you.  In the\n\
Xeast wall, behind you, is a door.\n"
X},
X{ /* 147: */
XLIGHT,		/* flags */
Xtr147,
X"You're at south side of arena.\n",
X"You are at the south side of an immense, high-walled arena.  The center\n\
Xof the arena is occupied by a colossal jade idol.  In the south wall,\n\
Xbehind you, is a door.\n"
X},
X{ /* 148: */
XLIGHT,		/* flags */
Xtr148,
X"You're at west side of arena.\n",
X"You are at the west side of an immense, high-walled arena.  The center\n\
Xof the arena is occupied by a colossal jade idol, whose back is toward\n\
Xyou.  In the west wall, behind you, is a door.\n"
X},
X{ /* 149: */
XLIGHT,		/* flags */
Xtr149,
X"You're at north side of arena.\n",
X"You are at the north side of an immense, high-walled arena.  The center\n\
Xof the arena is occupied by a colossal jade idol.  In the north wall,\n\
Xbehind you, is a door.\n"
X},
X{ /* 150: */
XLIGHT,		/* flags */
Xtr150,
X"You're in repository.\n",
X"You are in the repository, where all of the implements and paraphernalia\n\
Xof the cave expedition are stored!  The only exit is to the west.\n"
X},
X{ /* 151: the last location, flagged by null travel pointer */
X0,
XNULL,			/* THE END-FLAG */
XNULL,
XNULL
X}
X};
X
Xint maxloc = 150 ;
Xvoid checkloc()
X{	register struct cvloc *place;
X
X	for (place=cvloc; place->ldesc != NULL; place++) {
X		if (place->sdesc != NULL) encode(place->sdesc);
X		encode(place->ldesc);
X	}
X
X	return;
X}
END_OF_cvlocs.c
if test 44859 -ne `wc -c <cvlocs.c`; then
    echo shar: \"cvlocs.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f cvspk.c -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"cvspk.c\"
else
echo shar: Extracting \"cvspk.c\" \(4709 characters\)
sed "s/^X//" >cvspk.c <<'END_OF_cvspk.c'
X/* cvspk.c
X *************************************************************************/
X
X#include	<stdio.h>
X#include	<string.h>
X#include	<ctype.h>
X
X#include	"cvmsg.h"
X#include	"cvobj.h"
X#include	"cvlocs.h"
X#include	"cvocab.h"
X
X#define	TRUE	(1)
X#define	FALSE	(0)
X
Xextern struct hint hints[];
Xextern struct cvocab vtab[];
Xextern char *rmsg[] ;
Xextern char *mmsg[] ;
Xextern struct cmsg ctext[] ;
Xextern int blklin, mltcmd, samvrb ;
X
Xextern void bug();
Xextern void exit();
X
Xchar code[] = { 'B'|0x80, 'a'|0x80, 'r'|0x80, 'n'|0x80};
X
Xvoid
Xencode(msg) register char *msg;
X{	register int i;
X	for (i=0; msg[i]; i++) {
X		msg[i] ^= code[i & 3];
X	}
X}
X
Xvoid
Xputcode(msg) register char *msg;
X{	register int i;
X	register char c;
X	if (*msg & 0x80) {
X		for (i=0; c=msg[i]; i++) {
X			putchar(c ^ (code[i & 3]));
X		}
X	} else {
X		(void) fputs(msg,stdout);
X	}
X}
X
Xvoid
Xrspeak(num) register int num;
X{	register char *msg ;
X	msg = rmsg[num] ;
X	if (num == 54) blklin = FALSE ;
X	if (*msg == '*') {
X		++msg ;
X		mltcmd = FALSE ;
X	}
X	putcode(msg);
X}
X
Xvoid
Xmspeak(num) register int num;
X{	(void) fputs(mmsg[num],stdout);
X}
X
Xvoid
Xpspeak(obj,prop)
X	register struct cvobj *obj;
X	register int prop;
X{	register char *msg;
X	register int i;
X
X	msg = obj->props;
X	for (i=0; i<prop; ++i) {
X		while (*(msg++)) {;}
X	}
X
X	putcode(msg);
X}
X
X
Xint
Xyes(quest,agree,refuse) register int quest, agree, refuse;
X{
X	auto char answer[8] ;
X	int i;
X	
X	for (;;)
X	{
X		if (quest) rspeak(quest);
X		if (fgets(answer,6,stdin) == NULL) { *answer = '\0'; }
X		if (!strlen(answer) || answer[strlen(answer)-1] != '\n') {
X			while (getchar() != '\n')
X				;
X			answer[0] = '\n'; /* these are error cases */
X		}
X			
X		for (i=0;i<5;++i) {
X			if (answer[i] == '\n') {answer[i] = '\0'; break;}
X			else answer[i] = tolower(answer[i]);
X		}
X		if (!strcmp("y",answer) || !strcmp("yes",answer))
X		{	if (agree) rspeak(agree);
X			return(TRUE);
X		}
X	
X		if (!strcmp("no",answer) || !strcmp("n",answer))
X		{	if (refuse) rspeak(refuse);
X			return(FALSE);
X		}
X	
X		(void) fputs("\nPlease answer the question.\n",stdout);
X	}
X}
X
Xstatic char cchar = '\0';
Xstatic char *tmpchr;
X
X/* routine to get the character pointed-to by tmpchr.
X * result to cchar
X * and mltcmd turned off if space-comma or space-period.
X */
Xstatic void
Xgchar()
X{	static char lchar;
X	lchar = cchar;
X	cchar = *(tmpchr++) ;
X	if ((lchar == ' ')
X		&& ((cchar == '.') || (cchar == ','))
X		)
X	{	mltcmd = FALSE ;
X		cchar = '\0' ;
X	}
X}
X
X/* gather a word, put terminator in cchar. */
Xstatic char *
Xgather()
X{	register char *r;
X
X	do {gchar();} while (cchar == ' ') ;
X	if ((cchar == '\0') || (cchar == '.') || (cchar == ',')) return (NULL) ;
X	r = tmpchr;
X
X	for (;;)
X	{	gchar();
X		if ((cchar == '\0')
X			||(cchar == '.')
X			||(cchar == ',')
X			||(cchar == ' ') )
X		{	*(tmpchr-1) = '\0' ;
X			return(--r);
X		}
X	}
X}
X
Xvoid
Xgetin()
X{	extern char *word1, *word2;
X
X	static char ca1[81], ca2[81];
X
X	register char *cp2, *cp1;
X
X	for (;;mltcmd = FALSE)
X	{	word1 = word2 = NULL ;
X		if (mltcmd) {
X			if ((cchar != '.') && (cchar != ',')) continue ;
X			samvrb = (cchar == ',') ;
X		} else {
X			if (blklin) fputs("\n",stdout);
X			if (fgets(ca1,81,stdin) == NULL)
X			{	fputs("\nBut, but, ... okay, goodbye.\n",stdout);
X				exit(1);
X			}
X			for (cp1=ca1; *cp1 != '\0'; ++cp1)
X				*cp1 = (char) tolower((int)*cp1) ;
X			if (*(cp1-1) != '\n')
X			{	puts("\nThat input was too long... no more than 80\
X characters, please!");
X				while (getchar() !='\n')
X					;
X				continue; /* this will get us a new input */
X			}
X			*(cp1-1) = '\0' ; /* alter the final newline */
X			mltcmd = TRUE ;
X			if ( strcmp(ca1,"again")
X				&& strcmp(ca1,"repeat")
X				&& strcmp(ca1,"ditto")
X				&& strcmp(ca1,"\"")
X				&& strcmp(ca1,"''") )
X			{	cp1=ca1, cp2=ca2;	/* set to preserve new command */
X			} else {
X				cp1=ca2, cp2=ca1;	/* set to repeat old command */
X			}
X			while ((*(cp2++) = *(cp1++)) != '\0');	/* end AFTER the null */
X			tmpchr = ca1 ;
X			samvrb = FALSE ;
X		}
X/* now have the input in 'ca1' */
X/* and tmpchr points to the next char to see */
X	
X		if ((word1 = gather()) == NULL) continue ;
X		if (cchar == ' ') word2 = gather();
X		return ;
X	} /* end of for (implied mltcmd = FALSE) */
X}
X
Xint
Xvocab(word,sect) register char *word;
X	int sect;
X{	register int matched = 0, len;
X	register struct cvocab *curv = vtab, *likely = NULL ;
X
X	len = strlen(word);
X
X	if (sect >= 0)
X	{	for ( ; curv->cvcode != 0; ++curv)
X		{	if (curv->cvcode / 1000 == sect) break ;
X		}
X	}
X
X	for ( ; curv->cvcode != 0; ++curv)
X	{	if ((sect >= 0) && ((curv->cvcode / 1000) > sect)) break ;
X		;
X		if (!strncmp(word, curv->cvword, len))
X		{	++matched;
X			likely = curv ;
X			if (strlen(curv->cvword) == len) return(curv->cvcode) ;
X		}
X	}
X
X	if (matched == 1) return(likely->cvcode) ;
X	else return(-1);
X}
END_OF_cvspk.c
if test 4709 -ne `wc -c <cvspk.c`; then
    echo shar: \"cvspk.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f shlib.head -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"shlib.head\"
else
echo shar: Extracting \"shlib.head\" \(319 characters\)
sed "s/^X//" >shlib.head <<'END_OF_shlib.head'
X/*
X *   shlib.ifile for UNIX PC Crystal
X */
X
XMEMORY {
X	user_mem : origin = 0x80000 , length = 0x37ff000
X}
X
XSECTIONS {
X	.text 0x80000 BLOCK(1024) : {}
X	GROUP ALIGN(65536) BLOCK(1024) : {
X		.data : {datastart = .;
X				cvmain.o (.data,.bss), 
X				emain = .;
X				}
X		.bss  : {bssstart = .;}
X		.lib  :	{libstart = .;}
X	}
X}
X
END_OF_shlib.head
if test 319 -ne `wc -c <shlib.head`; then
    echo shar: \"shlib.head\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: End of archive 1 \(of 5\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 2 3 4 5 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 5 archives.
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0