123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944 |
- /* NOBJS- NEW OBJECTS PROCESSOR */
- /* OBJECTS IN THIS MODULE CANNOT CALL RMINFO, JIGSUP, */
- /* MAJOR VERBS, OR OTHER NON-RESIDENT SUBROUTINES */
- /*COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142*/
- /* ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED */
- /* WRITTEN BY R. M. SUPNIK */
- #include "funcs.h"
- #include "vars.h"
- static logical mirpan_ P((integer, logical));
- logical nobjs_(ri, arg)
- integer ri;
- integer arg;
- {
- /* System generated locals */
- integer i__1, i__2;
- logical ret_val;
- /* Local variables */
- logical f;
- integer target;
- integer i;
- integer j;
- integer av, wl;
- integer nxt, odi2 = 0, odo2 = 0;
- if (prsvec_1.prso != 0) {
- odo2 = objcts_1.odesc2[prsvec_1.prso - 1];
- }
- if (prsvec_1.prsi != 0) {
- odi2 = objcts_1.odesc2[prsvec_1.prsi - 1];
- }
- av = advs_1.avehic[play_1.winner - 1];
- ret_val = TRUE_;
- switch (ri - 31) {
- case 1: goto L1000;
- case 2: goto L2000;
- case 3: goto L3000;
- case 4: goto L4000;
- case 5: goto L5000;
- case 6: goto L6000;
- case 7: goto L7000;
- case 8: goto L8000;
- case 9: goto L9000;
- case 10: goto L10000;
- case 11: goto L11000;
- case 12: goto L12000;
- case 13: goto L13000;
- case 14: goto L14000;
- case 15: goto L15000;
- case 16: goto L16000;
- case 17: goto L17000;
- case 18: goto L18000;
- case 19: goto L19000;
- case 20: goto L20000;
- case 21: goto L21000;
- }
- bug_(6, ri);
- /* RETURN HERE TO DECLARE FALSE RESULT */
- L10:
- ret_val = FALSE_;
- return ret_val;
- /* O32-- BILLS */
- L1000:
- if (prsvec_1.prsa != vindex_1.eatw) {
- goto L1100;
- }
- /* !EAT? */
- rspeak_(639);
- /* !JOKE. */
- return ret_val;
- L1100:
- if (prsvec_1.prsa == vindex_1.burnw) {
- rspeak_(640);
- }
- /* !BURN? JOKE. */
- goto L10;
- /* !LET IT BE HANDLED. */
- /* NOBJS, PAGE 3 */
- /* O33-- SCREEN OF LIGHT */
- L2000:
- target = oindex_1.scol;
- /* !TARGET IS SCOL. */
- L2100:
- if (prsvec_1.prso != target) {
- goto L2400;
- }
- /* !PRSO EQ TARGET? */
- if (prsvec_1.prsa != vindex_1.pushw && prsvec_1.prsa != vindex_1.movew &&
- prsvec_1.prsa != vindex_1.takew && prsvec_1.prsa != vindex_1.rubw)
- {
- goto L2200;
- }
- rspeak_(673);
- /* !HAND PASSES THRU. */
- return ret_val;
- L2200:
- if (prsvec_1.prsa != vindex_1.killw && prsvec_1.prsa != vindex_1.attacw &&
- prsvec_1.prsa != vindex_1.mungw) {
- goto L2400;
- }
- rspsub_(674, odi2);
- /* !PASSES THRU. */
- return ret_val;
- L2400:
- if (prsvec_1.prsa != vindex_1.throww || prsvec_1.prsi != target) {
- goto L10;
- }
- if (play_1.here == rindex_1.bkbox) {
- goto L2600;
- }
- /* !THRU SCOL? */
- newsta_(prsvec_1.prso, 0, rindex_1.bkbox, 0, 0);
- /* !NO, THRU WALL. */
- rspsub_(675, odo2);
- /* !ENDS UP IN BOX ROOM. */
- cevent_1.ctick[cindex_1.cevscl - 1] = 0;
- /* !CANCEL ALARM. */
- screen_1.scolrm = 0;
- /* !RESET SCOL ROOM. */
- return ret_val;
- L2600:
- if (screen_1.scolrm == 0) {
- goto L2900;
- }
- /* !TRIED TO GO THRU? */
- newsta_(prsvec_1.prso, 0, screen_1.scolrm, 0, 0);
- /* !SUCCESS. */
- rspsub_(676, odo2);
- /* !ENDS UP SOMEWHERE. */
- cevent_1.ctick[cindex_1.cevscl - 1] = 0;
- /* !CANCEL ALARM. */
- screen_1.scolrm = 0;
- /* !RESET SCOL ROOM. */
- return ret_val;
- L2900:
- rspeak_(213);
- /* !CANT DO IT. */
- return ret_val;
- /* NOBJS, PAGE 4 */
- /* O34-- GNOME OF ZURICH */
- L3000:
- if (prsvec_1.prsa != vindex_1.givew && prsvec_1.prsa != vindex_1.throww) {
- goto L3200;
- }
- if (objcts_1.otval[prsvec_1.prso - 1] != 0) {
- goto L3100;
- }
- /* !THROW A TREASURE? */
- newsta_(prsvec_1.prso, 641, 0, 0, 0);
- /* !NO, GO POP. */
- return ret_val;
- L3100:
- newsta_(prsvec_1.prso, 0, 0, 0, 0);
- /* !YES, BYE BYE TREASURE. */
- rspsub_(642, odo2);
- newsta_(oindex_1.zgnom, 0, 0, 0, 0);
- /* !BYE BYE GNOME. */
- cevent_1.ctick[cindex_1.cevzgo - 1] = 0;
- /* !CANCEL EXIT. */
- f = moveto_(rindex_1.bkent, play_1.winner);
- /* !NOW IN BANK ENTRANCE. */
- return ret_val;
- L3200:
- if (prsvec_1.prsa != vindex_1.attacw && prsvec_1.prsa != vindex_1.killw &&
- prsvec_1.prsa != vindex_1.mungw) {
- goto L3300;
- }
- newsta_(oindex_1.zgnom, 643, 0, 0, 0);
- /* !VANISH GNOME. */
- cevent_1.ctick[cindex_1.cevzgo - 1] = 0;
- /* !CANCEL EXIT. */
- return ret_val;
- L3300:
- rspeak_(644);
- /* !GNOME IS IMPATIENT. */
- return ret_val;
- /* O35-- EGG */
- L4000:
- if (prsvec_1.prsa != vindex_1.openw || prsvec_1.prso != oindex_1.egg) {
- goto L4500;
- }
- if (! ((objcts_1.oflag2[oindex_1.egg - 1] & OPENBT) != 0)) {
- goto L4100;
- }
- /* !OPEN ALREADY? */
- rspeak_(649);
- /* !YES. */
- return ret_val;
- L4100:
- if (prsvec_1.prsi != 0) {
- goto L4200;
- }
- /* !WITH SOMETHING? */
- rspeak_(650);
- /* !NO, CANT. */
- return ret_val;
- L4200:
- if (prsvec_1.prsi != oindex_1.hands) {
- goto L4300;
- }
- /* !WITH HANDS? */
- rspeak_(651);
- /* !NOT RECOMMENDED. */
- return ret_val;
- L4300:
- i = 652;
- /* !MUNG MESSAGE. */
- if ((objcts_1.oflag1[prsvec_1.prsi - 1] & TOOLBT) != 0 || (
- objcts_1.oflag2[prsvec_1.prsi - 1] & WEAPBT) != 0) {
- goto L4600;
- }
- i = 653;
- /* !NOVELTY 1. */
- if ((objcts_1.oflag2[prsvec_1.prso - 1] & FITEBT) != 0) {
- i = 654;
- }
- objcts_1.oflag2[prsvec_1.prso - 1] |= FITEBT;
- rspsub_(i, odi2);
- return ret_val;
- L4500:
- if (prsvec_1.prsa != vindex_1.openw && prsvec_1.prsa != vindex_1.mungw) {
- goto L4800;
- }
- i = 655;
- /* !YOU BLEW IT. */
- L4600:
- newsta_(oindex_1.begg, i, objcts_1.oroom[oindex_1.egg - 1],
- objcts_1.ocan[oindex_1.egg - 1], objcts_1.oadv[oindex_1.egg - 1])
- ;
- newsta_(oindex_1.egg, 0, 0, 0, 0);
- /* !VANISH EGG. */
- objcts_1.otval[oindex_1.begg - 1] = 2;
- /* !BAD EGG HAS VALUE. */
- if (objcts_1.ocan[oindex_1.canar - 1] != oindex_1.egg) {
- goto L4700;
- }
- /* !WAS CANARY INSIDE? */
- rspeak_(objcts_1.odesco[oindex_1.bcana - 1]);
- /* !YES, DESCRIBE RESULT. */
- objcts_1.otval[oindex_1.bcana - 1] = 1;
- return ret_val;
- L4700:
- newsta_(oindex_1.bcana, 0, 0, 0, 0);
- /* !NO, VANISH IT. */
- return ret_val;
- L4800:
- if (prsvec_1.prsa != vindex_1.dropw || play_1.here != rindex_1.mtree) {
- goto L10;
- }
- newsta_(oindex_1.begg, 658, rindex_1.fore3, 0, 0);
- /* !DROPPED EGG. */
- newsta_(oindex_1.egg, 0, 0, 0, 0);
- objcts_1.otval[oindex_1.begg - 1] = 2;
- if (objcts_1.ocan[oindex_1.canar - 1] != oindex_1.egg) {
- goto L4700;
- }
- objcts_1.otval[oindex_1.bcana - 1] = 1;
- /* !BAD CANARY. */
- return ret_val;
- /* NOBJS, PAGE 5 */
- /* O36-- CANARIES, GOOD AND BAD */
- L5000:
- if (prsvec_1.prsa != vindex_1.windw) {
- goto L10;
- }
- /* !WIND EM UP? */
- if (prsvec_1.prso == oindex_1.canar) {
- goto L5100;
- }
- /* !RIGHT ONE? */
- rspeak_(645);
- /* !NO, BAD NEWS. */
- return ret_val;
- L5100:
- if (! findex_1.singsf && (play_1.here == rindex_1.mtree || play_1.here >=
- rindex_1.fore1 && play_1.here < rindex_1.clear)) {
- goto L5200;
- }
- rspeak_(646);
- /* !NO, MEDIOCRE NEWS. */
- return ret_val;
- L5200:
- findex_1.singsf = TRUE_;
- /* !SANG SONG. */
- i = play_1.here;
- if (i == rindex_1.mtree) {
- i = rindex_1.fore3;
- }
- /* !PLACE BAUBLE. */
- newsta_(oindex_1.baubl, 647, i, 0, 0);
- return ret_val;
- /* O37-- WHITE CLIFFS */
- L6000:
- if (prsvec_1.prsa != vindex_1.clmbw && prsvec_1.prsa != vindex_1.clmbuw &&
- prsvec_1.prsa != vindex_1.clmbdw) {
- goto L10;
- }
- rspeak_(648);
- /* !OH YEAH? */
- return ret_val;
- /* O38-- WALL */
- L7000:
- if ((i__1 = play_1.here - findex_1.mloc, abs(i__1)) != 1 || mrhere_(
- play_1.here) != 0 || prsvec_1.prsa != vindex_1.pushw) {
- goto L7100;
- }
- rspeak_(860);
- /* !PUSHED MIRROR WALL. */
- return ret_val;
- L7100:
- if ((rooms_1.rflag[play_1.here - 1] & RNWALL) == 0) {
- goto L10;
- }
- rspeak_(662);
- /* !NO WALL. */
- return ret_val;
- /* NOBJS, PAGE 6 */
- /* O39-- SONG BIRD GLOBAL */
- L8000:
- if (prsvec_1.prsa != vindex_1.findw) {
- goto L8100;
- }
- /* !FIND? */
- rspeak_(666);
- return ret_val;
- L8100:
- if (prsvec_1.prsa != vindex_1.examiw) {
- goto L10;
- }
- /* !EXAMINE? */
- rspeak_(667);
- return ret_val;
- /* O40-- PUZZLE/SCOL WALLS */
- L9000:
- if (play_1.here != rindex_1.cpuzz) {
- goto L9500;
- }
- /* !PUZZLE WALLS? */
- if (prsvec_1.prsa != vindex_1.pushw) {
- goto L10;
- }
- /* !PUSH? */
- for (i = 1; i <= 8; i += 2) {
- /* !LOCATE WALL. */
- if (prsvec_1.prso == puzzle_1.cpwl[i - 1]) {
- goto L9200;
- }
- /* L9100: */
- }
- bug_(80, prsvec_1.prso);
- /* !WHAT? */
- L9200:
- j = puzzle_1.cpwl[i];
- /* !GET DIRECTIONAL OFFSET. */
- nxt = findex_1.cphere + j;
- /* !GET NEXT STATE. */
- wl = puzzle_1.cpvec[nxt - 1];
- /* !GET C(NEXT STATE). */
- switch (wl + 4) {
- case 1: goto L9300;
- case 2: goto L9300;
- case 3: goto L9300;
- case 4: goto L9250;
- case 5: goto L9350;
- }
- /* !PROCESS. */
- L9250:
- rspeak_(876);
- /* !CLEAR CORRIDOR. */
- return ret_val;
- L9300:
- if (puzzle_1.cpvec[nxt + j - 1] == 0) {
- goto L9400;
- }
- /* !MOVABLE, ROOM TO MOVE? */
- L9350:
- rspeak_(877);
- /* !IMMOVABLE, NO ROOM. */
- return ret_val;
- L9400:
- i = 878;
- /* !ASSUME FIRST PUSH. */
- if (findex_1.cpushf) {
- i = 879;
- }
- /* !NOT? */
- findex_1.cpushf = TRUE_;
- puzzle_1.cpvec[nxt + j - 1] = wl;
- /* !MOVE WALL. */
- puzzle_1.cpvec[nxt - 1] = 0;
- /* !VACATE NEXT STATE. */
- cpgoto_(nxt);
- /* !ONWARD. */
- cpinfo_(i, nxt);
- /* !DESCRIBE. */
- princr_(1, play_1.here);
- /* !PRINT ROOMS CONTENTS. */
- rooms_1.rflag[play_1.here - 1] |= RSEEN;
- return ret_val;
- L9500:
- if (play_1.here != screen_1.scolac) {
- goto L9700;
- }
- /* !IN SCOL ACTIVE ROOM? */
- for (i = 1; i <= 12; i += 3) {
- target = screen_1.scolwl[i];
- /* !ASSUME TARGET. */
- if (screen_1.scolwl[i - 1] == play_1.here) {
- goto L2100;
- }
- /* !TREAT IF FOUND. */
- /* L9600: */
- }
- L9700:
- if (play_1.here != rindex_1.bkbox) {
- goto L10;
- }
- /* !IN BOX ROOM? */
- target = oindex_1.wnort;
- goto L2100;
- /* NOBJS, PAGE 7 */
- /* O41-- SHORT POLE */
- L10000:
- if (prsvec_1.prsa != vindex_1.raisew) {
- goto L10100;
- }
- /* !LIFT? */
- i = 749;
- /* !ASSUME UP. */
- if (findex_1.poleuf == 2) {
- i = 750;
- }
- /* !ALREADY UP? */
- rspeak_(i);
- findex_1.poleuf = 2;
- /* !POLE IS RAISED. */
- return ret_val;
- L10100:
- if (prsvec_1.prsa != vindex_1.lowerw && prsvec_1.prsa != vindex_1.pushw) {
- goto L10;
- }
- if (findex_1.poleuf != 0) {
- goto L10200;
- }
- /* !ALREADY LOWERED? */
- rspeak_(751);
- /* !CANT DO IT. */
- return ret_val;
- L10200:
- if (findex_1.mdir % 180 != 0) {
- goto L10300;
- }
- /* !MIRROR N-S? */
- findex_1.poleuf = 0;
- /* !YES, LOWER INTO */
- rspeak_(752);
- /* !CHANNEL. */
- return ret_val;
- L10300:
- if (findex_1.mdir != 270 || findex_1.mloc != rindex_1.mrb) {
- goto L10400;
- }
- findex_1.poleuf = 0;
- /* !LOWER INTO HOLE. */
- rspeak_(753);
- return ret_val;
- L10400:
- i__1 = findex_1.poleuf + 753;
- rspeak_(i__1);
- /* !POLEUF = 1 OR 2. */
- findex_1.poleuf = 1;
- /* !NOW ON FLOOR. */
- return ret_val;
- /* O42-- MIRROR SWITCH */
- L11000:
- if (prsvec_1.prsa != vindex_1.pushw) {
- goto L10;
- }
- /* !PUSH? */
- if (findex_1.mrpshf) {
- goto L11300;
- }
- /* !ALREADY PUSHED? */
- rspeak_(756);
- /* !BUTTON GOES IN. */
- i__1 = objcts_1.olnt;
- for (i = 1; i <= i__1; ++i) {
- /* !BLOCKED? */
- if (qhere_(i, rindex_1.mreye) && i != oindex_1.rbeam) {
- goto L11200;
- }
- /* L11100: */
- }
- rspeak_(757);
- /* !NOTHING IN BEAM. */
- return ret_val;
- L11200:
- cevent_1.cflag[cindex_1.cevmrs - 1] = TRUE_;
- /* !MIRROR OPENS. */
- cevent_1.ctick[cindex_1.cevmrs - 1] = 7;
- findex_1.mrpshf = TRUE_;
- findex_1.mropnf = TRUE_;
- return ret_val;
- L11300:
- rspeak_(758);
- /* !MIRROR ALREADYOPEN. */
- return ret_val;
- /* NOBJS, PAGE 8 */
- /* O43-- BEAM FUNCTION */
- L12000:
- if (prsvec_1.prsa != vindex_1.takew || prsvec_1.prso != oindex_1.rbeam) {
- goto L12100;
- }
- rspeak_(759);
- /* !TAKE BEAM, JOKE. */
- return ret_val;
- L12100:
- i = prsvec_1.prso;
- /* !ASSUME BLK WITH DIROBJ. */
- if (prsvec_1.prsa == vindex_1.putw && prsvec_1.prsi == oindex_1.rbeam) {
- goto L12200;
- }
- if (prsvec_1.prsa != vindex_1.mungw || prsvec_1.prso != oindex_1.rbeam ||
- prsvec_1.prsi == 0) {
- goto L10;
- }
- i = prsvec_1.prsi;
- L12200:
- if (objcts_1.oadv[i - 1] != play_1.winner) {
- goto L12300;
- }
- /* !CARRYING? */
- newsta_(i, 0, play_1.here, 0, 0);
- /* !DROP OBJ. */
- rspsub_(760, objcts_1.odesc2[i - 1]);
- return ret_val;
- L12300:
- j = 761;
- /* !ASSUME NOT IN ROOM. */
- if (qhere_(j, play_1.here)) {
- i = 762;
- }
- /* !IN ROOM? */
- rspsub_(j, objcts_1.odesc2[i - 1]);
- /* !DESCRIBE. */
- return ret_val;
- /* O44-- BRONZE DOOR */
- L13000:
- if (play_1.here == rindex_1.ncell || findex_1.lcell == 4 && (play_1.here
- == rindex_1.cell || play_1.here == rindex_1.scorr)) {
- goto L13100;
- }
- rspeak_(763);
- /* !DOOR NOT THERE. */
- return ret_val;
- L13100:
- if (! opncls_(oindex_1.odoor, 764, 765)) {
- goto L10;
- }
- /* !OPEN/CLOSE? */
- if (play_1.here == rindex_1.ncell && (objcts_1.oflag2[oindex_1.odoor - 1]
- & OPENBT) != 0) {
- rspeak_(766);
- }
- return ret_val;
- /* O45-- QUIZ DOOR */
- L14000:
- if (prsvec_1.prsa != vindex_1.openw && prsvec_1.prsa != vindex_1.closew) {
- goto L14100;
- }
- rspeak_(767);
- /* !DOOR WONT MOVE. */
- return ret_val;
- L14100:
- if (prsvec_1.prsa != vindex_1.knockw) {
- goto L10;
- }
- /* !KNOCK? */
- if (findex_1.inqstf) {
- goto L14200;
- }
- /* !TRIED IT ALREADY? */
- findex_1.inqstf = TRUE_;
- /* !START INQUISITION. */
- cevent_1.cflag[cindex_1.cevinq - 1] = TRUE_;
- cevent_1.ctick[cindex_1.cevinq - 1] = 2;
- findex_1.quesno = rnd_(8);
- /* !SELECT QUESTION. */
- findex_1.nqatt = 0;
- findex_1.corrct = 0;
- rspeak_(768);
- /* !ANNOUNCE RULES. */
- rspeak_(769);
- i__1 = findex_1.quesno + 770;
- rspeak_(i__1);
- /* !ASK QUESTION. */
- return ret_val;
- L14200:
- rspeak_(798);
- /* !NO REPLY. */
- return ret_val;
- /* O46-- LOCKED DOOR */
- L15000:
- if (prsvec_1.prsa != vindex_1.openw) {
- goto L10;
- }
- /* !OPEN? */
- rspeak_(778);
- /* !CANT. */
- return ret_val;
- /* O47-- CELL DOOR */
- L16000:
- ret_val = opncls_(oindex_1.cdoor, 779, 780);
- /* !OPEN/CLOSE? */
- return ret_val;
- /* NOBJS, PAGE 9 */
- /* O48-- DIALBUTTON */
- L17000:
- if (prsvec_1.prsa != vindex_1.pushw) {
- goto L10;
- }
- /* !PUSH? */
- rspeak_(809);
- /* !CLICK. */
- if ((objcts_1.oflag2[oindex_1.cdoor - 1] & OPENBT) != 0) {
- rspeak_(810);
- }
- /* !CLOSE CELL DOOR. */
- i__1 = objcts_1.olnt;
- for (i = 1; i <= i__1; ++i) {
- /* !RELOCATE OLD TO HYPER. */
- if (objcts_1.oroom[i - 1] == rindex_1.cell && (objcts_1.oflag1[i - 1]
- & DOORBT) == 0) {
- i__2 = findex_1.lcell * hyper_1.hfactr;
- newsta_(i, 0, i__2, 0, 0);
- }
- if (objcts_1.oroom[i - 1] == findex_1.pnumb * hyper_1.hfactr) {
- newsta_(i, 0, rindex_1.cell, 0, 0);
- }
- /* L17100: */
- }
- objcts_1.oflag2[oindex_1.odoor - 1] &= ~ OPENBT;
- objcts_1.oflag2[oindex_1.cdoor - 1] &= ~ OPENBT;
- objcts_1.oflag1[oindex_1.odoor - 1] &= ~ VISIBT;
- if (findex_1.pnumb == 4) {
- objcts_1.oflag1[oindex_1.odoor - 1] |= VISIBT;
- }
- if (advs_1.aroom[aindex_1.player - 1] != rindex_1.cell) {
- goto L17400;
- }
- /* !PLAYER IN CELL? */
- if (findex_1.lcell != 4) {
- goto L17200;
- }
- /* !IN RIGHT CELL? */
- objcts_1.oflag1[oindex_1.odoor - 1] |= VISIBT;
- f = moveto_(rindex_1.ncell, aindex_1.player);
- /* !YES, MOVETO NCELL. */
- goto L17400;
- L17200:
- f = moveto_(rindex_1.pcell, aindex_1.player);
- /* !NO, MOVETO PCELL. */
- L17400:
- findex_1.lcell = findex_1.pnumb;
- return ret_val;
- /* NOBJS, PAGE 10 */
- /* O49-- DIAL INDICATOR */
- L18000:
- if (prsvec_1.prsa != vindex_1.spinw) {
- goto L18100;
- }
- /* !SPIN? */
- findex_1.pnumb = rnd_(8) + 1;
- /* !WHEE */
- /* ! */
- i__1 = findex_1.pnumb + 712;
- rspsub_(797, i__1);
- return ret_val;
- L18100:
- if (prsvec_1.prsa != vindex_1.movew && prsvec_1.prsa != vindex_1.putw &&
- prsvec_1.prsa != vindex_1.trntow) {
- goto L10;
- }
- if (prsvec_1.prsi != 0) {
- goto L18200;
- }
- /* !TURN DIAL TO X? */
- rspeak_(806);
- /* !MUST SPECIFY. */
- return ret_val;
- L18200:
- if (prsvec_1.prsi >= oindex_1.num1 && prsvec_1.prsi <= oindex_1.num8) {
- goto L18300;
- }
- rspeak_(807);
- /* !MUST BE DIGIT. */
- return ret_val;
- L18300:
- findex_1.pnumb = prsvec_1.prsi - oindex_1.num1 + 1;
- /* !SET UP NEW. */
- i__1 = findex_1.pnumb + 712;
- rspsub_(808, i__1);
- return ret_val;
- /* O50-- GLOBAL MIRROR */
- L19000:
- ret_val = mirpan_(832, 0);
- return ret_val;
- /* O51-- GLOBAL PANEL */
- L20000:
- if (play_1.here != rindex_1.fdoor) {
- goto L20100;
- }
- /* !AT FRONT DOOR? */
- if (prsvec_1.prsa != vindex_1.openw && prsvec_1.prsa != vindex_1.closew) {
- goto L10;
- }
- rspeak_(843);
- /* !PANEL IN DOOR, NOGO. */
- return ret_val;
- L20100:
- ret_val = mirpan_(838, 1);
- return ret_val;
- /* O52-- PUZZLE ROOM SLIT */
- L21000:
- if (prsvec_1.prsa != vindex_1.putw || prsvec_1.prsi != oindex_1.cslit) {
- goto L10;
- }
- if (prsvec_1.prso != oindex_1.gcard) {
- goto L21100;
- }
- /* !PUT CARD IN SLIT? */
- newsta_(prsvec_1.prso, 863, 0, 0, 0);
- /* !KILL CARD. */
- findex_1.cpoutf = TRUE_;
- /* !OPEN DOOR. */
- objcts_1.oflag1[oindex_1.stldr - 1] &= ~ VISIBT;
- return ret_val;
- L21100:
- if ((objcts_1.oflag1[prsvec_1.prso - 1] & VICTBT) == 0 && (
- objcts_1.oflag2[prsvec_1.prso - 1] & VILLBT) == 0) {
- goto L21200;
- }
- i__1 = rnd_(5) + 552;
- rspeak_(i__1);
- /* !JOKE FOR VILL, VICT. */
- return ret_val;
- L21200:
- newsta_(prsvec_1.prso, 0, 0, 0, 0);
- /* !KILL OBJECT. */
- rspsub_(864, odo2);
- /* !DESCRIBE. */
- return ret_val;
- } /* nobjs_ */
- /* MIRPAN-- PROCESSOR FOR GLOBAL MIRROR/PANEL */
- /* DECLARATIONS */
- static logical mirpan_(st, pnf)
- integer st;
- logical pnf;
- {
- /* System generated locals */
- integer i__1;
- logical ret_val;
- /* Local variables */
- integer num;
- integer mrbf;
- ret_val = TRUE_;
- num = mrhere_(play_1.here);
- /* !GET MIRROR NUM. */
- if (num != 0) {
- goto L100;
- }
- /* !ANY HERE? */
- rspeak_(st);
- /* !NO, LOSE. */
- return ret_val;
- L100:
- mrbf = 0;
- /* !ASSUME MIRROR OK. */
- if (num == 1 && ! findex_1.mr1f || num == 2 && ! findex_1.mr2f) {
- mrbf = 1;
- }
- if (prsvec_1.prsa != vindex_1.movew && prsvec_1.prsa != vindex_1.openw) {
- goto L200;
- }
- i__1 = st + 1;
- rspeak_(i__1);
- /* !CANT OPEN OR MOVE. */
- return ret_val;
- L200:
- if (pnf || prsvec_1.prsa != vindex_1.lookiw && prsvec_1.prsa !=
- vindex_1.examiw && prsvec_1.prsa != vindex_1.lookw) {
- goto L300;
- }
- i__1 = mrbf + 844;
- rspeak_(i__1);
- /* !LOOK IN MIRROR. */
- return ret_val;
- L300:
- if (prsvec_1.prsa != vindex_1.mungw) {
- goto L400;
- }
- /* !BREAK? */
- i__1 = st + 2 + mrbf;
- rspeak_(i__1);
- /* !DO IT. */
- if (num == 1 && ! (pnf)) {
- findex_1.mr1f = FALSE_;
- }
- if (num == 2 && ! (pnf)) {
- findex_1.mr2f = FALSE_;
- }
- return ret_val;
- L400:
- if (pnf || mrbf == 0) {
- goto L500;
- }
- /* !BROKEN MIRROR? */
- rspeak_(846);
- return ret_val;
- L500:
- if (prsvec_1.prsa != vindex_1.pushw) {
- goto L600;
- }
- /* !PUSH? */
- i__1 = st + 3 + num;
- rspeak_(i__1);
- return ret_val;
- L600:
- ret_val = FALSE_;
- /* !CANT HANDLE IT. */
- return ret_val;
- } /* mirpan_ */
|