billr@saab.CNA.TEK.COM (Bill Randle) (05/15/91)
Submitted-by: ian@airs.COM
Posting-number: Volume 12, Issue 74
Archive-name: cdungeon/Part07
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 7 (of 12)."
# Contents: dverb1.c nobjs.c sobjs.c
# Wrapped by billr@saab on Tue May 14 16:27:40 1991
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'dverb1.c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'dverb1.c'\"
else
echo shar: Extracting \"'dverb1.c'\" \(9727 characters\)
sed "s/^X//" >'dverb1.c' <<'END_OF_FILE'
X/* TAKE-- BASIC TAKE SEQUENCE */
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
X/* TAKE AN OBJECT (FOR VERBS TAKE, PUT, DROP, READ, ETC.) */
X
Xlogical take_(flg)
Xlogical flg;
X{
X /* System generated locals */
X integer i__1;
X logical ret_val;
X
X /* Local variables */
X integer oa;
X integer x;
X
X ret_val = FALSE_;
X/* !ASSUME LOSES. */
X oa = objcts_1.oactio[prsvec_1.prso - 1];
X/* !GET OBJECT ACTION. */
X if (prsvec_1.prso <= star_1.strbit) {
X goto L100;
X }
X/* !STAR? */
X ret_val = objact_();
X/* !YES, LET IT HANDLE. */
X return ret_val;
X
XL100:
X x = objcts_1.ocan[prsvec_1.prso - 1];
X/* !INSIDE? */
X if (prsvec_1.prso != advs_1.avehic[play_1.winner - 1]) {
X goto L400;
X }
X/* !HIS VEHICLE? */
X rspeak_(672);
X/* !DUMMY. */
X return ret_val;
X
XL400:
X if ((objcts_1.oflag1[prsvec_1.prso - 1] & TAKEBT) != 0) {
X goto L500;
X }
X if (! oappli_(oa, 0)) {
X i__1 = rnd_(5) + 552;
X rspeak_(i__1);
X }
X return ret_val;
X
X/* OBJECT IS TAKEABLE AND IN POSITION TO BE TAKEN. */
X
XL500:
X if (x != 0 || qhere_(prsvec_1.prso, play_1.here)) {
X goto L600;
X }
X if (objcts_1.oadv[prsvec_1.prso - 1] == play_1.winner) {
X rspeak_(557);
X }
X/* !ALREADY GOT IT? */
X return ret_val;
X
XL600:
X if (x != 0 && objcts_1.oadv[x - 1] == play_1.winner || weight_(0,
X prsvec_1.prso, play_1.winner) + objcts_1.osize[prsvec_1.prso - 1]
X <= state_1.mxload) {
X goto L700;
X }
X rspeak_(558);
X/* !TOO MUCH WEIGHT. */
X return ret_val;
X
XL700:
X ret_val = TRUE_;
X/* !AT LAST. */
X if (oappli_(oa, 0)) {
X return ret_val;
X }
X/* !DID IT HANDLE? */
X newsta_(prsvec_1.prso, 0, 0, 0, play_1.winner);
X/* !TAKE OBJECT FOR WINNER. */
X objcts_1.oflag2[prsvec_1.prso - 1] |= TCHBT;
X scrupd_(objcts_1.ofval[prsvec_1.prso - 1]);
X/* !UPDATE SCORE. */
X objcts_1.ofval[prsvec_1.prso - 1] = 0;
X/* !CANT BE SCORED AGAIN. */
X if (flg) {
X rspeak_(559);
X }
X/* !TELL TAKEN. */
X return ret_val;
X
X} /* take_ */
X
X/* DROP- DROP VERB PROCESSOR */
X
X/* DECLARATIONS */
X
Xlogical drop_(z)
Xlogical z;
X{
X /* System generated locals */
X logical ret_val;
X
X /* Local variables */
X logical f;
X integer i, x;
X
X ret_val = TRUE_;
X/* !ASSUME WINS. */
X x = objcts_1.ocan[prsvec_1.prso - 1];
X/* !GET CONTAINER. */
X if (x == 0) {
X goto L200;
X }
X/* !IS IT INSIDE? */
X if (objcts_1.oadv[x - 1] != play_1.winner) {
X goto L1000;
X }
X/* !IS HE CARRYING CON? */
X if ((objcts_1.oflag2[x - 1] & OPENBT) != 0) {
X goto L300;
X }
X rspsub_(525, objcts_1.odesc2[x - 1]);
X/* !CANT REACH. */
X return ret_val;
X
XL200:
X if (objcts_1.oadv[prsvec_1.prso - 1] != play_1.winner) {
X goto L1000;
X }
X/* !IS HE CARRYING OBJ? */
XL300:
X if (advs_1.avehic[play_1.winner - 1] == 0) {
X goto L400;
X }
X/* !IS HE IN VEHICLE? */
X prsvec_1.prsi = advs_1.avehic[play_1.winner - 1];
X/* !YES, */
X f = put_(1);
X/* !DROP INTO VEHICLE. */
X prsvec_1.prsi = 0;
X/* !DISARM PARSER. */
X return ret_val;
X/* !DONE. */
X
XL400:
X newsta_(prsvec_1.prso, 0, play_1.here, 0, 0);
X/* !DROP INTO ROOM. */
X if (play_1.here == rindex_1.mtree) {
X newsta_(prsvec_1.prso, 0, rindex_1.fore3, 0, 0);
X }
X scrupd_(objcts_1.ofval[prsvec_1.prso - 1]);
X/* !SCORE OBJECT. */
X objcts_1.ofval[prsvec_1.prso - 1] = 0;
X/* !CANT BE SCORED AGAIN. */
X objcts_1.oflag2[prsvec_1.prso - 1] |= TCHBT;
X
X if (objact_()) {
X return ret_val;
X }
X/* !DID IT HANDLE? */
X i = 0;
X/* !ASSUME NOTHING TO SAY. */
X if (prsvec_1.prsa == vindex_1.dropw) {
X i = 528;
X }
X if (prsvec_1.prsa == vindex_1.throww) {
X i = 529;
X }
X if (i != 0 && play_1.here == rindex_1.mtree) {
X i = 659;
X }
X rspsub_(i, objcts_1.odesc2[prsvec_1.prso - 1]);
X return ret_val;
X
XL1000:
X rspeak_(527);
X/* !DONT HAVE IT. */
X return ret_val;
X
X} /* drop_ */
X
X/* PUT- PUT VERB PROCESSOR */
X
X/* DECLARATIONS */
X
Xlogical put_(flg)
Xlogical flg;
X{
X /* System generated locals */
X logical ret_val;
X
X /* Local variables */
X integer j;
X integer svi, svo;
X
X ret_val = FALSE_;
X if (prsvec_1.prso <= star_1.strbit && prsvec_1.prsi <= star_1.strbit) {
X goto L200;
X }
X if (! objact_()) {
X rspeak_(560);
X }
X/* !STAR */
X ret_val = TRUE_;
X return ret_val;
X
XL200:
X if ((objcts_1.oflag2[prsvec_1.prsi - 1] & OPENBT) != 0 || (
X objcts_1.oflag1[prsvec_1.prsi - 1] & DOORBT +
X CONTBT) != 0 || (objcts_1.oflag2[prsvec_1.prsi - 1] &
X VEHBT) != 0) {
X goto L300;
X }
X rspeak_(561);
X/* !CANT PUT IN THAT. */
X return ret_val;
X
XL300:
X if ((objcts_1.oflag2[prsvec_1.prsi - 1] & OPENBT) != 0) {
X goto L400;
X }
X/* !IS IT OPEN? */
X rspeak_(562);
X/* !NO, JOKE */
X return ret_val;
X
XL400:
X if (prsvec_1.prso != prsvec_1.prsi) {
X goto L500;
X }
X/* !INTO ITSELF? */
X rspeak_(563);
X/* !YES, JOKE. */
X return ret_val;
X
XL500:
X if (objcts_1.ocan[prsvec_1.prso - 1] != prsvec_1.prsi) {
X goto L600;
X }
X/* !ALREADY INSIDE. */
X rspsb2_(564, objcts_1.odesc2[prsvec_1.prso - 1], objcts_1.odesc2[
X prsvec_1.prsi - 1]);
X ret_val = TRUE_;
X return ret_val;
X
XL600:
X if (weight_(0, prsvec_1.prso, 0) + weight_(0, prsvec_1.prsi,
X 0) + objcts_1.osize[prsvec_1.prso - 1] <= objcts_1.ocapac[
X prsvec_1.prsi - 1]) {
X goto L700;
X }
X rspeak_(565);
X/* !THEN CANT DO IT. */
X return ret_val;
X
X/* NOW SEE IF OBJECT (OR ITS CONTAINER) IS IN ROOM */
X
XL700:
X j = prsvec_1.prso;
X/* !START SEARCH. */
XL725:
X if (qhere_(j, play_1.here)) {
X goto L750;
X }
X/* !IS IT HERE? */
X j = objcts_1.ocan[j - 1];
X if (j != 0) {
X goto L725;
X }
X/* !MORE TO DO? */
X goto L800;
X/* !NO, SCH FAILS. */
X
XL750:
X svo = prsvec_1.prso;
X/* !SAVE PARSER. */
X svi = prsvec_1.prsi;
X prsvec_1.prsa = vindex_1.takew;
X prsvec_1.prsi = 0;
X if (! take_(0)) {
X return ret_val;
X }
X/* !TAKE OBJECT. */
X prsvec_1.prsa = vindex_1.putw;
X prsvec_1.prso = svo;
X prsvec_1.prsi = svi;
X goto L1000;
X
X/* NOW SEE IF OBJECT IS ON PERSON. */
X
XL800:
X if (objcts_1.ocan[prsvec_1.prso - 1] == 0) {
X goto L1000;
X }
X/* !INSIDE? */
X if ((objcts_1.oflag2[objcts_1.ocan[prsvec_1.prso - 1] - 1] &
X OPENBT) != 0) {
X goto L900;
X }
X/* !OPEN? */
X rspsub_(566, objcts_1.odesc2[prsvec_1.prso - 1]);
X/* !LOSE. */
X return ret_val;
X
XL900:
X scrupd_(objcts_1.ofval[prsvec_1.prso - 1]);
X/* !SCORE OBJECT. */
X objcts_1.ofval[prsvec_1.prso - 1] = 0;
X objcts_1.oflag2[prsvec_1.prso - 1] |= TCHBT;
X newsta_(prsvec_1.prso, 0, 0, 0, play_1.winner);
X/* !TEMPORARILY ON WINNER. */
X
XL1000:
X if (objact_()) {
X return ret_val;
X }
X/* !NO, GIVE OBJECT A SHOT. */
X newsta_(prsvec_1.prso, 2, 0, prsvec_1.prsi, 0);
X/* !CONTAINED INSIDE. */
X ret_val = TRUE_;
X return ret_val;
X
X} /* put_ */
X
X/* VALUAC- HANDLES VALUABLES/EVERYTHING */
X
Xvoid valuac_(v)
Xinteger v;
X{
X /* System generated locals */
X integer i__1;
X
X /* Local variables */
X logical f;
X integer i;
X logical f1;
X integer savep, saveh;
X
X f = TRUE_;
X/* !ASSUME NO ACTIONS. */
X i = 579;
X/* !ASSUME NOT LIT. */
X if (! lit_(play_1.here)) {
X goto L4000;
X }
X/* !IF NOT LIT, PUNT. */
X i = 677;
X/* !ASSUME WRONG VERB. */
X savep = prsvec_1.prso;
X/* !SAVE PRSO. */
X saveh = play_1.here;
X/* !SAVE HERE. */
X
X/* L100: */
X if (prsvec_1.prsa != vindex_1.takew) {
X goto L1000;
X }
X/* !TAKE EVERY/VALUA? */
X i__1 = objcts_1.olnt;
X for (prsvec_1.prso = 1; prsvec_1.prso <= i__1; ++prsvec_1.prso) {
X/* !LOOP THRU OBJECTS. */
X if (! qhere_(prsvec_1.prso, play_1.here) || (objcts_1.oflag1[
X prsvec_1.prso - 1] & VISIBT) == 0 || (
X objcts_1.oflag2[prsvec_1.prso - 1] & ACTRBT) != 0 ||
X savep == v && objcts_1.otval[prsvec_1.prso - 1] <= 0) {
X goto L500;
X }
X if ((objcts_1.oflag1[prsvec_1.prso - 1] & TAKEBT) == 0 && (
X objcts_1.oflag2[prsvec_1.prso - 1] & TRYBT) == 0) {
X goto L500;
X }
X f = FALSE_;
X rspsub_(580, objcts_1.odesc2[prsvec_1.prso - 1]);
X f1 = take_(1);
X if (saveh != play_1.here) {
X return;
X }
XL500:
X ;
X }
X goto L3000;
X
XL1000:
X if (prsvec_1.prsa != vindex_1.dropw) {
X goto L2000;
X }
X/* !DROP EVERY/VALUA? */
X i__1 = objcts_1.olnt;
X for (prsvec_1.prso = 1; prsvec_1.prso <= i__1; ++prsvec_1.prso) {
X if (objcts_1.oadv[prsvec_1.prso - 1] != play_1.winner || savep == v
X && objcts_1.otval[prsvec_1.prso - 1] <= 0) {
X goto L1500;
X }
X f = FALSE_;
X rspsub_(580, objcts_1.odesc2[prsvec_1.prso - 1]);
X f1 = drop_(1);
X if (saveh != play_1.here) {
X return;
X }
XL1500:
X ;
X }
X goto L3000;
X
XL2000:
X if (prsvec_1.prsa != vindex_1.putw) {
X goto L3000;
X }
X/* !PUT EVERY/VALUA? */
X i__1 = objcts_1.olnt;
X for (prsvec_1.prso = 1; prsvec_1.prso <= i__1; ++prsvec_1.prso) {
X/* !LOOP THRU OBJECTS. */
X if (objcts_1.oadv[prsvec_1.prso - 1] != play_1.winner ||
X prsvec_1.prso == prsvec_1.prsi || savep == v &&
X objcts_1.otval[prsvec_1.prso - 1] <= 0 || (objcts_1.oflag1[
X prsvec_1.prso - 1] & VISIBT) == 0) {
X goto L2500;
X }
X f = FALSE_;
X rspsub_(580, objcts_1.odesc2[prsvec_1.prso - 1]);
X f1 = put_(1);
X if (saveh != play_1.here) {
X return;
X }
XL2500:
X ;
X }
X
XL3000:
X i = 581;
X if (savep == v) {
X i = 582;
X }
X/* !CHOOSE MESSAGE. */
XL4000:
X if (f) {
X rspeak_(i);
X }
X/* !IF NOTHING, REPORT. */
X} /* valuac_ */
END_OF_FILE
if test 9727 -ne `wc -c <'dverb1.c'`; then
echo shar: \"'dverb1.c'\" unpacked with wrong size!
fi
# end of 'dverb1.c'
fi
if test -f 'nobjs.c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'nobjs.c'\"
else
echo shar: Extracting \"'nobjs.c'\" \(20195 characters\)
sed "s/^X//" >'nobjs.c' <<'END_OF_FILE'
X/* NOBJS- NEW OBJECTS PROCESSOR */
X/* OBJECTS IN THIS MODULE CANNOT CALL RMINFO, JIGSUP, */
X/* MAJOR VERBS, OR OTHER NON-RESIDENT SUBROUTINES */
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
Xstatic logical mirpan_ P((integer, logical));
X
Xlogical nobjs_(ri, arg)
Xinteger ri;
Xinteger arg;
X{
X /* System generated locals */
X integer i__1, i__2;
X logical ret_val;
X
X /* Local variables */
X logical f;
X integer target;
X integer i;
X integer j;
X integer av, wl;
X integer nxt, odi2 = 0, odo2 = 0;
X
X if (prsvec_1.prso != 0) {
X odo2 = objcts_1.odesc2[prsvec_1.prso - 1];
X }
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 ret_val = TRUE_;
X
X switch (ri - 31) {
X case 1: goto L1000;
X case 2: goto L2000;
X case 3: goto L3000;
X case 4: goto L4000;
X case 5: goto L5000;
X case 6: goto L6000;
X case 7: goto L7000;
X case 8: goto L8000;
X case 9: goto L9000;
X case 10: goto L10000;
X case 11: goto L11000;
X case 12: goto L12000;
X case 13: goto L13000;
X case 14: goto L14000;
X case 15: goto L15000;
X case 16: goto L16000;
X case 17: goto L17000;
X case 18: goto L18000;
X case 19: goto L19000;
X case 20: goto L20000;
X case 21: goto L21000;
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/* O32-- BILLS */
X
XL1000:
X if (prsvec_1.prsa != vindex_1.eatw) {
X goto L1100;
X }
X/* !EAT? */
X rspeak_(639);
X/* !JOKE. */
X return ret_val;
X
XL1100:
X if (prsvec_1.prsa == vindex_1.burnw) {
X rspeak_(640);
X }
X/* !BURN? JOKE. */
X goto L10;
X/* !LET IT BE HANDLED. */
X/* NOBJS, PAGE 3 */
X
X/* O33-- SCREEN OF LIGHT */
X
XL2000:
X target = oindex_1.scol;
X/* !TARGET IS SCOL. */
XL2100:
X if (prsvec_1.prso != target) {
X goto L2400;
X }
X/* !PRSO EQ TARGET? */
X if (prsvec_1.prsa != vindex_1.pushw && prsvec_1.prsa != vindex_1.movew &&
X prsvec_1.prsa != vindex_1.takew && prsvec_1.prsa != vindex_1.rubw)
X {
X goto L2200;
X }
X rspeak_(673);
X/* !HAND PASSES THRU. */
X return ret_val;
X
XL2200:
X if (prsvec_1.prsa != vindex_1.killw && prsvec_1.prsa != vindex_1.attacw &&
X prsvec_1.prsa != vindex_1.mungw) {
X goto L2400;
X }
X rspsub_(674, odi2);
X/* !PASSES THRU. */
X return ret_val;
X
XL2400:
X if (prsvec_1.prsa != vindex_1.throww || prsvec_1.prsi != target) {
X goto L10;
X }
X if (play_1.here == rindex_1.bkbox) {
X goto L2600;
X }
X/* !THRU SCOL? */
X newsta_(prsvec_1.prso, 0, rindex_1.bkbox, 0, 0);
X/* !NO, THRU WALL. */
X rspsub_(675, odo2);
X/* !ENDS UP IN BOX ROOM. */
X cevent_1.ctick[cindex_1.cevscl - 1] = 0;
X/* !CANCEL ALARM. */
X screen_1.scolrm = 0;
X/* !RESET SCOL ROOM. */
X return ret_val;
X
XL2600:
X if (screen_1.scolrm == 0) {
X goto L2900;
X }
X/* !TRIED TO GO THRU? */
X newsta_(prsvec_1.prso, 0, screen_1.scolrm, 0, 0);
X/* !SUCCESS. */
X rspsub_(676, odo2);
X/* !ENDS UP SOMEWHERE. */
X cevent_1.ctick[cindex_1.cevscl - 1] = 0;
X/* !CANCEL ALARM. */
X screen_1.scolrm = 0;
X/* !RESET SCOL ROOM. */
X return ret_val;
X
XL2900:
X rspeak_(213);
X/* !CANT DO IT. */
X return ret_val;
X/* NOBJS, PAGE 4 */
X
X/* O34-- GNOME OF ZURICH */
X
XL3000:
X if (prsvec_1.prsa != vindex_1.givew && prsvec_1.prsa != vindex_1.throww) {
X
X goto L3200;
X }
X if (objcts_1.otval[prsvec_1.prso - 1] != 0) {
X goto L3100;
X }
X/* !THROW A TREASURE? */
X newsta_(prsvec_1.prso, 641, 0, 0, 0);
X/* !NO, GO POP. */
X return ret_val;
X
XL3100:
X newsta_(prsvec_1.prso, 0, 0, 0, 0);
X/* !YES, BYE BYE TREASURE. */
X rspsub_(642, odo2);
X newsta_(oindex_1.zgnom, 0, 0, 0, 0);
X/* !BYE BYE GNOME. */
X cevent_1.ctick[cindex_1.cevzgo - 1] = 0;
X/* !CANCEL EXIT. */
X f = moveto_(rindex_1.bkent, play_1.winner);
X/* !NOW IN BANK ENTRANCE. */
X return ret_val;
X
XL3200:
X if (prsvec_1.prsa != vindex_1.attacw && prsvec_1.prsa != vindex_1.killw &&
X prsvec_1.prsa != vindex_1.mungw) {
X goto L3300;
X }
X newsta_(oindex_1.zgnom, 643, 0, 0, 0);
X/* !VANISH GNOME. */
X cevent_1.ctick[cindex_1.cevzgo - 1] = 0;
X/* !CANCEL EXIT. */
X return ret_val;
X
XL3300:
X rspeak_(644);
X/* !GNOME IS IMPATIENT. */
X return ret_val;
X
X/* O35-- EGG */
X
XL4000:
X if (prsvec_1.prsa != vindex_1.openw || prsvec_1.prso != oindex_1.egg) {
X goto L4500;
X }
X if (! ((objcts_1.oflag2[oindex_1.egg - 1] & OPENBT) != 0)) {
X goto L4100;
X }
X/* !OPEN ALREADY? */
X rspeak_(649);
X/* !YES. */
X return ret_val;
X
XL4100:
X if (prsvec_1.prsi != 0) {
X goto L4200;
X }
X/* !WITH SOMETHING? */
X rspeak_(650);
X/* !NO, CANT. */
X return ret_val;
X
XL4200:
X if (prsvec_1.prsi != oindex_1.hands) {
X goto L4300;
X }
X/* !WITH HANDS? */
X rspeak_(651);
X/* !NOT RECOMMENDED. */
X return ret_val;
X
XL4300:
X i = 652;
X/* !MUNG MESSAGE. */
X if ((objcts_1.oflag1[prsvec_1.prsi - 1] & TOOLBT) != 0 || (
X objcts_1.oflag2[prsvec_1.prsi - 1] & WEAPBT) != 0) {
X goto L4600;
X }
X i = 653;
X/* !NOVELTY 1. */
X if ((objcts_1.oflag2[prsvec_1.prso - 1] & FITEBT) != 0) {
X i = 654;
X }
X objcts_1.oflag2[prsvec_1.prso - 1] |= FITEBT;
X rspsub_(i, odi2);
X return ret_val;
X
XL4500:
X if (prsvec_1.prsa != vindex_1.openw && prsvec_1.prsa != vindex_1.mungw) {
X goto L4800;
X }
X i = 655;
X/* !YOU BLEW IT. */
XL4600:
X newsta_(oindex_1.begg, i, objcts_1.oroom[oindex_1.egg - 1],
X objcts_1.ocan[oindex_1.egg - 1], objcts_1.oadv[oindex_1.egg - 1])
X ;
X newsta_(oindex_1.egg, 0, 0, 0, 0);
X/* !VANISH EGG. */
X objcts_1.otval[oindex_1.begg - 1] = 2;
X/* !BAD EGG HAS VALUE. */
X if (objcts_1.ocan[oindex_1.canar - 1] != oindex_1.egg) {
X goto L4700;
X }
X/* !WAS CANARY INSIDE? */
X rspeak_(objcts_1.odesco[oindex_1.bcana - 1]);
X/* !YES, DESCRIBE RESULT. */
X objcts_1.otval[oindex_1.bcana - 1] = 1;
X return ret_val;
X
XL4700:
X newsta_(oindex_1.bcana, 0, 0, 0, 0);
X/* !NO, VANISH IT. */
X return ret_val;
X
XL4800:
X if (prsvec_1.prsa != vindex_1.dropw || play_1.here != rindex_1.mtree) {
X goto L10;
X }
X newsta_(oindex_1.begg, 658, rindex_1.fore3, 0, 0);
X/* !DROPPED EGG. */
X newsta_(oindex_1.egg, 0, 0, 0, 0);
X objcts_1.otval[oindex_1.begg - 1] = 2;
X if (objcts_1.ocan[oindex_1.canar - 1] != oindex_1.egg) {
X goto L4700;
X }
X objcts_1.otval[oindex_1.bcana - 1] = 1;
X/* !BAD CANARY. */
X return ret_val;
X/* NOBJS, PAGE 5 */
X
X/* O36-- CANARIES, GOOD AND BAD */
X
XL5000:
X if (prsvec_1.prsa != vindex_1.windw) {
X goto L10;
X }
X/* !WIND EM UP? */
X if (prsvec_1.prso == oindex_1.canar) {
X goto L5100;
X }
X/* !RIGHT ONE? */
X rspeak_(645);
X/* !NO, BAD NEWS. */
X return ret_val;
X
XL5100:
X if (! findex_1.singsf && (play_1.here == rindex_1.mtree || play_1.here >=
X rindex_1.fore1 && play_1.here < rindex_1.clear)) {
X goto L5200;
X }
X rspeak_(646);
X/* !NO, MEDIOCRE NEWS. */
X return ret_val;
X
XL5200:
X findex_1.singsf = TRUE_;
X/* !SANG SONG. */
X i = play_1.here;
X if (i == rindex_1.mtree) {
X i = rindex_1.fore3;
X }
X/* !PLACE BAUBLE. */
X newsta_(oindex_1.baubl, 647, i, 0, 0);
X return ret_val;
X
X/* O37-- WHITE CLIFFS */
X
XL6000:
X if (prsvec_1.prsa != vindex_1.clmbw && prsvec_1.prsa != vindex_1.clmbuw &&
X prsvec_1.prsa != vindex_1.clmbdw) {
X goto L10;
X }
X rspeak_(648);
X/* !OH YEAH? */
X return ret_val;
X
X/* O38-- WALL */
X
XL7000:
X if ((i__1 = play_1.here - findex_1.mloc, abs(i__1)) != 1 || mrhere_(
X play_1.here) != 0 || prsvec_1.prsa != vindex_1.pushw) {
X goto L7100;
X }
X rspeak_(860);
X/* !PUSHED MIRROR WALL. */
X return ret_val;
X
XL7100:
X if ((rooms_1.rflag[play_1.here - 1] & RNWALL) == 0) {
X goto L10;
X }
X rspeak_(662);
X/* !NO WALL. */
X return ret_val;
X/* NOBJS, PAGE 6 */
X
X/* O39-- SONG BIRD GLOBAL */
X
XL8000:
X if (prsvec_1.prsa != vindex_1.findw) {
X goto L8100;
X }
X/* !FIND? */
X rspeak_(666);
X return ret_val;
X
XL8100:
X if (prsvec_1.prsa != vindex_1.examiw) {
X goto L10;
X }
X/* !EXAMINE? */
X rspeak_(667);
X return ret_val;
X
X/* O40-- PUZZLE/SCOL WALLS */
X
XL9000:
X if (play_1.here != rindex_1.cpuzz) {
X goto L9500;
X }
X/* !PUZZLE WALLS? */
X if (prsvec_1.prsa != vindex_1.pushw) {
X goto L10;
X }
X/* !PUSH? */
X for (i = 1; i <= 8; i += 2) {
X/* !LOCATE WALL. */
X if (prsvec_1.prso == puzzle_1.cpwl[i - 1]) {
X goto L9200;
X }
X/* L9100: */
X }
X bug_(80, prsvec_1.prso);
X/* !WHAT? */
X
XL9200:
X j = puzzle_1.cpwl[i];
X/* !GET DIRECTIONAL OFFSET. */
X nxt = findex_1.cphere + j;
X/* !GET NEXT STATE. */
X wl = puzzle_1.cpvec[nxt - 1];
X/* !GET C(NEXT STATE). */
X switch (wl + 4) {
X case 1: goto L9300;
X case 2: goto L9300;
X case 3: goto L9300;
X case 4: goto L9250;
X case 5: goto L9350;
X }
X/* !PROCESS. */
X
XL9250:
X rspeak_(876);
X/* !CLEAR CORRIDOR. */
X return ret_val;
X
XL9300:
X if (puzzle_1.cpvec[nxt + j - 1] == 0) {
X goto L9400;
X }
X/* !MOVABLE, ROOM TO MOVE? */
XL9350:
X rspeak_(877);
X/* !IMMOVABLE, NO ROOM. */
X return ret_val;
X
XL9400:
X i = 878;
X/* !ASSUME FIRST PUSH. */
X if (findex_1.cpushf) {
X i = 879;
X }
X/* !NOT? */
X findex_1.cpushf = TRUE_;
X puzzle_1.cpvec[nxt + j - 1] = wl;
X/* !MOVE WALL. */
X puzzle_1.cpvec[nxt - 1] = 0;
X/* !VACATE NEXT STATE. */
X cpgoto_(nxt);
X/* !ONWARD. */
X cpinfo_(i, nxt);
X/* !DESCRIBE. */
X princr_(1, play_1.here);
X/* !PRINT ROOMS CONTENTS. */
X rooms_1.rflag[play_1.here - 1] |= RSEEN;
X return ret_val;
X
XL9500:
X if (play_1.here != screen_1.scolac) {
X goto L9700;
X }
X/* !IN SCOL ACTIVE ROOM? */
X for (i = 1; i <= 12; i += 3) {
X target = screen_1.scolwl[i];
X/* !ASSUME TARGET. */
X if (screen_1.scolwl[i - 1] == play_1.here) {
X goto L2100;
X }
X/* !TREAT IF FOUND. */
X/* L9600: */
X }
X
XL9700:
X if (play_1.here != rindex_1.bkbox) {
X goto L10;
X }
X/* !IN BOX ROOM? */
X target = oindex_1.wnort;
X goto L2100;
X/* NOBJS, PAGE 7 */
X
X/* O41-- SHORT POLE */
X
XL10000:
X if (prsvec_1.prsa != vindex_1.raisew) {
X goto L10100;
X }
X/* !LIFT? */
X i = 749;
X/* !ASSUME UP. */
X if (findex_1.poleuf == 2) {
X i = 750;
X }
X/* !ALREADY UP? */
X rspeak_(i);
X findex_1.poleuf = 2;
X/* !POLE IS RAISED. */
X return ret_val;
X
XL10100:
X if (prsvec_1.prsa != vindex_1.lowerw && prsvec_1.prsa != vindex_1.pushw) {
X
X goto L10;
X }
X if (findex_1.poleuf != 0) {
X goto L10200;
X }
X/* !ALREADY LOWERED? */
X rspeak_(751);
X/* !CANT DO IT. */
X return ret_val;
X
XL10200:
X if (findex_1.mdir % 180 != 0) {
X goto L10300;
X }
X/* !MIRROR N-S? */
X findex_1.poleuf = 0;
X/* !YES, LOWER INTO */
X rspeak_(752);
X/* !CHANNEL. */
X return ret_val;
X
XL10300:
X if (findex_1.mdir != 270 || findex_1.mloc != rindex_1.mrb) {
X goto L10400;
X }
X findex_1.poleuf = 0;
X/* !LOWER INTO HOLE. */
X rspeak_(753);
X return ret_val;
X
XL10400:
X i__1 = findex_1.poleuf + 753;
X rspeak_(i__1);
X/* !POLEUF = 1 OR 2. */
X findex_1.poleuf = 1;
X/* !NOW ON FLOOR. */
X return ret_val;
X
X/* O42-- MIRROR SWITCH */
X
XL11000:
X if (prsvec_1.prsa != vindex_1.pushw) {
X goto L10;
X }
X/* !PUSH? */
X if (findex_1.mrpshf) {
X goto L11300;
X }
X/* !ALREADY PUSHED? */
X rspeak_(756);
X/* !BUTTON GOES IN. */
X i__1 = objcts_1.olnt;
X for (i = 1; i <= i__1; ++i) {
X/* !BLOCKED? */
X if (qhere_(i, rindex_1.mreye) && i != oindex_1.rbeam) {
X goto L11200;
X }
X/* L11100: */
X }
X rspeak_(757);
X/* !NOTHING IN BEAM. */
X return ret_val;
X
XL11200:
X cevent_1.cflag[cindex_1.cevmrs - 1] = TRUE_;
X/* !MIRROR OPENS. */
X cevent_1.ctick[cindex_1.cevmrs - 1] = 7;
X findex_1.mrpshf = TRUE_;
X findex_1.mropnf = TRUE_;
X return ret_val;
X
XL11300:
X rspeak_(758);
X/* !MIRROR ALREADYOPEN. */
X return ret_val;
X/* NOBJS, PAGE 8 */
X
X/* O43-- BEAM FUNCTION */
X
XL12000:
X if (prsvec_1.prsa != vindex_1.takew || prsvec_1.prso != oindex_1.rbeam) {
X goto L12100;
X }
X rspeak_(759);
X/* !TAKE BEAM, JOKE. */
X return ret_val;
X
XL12100:
X i = prsvec_1.prso;
X/* !ASSUME BLK WITH DIROBJ. */
X if (prsvec_1.prsa == vindex_1.putw && prsvec_1.prsi == oindex_1.rbeam) {
X goto L12200;
X }
X if (prsvec_1.prsa != vindex_1.mungw || prsvec_1.prso != oindex_1.rbeam ||
X prsvec_1.prsi == 0) {
X goto L10;
X }
X i = prsvec_1.prsi;
XL12200:
X if (objcts_1.oadv[i - 1] != play_1.winner) {
X goto L12300;
X }
X/* !CARRYING? */
X newsta_(i, 0, play_1.here, 0, 0);
X/* !DROP OBJ. */
X rspsub_(760, objcts_1.odesc2[i - 1]);
X return ret_val;
X
XL12300:
X j = 761;
X/* !ASSUME NOT IN ROOM. */
X if (qhere_(j, play_1.here)) {
X i = 762;
X }
X/* !IN ROOM? */
X rspsub_(j, objcts_1.odesc2[i - 1]);
X/* !DESCRIBE. */
X return ret_val;
X
X/* O44-- BRONZE DOOR */
X
XL13000:
X if (play_1.here == rindex_1.ncell || findex_1.lcell == 4 && (play_1.here
X == rindex_1.cell || play_1.here == rindex_1.scorr)) {
X goto L13100;
X }
X rspeak_(763);
X/* !DOOR NOT THERE. */
X return ret_val;
X
XL13100:
X if (! opncls_(oindex_1.odoor, 764, 765)) {
X goto L10;
X }
X/* !OPEN/CLOSE? */
X if (play_1.here == rindex_1.ncell && (objcts_1.oflag2[oindex_1.odoor - 1]
X & OPENBT) != 0) {
X rspeak_(766);
X }
X return ret_val;
X
X/* O45-- QUIZ DOOR */
X
XL14000:
X if (prsvec_1.prsa != vindex_1.openw && prsvec_1.prsa != vindex_1.closew) {
X
X goto L14100;
X }
X rspeak_(767);
X/* !DOOR WONT MOVE. */
X return ret_val;
X
XL14100:
X if (prsvec_1.prsa != vindex_1.knockw) {
X goto L10;
X }
X/* !KNOCK? */
X if (findex_1.inqstf) {
X goto L14200;
X }
X/* !TRIED IT ALREADY? */
X findex_1.inqstf = TRUE_;
X/* !START INQUISITION. */
X cevent_1.cflag[cindex_1.cevinq - 1] = TRUE_;
X cevent_1.ctick[cindex_1.cevinq - 1] = 2;
X findex_1.quesno = rnd_(8);
X/* !SELECT QUESTION. */
X findex_1.nqatt = 0;
X findex_1.corrct = 0;
X rspeak_(768);
X/* !ANNOUNCE RULES. */
X rspeak_(769);
X i__1 = findex_1.quesno + 770;
X rspeak_(i__1);
X/* !ASK QUESTION. */
X return ret_val;
X
XL14200:
X rspeak_(798);
X/* !NO REPLY. */
X return ret_val;
X
X/* O46-- LOCKED DOOR */
X
XL15000:
X if (prsvec_1.prsa != vindex_1.openw) {
X goto L10;
X }
X/* !OPEN? */
X rspeak_(778);
X/* !CANT. */
X return ret_val;
X
X/* O47-- CELL DOOR */
X
XL16000:
X ret_val = opncls_(oindex_1.cdoor, 779, 780);
X/* !OPEN/CLOSE? */
X return ret_val;
X/* NOBJS, PAGE 9 */
X
X/* O48-- DIALBUTTON */
X
XL17000:
X if (prsvec_1.prsa != vindex_1.pushw) {
X goto L10;
X }
X/* !PUSH? */
X rspeak_(809);
X/* !CLICK. */
X if ((objcts_1.oflag2[oindex_1.cdoor - 1] & OPENBT) != 0) {
X rspeak_(810);
X }
X/* !CLOSE CELL DOOR. */
X
X i__1 = objcts_1.olnt;
X for (i = 1; i <= i__1; ++i) {
X/* !RELOCATE OLD TO HYPER. */
X if (objcts_1.oroom[i - 1] == rindex_1.cell && (objcts_1.oflag1[i - 1]
X & DOORBT) == 0) {
X i__2 = findex_1.lcell * hyper_1.hfactr;
X newsta_(i, 0, i__2, 0, 0);
X }
X if (objcts_1.oroom[i - 1] == findex_1.pnumb * hyper_1.hfactr) {
X newsta_(i, 0, rindex_1.cell, 0, 0);
X }
X/* L17100: */
X }
X
X objcts_1.oflag2[oindex_1.odoor - 1] &= ~ OPENBT;
X objcts_1.oflag2[oindex_1.cdoor - 1] &= ~ OPENBT;
X objcts_1.oflag1[oindex_1.odoor - 1] &= ~ VISIBT;
X if (findex_1.pnumb == 4) {
X objcts_1.oflag1[oindex_1.odoor - 1] |= VISIBT;
X }
X
X if (advs_1.aroom[aindex_1.player - 1] != rindex_1.cell) {
X goto L17400;
X }
X/* !PLAYER IN CELL? */
X if (findex_1.lcell != 4) {
X goto L17200;
X }
X/* !IN RIGHT CELL? */
X objcts_1.oflag1[oindex_1.odoor - 1] |= VISIBT;
X f = moveto_(rindex_1.ncell, aindex_1.player);
X/* !YES, MOVETO NCELL. */
X goto L17400;
XL17200:
X f = moveto_(rindex_1.pcell, aindex_1.player);
X/* !NO, MOVETO PCELL. */
X
XL17400:
X findex_1.lcell = findex_1.pnumb;
X return ret_val;
X/* NOBJS, PAGE 10 */
X
X/* O49-- DIAL INDICATOR */
X
XL18000:
X if (prsvec_1.prsa != vindex_1.spinw) {
X goto L18100;
X }
X/* !SPIN? */
X findex_1.pnumb = rnd_(8) + 1;
X/* !WHEE */
X/* ! */
X i__1 = findex_1.pnumb + 712;
X rspsub_(797, i__1);
X return ret_val;
X
XL18100:
X if (prsvec_1.prsa != vindex_1.movew && prsvec_1.prsa != vindex_1.putw &&
X prsvec_1.prsa != vindex_1.trntow) {
X goto L10;
X }
X if (prsvec_1.prsi != 0) {
X goto L18200;
X }
X/* !TURN DIAL TO X? */
X rspeak_(806);
X/* !MUST SPECIFY. */
X return ret_val;
X
XL18200:
X if (prsvec_1.prsi >= oindex_1.num1 && prsvec_1.prsi <= oindex_1.num8) {
X goto L18300;
X }
X rspeak_(807);
X/* !MUST BE DIGIT. */
X return ret_val;
X
XL18300:
X findex_1.pnumb = prsvec_1.prsi - oindex_1.num1 + 1;
X/* !SET UP NEW. */
X i__1 = findex_1.pnumb + 712;
X rspsub_(808, i__1);
X return ret_val;
X
X/* O50-- GLOBAL MIRROR */
X
XL19000:
X ret_val = mirpan_(832, 0);
X return ret_val;
X
X/* O51-- GLOBAL PANEL */
X
XL20000:
X if (play_1.here != rindex_1.fdoor) {
X goto L20100;
X }
X/* !AT FRONT DOOR? */
X if (prsvec_1.prsa != vindex_1.openw && prsvec_1.prsa != vindex_1.closew) {
X
X goto L10;
X }
X rspeak_(843);
X/* !PANEL IN DOOR, NOGO. */
X return ret_val;
X
XL20100:
X ret_val = mirpan_(838, 1);
X return ret_val;
X
X/* O52-- PUZZLE ROOM SLIT */
X
XL21000:
X if (prsvec_1.prsa != vindex_1.putw || prsvec_1.prsi != oindex_1.cslit) {
X goto L10;
X }
X if (prsvec_1.prso != oindex_1.gcard) {
X goto L21100;
X }
X/* !PUT CARD IN SLIT? */
X newsta_(prsvec_1.prso, 863, 0, 0, 0);
X/* !KILL CARD. */
X findex_1.cpoutf = TRUE_;
X/* !OPEN DOOR. */
X objcts_1.oflag1[oindex_1.stldr - 1] &= ~ VISIBT;
X return ret_val;
X
XL21100:
X if ((objcts_1.oflag1[prsvec_1.prso - 1] & VICTBT) == 0 && (
X objcts_1.oflag2[prsvec_1.prso - 1] & VILLBT) == 0) {
X goto L21200;
X }
X i__1 = rnd_(5) + 552;
X rspeak_(i__1);
X/* !JOKE FOR VILL, VICT. */
X return ret_val;
X
XL21200:
X newsta_(prsvec_1.prso, 0, 0, 0, 0);
X/* !KILL OBJECT. */
X rspsub_(864, odo2);
X/* !DESCRIBE. */
X return ret_val;
X
X} /* nobjs_ */
X
X/* MIRPAN-- PROCESSOR FOR GLOBAL MIRROR/PANEL */
X
X/* DECLARATIONS */
X
Xstatic logical mirpan_(st, pnf)
Xinteger st;
Xlogical pnf;
X{
X /* System generated locals */
X integer i__1;
X logical ret_val;
X
X /* Local variables */
X integer num;
X integer mrbf;
X
X ret_val = TRUE_;
X num = mrhere_(play_1.here);
X/* !GET MIRROR NUM. */
X if (num != 0) {
X goto L100;
X }
X/* !ANY HERE? */
X rspeak_(st);
X/* !NO, LOSE. */
X return ret_val;
X
XL100:
X mrbf = 0;
X/* !ASSUME MIRROR OK. */
X if (num == 1 && ! findex_1.mr1f || num == 2 && ! findex_1.mr2f) {
X mrbf = 1;
X }
X if (prsvec_1.prsa != vindex_1.movew && prsvec_1.prsa != vindex_1.openw) {
X goto L200;
X }
X i__1 = st + 1;
X rspeak_(i__1);
X/* !CANT OPEN OR MOVE. */
X return ret_val;
X
XL200:
X if (pnf || prsvec_1.prsa != vindex_1.lookiw && prsvec_1.prsa !=
X vindex_1.examiw && prsvec_1.prsa != vindex_1.lookw) {
X goto L300;
X }
X i__1 = mrbf + 844;
X rspeak_(i__1);
X/* !LOOK IN MIRROR. */
X return ret_val;
X
XL300:
X if (prsvec_1.prsa != vindex_1.mungw) {
X goto L400;
X }
X/* !BREAK? */
X i__1 = st + 2 + mrbf;
X rspeak_(i__1);
X/* !DO IT. */
X if (num == 1 && ! (pnf)) {
X findex_1.mr1f = FALSE_;
X }
X if (num == 2 && ! (pnf)) {
X findex_1.mr2f = FALSE_;
X }
X return ret_val;
X
XL400:
X if (pnf || mrbf == 0) {
X goto L500;
X }
X/* !BROKEN MIRROR? */
X rspeak_(846);
X return ret_val;
X
XL500:
X if (prsvec_1.prsa != vindex_1.pushw) {
X goto L600;
X }
X/* !PUSH? */
X i__1 = st + 3 + num;
X rspeak_(i__1);
X return ret_val;
X
XL600:
X ret_val = FALSE_;
X/* !CANT HANDLE IT. */
X return ret_val;
X
X} /* mirpan_ */
END_OF_FILE
if test 20195 -ne `wc -c <'nobjs.c'`; then
echo shar: \"'nobjs.c'\" unpacked with wrong size!
fi
# end of 'nobjs.c'
fi
if test -f 'sobjs.c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'sobjs.c'\"
else
echo shar: Extracting \"'sobjs.c'\" \(21223 characters\)
sed "s/^X//" >'sobjs.c' <<'END_OF_FILE'
X/* SOBJS- SIMPLE OBJECTS PROCESSOR */
X/* OBJECTS IN THIS MODULE CANNOT CALL RMINFO, JIGSUP, */
X/* MAJOR VERBS, OR OTHER NON-RESIDENT SUBROUTINES */
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 sobjs_(ri, arg)
Xinteger ri;
Xinteger arg;
X{
X /* System generated locals */
X integer i__1;
X logical ret_val;
X
X /* Local variables */
X logical f;
X integer i;
X integer mroom;
X integer av;
X integer odi2 = 0, odo2 = 0;
X
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 ret_val = TRUE_;
X
X switch (ri) {
X case 1: goto L1000;
X case 2: goto L3000;
X case 3: goto L4000;
X case 4: goto L6000;
X case 5: goto L7000;
X case 6: goto L8000;
X case 7: goto L9000;
X case 8: goto L13000;
X case 9: goto L14000;
X case 10: goto L16000;
X case 11: goto L17000;
X case 12: goto L21000;
X case 13: goto L23000;
X case 14: goto L24000;
X case 15: goto L27000;
X case 16: goto L28000;
X case 17: goto L29000;
X case 18: goto L30000;
X case 19: goto L31000;
X case 20: goto L33000;
X case 21: goto L34000;
X case 22: goto L36000;
X case 23: goto L37000;
X case 24: goto L38000;
X case 25: goto L41000;
X case 26: goto L42000;
X case 27: goto L43000;
X case 28: goto L44000;
X case 29: goto L46000;
X case 30: goto L53000;
X case 31: goto L56000;
X }
X bug_(6, ri);
X
X/* RETURN HERE TO DECLARE FALSE RESULT */
X
XL10:
X ret_val = FALSE_;
X return ret_val;
X/* SOBJS, PAGE 3 */
X
X/* O1-- GUNK FUNCTION */
X
XL1000:
X if (objcts_1.ocan[oindex_1.gunk - 1] == 0) {
X goto L10;
X }
X/* !NOT INSIDE? F */
X newsta_(oindex_1.gunk, 122, 0, 0, 0);
X/* !FALLS APART. */
X return ret_val;
X
X/* O2-- TROPHY CASE */
X
XL3000:
X if (prsvec_1.prsa != vindex_1.takew) {
X goto L10;
X }
X/* !TAKE? */
X rspeak_(128);
X/* !CANT. */
X return ret_val;
X
X/* O3-- BOTTLE FUNCTION */
X
XL4000:
X if (prsvec_1.prsa != vindex_1.throww) {
X goto L4100;
X }
X/* !THROW? */
X newsta_(prsvec_1.prso, 129, 0, 0, 0);
X/* !BREAKS. */
X return ret_val;
X
XL4100:
X if (prsvec_1.prsa != vindex_1.mungw) {
X goto L10;
X }
X/* !MUNG? */
X newsta_(prsvec_1.prso, 131, 0, 0, 0);
X/* !BREAKS. */
X return ret_val;
X/* SOBJS, PAGE 4 */
X
X/* O4-- ROPE FUNCTION */
X
XL6000:
X if (play_1.here == rindex_1.dome) {
X goto L6100;
X }
X/* !IN DOME? */
X findex_1.domef = FALSE_;
X/* !NO, */
X if (prsvec_1.prsa != vindex_1.untiew) {
X goto L6050;
X }
X/* !UNTIE? */
X rspeak_(134);
X/* !CANT */
X return ret_val;
X
XL6050:
X if (prsvec_1.prsa != vindex_1.tiew) {
X goto L10;
X }
X/* !TIE? */
X rspeak_(135);
X/* !CANT TIE */
X return ret_val;
X
XL6100:
X if (prsvec_1.prsa != vindex_1.tiew || prsvec_1.prsi != oindex_1.raili) {
X goto L6200;
X }
X if (findex_1.domef) {
X goto L6150;
X }
X/* !ALREADY TIED? */
X findex_1.domef = TRUE_;
X/* !NO, TIE IT. */
X objcts_1.oflag1[oindex_1.rope - 1] |= NDSCBT;
X objcts_1.oflag2[oindex_1.rope - 1] |= CLMBBT;
X newsta_(oindex_1.rope, 137, rindex_1.dome, 0, 0);
X return ret_val;
X
XL6150:
X rspeak_(136);
X/* !DUMMY. */
X return ret_val;
X
XL6200:
X if (prsvec_1.prsa != vindex_1.untiew) {
X goto L6300;
X }
X/* !UNTIE? */
X if (findex_1.domef) {
X goto L6250;
X }
X/* !TIED? */
X rspeak_(134);
X/* !NO, DUMMY. */
X return ret_val;
X
XL6250:
X findex_1.domef = FALSE_;
X/* !YES, UNTIE IT. */
X objcts_1.oflag1[oindex_1.rope - 1] &= ~ NDSCBT;
X objcts_1.oflag2[oindex_1.rope - 1] &= ~ CLMBBT;
X rspeak_(139);
X return ret_val;
X
XL6300:
X if (findex_1.domef || prsvec_1.prsa != vindex_1.dropw) {
X goto L6400;
X }
X/* !DROP & UNTIED? */
X newsta_(oindex_1.rope, 140, rindex_1.mtorc, 0, 0);
X/* !YES, DROP. */
X return ret_val;
X
XL6400:
X if (prsvec_1.prsa != vindex_1.takew || ! findex_1.domef) {
X goto L10;
X }
X rspeak_(141);
X/* !TAKE & TIED. */
X return ret_val;
X
X/* O5-- SWORD FUNCTION */
X
XL7000:
X if (prsvec_1.prsa == vindex_1.takew && play_1.winner == aindex_1.player) {
X
X hack_1.swdact = TRUE_;
X }
X goto L10;
X
X/* O6-- LANTERN */
X
XL8000:
X if (prsvec_1.prsa != vindex_1.throww) {
X goto L8100;
X }
X/* !THROW? */
X newsta_(oindex_1.lamp, 0, 0, 0, 0);
X/* !KILL LAMP, */
X newsta_(oindex_1.blamp, 142, play_1.here, 0, 0);
X/* !REPLACE WITH BROKEN. */
X return ret_val;
X
XL8100:
X if (prsvec_1.prsa == vindex_1.trnonw) {
X cevent_1.cflag[cindex_1.cevlnt - 1] = TRUE_;
X }
X if (prsvec_1.prsa == vindex_1.trnofw) {
X cevent_1.cflag[cindex_1.cevlnt - 1] = FALSE_;
X }
X goto L10;
X
X/* O7-- RUG FUNCTION */
X
XL9000:
X if (prsvec_1.prsa != vindex_1.raisew) {
X goto L9100;
X }
X/* !RAISE? */
X rspeak_(143);
X/* !CANT */
X return ret_val;
X
XL9100:
X if (prsvec_1.prsa != vindex_1.takew) {
X goto L9200;
X }
X/* !TAKE? */
X rspeak_(144);
X/* !CANT */
X return ret_val;
X
XL9200:
X if (prsvec_1.prsa != vindex_1.movew) {
X goto L9300;
X }
X/* !MOVE? */
X i__1 = findex_1.orrug + 145;
X rspeak_(i__1);
X findex_1.orrug = 1;
X objcts_1.oflag1[oindex_1.door - 1] |= VISIBT;
X return ret_val;
X
XL9300:
X if (prsvec_1.prsa != vindex_1.lookuw || findex_1.orrug != 0 || (
X objcts_1.oflag2[oindex_1.door - 1] & OPENBT) != 0) {
X goto L10;
X }
X rspeak_(345);
X return ret_val;
X/* SOBJS, PAGE 5 */
X
X/* O8-- SKELETON */
X
XL13000:
X i = robrm_(play_1.here, 100, rindex_1.lld2, 0, 0) + robadv_(
X play_1.winner, rindex_1.lld2, 0, 0);
X if (i != 0) {
X rspeak_(162);
X }
X/* !IF ROBBED, SAY SO. */
X return ret_val;
X
X/* O9-- MIRROR */
X
XL14000:
X if (findex_1.mirrmf || prsvec_1.prsa != vindex_1.rubw) {
X goto L14500;
X }
X mroom = play_1.here ^ 1;
X i__1 = objcts_1.olnt;
X for (i = 1; i <= i__1; ++i) {
X/* !INTERCHANGE OBJS. */
X if (objcts_1.oroom[i - 1] == play_1.here) {
X objcts_1.oroom[i - 1] = -1;
X }
X if (objcts_1.oroom[i - 1] == mroom) {
X objcts_1.oroom[i - 1] = play_1.here;
X }
X if (objcts_1.oroom[i - 1] == -1) {
X objcts_1.oroom[i - 1] = mroom;
X }
X/* L14100: */
X }
X f = moveto_(mroom, play_1.winner);
X rspeak_(163);
X/* !SHAKE WORLD. */
X return ret_val;
X
XL14500:
X if (prsvec_1.prsa != vindex_1.lookw && prsvec_1.prsa != vindex_1.lookiw &&
X prsvec_1.prsa != vindex_1.examiw) {
X goto L14600;
X }
X i = 164;
X/* !MIRROR OK. */
X if (findex_1.mirrmf) {
X i = 165;
X }
X/* !MIRROR DEAD. */
X rspeak_(i);
X return ret_val;
X
XL14600:
X if (prsvec_1.prsa != vindex_1.takew) {
X goto L14700;
X }
X/* !TAKE? */
X rspeak_(166);
X/* !JOKE. */
X return ret_val;
X
XL14700:
X if (prsvec_1.prsa != vindex_1.mungw && prsvec_1.prsa != vindex_1.throww) {
X
X goto L10;
X }
X i = 167;
X/* !MIRROR BREAKS. */
X if (findex_1.mirrmf) {
X i = 168;
X }
X/* !MIRROR ALREADY BROKEN. */
X findex_1.mirrmf = TRUE_;
X findex_1.badlkf = TRUE_;
X rspeak_(i);
X return ret_val;
X/* SOBJS, PAGE 6 */
X
X/* O10-- DUMBWAITER */
X
XL16000:
X if (prsvec_1.prsa != vindex_1.raisew) {
X goto L16100;
X }
X/* !RAISE? */
X if (findex_1.cagetf) {
X goto L16400;
X }
X/* !ALREADY AT TOP? */
X newsta_(oindex_1.tbask, 175, rindex_1.tshaf, 0, 0);
X/* !NO, RAISE BASKET. */
X newsta_(oindex_1.fbask, 0, rindex_1.bshaf, 0, 0);
X findex_1.cagetf = TRUE_;
X/* !AT TOP. */
X return ret_val;
X
XL16100:
X if (prsvec_1.prsa != vindex_1.lowerw) {
X goto L16200;
X }
X/* !LOWER? */
X if (! findex_1.cagetf) {
X goto L16400;
X }
X/* !ALREADY AT BOTTOM? */
X newsta_(oindex_1.tbask, 176, rindex_1.bshaf, 0, 0);
X/* !NO, LOWER BASKET. */
X newsta_(oindex_1.fbask, 0, rindex_1.tshaf, 0, 0);
X findex_1.cagetf = FALSE_;
X if (! lit_(play_1.here)) {
X rspeak_(406);
X }
X/* !IF DARK, DIE. */
X return ret_val;
X
XL16200:
X if (prsvec_1.prso != oindex_1.fbask && prsvec_1.prsi != oindex_1.fbask) {
X goto L16300;
X }
X rspeak_(130);
X/* !WRONG BASKET. */
X return ret_val;
X
XL16300:
X if (prsvec_1.prsa != vindex_1.takew) {
X goto L10;
X }
X/* !TAKE? */
X rspeak_(177);
X/* !JOKE. */
X return ret_val;
X
XL16400:
X i__1 = rnd_(3) + 125;
X rspeak_(i__1);
X/* !DUMMY. */
X return ret_val;
X
X/* O11-- GHOST FUNCTION */
X
XL17000:
X i = 178;
X/* !ASSUME DIRECT. */
X if (prsvec_1.prso != oindex_1.ghost) {
X i = 179;
X }
X/* !IF NOT, INDIRECT. */
X rspeak_(i);
X return ret_val;
X/* !SPEAK AND EXIT. */
X/* SOBJS, PAGE 7 */
X
X/* O12-- TUBE */
X
XL21000:
X if (prsvec_1.prsa != vindex_1.putw || prsvec_1.prsi != oindex_1.tube) {
X goto L10;
X }
X rspeak_(186);
X/* !CANT PUT BACK IN. */
X return ret_val;
X
X/* O13-- CHALICE */
X
XL23000:
X if (prsvec_1.prsa != vindex_1.takew || objcts_1.ocan[prsvec_1.prso - 1] !=
X 0 || objcts_1.oroom[prsvec_1.prso - 1] != rindex_1.treas ||
X objcts_1.oroom[oindex_1.thief - 1] != rindex_1.treas || (
X objcts_1.oflag2[oindex_1.thief - 1] & FITEBT) == 0 || !
X hack_1.thfact) {
X goto L10;
X }
X rspeak_(204);
X/* !CANT TAKE. */
X return ret_val;
X
X/* O14-- PAINTING */
X
XL24000:
X if (prsvec_1.prsa != vindex_1.mungw) {
X goto L10;
X }
X/* !MUNG? */
X rspeak_(205);
X/* !DESTROY PAINTING. */
X objcts_1.ofval[prsvec_1.prso - 1] = 0;
X objcts_1.otval[prsvec_1.prso - 1] = 0;
X objcts_1.odesc1[prsvec_1.prso - 1] = 207;
X objcts_1.odesc2[prsvec_1.prso - 1] = 206;
X return ret_val;
X/* SOBJS, PAGE 8 */
X
X/* O15-- BOLT */
X
XL27000:
X if (prsvec_1.prsa != vindex_1.turnw) {
X goto L10;
X }
X/* !TURN BOLT? */
X if (prsvec_1.prsi != oindex_1.wrenc) {
X goto L27500;
X }
X/* !WITH WRENCH? */
X if (findex_1.gatef) {
X goto L27100;
X }
X/* !PROPER BUTTON PUSHED? */
X rspeak_(210);
X/* !NO, LOSE. */
X return ret_val;
X
XL27100:
X if (findex_1.lwtidf) {
X goto L27200;
X }
X/* !LOW TIDE NOW? */
X findex_1.lwtidf = TRUE_;
X/* !NO, EMPTY DAM. */
X rspeak_(211);
X objcts_1.oflag2[oindex_1.coffi - 1] &= ~ SCRDBT;
X objcts_1.oflag1[oindex_1.trunk - 1] |= VISIBT;
X rooms_1.rflag[rindex_1.reser - 1] = (rooms_1.rflag[rindex_1.reser - 1] |
X RLAND) & ~ (RWATER + RSEEN);
X return ret_val;
X
XL27200:
X findex_1.lwtidf = FALSE_;
X/* !YES, FILL DAM. */
X rspeak_(212);
X if (qhere_(oindex_1.trunk, rindex_1.reser)) {
X objcts_1.oflag1[oindex_1.trunk - 1] &= ~ VISIBT;
X }
X rooms_1.rflag[rindex_1.reser - 1] = (rooms_1.rflag[rindex_1.reser - 1] |
X RWATER) & ~ RLAND;
X return ret_val;
X
XL27500:
X rspsub_(299, odi2);
X/* !NOT WITH THAT. */
X return ret_val;
X
X/* O16-- GRATING */
X
XL28000:
X if (prsvec_1.prsa != vindex_1.openw && prsvec_1.prsa != vindex_1.closew) {
X
X goto L10;
X }
X if (findex_1.grunlf) {
X goto L28200;
X }
X/* !UNLOCKED? */
X rspeak_(214);
X/* !NO, LOCKED. */
X return ret_val;
X
XL28200:
X i = 215;
X/* !UNLOCKED, VIEW FRM CLR. */
X if (play_1.here != rindex_1.clear) {
X i = 216;
X }
X/* !VIEW FROM BELOW. */
X ret_val = opncls_(oindex_1.grate, i, 885);
X/* !OPEN/CLOSE. */
X rooms_1.rflag[rindex_1.mgrat - 1] &= ~ RLIGHT;
X if ((objcts_1.oflag2[oindex_1.grate - 1] & OPENBT) != 0) {
X rooms_1.rflag[rindex_1.mgrat - 1] |= RLIGHT;
X }
X if (! lit_(play_1.here)) {
X rspeak_(406);
X }
X/* !IF DARK, DIE. */
X return ret_val;
X
X/* O17-- TRAP DOOR */
X
XL29000:
X if (play_1.here != rindex_1.lroom) {
X goto L29100;
X }
X/* !FROM LIVING ROOM? */
X ret_val = opncls_(oindex_1.door, 218, 219);
X/* !OPEN/CLOSE. */
X return ret_val;
X
XL29100:
X if (play_1.here != rindex_1.cella) {
X goto L10;
X }
X/* !FROM CELLAR? */
X if (prsvec_1.prsa != vindex_1.openw || (objcts_1.oflag2[oindex_1.door - 1]
X & OPENBT) != 0) {
X goto L29200;
X }
X rspeak_(220);
X/* !CANT OPEN CLOSED DOOR. */
X return ret_val;
X
XL29200:
X ret_val = opncls_(oindex_1.door, 0, 22);
X/* !NORMAL OPEN/CLOSE. */
X return ret_val;
X
X/* O18-- DURABLE DOOR */
X
XL30000:
X i = 0;
X/* !ASSUME NO APPL. */
X if (prsvec_1.prsa == vindex_1.openw) {
X i = 221;
X }
X/* !OPEN? */
X if (prsvec_1.prsa == vindex_1.burnw) {
X i = 222;
X }
X/* !BURN? */
X if (prsvec_1.prsa == vindex_1.mungw) {
X i = rnd_(3) + 223;
X }
X/* !MUNG? */
X if (i == 0) {
X goto L10;
X }
X rspeak_(i);
X return ret_val;
X
X/* O19-- MASTER SWITCH */
X
XL31000:
X if (prsvec_1.prsa != vindex_1.turnw) {
X goto L10;
X }
X/* !TURN? */
X if (prsvec_1.prsi != oindex_1.screw) {
X goto L31500;
X }
X/* !WITH SCREWDRIVER? */
X if ((objcts_1.oflag2[oindex_1.machi - 1] & OPENBT) != 0) {
X goto L31600;
X }
X/* !LID UP? */
X rspeak_(226);
X/* !NO, ACTIVATE. */
X if (objcts_1.ocan[oindex_1.coal - 1] != oindex_1.machi) {
X goto L31400;
X }
X/* !COAL INSIDE? */
X newsta_(oindex_1.coal, 0, 0, 0, 0);
X/* !KILL COAL, */
X newsta_(oindex_1.diamo, 0, 0, oindex_1.machi, 0);
X/* !REPLACE WITH DIAMOND. */
X return ret_val;
X
XL31400:
X i__1 = objcts_1.olnt;
X for (i = 1; i <= i__1; ++i) {
X/* !KILL NONCOAL OBJECTS. */
X if (objcts_1.ocan[i - 1] != oindex_1.machi) {
X goto L31450;
X }
X/* !INSIDE MACHINE? */
X newsta_(i, 0, 0, 0, 0);
X/* !KILL OBJECT AND CONTENTS. */
X newsta_(oindex_1.gunk, 0, 0, oindex_1.machi, 0);
X/* !REDUCE TO GUNK. */
XL31450:
X ;
X }
X return ret_val;
X
XL31500:
X rspsub_(300, odi2);
X/* !CANT TURN WITH THAT. */
X return ret_val;
X
XL31600:
X rspeak_(227);
X/* !LID IS UP. */
X return ret_val;
X/* SOBJS, PAGE 9 */
X
X/* O20-- LEAK */
X
XL33000:
X if (prsvec_1.prso != oindex_1.leak || prsvec_1.prsa != vindex_1.plugw ||
X findex_1.rvmnt <= 0) {
X goto L10;
X }
X if (prsvec_1.prsi != oindex_1.putty) {
X goto L33100;
X }
X/* !WITH PUTTY? */
X findex_1.rvmnt = -1;
X/* !DISABLE LEAK. */
X cevent_1.ctick[cindex_1.cevmnt - 1] = 0;
X rspeak_(577);
X return ret_val;
X
XL33100:
X rspsub_(301, odi2);
X/* !CANT WITH THAT. */
X return ret_val;
X
X/* O21-- DROWNING BUTTONS */
X
XL34000:
X if (prsvec_1.prsa != vindex_1.pushw) {
X goto L10;
X }
X/* !PUSH? */
X switch (prsvec_1.prso - oindex_1.rbutt + 1) {
X case 1: goto L34100;
X case 2: goto L34200;
X case 3: goto L34300;
X case 4: goto L34400;
X }
X goto L10;
X/* !NOT A BUTTON. */
X
XL34100:
X rooms_1.rflag[play_1.here - 1] ^= RLIGHT;
X i = 230;
X if ((rooms_1.rflag[play_1.here - 1] & RLIGHT) != 0) {
X i = 231;
X }
X rspeak_(i);
X return ret_val;
X
XL34200:
X findex_1.gatef = TRUE_;
X/* !RELEASE GATE. */
X rspeak_(232);
X return ret_val;
X
XL34300:
X findex_1.gatef = FALSE_;
X/* !INTERLOCK GATE. */
X rspeak_(232);
X return ret_val;
X
XL34400:
X if (findex_1.rvmnt != 0) {
X goto L34500;
X }
X/* !LEAK ALREADY STARTED? */
X rspeak_(233);
X/* !NO, START LEAK. */
X findex_1.rvmnt = 1;
X cevent_1.ctick[cindex_1.cevmnt - 1] = -1;
X return ret_val;
X
XL34500:
X rspeak_(234);
X/* !BUTTON JAMMED. */
X return ret_val;
X
X/* O22-- INFLATABLE BOAT */
X
XL36000:
X if (prsvec_1.prsa != vindex_1.inflaw) {
X goto L10;
X }
X/* !INFLATE? */
X if (objcts_1.oroom[oindex_1.iboat - 1] != 0) {
X goto L36100;
X }
X/* !IN ROOM? */
X rspeak_(235);
X/* !NO, JOKE. */
X return ret_val;
X
XL36100:
X if (prsvec_1.prsi != oindex_1.pump) {
X goto L36200;
X }
X/* !WITH PUMP? */
X newsta_(oindex_1.iboat, 0, 0, 0, 0);
X/* !KILL DEFL BOAT, */
X newsta_(oindex_1.rboat, 236, play_1.here, 0, 0);
X/* !REPL WITH INF. */
X findex_1.deflaf = FALSE_;
X return ret_val;
X
XL36200:
X i = 237;
X/* !JOKES. */
X if (prsvec_1.prsi != oindex_1.lungs) {
X i = 303;
X }
X rspsub_(i, odi2);
X return ret_val;
X
X/* O23-- DEFLATED BOAT */
X
XL37000:
X if (prsvec_1.prsa != vindex_1.inflaw) {
X goto L37100;
X }
X/* !INFLATE? */
X rspeak_(238);
X/* !JOKE. */
X return ret_val;
X
XL37100:
X if (prsvec_1.prsa != vindex_1.plugw) {
X goto L10;
X }
X/* !PLUG? */
X if (prsvec_1.prsi != oindex_1.putty) {
X goto L33100;
X }
X/* !WITH PUTTY? */
X newsta_(oindex_1.iboat, 239, objcts_1.oroom[oindex_1.dboat - 1],
X objcts_1.ocan[oindex_1.dboat - 1], objcts_1.oadv[oindex_1.dboat
X - 1]);
X newsta_(oindex_1.dboat, 0, 0, 0, 0);
X/* !KILL DEFL BOAT, REPL. */
X return ret_val;
X/* SOBJS, PAGE 10 */
X
X/* O24-- RUBBER BOAT */
X
XL38000:
X if (arg != 0) {
X goto L10;
X }
X/* !DISMISS READIN, OUT. */
X if (prsvec_1.prsa != vindex_1.boardw || objcts_1.oadv[oindex_1.stick - 1]
X != play_1.winner) {
X goto L38100;
X }
X newsta_(oindex_1.rboat, 0, 0, 0, 0);
X/* !KILL INFL BOAT, */
X newsta_(oindex_1.dboat, 240, play_1.here, 0, 0);
X/* !REPL WITH DEAD. */
X findex_1.deflaf = TRUE_;
X return ret_val;
X
XL38100:
X if (prsvec_1.prsa != vindex_1.inflaw) {
X goto L38200;
X }
X/* !INFLATE? */
X rspeak_(367);
X/* !YES, JOKE. */
X return ret_val;
X
XL38200:
X if (prsvec_1.prsa != vindex_1.deflaw) {
X goto L10;
X }
X/* !DEFLATE? */
X if (av == oindex_1.rboat) {
X goto L38300;
X }
X/* !IN BOAT? */
X if (objcts_1.oroom[oindex_1.rboat - 1] == 0) {
X goto L38400;
X }
X/* !ON GROUND? */
X newsta_(oindex_1.rboat, 0, 0, 0, 0);
X/* !KILL INFL BOAT, */
X newsta_(oindex_1.iboat, 241, play_1.here, 0, 0);
X/* !REPL WITH DEFL. */
X findex_1.deflaf = TRUE_;
X return ret_val;
X
XL38300:
X rspeak_(242);
X/* !IN BOAT. */
X return ret_val;
X
XL38400:
X rspeak_(243);
X/* !NOT ON GROUND. */
X return ret_val;
X
X/* O25-- BRAIDED ROPE */
X
XL41000:
X if (prsvec_1.prsa != vindex_1.tiew || prsvec_1.prso != oindex_1.brope ||
X prsvec_1.prsi != oindex_1.hook1 && prsvec_1.prsi !=
X oindex_1.hook2) {
X goto L41500;
X }
X findex_1.btief = prsvec_1.prsi;
X/* !RECORD LOCATION. */
X cevent_1.cflag[cindex_1.cevbal - 1] = FALSE_;
X/* !STALL ASCENT. */
X rspeak_(248);
X return ret_val;
X
XL41500:
X if (prsvec_1.prsa != vindex_1.untiew || prsvec_1.prso != oindex_1.brope) {
X
X goto L10;
X }
X if (findex_1.btief != 0) {
X goto L41600;
X }
X/* !TIED UP? */
X rspeak_(249);
X/* !NO, JOKE. */
X return ret_val;
X
XL41600:
X rspeak_(250);
X findex_1.btief = 0;
X/* !UNTIE. */
X cevent_1.ctick[cindex_1.cevbal - 1] = 3;
X/* !RESTART CLOCK. */
X cevent_1.cflag[cindex_1.cevbal - 1] = TRUE_;
X return ret_val;
X
X/* O26-- SAFE */
X
XL42000:
X i = 0;
X/* !ASSUME UNPROCESSED. */
X if (prsvec_1.prsa == vindex_1.takew) {
X i = 251;
X }
X/* !TAKE? */
X if (prsvec_1.prsa == vindex_1.openw && findex_1.safef) {
X i = 253;
X }
X/* !OPEN AFTER BLAST? */
X if (prsvec_1.prsa == vindex_1.openw && ! findex_1.safef) {
X i = 254;
X }
X/* !OPEN BEFORE BLAST? */
X if (prsvec_1.prsa == vindex_1.closew && findex_1.safef) {
X i = 253;
X }
X/* !CLOSE AFTER? */
X if (prsvec_1.prsa == vindex_1.closew && ! findex_1.safef) {
X i = 255;
X }
X if (i == 0) {
X goto L10;
X }
X rspeak_(i);
X return ret_val;
X
X/* O27-- FUSE */
X
XL43000:
X if (prsvec_1.prsa != vindex_1.burnw) {
X goto L10;
X }
X/* !BURN? */
X rspeak_(256);
X cevent_1.ctick[cindex_1.cevfus - 1] = 2;
X/* !START COUNTDOWN. */
X return ret_val;
X
X/* O28-- GNOME */
X
XL44000:
X if (prsvec_1.prsa != vindex_1.givew && prsvec_1.prsa != vindex_1.throww) {
X
X goto L44500;
X }
X if (objcts_1.otval[prsvec_1.prso - 1] == 0) {
X goto L44100;
X }
X/* !TREASURE? */
X rspsub_(257, odo2);
X/* !YES, GET DOOR. */
X newsta_(prsvec_1.prso, 0, 0, 0, 0);
X newsta_(oindex_1.gnome, 0, 0, 0, 0);
X/* !VANISH GNOME. */
X findex_1.gnodrf = TRUE_;
X return ret_val;
X
XL44100:
X rspsub_(258, odo2);
X/* !NO, LOSE OBJECT. */
X newsta_(prsvec_1.prso, 0, 0, 0, 0);
X return ret_val;
X
XL44500:
X rspeak_(259);
X/* !NERVOUS GNOME. */
X if (! findex_1.gnomef) {
X cevent_1.ctick[cindex_1.cevgno - 1] = 5;
X }
X/* !SCHEDULE BYEBYE. */
X findex_1.gnomef = TRUE_;
X return ret_val;
X
X/* O29-- COKE BOTTLES */
X
XL46000:
X if (prsvec_1.prsa != vindex_1.throww && prsvec_1.prsa != vindex_1.mungw) {
X
X goto L10;
X }
X newsta_(prsvec_1.prso, 262, 0, 0, 0);
X/* !MUNG BOTTLES. */
X return ret_val;
X/* SOBJS, PAGE 11 */
X
X
X/* O30-- ROBOT */
X
XL53000:
X if (prsvec_1.prsa != vindex_1.givew) {
X goto L53200;
X }
X/* !GIVE? */
X newsta_(prsvec_1.prso, 0, 0, 0, aindex_1.arobot);
X/* !PUT ON ROBOT. */
X rspsub_(302, odo2);
X return ret_val;
X
XL53200:
X if (prsvec_1.prsa != vindex_1.mungw && prsvec_1.prsa != vindex_1.throww) {
X
X goto L10;
X }
X newsta_(oindex_1.robot, 285, 0, 0, 0);
X/* !KILL ROBOT. */
X return ret_val;
X
X/* O31-- GRUE */
X
XL56000:
X if (prsvec_1.prsa != vindex_1.examiw) {
X goto L56100;
X }
X/* !EXAMINE? */
X rspeak_(288);
X return ret_val;
X
XL56100:
X if (prsvec_1.prsa != vindex_1.findw) {
X goto L10;
X }
X/* !FIND? */
X rspeak_(289);
X return ret_val;
X
X} /* sobjs_ */
END_OF_FILE
if test 21223 -ne `wc -c <'sobjs.c'`; then
echo shar: \"'sobjs.c'\" unpacked with wrong size!
fi
# end of 'sobjs.c'
fi
echo shar: End of archive 7 \(of 12\).
cp /dev/null ark7isdone
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