[comp.sources.games] v12i073: cdungeon - C language port of DECUS dungeon, Part06/12

billr@saab.CNA.TEK.COM (Bill Randle) (05/15/91)

Submitted-by: ian@airs.COM
Posting-number: Volume 12, Issue 73
Archive-name: cdungeon/Part06
Environment: Unix, MS-DOS



#! /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 12)."
# Contents:  objcts.c verbs.c
# Wrapped by billr@saab on Tue May 14 16:27:39 1991
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'objcts.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'objcts.c'\"
else
echo shar: Extracting \"'objcts.c'\" \(24355 characters\)
sed "s/^X//" >'objcts.c' <<'END_OF_FILE'
X/* OAPPLI- OBJECT SPECIAL ACTION ROUTINES */
X
X/*COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142*/
X/* ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED */
X/* WRITTEN BY R. M. SUPNIK */
X
X#include "funcs.h"
X#include "vars.h"
X
Xlogical oappli_(ri, arg)
Xinteger ri;
Xinteger arg;
X{
X    /* Initialized data */
X
X    const integer mxsmp = 99;
X
X    /* System generated locals */
X    integer i__1;
X    logical ret_val;
X
X    /* Local variables */
X    logical f;
X    integer flobts, i;
X    integer j, av, io, ir, iz;
X    integer odi2 = 0, odo2 = 0;
X    integer nloc;
X
X    if (ri == 0) {
X	goto L10;
X    }
X/* 						!ZERO IS FALSE APP. */
X    if (ri <= mxsmp) {
X	goto L100;
X    }
X/* 						!SIMPLE OBJECT? */
X    if (prsvec_1.prso > 220) {
X	goto L5;
X    }
X    if (prsvec_1.prso != 0) {
X	odo2 = objcts_1.odesc2[prsvec_1.prso - 1];
X    }
XL5:
X    if (prsvec_1.prsi != 0) {
X	odi2 = objcts_1.odesc2[prsvec_1.prsi - 1];
X    }
X    av = advs_1.avehic[play_1.winner - 1];
X    flobts = FLAMBT + LITEBT + ONBT;
X    ret_val = TRUE_;
X
X    switch (ri - mxsmp) {
X	case 1:  goto L2000;
X	case 2:  goto L5000;
X	case 3:  goto L10000;
X	case 4:  goto L11000;
X	case 5:  goto L12000;
X	case 6:  goto L15000;
X	case 7:  goto L18000;
X	case 8:  goto L19000;
X	case 9:  goto L20000;
X	case 10:  goto L22000;
X	case 11:  goto L25000;
X	case 12:  goto L26000;
X	case 13:  goto L32000;
X	case 14:  goto L35000;
X	case 15:  goto L39000;
X	case 16:  goto L40000;
X	case 17:  goto L45000;
X	case 18:  goto L47000;
X	case 19:  goto L48000;
X	case 20:  goto L49000;
X	case 21:  goto L50000;
X	case 22:  goto L51000;
X	case 23:  goto L52000;
X	case 24:  goto L54000;
X	case 25:  goto L55000;
X	case 26:  goto L56000;
X	case 27:  goto L57000;
X	case 28:  goto L58000;
X	case 29:  goto L59000;
X	case 30:  goto L60000;
X	case 31:  goto L61000;
X	case 32:  goto L62000;
X    }
X    bug_(6, ri);
X
X/* RETURN HERE TO DECLARE FALSE RESULT */
X
XL10:
X    ret_val = FALSE_;
X    return ret_val;
X
X/* SIMPLE OBJECTS, PROCESSED EXTERNALLY. */
X
XL100:
X    if (ri < 32) {
X	ret_val = sobjs_(ri, arg);
X    }
X    else {
X	ret_val = nobjs_(ri, arg);
X    }
X    return ret_val;
X/* OAPPLI, PAGE 3 */
X
X/* O100--	MACHINE FUNCTION */
X
XL2000:
X    if (play_1.here != rindex_1.mmach) {
X	goto L10;
X    }
X/* 						!NOT HERE? F */
X    ret_val = opncls_(oindex_1.machi, 123, 124);
X/* 						!HANDLE OPN/CLS. */
X    return ret_val;
X
X/* O101--	WATER FUNCTION */
X
XL5000:
X    if (prsvec_1.prsa != vindex_1.fillw) {
X	goto L5050;
X    }
X/* 						!FILL X WITH Y IS */
X    prsvec_1.prsa = vindex_1.putw;
X/* 						!MADE INTO */
X    i = prsvec_1.prsi;
X    prsvec_1.prsi = prsvec_1.prso;
X    prsvec_1.prso = i;
X/* 						!PUT Y IN X. */
X    i = odi2;
X    odi2 = odo2;
X    odo2 = i;
XL5050:
X    if (prsvec_1.prso == oindex_1.water || prsvec_1.prso == oindex_1.gwate) {
X	goto L5100;
X    }
X    rspeak_(561);
X/* 						!WATER IS IND OBJ, */
X    return ret_val;
X/* 						!PUNT. */
X
XL5100:
X    if (prsvec_1.prsa != vindex_1.takew) {
X	goto L5400;
X    }
X/* 						!TAKE WATER? */
X    if (objcts_1.oadv[oindex_1.bottl - 1] == play_1.winner && objcts_1.ocan[
X	    prsvec_1.prso - 1] != oindex_1.bottl) {
X	goto L5500;
X    }
X    if (objcts_1.ocan[prsvec_1.prso - 1] == 0) {
X	goto L5200;
X    }
X/* 						!INSIDE ANYTHING? */
X    if ((objcts_1.oflag2[objcts_1.ocan[prsvec_1.prso - 1] - 1] & 
X	    OPENBT) != 0) {
X	goto L5200;
X    }
X/* 						!YES, OPEN? */
X    rspsub_(525, objcts_1.odesc2[objcts_1.ocan[prsvec_1.prso - 1] - 1]);
X/* 						!INSIDE, CLOSED, PUNT. */
X    return ret_val;
X
XL5200:
X    rspeak_(615);
X/* 						!NOT INSIDE OR OPEN, */
X    return ret_val;
X/* 						!SLIPS THRU FINGERS. */
X
XL5400:
X    if (prsvec_1.prsa != vindex_1.putw) {
X	goto L5700;
X    }
X/* 						!PUT WATER IN X? */
X    if (av != 0 && prsvec_1.prsi == av) {
X	goto L5800;
X    }
X/* 						!IN VEH? */
X    if (prsvec_1.prsi == oindex_1.bottl) {
X	goto L5500;
X    }
X/* 						!IN BOTTLE? */
X    rspsub_(297, odi2);
X/* 						!WONT GO ELSEWHERE. */
X    newsta_(prsvec_1.prso, 0, 0, 0, 0);
X/* 						!VANISH WATER. */
X    return ret_val;
X
XL5500:
X    if ((objcts_1.oflag2[oindex_1.bottl - 1] & OPENBT) != 0) {
X	goto L5550;
X    }
X/* 						!BOTTLE OPEN? */
X    rspeak_(612);
X/* 						!NO, LOSE. */
X    return ret_val;
X
XL5550:
X    if (qempty_(oindex_1.bottl)) {
X	goto L5600;
X    }
X/* 						!OPEN, EMPTY? */
X    rspeak_(613);
X/* 						!NO, ALREADY FULL. */
X    return ret_val;
X
XL5600:
X    newsta_(oindex_1.water, 614, 0, oindex_1.bottl, 0);
X/* 						!TAKE WATER TO BOTTLE. */
X    return ret_val;
X
XL5700:
X    if (prsvec_1.prsa != vindex_1.dropw && prsvec_1.prsa != vindex_1.pourw && 
X	    prsvec_1.prsa != vindex_1.givew) {
X	goto L5900;
X    }
X    if (av != 0) {
X	goto L5800;
X    }
X/* 						!INTO VEHICLE? */
X    newsta_(prsvec_1.prso, 133, 0, 0, 0);
X/* 						!NO, VANISHES. */
X    return ret_val;
X
XL5800:
X    newsta_(oindex_1.water, 0, 0, av, 0);
X/* 						!WATER INTO VEHICLE. */
X    rspsub_(296, objcts_1.odesc2[av - 1]);
X/* 						!DESCRIBE. */
X    return ret_val;
X
XL5900:
X    if (prsvec_1.prsa != vindex_1.throww) {
X	goto L10;
X    }
X/* 						!LAST CHANCE, THROW? */
X    newsta_(prsvec_1.prso, 132, 0, 0, 0);
X/* 						!VANISHES. */
X    return ret_val;
X/* OAPPLI, PAGE 4 */
X
X/* O102--	LEAF PILE */
X
XL10000:
X    if (prsvec_1.prsa != vindex_1.burnw) {
X	goto L10500;
X    }
X/* 						!BURN? */
X    if (objcts_1.oroom[prsvec_1.prso - 1] == 0) {
X	goto L10100;
X    }
X/* 						!WAS HE CARRYING? */
X    newsta_(prsvec_1.prso, 158, 0, 0, 0);
X/* 						!NO, BURN IT. */
X    return ret_val;
X
XL10100:
X    newsta_(prsvec_1.prso, 0, play_1.here, 0, 0);
X/* 						!DROP LEAVES. */
X    jigsup_(159);
X/* 						!BURN HIM. */
X    return ret_val;
X
XL10500:
X    if (prsvec_1.prsa != vindex_1.movew) {
X	goto L10600;
X    }
X/* 						!MOVE? */
X    rspeak_(2);
X/* 						!DONE. */
X    return ret_val;
X
XL10600:
X    if (prsvec_1.prsa != vindex_1.lookuw || findex_1.rvclr != 0) {
X	goto L10;
X    }
X    rspeak_(344);
X/* 						!LOOK UNDER? */
X    return ret_val;
X
X/* O103--	TROLL, DONE EXTERNALLY. */
X
XL11000:
X    ret_val = trollp_(arg);
X/* 						!TROLL PROCESSOR. */
X    return ret_val;
X
X/* O104--	RUSTY KNIFE. */
X
XL12000:
X    if (prsvec_1.prsa != vindex_1.takew) {
X	goto L12100;
X    }
X/* 						!TAKE? */
X    if (objcts_1.oadv[oindex_1.sword - 1] == play_1.winner) {
X	rspeak_(160);
X    }
X/* 						!PULSE SWORD. */
X    goto L10;
X
XL12100:
X    if ((prsvec_1.prsa != vindex_1.attacw && prsvec_1.prsa != vindex_1.killw 
X	    || prsvec_1.prsi != oindex_1.rknif) && (prsvec_1.prsa != 
X	    vindex_1.swingw && prsvec_1.prsa != vindex_1.throww || 
X	    prsvec_1.prso != oindex_1.rknif)) {
X	goto L10;
X    }
X    newsta_(oindex_1.rknif, 0, 0, 0, 0);
X/* 						!KILL KNIFE. */
X    jigsup_(161);
X/* 						!KILL HIM. */
X    return ret_val;
X/* OAPPLI, PAGE 5 */
X
X/* O105--	GLACIER */
X
XL15000:
X    if (prsvec_1.prsa != vindex_1.throww) {
X	goto L15500;
X    }
X/* 						!THROW? */
X    if (prsvec_1.prso != oindex_1.torch) {
X	goto L15400;
X    }
X/* 						!TORCH? */
X    newsta_(oindex_1.ice, 169, 0, 0, 0);
X/* 						!MELT ICE. */
X    objcts_1.odesc1[oindex_1.torch - 1] = 174;
X/* 						!MUNG TORCH. */
X    objcts_1.odesc2[oindex_1.torch - 1] = 173;
X    objcts_1.oflag1[oindex_1.torch - 1] &= ~ flobts;
X    newsta_(oindex_1.torch, 0, rindex_1.strea, 0, 0);
X/* 						!MOVE TORCH. */
X    findex_1.glacrf = TRUE_;
X/* 						!GLACIER GONE. */
X    if (! lit_(play_1.here)) {
X	rspeak_(170);
X    }
X/* 						!IN DARK? */
X    return ret_val;
X
XL15400:
X    rspeak_(171);
X/* 						!JOKE IF NOT TORCH. */
X    return ret_val;
X
XL15500:
X    if (prsvec_1.prsa != vindex_1.meltw || prsvec_1.prso != oindex_1.ice) {
X	goto L10;
X    }
X    if ((objcts_1.oflag1[prsvec_1.prsi - 1] & flobts) == flobts) {
X	goto L15600;
X    }
X    rspsub_(298, odi2);
X/* 						!CANT MELT WITH THAT. */
X    return ret_val;
X
XL15600:
X    findex_1.glacmf = TRUE_;
X/* 						!PARTIAL MELT. */
X    if (prsvec_1.prsi != oindex_1.torch) {
X	goto L15700;
X    }
X/* 						!MELT WITH TORCH? */
X    objcts_1.odesc1[oindex_1.torch - 1] = 174;
X/* 						!MUNG TORCH. */
X    objcts_1.odesc2[oindex_1.torch - 1] = 173;
X    objcts_1.oflag1[oindex_1.torch - 1] &= ~ flobts;
XL15700:
X    jigsup_(172);
X/* 						!DROWN. */
X    return ret_val;
X
X/* O106--	BLACK BOOK */
X
XL18000:
X    if (prsvec_1.prsa != vindex_1.openw) {
X	goto L18100;
X    }
X/* 						!OPEN? */
X    rspeak_(180);
X/* 						!JOKE. */
X    return ret_val;
X
XL18100:
X    if (prsvec_1.prsa != vindex_1.closew) {
X	goto L18200;
X    }
X/* 						!CLOSE? */
X    rspeak_(181);
X    return ret_val;
X
XL18200:
X    if (prsvec_1.prsa != vindex_1.burnw) {
X	goto L10;
X    }
X/* 						!BURN? */
X    newsta_(prsvec_1.prso, 0, 0, 0, 0);
X/* 						!FATAL JOKE. */
X    jigsup_(182);
X    return ret_val;
X/* OAPPLI, PAGE 6 */
X
X/* O107--	CANDLES, PROCESSED EXTERNALLY */
X
XL19000:
X    ret_val = lightp_(oindex_1.candl);
X    return ret_val;
X
X/* O108--	MATCHES, PROCESSED EXTERNALLY */
X
XL20000:
X    ret_val = lightp_(oindex_1.match);
X    return ret_val;
X
X/* O109--	CYCLOPS, PROCESSED EXTERNALLY. */
X
XL22000:
X    ret_val = cyclop_(arg);
X/* 						!CYCLOPS */
X    return ret_val;
X
X/* O110--	THIEF, PROCESSED EXTERNALLY */
X
XL25000:
X    ret_val = thiefp_(arg);
X    return ret_val;
X
X/* O111--	WINDOW */
X
XL26000:
X    ret_val = opncls_(oindex_1.windo, 208, 209);
X/* 						!OPEN/CLS WINDOW. */
X    return ret_val;
X
X/* O112--	PILE OF BODIES */
X
XL32000:
X    if (prsvec_1.prsa != vindex_1.takew) {
X	goto L32500;
X    }
X/* 						!TAKE? */
X    rspeak_(228);
X/* 						!CANT. */
X    return ret_val;
X
XL32500:
X    if (prsvec_1.prsa != vindex_1.burnw && prsvec_1.prsa != vindex_1.mungw) {
X	goto L10;
X    }
X    if (findex_1.onpolf) {
X	return ret_val;
X    }
X/* 						!BURN OR MUNG? */
X    findex_1.onpolf = TRUE_;
X/* 						!SET HEAD ON POLE. */
X    newsta_(oindex_1.hpole, 0, rindex_1.lld2, 0, 0);
X    jigsup_(229);
X/* 						!BEHEADED. */
X    return ret_val;
X
X/* O113--	VAMPIRE BAT */
X
XL35000:
X    rspeak_(50);
X/* 						!TIME TO FLY, JACK. */
X    f = moveto_(bats_1.batdrp[rnd_(9)], play_1.winner);
X/* 						!SELECT RANDOM DEST. */
X    f = rmdesc_(0);
X    return ret_val;
X/* OAPPLI, PAGE 7 */
X
X/* O114--	STICK */
X
XL39000:
X    if (prsvec_1.prsa != vindex_1.wavew) {
X	goto L10;
X    }
X/* 						!WAVE? */
X    if (play_1.here == rindex_1.mrain) {
X	goto L39500;
X    }
X/* 						!ON RAINBOW? */
X    if (play_1.here == rindex_1.pog || play_1.here == rindex_1.falls) {
X	goto L39200;
X    }
X    rspeak_(244);
X/* 						!NOTHING HAPPENS. */
X    return ret_val;
X
XL39200:
X    objcts_1.oflag1[oindex_1.pot - 1] |= VISIBT;
X    findex_1.rainbf = ! findex_1.rainbf;
X/* 						!COMPLEMENT RAINBOW. */
X    i = 245;
X/* 						!ASSUME OFF. */
X    if (findex_1.rainbf) {
X	i = 246;
X    }
X/* 						!IF ON, SOLID. */
X    rspeak_(i);
X/* 						!DESCRIBE. */
X    return ret_val;
X
XL39500:
X    findex_1.rainbf = FALSE_;
X/* 						!ON RAINBOW, */
X    jigsup_(247);
X/* 						!TAKE A FALL. */
X    return ret_val;
X
X/* O115--	BALLOON, HANDLED EXTERNALLY */
X
XL40000:
X    ret_val = ballop_(arg);
X    return ret_val;
X
X/* O116--	HEADS */
X
XL45000:
X    if (prsvec_1.prsa != vindex_1.hellow) {
X	goto L45100;
X    }
X/* 						!HELLO HEADS? */
X    rspeak_(633);
X/* 						!TRULY BIZARRE. */
X    return ret_val;
X
XL45100:
X    if (prsvec_1.prsa == vindex_1.readw) {
X	goto L10;
X    }
X/* 						!READ IS OK. */
X    newsta_(oindex_1.lcase, 260, rindex_1.lroom, 0, 0);
X/* 						!MAKE LARGE CASE. */
X    i = robadv_(play_1.winner, 0, oindex_1.lcase, 0) + robrm_(
X	    play_1.here, 100, 0, oindex_1.lcase, 0);
X    jigsup_(261);
X/* 						!KILL HIM. */
X    return ret_val;
X/* OAPPLI, PAGE 8 */
X
X/* O117--	SPHERE */
X
XL47000:
X    if (findex_1.cagesf || prsvec_1.prsa != vindex_1.takew) {
X	goto L10;
X    }
X/* 						!TAKE? */
X    if (play_1.winner != aindex_1.player) {
X	goto L47500;
X    }
X/* 						!ROBOT TAKE? */
X    rspeak_(263);
X/* 						!NO, DROP CAGE. */
X    if (objcts_1.oroom[oindex_1.robot - 1] != play_1.here) {
X	goto L47200;
X    }
X/* 						!ROBOT HERE? */
X    f = moveto_(rindex_1.caged, play_1.winner);
X/* 						!YES, MOVE INTO CAGE. */
X    newsta_(oindex_1.robot, 0, rindex_1.caged, 0, 0);
X/* 						!MOVE ROBOT. */
X    advs_1.aroom[aindex_1.arobot - 1] = rindex_1.caged;
X    objcts_1.oflag1[oindex_1.robot - 1] |= NDSCBT;
X    cevent_1.ctick[cindex_1.cevsph - 1] = 10;
X/* 						!GET OUT IN 10 OR ELSE. */
X    return ret_val;
X
XL47200:
X    newsta_(oindex_1.spher, 0, 0, 0, 0);
X/* 						!YOURE DEAD. */
X    rooms_1.rflag[rindex_1.cager - 1] |= RMUNG;
X    rrand[rindex_1.cager - 1] = 147;
X    jigsup_(148);
X/* 						!MUNG PLAYER. */
X    return ret_val;
X
XL47500:
X    newsta_(oindex_1.spher, 0, 0, 0, 0);
X/* 						!ROBOT TRIED, */
X    newsta_(oindex_1.robot, 264, 0, 0, 0);
X/* 						!KILL HIM. */
X    newsta_(oindex_1.cage, 0, play_1.here, 0, 0);
X/* 						!INSERT MANGLED CAGE. */
X    return ret_val;
X
X/* O118--	GEOMETRICAL BUTTONS */
X
XL48000:
X    if (prsvec_1.prsa != vindex_1.pushw) {
X	goto L10;
X    }
X/* 						!PUSH? */
X    i = prsvec_1.prso - oindex_1.sqbut + 1;
X/* 						!GET BUTTON INDEX. */
X    if (i <= 0 || i >= 4) {
X	goto L10;
X    }
X/* 						!A BUTTON? */
X    if (play_1.winner != aindex_1.player) {
X	switch (i) {
X	    case 1:  goto L48100;
X	    case 2:  goto L48200;
X	    case 3:  goto L48300;
X	}
X    }
X    jigsup_(265);
X/* 						!YOU PUSHED, YOU DIE. */
X    return ret_val;
X
XL48100:
X    i = 267;
X    if (findex_1.carozf) {
X	i = 266;
X    }
X/* 						!SPEED UP? */
X    findex_1.carozf = TRUE_;
X    rspeak_(i);
X    return ret_val;
X
XL48200:
X    i = 266;
X/* 						!ASSUME NO CHANGE. */
X    if (findex_1.carozf) {
X	i = 268;
X    }
X    findex_1.carozf = FALSE_;
X    rspeak_(i);
X    return ret_val;
X
XL48300:
X    findex_1.caroff = ! findex_1.caroff;
X/* 						!FLIP CAROUSEL. */
X    if (! qhere_(oindex_1.irbox, rindex_1.carou)) {
X	return ret_val;
X    }
X/* 						!IRON BOX IN CAROUSEL? */
X    rspeak_(269);
X/* 						!YES, THUMP. */
X    objcts_1.oflag1[oindex_1.irbox - 1] ^= VISIBT;
X    if (findex_1.caroff) {
X	rooms_1.rflag[rindex_1.carou - 1] &= ~ RSEEN;
X    }
X    return ret_val;
X
X/* O119--	FLASK FUNCTION */
X
XL49000:
X    if (prsvec_1.prsa == vindex_1.openw) {
X	goto L49100;
X    }
X/* 						!OPEN? */
X    if (prsvec_1.prsa != vindex_1.mungw && prsvec_1.prsa != vindex_1.throww) {
X
X	goto L10;
X    }
X    newsta_(oindex_1.flask, 270, 0, 0, 0);
X/* 						!KILL FLASK. */
XL49100:
X    rooms_1.rflag[play_1.here - 1] |= RMUNG;
X    rrand[play_1.here - 1] = 271;
X    jigsup_(272);
X/* 						!POISONED. */
X    return ret_val;
X
X/* O120--	BUCKET FUNCTION */
X
XL50000:
X    if (arg != 2) {
X	goto L10;
X    }
X/* 						!READOUT? */
X    if (objcts_1.ocan[oindex_1.water - 1] != oindex_1.bucke || 
X	    findex_1.bucktf) {
X	goto L50500;
X    }
X    findex_1.bucktf = TRUE_;
X/* 						!BUCKET AT TOP. */
X    cevent_1.ctick[cindex_1.cevbuc - 1] = 100;
X/* 						!START COUNTDOWN. */
X    newsta_(oindex_1.bucke, 290, rindex_1.twell, 0, 0);
X/* 						!REPOSITION BUCKET. */
X    goto L50900;
X/* 						!FINISH UP. */
X
XL50500:
X    if (objcts_1.ocan[oindex_1.water - 1] == oindex_1.bucke || ! 
X	    findex_1.bucktf) {
X	goto L10;
X    }
X    findex_1.bucktf = FALSE_;
X    newsta_(oindex_1.bucke, 291, rindex_1.bwell, 0, 0);
X/* 						!BUCKET AT BOTTOM. */
XL50900:
X    if (av != oindex_1.bucke) {
X	return ret_val;
X    }
X/* 						!IN BUCKET? */
X    f = moveto_(objcts_1.oroom[oindex_1.bucke - 1], play_1.winner);
X/* 						!MOVE ADVENTURER. */
X    f = rmdesc_(0);
X/* 						!DESCRIBE ROOM. */
X    return ret_val;
X/* OAPPLI, PAGE 9 */
X
X/* O121--	EATME CAKE */
X
XL51000:
X    if (prsvec_1.prsa != vindex_1.eatw || prsvec_1.prso != oindex_1.ecake || 
X	    play_1.here != rindex_1.alice) {
X	goto L10;
X    }
X    newsta_(oindex_1.ecake, 273, 0, 0, 0);
X/* 						!VANISH CAKE. */
X    objcts_1.oflag1[oindex_1.robot - 1] &= ~ VISIBT;
X    ret_val = moveto_(rindex_1.alism, play_1.winner);
X/* 						!MOVE TO ALICE SMALL. */
X    iz = 64;
X    ir = rindex_1.alism;
X    io = rindex_1.alice;
X    goto L52405;
X
X/* O122--	ICINGS */
X
XL52000:
X    if (prsvec_1.prsa != vindex_1.readw) {
X	goto L52200;
X    }
X/* 						!READ? */
X    i = 274;
X/* 						!CANT READ. */
X    if (prsvec_1.prsi != 0) {
X	i = 275;
X    }
X/* 						!THROUGH SOMETHING? */
X    if (prsvec_1.prsi == oindex_1.bottl) {
X	i = 276;
X    }
X/* 						!THROUGH BOTTLE? */
X    if (prsvec_1.prsi == oindex_1.flask) {
X	i = prsvec_1.prso - oindex_1.orice + 277;
X    }
X/* 						!THROUGH FLASK? */
X    rspeak_(i);
X/* 						!READ FLASK. */
X    return ret_val;
X
XL52200:
X    if (prsvec_1.prsa != vindex_1.throww || prsvec_1.prso != oindex_1.rdice ||
X	     prsvec_1.prsi != oindex_1.pool) {
X	goto L52300;
X    }
X    newsta_(oindex_1.pool, 280, 0, 0, 0);
X/* 						!VANISH POOL. */
X    objcts_1.oflag1[oindex_1.saffr - 1] |= VISIBT;
X    return ret_val;
X
XL52300:
X    if (play_1.here != rindex_1.alice && play_1.here != rindex_1.alism && 
X	    play_1.here != rindex_1.alitr) {
X	goto L10;
X    }
X    if (prsvec_1.prsa != vindex_1.eatw && prsvec_1.prsa != vindex_1.throww || 
X	    prsvec_1.prso != oindex_1.orice) {
X	goto L52400;
X    }
X    newsta_(oindex_1.orice, 0, 0, 0, 0);
X/* 						!VANISH ORANGE ICE. */
X    rooms_1.rflag[play_1.here - 1] |= RMUNG;
X    rrand[play_1.here - 1] = 281;
X    jigsup_(282);
X/* 						!VANISH ADVENTURER. */
X    return ret_val;
X
XL52400:
X    if (prsvec_1.prsa != vindex_1.eatw || prsvec_1.prso != oindex_1.blice) {
X	goto L10;
X    }
X    newsta_(oindex_1.blice, 283, 0, 0, 0);
X/* 						!VANISH BLUE ICE. */
X    if (play_1.here != rindex_1.alism) {
X	goto L52500;
X    }
X/* 						!IN REDUCED ROOM? */
X    objcts_1.oflag1[oindex_1.robot - 1] |= VISIBT;
X    io = play_1.here;
X    ret_val = moveto_(rindex_1.alice, play_1.winner);
X    iz = 0;
X    ir = rindex_1.alice;
X
X/*  Do a size change, common loop used also by code at 51000 */
X
XL52405:
X    i__1 = objcts_1.olnt;
X    for (i = 1; i <= i__1; ++i) {
X/* 						!ENLARGE WORLD. */
X	if (objcts_1.oroom[i - 1] != io || objcts_1.osize[i - 1] == 10000) {
X	    goto L52450;
X	}
X	objcts_1.oroom[i - 1] = ir;
X	objcts_1.osize[i - 1] *= iz;
XL52450:
X	;
X    }
X    return ret_val;
X
XL52500:
X    jigsup_(284);
X/* 						!ENLARGED IN WRONG ROOM. */
X    return ret_val;
X
X/* O123--	BRICK */
X
XL54000:
X    if (prsvec_1.prsa != vindex_1.burnw) {
X	goto L10;
X    }
X/* 						!BURN? */
X    jigsup_(150);
X/* 						!BOOM */
X/* 						! */
X    return ret_val;
X
X/* O124--	MYSELF */
X
XL55000:
X    if (prsvec_1.prsa != vindex_1.givew) {
X	goto L55100;
X    }
X/* 						!GIVE? */
X    newsta_(prsvec_1.prso, 2, 0, 0, aindex_1.player);
X/* 						!DONE. */
X    return ret_val;
X
XL55100:
X    if (prsvec_1.prsa != vindex_1.takew) {
X	goto L55200;
X    }
X/* 						!TAKE? */
X    rspeak_(286);
X/* 						!JOKE. */
X    return ret_val;
X
XL55200:
X    if (prsvec_1.prsa != vindex_1.killw && prsvec_1.prsa != vindex_1.mungw) {
X	goto L10;
X    }
X    jigsup_(287);
X/* 						!KILL, NO JOKE. */
X    return ret_val;
X/* OAPPLI, PAGE 10 */
X
X/* O125--	PANELS INSIDE MIRROR */
X
XL56000:
X    if (prsvec_1.prsa != vindex_1.pushw) {
X	goto L10;
X    }
X/* 						!PUSH? */
X    if (findex_1.poleuf != 0) {
X	goto L56100;
X    }
X/* 						!SHORT POLE UP? */
X    i = 731;
X/* 						!NO, WONT BUDGE. */
X    if (findex_1.mdir % 180 == 0) {
X	i = 732;
X    }
X/* 						!DIFF MSG IF N-S. */
X    rspeak_(i);
X/* 						!TELL WONT MOVE. */
X    return ret_val;
X
XL56100:
X    if (findex_1.mloc != rindex_1.mrg) {
X	goto L56200;
X    }
X/* 						!IN GDN ROOM? */
X    rspeak_(733);
X/* 						!YOU LOSE. */
X    jigsup_(685);
X    return ret_val;
X
XL56200:
X    i = 831;
X/* 						!ROTATE L OR R. */
X    if (prsvec_1.prso == oindex_1.rdwal || prsvec_1.prso == oindex_1.ylwal) {
X	i = 830;
X    }
X    rspeak_(i);
X/* 						!TELL DIRECTION. */
X    findex_1.mdir = (findex_1.mdir + 45 + (i - 830) * 270) % 360;
X/* 						!CALCULATE NEW DIR. */
X    i__1 = findex_1.mdir / 45 + 695;
X    rspsub_(734, i__1);
X/* 						!TELL NEW DIR. */
X    if (findex_1.wdopnf) {
X	rspeak_(730);
X    }
X/* 						!IF PANEL OPEN, CLOSE. */
X    findex_1.wdopnf = FALSE_;
X    return ret_val;
X/* 						!DONE. */
X
X/* O126--	ENDS INSIDE MIRROR */
X
XL57000:
X    if (prsvec_1.prsa != vindex_1.pushw) {
X	goto L10;
X    }
X/* 						!PUSH? */
X    if (findex_1.mdir % 180 == 0) {
X	goto L57100;
X    }
X/* 						!MIRROR N-S? */
X    rspeak_(735);
X/* 						!NO, WONT BUDGE. */
X    return ret_val;
X
XL57100:
X    if (prsvec_1.prso != oindex_1.pindr) {
X	goto L57300;
X    }
X/* 						!PUSH PINE WALL? */
X    if (findex_1.mloc == rindex_1.mrc && findex_1.mdir == 180 || 
X	    findex_1.mloc == rindex_1.mrd && findex_1.mdir == 0 || 
X	    findex_1.mloc == rindex_1.mrg) {
X	goto L57200;
X    }
X    rspeak_(736);
X/* 						!NO, OPENS. */
X    findex_1.wdopnf = TRUE_;
X/* 						!INDICATE OPEN. */
X    cevent_1.cflag[cindex_1.cevpin - 1] = TRUE_;
X/* 						!TIME OPENING. */
X    cevent_1.ctick[cindex_1.cevpin - 1] = 5;
X    return ret_val;
X
XL57200:
X    rspeak_(737);
X/* 						!GDN SEES YOU, DIE. */
X    jigsup_(685);
X    return ret_val;
X
XL57300:
X    nloc = findex_1.mloc - 1;
X/* 						!NEW LOC IF SOUTH. */
X    if (findex_1.mdir == 0) {
X	nloc = findex_1.mloc + 1;
X    }
X/* 						!NEW LOC IF NORTH. */
X    if (nloc >= rindex_1.mra && nloc <= rindex_1.mrd) {
X	goto L57400;
X    }
X    rspeak_(738);
X/* 						!HAVE REACHED END. */
X    return ret_val;
X
XL57400:
X    i = 699;
X/* 						!ASSUME SOUTH. */
X    if (findex_1.mdir == 0) {
X	i = 695;
X    }
X/* 						!NORTH. */
X    j = 739;
X/* 						!ASSUME SMOOTH. */
X    if (findex_1.poleuf != 0) {
X	j = 740;
X    }
X/* 						!POLE UP, WOBBLES. */
X    rspsub_(j, i);
X/* 						!DESCRIBE. */
X    findex_1.mloc = nloc;
X    if (findex_1.mloc != rindex_1.mrg) {
X	return ret_val;
X    }
X/* 						!NOW IN GDN ROOM? */
X
X    if (findex_1.poleuf != 0) {
X	goto L57500;
X    }
X/* 						!POLE UP, GDN SEES. */
X    if (findex_1.mropnf || findex_1.wdopnf) {
X	goto L57600;
X    }
X/* 						!DOOR OPEN, GDN SEES. */
X    if (findex_1.mr1f && findex_1.mr2f) {
X	return ret_val;
X    }
X/* 						!MIRRORS INTACT, OK. */
X    rspeak_(742);
X/* 						!MIRRORS BROKEN, DIE. */
X    jigsup_(743);
X    return ret_val;
X
XL57500:
X    rspeak_(741);
X/* 						!POLE UP, DIE. */
X    jigsup_(743);
X    return ret_val;
X
XL57600:
X    rspeak_(744);
X/* 						!DOOR OPEN, DIE. */
X    jigsup_(743);
X    return ret_val;
X/* OAPPLI, PAGE 11 */
X
X/* O127--	GLOBAL GUARDIANS */
X
XL58000:
X    if (prsvec_1.prsa != vindex_1.attacw && prsvec_1.prsa != vindex_1.killw &&
X	     prsvec_1.prsa != vindex_1.mungw) {
X	goto L58100;
X    }
X    jigsup_(745);
X/* 						!LOSE. */
X    return ret_val;
X
XL58100:
X    if (prsvec_1.prsa != vindex_1.hellow) {
X	goto L10;
X    }
X/* 						!HELLO? */
X    rspeak_(746);
X/* 						!NO REPLY. */
X    return ret_val;
X
X/* O128--	GLOBAL MASTER */
X
XL59000:
X    if (prsvec_1.prsa != vindex_1.attacw && prsvec_1.prsa != vindex_1.killw &&
X	     prsvec_1.prsa != vindex_1.mungw) {
X	goto L59100;
X    }
X    jigsup_(747);
X/* 						!BAD IDEA. */
X    return ret_val;
X
XL59100:
X    if (prsvec_1.prsa != vindex_1.takew) {
X	goto L10;
X    }
X/* 						!TAKE? */
X    rspeak_(748);
X/* 						!JOKE. */
X    return ret_val;
X
X/* O129--	NUMERAL FIVE (FOR JOKE) */
X
XL60000:
X    if (prsvec_1.prsa != vindex_1.takew) {
X	goto L10;
X    }
X/* 						!TAKE FIVE? */
X    rspeak_(419);
X/* 						!TIME PASSES. */
X    for (i = 1; i <= 3; ++i) {
X/* 						!WAIT A WHILE. */
X	if (clockd_()) {
X	    return ret_val;
X	}
X/* L60100: */
X    }
X    return ret_val;
X
X/* O130--	CRYPT FUNCTION */
X
XL61000:
X    if (! findex_1.endgmf) {
X	goto L45000;
X    }
X/* 						!IF NOT EG, DIE. */
X    if (prsvec_1.prsa != vindex_1.openw) {
X	goto L61100;
X    }
X/* 						!OPEN? */
X    i = 793;
X    if ((objcts_1.oflag2[oindex_1.tomb - 1] & OPENBT) != 0) {
X	i = 794;
X    }
X    rspeak_(i);
X    objcts_1.oflag2[oindex_1.tomb - 1] |= OPENBT;
X    return ret_val;
X
XL61100:
X    if (prsvec_1.prsa != vindex_1.closew) {
X	goto L45000;
X    }
X/* 						!CLOSE? */
X    i = 795;
X    if ((objcts_1.oflag2[oindex_1.tomb - 1] & OPENBT) != 0) {
X	i = 796;
X    }
X    rspeak_(i);
X    objcts_1.oflag2[oindex_1.tomb - 1] &= ~ OPENBT;
X    if (play_1.here == rindex_1.crypt) {
X	cevent_1.ctick[cindex_1.cevste - 1] = 3;
X    }
X/* 						!IF IN CRYPT, START EG. */
X    return ret_val;
X/* OAPPLI, PAGE 12 */
X
X/* O131--	GLOBAL LADDER */
X
XL62000:
X    if (puzzle_1.cpvec[findex_1.cphere] == -2 || puzzle_1.cpvec[
X	    findex_1.cphere - 2] == -3) {
X	goto L62100;
X    }
X    rspeak_(865);
X/* 						!NO, LOSE. */
X    return ret_val;
X
XL62100:
X    if (prsvec_1.prsa == vindex_1.clmbw || prsvec_1.prsa == vindex_1.clmbuw) {
X
X	goto L62200;
X    }
X    rspeak_(866);
X/* 						!CLIMB IT? */
X    return ret_val;
X
XL62200:
X    if (findex_1.cphere == 10 && puzzle_1.cpvec[findex_1.cphere] == -2) {
X	goto L62300;
X    }
X    rspeak_(867);
X/* 						!NO, HIT YOUR HEAD. */
X    return ret_val;
X
XL62300:
X    f = moveto_(rindex_1.cpant, play_1.winner);
X/* 						!TO ANTEROOM. */
X    f = rmdesc_(3);
X/* 						!DESCRIBE. */
X    return ret_val;
X
X} /* oappli_ */
END_OF_FILE
if test 24355 -ne `wc -c <'objcts.c'`; then
    echo shar: \"'objcts.c'\" unpacked with wrong size!
fi
# end of 'objcts.c'
fi
if test -f 'verbs.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'verbs.c'\"
else
echo shar: Extracting \"'verbs.c'\" \(25958 characters\)
sed "s/^X//" >'verbs.c' <<'END_OF_FILE'
X/* VAPPLI- MAIN VERB PROCESSING ROUTINE */
X
X/*COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142*/
X/* ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED */
X/* WRITTEN BY R. M. SUPNIK */
X
X#include "funcs.h"
X#include "vars.h"
X
Xlogical vappli_(ri)
Xinteger ri;
X{
X    /* Initialized data */
X
X    const integer mxnop = 39;
X    const integer mxsmp = 99;
X
X    /* System generated locals */
X    integer i__1;
X    logical ret_val;
X
X    /* Local variables */
X    integer melee;
X    logical f;
X    integer i, j, av;
X    integer rmk;
X    integer odi2 = 0, odo2 = 0;
X
X    ret_val = TRUE_;
X/* 						!ASSUME WINS. */
X
X    if (prsvec_1.prso > 220) {
X	goto L5;
X    }
X
X    if (prsvec_1.prso != 0) {
X	odo2 = objcts_1.odesc2[prsvec_1.prso - 1];
X    }
X/* 						!SET UP DESCRIPTORS. */
XL5:
X    if (prsvec_1.prsi != 0) {
X	odi2 = objcts_1.odesc2[prsvec_1.prsi - 1];
X    }
X    av = advs_1.avehic[play_1.winner - 1];
X    rmk = rnd_(6) + 372;
X/* 						!REMARK FOR HACK-HACKS. */
X
X    if (ri == 0) {
X	goto L10;
X    }
X/* 						!ZERO IS FALSE. */
X    if (ri <= mxnop) {
X	return ret_val;
X    }
X/* 						!NOP? */
X    if (ri <= mxsmp) {
X	goto L100;
X    }
X/* 						!SIMPLE VERB? */
X    switch (ri - mxsmp) {
X	case 1:  goto L18000;
X	case 2:  goto L20000;
X	case 3:  goto L22000;
X	case 4:  goto L23000;
X	case 5:  goto L24000;
X	case 6:  goto L25000;
X	case 7:  goto L26000;
X	case 8:  goto L27000;
X	case 9:  goto L28000;
X	case 10:  goto L29000;
X	case 11:  goto L30000;
X	case 12:  goto L31000;
X	case 13:  goto L32000;
X	case 14:  goto L33000;
X	case 15:  goto L34000;
X	case 16:  goto L35000;
X	case 17:  goto L36000;
X	case 18:  goto L38000;
X	case 19:  goto L39000;
X	case 20:  goto L40000;
X	case 21:  goto L41000;
X	case 22:  goto L42000;
X	case 23:  goto L43000;
X	case 24:  goto L44000;
X	case 25:  goto L45000;
X	case 26:  goto L46000;
X	case 27:  goto L47000;
X	case 28:  goto L48000;
X	case 29:  goto L49000;
X	case 30:  goto L50000;
X	case 31:  goto L51000;
X	case 32:  goto L52000;
X	case 33:  goto L53000;
X	case 34:  goto L55000;
X	case 35:  goto L56000;
X	case 36:  goto L58000;
X	case 37:  goto L59000;
X	case 38:  goto L60000;
X	case 39:  goto L63000;
X	case 40:  goto L64000;
X	case 41:  goto L65000;
X	case 42:  goto L66000;
X	case 43:  goto L68000;
X	case 44:  goto L69000;
X	case 45:  goto L70000;
X	case 46:  goto L71000;
X	case 47:  goto L72000;
X	case 48:  goto L73000;
X	case 49:  goto L74000;
X	case 50:  goto L77000;
X	case 51:  goto L78000;
X	case 52:  goto L80000;
X	case 53:  goto L81000;
X	case 54:  goto L82000;
X	case 55:  goto L83000;
X	case 56:  goto L84000;
X	case 57:  goto L85000;
X	case 58:  goto L86000;
X	case 59:  goto L87000;
X	case 60:  goto L88000;
X    }
X    bug_(7, ri);
X
X/* ALL VERB PROCESSORS RETURN HERE TO DECLARE FAILURE. */
X
XL10:
X    ret_val = FALSE_;
X/* 						!LOSE. */
X    return ret_val;
X
X/* SIMPLE VERBS ARE HANDLED EXTERNALLY. */
X
XL100:
X    ret_val = sverbs_(ri);
X    return ret_val;
X/* VAPPLI, PAGE 3 */
X
X/* V100--	READ.  OUR FIRST REAL VERB. */
X
XL18000:
X    if (lit_(play_1.here)) {
X	goto L18100;
X    }
X/* 						!ROOM LIT? */
X    rspeak_(356);
X/* 						!NO, CANT READ. */
X    return ret_val;
X
XL18100:
X    if (prsvec_1.prsi == 0) {
X	goto L18200;
X    }
X/* 						!READ THROUGH OBJ? */
X    if ((objcts_1.oflag1[prsvec_1.prsi - 1] & TRANBT) != 0) {
X	goto L18200;
X    }
X    rspsub_(357, odi2);
X/* 						!NOT TRANSPARENT. */
X    return ret_val;
X
XL18200:
X    if ((objcts_1.oflag1[prsvec_1.prso - 1] & READBT) != 0) {
X	goto L18300;
X    }
X    rspsub_(358, odo2);
X/* 						!NOT READABLE. */
X    return ret_val;
X
XL18300:
X    if (! objact_()) {
X	rspeak_(objcts_1.oread[prsvec_1.prso - 1]);
X    }
X    return ret_val;
X
X/* V101--	MELT.  UNLESS OBJECT HANDLES, JOKE. */
X
XL20000:
X    if (! objact_()) {
X	rspsub_(361, odo2);
X    }
X    return ret_val;
X
X/* V102--	INFLATE.  WORKS ONLY WITH BOATS. */
X
XL22000:
X    if (! objact_()) {
X	rspeak_(368);
X    }
X/* 						!OBJ HANDLE? */
X    return ret_val;
X
X/* V103--	DEFLATE. */
X
XL23000:
X    if (! objact_()) {
X	rspeak_(369);
X    }
X/* 						!OBJ HANDLE? */
X    return ret_val;
X/* VAPPLI, PAGE 4 */
X
X/* V104--	ALARM.  IF SLEEPING, WAKE HIM UP. */
X
XL24000:
X    if ((objcts_1.oflag2[prsvec_1.prso - 1] & SLEPBT) == 0) {
X	goto L24100;
X    }
X    ret_val = objact_();
X/* 						!SLEEPING, LET OBJ DO. */
X    return ret_val;
X
XL24100:
X    rspsub_(370, odo2);
X/* 						!JOKE. */
X    return ret_val;
X
X/* V105--	EXORCISE.  OBJECTS HANDLE. */
X
XL25000:
X    f = objact_();
X/* 						!OBJECTS HANDLE. */
X    return ret_val;
X
X/* V106--	PLUG.  LET OBJECTS HANDLE. */
X
XL26000:
X    if (! objact_()) {
X	rspeak_(371);
X    }
X    return ret_val;
X
X/* V107--	KICK.  IF OBJECT IGNORES, JOKE. */
X
XL27000:
X    if (! objact_()) {
X	rspsb2_(378, odo2, rmk);
X    }
X    return ret_val;
X
X/* V108--	WAVE.  SAME. */
X
XL28000:
X    if (! objact_()) {
X	rspsb2_(379, odo2, rmk);
X    }
X    return ret_val;
X
X/* V109,V110--	RAISE, LOWER.  SAME. */
X
XL29000:
XL30000:
X    if (! objact_()) {
X	rspsb2_(380, odo2, rmk);
X    }
X    return ret_val;
X
X/* V111--	RUB.  SAME. */
X
XL31000:
X    if (! objact_()) {
X	rspsb2_(381, odo2, rmk);
X    }
X    return ret_val;
X
X/* V112--	PUSH.  SAME. */
X
XL32000:
X    if (! objact_()) {
X	rspsb2_(382, odo2, rmk);
X    }
X    return ret_val;
X/* VAPPLI, PAGE 5 */
X
X/* V113--	UNTIE.  IF OBJECT IGNORES, JOKE. */
X
XL33000:
X    if (objact_()) {
X	return ret_val;
X    }
X/* 						!OBJECT HANDLE? */
X    i = 383;
X/* 						!NO, NOT TIED. */
X    if ((objcts_1.oflag2[prsvec_1.prso - 1] & TIEBT) == 0) {
X	i = 384;
X    }
X    rspeak_(i);
X    return ret_val;
X
X/* V114--	TIE.  NEVER REALLY WORKS. */
X
XL34000:
X    if ((objcts_1.oflag2[prsvec_1.prso - 1] & TIEBT) != 0) {
X	goto L34100;
X    }
X    rspeak_(385);
X/* 						!NOT TIEABLE. */
X    return ret_val;
X
XL34100:
X    if (! objact_()) {
X	rspsub_(386, odo2);
X    }
X/* 						!JOKE. */
X    return ret_val;
X
X/* V115--	TIE UP.  NEVER REALLY WORKS. */
X
XL35000:
X    if ((objcts_1.oflag2[prsvec_1.prsi - 1] & TIEBT) != 0) {
X	goto L35100;
X    }
X    rspsub_(387, odo2);
X/* 						!NOT TIEABLE. */
X    return ret_val;
X
XL35100:
X    i = 388;
X/* 						!ASSUME VILLAIN. */
X    if ((objcts_1.oflag2[prsvec_1.prso - 1] & VILLBT) == 0) {
X	i = 389;
X    }
X    rspsub_(i, odo2);
X/* 						!JOKE. */
X    return ret_val;
X
X/* V116--	TURN.  OBJECT MUST HANDLE. */
X
XL36000:
X    if ((objcts_1.oflag1[prsvec_1.prso - 1] & TURNBT) != 0) {
X	goto L36100;
X    }
X    rspeak_(390);
X/* 						!NOT TURNABLE. */
X    return ret_val;
X
XL36100:
X    if ((objcts_1.oflag1[prsvec_1.prsi - 1] & TOOLBT) != 0) {
X	goto L36200;
X    }
X    rspsub_(391, odi2);
X/* 						!NOT A TOOL. */
X    return ret_val;
X
XL36200:
X    ret_val = objact_();
X/* 						!LET OBJECT HANDLE. */
X    return ret_val;
X
X/* V117--	BREATHE.  BECOMES INFLATE WITH LUNGS. */
X
XL38000:
X    prsvec_1.prsa = vindex_1.inflaw;
X    prsvec_1.prsi = oindex_1.lungs;
X    goto L22000;
X/* 						!HANDLE LIKE INFLATE. */
X
X/* V118--	KNOCK.  MOSTLY JOKE. */
X
XL39000:
X    if (objact_()) {
X	return ret_val;
X    }
X/* 						!OBJ HANDLE? */
X    i = 394;
X/* 						!JOKE FOR DOOR. */
X    if ((objcts_1.oflag1[prsvec_1.prso - 1] & DOORBT) == 0) {
X	i = 395;
X    }
X    rspsub_(i, odo2);
X/* 						!JOKE FOR NONDOORS TOO. */
X    return ret_val;
X
X/* V119--	LOOK. */
X
XL40000:
X    if (prsvec_1.prso != 0) {
X	goto L41500;
X    }
X/* 						!SOMETHING TO LOOK AT? */
X    ret_val = rmdesc_(3);
X/* 						!HANDLED BY RMDESC. */
X    return ret_val;
X
X/* V120--	EXAMINE. */
X
XL41000:
X    if (prsvec_1.prso != 0) {
X	goto L41500;
X    }
X/* 						!SOMETHING TO EXAMINE? */
X    ret_val = rmdesc_(0);
X/* 						!HANDLED BY RMDESC. */
X    return ret_val;
X
XL41500:
X    if (objact_()) {
X	return ret_val;
X    }
X/* 						!OBJ HANDLE? */
X    i = objcts_1.oread[prsvec_1.prso - 1];
X/* 						!GET READING MATERIAL. */
X    if (i != 0) {
X	rspeak_(i);
X    }
X/* 						!OUTPUT IF THERE, */
X    if (i == 0) {
X	rspsub_(429, odo2);
X    }
X/* 						!OTHERWISE DEFAULT. */
X    prsvec_1.prsa = vindex_1.foow;
X/* 						!DEFUSE ROOM PROCESSORS. */
X    return ret_val;
X
X/* V121--	SHAKE.  IF HOLLOW OBJECT, SOME ACTION. */
X
XL42000:
X    if (objact_()) {
X	return ret_val;
X    }
X/* 						!OBJECT HANDLE? */
X    if ((objcts_1.oflag2[prsvec_1.prso - 1] & VILLBT) == 0) {
X	goto L42100;
X    }
X    rspeak_(371);
X/* 						!JOKE FOR VILLAINS. */
X    return ret_val;
X
XL42100:
X    if (qempty_(prsvec_1.prso) || (objcts_1.oflag1[prsvec_1.prso - 1] & 
X	    TAKEBT) == 0) {
X	goto L10;
X    }
X    if ((objcts_1.oflag2[prsvec_1.prso - 1] & OPENBT) != 0) {
X	goto L42300;
X    }
X/* 						!OPEN?  SPILL. */
X    rspsub_(396, odo2);
X/* 						!NO, DESCRIBE NOISE. */
X    return ret_val;
X
XL42300:
X    rspsub_(397, odo2);
X/* 						!SPILL THE WORKS. */
X    i__1 = objcts_1.olnt;
X    for (i = 1; i <= i__1; ++i) {
X/* 						!SPILL CONTENTS. */
X	if (objcts_1.ocan[i - 1] != prsvec_1.prso) {
X	    goto L42500;
X	}
X/* 						!INSIDE? */
X	objcts_1.oflag2[i - 1] |= TCHBT;
X	if (av == 0) {
X	    goto L42400;
X	}
X/* 						!IN VEHICLE? */
X	newsta_(i, 0, 0, av, 0);
X/* 						!YES, SPILL IN THERE. */
X	goto L42500;
X
XL42400:
X	newsta_(i, 0, play_1.here, 0, 0);
X/* 						!NO, SPILL ON FLOOR, */
X	if (i == oindex_1.water) {
X	    newsta_(i, 133, 0, 0, 0);
X	}
X/* 						!BUT WATER DISAPPEARS. */
XL42500:
X	;
X    }
X    return ret_val;
X
X/* V122--	MOVE.  MOSTLY JOKES. */
X
XL43000:
X    if (objact_()) {
X	return ret_val;
X    }
X/* 						!OBJ HANDLE? */
X    i = 398;
X/* 						!ASSUME NOT HERE. */
X    if (qhere_(prsvec_1.prso, play_1.here)) {
X	i = 399;
X    }
X    rspsub_(i, odo2);
X/* 						!JOKE. */
X    return ret_val;
X/* VAPPLI, PAGE 6 */
X
X/* V123--	TURN ON. */
X
XL44000:
X    f = lit_(play_1.here);
X/* 						!RECORD IF LIT. */
X    if (objact_()) {
X	goto L44300;
X    }
X/* 						!OBJ HANDLE? */
X    if ((objcts_1.oflag1[prsvec_1.prso - 1] & LITEBT) != 0 && 
X	    objcts_1.oadv[prsvec_1.prso - 1] == play_1.winner) {
X	goto L44100;
X    }
X    rspeak_(400);
X/* 						!CANT DO IT. */
X    return ret_val;
X
XL44100:
X    if ((objcts_1.oflag1[prsvec_1.prso - 1] & ONBT) == 0) {
X	goto L44200;
X    }
X    rspeak_(401);
X/* 						!ALREADY ON. */
X    return ret_val;
X
XL44200:
X    objcts_1.oflag1[prsvec_1.prso - 1] |= ONBT;
X    rspsub_(404, odo2);
XL44300:
X    if (! f && lit_(play_1.here)) {
X	f = rmdesc_(0);
X    }
X/* 						!ROOM NEWLY LIT. */
X    return ret_val;
X
X/* V124--	TURN OFF. */
X
XL45000:
X    if (objact_()) {
X	goto L45300;
X    }
X/* 						!OBJ HANDLE? */
X    if ((objcts_1.oflag1[prsvec_1.prso - 1] & LITEBT) != 0 && 
X	    objcts_1.oadv[prsvec_1.prso - 1] == play_1.winner) {
X	goto L45100;
X    }
X    rspeak_(402);
X/* 						!CANT DO IT. */
X    return ret_val;
X
XL45100:
X    if ((objcts_1.oflag1[prsvec_1.prso - 1] & ONBT) != 0) {
X	goto L45200;
X    }
X    rspeak_(403);
X/* 						!ALREADY OFF. */
X    return ret_val;
X
XL45200:
X    objcts_1.oflag1[prsvec_1.prso - 1] &= ~ ONBT;
X    rspsub_(405, odo2);
XL45300:
X    if (! lit_(play_1.here)) {
X	rspeak_(406);
X    }
X/* 						!MAY BE DARK. */
X    return ret_val;
X
X/* V125--	OPEN.  A FINE MESS. */
X
XL46000:
X    if (objact_()) {
X	return ret_val;
X    }
X/* 						!OBJ HANDLE? */
X    if ((objcts_1.oflag1[prsvec_1.prso - 1] & CONTBT) != 0) {
X	goto L46100;
X    }
XL46050:
X    rspsub_(407, odo2);
X/* 						!NOT OPENABLE. */
X    return ret_val;
X
XL46100:
X    if (objcts_1.ocapac[prsvec_1.prso - 1] != 0) {
X	goto L46200;
X    }
X    rspsub_(408, odo2);
X/* 						!NOT OPENABLE. */
X    return ret_val;
X
XL46200:
X    if (! ((objcts_1.oflag2[prsvec_1.prso - 1] & OPENBT) != 0)) {
X	goto L46225;
X    }
X    rspeak_(412);
X/* 						!ALREADY OPEN. */
X    return ret_val;
X
XL46225:
X    objcts_1.oflag2[prsvec_1.prso - 1] |= OPENBT;
X    if ((objcts_1.oflag1[prsvec_1.prso - 1] & TRANBT) != 0 || 
X	    qempty_(prsvec_1.prso)) {
X	goto L46300;
X    }
X    princo_(prsvec_1.prso, 410);
X/* 						!PRINT CONTENTS. */
X    return ret_val;
X
XL46300:
X    rspeak_(409);
X/* 						!DONE */
X    return ret_val;
X
X/* V126--	CLOSE. */
X
XL47000:
X    if (objact_()) {
X	return ret_val;
X    }
X/* 						!OBJ HANDLE? */
X    if ((objcts_1.oflag1[prsvec_1.prso - 1] & CONTBT) == 0) {
X	goto L46050;
X    }
X    if (objcts_1.ocapac[prsvec_1.prso - 1] != 0) {
X	goto L47100;
X    }
X    rspsub_(411, odo2);
X/* 						!NOT CLOSABLE. */
X    return ret_val;
X
XL47100:
X    if ((objcts_1.oflag2[prsvec_1.prso - 1] & OPENBT) != 0) {
X	goto L47200;
X    }
X/* 						!OPEN? */
X    rspeak_(413);
X/* 						!NO, JOKE. */
X    return ret_val;
X
XL47200:
X    objcts_1.oflag2[prsvec_1.prso - 1] &= ~ OPENBT;
X    rspeak_(414);
X/* 						!DONE. */
X    return ret_val;
X/* VAPPLI, PAGE 7 */
X
X/* V127--	FIND.  BIG MEGILLA. */
X
XL48000:
X    if (objact_()) {
X	return ret_val;
X    }
X/* 						!OBJ HANDLE? */
X    i = 415;
X/* 						!DEFAULT CASE. */
X    if (qhere_(prsvec_1.prso, play_1.here)) {
X	goto L48300;
X    }
X/* 						!IN ROOM? */
X    if (objcts_1.oadv[prsvec_1.prso - 1] == play_1.winner) {
X	goto L48200;
X    }
X/* 						!ON WINNER? */
X    j = objcts_1.ocan[prsvec_1.prso - 1];
X/* 						!DOWN ONE LEVEL. */
X    if (j == 0) {
X	goto L10;
X    }
X    if ((objcts_1.oflag1[j - 1] & TRANBT) == 0 && (! ((
X	    objcts_1.oflag2[j - 1] & OPENBT) != 0) || (
X	    objcts_1.oflag1[j - 1] & DOORBT + CONTBT) == 0))
X	     {
X	goto L10;
X    }
X    i = 417;
X/* 						!ASSUME IN ROOM. */
X    if (qhere_(j, play_1.here)) {
X	goto L48100;
X    }
X    if (objcts_1.oadv[j - 1] != play_1.winner) {
X	goto L10;
X    }
X/* 						!NOT HERE OR ON PERSON. */
X    i = 418;
XL48100:
X    rspsub_(i, objcts_1.odesc2[j - 1]);
X/* 						!DESCRIBE FINDINGS. */
X    return ret_val;
X
XL48200:
X    i = 416;
XL48300:
X    rspsub_(i, odo2);
X/* 						!DESCRIBE FINDINGS. */
X    return ret_val;
X
X/* V128--	WAIT.  RUN CLOCK DEMON. */
X
XL49000:
X    rspeak_(419);
X/* 						!TIME PASSES. */
X    for (i = 1; i <= 3; ++i) {
X	if (clockd_()) {
X	    return ret_val;
X	}
X/* L49100: */
X    }
X    return ret_val;
X
X/* V129--	SPIN. */
X/* V159--	TURN TO. */
X
XL50000:
XL88000:
X    if (! objact_()) {
X	rspeak_(663);
X    }
X/* 						!IF NOT OBJ, JOKE. */
X    return ret_val;
X
X/* V130--	BOARD.  WORKS WITH VEHICLES. */
X
XL51000:
X    if ((objcts_1.oflag2[prsvec_1.prso - 1] & VEHBT) != 0) {
X	goto L51100;
X    }
X    rspsub_(421, odo2);
X/* 						!NOT VEHICLE, JOKE. */
X    return ret_val;
X
XL51100:
X    if (qhere_(prsvec_1.prso, play_1.here)) {
X	goto L51200;
X    }
X/* 						!HERE? */
X    rspsub_(420, odo2);
X/* 						!NO, JOKE. */
X    return ret_val;
X
XL51200:
X    if (av == 0) {
X	goto L51300;
X    }
X/* 						!ALREADY GOT ONE? */
X    rspsub_(422, odo2);
X/* 						!YES, JOKE. */
X    return ret_val;
X
XL51300:
X    if (objact_()) {
X	return ret_val;
X    }
X/* 						!OBJ HANDLE? */
X    rspsub_(423, odo2);
X/* 						!DESCRIBE. */
X    advs_1.avehic[play_1.winner - 1] = prsvec_1.prso;
X    if (play_1.winner != aindex_1.player) {
X	objcts_1.ocan[advs_1.aobj[play_1.winner - 1] - 1] = prsvec_1.prso;
X    }
X    return ret_val;
X
X/* V131--	DISEMBARK. */
X
XL52000:
X    if (av == prsvec_1.prso) {
X	goto L52100;
X    }
X/* 						!FROM VEHICLE? */
X    rspeak_(424);
X/* 						!NO, JOKE. */
X    return ret_val;
X
XL52100:
X    if (objact_()) {
X	return ret_val;
X    }
X/* 						!OBJ HANDLE? */
X    if ((rooms_1.rflag[play_1.here - 1] & RLAND) != 0) {
X	goto L52200;
X    }
X    rspeak_(425);
X/* 						!NOT ON LAND. */
X    return ret_val;
X
XL52200:
X    advs_1.avehic[play_1.winner - 1] = 0;
X    rspeak_(426);
X    if (play_1.winner != aindex_1.player) {
X	newsta_(advs_1.aobj[play_1.winner - 1], 0, play_1.here, 0, 0);
X    }
X    return ret_val;
X
X/* V132--	TAKE.  HANDLED EXTERNALLY. */
X
XL53000:
X    ret_val = take_(1);
X    return ret_val;
X
X/* V133--	INVENTORY.  PROCESSED EXTERNALLY. */
X
XL55000:
X    invent_(play_1.winner);
X    return ret_val;
X/* VAPPLI, PAGE 8 */
X
X/* V134--	FILL.  STRANGE DOINGS WITH WATER. */
X
XL56000:
X    if (prsvec_1.prsi != 0) {
X	goto L56050;
X    }
X/* 						!ANY OBJ SPECIFIED? */
X    if ((rooms_1.rflag[play_1.here - 1] & RWATER + RFILL) != 
X	    0) {
X	goto L56025;
X    }
X    rspeak_(516);
X/* 						!NOTHING TO FILL WITH. */
X    prsvec_1.prswon = FALSE_;
X/* 						!YOU LOSE. */
X    return ret_val;
X
XL56025:
X    prsvec_1.prsi = oindex_1.gwate;
X/* 						!USE GLOBAL WATER. */
XL56050:
X    if (objact_()) {
X	return ret_val;
X    }
X/* 						!OBJ HANDLE? */
X    if (prsvec_1.prsi != oindex_1.gwate && prsvec_1.prsi != oindex_1.water) {
X	rspsb2_(444, odi2, odo2);
X    }
X    return ret_val;
X
X/* V135,V136--	EAT/DRINK */
X
XL58000:
XL59000:
X    if (objact_()) {
X	return ret_val;
X    }
X/* 						!OBJ HANDLE? */
X    if (prsvec_1.prso == oindex_1.gwate) {
X	goto L59500;
X    }
X/* 						!DRINK GLOBAL WATER? */
X    if (! ((objcts_1.oflag1[prsvec_1.prso - 1] & FOODBT) != 0)) {
X	goto L59400;
X    }
X/* 						!EDIBLE? */
X    if (objcts_1.oadv[prsvec_1.prso - 1] == play_1.winner) {
X	goto L59200;
X    }
X/* 						!YES, ON WINNER? */
XL59100:
X    rspsub_(454, odo2);
X/* 						!NOT ACCESSIBLE. */
X    return ret_val;
X
XL59200:
X    if (prsvec_1.prsa == vindex_1.drinkw) {
X	goto L59300;
X    }
X/* 						!DRINK FOOD? */
X    newsta_(prsvec_1.prso, 455, 0, 0, 0);
X/* 						!NO, IT DISAPPEARS. */
X    return ret_val;
X
XL59300:
X    rspeak_(456);
X/* 						!YES, JOKE. */
X    return ret_val;
X
XL59400:
X    if (! ((objcts_1.oflag1[prsvec_1.prso - 1] & DRNKBT) != 0)) {
X	goto L59600;
X    }
X/* 						!DRINKABLE? */
X    if (objcts_1.ocan[prsvec_1.prso - 1] == 0) {
X	goto L59100;
X    }
X/* 						!YES, IN SOMETHING? */
X    if (objcts_1.oadv[objcts_1.ocan[prsvec_1.prso - 1] - 1] != play_1.winner) 
X	    {
X	goto L59100;
X    }
X    if ((objcts_1.oflag2[objcts_1.ocan[prsvec_1.prso - 1] - 1] & 
X	    OPENBT) != 0) {
X	goto L59500;
X    }
X/* 						!CONT OPEN? */
X    rspeak_(457);
X/* 						!NO, JOKE. */
X    return ret_val;
X
XL59500:
X    newsta_(prsvec_1.prso, 458, 0, 0, 0);
X/* 						!GONE. */
X    return ret_val;
X
XL59600:
X    rspsub_(453, odo2);
X/* 						!NOT FOOD OR DRINK. */
X    return ret_val;
X
X/* V137--	BURN.  COMPLICATED. */
X
XL60000:
X    if ((objcts_1.oflag1[prsvec_1.prsi - 1] & FLAMBT + 
X	    LITEBT + ONBT) != FLAMBT + 
X	    LITEBT + ONBT) {
X	goto L60400;
X    }
X    if (objact_()) {
X	return ret_val;
X    }
X/* 						!OBJ HANDLE? */
X    if (objcts_1.ocan[prsvec_1.prso - 1] != oindex_1.recep) {
X	goto L60050;
X    }
X/* 						!BALLOON? */
X    if (oappli_(objcts_1.oactio[oindex_1.ballo - 1], 0)) {
X	return ret_val;
X    }
X/* 						!DID IT HANDLE? */
XL60050:
X    if ((objcts_1.oflag1[prsvec_1.prso - 1] & BURNBT) == 0) {
X	goto L60300;
X    }
X    if (objcts_1.oadv[prsvec_1.prso - 1] != play_1.winner) {
X	goto L60100;
X    }
X/* 						!CARRYING IT? */
X    rspsub_(459, odo2);
X    jigsup_(460);
X    return ret_val;
X
XL60100:
X    j = objcts_1.ocan[prsvec_1.prso - 1];
X/* 						!GET CONTAINER. */
X    if (qhere_(prsvec_1.prso, play_1.here) || av != 0 && j == av) {
X	goto L60200;
X    }
X    if (j == 0) {
X	goto L60150;
X    }
X/* 						!INSIDE? */
X    if (! ((objcts_1.oflag2[j - 1] & OPENBT) != 0)) {
X	goto L60150;
X    }
X/* 						!OPEN? */
X    if (qhere_(j, play_1.here) || av != 0 && objcts_1.ocan[j - 1] == av) {
X	goto L60200;
X    }
XL60150:
X    rspeak_(461);
X/* 						!CANT REACH IT. */
X    return ret_val;
X
XL60200:
X    rspsub_(462, odo2);
X/* 						!BURN IT. */
X    newsta_(prsvec_1.prso, 0, 0, 0, 0);
X    return ret_val;
X
XL60300:
X    rspsub_(463, odo2);
X/* 						!CANT BURN IT. */
X    return ret_val;
X
XL60400:
X    rspsub_(301, odi2);
X/* 						!CANT BURN IT WITH THAT. */
X    return ret_val;
X/* VAPPLI, PAGE 9 */
X
X/* V138--	MUNG.  GO TO COMMON ATTACK CODE. */
X
XL63000:
X    i = 466;
X/* 						!CHOOSE PHRASE. */
X    if ((objcts_1.oflag2[prsvec_1.prso - 1] & VILLBT) != 0) {
X	goto L66100;
X    }
X    if (! objact_()) {
X	rspsb2_(466, odo2, rmk);
X    }
X    return ret_val;
X
X/* V139--	KILL.  GO TO COMMON ATTACK CODE. */
X
XL64000:
X    i = 467;
X/* 						!CHOOSE PHRASE. */
X    goto L66100;
X
X/* V140--	SWING.  INVERT OBJECTS, FALL THRU TO ATTACK. */
X
XL65000:
X    j = prsvec_1.prso;
X/* 						!INVERT. */
X    prsvec_1.prso = prsvec_1.prsi;
X    prsvec_1.prsi = j;
X    j = odo2;
X    odo2 = odi2;
X    odi2 = j;
X    prsvec_1.prsa = vindex_1.attacw;
X/* 						!FOR OBJACT. */
X
X/* V141--	ATTACK.  FALL THRU TO ATTACK CODE. */
X
XL66000:
X    i = 468;
X
X/* COMMON MUNG/ATTACK/SWING/KILL CODE. */
X
XL66100:
X    if (prsvec_1.prso != 0) {
X	goto L66200;
X    }
X/* 						!ANYTHING? */
X    rspeak_(469);
X/* 						!NO, JOKE. */
X    return ret_val;
X
XL66200:
X    if (objact_()) {
X	return ret_val;
X    }
X/* 						!OBJ HANDLE? */
X    if ((objcts_1.oflag2[prsvec_1.prso - 1] & VILLBT) != 0) {
X	goto L66300;
X    }
X    if ((objcts_1.oflag1[prsvec_1.prso - 1] & VICTBT) == 0) {
X	rspsub_(470, odo2);
X    }
X    return ret_val;
X
XL66300:
X    j = 471;
X/* 						!ASSUME NO WEAPON. */
X    if (prsvec_1.prsi == 0) {
X	goto L66500;
X    }
X    if ((objcts_1.oflag2[prsvec_1.prsi - 1] & WEAPBT) == 0) {
X	goto L66400;
X    }
X    melee = 1;
X/* 						!ASSUME SWORD. */
X    if (prsvec_1.prsi != oindex_1.sword) {
X	melee = 2;
X    }
X/* 						!MUST BE KNIFE. */
X    i = blow_(aindex_1.player, prsvec_1.prso, melee, 1, 0);
X/* 						!STRIKE BLOW. */
X    return ret_val;
X
XL66400:
X    j = 472;
X/* 						!NOT A WEAPON. */
XL66500:
X    rspsb2_(i, odo2, j);
X/* 						!JOKE. */
X    return ret_val;
X/* VAPPLI, PAGE 10 */
X
X/* V142--	WALK.  PROCESSED EXTERNALLY. */
X
XL68000:
X    ret_val = walk_();
X    return ret_val;
X
X/* V143--	TELL.  PROCESSED IN GAME. */
X
XL69000:
X    rspeak_(603);
X    return ret_val;
X
X/* V144--	PUT.  PROCESSED EXTERNALLY. */
X
XL70000:
X    ret_val = put_(1);
X    return ret_val;
X
X/* V145,V146,V147,V148--	DROP/GIVE/POUR/THROW */
X
XL71000:
XL72000:
XL73000:
XL74000:
X    ret_val = drop_(0);
X    return ret_val;
X
X/* V149--	SAVE */
X
XL77000:
X    if ((rooms_1.rflag[rindex_1.tstrs - 1] & RSEEN) == 0) {
X	goto L77100;
X    }
X    rspeak_(828);
X/* 						!NO SAVES IN ENDGAME. */
X    return ret_val;
X
XL77100:
X    savegm_();
X    return ret_val;
X
X/* V150--	RESTORE */
X
XL78000:
X    if ((rooms_1.rflag[rindex_1.tstrs - 1] & RSEEN) == 0) {
X	goto L78100;
X    }
X    rspeak_(829);
X/* 						!NO RESTORES IN ENDGAME. */
X    return ret_val;
X
XL78100:
X    rstrgm_();
X    return ret_val;
X/* VAPPLI, PAGE 11 */
X
X/* V151--	HELLO */
X
XL80000:
X    if (prsvec_1.prso != 0) {
X	goto L80100;
X    }
X/* 						!ANY OBJ? */
X    i__1 = rnd_(4) + 346;
X    rspeak_(i__1);
X/* 						!NO, VANILLA HELLO. */
X    return ret_val;
X
XL80100:
X    if (prsvec_1.prso != oindex_1.aviat) {
X	goto L80200;
X    }
X/* 						!HELLO AVIATOR? */
X    rspeak_(350);
X/* 						!NOTHING HAPPENS. */
X    return ret_val;
X
XL80200:
X    if (prsvec_1.prso != oindex_1.sailo) {
X	goto L80300;
X    }
X/* 						!HELLO SAILOR? */
X    ++state_1.hs;
X/* 						!COUNT. */
X    i = 351;
X/* 						!GIVE NORMAL OR */
X    if (state_1.hs % 10 == 0) {
X	i = 352;
X    }
X/* 						!RANDOM MESSAGE. */
X    if (state_1.hs % 20 == 0) {
X	i = 353;
X    }
X    rspeak_(i);
X/* 						!SPEAK UP. */
X    return ret_val;
X
XL80300:
X    if (objact_()) {
X	return ret_val;
X    }
X/* 						!OBJ HANDLE? */
X    i = 354;
X/* 						!ASSUME VILLAIN. */
X    if ((objcts_1.oflag2[prsvec_1.prso - 1] & VILLBT + 
X	    ACTRBT) == 0) {
X	i = 355;
X    }
X    rspsub_(i, odo2);
X/* 						!HELLO THERE */
X/* 						! */
X    return ret_val;
X
X/* V152--	LOOK INTO */
X
XL81000:
X    if (objact_()) {
X	return ret_val;
X    }
X/* 						!OBJ HANDLE? */
X    if ((objcts_1.oflag1[prsvec_1.prso - 1] & DOORBT) == 0) {
X	goto L81300;
X    }
X    if (! ((objcts_1.oflag2[prsvec_1.prso - 1] & OPENBT) != 0)) {
X	goto L81200;
X    }
X/* 						!OPEN? */
X    rspsub_(628, odo2);
X/* 						!OPEN DOOR- UNINTERESTING. */
X    return ret_val;
X
XL81200:
X    rspsub_(525, odo2);
X/* 						!CLOSED DOOR- CANT SEE. */
X    return ret_val;
X
XL81300:
X    if ((objcts_1.oflag2[prsvec_1.prso - 1] & VEHBT) != 0) {
X	goto L81400;
X    }
X    if ((objcts_1.oflag2[prsvec_1.prso - 1] & OPENBT) != 0 || (
X	    objcts_1.oflag1[prsvec_1.prso - 1] & TRANBT) != 0) {
X	goto L81400;
X    }
X    if ((objcts_1.oflag1[prsvec_1.prso - 1] & CONTBT) != 0) {
X	goto L81200;
X    }
X    rspsub_(630, odo2);
X/* 						!CANT LOOK INSIDE. */
X    return ret_val;
X
XL81400:
X    if (qempty_(prsvec_1.prso)) {
X	goto L81500;
X    }
X/* 						!VEH OR SEE IN.  EMPTY? */
X    princo_(prsvec_1.prso, 573);
X/* 						!NO, LIST CONTENTS. */
X    return ret_val;
X
XL81500:
X    rspsub_(629, odo2);
X/* 						!EMPTY. */
X    return ret_val;
X
X/* V153--	LOOK UNDER */
X
XL82000:
X    if (! objact_()) {
X	rspeak_(631);
X    }
X/* 						!OBJECT HANDLE? */
X    return ret_val;
X/* VAPPLI, PAGE 12 */
X
X/* V154--	PUMP */
X
XL83000:
X    if (objcts_1.oroom[oindex_1.pump - 1] == play_1.here || objcts_1.oadv[
X	    oindex_1.pump - 1] == play_1.winner) {
X	goto L83100;
X    }
X    rspeak_(632);
X/* 						!NO. */
X    return ret_val;
X
XL83100:
X    prsvec_1.prsi = oindex_1.pump;
X/* 						!BECOMES INFLATE */
X    prsvec_1.prsa = vindex_1.inflaw;
X/* 						!X WITH PUMP. */
X    goto L22000;
X/* 						!DONE. */
X
X/* V155--	WIND */
X
XL84000:
X    if (! objact_()) {
X	rspsub_(634, odo2);
X    }
X/* 						!OBJ HANDLE? */
X    return ret_val;
X
X/* V156--	CLIMB */
X/* V157--	CLIMB UP */
X/* V158--	CLIMB DOWN */
X
XL85000:
XL86000:
XL87000:
X    i = xsrch_1.xup;
X/* 						!ASSUME UP. */
X    if (prsvec_1.prsa == vindex_1.clmbdw) {
X	i = xsrch_1.xdown;
X    }
X/* 						!UNLESS CLIMB DN. */
X    f = (objcts_1.oflag2[prsvec_1.prso - 1] & CLMBBT) != 0;
X    if (f && findxt_(i, play_1.here)) {
X	goto L87500;
X    }
X/* 						!ANYTHING TO CLIMB? */
X    if (objact_()) {
X	return ret_val;
X    }
X/* 						!OBJ HANDLE? */
X    i = 657;
X    if (f) {
X	i = 524;
X    }
X/* 						!VARIETY OF JOKES. */
X    if (! f && (prsvec_1.prso == oindex_1.wall || prsvec_1.prso >= 
X	    oindex_1.wnort && prsvec_1.prso <= oindex_1.wnort + 3)) {
X	i = 656;
X    }
X    rspeak_(i);
X/* 						!JOKE. */
X    return ret_val;
X
XL87500:
X    prsvec_1.prsa = vindex_1.walkw;
X/* 						!WALK */
X    prsvec_1.prso = i;
X/* 						!IN SPECIFIED DIR. */
X    ret_val = walk_();
X    return ret_val;
X
X} /* vappli_ */
X
X/* CLOCKD- CLOCK DEMON FOR INTERMOVE CLOCK EVENTS */
X
X/* DECLARATIONS */
X
Xlogical clockd_()
X{
X    /* System generated locals */
X    integer i__1;
X    logical ret_val;
X
X    /* Local variables */
X    integer i;
X
X    ret_val = FALSE_;
X/* 						!ASSUME NO ACTION. */
X    i__1 = cevent_1.clnt;
X    for (i = 1; i <= i__1; ++i) {
X	if (! cevent_1.cflag[i - 1] || cevent_1.ctick[i - 1] == 0) {
X	    goto L100;
X	}
X	if (cevent_1.ctick[i - 1] < 0) {
X	    goto L50;
X	}
X/* 						!PERMANENT ENTRY? */
X	--cevent_1.ctick[i - 1];
X	if (cevent_1.ctick[i - 1] != 0) {
X	    goto L100;
X	}
X/* 						!TIMER EXPIRED? */
XL50:
X	ret_val = TRUE_;
X	cevapp_(cevent_1.cactio[i - 1]);
X/* 						!DO ACTION. */
XL100:
X	;
X    }
X    return ret_val;
X
X} /* clockd_ */
END_OF_FILE
if test 25958 -ne `wc -c <'verbs.c'`; then
    echo shar: \"'verbs.c'\" unpacked with wrong size!
fi
# end of 'verbs.c'
fi
echo shar: End of archive 6 \(of 12\).
cp /dev/null ark6isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 12 archives.
    rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0