[comp.sources.games] v01i105: world - sci-fi adventure game, Part06/07

games-request@tekred.TEK.COM (07/24/87)

Submitted by: "J.D. McDonald " <mcdonald@uxe.cso.uiuc.edu>
Comp.sources.games: Volume 1, Issue 105
Archive-name: world/Part06



#! /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 6 (of 7)."
# Contents:  vcnvrt.c verbs1.c vocab.dat
# Wrapped by billr@tekred on Thu Jul 23 17:18:01 1987
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f vcnvrt.c -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"vcnvrt.c\"
else
echo shar: Extracting \"vcnvrt.c\" \(10819 characters\)
sed "s/^X//" >vcnvrt.c <<'END_OF_vcnvrt.c'
X#include <stdio.h>
X
X/* World C Version 1.00 copyright 1987 J.D.McDonald 
X   Use as you like for non-commercial purposes, but please
X   leave this note, and document any changes you make as yours */
X
Xint             three[3], vrbpdo[100], vrbpio[100], vrbobj[100];
Xint             pp1[15], pp2[15], pp3[8];
Xint             obloc[200], obw3[200];
Xint             obw4[200], obpprp[200], obimpr[200];
Xint             dispat[300];
Xchar            chrbuf[81];
Xchar            astr[2], bstr[2], cstr[3], dstr[7];
Xchar            outstr[81], estr[8], fstr[7];
Xchar            obnoun[1200], obadjv[1400];
Xchar           *nounptr, *adjptr;
X
Xint             pnum, number, i, q, numx, vocdim, nvrbob, vocsz, m, q1;
Xint             loxx, loxxx, ppq1, ppq2, zz1, zz2, ttabsz, locat, qq1, qq2;
Xint             objmax, movmax, z, wt, size, value, floc, pprp, imprp;
Xint             iloc, cval, qqqq, ib;
X
XFILE           *vocab_dat, *vocab_inc, *parame_inc, *verbtb_inc;
XFILE           *data_dat, *trvtbl_inc, *locdat_inc, *objdat_inc;
X
X
Xmain()
X{
X
X    astr[1] = 0;
X    bstr[1] = 0;
X    cstr[2] = 0;
X    dstr[6] = 0;
X    estr[7] = 0;
X    fstr[6] = 0;
X    obloc[0] = 0;
X    obnoun[0] = 0;
X    obadjv[0] = 0;
X    obw3[0] = 0;
X    obw4[0] = 0;
X    obpprp[0] = 0;
X    obimpr[0] = 0;
X    dispat[0] = 0;
X    vocab_dat = fopen("vocab.dat", "r");
X    vocab_inc = fopen("vocab.inc", "w");
X    parame_inc = fopen("parame.inc", "w");
X    verbtb_inc = fopen("verbtb.inc", "w");
X    fprintf(parame_inc, "#define ACTMAX     1\n");
X    number = 0;
X    pnum = 0;
Xlab110:
X    for (i = 0; i < 81; i++)
X	chrbuf[i] = ' ';
X    if (fgets(chrbuf, 80, vocab_dat) == NULL)
X	goto lab500;
X    q = strlen(chrbuf) - 1;
X    for (i = q; i < 80; i++)
X	chrbuf[i] = ' ';
X    if (chrbuf[0] == '*')
X	goto lab110;
X    if (chrbuf[0] < '0' || chrbuf[0] >= '9')
X	goto lab111;
X    numx = pnum + 1;
X    if (chrbuf[0] == '1') {
X	fprintf(parame_inc, "#define BUZMAX %5d\n", pnum);
X	fprintf(parame_inc, "#define ADVMIN %5d\n", numx);
X    } else if (chrbuf[0] == '2') {
X	fprintf(parame_inc, "#define ADVMAX %5d\n", pnum);
X	fprintf(parame_inc, "#define VRBMIN %5d\n", numx);
X    } else if (chrbuf[0] == '3') {
X	fprintf(parame_inc, "#define VRBMAX %5d\n", pnum);
X	fprintf(parame_inc, "#define ADJMIN %5d\n", numx);
X    } else if (chrbuf[0] == '4') {
X	fprintf(parame_inc, "#define ADJMAX %5d\n", pnum);
X	fprintf(parame_inc, "#define NUNMIN %5d\n", numx);
X    } else if (chrbuf[0] == '5') {
X	fprintf(parame_inc, "#define NUNMAX %5d\n", pnum);
X	fprintf(parame_inc, "#define PRPMIN %5d\n", numx);
X    } else if (chrbuf[0] == '6') {
X	fprintf(parame_inc, "#define PRPMAX %5d\n", pnum);
X    } else;
X
X    if (chrbuf[0] != '6')
X	goto lab110;
X    goto lab500;
Xlab111:
X    number += 1;
X    if (chrbuf[0] == '+')
X	goto lab110;
X    pnum += 1;
X    for (i = 0; i < 6; i++)
X	outstr[i] = chrbuf[i];
X    if (chrbuf[59] >= 'A' && chrbuf[59] <= 'Z') {
X	for (i = 0; i < 6; i++)
X	    outstr[i] = chrbuf[59 + i];
X    }
X    fprintf(parame_inc, "#define %6s %5d\n", outstr, pnum);
X    goto lab110;
Xlab500:
X    fprintf(parame_inc, "#define VOCMAX %5d\n", number);
X    vocdim = number * 3;
X
X    fseek(vocab_dat, 0l, 0);
X
X    fprintf(vocab_inc, "    short vocab[%5d] = { 0 \n", vocdim + 1);
X    nvrbob = 0;
Xlab600:
X    fgets(chrbuf, 80, vocab_dat);
X    q = strlen(chrbuf) - 1;
X    for (i = q; i < 80; i++)
X	chrbuf[i] = ' ';
X    if (chrbuf[0] == '*')
X	goto lab600;
X    vocsz = 0;
Xlab820:
X    if (fgets(chrbuf, 80, vocab_dat) == NULL)
X	goto lab6000;
X    q = strlen(chrbuf) - 1;
X    for (i = q; i < 80; i++)
X	chrbuf[i] = ' ';
X    if (chrbuf[0] == '*')
X	goto lab820;
X    if (chrbuf[0] > '0' && chrbuf[0] < '9')
X	goto lab820;
X    m = 0;
X    if (chrbuf[0] == '+')
X	m = 1;
X    cvt(&chrbuf[m]);
X    if (m == 1)
X	three[0] = -three[0];
X    vocsz += 3;
X    q1 = (q < 9) ? q : 9;	/* q1 = min (q,9)  */
X    fprintf(vocab_inc, "  , %6d, %6d, %6d  /* %12.13s */\n", three[0],
X	    three[1], three[2], chrbuf);
X    if (chrbuf[15] == ' ')
X	goto lab820;
X    for (i = 0; i < 15; i++) {
X	pp1[i] = chrbuf[i + 14] - '0';
X	pp2[i] = chrbuf[i + 31] - '0';
X    }
X    for (i = 0; i < 8; i++)
X	pp3[i] = chrbuf[i + 49] - '0';
X
X    nvrbob += 1;
X    vrbpdo[nvrbob] = 0;
X    vrbpio[nvrbob] = 0;
X    vrbobj[nvrbob] = 0;
X    for (i = 0; i < 15; i++) {
X	vrbpdo[nvrbob] = vrbpdo[nvrbob] * 2 + pp1[i];
X	vrbpio[nvrbob] = vrbpio[nvrbob] * 2 + pp2[i];
X    }
X    for (i = 0; i < 8; i++)
X	vrbobj[nvrbob] = vrbobj[nvrbob] * 2 + pp3[i];
X    goto lab820;
Xlab6000:
X    fprintf(verbtb_inc, "   short vrbpdo[ %3d ] = { 0 \n", nvrbob + 1);
X    for (i = 1; i <= nvrbob; i++)
X	fprintf(verbtb_inc,
X		"   , %7d \n", vrbpdo[i]);
X    fprintf(verbtb_inc, "   } ; \n");
X
X    fprintf(verbtb_inc, "   short vrbpio[ %3d ] = { 0 \n", nvrbob + 1);
X    for (i = 1; i <= nvrbob; i++)
X	fprintf(verbtb_inc,
X		"   , %7d \n", vrbpio[i]);
X    fprintf(verbtb_inc, "   } ; \n");
X
X    fprintf(verbtb_inc, "   short vrbobj[ %3d ] = { 0 \n", nvrbob + 1);
X    for (i = 1; i <= nvrbob; i++)
X	fprintf(verbtb_inc,
X		"   , %7d \n", vrbobj[i]);
X    fprintf(verbtb_inc, "   } ; \n");
X
X
X    fprintf(vocab_inc, "  } ;  \n");
X    fclose(vocab_dat);
X    fclose(vocab_inc);
X    fclose(verbtb_inc);
X
X    data_dat = fopen("data.dat", "r");
X    trvtbl_inc = fopen("trvtbl.inc", "w");
X    locdat_inc = fopen("locdat.inc", "w");
X    objdat_inc = fopen("objdat.inc", "w");
X
X    ttabsz = 0;
X    fprintf(trvtbl_inc, "  short trvtbl[] = { 0  \n");
Xlab1000:
X    fgets(chrbuf, 80, data_dat);
X    if (chrbuf[0] == '*')
X	goto lab1000;
X    locat = atoi(&chrbuf[1]);
X    qq1 = atoi(&chrbuf[13]);
X    qq2 = atoi(&chrbuf[16]);
X    astr[0] = chrbuf[0];
X    cstr[0] = chrbuf[8];
X    cstr[1] = chrbuf[9];
X    bstr[0] = chrbuf[11];
X    if (locat == 9999)
X	goto lab1200;
X    ttabsz += 1;
X    if (strcmp(cstr, "N ") == 0)
X	ppq1 = 1;
X    else if (strcmp(cstr, "NE") == 0)
X	ppq1 = 2;
X    else if (strcmp(cstr, "E ") == 0)
X	ppq1 = 3;
X    else if (strcmp(cstr, "SE") == 0)
X	ppq1 = 4;
X    else if (strcmp(cstr, "S ") == 0)
X	ppq1 = 5;
X    else if (strcmp(cstr, "SW") == 0)
X	ppq1 = 6;
X    else if (strcmp(cstr, "W ") == 0)
X	ppq1 = 7;
X    else if (strcmp(cstr, "NW") == 0)
X	ppq1 = 8;
X    else if (strcmp(cstr, "U ") == 0)
X	ppq1 = 9;
X    else if (strcmp(cstr, "D ") == 0)
X	ppq1 = 10;
X    else
X	printf(" error in travel table\n");
X    if (bstr[0] == 'C')
X	ppq1 += 16;
X    if (bstr[0] == 'S')
X	ppq1 += 32;
X    if (bstr[0] == 'Q')
X	ppq1 += 64;
X    ppq2 = 512 * qq1 + qq2;
X    zz2 = ttabsz * 2;
X    zz1 = zz2 - 1;
X    {
X	if (locat != 0) {
X	    dispat[locat] = zz1;
X	    loxx = locat;
X	}
X    }
X
X    fprintf(trvtbl_inc, "  , %7d , %7d \n", ppq1, ppq2);
X
X    goto lab1000;
Xlab1200:
X    loxxx = loxx + 1;
X    fprintf(trvtbl_inc, " } ;\n");
X    fprintf(trvtbl_inc, " short dispat[] = { 0 \n");
X    for (i = 1; i < loxxx; i++)
X	fprintf(trvtbl_inc, "   , %5d \n", dispat[i]);
X    fprintf(trvtbl_inc, "   , %5d }; \n", zz2 + 1);
X    fprintf(parame_inc, "#define LOCNUM %5d \n", loxx);
X    fprintf(parame_inc, "#define TTABSZ %5d \n", zz2);
X
X    fclose(trvtbl_inc);
X
X    fprintf(locdat_inc, "   short locdat[] = { 0 \n");
X
X    while (1) {
X	do
X	    fgets(chrbuf, 80, data_dat);
X	while (chrbuf[0] == '*');
X	locat = atoi(&chrbuf[1]);
X	if (locat == 9999)
X	    break;
X	ppq1 = atoi(&chrbuf[6]);
X	fprintf(locdat_inc, "   , %6d \n", ppq1);
X    }
X    fprintf(locdat_inc, "  } ; \n");
X    fclose(locdat_inc);
X
X    objmax = 0;
X    movmax = 0;
X    nounptr = obnoun;
X    adjptr = obadjv;
X
X    while (1) {
X	do
X	    fgets(chrbuf, 80, data_dat);
X	while (chrbuf[0] == '*');
X	z = atoi(&chrbuf[1]);
X	if (z == 9999)
X	    break;
X	for (i = 0; i < 6; i++)
X	    *nounptr++ = chrbuf[i + 7];
X	for (i = 0; i < 7; i++)
X	    *adjptr++ = chrbuf[i + 16];
X	wt = atoi(&chrbuf[24]);
X	size = atoi(&chrbuf[30]);
X	value = atoi(&chrbuf[36]);
X	floc = atoi(&chrbuf[42]);
X	pprp = atoi(&chrbuf[48]);
X	imprp = atoi(&chrbuf[54]);
X	iloc = atoi(&chrbuf[60]);
X	cval = atoi(&chrbuf[66]);
X	for (i = 0; i < 6; i++)
X	    fstr[i] = chrbuf[i + 72];
X	objmax += 1;
X	movmax += 1;
X	obw3[z] = wt * 256 + size;
X	obw4[z] = value * 4096 + floc;
X	obpprp[z] = pprp + 2048 * cval;
X	obloc[z] = iloc;
X	obimpr[z] = imprp;
X	for (i = 0; i < 6; i++)
X	    if (fstr[i] == '\n')
X		fstr[i] = ' ';
X	fprintf(parame_inc, "#define  %7.6s %5d\n", fstr, z);
X    }
X
X    while (1) {
X	do
X	    fgets(chrbuf, 80, data_dat);
X	while (chrbuf[0] == '*');
X	z = atoi(&chrbuf[1]);
X	if (z == 9999)
X	    break;
X	for (i = 0; i < 6; i++)
X	    *nounptr++ = chrbuf[i + 7];
X	for (i = 0; i < 7; i++)
X	    *adjptr++ = chrbuf[i + 16];
X	objmax += 1;
X	obw3[objmax] = atoi(&chrbuf[30]);
X	obw4[objmax] = atoi(&chrbuf[42]);
X	pprp = atoi(&chrbuf[48]);
X	obimpr[objmax] = atoi(&chrbuf[54]);
X	cval = atoi(&chrbuf[66]);
X	for (i = 0; i < 6; i++)
X	    fstr[i] = chrbuf[i + 72];
X	for (i = 0; i < 6; i++)
X	    if (fstr[i] == '\n')
X		fstr[i] = ' ';
X	obpprp[objmax] = pprp + 2048 * cval;
X
X	fprintf(parame_inc, "#define  %7.6s %5d\n", fstr, objmax);
X    }
X    fclose(data_dat);
X
X    fprintf(parame_inc, "#define OBJMAX %5d\n", objmax);
X    fprintf(parame_inc, "#define MOVMAX %5d\n", movmax);
X    fprintf(parame_inc, "#define OBJMX2 %5d\n", objmax + 1);
X    fclose(parame_inc);
X
X    fprintf(objdat_inc, "   short obloc[] = { 0 \n");
X    for (i = 1; i <= movmax; i++) {
X	qqqq = obloc[i];
X	if (qqqq > 6000)
X	    qqqq += movmax - 4000;
X	fprintf(objdat_inc, "  , %7d \n", qqqq);
X    }
X    fprintf(objdat_inc, " } ;\n");
X
X    fprintf(objdat_inc, "   short obw3[] = { 0 \n");
X    for (i = 1; i <= objmax; i++) {
X	fprintf(objdat_inc, "  , %7d \n", obw3[i]);
X    }
X    fprintf(objdat_inc, " } ;\n");
X
X    fprintf(objdat_inc, "   short obw4[] = { 0 \n");
X    for (i = 1; i <= objmax; i++) {
X	fprintf(objdat_inc, "  , %7d \n", obw4[i]);
X    }
X    fprintf(objdat_inc, " } ;\n");
X
X    fprintf(objdat_inc, "   short obpprp[] = { 0 \n");
X    for (i = 1; i <= objmax; i++) {
X	fprintf(objdat_inc, "  , %7d \n", obpprp[i]);
X    }
X    fprintf(objdat_inc, " } ;\n");
X
X    fprintf(objdat_inc, "   short obimpr[] = { 0 \n");
X    for (i = 1; i <= objmax; i++) {
X	fprintf(objdat_inc, "  , %7d \n", obimpr[i]);
X    }
X    fprintf(objdat_inc, " } ;\n");
X
X    nounptr = obnoun;
X    fprintf(objdat_inc, "   short obnoun[] =  { 0 \n");
X    for (i = 1; i <= objmax; i++) {
X	for (ib = 0; ib < 6; ib++)
X	    dstr[ib] = *nounptr++;
X	fprintf(objdat_inc, "  , %7s \n", dstr);
X    }
X    fprintf(objdat_inc, " } ;\n");
X
X    adjptr = obadjv;
X    fprintf(objdat_inc, "   short obadjv[] = { 0 \n");
X    for (i = 1; i <= objmax; i++) {
X	for (ib = 0; ib < 7; ib++)
X	    estr[ib] = *adjptr++;
X	fprintf(objdat_inc, "  , %8s \n", estr);
X    }
X    fprintf(objdat_inc, " } ;\n");
X
X
X    fclose(objdat_inc);
X
X}
X
X
Xcvt(strptr)
X    char           *strptr;
X{
X    int             ii, ij, k;
X
X    for (ii = 0; ii < 3; ii++) {
X	three[ii] = 0;
X	for (ij = 0; ij < 3; ij++) {
X	    k = *strptr++;
X	    if (k == 45)
X		k = 91;
X	    k -= 64;
X	    if (k < 1 || k > 27)
X		k = 0;
X	    three[ii] = three[ii] * 32 + k;
X	}
X    }
X}
END_OF_vcnvrt.c
if test 10819 -ne `wc -c <vcnvrt.c`; then
    echo shar: \"vcnvrt.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f verbs1.c -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"verbs1.c\"
else
echo shar: Extracting \"verbs1.c\" \(30154 characters\)
sed "s/^X//" >verbs1.c <<'END_OF_verbs1.c'
X#include "parame.inc"
X#include "variab.h"
X#include "arrays.h"
X
X/* World C Version 1.00 copyright 1987 J.D.McDonald 
X   Use as you like for non-commercial purposes, but please
X   leave this note, and document any changes you make as yours */
X
X
Xvattac()
X{
X    int             i, spk, cplce, n, plce;
X    /*
X     * "attach" or "tie"   not "attack" a mess since it involves the wire  
X     */
X
X    if (dobjs[0] == CABLE && iobj == ANTENN) {
X	if (loc != 69)
X	    spk = 379;
X	else if (obloc[GCABLE] == 2000 + ZANTEN || obloc[DCABLE] == 2000 + ZANTEN)
X	    spk = 381;
X	else {
X	    n = getobj(dobjs[0], doadjs[0]);
X	    if (n <= 0)
X		spk = 70;
X	    else {
X		itsher(n, &cplce);
X		if (cplce != 1 && cplce != 3 && cplce != 4)
X		    spk = 380;
X		else {
X		    obloc[n] = 2000 + ZANTEN;
X		    spk = 75;
X		}
X	    }
X	}
X    } else if (dobjs[0] != WIRE)
X	spk = 48;
X    else if (iobj == TREE || iobj == LOG || iobj == STOOL)
X	spk = 204;
X    else if (iobj != KNOB && iobj != TOWER)
X	spk = 48;
X    else {
X	itsher(ZWIRE, &plce);
X	if (plce == 0)
X	    spk = 213;
X	else if (iobj == TOWER) {
X	    if (loc != 48)
X		spk = 205;
X	    else {
X		spk = 75;
X		obloc[ZWIRE] = loc;
X		/* -57=177707 octal  */
X
X		obimpr[ZWIRE] = (obimpr[ZWIRE] & -57) + 24;
X		for (i = 0; i < 6; i++)
X		    wirelc[i] = 1000;
X	    }
X	} else {
X	    if (loc != 42)
X		spk = 206;
X	    else if (spcloc == 1) {
X		spk = 75;
X		obloc[ZWIRE] = loc;
X		/* ~56=177707 octal  */
X
X		obimpr[ZWIRE] = (obimpr[ZWIRE] & ~56) + 32;
X		for (i = 0; i < 6; i++)
X		    wirelc[i] = 1000;
X	    } else
X		spk = 207;
X	}
X    }
X    speak(spk);
X}
X
Xvattak()
X{
X    int             spk;
X    spk = 286;
X    if (dobjs[0] == VINE && loc == 74 && (obimpr[ZVINE] & 56) == 8) {
X	spk = 306;
X	if (pct(33))
X	    spk = 302;
X	else if (pct(50))
X	    spk = 305;
X    } else if (dobjs[0] == GUARD) {
X	if (loc == guardl || loc == 171 || (chaset != 0 && chaset <= 9))
X	    spk = 562;
X	else
X	    spk = 561;
X    } else if (dobjs[0] == MARTIA && loc >= 27 && loc <= 51)
X	spk = 307;
X    else if (dobjs[0] == ROBOT || dobjs[0] == FERRET)
X	spk = 285;
X    speak(spk);
X}
X
Xvbreak()
X{
X    int             j, hplce, xplce;
X    if (iobj != 0 && iobj != HAMMER && iobj != BOULDE) {
X	speak(48);
X	return;
X    }
X    if (iobj == HAMMER) {
X	itsher(ZHAMME, &hplce);
X	if (hplce == 0) {
X	    speak(329);
X	    return;
X	}
X    }
X    if (iobj == BOULDE) {
X	speak(330);
X	return;
X    }
X    if (dobjs[0] == LOUVER && (loc == 98 || loc == 142)) {
X	speak(282);
X	obimpr[ZLOUVE] = 9;
X	if (iobj == HAMMER)
X	    obloc[ZHAMME] = 1000;
X	return;
X    }
X    if (dobjs[0] == FERRET || dobjs[0] == ROBOT || dobjs[0] ==
X	MARTIA || dobjs[0] == CAT || dobjs[0] == FISH) {
X	speak(286);
X	return;
X    }
X    if (dobjs[0] == GUARD) {
X	if (loc == guardl || loc == 171 || (chaset != 0 && chaset <= 9))
X	    speak(562);
X	else
X	    speak(561);
X	return;
X    }
X    j = getobj(dobjs[0], doadjs[0]);
X    if (j == -1) {
X	speak(70);
X	return;
X    } else {
X	itsher(j, &xplce);
X	if (xplce == 0)
X	    speak(66);
X	else if (j > MOVMAX)
X	    speak(332);
X	else if (dobjs[0] == WIRE || dobjs[0] == KNAPSA || dobjs[0] ==
X		 SHIRT || dobjs[0] == PANTS || dobjs[0] == BOULDE ||
X		 dobjs[0] == PUCK || dobjs[0] == LATEX || dobjs[0] ==
X		 NUGGET || dobjs[0] == KNIFE || dobjs[0] == BEAD) {
X	    speak(48);
X	    return;
X	} else if ((dobjs[0] == KEY || dobjs[0] == SAPPHI || dobjs[0] ==
X		    DIAMON || dobjs[0] == SPHERE) && iobj != HAMMER)
X	    speak(385);
X	else if (j == ZSEED) {
X	    if (loc != 131 && loc != 99 && loc != 100) {
X		speak(337);
X		obimpr[ZSEED] = 0;
X	    } else if (loc != 100) {
X		speak(338);
X		obimpr[ZSEED] = 0;
X	    } else {
X		speak(340);
X		obimpr[ZSEED] = 3;
X		/* seed function here  */
X
X	    }
X	    obloc[ZSEED] = 0;
X	} else if (j == ZSTATU && loc == 99 && obloc[j] == 99)
X	    speak(89);
X	else if (j == CEGG) {
X	    speak(480);
X	    obloc[CEGG] = 0;
X	    obloc[SCOIN] = loc;
X	} else {
X	    speak(331);
X	    if (j == GSPHER) {
X		speak(333);
X		obloc[ZBEAD] = obloc[j];
X	    }
X	    if (obloc[j] == 2000 + RSLOT)
X		obimpr[RSLOT] = 9;
X	    obloc[j] = 0;
X	}
X    }
X}
X
Xvdig()
X{
X    int             splce, pplce;
X    if (dobjs[0] != 0 && dobjs[0] != SHOVEL && dobjs[0] != PITCHF)
X	speak(48);
X    else if (loc != 73)
X	speak(284);
X    else {
X	itsher(ZSHOVE, &splce);
X	itsher(ZPITCH, &pplce);
X	if ((dobjs[0] == SHOVEL && splce != 0) ||
X	    (dobjs[0] == PITCHF && pplce != 0) ||
X	    (dobjs[0] == 0 && (splce > 0 || pplce > 0))) {
X	    if (obimpr[RHOLE] != 17)
X		speak(283);
X	    else
X		speak(434);
X	    obimpr[RHOLE] = 17;
X	} else if ((dobjs[0] == SHOVEL && splce == 0) || (dobjs[0] ==
X						      PITCHF && pplce == 0))
X	    speak(89);
X	else
X	    speak(234);
X    }
X}
X
X
Xvdrink()
X{
X    int             spk;
X    /* pervert!!!!  */
X
X    if (dobjs[0] == NPISS) {
X	dirty += 1;
X	spk = 183;
X    }
X    /* water is o.k. */
X
X    else if (dobjs[0] == WATER) {
X	if ((locdat[loc] & 1024) == 1024)
X	    spk = 184;
X	else
X	    spk = 74;
X    } else
X	spk = 48;
X    speak(spk);
X}
X
Xvdrop()
X{
X    int             d, i, ambig, ddflg, empty, plce, plural, kkwr, kk, spk;
X
X    /* special code for "drop something into bowl" */
X
X    if (prepio != 0 && !(prepio == IN && iobj == BOWL)) {
X	speak(28);
X	return;
X    }
X    /* convert dobjs(1) (noun) list into list of objects (pointers) */
X
X    ambig = !cnvobj();
X    if (allflg)
X	getall();
X    for (i = 0; i < 30; i++) {
X	ddflg = 0;
X	empty = 1;
X	d = dobjs[i];
X	if (d == 0)
X	    continue;
X	/* see if it is here */
X
X	itsher(d, &plce);
X	if (allflg && ((plce != 1 && plce != 2) || d > MOVMAX))
X	    continue;
X	if (dobjs[1] != 0 || allflg)
X	    speak(odistb[d]);
X	plural = (obpprp[d] & 256) == 256;
X	if (d > MOVMAX)
X	    spk = 48;
X	else if (plce == 2) {
X	    spk = 88;
X	    if (plural)
X		spk = 194;
X	} else if (d == ZWIRE && plce != 1) {
X	    for (kkwr = 0; kkwr < 6; kkwr++)
X		if (wirelc[kkwr] == 1000)
X		    wirelc[kkwr] = loc;
X	    if (obloc[d] == loc && wirelc[5] == loc) {
X		for (kkwr = 0; kkwr < 6; kkwr++)
X		    wirelc[kkwr] = 0;
X	    }
X	    spk = 82;
X	} else if (plce == 0 || plce == 4 || plce == 5) {
X	    spk = 89;
X	    if (plural)
X		spk = 195;
X	} else if (d == ZSEED && (wrdnum[0] == DROP || wrdnum[0] == THROW)) {
X	    if (loc == 100) {
X		spk = 340;
X		obimpr[ZSEED] = 0;
X	    } else if (loc == 131 || loc == 99) {
X		spk = 338;
X		obimpr[ZSEED] = 3;
X	    } else {
X		obimpr[ZSEED] = 0;
X		spk = 337;
X	    }
X	    obloc[ZSEED] = 0;
X	} else if (d == CFISH && obloc[d] ==
X		   (2000 + PLBAG) && (obimpr[PLBAG] / 512 == 5))
X	    spk = 76;
X	/*
X	 * code for knocking the puck out of the arena loc38 is center of
X	 * bowl, 23-37 are the rim  
X         */
X
X	else if (iobj == BOWL) {
X	    if (loc < 32 || loc > 38)
X		spk = 156;
X	    else {
X		if (d == RBOULD && loc != 38) {
X		    itsher(RBOULD, &plce);
X		    /* marflg[1] tells if martians are there */
X
X		    if (marflg[1]) {
X			speak(157);
X			vdead();
X			oldloc = 0;
X			oldlc2 = 0;
X			return;
X		    } else {
X			if (obloc[HPUCK] == 38) {
X			    /*
X			     * the next line tells if other rim is low or
X			     * high 
X                             */
X
X			    if ((loc & 1) == 1) {
X				/* we shoot the puck out */
X
X				spk = 158;
X				obloc[RBOULD] = 38;
X				obloc[HPUCK] = loc + 3;
X				if (obloc[HPUCK] > 37)
X				    obloc[HPUCK] -= 6;
X			    } else {
X				spk = 159;
X				obloc[RBOULD] = 38;
X			    }
X			} else {
X			    /* in this  case it settles back in  */
X
X			    if ((loc & 1) == 1) {
X				spk = 160;
X				obloc[RBOULD] = loc + 3;
X				if (obloc[RBOULD] > 37)
X				    obloc[RBOULD] -= 6;
X			    } else {
X				spk = 161;
X				obloc[RBOULD] = 38;
X			    }
X			}
X			/* smash the other items in the bowl  */
X
X			for (kk = 1; kk <= MOVMAX; kk++) {
X			    if (kk == RBOULD || kk == HPUCK)
X				continue;
X			    if (obloc[kk] == 38) {
X				obloc[kk] = 0;
X				empty = 0;
X			    }
X			}
X		    }
X		} else {
X		    spk = 75;
X		    obloc[d] = 38;
X		    ddflg = 1;
X		}
X	    }
X	} else {
X	    if (d == ZCAT)
X		spk = 334;
X	    else if (d == RBOULD)
X		spk = 335;
X	    else if (d == ZORCHI && loc == 87)
X		spk = 432;
X	    else if (d == ZFLYTR && loc == 87)
X		spk = 433;
X	    else
X		spk = 82;
X	    obloc[d] = loc;
X	    ddflg = 1;
X	}
X	if (d == ZLATEX && ddflg == 1)
X	    obimpr[d] = 337;
X	xindnt += 2;
X	speak(spk);
X	xindnt -= 2;
X	if (empty != 1) {
X	    xindnt += 4;
X	    speak(162);
X	    xindnt -= 4;
X	}
X    }
X}
X
Xveat()
X{
X    int             d, l, spk, plce;
X    /* don't eat shit  */
X
X    if (dobjs[0] == NSHIT) {
X	dirty += 1;
X	spk = 179;
X    }
X    /* id love for you to do it, but please don't make mama mad  */
X
X    else if (dobjs[0] == ME) {
X	dirty += 1;
X	spk = 183;
X    } else {
X	d = getobj(dobjs[0], doadjs[0]);
X	/* see if its here */
X
X	if (d <= 0) {
X	    speak(48);
X	    return;
X	}
X	itsher(d, &plce);
X	if (plce <= 0) {
X	    spk = 66;
X	    if ((obpprp[d] & 256) == 256)
X		spk = 185;
X	} else {
X	    /* poison!   */
X
X	    if ((obpprp[d] & 8) == 8) {
X		if (d == CFISH && obloc[d] ==
X		    (2000 + PLBAG) && (obimpr[PLBAG] / 512 == 5)) {
X		    speak(76);
X		    return;
X		}
X		speak(181);
X		oldloc = 0;
X		oldlc2 = 0;
X		if (d <= MOVMAX)
X		    obloc[d] = 0;
X		vdead();
X		return;
X	    }
X	    /* it's edible, and delicious   */
X
X	    else if ((obpprp[d] & 4) == 4) {
X		spk = 180;
X		if (d <= MOVMAX)
X		    obloc[d] = 0;
X		if (d != BBALL)
X		    eattim = 0;
X		if (d == CEGG) {
X		    spk = 478;
X		    obloc[SCOIN] = 1000;
X		}
X		if (d == LETTUC)
X		    eattim = 150;
X		if (d == BBALL) {
X		    lpill = 1;
X		    spk = 522;
X		    bonus += 5;
X		    dcombi = (qrand() % 31);
X		    if (dcombi == 0)
X			dcombi = 1;
X		    l = (qrand() % 31);
X		    if (l == 0)
X			l = 22;
X		    dcombi = dcombi * 32 + l;
X		    l = (qrand() % 31);
X		    if (l == 0)
X			l = 3;
X		    dcombi = dcombi * 32 + l;
X                }
X		/* inedible  */
X
X	    } else
X		spk = 182;
X	}
X    }
X    speak(spk);
X}
X
X
X
Xvfill()
X{
X    int             result, z, z2, spk, i, empty, plce;
X    result = 0;
X    z = dobjs[0];
X    spk = 48;
X    if (dobjs[0] == FUNNEL && iobj == WATER) {
X	result = 1;
X	dobjs[0] = WATER;
X	iobj = FUNNEL;
X	ioadj = doadjs[0];
X	doadjs[0] = 0;
X	prepio = IN;
X	return (result);
X    }
X    if (dobjs[0] == TUBE) {
X	speak(494);
X	return (result);
X    }
X    /* fill the bag or bucket with water or latex  */
X
X    empty = 1;
X    if (z == BUCKET) {
X	for (i = 1; i <= OBJMAX; i++)
X	    if (obloc[i] == 2039)
X		empty = 0;
X    }
X    if (z == BUCKET && iobj == LATEX && obloc[ZLATEX] == 66 &&
X	prepio == WITH && loc == 66) {
X	if (obimpr[ZBUCKE] == 1033)
X	    spk = 274;
X	else if (empty == 0)
X	    spk = 275;
X	else {
X	    obloc[ZLATEX] = 2000 + ZBUCKE;
X	    obimpr[ZBUCKE] = 1545;
X	    obimpr[ZLATEX] = 265;
X	    spk = 75;
X	}
X    } else if ((z == BAG && (doadjs[0] == 0 || doadjs[0] == PLASTI)) ||
X	       (z == BUCKET && doadjs[0] == 0)) {
X	if ((prepio == WITH && iobj == WATER) ||
X	    (((locdat[loc] & 1024) == 1024) && prepio == 0
X	     && iobj == 0)) {
X	    z2 = ZBUCKE;
X	    if (z == BAG)
X		z2 = PLBAG;
X	    itsher(z2, &plce);
X	    if (plce == 0)
X		spk = 73;
X	    else if ((locdat[loc] & 1024) != 1024 && ((obloc[ZBUCKE]
X			  != loc && obloc[ZBUCKE] != 1000) || obimpr[ZBUCKE]
X						      != 1033))
X		spk = 74;
X	    else if (empty == 1) {
X		if (z2 == PLBAG)
X		    obimpr[z2] = 2697;
X		else
X		    obimpr[z2] = 1033;
X		spk = 75;
X		obloc[z2] = 1000;
X	    } else
X		spk = 275;
X	} else if (iobj == 0)
X	    spk = 278;
X    }
X    speak(spk);
X    return (result);
X}
X
Xvfuck()
X{
X    if (dirty < 10)
X	speak(495);
X    else if (dirty > 20)
X	speak(497);
X    else
X	speak(496);
X}
X
X
Xvget()
X{
X    int             spk, result;
X    result = 0;
X    spk = 0;
X    if (prepdo == IN && dobjs[0] == CHAIR && (loc == 166 ||
X					      loc == 175)) {
X	spcloc = 2;
X	spk = 510;
X    }
X    /* get up is a joke  */
X
X    else if (prepdo == UP) {
X	if (dobjs[0] == 0 && spcloc == 2) {
X	    spk = 511;
X	    spcloc = 0;
X	} else
X	    spk = 208;
X    }
X    /* get on or off glass plate   */
X
X    else if (dobjs[0] == GLASS && (doadjs[0]
X			     == 0 || doadjs[0] == GLASS) && dobjs[1] == 0) {
X	if (prepdo == OFF && spcloc == 1) {
X	    spcloc = 0;
X	    spk = 75;
X	} else if (prepdo == ON && spcloc == 0) {
X	    spcloc = 1;
X	    spk = 75;
X	}
X    }
X    /* get something  means take it */
X
X    else if (prepdo == ON || prepdo == OFF)
X	spk = 71;
X    else
X	result = 1;
X    /* this results in calling vtake  */
X
X    if (spk != 0)
X	speak(spk);
X    return (result);
X}
X
Xvgive()
X{
X    int             spk, ij, iplce, dj, dplce;
X    spk = 0;
X    if (iobj == ME)
X	spk = 445;
X    else if (iobj == GUARD) {
X	if (loc == guardl || loc == 171 || (chaset != 0 &&
X					    chaset <= 9))
X	    spk = 562;
X	else
X	    spk = 561;
X    } else if (iobj == MARTIA) {
X	if (martim == 7 && loc >= 27 && loc <= 51)
X	    spk = 446;
X	else
X	    spk = 168;
X    } else if (iobj == FERRET && !(loc == 131 || loc == 99
X				   || loc == 100))
X	spk = 447;
X    else if (iobj != CAT && iobj != BIRD && iobj != BEES &&
X	     iobj != FROG && iobj != ROBOT)
X	spk = 448;
X    else {
X	ij = getobj(iobj, ioadj);
X	if (iobj == BIRD && ij < 0)
X	    ij = YBIRD;
X	itsher(ij, &iplce);
X	if (iplce == 0) {
X	    if (iobj == CAT)
X		spk = 449;
X	    else if (iobj == BEES)
X		spk = 450;
X	    else if (iobj == FROG)
X		spk = 451;
X	    else if (iobj == ROBOT)
X		spk = 452;
X	    else if (iobj == BIRD)
X		spk = 453;
X	} else {
X	    if (iobj == FROG)
X		spk = 454;
X	    else if (iobj == BIRD)
X		spk = 455;
X	}
X    }
X    if (spk != 0) {
X	speak(spk);
X	return;
X    }
X    dj = getobj(dobjs[0], doadjs[0]);
X    if (dj < 0)
X	spk = 70;
X    else if (dj == 0)
X	spk = 28;
X    else {
X	itsher(dj, &dplce);
X	if (dplce == 0) {
X	    if ((obimpr[dj] & 256) != 0)
X		spk = 185;
X	    else
X		spk = 89;
X	} else if (obloc[dj] == 2000 + ij)
X	    spk = 456;
X	else if (dj > MOVMAX)
X	    spk = odistb[dj + 1] - 1;
X	else if (dplce > 3)
X	    spk = 458;
X	else;
X    }
X    if (spk != 0) {
X	speak(spk);
X	return;
X    }
X    /* at this point you have it, and someone is here to take it. */
X
X    if (iobj == CAT) {
X	if (dobjs[0] == FISH) {
X	    spk = 459;
X	    obloc[dj] = 0;
X	} else if ((obpprp[dj] & 12) != 0)
X	    spk = 460;
X	else
X	    spk = 461;
X    } else if (iobj == FERRET) {
X	if (dobjs[0] == EGG || dobjs[0] == FISH || dobjs[0] == CAT) {
X	    spk = 462;
X	    obloc[dj] = 0;
X	} else if ((obpprp[dj] & 12) != 0)
X	    spk = 464;
X	else {
X	    spk = 463;
X	    obloc[dj] = 0;
X	}
X    } else if (iobj == BEES) {
X	if (iobj != ORCHID && iobj != FLYTRA)
X	    spk = 465;
X	else if (iobj == ORCHID) {
X	    spk = 432;
X	    obloc[dj] = loc;
X	} else {
X	    spk = 433;
X	    obloc[dj] = loc;
X	}
X    } else if (iobj == ROBOT) {
X	if (obloc[ZCART] != RSLOT + 2000 && obloc[CCART] != RSLOT + 2000)
X	    spk = 466;
X	else if (obw3[dj] / 256 > 1 || (obw3[dj] & 255) > 2)
X	    spk = 352;
X	else {
X	    spk = 345;
X	    obloc[dj] = 2000 + ZROBOT;
X	}
X    }
X    speak(spk);
X}
X
Xvhelp()
X{
X    speak(105);
X}
X
X
Xvkiss()
X{
X    int             result, spk, cplce;
X    /* if vkiss ends up 1, call vpush */
X
X    result = 0;
X    if (dobjs[0] == FROG && loc == 67)
X	spk = 468;
X    else if (dobjs[0] == GUARD) {
X	if (loc == guardl || loc == 171 || (chaset != 0 && chaset <= 9))
X	    spk = 562;
X	else
X	    spk = 561;
X    } else if (dobjs[0] == FERRET && (loc == 131 || loc == 100 || loc == 99))
X	spk = 469;
X    else if (dobjs[0] == CAT) {
X	itsher(ZCAT, &cplce);
X	if (cplce != 0)
X	    spk = 470;
X	else
X	    spk = 449;
X    } else if (dobjs[0] == ME)
X	spk = 471;
X    else if (dobjs[0] == BIRD || dobjs[0] == BEES || dobjs[0] == ROBOT)
X	spk = 472;
X    else
X	result = 1;
X    if (result == 0)
X	speak(spk);
X    return (result);
X}
X
Xvlocks()
X{
X    int             n, plce, spk;
X    n = getobj(dobjs[0], doadjs[0]);
X    if (n < 0)
X	spk = 70;
X    else if (n == 0)
X	spk = 28;
X    else if ((obpprp[n] & 512) != 512 && n != ZBOX)
X	spk = 233;
X    else {
X	itsher(n, &plce);
X	if (plce <= 0) {
X	    if (dobjs[0] == DOOR)
X		spk = 225;
X	    else
X		spk = 66;
X	} else if (n == ZBOX)
X	    spk = 389;
X	else if (n == ODOOR || n == PDOOR)
X	    spk = 524;
X	else if (prepio == WITH && iobj == KEY) {
X	    if (n == RDOOR || (n == MDOOR && loc == 41))
X		spk = 235;
X	    else if (n == MDOOR || n == GDOOR) {
X		if (wrdnum[0] == LOCK)
X		    obimpr[n] |= 4;
X		else
X		    obimpr[n] = (obimpr[n] & ~4);
X		/* ~4=177773 octal */
X
X		spk = 75;
X	    } else
X		spk = 48;
X	} else
X	    spk = 234;
X    }
X    speak(spk);
X}
X
X    static   char   strng3[] = "The left dial is set to     and the right to    .";
X    static   char   strng4[] = "are     for the left and     for the right.";
Xvlooks()
X/*
X * look or examine 
X */
X
X{
X    char            cnum[4];
X
X    int             kk, zplce, spk, kkwr, lwire, n, plce, u, empty;
X
X    if ((prepdo == THROUG && dobjs[0] == TELESC && wrdnum[0] ==
X	 LOOK) || (wrdnum[0] == EXAMIN && dobjs[0] == PLANET &&
X		   prepio == WITH && iobj == TELESC)) {
X	if (loc >= 175 && loc <= 181)
X	    spk = loc + 326;
X	else if (loc == 184 || loc == 187)
X	    spk = 507;
X	else
X	    spk = 48;
X	speak(spk);
X	return;
X    }
X    if ((loc >= 43 && loc <= 45) && (dobjs[0] == HOLE || dobjs[0]
X				     == DOOR)) {
X	if (daytim == 1)
X	    speak(173);
X	else
X	    speak(174);
X	return;
X    }
X    if (dobjs[0] == HOUSE && (doadjs[0] == 0 || doadjs[0] == DOLL)
X	&& prepdo == IN) {
X	if (loc != 132)
X	    speak(481);
X	else if (obimpr[CEGG] > 4096) {
X	    speak(479);
X	    obloc[CEGG] = 132;
X	} else
X	    speak(480);
X	return;
X    }
X    /* you can't examine things at night unless they glow  */
X
X    if (daytim == 0 && dobjs[0] != SPHERE) {
X	speak(120);
X	return;
X    }
X    if (wrdnum[0] == EXAMIN)
X	prepdo = AT;
X    if (dobjs[0] == TELESC) {
X	if ((loc >= 175 && loc <= 181) || loc == 184 || loc == 187)
X	    speak(534);
X	else
X	    speak(535);
X	return;
X    }
X    /* if you look behind horsetails, there is a cave  */
X
X    if (prepio == 0 && prepdo == BEHIND && loc == 169 &&
X	dobjs[0] == CABINE) {
X	speak(523);
X	return;
X    }
X    if (prepio == 0 && prepdo == BEHIND && loc == 24) {
X	if (dobjs[0] == HORSET) {
X	    speak(119);
X	    horflg = 1;
X	    return;
X	} else if (dobjs[0] == WATERF) {
X	    speak(493);
X	    horflg = 1;
X	    return;
X	}
X    }
X    /*
X     * in the (hockey) bowl you can only see if something is there, not what
X     * it is  
X     */
X
X    if (prepdo == IN && dobjs[0] == BOWL && (loc >= 32 && loc <= 37)) {
X	empty = 1;
X	for (kk = 1; kk <= MOVMAX; kk++)
X	    if (obloc[kk] == 38)
X		empty = 0;
X	if (empty == 1)
X	    speak(7);
X	else
X	    speak(163);
X	return;
X    }
X    if ((loc == 28) && (dobjs[0] == STOOLS || dobjs[0] == STOOL ||
X	     dobjs[0] == BOWL) && (doadjs[0] == 0 || doadjs[0] == CERAMI)) {
X	speak(176);
X	return;
X    }
X    /* various martian things  */
X
X    if (loc == 42 && (dobjs[0] == STOOLS || dobjs[0] == BOWL)) {
X	speak(177);
X	spcloc = 0;
X	return;
X    }
X    if (loc == 30 && (dobjs[0] == BUILDI || dobjs[0] == WINDOW)
X	&& prepdo == IN) {
X	speak(174);
X	return;
X    }
X    if (dobjs[0] == CACTUS && loc == 82 && wrdnum[0] == EXAMIN) {
X	if (pct(25) && (cactsc & 2) == 0) {
X	    speak(371);
X	    cactsc += 2;
X	    if (cactsc == 3)
X		speak(439);
X	} else if ((cactsc & 1) == 0) {
X	    speak(370);
X	    cactsc += 1;
X	    if (cactsc == 3)
X		speak(439);
X	} else
X	    speak(237);
X	return;
X    }
X    if (dobjs[0] == DIAL) {
X	itsher(ZBOX, &zplce);
X	if (zplce == 0)
X	    speak(388);
X	else {
X	    numcvt(dial1, cnum);
X	    strng3[24] = cnum[1];
X	    strng3[25] = cnum[2];
X	    strng3[26] = cnum[3];
X	    numcvt(dial2, cnum);
X	    strng3[45] = cnum[1];
X	    strng3[46] = cnum[2];
X	    strng3[47] = cnum[3];
X	    linout(strng3, 49);
X	}
X	return;
X    }
X    /*
X     * special code for anything other than "look at object" or "look in
X     * container" gotes above here 
X     */
X
X    n = getobj(dobjs[0], doadjs[0]);
X    if (prepio != 0 || (prepdo != AT && prepdo != IN)) {
X	speak(94);
X	return;
X    }
X    if (n == 0) {
X	speak(95);
X	return;
X    } else if (n < 0) {
X	speak(70);
X	return;
X    }
X    itsher(n, &plce);
X    lwire = 0;
X    /* special code for wire in several places at once  */
X
X    if (n == ZWIRE) {
X	for (kkwr = 0; kkwr < 6; kkwr++)
X	    if (wirelc[kkwr] == loc)
X		lwire = 1;
X    }
X    if (plce < 1 && !lwire) {
X	if ((obpprp[n] & 256) == 256)
X	    speak(185);
X	else
X	    speak(66);
X	return;
X    }
X    if (plce < 1 && n == ZWIRE && lwire) {
X	speak(215);
X	return;
X    }
X    /* the generic "look at" processor  */
X
X    if (prepdo == AT) {
X	u = (obimpr[n] / 64 % 8);
X	if (u == 0) {
X	    if ((obpprp[n] & 256) == 256)
X		speak(193);
X	    else
X		speak(96);
X	}
X	/* zzzzzzap if not standing on glass while looking at knob  */
X
X	else if ((n == ZSTOOL || n == ZKNOB) && spcloc == 1)
X	    speak(237);
X	else if (n == ZANTEN) {
X	    if (obloc[DCABLE] == 2000 + ZANTEN) {
X		speak(odistb[n] + 1);
X		obimpr[DCABLE] = 137;
X	    } else if (obloc[GCABLE] == 2000 + ZANTEN)
X		speak(odistb[n] + 2);
X	    else
X		speak(odistb[n] + 3);
X	} else {
X	    if ((n == MMAP || n == NNEWS || n == TMACH || n == NNOTE
X		 ) && loc >= 153 && lpill == 1)
X		u += 1;
X	    speak(odistb[n] + u);
X	    if (n == NNOTE && lpill == 1)
X		nreadx();
X	    if (n == ZSCREE && obimpr[n] == 145 && loc == 146)
X		robdsc();
X	    if (dobjs[0] == BOX) {
X		numcvt(dial1, cnum);
X		strng3[24] = cnum[1];
X		strng3[25] = cnum[2];
X		strng3[26] = cnum[3];
X		numcvt(dial2, cnum);
X		strng3[45] = cnum[1];
X		strng3[46] = cnum[2];
X		strng3[47] = cnum[3];
X		linout(strng3, 49);
X	    }
X	    if (dobjs[0] == FILM && obimpr[ZFILM] == 201) {
X		wwflag = 1;
X		speak(odistb[fimage]);
X		wwflag = 0;
X		outst2[0] |= 32;
X                outst2[kmax] = '.';
X                outst2[kmax+1] = '\0';
X		linout(outst2, kmax+1);
X		if (fimage == ZBOX) {
X		    speak(404);
X		    numcvt(dial1x, cnum);
X		    strng4[4] = cnum[1];
X		    strng4[5] = cnum[2];
X		    strng4[6] = cnum[3];
X		    numcvt(dial2x, cnum);
X		    strng4[25] = cnum[1];
X		    strng4[26] = cnum[2];
X		    strng4[27] = cnum[3];
X		    linout(strng4, 49);
X		}
X	    }
X	    /*
X	     * special code for flags set by looking at or in object goes
X	     * below here  
X             */
X
X	    if (n == PPHOTO)
X		horflg = 1;
X	}
X    }
X    if (obpprp[n] / 2048 != 0)
X	xcontn(n);
X    else if (prepdo == IN)
X	speak(97);
X    return;
X}
X
Xvopen()
X{
X    int             spk, n, plce;
X    if (prepdo != 0 && prepio != 0)
X	spk = 21;
X    /* there is no door on the bar to open or close  */
X
X    else if ((loc == 30 || loc == 42) && dobjs[0] == DOOR)
X	spk = 224;
X    /* open doors or containers  */
X
X    else {
X	n = getobj(dobjs[0], doadjs[0]);
X	if (dobjs[0] == DOOR && (loc == 184 || loc == 187 ||
X				 (loc >= 176 && loc <= 181)))
X	    n = BDOOR;
X	if (n < 0)
X	    spk = 70;
X	else if (n == 0)
X	    spk = 66;
X	/* if they can be opened */
X
X	else if ((obpprp[n] % 2) != 1) {
X	    if (obpprp[n] / 2048 != 0)
X		spk = 254;
X	    else
X		spk = 230;
X	} else {
X	    itsher(n, &plce);
X	    if (dobjs[0] == DOOR && (loc == 184 || loc == 187 ||
X				     (loc >= 176 && loc <= 181)))
X		plce = 5;
X	    if (plce <= 0) {
X		if (dobjs[0] == DOOR)
X		    spk = 225;
X		else
X		    spk = 66;
X	    }
X	    /* and aren't locked ,but are closed  */
X
X	    else if ((obimpr[n] & 4) == 4) {
X		if (n == ZBOX)
X		    spk = 389;
X		else
X		    spk = 228;
X	    } else if ((obimpr[n] & 2) == 0)
X		spk = 226;
X	    else if (dobjs[0] == DOOR && (loc <= 180 && loc >= 176))
X		spk = 546;
X	    else if (dobjs[0] == CABINE && adverb != CAREFU && adverb !=
X		     QUIETL)
X		spk = 553;
X	    else {
X		spk = 231;
X		obimpr[n] = (obimpr[n] & ~2);
X		/* ~2=177775 octal */
X
X		if (n == RDOOR || n == MDOOR || n == GDOOR || n ==
X		    ODOOR || n == BDOOR)
X		    obimpr[n] += 8;
X		if (n == ZDESK && dial1x == -1) {
X		    /*
X		     * establish the proper setting of the dials when the box
X		     * is first seen 
X                     */
X
X		    dial1x = (qrand() % 999) + 1;
X		    dial2x = (qrand() % 999) + 1;
X		}
X	    }
X	}
X    }
X    speak(spk);
X    if (spk == 553)
X	vdead();
X}
X
X
Xvpick()
X{
X    int             result;
X    result = 0;
X    /* pick up means take  */
X
X    if (prepdo == UP) {
X	prepdo = 0;
X	result = 1;
X    }
X    /* this results in calling take  */
X
X    else if (dobjs[0] == NLOCK && loc == 47)
X	speak(235);
X    else
X	speak(95);
X    return(result);
X}
X
X
Xvpiss()
X{
X    dirty += 1;
X    {
X	if (loc == 74 && (obimpr[ZVINE] & 56) == 8 && (dobjs[0]
X					== 0 || dobjs[0] == VINE)) {
X	    speak(301);
X	    obimpr[ZVINE] += 8;
X	} else if (dirty >= 5 && dirty < 10)
X	    speak(40);
X	else if (dirty >= 10) {
X	    if (obloc[LPANT] == 3000 || obloc[RPANT] == 3000)
X		speak(41);
X	    else
X		speak(42);
X	}
X    }
X}
X
X
Xvpour()
X{
X    int             result, bplce, pplce, n, plce;
X    result = 0;
X    /* if result set = 1, then call vput  */
X
X
X    if (wrdnum[0] == QWATER) {
X	prepio = ON;
X	iobj = dobjs[0];
X	ioadj = doadjs[0];
X	dobjs[0] = WATER;
X	doadjs[0] = 0;
X    }
X    if (dobjs[0] == DEET && prepio == ON && (iobj == ME
X					  || (iobj == VINE && loc == 74))) {
X	itsher(ZDEET, &plce);
X	if (plce == 0)
X	    speak(66);
X	else {
X	    speak(75);
X	    obimpr[ZDEET] = 28762;
X	    obloc[ZDEET] = 0;
X	}
X	return (result);
X    }
X    if ((dobjs[0] == DEET || dobjs[0] == METOL || dobjs[0] == HYPO)
X	&& iobj == FUNNEL) {
X	wrdnum[0] = PUT;
X	prepio = IN;
X	result = 1;
X	return (result);
X    }
X    if (iobj != 0 && iobj != POLE) {
X	n = getobj(iobj, ioadj);
X	if (n >= 0) {
X	    itsher(n, &plce);
X	}
X	if (iobj == FUNNEL && n < 0) {
X	    speak(70);
X	    return (result);
X	}
X	if (n <= 0 || plce == 0) {
X	    speak(48);
X	    return (result);
X	}
X    }
X    itsher(ZBUCKE, &bplce);
X    itsher(PLBAG, &pplce);
X    if (dobjs[0] == WATER) {
X	if (bplce != 0 && obimpr[ZBUCKE] == 1033) {
X	    if (iobj == FUNNEL) {
X		if (n == LFUNNE || n == RFUNNE) {
X		    speak(402);
X		    if (obimpr[RLIGHT] != 73) {
X			speak(400);
X			obimpr[RLIGHT] = 73;
X			obimpr[GLIGHT] = 73;
X		    }
X		    machst |= machst;
X		    return(result);
X		} else {
X		    if ((machst & 2) == 0)
X			speak(397);
X		    machst |= 2;
X		    obimpr[ZINDIC] = 145;
X		    if ((machst & 16) != 0 && (machst & 1) == 0 &&
X                                       obimpr[RLIGHT] == 73) {
X			speak(399);
X			obimpr[RLIGHT] = 145;
X			obimpr[GLIGHT] = 145;
X		    }
X		}
X	    } else if (loc != 74 || (obimpr[ZVINE] & 56) != 8)
X		speak(247);
X	    else {
X		speak(301);
X		obimpr[ZVINE] = obimpr[ZVINE] + 8;
X	    }
X	    obimpr[ZBUCKE] = 1545;
X	} else if (pplce != 0 && obimpr[PLBAG] == 2697)
X	    speak(248);
X	else
X	    speak(48);
X    } else if (dobjs[0] == LATEX && obloc[ZLATEX] == 2000 + ZBUCKE
X	       && bplce != 0 && (obimpr[ZLATEX] & 56) == 8) {
X	if (loc != 76 || iobj != POLE) {
X	    speak(279);
X	    obimpr[ZLATEX] = obimpr[ZLATEX] + 72;
X	} else {
X	    speak(75);
X	    obimpr[ZLATEX] = obimpr[ZLATEX] + 80;
X	}
X	obloc[ZLATEX] = loc;
X    } else
X	speak(48);
X    return (result);
X}
X
X
Xvpush()
X{
X    int             result, numbr, ndo, nio, spk, xfilm;
X    result = 0;
X    /* push is also touch   */
X
X    if ((loc == 165 || loc == 173) && dobjs[0] > 9999) {
X	numbr = dobjs[0] - 10000;
X	if ((loc == 165 && numbr > 30) || (loc == 173 && numbr > 99))
X	    speak(532);
X	else if (loc == 165) {
X	    pbstat = (pbstat & 1023) * 32 + numbr;
X	    if (pbstat == dcombi) {
X		speak(530);
X		/* ~4=177773 octal */
X
X		obimpr[ODOOR] = (obimpr[ODOOR] & ~4);
X	    } else
X		speak(238);
X	} else
X	    speak(238);
X	return (result);
X    }
X    if (dobjs[0] == CACTUS && loc == 82) {
X	if (pct(25) && (cactsc & 2) == 0) {
X	    speak(371);
X	    cactsc = cactsc + 2;
X	    if (cactsc == 3)
X		speak(439);
X	} else if ((cactsc & 1) == 0) {
X	    speak(370);
X	    cactsc = cactsc + 1;
X	    if (cactsc == 3)
X		speak(439);
X	} else
X	    speak(237);
X	return (result);
X    }
X    if (dobjs[0] == GUARD) {
X	if (loc == guardl || loc == 171 || (chaset != 0 && chaset <= 9))
X	    speak(562);
X	else
X	    speak(561);
X	return (result);
X    }
X    ndo = 0;
X    nio = 0;
X    if (dobjs[0] != 0)
X	ndo = getobj(dobjs[0], doadjs[0]);
X    if (iobj != 0)
X	nio = getobj(iobj, ioadj);
X    /*
X     * unlocking the door to warehouse by touching wire to it if wire is
X     * connected to knob in bar 
X     */
X
X    if ((ndo == MDIMPL && nio == ZWIRE && prepio == WITH) ||
X	(ndo == ZWIRE && nio == MDIMPL && prepio == TO) &&
X	loc == 47) {
X	if (obloc[ZWIRE] != loc && wirelc[0] != loc && wirelc[1] !=
X	    loc && wirelc[2] != loc && wirelc[3] != loc &&
X	    wirelc[4] != loc && wirelc[5] != 1000 && obloc[ZWIRE]
X	    != 1000)
X	    spk = 213;
X	/* first test is for connection to knob */
X
X	else if (((obimpr[ZWIRE] / 8) % 8) == 4 && (wirelc[5] == 1000
X						    || wirelc[5] == loc)) {
X	    spk = 238;
X	    /* ~4=177773 octal */
X
X	    obimpr[RDOOR] = (obimpr[RDOOR] & ~4);
X	} else
X	    spk = 237;
X    } else if ((ndo == ZKNOB || nio == ZKNOB) && loc == 42 && spcloc != 1)
X	spk = 207;
X    else if (ndo == ZLOUVE && (loc == 98 || loc == 142) &&
X	     obimpr[ZLOUVE] == 1) {
X	spk = 282;
X	obimpr[ZLOUVE] = 9;
X    } else if (dobjs[0] == BUTTON) {
X	if (ndo == -1)
X	    spk = 70;
X	else if (ndo == SBUTTO && loc == 146) {
X	    locdat[144] |= 16;
X	    locdat[145] |= 16;
X	    locdat[147] |= 16;
X	    locdat[148] |= 16;
X	    locdat[150] |= 16;
X	    spk = 238;
X	} else if (ndo == RBUTTO && loc == 146) {
X	    speak(383);
X	    result = 1;
X	    return(result);
X	} else if (ndo == HBUTTO && loc == 146) {
X	    if (easttm == 0)
X		easttm = 1;
X	    spk = 238;
X	} else if (ndo == TBUTTO && loc == 146) {
X	    if (easttm == 51)
X		easttm = 52;
X	    spk = 238;
X	} else if (ndo == GBUTTO && loc == 169) {
X	    if (adverb == TWICE) {
X		spk = 525;
X		obimpr[HMURAL] = 209;
X		bonus = bonus + 5;
X		chaset = 1;
X		oldlc2 = 0;
X		oldloc = 0;
X	    } else
X		spk = 238;
X	} else if (ndo == RDBUTT && loc == 143) {
X	    if ((machst & 51) != 18)
X		spk = 237;
X	    else {
X		speak(398);
X		xfilm = (filmtm % 1000);
X		if (xfilm >= 3 && xfilm <= 6 && filmtm < 2000 && machst == 30) {
X		    if (filmst == 0)
X			obimpr[ZFILM] = obimpr[ZFILM] + 64;
X		    else
X			obimpr[ZFILM] = obimpr[ZFILM] + 128;
X		} else if ((machst & 12) != 12)
X		    obimpr[ZFILM] = obimpr[ZFILM] + 192;
X		else;
X		obloc[ZFILM] = 2000 + ZHOPPE;
X		machst = 33;
X		return (result);
X	    }
X	} else if (loc == 134 && (ndo == VBUTTO || ndo == OBUTTO ||
X				  ndo == WBUTTO || ndo == BBUTTO)) {
X	    if (obloc[GDISC] == 2000 + ZRECES && rvtim != 2)
X		spk = 411;
X	    else if (obloc[GDISC] == 2000 + ZRECES && rvtim == 2 &&
X		     obloc[GCABLE] != 2000 + ZANTEN)
X		spk = 421;
X	    else if (obloc[GDISC] == 2000 + ZRECES && rvtim == 2) {
X		if (ndo == VBUTTO) {
X		    spk = 415;
X		    result = 2;
X		} else if (ndo == OBUTTO) {
X		    spk = 416;
X		    result = 3;
X		} else if (ndo == BBUTTO) {
X		    spk = 417;
X		    result = 4;
X		} else {
X		    spk = 418;
X		    result = 5;
X		}
X	    } else
X		spk = 238;
X	} else
X	    spk = 419;
X    } else
X	spk = 236;
X    speak(spk);
X    return (result);
X}
END_OF_verbs1.c
if test 30154 -ne `wc -c <verbs1.c`; then
    echo shar: \"verbs1.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f vocab.dat -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"vocab.dat\"
else
echo shar: Extracting \"vocab.dat\" \(8317 characters\)
sed "s/^X//" >vocab.dat <<'END_OF_vocab.dat'
X*THIS FILE CONTAINS THE VOCABULARY DATA FOR THE GAME
X*IT IS CONVERTED INTO FORTRAN CODE BY THE PROGRAM 'VCONVRT'
X*A * IN THE FIRST COLUMN IS A COMMENT
X*A + IN THE FIRST COLUMN MEANS THAT THE CURRENT WORD IS A SYNONYM
X* OF THE PREVIOUS WORD.
X*A NUMBER IN THE FIRST COLUMN INDICATES THE START OF A NEW SECTION
X0
X*BUZZWORDS: TOTALLY IGNORED IN PROCESSING,EXCEPT FOR "OF" IN ONE CASE
XA                                                          ZZA
XAN                                                         ZZAN
XTHE                                                        ZZTHE
XOF
X1
X*ADVERBS
XQUICKLY
X+RAPIDLY
XSLOWLY
XCAREFULLY
X+CAUTIOUSLY
XQUIETLY
X+SOFTLY
XTWICE
XWHERE
XWHAT
X2
X*THE VERBS ARE FOLLOWED BY TWO WORDS IN  **BINARY** WHICH INDICATE THEIR
X*SYNTAX WITH OBJECTS AND PREPOSITIONS
X*THE FIRST WORD TELLS WHETHER THE VERB TAKE A DIRECT OBJECT WITH A
X*PARTICULAR PREPOSITION (I.E. SIT IN THE CHAIR). THE PREPOSITIONS
X*ARE, IN ORDER (THE RIGHTMOST IS BIT 0) FOR,THROUGH,OVER,BEHIND,UNDER,OFF,
X*   FROM,TO,AT,WITH,ON,OUT,IN,DOWN,UP 
X*THE SECOND WORD TELLS WHETHER THE VERB TAKES INDIRECT (I.E. SECOND) OBJECTS
X*WITH THE SAME PREPOSITIONS (E.G. DROP THE CARD IN THE SLOT).
X*THIS IS FOLLOWED BY A BYTE IN BINARY WHICH TELLS FROM HIGH TO LOW BIT
X*LEFT TO RIGHT WHETHER:
X*BIT 0: THE D.O. PREPOSITION MAY FOLLOW THE D.O.:: TURN THE LIGHTS OFF.
X*BIT 1: TAKES "DOWN" LIKE AN OBJECT:: SIT DOWN
X*BIT 2: TAKES "UP" LIKE AN OBJECT:: GET UP
X*BIT 3: TAKES I.O. WITH NO PREPOSITION:: GIVE THE FROG A BATH (FROG IS I.O.)
X*BIT 4: TAKES D.O. WITH NO PREPOSITION:: KISS THE FROG (FROG IS D.O.)
X*BIT 5: TAKES MULTIPLE D.O.'S
X*BIT 6: REQUIRES AN I.O.
X*BIT 7: REQUIRES A D.O.
X*
X*
X*        THE SAME WORD CAN BE BOTH A NOUN AND A VERB
X*        BUT ONE OR THE OTHER SHOULD HAVE A SPECIAL SYMBOL IN
X*        COLUMN 60. THE VERB'S SPECIAL SYMBOL CAN'T START IN "V"
X*        AND THE NOUN'S SHOULDN'T START IN "Z"
X*VERBS
XRUN           010000110001111  000000000000000   00010110
X+RUSH
XCRAWL         011110110001111  000000000000000   00010110
X+SLITHER
XJUMP          011001010010000  000000000000000   00000000
XCLIMB         011000000011111  000000000000000   00010110
XASCEND        000000000000000  000000000000000   00010000
XDESCEND       000000000000000  000000000000000   00010000
XSWIM          000000010000100  000000000000000   10010110
XCROSS         001000000000000  000000000010000   00010000
XGO            010110110001111  000000000000000   00010110 
X+PROCEED      
X+WALK
X+TRAVEL
XTAKE          000001000000000  000000100100000   10110001   
X+CATCH
XCARRY         000000000000000  000000000000000   10110000
XREMOVE        000000000000000  000000100000000   10010000
X+UNTIE
X+DETACH
XDROP          000000000000000  010111000010100   10110000
XHOLD          000000000000000  000000000000000   10010000
XFREEZE        000000000000000  000000000000000   10010000
XSIT           000110000010100  000000000000000   00000010
X+LIE
XSTAND         000000000010000  000000000000000   00000100
XGET           000001000010001  000000100000000   00110100
XASK           000000000000000  000000000000000   00000000
XTELL          000000000000000  000000000000000   00000000
XOPEN          000000000000000  000000000100000   10010000
XSHUT          000001000000000  000000000000000   10010001
X+CLOSE
XPOUR          000000000000000  000110000010100   10010000
XEAT           000000000000000  000000000000000   10010000
XDRINK         000000000000000  000000000000000   10010000
XWASH          000000000000000  000000000000000   10010000
XTHROW         000000000000000  011000011001100   10011000
X+TOSS
XFEED          000000000000000  000000010000000   11011000
XFILL          000000000000001  000000000100001   10010001 
XIGNITE        000000000000000  000000000100000   10010000
X+BURN
XTURN          001001000010000  000000010100000   10010001
X+SET
XREAD          000000000000000  000000010000000   10010000
XBREAK         000000000000000  000000000100000   10010000
X+SMASH
XATTACH        000000000000000  000000010000000   11010000
X+TIE
X+FASTEN
XSCRATCH       000000000000000  000000000100000   10010000
X+CUT
XPICK          000000000000001  000000000100000   10010001
XWEAR          000000000000000  000000000000000   10110000
XPUT           000000000010010  000110000010100   10110001
X+PLACE
X+INSERT
XLOCK          000000000000000  000000000100000   10010000 
XUNLOCK        000000000000000  000000000100000   10010000
XLOOK          111110101011100  000000000000000   10010110
XEXAMINE       000000000000000  000000000100000   10010000
XYELL          000000000000000  000000000000000   00000000
X+SCREAM
X+SHOUT
X+SAY
XPUSH          000000000000000  011111010100000   10010000
X+PRESS
X+TOUCH
XPUNCH         000000000000000  000000000100000   10010000
X+HIT
X+KICK
XDIG           000000000100000  000000000000000   00000000
XATTACK        000000000000000  000000000100000   10010000
X+KILL
X+SLAY
X+INJURE
X+FIGHT
X+MURDER
XGIVE          000000000000000  000000010000000   11011000
X+HAND
X+DONATE
XWATER         000000000000000  000000000000000   10010000  QWATER 
XIS            000000000000000  000110000011100   10010000
XKISS          000000000000000  000000000000000   10010000
XTRANSLATE     000000000000000  000000000000000   10010000
X*THE NEXT FOUR WORDS COUNT AS BEING DIRTY
XFUCK          000000000000000  000000000000000   00010000
XPISS          000000000010000  000000000000000   00000000 
X*ALL THE VERBS BELOW HERE ARE SINGLE WORDS ONLY
XSHIT
XDAMN
XMORE                                                       QMORE
XNOMORE
XQUIT
XSUSPEND
X+SAVE
XRESTORE
XBRIEF
XVERBOSE
XSUPERBRIE
XSCORE
XHELP
XRETREAT
X+BACK
X+B
XINVENTORY
X+I
XLOCATE
X+L
XPRAY
XLAND
XACTIVATE
XDEBUG
XSHOOT
XEXHALE
XWAIT
X+NULL
X+X
XAGAIN
X+G
X3
X*ADJECTIVES
XRED
XBLUE
XGREEN
XYELLOW
XORANGE
XVIOLET
X+PURPLE
XBROWN
X+TAN
XBLACK
XWHITE
XPINK
XSILVER
XPLATINUM
XBRASS
XCOPPER
XNICKEL
XHEAVY
XCOLORFUL
XBEAUTIFUL
XRUBBER
XGOOEY
XCANVAS
XBUTTERFLY
XCHROME
XINSTANT
XCRABLIKE
XCHOCOLATE
XPLASTIC
XBROKEN
X+DAMAGED
X+BAD
XGOOD
XDOLL
XPOTTED
XVENUS
XOVEREXPOSED
XFLYING
XFIERY
X+FIRE
XVENTILATION
XFALLEN
XHOCKEY
XROUND
XCERAMIC
XMETAL
XMAGNESIUM
XHUGE
X+GIANT
X+LARGE
X+BIG
XMEDIUM
XDEAD
XFILE                                                       FILEC  
XSMALL
X+TINY
XGLOWING
XSTONE
XSILICON
XLITHIUM
XTRIANGULA
XHEXAGONAL
XSQUARE
XLEFT
XRIGHT
XMIDDLE
X+CENTER
XLEVEL
XXRAY
XMICROWAVE
XRABBIT
XFIRST
XSECOND
XTHIRD
XFOURTH
XTERRAN
X+ENGLISH
X+GVIIZM
XCYGNAN
X+XBTMZM
XVIDEO
XSULFUROUS
XVENDING
X4
X*NOUNS
X*THE FIRST EIGHT MUST BE DIRECTIONS
XNORTH
X+N
XNORTHEAST
X+NE
XEAST
X+E
XSOUTHEAST
X+SE
XSOUTH
X+S
XSOUTHWEST
X+SW
XWEST
X+W
XNORTHWEST
X+NW
XLAMP
X+LANTERN
XKNAPSACK
X+BACKPACK
X+PACK
X+SACK
XSHIT                                                       NSHIT
XPISS                                                       NPISS
XME
XSPIRE
XWATER
XLOCK                                                       NLOCK
XKEYHOLE
XTOWER
XSTOOLS
XISLAND
XSHORE
XBARRIER
XBOWL
X+BOWLS
XBUILDING
X+BAR
XWINDOW
XGLASS
X+PLATE
XWIRE
XHORSETAIL
XPTERODACT
XWATERFALL
X+FALLS
XTREE
XLOG
X+TRUNK
XCHASM
X* THE WORDS BETWEEN ROBOT AND FERRET REPRESENT SENTIENT BEINGS
XROBOT
XMARTIAN
X+MARTIANS
XCACTUS
XGUARD
XGUARDS
X+REPTILE
XFERRET
X+FERRETS
XALL
X+EVERYTHIN
XSCREWDRIV
XKNIFE
XHAMMER
XORCHID
X+ORCHIDS
XFAUCET
XSINK
XLOUVER
XBUCKET
XPITCHFORK
XSHOVEL
XPLANET
XPOLE
XTOMATO
X+TOMATOS
XLETTUCE
XCABBAGE
X+CABBAGES
XSTRAWBERR
XGRAPE
X+GRAPES
XCATWALK
XDECLINATI
XRA
XHOPPER
XOPENING
XBENCH
XCHAIR
XTUNNEL
XTELESCOPE
XMAP
XNEWSPAPER
X+PAPER
XNOTE
XACID
X+FLOW
XDEET
X+WVVG
XMETOL
X+NVGLO
XHYPO
X+SBKL
XCHEMICALS
X+XSVNRXZOH
XDARKROOM
X+WZIPILLN
XDIRECTOR
X+WRIVXGLI
XCONTROL
X+XLMGILO
XSTORAGE
X+HGLIRTV
X*WORDS BEFORE THIS CANNOT HAVE ADJECTIVES
XSAPPHIRE
XDIAMOND
XKEY
XFISH
XSHIRT
XBOOTS
XSHOES
XPANTS
XNET
XTUBE
XCAMERA
XPHOTOGRAP
X+PHOTO
X+PICTURE
XKNOB
XCOMBINATI
XDIMPLE
XSTOOL
XBAG
XFOSSIL
XMOSS
XPUCK
XBOULDER
X+ROCK
XGRAVEL
X+SCREE
XSPHERE
XCUBE
X+MONUMENT
X+INSCRIPTI
XCAT
XBIRD
X+BIRDS
XFROG
X+FROGS
XVINE
X+VINES
XLATEX
XANTENNA
XCABLE
XCOIN
XEGG
XHOUSE
XHOLE
X+HOLES
XRECESS
XDOOR
XREPELLENT
XFLYTRAP
X+FLYTRAPS
XSEED
XSTATUE
XFAMILY
XBEES
X+BEE
X+BEEHIVE
X+HIVE
XSHRUB
X+SHRUBS
XDISK
XVAPOR
X+VENT
XPIT
XMUD
XSTATUS
XPAINTING
X+DESIGN
X+DESIGNS
X+PAINTINGS
XMUSHROOM
X+MUSHROOMS
XPOOL
XNUGGET
X+GOLD
XMINERAL
X+CRYSTAL
XBUTTON
XSLOT
XCASSETE
X+CASSETTE
XCARTRIDGE
XDISC
X+DISK
XMACHINE
XDESK
XCABINET
XROD
XBOX
XDIAL
X+DIALS
XCARD
XBEAD
X+BEADS
XSCREEN
XINSECT
XFILM
XENLARGER
X+BASE
XRACK
XTRAY
XFUNNEL
XLIGHT
X+LIGHTS
XINDICATOR
XBALL
X+PILL
X+CANDY
XCLIP
XMURAL
X5
X*PREPOSITIONS
X*THE FIRST TWO MUST BE UP AND DOWN
XUP
X+U
XDOWN
X+D
XIN
X+INTO
X+INSIDE
XOUT
X+OUTSIDE
XON
X+ONTO
X+UPON
XWITH
X+USING
XAT
XTO
XFROM
XOFF
XUNDER
XBEHIND
XOVER
X+ACROSS
XTHROUGH
XFOR
XBUT
X+EXCEPT
XAND
X6
X*THIS IS THE END
END_OF_vocab.dat
if test 8317 -ne `wc -c <vocab.dat`; then
    echo shar: \"vocab.dat\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: End of archive 6 \(of 7\).
cp /dev/null ark6isdone
MISSING=""
for I in 1 2 3 4 5 6 7 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 7 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