123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801 |
- /* CEVAPP- CLOCK EVENT APPLICABLES */
- /*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 void litint_ P((integer, integer *, integer, const integer *,
- integer));
- void cevapp_(ri)
- integer ri;
- {
- /* Initialized data */
- static const integer cndtck[10] = { 50,20,10,5,0,156,156,156,157,0 };
- static const integer lmptck[12] = { 50,30,20,10,4,0,154,154,154,154,155,0 };
- /* System generated locals */
- integer i__1, i__2;
- /* Local variables */
- logical f;
- integer i, j, bc, br;
- if (ri == 0) {
- return;
- }
- /* !IGNORE DISABLED. */
- switch (ri) {
- 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;
- case 22: goto L22000;
- case 23: goto L23000;
- case 24: goto L24000;
- }
- bug_(3, ri);
- /* CEV1-- CURE CLOCK. LET PLAYER SLOWLY RECOVER. */
- L1000:
- /* Computing MIN */
- i__1 = 0, i__2 = advs_1.astren[aindex_1.player - 1] + 1;
- advs_1.astren[aindex_1.player - 1] = min(i__1,i__2);
- /* !RECOVER. */
- if (advs_1.astren[aindex_1.player - 1] >= 0) {
- return;
- }
- /* !FULLY RECOVERED? */
- cevent_1.ctick[cindex_1.cevcur - 1] = 30;
- /* !NO, WAIT SOME MORE. */
- return;
- /* CEV2-- MAINT-ROOM WITH LEAK. RAISE THE WATER LEVEL. */
- L2000:
- if (play_1.here == rindex_1.maint) {
- i__1 = findex_1.rvmnt / 2 + 71;
- rspeak_(i__1);
- }
- /* !DESCRIBE. */
- ++findex_1.rvmnt;
- /* !RAISE WATER LEVEL. */
- if (findex_1.rvmnt <= 16) {
- return;
- }
- /* !IF NOT FULL, EXIT. */
- cevent_1.ctick[cindex_1.cevmnt - 1] = 0;
- /* !FULL, DISABLE CLOCK. */
- rooms_1.rflag[rindex_1.maint - 1] |= RMUNG;
- rrand[rindex_1.maint - 1] = 80;
- /* !SAY IT IS FULL OF WATER. */
- if (play_1.here == rindex_1.maint) {
- jigsup_(81);
- }
- /* !DROWN HIM IF PRESENT. */
- return;
- /* CEV3-- LANTERN. DESCRIBE GROWING DIMNESS. */
- L3000:
- litint_(oindex_1.lamp, &findex_1.orlamp, cindex_1.cevlnt, lmptck, 12);
- /* !DO LIGHT INTERRUPT. */
- return;
- /* CEV4-- MATCH. OUT IT GOES. */
- L4000:
- rspeak_(153);
- /* !MATCH IS OUT. */
- objcts_1.oflag1[oindex_1.match - 1] &= ~ ONBT;
- return;
- /* CEV5-- CANDLE. DESCRIBE GROWING DIMNESS. */
- L5000:
- litint_(oindex_1.candl, &findex_1.orcand, cindex_1.cevcnd, cndtck, 10);
- /* !DO CANDLE INTERRUPT. */
- return;
- /* CEVAPP, PAGE 3 */
- /* CEV6-- BALLOON */
- L6000:
- cevent_1.ctick[cindex_1.cevbal - 1] = 3;
- /* !RESCHEDULE INTERRUPT. */
- f = advs_1.avehic[play_1.winner - 1] == oindex_1.ballo;
- /* !SEE IF IN BALLOON. */
- if (state_1.bloc == rindex_1.vlbot) {
- goto L6800;
- }
- /* !AT BOTTOM? */
- if (state_1.bloc == rindex_1.ledg2 || state_1.bloc == rindex_1.ledg3 ||
- state_1.bloc == rindex_1.ledg4 || state_1.bloc == rindex_1.vlbot)
- {
- goto L6700;
- }
- /* !ON LEDGE? */
- if ((objcts_1.oflag2[oindex_1.recep - 1] & OPENBT) != 0 &&
- findex_1.binff != 0) {
- goto L6500;
- }
- /* BALLOON IS IN MIDAIR AND IS DEFLATED (OR HAS RECEPTACLE CLOSED). */
- /* FALL TO NEXT ROOM. */
- if (state_1.bloc != rindex_1.vair1) {
- goto L6300;
- }
- /* !IN VAIR1? */
- state_1.bloc = rindex_1.vlbot;
- /* !YES, NOW AT VLBOT. */
- newsta_(oindex_1.ballo, 0, state_1.bloc, 0, 0);
- if (f) {
- goto L6200;
- }
- /* !IN BALLOON? */
- if (play_1.here == rindex_1.ledg2 || play_1.here == rindex_1.ledg3 ||
- play_1.here == rindex_1.ledg4 || play_1.here == rindex_1.vlbot) {
- rspeak_(530);
- }
- /* !ON LEDGE, DESCRIBE. */
- return;
- L6200:
- f = moveto_(state_1.bloc, play_1.winner);
- /* !MOVE HIM. */
- if (findex_1.binff == 0) {
- goto L6250;
- }
- /* !IN BALLOON. INFLATED? */
- rspeak_(531);
- /* !YES, LANDED. */
- f = rmdesc_(0);
- /* !DESCRIBE. */
- return;
- L6250:
- newsta_(oindex_1.ballo, 532, 0, 0, 0);
- /* !NO, BALLOON & CONTENTS DIE. */
- newsta_(oindex_1.dball, 0, state_1.bloc, 0, 0);
- /* !INSERT DEAD BALLOON. */
- advs_1.avehic[play_1.winner - 1] = 0;
- /* !NOT IN VEHICLE. */
- cevent_1.cflag[cindex_1.cevbal - 1] = FALSE_;
- /* !DISABLE INTERRUPTS. */
- cevent_1.cflag[cindex_1.cevbrn - 1] = FALSE_;
- findex_1.binff = 0;
- findex_1.btief = 0;
- return;
- L6300:
- --state_1.bloc;
- /* !NOT IN VAIR1, DESCEND. */
- newsta_(oindex_1.ballo, 0, state_1.bloc, 0, 0);
- if (f) {
- goto L6400;
- }
- /* !IS HE IN BALLOON? */
- if (play_1.here == rindex_1.ledg2 || play_1.here == rindex_1.ledg3 ||
- play_1.here == rindex_1.ledg4 || play_1.here == rindex_1.vlbot) {
- rspeak_(533);
- }
- /* !IF ON LEDGE, DESCRIBE. */
- return;
- L6400:
- f = moveto_(state_1.bloc, play_1.winner);
- /* !IN BALLOON, MOVE HIM. */
- rspeak_(534);
- /* !DESCRIBE. */
- f = rmdesc_(0);
- return;
- /* BALLOON IS IN MIDAIR AND IS INFLATED, UP-UP-AND-AWAY */
- /* ! */
- L6500:
- if (state_1.bloc != rindex_1.vair4) {
- goto L6600;
- }
- /* !AT VAIR4? */
- cevent_1.ctick[cindex_1.cevbrn - 1] = 0;
- cevent_1.ctick[cindex_1.cevbal - 1] = 0;
- findex_1.binff = 0;
- findex_1.btief = 0;
- state_1.bloc = rindex_1.vlbot;
- /* !FALL TO BOTTOM. */
- newsta_(oindex_1.ballo, 0, 0, 0, 0);
- /* !BALLOON & CONTENTS DIE. */
- newsta_(oindex_1.dball, 0, state_1.bloc, 0, 0);
- /* !SUBSTITUTE DEAD BALLOON. */
- if (f) {
- goto L6550;
- }
- /* !WAS HE IN IT? */
- if (play_1.here == rindex_1.ledg2 || play_1.here == rindex_1.ledg3 ||
- play_1.here == rindex_1.ledg4 || play_1.here == rindex_1.vlbot) {
- rspeak_(535);
- }
- /* !IF HE CAN SEE, DESCRIBE. */
- return;
- L6550:
- jigsup_(536);
- /* !IN BALLOON AT CRASH, DIE. */
- return;
- L6600:
- ++state_1.bloc;
- /* !NOT AT VAIR4, GO UP. */
- newsta_(oindex_1.ballo, 0, state_1.bloc, 0, 0);
- if (f) {
- goto L6650;
- }
- /* !IN BALLOON? */
- if (play_1.here == rindex_1.ledg2 || play_1.here == rindex_1.ledg3 ||
- play_1.here == rindex_1.ledg4 || play_1.here == rindex_1.vlbot) {
- rspeak_(537);
- }
- /* !CAN HE SEE IT? */
- return;
- L6650:
- f = moveto_(state_1.bloc, play_1.winner);
- /* !MOVE PLAYER. */
- rspeak_(538);
- /* !DESCRIBE. */
- f = rmdesc_(0);
- return;
- /* ON LEDGE, GOES TO MIDAIR ROOM WHETHER INFLATED OR NOT. */
- L6700:
- state_1.bloc += rindex_1.vair2 - rindex_1.ledg2;
- /* !MOVE TO MIDAIR. */
- newsta_(oindex_1.ballo, 0, state_1.bloc, 0, 0);
- if (f) {
- goto L6750;
- }
- /* !IN BALLOON? */
- if (play_1.here == rindex_1.ledg2 || play_1.here == rindex_1.ledg3 ||
- play_1.here == rindex_1.ledg4 || play_1.here == rindex_1.vlbot) {
- rspeak_(539);
- }
- /* !NO, STRANDED. */
- cevent_1.ctick[cindex_1.cevvlg - 1] = 10;
- /* !MATERIALIZE GNOME. */
- return;
- L6750:
- f = moveto_(state_1.bloc, play_1.winner);
- /* !MOVE TO NEW ROOM. */
- rspeak_(540);
- /* !DESCRIBE. */
- f = rmdesc_(0);
- return;
- /* AT BOTTOM, GO UP IF INFLATED, DO NOTHING IF DEFLATED. */
- L6800:
- if (findex_1.binff == 0 || ! ((objcts_1.oflag2[oindex_1.recep - 1] &
- OPENBT) != 0)) {
- return;
- }
- state_1.bloc = rindex_1.vair1;
- /* !INFLATED AND OPEN, */
- newsta_(oindex_1.ballo, 0, state_1.bloc, 0, 0);
- /* !GO UP TO VAIR1. */
- if (f) {
- goto L6850;
- }
- /* !IN BALLOON? */
- if (play_1.here == rindex_1.ledg2 || play_1.here == rindex_1.ledg3 ||
- play_1.here == rindex_1.ledg4 || play_1.here == rindex_1.vlbot) {
- rspeak_(541);
- }
- /* !IF CAN SEE, DESCRIBE. */
- return;
- L6850:
- f = moveto_(state_1.bloc, play_1.winner);
- /* !MOVE PLAYER. */
- rspeak_(542);
- f = rmdesc_(0);
- return;
- /* CEVAPP, PAGE 4 */
- /* CEV7-- BALLOON BURNUP */
- L7000:
- i__1 = objcts_1.olnt;
- for (i = 1; i <= i__1; ++i) {
- /* !FIND BURNING OBJECT */
- if (oindex_1.recep == objcts_1.ocan[i - 1] && (objcts_1.oflag1[i - 1]
- & FLAMBT) != 0) {
- goto L7200;
- }
- /* L7100: */
- }
- bug_(4, 0);
- L7200:
- newsta_(i, 0, 0, 0, 0);
- /* !VANISH OBJECT. */
- findex_1.binff = 0;
- /* !UNINFLATED. */
- if (play_1.here == state_1.bloc) {
- rspsub_(292, objcts_1.odesc2[i - 1]);
- }
- /* !DESCRIBE. */
- return;
- /* CEV8-- FUSE FUNCTION */
- L8000:
- if (objcts_1.ocan[oindex_1.fuse - 1] != oindex_1.brick) {
- goto L8500;
- }
- /* !IGNITED BRICK? */
- br = objcts_1.oroom[oindex_1.brick - 1];
- /* !GET BRICK ROOM. */
- bc = objcts_1.ocan[oindex_1.brick - 1];
- /* !GET CONTAINER. */
- if (br == 0 && bc != 0) {
- br = objcts_1.oroom[bc - 1];
- }
- newsta_(oindex_1.fuse, 0, 0, 0, 0);
- /* !KILL FUSE. */
- newsta_(oindex_1.brick, 0, 0, 0, 0);
- /* !KILL BRICK. */
- if (br != 0 && br != play_1.here) {
- goto L8100;
- }
- /* !BRICK ELSEWHERE? */
- rooms_1.rflag[play_1.here - 1] |= RMUNG;
- rrand[play_1.here - 1] = 114;
- /* !MUNG ROOM. */
- jigsup_(150);
- /* !DEAD. */
- return;
- L8100:
- rspeak_(151);
- /* !BOOM. */
- state_1.mungrm = br;
- /* !SAVE ROOM THAT BLEW. */
- cevent_1.ctick[cindex_1.cevsaf - 1] = 5;
- /* !SET SAFE INTERRUPT. */
- if (br != rindex_1.msafe) {
- goto L8200;
- }
- /* !BLEW SAFE ROOM? */
- if (bc != oindex_1.sslot) {
- return;
- }
- /* !WAS BRICK IN SAFE? */
- newsta_(oindex_1.sslot, 0, 0, 0, 0);
- /* !KILL SLOT. */
- objcts_1.oflag2[oindex_1.safe - 1] |= OPENBT;
- findex_1.safef = TRUE_;
- /* !INDICATE SAFE BLOWN. */
- return;
- L8200:
- i__1 = objcts_1.olnt;
- for (i = 1; i <= i__1; ++i) {
- /* !BLEW WRONG ROOM. */
- if (qhere_(i, br) && (objcts_1.oflag1[i - 1] & TAKEBT) !=
- 0) {
- newsta_(i, 0, 0, 0, 0);
- }
- /* L8250: */
- }
- if (br != rindex_1.lroom) {
- return;
- }
- /* !BLEW LIVING ROOM? */
- i__1 = objcts_1.olnt;
- for (i = 1; i <= i__1; ++i) {
- if (objcts_1.ocan[i - 1] == oindex_1.tcase) {
- newsta_(i, 0, 0, 0, 0);
- }
- /* !KILL TROPHY CASE. */
- /* L8300: */
- }
- return;
- L8500:
- if (qhere_(oindex_1.fuse, play_1.here) || objcts_1.oadv[oindex_1.fuse -
- 1] == play_1.winner) {
- rspeak_(152);
- }
- newsta_(oindex_1.fuse, 0, 0, 0, 0);
- /* !KILL FUSE. */
- return;
- /* CEVAPP, PAGE 5 */
- /* CEV9-- LEDGE MUNGE. */
- L9000:
- rooms_1.rflag[rindex_1.ledg4 - 1] |= RMUNG;
- rrand[rindex_1.ledg4 - 1] = 109;
- if (play_1.here == rindex_1.ledg4) {
- goto L9100;
- }
- /* !WAS HE THERE? */
- rspeak_(110);
- /* !NO, NARROW ESCAPE. */
- return;
- L9100:
- if (advs_1.avehic[play_1.winner - 1] != 0) {
- goto L9200;
- }
- /* !IN VEHICLE? */
- jigsup_(111);
- /* !NO, DEAD. */
- return;
- L9200:
- if (findex_1.btief != 0) {
- goto L9300;
- }
- /* !TIED TO LEDGE? */
- rspeak_(112);
- /* !NO, NO PLACE TO LAND. */
- return;
- L9300:
- state_1.bloc = rindex_1.vlbot;
- /* !YES, CRASH BALLOON. */
- newsta_(oindex_1.ballo, 0, 0, 0, 0);
- /* !BALLOON & CONTENTS DIE. */
- newsta_(oindex_1.dball, 0, state_1.bloc, 0, 0);
- /* !INSERT DEAD BALLOON. */
- findex_1.btief = 0;
- findex_1.binff = 0;
- cevent_1.cflag[cindex_1.cevbal - 1] = FALSE_;
- cevent_1.cflag[cindex_1.cevbrn - 1] = FALSE_;
- jigsup_(113);
- /* !DEAD */
- return;
- /* CEV10-- SAFE MUNG. */
- L10000:
- rooms_1.rflag[state_1.mungrm - 1] |= RMUNG;
- rrand[state_1.mungrm - 1] = 114;
- if (play_1.here == state_1.mungrm) {
- goto L10100;
- }
- /* !IS HE PRESENT? */
- rspeak_(115);
- /* !LET HIM KNOW. */
- if (state_1.mungrm == rindex_1.msafe) {
- cevent_1.ctick[cindex_1.cevled - 1] = 8;
- }
- /* !START LEDGE CLOCK. */
- return;
- L10100:
- i = 116;
- /* !HE'S DEAD, */
- if ((rooms_1.rflag[play_1.here - 1] & RHOUSE) != 0) {
- i = 117;
- }
- jigsup_(i);
- /* !LET HIM KNOW. */
- return;
- /* CEVAPP, PAGE 6 */
- /* CEV11-- VOLCANO GNOME */
- L11000:
- if (play_1.here == rindex_1.ledg2 || play_1.here == rindex_1.ledg3 ||
- play_1.here == rindex_1.ledg4 || play_1.here == rindex_1.vlbot) {
- goto L11100;
- }
- /* !IS HE ON LEDGE? */
- cevent_1.ctick[cindex_1.cevvlg - 1] = 1;
- /* !NO, WAIT A WHILE. */
- return;
- L11100:
- newsta_(oindex_1.gnome, 118, play_1.here, 0, 0);
- /* !YES, MATERIALIZE GNOME. */
- return;
- /* CEV12-- VOLCANO GNOME DISAPPEARS */
- L12000:
- newsta_(oindex_1.gnome, 149, 0, 0, 0);
- /* !DISAPPEAR THE GNOME. */
- return;
- /* CEV13-- BUCKET. */
- L13000:
- if (objcts_1.ocan[oindex_1.water - 1] == oindex_1.bucke) {
- newsta_(oindex_1.water, 0, 0, 0, 0);
- }
- return;
- /* CEV14-- SPHERE. IF EXPIRES, HE'S TRAPPED. */
- L14000:
- rooms_1.rflag[rindex_1.cager - 1] |= RMUNG;
- rrand[rindex_1.cager - 1] = 147;
- jigsup_(148);
- /* !MUNG PLAYER. */
- return;
- /* CEV15-- END GAME HERALD. */
- L15000:
- findex_1.endgmf = TRUE_;
- /* !WE'RE IN ENDGAME. */
- rspeak_(119);
- /* !INFORM OF ENDGAME. */
- return;
- /* CEVAPP, PAGE 7 */
- /* CEV16-- FOREST MURMURS */
- L16000:
- cevent_1.cflag[cindex_1.cevfor - 1] = play_1.here == rindex_1.mtree ||
- play_1.here >= rindex_1.fore1 && play_1.here < rindex_1.clear;
- if (cevent_1.cflag[cindex_1.cevfor - 1] && prob_(10, 10)) {
- rspeak_(635);
- }
- return;
- /* CEV17-- SCOL ALARM */
- L17000:
- if (play_1.here == rindex_1.bktwi) {
- cevent_1.cflag[cindex_1.cevzgi - 1] = TRUE_;
- }
- /* !IF IN TWI, GNOME. */
- if (play_1.here == rindex_1.bkvau) {
- jigsup_(636);
- }
- /* !IF IN VAU, DEAD. */
- return;
- /* CEV18-- ENTER GNOME OF ZURICH */
- L18000:
- cevent_1.cflag[cindex_1.cevzgo - 1] = TRUE_;
- /* !EXITS, TOO. */
- newsta_(oindex_1.zgnom, 0, rindex_1.bktwi, 0, 0);
- /* !PLACE IN TWI. */
- if (play_1.here == rindex_1.bktwi) {
- rspeak_(637);
- }
- /* !ANNOUNCE. */
- return;
- /* CEV19-- EXIT GNOME */
- L19000:
- newsta_(oindex_1.zgnom, 0, 0, 0, 0);
- /* !VANISH. */
- if (play_1.here == rindex_1.bktwi) {
- rspeak_(638);
- }
- /* !ANNOUNCE. */
- return;
- /* CEVAPP, PAGE 8 */
- /* CEV20-- START OF ENDGAME */
- L20000:
- if (findex_1.spellf) {
- goto L20200;
- }
- /* !SPELL HIS WAY IN? */
- if (play_1.here != rindex_1.crypt) {
- return;
- }
- /* !NO, STILL IN TOMB? */
- if (! lit_(play_1.here)) {
- goto L20100;
- }
- /* !LIGHTS OFF? */
- cevent_1.ctick[cindex_1.cevste - 1] = 3;
- /* !RESCHEDULE. */
- return;
- L20100:
- rspeak_(727);
- /* !ANNOUNCE. */
- L20200:
- i__1 = objcts_1.olnt;
- for (i = 1; i <= i__1; ++i) {
- /* !STRIP HIM OF OBJS. */
- newsta_(i, 0, objcts_1.oroom[i - 1], objcts_1.ocan[i - 1],
- 0);
- /* L20300: */
- }
- newsta_(oindex_1.lamp, 0, 0, 0, aindex_1.player);
- /* !GIVE HIM LAMP. */
- newsta_(oindex_1.sword, 0, 0, 0, aindex_1.player);
- /* !GIVE HIM SWORD. */
- objcts_1.oflag1[oindex_1.lamp - 1] = (objcts_1.oflag1[oindex_1.lamp - 1] |
- LITEBT) & ~ ONBT;
- objcts_1.oflag2[oindex_1.lamp - 1] |= TCHBT;
- cevent_1.cflag[cindex_1.cevlnt - 1] = FALSE_;
- /* !LAMP IS GOOD AS NEW. */
- cevent_1.ctick[cindex_1.cevlnt - 1] = 350;
- findex_1.orlamp = 0;
- objcts_1.oflag2[oindex_1.sword - 1] |= TCHBT;
- hack_1.swdact = TRUE_;
- hack_1.swdsta = 0;
- hack_1.thfact = FALSE_;
- /* !THIEF GONE. */
- findex_1.endgmf = TRUE_;
- /* !ENDGAME RUNNING. */
- cevent_1.cflag[cindex_1.cevmat - 1] = FALSE_;
- /* !MATCHES GONE, */
- cevent_1.cflag[cindex_1.cevcnd - 1] = FALSE_;
- /* !CANDLES GONE. */
- scrupd_(rooms_1.rval[rindex_1.crypt - 1]);
- /* !SCORE CRYPT, */
- rooms_1.rval[rindex_1.crypt - 1] = 0;
- /* !BUT ONLY ONCE. */
- f = moveto_(rindex_1.tstrs, play_1.winner);
- /* !TO TOP OF STAIRS, */
- f = rmdesc_(3);
- /* !AND DESCRIBE. */
- return;
- /* !BAM */
- /* ! */
- /* CEV21-- MIRROR CLOSES. */
- L21000:
- findex_1.mrpshf = FALSE_;
- /* !BUTTON IS OUT. */
- findex_1.mropnf = FALSE_;
- /* !MIRROR IS CLOSED. */
- if (play_1.here == rindex_1.mrant) {
- rspeak_(728);
- }
- /* !DESCRIBE BUTTON. */
- if (play_1.here == rindex_1.inmir || mrhere_(play_1.here) == 1) {
- rspeak_(729);
- }
- return;
- /* CEVAPP, PAGE 9 */
- /* CEV22-- DOOR CLOSES. */
- L22000:
- if (findex_1.wdopnf) {
- rspeak_(730);
- }
- /* !DESCRIBE. */
- findex_1.wdopnf = FALSE_;
- /* !CLOSED. */
- return;
- /* CEV23-- INQUISITOR'S QUESTION */
- L23000:
- if (advs_1.aroom[aindex_1.player - 1] != rindex_1.fdoor) {
- return;
- }
- /* !IF PLAYER LEFT, DIE. */
- rspeak_(769);
- i__1 = findex_1.quesno + 770;
- rspeak_(i__1);
- cevent_1.ctick[cindex_1.cevinq - 1] = 2;
- return;
- /* CEV24-- MASTER FOLLOWS */
- L24000:
- if (advs_1.aroom[aindex_1.amastr - 1] == play_1.here) {
- return;
- }
- /* !NO MOVEMENT, DONE. */
- if (play_1.here != rindex_1.cell && play_1.here != rindex_1.pcell) {
- goto L24100;
- }
- if (findex_1.follwf) {
- rspeak_(811);
- }
- /* !WONT GO TO CELLS. */
- findex_1.follwf = FALSE_;
- return;
- L24100:
- findex_1.follwf = TRUE_;
- /* !FOLLOWING. */
- i = 812;
- /* !ASSUME CATCHES UP. */
- i__1 = xsrch_1.xmax;
- i__2 = xsrch_1.xmin;
- for (j = xsrch_1.xmin; i__2 < 0 ? j >= i__1 : j <= i__1; j += i__2) {
- if (findxt_(j, advs_1.aroom[aindex_1.amastr - 1]) && curxt_1.xroom1
- == play_1.here) {
- i = 813;
- }
- /* L24200: */
- }
- rspeak_(i);
- newsta_(oindex_1.master, 0, play_1.here, 0, 0);
- /* !MOVE MASTER OBJECT. */
- advs_1.aroom[aindex_1.amastr - 1] = play_1.here;
- /* !MOVE MASTER PLAYER. */
- return;
- } /* cevapp_ */
- /* LITINT- LIGHT INTERRUPT PROCESSOR */
- /* DECLARATIONS */
- static void litint_(obj, ctr, cev, ticks, tickln)
- integer obj;
- integer *ctr;
- integer cev;
- const integer *ticks;
- integer tickln;
- {
- /* Parameter adjustments */
- --ticks;
- /* Function Body */
- ++(*ctr);
- /* !ADVANCE STATE CNTR. */
- cevent_1.ctick[cev - 1] = ticks[*ctr];
- /* !RESET INTERRUPT. */
- if (cevent_1.ctick[cev - 1] != 0) {
- goto L100;
- }
- /* !EXPIRED? */
- objcts_1.oflag1[obj - 1] &= ~ (LITEBT + FLAMBT +
- ONBT);
- if (objcts_1.oroom[obj - 1] == play_1.here || objcts_1.oadv[obj - 1] ==
- play_1.winner) {
- rspsub_(293, objcts_1.odesc2[obj - 1]);
- }
- return;
- L100:
- if (objcts_1.oroom[obj - 1] == play_1.here || objcts_1.oadv[obj - 1] ==
- play_1.winner) {
- rspeak_(ticks[*ctr + tickln / 2]);
- }
- return;
- } /* litint_ */
|