[comp.sources.amiga] v89i011: world - text adventure, Part04/07

page@swan.ulowell.edu (Bob Page) (02/02/89)

Submitted-by: ejkst@unix.cis.pittsburgh.edu (Eric J. Kennedy)
Posting-number: Volume 89, Issue 11
Archive-name: fun/world.4

#	This is a shell archive.
#	Remove everything above and including the cut line.
#	Then run the rest of the file through sh.
#----cut here-----cut here-----cut here-----cut here----#
#!/bin/sh
# shar:    Shell Archiver
#	Run the following text with /bin/sh to create:
#	parser.c
#	vtext.dat.ac
# This archive created: Mon Jan 30 18:06:39 1989
cat << \SHAR_EOF > parser.c
#include "parame.inc"
#include "variab.h"
#include "arrays.h"
#include "vocab.inc"
#include "verbtb.inc"
#define abs(A) ((A < 0) ? -A : A)

/* World C Version 1.00 copyright 1987 J.D.McDonald 
   Use as you like for non-commercial purposes, but please
   leave this note, and document any changes you make as yours */

/* No apologies for all the goto's. If you can get rid of them, well,
   I guess some persons are just naturally masochists */

static int      typlst[4] = {VRBMIN, ADJMIN, NUNMIN, PRPMIN};
static int      index[5], indx;

scan()
/*
 * this function scans the input line for gross syntax errors it also expands
 * special direction commands such as "ne" into their full form. it also
 * works on adverbs, removes such expressions as "ask frog," etc. finally it
 * puts the word numbers and types in the wrdnum and wrdtyp arrays the input
 * is inbuf ,the output is wrdnum,wrdtyp,actor,adverb 
 *
 */
{
    int             result, offlg, askx, lptr0, wptr, i, lxx, errno;

    result = 0;
    offlg = 0;
    chgact = 0;
    askx = 0;

lab5:
    adverb = 0;
    for (i = 0; i < 30; i++) {
	wrdnum[i] = 0;
	wrdtyp[i] = 0;
    }
    /*
     * wordtyp is -1 for a period,-2 comma 1 for adverb,2 verb,3 adjective,4
     * noun,5 preposition numbers are type 4,and wrdnum=number+10000 
     */

    wptr = 0;
lab10:
    lptr0 = lptr;
    wscan();
    /*
     * on return from wscan punct contains: 0 for a word 1 for a period 2 for
     * a comma 3 for a number 4 if an illegal character 5 if a number follows
     * a letter directly 6 if a letter follows a number directly 
     */

    if (punct == 1)
	return (result);
    else if (punct == 4)
	goto lab9000;
    else if (punct == 2)
	goto lab9010;
    else if (punct == 3)
	goto lab9019;
    else if (punct == 5)
	goto lab9020;
    else if (punct == 6)
	goto lab9140;
    else;
    /* it's a real word, so find out what it is */

    find(VOCMAX);

    /* discard buzzword  */

    if (indx > 0 && indx <= BUZMAX)
	goto lab10;
    if (indx == 0)
	goto lab9040;

    if ((indx >= NORTH && indx <= NORTHW) || indx == UP
	|| indx == DOWN) {
	/* yes,it's a special word  */

	lptr0 = lptr;
	wscan();
	/* check if it's all that's on the line  */

	if (punct != 1)
	    goto lab9030;
	/* expand a direction word into full form */

	wrdtyp[1] = 4;
	wrdnum[1] = indx;
	wrdnum[0] = GO;
	wrdtyp[0] = 2;
	wrdtyp[2] = -1;
	goto lab9999;
    }
    if (index[0] != 0) {
	if (adverb != 0)
	    goto lab9070;
	/* adverbs are removed from the wrdtyp list and handled separately */

	adverb = index[0];
	if (adverb != WHERE && adverb != WHAT)
	    goto lab10;
	if (actor == 1 || askx != ASK)
	    goto lab9130;
	goto lab10;
    }
    if (index[1] == 0)
	goto lab9050;
    wrdtyp[wptr] = 2;
    wrdnum[wptr] = index[1];
    /*
     * we've found the verb check for legal question  
     */

    if ((adverb == WHAT || adverb == WHERE) - (wrdnum[0] == IS))
	goto lab9130;
    if (wrdnum[0] == YELL) {
	/* the player is told to use "ask" or "tell" */

lab131:
	wscan();
	if (punct != 1)
	    goto lab131;
	wrdtyp[0] = 2;
	wrdnum[0] = YELL;
	result = 1;
	return (result);
    }
    if (wrdnum[0] < SHIT)
	goto lab200;
    /*
     * special handling for words which take no objects or modifiers they
     * should be alone on a line. they are verbs >= shit  
     */

    lptr0 = lptr;
    wscan();
    {
	if (punct == 1)
	    goto lab9998;
	else if (punct == 5)
	    goto lab9120;
	else
	    goto lab9150;
    }
    /* inner loop for all words after verb  */

lab200:
    wptr += 1;
    if (wptr > 27)
	goto lab9180;

lab201:
    lptr0 = lptr;
    wscan();
    if (punct != 0)
	goto lab210;
    find(BUZMAX);
    /* special code for "noun1 of noun2" construct  */

    if (indx == 4 && wrdtyp[wptr - 1] == 4)
	offlg = 1;
    if (indx != 0)
	goto lab201;
    goto lab215;
lab210:
    if (punct == 4)
	goto lab9000;
    if (punct == 5)
	goto lab9020;
    if (punct == 6)
	goto lab9140;
    if (punct != 2)
	goto lab215;
    if (wrdtyp[wptr - 1] != 4)
	goto lab9010;
    wrdtyp[wptr] = -2;
    goto lab200;

lab215:
    if (wrdtyp[wptr - 1] != 2 || (wrdnum[wptr - 1] != ASK
				  && wrdnum[wptr - 1] != TELL))
	goto lab220;
    if (punct == 3)
	goto lab9019;
    if (punct != 0)
	goto lab9010;
    if (actor != 1)
	goto lab9100;
    /*
     * this code is to set up addressing a second "person" the phrases "ask
     * frog" or "tell frog" etc are discarded and the variable "actor" tells
     * us who is addressed  
     */

    askx = wrdnum[wptr - 1];
    find(VOCMAX);
    if ((index[3] != 0) &&
	(index[3] < ROBOT || index[3] > FERRET))
	goto lab9090;
    if (index[3] == 0)
	goto lab9160;
    actor = index[3];
    lptr0 = lptr;
    chgact = 1;
    wscan();
    if (punct != 2)
	goto lab9110;
    goto lab5;
    /* code for numbers inputted in a statement */

lab220:
    if (punct != 3)
	goto lab240;
    wrdtyp[wptr] = 4;
    wrdnum[wptr] = three[0] + 10000;
    goto lab200;
    /* all regular words go here */

lab240:

    if (punct != 1)
	goto lab250;
    wrdtyp[wptr] = -1;
    goto lab9999;
lab250:
    find(VOCMAX);
    if (indx == 0)
	goto lab9040;
    /* special code for "of" handler */

    if (offlg) {
	offlg = 0;
	if (index[3] != 0 && wrdtyp[wptr - 2] != 3) {
	    /* exchange two nouns and tell parser the first is an adjective */

	    wrdtyp[wptr] = wrdtyp[wptr - 1];
	    wrdnum[wptr] = wrdnum[wptr - 1];
	    wrdtyp[wptr - 1] = 3;
	    wrdnum[wptr - 1] = index[3];
	    if (wrdnum[wptr] == PHOTOG && wrdnum[wptr - 1] == FERRET) {
		wrdnum[wptr - 1] = FAMILY;
            }
            goto lab200;
        }
	else
            goto lab9200;
    }
    if (indx != AND)
	goto lab270;
    if (wrdtyp[wptr - 1] == -2)
	goto lab201;
    if (wrdtyp[wptr - 1] != 4)
	goto lab9120;
    wrdtyp[wptr] = -2;
    goto lab200;
lab270:
    if (index[1] != 0 && index[0] == 0 && index[2] == 0
	&& index[3] == 0 && index[4] == 0)
	goto lab9080;
    if (index[0] == 0)
	goto lab280;
    if (adverb != 0)
	goto lab9070;
    adverb = indx;
    if (adverb == WHERE || adverb == WHAT)
	goto lab9130;
    goto lab201;
    /* at this point the word must be an adjectine, noun or preposition */

lab280:
    if (wrdtyp[wptr - 1] == 3 && index[2] != 0)
	goto lab9170;
    if (index[2] != 0) {
	wrdtyp[wptr] = 3;
	wrdnum[wptr] = index[2];
    } else if (index[3] != 0) {
	wrdtyp[wptr] = 4;
	wrdnum[wptr] = index[3];
    } else {
	wrdtyp[wptr] = 5;
	wrdnum[wptr] = index[4];
    }
    if ((wrdtyp[wptr] == 4 && wrdtyp[wptr - 1] == 3) &&
	wrdnum[wptr] < SAPPHI)
	goto lab9190;
    goto lab200;


    /***********       error processing  */

lab9000:
    lxx = lptr;
    errno = 1;
    goto lab9900;
lab9010:
    lxx = lptr;
    errno = 2;
    goto lab9900;
lab9019:
    lptr -= 1;
lab9020:
    lptr += 1;
    lxx = lptr;
    errno = 3;
    goto lab9900;
lab9030:
    lxx = lptr;
    errno = 4;
    goto lab9900;
lab9040:
    lxx = lptr;
    errno = 5;
    goto lab9900;
lab9050:
    lxx = lptr;
    errno = 6;
    goto lab9900;
lab9070:
    lxx = lptr;
    errno = 8;
    goto lab9900;
lab9080:
    lxx = lptr;
    errno = 9;
    goto lab9900;
lab9090:
    lxx = 0;
    errno = 10;
    goto lab9900;
lab9100:
    lxx = 0;
    errno = 11;
    goto lab9900;
lab9110:
    lxx = lptr0 + 1;
    errno = 12;
    goto lab9900;
lab9120:
    lxx = lptr;
    errno = 13;
    goto lab9900;
lab9130:
    lxx = 0;
    errno = 14;
    goto lab9900;
lab9140:
    lxx = lptr;
    errno = 15;
    goto lab9900;
lab9150:
    lxx = lptr0;
    errno = 16;
    goto lab9900;
lab9160:
    lxx = 0;
    errno = 17;
    goto lab9900;
lab9170:
    lxx = lptr;
    errno = 18;
    goto lab9900;
lab9180:
    lxx = 0;
    errno = 25;
    goto lab9900;
lab9190:
    lxx = lptr;
    errno = 107;
    goto lab9900;
lab9200:
    lxx = lptr;
    errno = 112;
lab9900:
    carerr(lxx, errno);
    return (result);
lab9998:
    wrdtyp[1] = -1;
lab9999:
    if ((askx == TELL && (adverb == WHERE || adverb == WHAT))
	|| (askx == ASK && (adverb != WHERE && adverb != WHAT)))
	goto lab9130;
    if (adverb == WHERE || adverb == WHAT)
	dotflg = 1;
    result = 1;
    return (result);

}

wscan()
/*
 * this routine reads the input ascii code and scans for punctuation or
 * numbers and then converts the first 9 letters of a word to three integer*2
 * words of radix 32 form  
 */

{
    char            m;
    static int      pow32[] = {1, 32, 1024, 32768};
    int             plcpnt, wpnt, kchar;

    if (dotflg) {
	actor = 1;
	dotflg = 0;
    }
    plcpnt = 1;
    punct = 0;
    wpnt = 1;
    three[0] = 0;
    three[1] = 0;
    three[2] = 0;
    while (inbuf[lptr] == ' ')
	lptr++;
    /*
     * punct =1 is period, 2 is comma, 3 is number,4 is illegal character and
     * 5 means a number directly follows a word 6 means letter follows a
     * number 
     */

    if (inbuf[lptr] == '.' || inbuf[lptr] == '?') {
	dotflg = 1;
	punct = 1;
	lptr += 1;
	return (0);
    }
    if (inbuf[lptr] == ',') {
	punct = 2;
	lptr += 1;
	return (0);
    }
    while (inbuf[lptr] >= '0' && inbuf[lptr] <= '9') {
	/* number handling */

	punct = 3;
	if (three[0] < 3200)
	    three[0] = three[0] * 10 + inbuf[lptr] - '0';
	lptr += 1;
    }
    if (punct == 3 && (inbuf[lptr] != '.' &&
		       inbuf[lptr] != ',' && inbuf[lptr] != '?' &&
		       inbuf[lptr] != ' '))
	punct = 6;
    if (punct == 3 || punct == 6)
	return (0);
    do {
	if (!((inbuf[lptr] >= 'a' && inbuf[lptr] <= 'z') ||
	      (inbuf[lptr] >= 'A' && inbuf[lptr] <= 'Z'))) {
	    lptr += 1;
	    punct = 4;
	    return (0);
	    /* the actual letter packing is done here  */

	}
	kchar = inbuf[lptr];
	if (kchar >= 'a' && kchar <= 'z')
	    kchar -= ' ';
	if (wpnt < 4)
	    three[wpnt - 1] = three[wpnt - 1] +
                                (kchar - '@') * pow32[3 - plcpnt];
	plcpnt += 1;
	if (plcpnt >= 4) {
	    wpnt += 1;
	    plcpnt = 1;
	}
	lptr += 1;
	m = inbuf[lptr];
	if (m == ' ' || m == ',' || m == '.' || m == '?') {
	    if (three[0] != 20741 || three[1] != 14336 ||
		three[2] != 0)
		return (0);
	    punct = 1;
	    return (0);
	}
    }
    while (m < '0' || m > '9');
    punct = 5;
    return (0);
}


find(m)
    int             m;
{
    /*
     * this routine searches a vocabulary to find a word. index, on output,
     * gives the position of the word in the list. synonyms do not increment
     * the counter, so index*3-2 is **not** the actual pointer to the word in
     * the list 
     */

    int             i, t, k, type;

    for (i = 0; i < 5; i++)
	index[i] = 0;
    t = 0;
    indx = 0;

    for (i = 1; i <= m * 3 - 2; i += 3) {
	if (vocab[i] > 0)
	    indx += 1;
	if (abs(vocab[i]) != three[0])
	    continue;
	if (vocab[i + 1] != three[1])
	    continue;
	if (vocab[i + 2] == three[2]) {
	    t = indx;
	    type = 1;
	    for (k = 1; k <= 4; k++)
		if (indx >= typlst[k - 1])
		    type = type + 1;
	    index[type - 1] = indx;
	}
    }
    indx = t;
}

lbit(arg, pow)
    int             arg, pow;
{
    return ((arg & (1 << pow)) != 0);
}

parse()
{
    /*
     * subroutine parse this mess deciphers the various direct and indirect
     * (i.e. second, usually, but in 'give frog cup' the frog is the i.o.)
     * objects. it associates them with their respective adjectives (dobjs(i)
     * and doadjs(i) correspond) butflg is set if the "all but" construct is
     * encountered allflg is set if the "all" construct is enconntered the
     * d.o. and i.o prepositions are put in prepdo and prepio 
     */

    int             result, wptr, thevrb, vrbind, vdo, vio, vobj, i;
    int             frstaj, frstnn, errno, tprp;
    result = 0;
    thevrb = wrdnum[0];
    vrbind = thevrb - VRBMIN + 1;

    vdo = 0;
    vio = 0;
    vobj = 0;
    if (thevrb < SHIT) {
	vdo = vrbpdo[vrbind];
	vio = vrbpio[vrbind];
	vobj = vrbobj[vrbind];
    }
    butflg = 0;
    allflg = 0;
    numdo = 0;
    prepdo = 0;
    prepio = 0;
    iobj = 0;
    ioadj = 0;
    for (i = 0; i < 12; i++) {
	dobjs[i] = 0;
	doadjs[i] = 0;
    }
    /* this block is a test for "sit down" or "get up" or "look up" etc */

    if (((lbit(vobj, 1) && wrdnum[1] == DOWN) ||
	 (lbit(vobj, 2) && wrdnum[1] == UP)) && wrdtyp[2] == -1) {
	prepdo = wrdnum[1];
	result = 1;
	goto finalout;
    }
    /* yell allows anything after it */

    if (thevrb == YELL)
	goto testout;
    wptr = 1;
    frstaj = 0;
    frstnn = 0;
    /* a preposition immediately follows verb */

    if (wrdtyp[wptr] == 5) {
	prepdo = wrdnum[wptr];
	if (prepdo == BUT) {
	    errno = 21;
	    goto errorout;
	}
	if (!lbit(vdo, (prepdo - PRPMIN))) {
	    errno = 21;
	    goto errorout;
	}
	wptr += 1;
    }
    /*
     * adjective follows verb *** special case of "terran" and "cygnan" as
     * nouns 
     */

    if (wrdtyp[wptr] == 3) {
	if ((wrdnum[wptr] == TERRAN || wrdnum[wptr] == CYGNAN)
	    && wrdnum[0] == TRANSL)
	    wrdtyp[wptr] = 4;
	else {
	    frstaj = wrdnum[wptr];
	    doadjs[0] = frstaj;
	    wptr += 1;
	}
    }
    /* this takes care of the case of a verb alone on a line */

    if (wrdtyp[wptr] != 4) {
	if (wrdtyp[wptr] != -1) {
	    errno = 28;
	    goto errorout;
	} else {
	    {
		if (thevrb >= SHIT) {
		    result = 1;
		    goto finalout;
		}
		if (!lbit(vobj, 7)) {
		    result = 1;
		    goto finalout;
		}
	    }
	    errno = 27;
	    goto errorout;
	}
    }
    frstnn = wrdnum[wptr];
    /* look at first set of objects (not always d.o.) */

    dobjs[0] = frstnn;
    numdo += 1;
    if (numdo == 9) {
	errno = 25;
	goto errorout;
    }
    wptr += 1;


    /* the following takes care of multiple objects */

    if (frstnn == ALL) {
	if (!lbit(vobj, 5)) {
	    errno = 22;
	    goto errorout;
	}
	if (frstaj != 0) {
	    errno = 26;
	    goto errorout;
	}
	allflg = 1;
	if (wrdnum[wptr] == BUT) {
	    butflg = 1;
	    /* check for adjective before noun */

	    if (!(wrdtyp[wptr + 1] == 4 || (wrdtyp[wptr + 1] == 3
					    && wrdtyp[wptr + 2] == 4))) {
		errno = 23;
		goto errorout;
	    }
	    wptr += 1;
	}
    }
    if (butflg || (wrdtyp[wptr] == -2)) {
	if (!lbit(vobj, 5)) {
	    errno = 22;
	    goto errorout;
	}
	mulobj(&wptr);
	if (numdo > 9) {
	    errno = 25;
	    goto errorout;
	}
    }
    /********** end multiple obj processor  */


    if (wrdtyp[wptr] == -1)
	goto testout;

    /* if the verb is "is" we may have a final adjective  */

    if (thevrb == IS && wrdtyp[wptr] == 3) {
	doadjs[1] = wrdnum[wptr];
	if (wrdtyp[wptr + 1] == -1)
	    goto testout;
	errno = 20;
	goto errorout;
    }
    /*
     * if the next word is a noun or adjective, and verb is not "is" we have
     * a non-prep indirect object such as the frog in "give frog water" 
     */

    if (wrdtyp[wptr] == 4 || (wrdtyp[wptr] == 3 && wrdtyp[wptr + 1]
			      == 4)) {
	if (numdo > 1 || prepdo != 0) {
	    errno = 22;
	    goto errorout;
	}
	if (!lbit(vobj, 3)) {
	    errno = 24;
	    goto errorout;
	}
	prepio = TO;
	ioadj = frstaj;
	iobj = frstnn;
	doadjs[0] = 0;
	if (wrdtyp[wptr] == 3) {
	    doadjs[0] = wrdnum[wptr];
	    wptr += 1;
	}
	dobjs[0] = wrdnum[wptr];
	numdo = 1;
	wptr += 1;
	/****** repeat the multiple obj processor */

	if (dobjs[0] == ALL) {
	    if (!lbit(vobj, 5)) {
		errno = 22;
		goto errorout;
	    }
	    if (doadjs[0] != 0) {
		errno = 26;
		goto errorout;
	    }
	    allflg = 1;
	    if (wrdtyp[wptr] == 5 && wrdnum[wptr] == BUT) {
		butflg = 1;
		if (!(wrdtyp[wptr + 1] == 4 || (wrdtyp[wptr + 1] == 3
						&& wrdtyp[wptr + 2] == 4))) {
		    errno = 23;
		    goto errorout;
		}
	    }
	}
	if (butflg || wrdtyp[wptr] == -2) {
	    if (!lbit(vobj, 5)) {
		errno = 22;
		goto errorout;
	    }
	    mulobj(&wptr);
	    if (numdo > 9) {
		errno = 25;
		goto errorout;
	    }
	}
	/***** end multiple object processor */

	if (wrdtyp[wptr] != -1) {
	    errno = 20;
	    goto errorout;
	}
	goto testout;
    }
    /* the only thing left that is legal is a perpositional construct */

    if (wrdtyp[wptr] != 5 || wrdnum[wptr] == BUT || (
			wrdtyp[wptr + 1] == 5 && wrdnum[wptr + 1] == BUT)) {
	errno = 20;
	goto errorout;
    }
    tprp = wrdnum[wptr];
    wptr += 1;
    /*
     * check for end of line or two preps in a row (e.g. fill the bottle up
     * with water) 
     */

    if (wrdtyp[wptr] == -1 || wrdtyp[wptr] == 5) {
	if (prepdo != 0 || (!lbit(vdo, (tprp - PRPMIN)))
	    || (!lbit(vobj, 0))) {
	    errno = 20;
	    goto errorout;
	}
	prepdo = tprp;
	if (wrdtyp[wptr] == -1)
	    goto testout;
	wptr += 1;
    }
    if (!lbit(vio, (wrdnum[wptr - 1] - PRPMIN))) {
	errno = 20;
	goto errorout;
    }
    prepio = wrdnum[wptr - 1];
    if (wrdtyp[wptr] == 3) {
	ioadj = wrdnum[wptr];
	wptr += 1;
    }
    if (wrdtyp[wptr] != 4) {
	errno = 20;
	goto errorout;
    }
    iobj = wrdnum[wptr];
    wptr += 1;
    if (wrdtyp[wptr] != -1) {
	errno = 20;
	goto errorout;
    }
testout:
    if ((dobjs[0] == 0 && lbit(vobj, 7)) || (iobj == 0 &&
					     lbit(vobj, 6))) {
	errno = 20;
	goto errorout;
    }
    if (!lbit(vobj, 4) && dobjs[0] != 0 && prepdo == 0) {
	errno = 19;
	goto errorout;
    }
    result = 1;
finalout:

    if (wrdnum[0] == AGAIN) {
	for (i = 0; i < 12; i++) {
	    doadjs[i] = zadjs[i];
	    dobjs[i] = zobjs[i];
	}
	ioadj = ziadj;
	iobj = ziobj;
	prepdo = zpdo;
	prepio = zpio;
	actor = zactor;
	adverb = zadvrb;
	wrdnum[0] = zverb;
	numdo = znumb;
	allflg = zall;
	butflg = zbut;
    } else {
	for (i = 0; i < 12; i++) {
	    zadjs[i] = doadjs[i];
	    zobjs[i] = dobjs[i];
	}
	ziadj = ioadj;
	ziobj = iobj;
	zpdo = prepdo;
	zpio = prepio;
	zactor = actor;
	zadvrb = adverb;
	zverb = wrdnum[0];
	zall = allflg;
	zbut = butflg;
    }
    return (result);
errorout:
    carerr(0, errno);
    return (result);
}

mulobj(wptr)
    int            *wptr;
{
    /****   multiple opject subroutine from "parse" */

    while (1) {
	if (wrdtyp[*wptr] == 3) {
	    doadjs[numdo] = wrdnum[*wptr];
	    *wptr += 1;
	}
	if (wrdtyp[*wptr] == 4) {
	    numdo += 1;
	    if (numdo > 10)
		return (1);
	    dobjs[numdo - 1] = wrdnum[*wptr];
	    *wptr += 1;
	    if (wrdtyp[*wptr] != -2)
		return (1);
	}
	*wptr += 1;
    }
}
SHAR_EOF
cat << \SHAR_EOF > vtext.dat.ac
2001    Steep trail
2002    Near top of the pass
2003    Top of the pass
2004    Branch in the trail
2005    East shore of the lake
2006    Gravel beach
2007    Forest
2008    Forest
2009    Forest
2010    Forest
2011    Forest
2012    Base of the spire
2013    Halfway up the spire
2014    Top of the spire
2015    Sandy beach
2016    Swimming at the coral beds
2017    North end of the lake
2018    Vein of minerals
2019    Southwest of a chasm
2020    Step-like rock strata
2021    Northeast of the chasm
2022    Bottom of a chasm
2023    Fern-filled ravine
2024    Beautiful waterfall
2025    Behind some horsetails
2026    Southwest of the Mars-like area
2027    Red rocks
2028    Red hill
2029    West of a deep bowl 
2030    North of a small building
2031    Southwest of a deep bowl
2032    Southwest lip of the bowl
2033    South lip of the bowl
2034    Southeast lip of the bowl
2035    Northeast lip of the bowl
2036    North lip of the bowl
2037    Northwest lip of the bowl
2038    Center of the bowl
2039    South to west trail
2040    Dump
2041    Door leading into the ground
2042    Inside a small building
2043    West edge of town
2044    East edge of town
2045    South of town
2046    North-southwest trail
2047    South of a large building
2048    Bottom of a tower
2049    Top of the tower
2050    South of the Mars-jungle boundary
2051    Inside large Martian building
2052    Center of a ledge
2053    East end of the ledge
2054    West end of the ledge
2055    Precarious position
2056    Under an overhang
2057    West end of a ravine
2058    Northwest-southeast ridge
2059    Northeast-southwest path
2060    Leaf covered clearing
2061    Stone monument
2062    Forest, jungle, and green-air junction 
2063    Open field
2064    Muddy jungle
2065    Jungle with rubbery trees
2066    Up a rubber tree
2067    Jungle path
2068    West of greenhouse
2069    Antenna site
2070    Greenhouse north
2071    Greenhouse center
2072    Greenhouse south
2073    Vegetable garden
2074    Fruit garden
2075    Top of spiral ramp
2076    Center of aviary roof
2077    Half way up ramp
2078    Aviary entrance
2079    Aviary center
2080    Half way up pole
2081    East of greenhouse
2082    Cacti
2083    Staircase top
2084    Staircase middle
2085    Staircase bottom
2086    Field of flowers
2087    Beehives
2088    Toolshed
2089    West of barrier
2090    (90 to 95 are never reached)
2091     
2092     
2093     
2094     
2095         
2096    Bottomless pit
2097    Bottom of pit
2098    Back of cave
2099    Sculptors' studio
2100    Artist's cavern
2101    Maze
2102    Maze
2103    Maze
2104    Maze
2105    Maze
2106    Maze
2107    Maze
2108    Maze
2109    Maze
2110    Maze
2111    Maze
2112    Maze
2113    Maze
2114    Maze
2115    Maze
2116    Maze
2117    Dark tunnel
2118    Mushroom farm
2119    Round tunnel
2120    Curving passage
2121    Wet cave
2122    Underground pool
2123    Underwater
2124    Dead end
2125    Dead end
2126    Tight squeeze
2127    Dead end
2128    Gold mine
2129    Damp crawlway
2130    Large hall
2131    Ferret home
2132    Ferret nursery
2133    East-west hall
2134    Metal chamber
2135    East end of hall
2136    North end of hall
2137    Hall
2138    Hall
2139    Hall junction
2140    Hall
2141    Hall
2142    South end of hall
2143    Darkroom
2144    Library
2145    Office
2146    Control room
2147    Chemical storage
2148    Electronic storage
2149    Storage room
2150    Tool room
2151    Mine Entrance
2152    Top of mine shaft
2153    Teleportation booth
2154    Center of great hall
2155    North wall of hall
2156    Northeast corner of hall
2157    East wall of hall
2158    Southeast corner of hall
2159    South wall of hall
2160    Southwest corner of hall
2161    West wall of hall
2162    Northwest corner of hall
2163    Hallway
2164    Hallway
2165    Large anteroom
2166    Giant ship
2167    Hallway
2168    Viewing room
2169    Outer office
2170    Secret corridor
2171    Office complex
2172    Hallway
2173    Airlock door
2174    Airlock
2175    Small ship in dock
2176    Orbiting Altair
2177    Orbiting Cygnus
2178    Orbiting Vega
2179    Orbiting Deneb
2180    Orbiting Auriga
2181    In ship on Cygnus
2182    Cygnan landing site
2183    Cygnan sea-shore
2184    In ship on Auriga
2185    Aurigan landing site
2186    Aurigan control center
2187    In ship on Deneb
2188    Deneb landing platform
2189    Doorway
2190    Sitting room
3001    Chrome key
4001    Dangling from the nest on a red string is a chrome key.
4002    There is a chrome key on a string here.
3002    Blue sapphire
4001    At the end of one vein is a huge blue sapphire!
4002    There is a huge blue sapphire here.
3003    Colorful fish
4001    Swimming blissfully around, eating the tiny polyps, is a large
4001    particularly colorful fish.
4002    There is a colorful fish here.
4003    It is a very colorful fish indeed, with long fins and a long
4003    snout, suitable for eating the tiny polyps. The zoologists at
4003    your camp might like to examine it.
3004    Dead fish
4001    There is a smelly dead fish here.
4002    It is now dead and beginning to decompose. You shouldn't have
4002    kept it out of the water so long.
3005    Knapsack
4001    There is a knapsack here.
4002    It is a large red canvas backpack, with lots of room and many
4002    pockets. You could easily carry many kilograms in it.
4003    The knapsack is empty.
4004    The knapsack contains:
3006    Red shirt
4001    Lying on the ground is a red shirt.
3007    Green shirt
4001    There is a dark green shirt here.
3008    Pair of heavy boots
4001    There is a pair of heavy boots here.
4002    They are for heavy duty hiking.
3009    Canvas shoes
4001    There is a pair of light canvas shoes here.
4002    They are for rock climbing.
3010    Blue pants
4001    Lying on the ground is a pair of dark blue pants.
3011    Tan pants
4001    There is a pair of light tan pants here.
3012    Butterfly net
4001    There is a butterfly net here.
4002    The net is empty.
4003    The net contains:
3013    Plastic tube
4001    There is something which looks like a tube of toothpaste here.
4002    The label says: "Berry's Bug Dope" 
4002         Repels blackflies, bees, gnats and chiggers. Not for use
4002         against worms or sharks. Ingredients: DEET (C12H17NO)
4002         23%, active ingredient. Inert ingredients:
4002         Alcohol (C2H6O)  76%, perfume 1%.
4002    The tube is empty.
3014    Instant camera
4001    There is an instant-picture camera here.
4002    It is a space-patrol issue picture-in-a-minute camera, model
4002    AN/MQ 30045-9812-773R. It's so automatic that all you have to do
4002    is say "shoot" and it will take a picture of the most
4002    interesting object around. This little beauty cost the Patrol
4002    $6,345,003.00.
4002    (Just between you and me, it's a Polaroid Snapshooter 
4002    worth $49.95.)    
3015    Plastic bag
4001    There is a plastic bag here.
4002    It is a collecting bag, for preserving living specimens. It is
4002    watertight but can "breathe" so living animals can be carried
4002    in it.
4003    The plastic bag is empty.
4004    The plastic bag contains:
4005    The bag is full of water.
4006    The water-filled bag contains:
3016    Crablike fossil
4001    Sticking out of the rocks is a huge crablike fossil!
4002    There is a large fossil here.
3017    Photograph of tiny pterodactyls
4001    There is a photograph of some tiny pterodactyls here.
4002    There's nothing particularly interesting about the small
4002    critters themselves (except to see how sharp their teeth are),
4002    but, behind the horsetails seems to be a cave!
3018    Photograph of Martians    
4001    There is a photograph of some "Martians" here.
4002    It's a photo of those odd energy creatures. The scene is what
4002    must be a bar. One of them is getting a "charge" from an odd
4002    electrical device.
4003    The photo is of those odd electrical "Martians" playing their
4003    variant of hockey.
3019    Huge diamond
4001    One of the diamonds is loose.
4002    There is a huge diamond here.    
3020    Hockey puck
4001    Lying on the ground is a hockey puck.
4002    It look like an ordinary hockey puck, about 10 centimeters in
4002    diameter. Hmmmmmmmmmmm... It seems, however, to be metallic
4002    rather than the usual plastic. It is bright and silvery. 
4002    Closer scrutiny shows that it is SOLID PLATINUM!
3021    Red boulder
4001    Lying on the ground is barely liftable boulder.
3022    Green moss
4001    Lying on the ground is a large piece of soft green moss.
4002    Moss is moss is moss. It's a beautiful dark green and very
4002    soft and squishy.
3023    Glass plate
4001    A large piece of glass is lying on the ground.
4002    It's a plate of glass, about 80 centimeters in diameter, and one
4002    centimeter thick, apparently cut out of a larger piece by some
4002    inept glasscutter. It's very sturdy.
3024    Piece of wire
4001    Lying on the ground is a long piece of wire.
4002    It's very heavily insulated, except for the very ends,
4002    which are stripped clean.
4003    The wire is attached to the tower.
4004    The wire is tied to the knob in the stool.
3025    Glowing sphere
4001    Lying on the ground is a glowing sphere.
4002    The sphere is about ten centimeters in diameter. It is hollow,
4002    with rather thick walls. Inside is a smaller sphere, about one 
4002    centimeter in diameter. The glow seems to emanate from the
4002    whole inner wall it, but is brighter near where the small sphere
4002    rests. It is extremely heavy for its size. 
3026    Gooey latex
4001    Flowing from the bark of the tree is a large quantity of gooey
4001    latex. It flows down the tree making a rubbery coating. If you
4001    had a bucket you could collect a large quantity.
4002    There is a puddle of congealed latex here.
4003    A sticky layer of rubber covers the pole.
4004    It is a mildly viscous, very sticky liquid, with a faint 
4004    turpentine-like odor. If spread in a thin layer on something
4004    it soon congeals into a smooth, pliable, and only faintly sticky
4004    coating.
4005    It seems to have congealed into a solid mass.
3027    Damaged cable
4001    There is a damaged microwave cable here.
4002    It is a green cable about one meter long with connectors on each
4002    end. The middle has been chewed almost through by a rodent.
3028    Good cable
4001    There is a good microwave cable here.
4002    It is a green cable about one meter long with connectors on
4002    each end. It is in good condition.
3029    Beautiful orchid
4001    Sitting on the bench is a potted orchid.
4002    There is a beautiful orchid here.
4003    It is violet, white and magenta, about 20 cm across, and a
4003    striking example of the evolutionary similarity of this planet
4003    and the earth.
3030    Venus flytrap
4001    Sitting on the bench is a potted Venus flytrap plant.
4002    There is a Venus flytrap here.
4003    It is green and nasty. It is obviously carnivorous, although
4003    the resemblance to it's earthly namesake is tenuous.
3031    Large cassette
4001    Lying on the ground is a large cassette for film.
4002    It is about 30 centimeters square and 1 cm thick. An indicator
4002    shows that it is properly loaded with film.
3032    Overexposed photograph
4001    There is an overexposed photograph here.
4002    Something, probably radioactive, has caused this photo to be 
4002    so overexposed as to be unusable.
3033    Tomato
4001    There is a tomato here.
4002    It looks like a delicious red tomato.
3034    Lettuce
4001    There is a head of lettuce here.
4002    Lettuce is lettuce. It is not very nutritious.
3035    Cabbage
4001    There is a head of cabbage here.
4002    Cabbage is cabbage.
3036    Strawberry
4001    There is a giant strawberry here.
4002    It is 10 centimeters across and red, like a strawberry.
3037    Grapes
4001    A large bunch of grapes grows on a vine here.
4002    The is a bunch of grapes here.
4003    They are green and look good enough to eat.
3038    Sunflower seed
4001    Growing on one of the plants is a full-grown seed.
4002    There is a large sunflower seed here.
4003    It is a black seed with a metallic sheen, about 10 cm across.
4003    It is shaped like a large peach pit, with deep grooves in the
4003    sides.
3039    Bucket
4001    There is a bucket here.
4002    The bucket is full of water.
4003    The bucket is empty
4004    The bucket contains:
3040    Pitchfork
4001    There is a pitchfork here.
3041    Shovel
4001    There is a shovel here.
3042    Robot
4001    There is a robot here.
4002    There is a slightly corroded robot here.
4003    The robot is about one and a half meters tall. It is almost
4003    spherical, sitting on four lightly sprung wheels. On top is
4003    what looks like a car antenna. Beneath that is a rotating TV
4003    camera. It has two arms, one of which is a rather delicate-
4003    looking clasping device. The other is a swivel-mounted hose
4003    arrangement obviously designed for it's primary purpose of
4003    watering plants. In the control section beneath the TV eye are
4003    a microphone and a speaker.    
4004    The robot is empty-handed.
4005    The robot holds:
3043    Statue
4001    There is a small statue here
4002    It is a carving of a ferret. The ferret is holding a small star.
4002    It must be some sort of religious object.
3044    Mushroom
4001    There is a huge mushroom here.
3045    Gold nugget
4001    Lying on the ground is a large nugget of gold.
3046    Photograph of wall paintings.
4001    There is a photograph of some wall paintings here.
4002    You recognize the paintings made be the ferret-artist.
3047    Photograph of ferret family
4001    There is a photo of some ferrets here.
4002    It is a typical boring family photo, not some artistic wonder.
4002    What more did you expect?
3048    Black cat
4001    Sitting on the platform is a very unhappy black cat.
4002    There is a large black cat purring contentedly here.
3049    Container of DEET
4001    There is a supply of DEET here.
4002    It is a slightly viscous, colorless, slightly sweet liquid.
3050    Container of nvglo
4001    There is a supply of nvglo here.
4002    It is a pale pink powder. It's dust makes you sneeze.
3051    Container of sbkl
4001    There is a supply of sbkl here.
4002    It consists of large white crystals.
3052    "Terran" cartridge
4001    There is a plug-in cartridge marked "Gviizm-Terran" here.
4002    It looks like it would plug into a computer.
3053    Knife
4001    There is a knife here.
3054    Hammer
4001    There is a hammer here.
3055    Screwdriver
4001    There is a screwdriver here.
3056    "Cygnan" cartridge
4001    There is a plug-in cartridge marked "Xbtmzm-Cygnan" here. 
4002    It looks like it would plug into a computer.
3057    Glowing bead
4001    There is a glowing glass bead here.
4002    It is about a centimeter in diameter, glowing brightly
4002    and quite hot.
3058    Silicon "Insect"
4001    Basking in the heat of the fire is a tiny silicon insect.
4002    There is a tiny silicon insect here.
4003    It looks like a small metallic grasshopper. The body is made
4003    of a gray semi-metallic substance which looks like silicon.
4003    The wings are a transparent red, as if made of some zinc or
4003    arsenic mineral. The eyes are bright iridescent blue-green.
4003    The thing is obviously a bit cold away from the fiery pit,
4003    but not in severe distress. The whole effect is as if some piece
4003    of precious jewelry had come to life.
3059    Piece of Xray film
4001    There is a piece of used xray film here.
4002    The xray film contains no useful image.
4003    The xray film, though not well exposed, contains the image of a
4004    The xray film, though showing an image, is all jumbled up and
4004    unusable.
4005    The xray film appears to have been improperly processed.
4005    Perhaps you didn't get the chemicals in the proper places.
3060    Magnesium box
4001    There is a magnesium box here.
4002    It is a medium sized lock-box. The lock mechanism consists of
4002    a left dial and a right dial, each of which reads from 0 to 999.
4003    The box is empty.
4004    The box contains:
3061    Good disc
4001    There is a good silicon disc here.
4002    It is a round piece of silicon, with gold contact pads around 
4002    the edge. It might be some sort of computer memory chip.
4002    However, due to the presence of some sort of plastic coating
4002    appearing in places on it, it clearly is not fully processed.
3062    Broken disc
4001    There is a broken silicon disc here.
4002    It is a round piece of silicon, with gold contact pads around 
4002    the edge. It might be some sort of computer memory chip.
4002    It looks ready to use, except that a small piece is broken
4002    off of one corner.
3063    Violet crystal
4001    Lying on the ground is a beautiful large violet crystal.
4002    It is a large crystal, very light for its size, with a pale 
4002    violet hue. It is probably spodumene, a mineral valuable for
4002    its content of lithium, which is used in your ship's drive.
3064    Chocolate egg
4001    Sitting in the doll house is a chocolate egg.
4002    There is a chocolate egg here.
3065    Silver coin
4001    There is a silver coin here.
4002    The coin has a likeness of a reptile on one side and the 
4002    notation  &100 on the other.
3066    Brass coin
4001    There is a brass coin here.
4002    It is marked &50.
3067    Nickel coin
4001    There is a nickel coin here.
4002    It is marked &25.
3068    Copper coin
4001    There is a copper coin here.
4002    It is marked &75.
3069    Platinum coin
4001    There is a platinum coin here.
4002    It is marked &300.
3070    Map
4001    There is a map here.
4002    The map is a star map, showing the coordinates of the stars in
4002    the vicinity. Some stars are described in script which you
4002    cannot read.
4003    This appears to be a souvenir map of the galaxy. Among prominent
4003    locations are the following:
4003     Location         Right ascension      Declination
4003     Altair                0556               2331
4003     Cygnus                2445               4293
4003     Vega                  7552               2204
4003     Deneb                 1105               6339
4003     Auriga                3111               3325
3071    Red ball
4001    There is a small red ball here.
3072    Newspaper
4001    There is a newspaper here.
4002    The writing is unintelligible.
4003    A banner at the top of the paper says "EXTRA".
4003    A subtitle says "Teleporter to Test Site #6 Reactivated".
4003    The gist of the article is that the teleportation link to
4003    the planet known as Test Site #6, which recently failed,
4003    causing district administrator Glathryx to arrive at the
4003    space station minus his third and fourth leg sets, and then
4003    became totally inoperative, has come back in operation. 
4003    It seems that an intruder into the test site is suspected
4003    of causing these recent events. All persons are requested
4003    to be on the lookout for at strange alien, whose description
4003    more or less fits you.
3073    Yellow rod
4001    There is a yellow rod here.
3074    Written note
4001    There is a piece of paper with a note on it here.
4002    The note is unintelligible.
4003    The note is partly obliterated by coffee stains, but you can
4003    just make out
4003      Do it twice 
4003      Door combinations ....
4003      Small ship   99  ??   ??
5001    Volcanic spire
4001    %%%%
4002    The spire, although steep, has many small rock flakes
4002    on which a person could stand if he had the right kind of shoes.
4003    Why not try to take a mountain. It's just as easy.
5002    Tiny pterodactyls
4001    They are rather cute but nasty creatures, with greenish-gray
4001    skin, venomous red eyes and long razorlike tails.
4002    That's not wise. They are vicious creatures and would bite you
4002    The bite of most animals here is fatal.
5003    Ceramic stool
4001    As you reach over to look at the stool, a spark jumps out from
4001    the knob in the center and shocks you.
4002    It's too heavy to lift.
5004    Metal knob
4001    As you get near the knob it gives you a painful but harmless
4001    electrical shock.
4002    The knob is permanently attached to its base, which is attached
4002    forever to the ground.
5005    Round window
4001    The window is about 1 meter in diameter, with plate glass.
4002    The window in the building seems to have been vandalized.
4003    The glass is quite permanently set in its frame.
5006    Round door
4001    In the front of the building is a round door which is closed.
4002    In the front of the building is a round door which is open.
4003    In the center of the door is a small metal dimple.
4004    It is attached to unreachable and unbreakable hinges.
5007    Tower
4001         
4002    Have you eaten a hallucinogenic drug?
5008    Metal dimple
4001
4002    Silly!
5009    Stone cube
4001    The inscription on the monument reads:
4001    (translated into English)
4001                  
4001               Site of first landing party
4001                      Year 21007
4001
4002    If you wish me to give you a hernia, please say so directly.
5010    Horsetails
4001    Horsetails are primitive plants, which live today on earth 
4001    in wet cool forests. Today they are rather small, but 
4001    millions of years ago there were ones several meters tall.
4001    On this planet the large ones are still common. Here they
4001    form a line to the sides of the waterfall, where the spray
4001    keeps them wet. The pterodactyls seem to live somewhere
4001    behind them.
4002    Horsetails are used only to scour pans, which you don't have.
5011    Metal door
4001    The door is closed.
4002    The door is open.
4003    Why would you wish to carry that around?
5012    Glass door
4001    The door is closed.
4002    The door is open.
4003    You can't take that. It's to big to get anywhere.
5013    Rabbit hole
4001    In the ground is a small hole, probably the entrance to a
4001    rabbit warren.
4002    In the ground is the gaping entrance of a bottomless pit.
4003    A hole is the absence of something. You can't take air. 
5014    Louver
4001    Someone has ransacked the louver. A gaping hole remains.
4002    Why bother?
5015    Grape vines
4001    Growing here in great profusion are grape vines.
4002    There are some shriveled-up grape vines here.
4003    Useless. Useless.    
5016    Slot
4001    The slot is empty.
4002    The slot contains:
4003    How can you take that, stupid?
5017    Square button
4001    Silly!
5018    Square button
4001    Not bloody likely.
5019    Round button
4001    Not until you reach Nirvana.
5020    Hexagonal button
4001    You take the little plastic cover off the button, but
4001    the underlying mechanism still works.
5021    Video screen
4001    The video screen is blank.
4002    The video screen shows the view taken by the robot's camera.
4003    It is permanently mounted on the wall.
5022    Sink
4001    The sink is empty.
4002    The sink contains:
5023    Microwave antenna
4001    The antenna is an ordinary satellite dish. It is 5 meters in
4001    diameter, white, and has a horn collector attached to the base
4001    by a cable. The cable seems to have been damaged.
4002    The antenna is an ordinary satellite dish. It is 5 meters in
4002    diameter, white, and has a horn collector attached to the base
4002    by a cable. The cable is in working order.
4003    The antenna is an ordinary satellite dish. The feed cable is
4003    missing.
4004    It weighs 4 tons!
5024    Enlarger
4001    Nothing is sitting on the enlarger base
4002    Sitting on the enlarger is:
4003    It is bolted to the wall.
5025    Rack
4001    It has vertical partitions suitable for holding things like film
4001    cassettes in a vertical position.
4002    The rack is empty.
4003    The rack contains:
4004    It is attached to the bench.
5026    Tray.
4001    The tray is empty.
4002    The tray contains:
4003    It is a molded part of the bench.
5027    Hopper
4001    The hopper is empty.
4002    The hopper contains:
4003    It can't me moved.
5028    Left funnel
4001    Silly!
5029    Middle funnel
4001    You must be suffering from a mind-scrambling drug.
5030    Right funnel
4001    That's useless.
5031    Red button
4001    It's part of a machine which is too heavy to move.
5032    Desk
4001    The desk is empty.
4002    The desk contains:    
4003    It's too heavy to carry.
5033    Level indicator
4001    The level indicator shows too little water.
4002    The water level is just about right.
4003    Don't kid me!
5034    Red light
4001    The red light is on.
4002    The red light is off.
4003    The red light comes off in your hand. (Sorry, just kidding.)
5035    Green light
4001    The green light is off.
4002    The green light is on.
4003    You're getting tiring, trying to take immovable objects.
5036    Acid flow
4001    There is nothing sitting in the acid.
4002    Sitting in the acid is:
4003    The robot can't bend over far enough.
5037    Fiery pit
4001    Silly!
5038    Sulfurous mud
4001    The robot can't bend over to reach it.
5039    Violet button
4001    You can't take it.
5040    Orange button
4002    It is fixed in the wall.
5041    White button
4001    You remove it. A large Jack-in-the-box jumps out. You are so
4001    embarrassed that you carefully put the whole affair back.
5042    Blue button
4001    As you unscrew it, you notice that your nose falls off also.
4001    The switch it operated remains operational.
5043    Round recess
4001    The recess is empty.
4002    The recess contains:
4003    Take the air!
5044    Red vapor
4001    There is nothing near the red vapor.
4002    Surrounded by the red vapor is:
4003    The robot has no suitable container.    
5045    Green vapor
4001    There is nothing in the green vapor.
4002    Sitting in the green vapor is:
4003    The robot has no suitable container.
5046    Frogs
4001    These are quite ordinary frogs. They are green, a bit slimy, and
4001    make a hollow krrooooookkking sound. If you could converse with 
4001    them (which you can't), you would discover that their favorite
4001    topic of conversation is sex.
4002    Taken.   .......    but
4002    After a few moments the frog emits a foul-smelling slimy liquid
4002    which runs down your arm and begins to itch. You drop the poor
4002    creature.
5047    Red birds
4001    They seem to be parrots.
4002    They fly amongst the highest branches of the trees, far above 
4002    your reach. 
5048    Beautiful birds
4001    There are dozens of birds of all colors and sizes here. They 
4001    seem to like the most inaccessible branches of the small trees.
4002    They are well above your head. You can't climb the trees, as 
4002    their trunks are much too weak.
5049    Beautiful birds
4001    There are several different species: big red ones, little green 
4001    ones, ones with violet backs and white and yellow heads, and 
4001    many others. They seems to like the highest branches of the 
4001    trees.
4002    The birds are on the trees, not on the walkway where you stand.
5050    Beautiful birds.
4001    The birds are hidden by the top branches of the trees.
4002    They aren't nearby; they are out of reach in the trees.
5051    Bees
4001    Any attempt to get close to the bees results in your getting
4001    painful stings.
5052    Cactus
4001    They are much too big and prickly.
5053    Doll house
4001    It is large and ornate, about 2 meters tall, with four stories.
4001    There are the usual windows and doors through which the ferret
4001    children put their dolls.
4002    It is too big to get out the door.
5054    Waterfall
4001    Sorry, there is no pot of gold at the end of the rainbow. There
4001    isn't even any rainbow, just lots of water.
4002    Have you perhaps been eating cactus hallucinogenic drugs?
5055    Vending machine
4001    There is a vending machine here.
4002    It looks exactly like the machines used on earth to dispense
4002    candy. The contents look like red balls about one centimeter
4002    in diameter. The label says "Ozmtfztv Krooh". It has a slot
4002    labeled &300.
4003    It looks exactly like the machines used on earth to dispense
4003    candy. The contents look like red balls about one centimeter
4003    in diameter. The label says "Language Pills". It has a slot
4003    labeled &300.
4004    It is fastened to the wall.
5056    Slot
4001    Fat chance.
5057    Vending machine
4001    There is a vending machine here.
4002    It looks exactly like the machines used on earth to dispense
4002    newspapers. Inside is a supply of papers. The money slot is
4002    labeled &25.
4003    It is fastened to the wall.
5058    Slot
4001    Fat chance.
5059    Vending machine
4001    There is a vending machine here.
4002    It is a slot machine. That is, it has a slot for any size 
4002    coin and three windows through which can be seen images of 
4002    various fruits and occasionally a pot of money. It does
4002    seem to be missing the lever necessary to make it a 
4002    "One armed bandit".
4003    You think perhaps to take it to a quiet place and blow it
4003    open? Sorry, it won't budge.
5060    Slot
4001    Fat chance
5061    Vending machine
4001    There is a vending machine here.
4002    It appears to be offering maps for sale. A slot in it is 
4002    marked &75.
4003    It is attached to the wall.
5062    Slot
4001    Fat chance.
5063    Large machine
4001    Read the room description for information.
4002    It is too heavy
5064    Orange door
4001    The orange door is shut.
4002    The orange door is open.
4003    Silly!
5065    Pink door
4001    The pink door is shut.
4002    Fat chance!
5066    Blue door
4001    The blue door is shut.
4002    The blue door is open.
4003    It's fixed top the ship.
5067    Orange clip
4001    The orange clip is empty.
4002    The orange clip contains:
4003    No way.
5068    Violet clip
4001    The violet clip is empty.
4002    The violet clip holds:
4003    Silly!
5069    Yellow clip
4001    The yellow clip is empty.
4002    The yellow clip contains:
4003    Not in this life!
5070    Blue clip
4001    The blue clip is empty.
4002    The blue clip holds:
4003    You break your fingernail but not the clip.
5071    File cabinet
4001    The file cabinet holds useless papers.
4002    In addition to junk the cabinet holds:
4003    It is glued to the floor.
5072    Green button
4001    Behind the file cabinets is a green button.
4002    Silly!
5073    Large mural
4001    The south wall of the room is completely filled with a large
4001    mural.
4002    The mural has slid partially aside to reveal a secret passage
4002    leading south.
4003    The mural shows a picture of one of the large star clusters
4003    visible out the viewing ports. You notice that the left side
4003    is somewhat scuffed up.
4004    You might as well take the air.
5074    Dummy
4001    ****
5075    ****
9999
SHAR_EOF
#	End of shell archive
exit 0
-- 
Bob Page, U of Lowell CS Dept.  page@swan.ulowell.edu  ulowell!page
Have five nice days.