Annotation of 43BSDReno/games/dungeon/clockr.F, revision 1.1

1.1     ! root        1: C CEVAPP- CLOCK EVENT APPLICABLES
        !             2: C
        !             3: C COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142
        !             4: C ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED
        !             5: C WRITTEN BY R. M. SUPNIK
        !             6: C
        !             7: C DECLARATIONS
        !             8: C
        !             9:        SUBROUTINE CEVAPP(RI)
        !            10:        IMPLICIT INTEGER (A-Z)
        !            11:        INTEGER CNDTCK(10),LMPTCK(12)
        !            12:        LOGICAL FINDXT,LIT,RMDESC,QOPEN,MOVETO
        !            13:        LOGICAL F,QLEDGE,QVAIR,QHERE,PROB
        !            14: #include "gamestate.h"
        !            15: #include "state.h"
        !            16: #include "rooms.h"
        !            17: #include "rflag.h"
        !            18: #include "rindex.h"
        !            19: #include "objects.h"
        !            20: #include "oflags.h"
        !            21: #include "oindex.h"
        !            22: #include "clock.h"
        !            23: #include "curxt.h"
        !            24: #include "xsrch.h"
        !            25: #include "villians.h"
        !            26: #include "advers.h"
        !            27: #include "flags.h"
        !            28: C
        !            29: C FUNCTIONS AND DATA
        !            30: C
        !            31:        QOPEN(R)=(and(OFLAG2(R),OPENBT)).NE.0
        !            32:        QLEDGE(R)=(R.EQ.LEDG2).OR.(R.EQ.LEDG3).OR.(R.EQ.LEDG4).OR.
        !            33: &              (R.EQ.VLBOT)
        !            34:        QVAIR(R)=(R.EQ.VAIR1).OR.(R.EQ.VAIR2).OR.(R.EQ.VAIR3).OR.
        !            35: &               (R.EQ.VAIR4)
        !            36:        DATA CNDTCK/50,20,10,5,0,156,156,156,157,0/
        !            37:        DATA LMPTCK/50,30,20,10,4,0,154,154,154,154,155,0/
        !            38: C CEVAPP, PAGE 2
        !            39: C
        !            40:        IF(RI.EQ.0) RETURN
        !            41: C                                              !IGNORE DISABLED.
        !            42:        GO TO (1000,2000,3000,4000,5000,6000,7000,8000,9000,10000,
        !            43: &       11000,12000,13000,14000,15000,16000,17000,18000,19000,
        !            44: &       20000,21000,22000,23000,24000),RI
        !            45:        CALL BUG(3,RI)
        !            46: C
        !            47: C CEV1--       CURE CLOCK.  LET PLAYER SLOWLY RECOVER.
        !            48: C
        !            49: 1000   ASTREN(PLAYER)=MIN0(0,ASTREN(PLAYER)+1)
        !            50: C                                              !RECOVER.
        !            51:        IF(ASTREN(PLAYER).GE.0) RETURN
        !            52: C                                              !FULLY RECOVERED?
        !            53:        CTICK(CEVCUR)=30
        !            54: C                                              !NO, WAIT SOME MORE.
        !            55:        RETURN
        !            56: C
        !            57: C CEV2--       MAINT-ROOM WITH LEAK.  RAISE THE WATER LEVEL.
        !            58: C
        !            59: 2000   IF(HERE.EQ.MAINT) CALL RSPEAK(71+(RVMNT/2))
        !            60: C                                              !DESCRIBE.
        !            61:        RVMNT=RVMNT+1
        !            62: C                                              !RAISE WATER LEVEL.
        !            63:        IF(RVMNT.LE.16) RETURN
        !            64: C                                              !IF NOT FULL, EXIT.
        !            65:        CTICK(CEVMNT)=0
        !            66: C                                              !FULL, DISABLE CLOCK.
        !            67:        RFLAG(MAINT)=or(RFLAG(MAINT),RMUNG)
        !            68:        RRAND(MAINT)=80
        !            69: C                                              !SAY IT IS FULL OF WATER.
        !            70:        IF(HERE.EQ.MAINT) CALL JIGSUP(81)
        !            71: C                                              !DROWN HIM IF PRESENT.
        !            72:        RETURN
        !            73: C
        !            74: C CEV3--       LANTERN.  DESCRIBE GROWING DIMNESS.
        !            75: C
        !            76: 3000   CALL LITINT(LAMP,ORLAMP,CEVLNT,LMPTCK,12)
        !            77: C                                              !DO LIGHT INTERRUPT.
        !            78:        RETURN
        !            79: C
        !            80: C CEV4--       MATCH.  OUT IT GOES.
        !            81: C
        !            82: 4000   CALL RSPEAK(153)
        !            83: C                                              !MATCH IS OUT.
        !            84:        OFLAG1(MATCH)=and(OFLAG1(MATCH), not(ONBT))
        !            85:        RETURN
        !            86: C
        !            87: C CEV5--       CANDLE.  DESCRIBE GROWING DIMNESS.
        !            88: C
        !            89: 5000   CALL LITINT(CANDL,ORCAND,CEVCND,CNDTCK,10)
        !            90: C                                              !DO CANDLE INTERRUPT.
        !            91:        RETURN
        !            92: C CEVAPP, PAGE 3
        !            93: C
        !            94: C CEV6--       BALLOON
        !            95: C
        !            96: 6000   CTICK(CEVBAL)=3
        !            97: C                                              !RESCHEDULE INTERRUPT.
        !            98:        F=AVEHIC(WINNER).EQ.BALLO
        !            99: C                                              !SEE IF IN BALLOON.
        !           100:        IF(BLOC.EQ.VLBOT) GO TO 6800
        !           101: C                                              !AT BOTTOM?
        !           102:        IF(QLEDGE(BLOC)) GO TO 6700
        !           103: C                                              !ON LEDGE?
        !           104:        IF(QOPEN(RECEP).AND.(BINFF.NE.0))
        !           105: &              GO TO 6500
        !           106: C
        !           107: C BALLOON IS IN MIDAIR AND IS DEFLATED (OR HAS RECEPTACLE CLOSED).
        !           108: C FALL TO NEXT ROOM.
        !           109: C
        !           110:        IF(BLOC.NE.VAIR1) GO TO 6300
        !           111: C                                              !IN VAIR1?
        !           112:        BLOC=VLBOT
        !           113: C                                              !YES, NOW AT VLBOT.
        !           114:        CALL NEWSTA(BALLO,0,BLOC,0,0)
        !           115:        IF(F) GO TO 6200
        !           116: C                                              !IN BALLOON?
        !           117:        IF(QLEDGE(HERE)) CALL RSPEAK(530)
        !           118: C                                              !ON LEDGE, DESCRIBE.
        !           119:        RETURN
        !           120: C
        !           121: 6200   F=MOVETO(BLOC,WINNER)
        !           122: C                                              !MOVE HIM.
        !           123:        IF(BINFF.EQ.0) GO TO 6250
        !           124: C                                              !IN BALLOON.  INFLATED?
        !           125:        CALL RSPEAK(531)
        !           126: C                                              !YES, LANDED.
        !           127:        F=RMDESC(0)
        !           128: C                                              !DESCRIBE.
        !           129:        RETURN
        !           130: C
        !           131: 6250   CALL NEWSTA(BALLO,532,0,0,0)
        !           132: C                                              !NO, BALLOON & CONTENTS DIE.
        !           133:        CALL NEWSTA(DBALL,0,BLOC,0,0)
        !           134: C                                              !INSERT DEAD BALLOON.
        !           135:        AVEHIC(WINNER)=0
        !           136: C                                              !NOT IN VEHICLE.
        !           137:        CFLAG(CEVBAL)=.FALSE.
        !           138: C                                              !DISABLE INTERRUPTS.
        !           139:        CFLAG(CEVBRN)=.FALSE.
        !           140:        BINFF=0
        !           141:        BTIEF=0
        !           142:        RETURN
        !           143: C
        !           144: 6300   BLOC=BLOC-1
        !           145: C                                              !NOT IN VAIR1, DESCEND.
        !           146:        CALL NEWSTA(BALLO,0,BLOC,0,0)
        !           147:        IF(F) GO TO 6400
        !           148: C                                              !IS HE IN BALLOON?
        !           149:        IF(QLEDGE(HERE)) CALL RSPEAK(533)
        !           150: C                                              !IF ON LEDGE, DESCRIBE.
        !           151:        RETURN
        !           152: C
        !           153: 6400   F=MOVETO(BLOC,WINNER)
        !           154: C                                              !IN BALLOON, MOVE HIM.
        !           155:        CALL RSPEAK(534)
        !           156: C                                              !DESCRIBE.
        !           157:        F=RMDESC(0)
        !           158:        RETURN
        !           159: C
        !           160: C BALLOON IS IN MIDAIR AND IS INFLATED, UP-UP-AND-AWAY
        !           161: C                                              !
        !           162: C
        !           163: 6500   IF(BLOC.NE.VAIR4) GO TO 6600
        !           164: C                                              !AT VAIR4?
        !           165:        CTICK(CEVBRN)=0
        !           166:        CTICK(CEVBAL)=0
        !           167:        BINFF=0
        !           168:        BTIEF=0
        !           169:        BLOC=VLBOT
        !           170: C                                              !FALL TO BOTTOM.
        !           171:        CALL NEWSTA(BALLO,0,0,0,0)
        !           172: C                                              !BALLOON & CONTENTS DIE.
        !           173:        CALL NEWSTA(DBALL,0,BLOC,0,0)
        !           174: C                                              !SUBSTITUTE DEAD BALLOON.
        !           175:        IF(F) GO TO 6550
        !           176: C                                              !WAS HE IN IT?
        !           177:        IF(QLEDGE(HERE)) CALL RSPEAK(535)
        !           178: C                                              !IF HE CAN SEE, DESCRIBE.
        !           179:        RETURN
        !           180: C
        !           181: 6550   CALL JIGSUP(536)
        !           182: C                                              !IN BALLOON AT CRASH, DIE.
        !           183:        RETURN
        !           184: C
        !           185: 6600   BLOC=BLOC+1
        !           186: C                                              !NOT AT VAIR4, GO UP.
        !           187:        CALL NEWSTA(BALLO,0,BLOC,0,0)
        !           188:        IF(F) GO TO 6650
        !           189: C                                              !IN BALLOON?
        !           190:        IF(QLEDGE(HERE)) CALL RSPEAK(537)
        !           191: C                                              !CAN HE SEE IT?
        !           192:        RETURN
        !           193: C
        !           194: 6650   F=MOVETO(BLOC,WINNER)
        !           195: C                                              !MOVE PLAYER.
        !           196:        CALL RSPEAK(538)
        !           197: C                                              !DESCRIBE.
        !           198:        F=RMDESC(0)
        !           199:        RETURN
        !           200: C
        !           201: C ON LEDGE, GOES TO MIDAIR ROOM WHETHER INFLATED OR NOT.
        !           202: C
        !           203: 6700   BLOC=BLOC+(VAIR2-LEDG2)
        !           204: C                                              !MOVE TO MIDAIR.
        !           205:        CALL NEWSTA(BALLO,0,BLOC,0,0)
        !           206:        IF(F) GO TO 6750
        !           207: C                                              !IN BALLOON?
        !           208:        IF(QLEDGE(HERE)) CALL RSPEAK(539)
        !           209: C                                              !NO, STRANDED.
        !           210:        CTICK(CEVVLG)=10
        !           211: C                                              !MATERIALIZE GNOME.
        !           212:        RETURN
        !           213: C
        !           214: 6750   F=MOVETO(BLOC,WINNER)
        !           215: C                                              !MOVE TO NEW ROOM.
        !           216:        CALL RSPEAK(540)
        !           217: C                                              !DESCRIBE.
        !           218:        F=RMDESC(0)
        !           219:        RETURN
        !           220: C
        !           221: C AT BOTTOM, GO UP IF INFLATED, DO NOTHING IF DEFLATED.
        !           222: C
        !           223: 6800   IF((BINFF.EQ.0).OR..NOT.QOPEN(RECEP)) RETURN
        !           224:        BLOC=VAIR1
        !           225: C                                              !INFLATED AND OPEN,
        !           226:        CALL NEWSTA(BALLO,0,BLOC,0,0)
        !           227: C                                              !GO UP TO VAIR1.
        !           228:        IF(F) GO TO 6850
        !           229: C                                              !IN BALLOON?
        !           230:        IF(QLEDGE(HERE)) CALL RSPEAK(541)
        !           231: C                                              !IF CAN SEE, DESCRIBE.
        !           232:        RETURN
        !           233: C
        !           234: 6850   F=MOVETO(BLOC,WINNER)
        !           235: C                                              !MOVE PLAYER.
        !           236:        CALL RSPEAK(542)
        !           237:        F=RMDESC(0)
        !           238:        RETURN
        !           239: C CEVAPP, PAGE 4
        !           240: C
        !           241: C CEV7--       BALLOON BURNUP
        !           242: C
        !           243: 7000   DO 7100 I=1,OLNT
        !           244: C                                              !FIND BURNING OBJECT
        !           245:          IF((RECEP.EQ.OCAN(I)).AND.((and(OFLAG1(I),FLAMBT)).NE.0))
        !           246: &              GO TO 7200
        !           247: 7100   CONTINUE
        !           248:        CALL BUG(4,0)
        !           249: C
        !           250: 7200   CALL NEWSTA(I,0,0,0,0)
        !           251: C                                              !VANISH OBJECT.
        !           252:        BINFF=0
        !           253: C                                              !UNINFLATED.
        !           254:        IF(HERE.EQ.BLOC) CALL RSPSUB(292,ODESC2(I))
        !           255: C                                              !DESCRIBE.
        !           256:        RETURN
        !           257: C
        !           258: C CEV8--       FUSE FUNCTION
        !           259: C
        !           260: 8000   IF(OCAN(FUSE).NE.BRICK) GO TO 8500
        !           261: C                                              !IGNITED BRICK?
        !           262:        BR=OROOM(BRICK)
        !           263: C                                              !GET BRICK ROOM.
        !           264:        BC=OCAN(BRICK)
        !           265: C                                              !GET CONTAINER.
        !           266:        IF((BR.EQ.0).AND.(BC.NE.0)) BR=OROOM(BC)
        !           267:        CALL NEWSTA(FUSE,0,0,0,0)
        !           268: C                                              !KILL FUSE.
        !           269:        CALL NEWSTA(BRICK,0,0,0,0)
        !           270: C                                              !KILL BRICK.
        !           271:        IF((BR.NE.0).AND.(BR.NE.HERE)) GO TO 8100
        !           272: C                                              !BRICK ELSEWHERE?
        !           273: C
        !           274:        RFLAG(HERE)=or(RFLAG(HERE),RMUNG)
        !           275:        RRAND(HERE)=114
        !           276: C                                              !MUNG ROOM.
        !           277:        CALL JIGSUP(150)
        !           278: C                                              !DEAD.
        !           279:        RETURN
        !           280: C
        !           281: 8100   CALL RSPEAK(151)
        !           282: C                                              !BOOM.
        !           283:        MUNGRM=BR
        !           284: C                                              !SAVE ROOM THAT BLEW.
        !           285:        CTICK(CEVSAF)=5
        !           286: C                                              !SET SAFE INTERRUPT.
        !           287:        IF(BR.NE.MSAFE) GO TO 8200
        !           288: C                                              !BLEW SAFE ROOM?
        !           289:        IF(BC.NE.SSLOT) RETURN
        !           290: C                                              !WAS BRICK IN SAFE?
        !           291:        CALL NEWSTA(SSLOT,0,0,0,0)
        !           292: C                                              !KILL SLOT.
        !           293:        OFLAG2(SAFE)=or(OFLAG2(SAFE),OPENBT)
        !           294:        SAFEF=.TRUE.
        !           295: C                                              !INDICATE SAFE BLOWN.
        !           296:        RETURN
        !           297: C
        !           298: 8200   DO 8250 I=1,OLNT
        !           299: C                                              !BLEW WRONG ROOM.
        !           300:          IF(QHERE(I,BR) .AND. ((and(OFLAG1(I),TAKEBT)).NE.0))
        !           301: &              CALL NEWSTA(I,0,0,0,0)
        !           302: 8250   CONTINUE
        !           303:        IF(BR.NE.LROOM) RETURN
        !           304: C                                              !BLEW LIVING ROOM?
        !           305:        DO 8300 I=1,OLNT
        !           306:          IF(OCAN(I).EQ.TCASE) CALL NEWSTA(I,0,0,0,0)
        !           307: C                                              !KILL TROPHY CASE.
        !           308: 8300   CONTINUE
        !           309:        RETURN
        !           310: C
        !           311: 8500   IF(QHERE(FUSE,HERE).OR.(OADV(FUSE).EQ.WINNER))
        !           312: &              CALL RSPEAK(152)
        !           313:        CALL NEWSTA(FUSE,0,0,0,0)
        !           314: C                                              !KILL FUSE.
        !           315:        RETURN
        !           316: C CEVAPP, PAGE 5
        !           317: C
        !           318: C CEV9--       LEDGE MUNGE.
        !           319: C
        !           320: 9000   RFLAG(LEDG4)=or(RFLAG(LEDG4),RMUNG)
        !           321:        RRAND(LEDG4)=109
        !           322:        IF(HERE.EQ.LEDG4) GO TO 9100
        !           323: C                                              !WAS HE THERE?
        !           324:        CALL RSPEAK(110)
        !           325: C                                              !NO, NARROW ESCAPE.
        !           326:        RETURN
        !           327: C
        !           328: 9100   IF(AVEHIC(WINNER).NE.0) GO TO 9200
        !           329: C                                              !IN VEHICLE?
        !           330:        CALL JIGSUP(111)
        !           331: C                                              !NO, DEAD.
        !           332:        RETURN
        !           333: C
        !           334: 9200   IF(BTIEF.NE.0) GO TO 9300
        !           335: C                                              !TIED TO LEDGE?
        !           336:        CALL RSPEAK(112)
        !           337: C                                              !NO, NO PLACE TO LAND.
        !           338:        RETURN
        !           339: C
        !           340: 9300   BLOC=VLBOT
        !           341: C                                              !YES, CRASH BALLOON.
        !           342:        CALL NEWSTA(BALLO,0,0,0,0)
        !           343: C                                              !BALLOON & CONTENTS DIE.
        !           344:        CALL NEWSTA(DBALL,0,BLOC,0,0)
        !           345: C                                              !INSERT DEAD BALLOON.
        !           346:        BTIEF=0
        !           347:        BINFF=0
        !           348:        CFLAG(CEVBAL)=.FALSE.
        !           349:        CFLAG(CEVBRN)=.FALSE.
        !           350:        CALL JIGSUP(113)
        !           351: C                                              !DEAD
        !           352:        RETURN
        !           353: C
        !           354: C CEV10--      SAFE MUNG.
        !           355: C
        !           356: 10000  RFLAG(MUNGRM)=or(RFLAG(MUNGRM),RMUNG)
        !           357:        RRAND(MUNGRM)=114
        !           358:        IF(HERE.EQ.MUNGRM) GO TO 10100
        !           359: C                                              !IS HE PRESENT?
        !           360:        CALL RSPEAK(115)
        !           361: C                                              !LET HIM KNOW.
        !           362:        IF(MUNGRM.EQ.MSAFE) CTICK(CEVLED)=8
        !           363: C                                              !START LEDGE CLOCK.
        !           364:        RETURN
        !           365: C
        !           366: 10100  I=116
        !           367: C                                              !HE'S DEAD,
        !           368:        IF((and(RFLAG(HERE),RHOUSE)).NE.0) I=117
        !           369:        CALL JIGSUP(I)
        !           370: C                                              !LET HIM KNOW.
        !           371:        RETURN
        !           372: C CEVAPP, PAGE 6
        !           373: C
        !           374: C CEV11--      VOLCANO GNOME
        !           375: C
        !           376: 11000  IF(QLEDGE(HERE)) GO TO 11100
        !           377: C                                              !IS HE ON LEDGE?
        !           378:        CTICK(CEVVLG)=1
        !           379: C                                              !NO, WAIT A WHILE.
        !           380:        RETURN
        !           381: C
        !           382: 11100  CALL NEWSTA(GNOME,118,HERE,0,0)
        !           383: C                                              !YES, MATERIALIZE GNOME.
        !           384:        RETURN
        !           385: C
        !           386: C CEV12--      VOLCANO GNOME DISAPPEARS
        !           387: C
        !           388: 12000  CALL NEWSTA(GNOME,149,0,0,0)
        !           389: C                                              !DISAPPEAR THE GNOME.
        !           390:        RETURN
        !           391: C
        !           392: C CEV13--      BUCKET.
        !           393: C
        !           394: 13000  IF(OCAN(WATER).EQ.BUCKE)
        !           395: &              CALL NEWSTA(WATER,0,0,0,0)
        !           396:        RETURN
        !           397: C
        !           398: C CEV14--      SPHERE.  IF EXPIRES, HE'S TRAPPED.
        !           399: C
        !           400: 14000  RFLAG(CAGER)=or(RFLAG(CAGER),RMUNG)
        !           401:        RRAND(CAGER)=147
        !           402:        CALL JIGSUP(148)
        !           403: C                                              !MUNG PLAYER.
        !           404:        RETURN
        !           405: C
        !           406: C CEV15--      END GAME HERALD.
        !           407: C
        !           408: 15000  ENDGMF=.TRUE.
        !           409: C                                              !WE'RE IN ENDGAME.
        !           410:        CALL RSPEAK(119)
        !           411: C                                              !INFORM OF ENDGAME.
        !           412:        RETURN
        !           413: C CEVAPP, PAGE 7
        !           414: C
        !           415: C CEV16--      FOREST MURMURS
        !           416: C
        !           417: 16000  CFLAG(CEVFOR)=(HERE.EQ.MTREE).OR.
        !           418: &              ((HERE.GE.FORE1).AND.(HERE.LT.CLEAR))
        !           419:        IF(CFLAG(CEVFOR).AND.PROB(10,10)) CALL RSPEAK(635)
        !           420:        RETURN
        !           421: C
        !           422: C CEV17--      SCOL ALARM
        !           423: C
        !           424: 17000  IF(HERE.EQ.BKTWI) CFLAG(CEVZGI)=.TRUE.
        !           425: C                                              !IF IN TWI, GNOME.
        !           426:        IF(HERE.EQ.BKVAU) CALL JIGSUP(636)
        !           427: C                                              !IF IN VAU, DEAD.
        !           428:        RETURN
        !           429: C
        !           430: C CEV18--      ENTER GNOME OF ZURICH
        !           431: C
        !           432: 18000  CFLAG(CEVZGO)=.TRUE.
        !           433: C                                              !EXITS, TOO.
        !           434:        CALL NEWSTA(ZGNOM,0,BKTWI,0,0)
        !           435: C                                              !PLACE IN TWI.
        !           436:        IF(HERE.EQ.BKTWI) CALL RSPEAK(637)
        !           437: C                                              !ANNOUNCE.
        !           438:        RETURN
        !           439: C
        !           440: C CEV19--      EXIT GNOME
        !           441: C
        !           442: 19000  CALL NEWSTA(ZGNOM,0,0,0,0)
        !           443: C                                              !VANISH.
        !           444:        IF(HERE.EQ.BKTWI) CALL RSPEAK(638)
        !           445: C                                              !ANNOUNCE.
        !           446:        RETURN
        !           447: C CEVAPP, PAGE 8
        !           448: C
        !           449: C CEV20--      START OF ENDGAME
        !           450: C
        !           451: 20000  IF(SPELLF) GO TO 20200
        !           452: C                                              !SPELL HIS WAY IN?
        !           453:        IF(HERE.NE.CRYPT) RETURN
        !           454: C                                              !NO, STILL IN TOMB?
        !           455:        IF(.NOT.LIT(HERE)) GO TO 20100
        !           456: C                                              !LIGHTS OFF?
        !           457:        CTICK(CEVSTE)=3
        !           458: C                                              !RESCHEDULE.
        !           459:        RETURN
        !           460: C
        !           461: 20100  CALL RSPEAK(727)
        !           462: C                                              !ANNOUNCE.
        !           463: 20200  DO 20300 I=1,OLNT
        !           464: C                                              !STRIP HIM OF OBJS.
        !           465:          CALL NEWSTA(I,0,OROOM(I),OCAN(I),0)
        !           466: 20300  CONTINUE
        !           467:        CALL NEWSTA(LAMP,0,0,0,PLAYER)
        !           468: C                                              !GIVE HIM LAMP.
        !           469:        CALL NEWSTA(SWORD,0,0,0,PLAYER)
        !           470: C                                              !GIVE HIM SWORD.
        !           471: C
        !           472:        OFLAG1(LAMP)=and((or(OFLAG1(LAMP),LITEBT)), not(ONBT))
        !           473:        OFLAG2(LAMP)=or(OFLAG2(LAMP),TCHBT)
        !           474:        CFLAG(CEVLNT)=.FALSE.
        !           475: C                                              !LAMP IS GOOD AS NEW.
        !           476:        CTICK(CEVLNT)=350
        !           477:        ORLAMP=0
        !           478:        OFLAG2(SWORD)=or(OFLAG2(SWORD),TCHBT)
        !           479:        SWDACT=.TRUE.
        !           480:        SWDSTA=0
        !           481: C
        !           482:        THFACT=.FALSE.
        !           483: C                                              !THIEF GONE.
        !           484:        ENDGMF=.TRUE.
        !           485: C                                              !ENDGAME RUNNING.
        !           486:        CFLAG(CEVMAT)=.FALSE.
        !           487: C                                              !MATCHES GONE,
        !           488:        CFLAG(CEVCND)=.FALSE.
        !           489: C                                              !CANDLES GONE.
        !           490: C
        !           491:        CALL SCRUPD(RVAL(CRYPT))
        !           492: C                                              !SCORE CRYPT,
        !           493:        RVAL(CRYPT)=0
        !           494: C                                              !BUT ONLY ONCE.
        !           495:        F=MOVETO(TSTRS,WINNER)
        !           496: C                                              !TO TOP OF STAIRS,
        !           497:        F=RMDESC(3)
        !           498: C                                              !AND DESCRIBE.
        !           499:        RETURN
        !           500: C                                              !BAM
        !           501: C                                              !
        !           502: C
        !           503: C CEV21--      MIRROR CLOSES.
        !           504: C
        !           505: 21000  MRPSHF=.FALSE.
        !           506: C                                              !BUTTON IS OUT.
        !           507:        MROPNF=.FALSE.
        !           508: C                                              !MIRROR IS CLOSED.
        !           509:        IF(HERE.EQ.MRANT) CALL RSPEAK(728)
        !           510: C                                              !DESCRIBE BUTTON.
        !           511:        IF((HERE.EQ.INMIR).OR.(MRHERE(HERE).EQ.1))
        !           512: &              CALL RSPEAK(729)
        !           513:        RETURN
        !           514: C CEVAPP, PAGE 9
        !           515: C
        !           516: C CEV22--      DOOR CLOSES.
        !           517: C
        !           518: 22000  IF(WDOPNF) CALL RSPEAK(730)
        !           519: C                                              !DESCRIBE.
        !           520:        WDOPNF=.FALSE.
        !           521: C                                              !CLOSED.
        !           522:        RETURN
        !           523: C
        !           524: C CEV23--      INQUISITOR'S QUESTION
        !           525: C
        !           526: 23000  IF(AROOM(PLAYER).NE.FDOOR) RETURN
        !           527: C                                              !IF PLAYER LEFT, DIE.
        !           528:        CALL RSPEAK(769)
        !           529:        CALL RSPEAK(770+QUESNO)
        !           530:        CTICK(CEVINQ)=2
        !           531:        RETURN
        !           532: C
        !           533: C CEV24--      MASTER FOLLOWS
        !           534: C
        !           535: 24000  IF(AROOM(AMASTR).EQ.HERE) RETURN
        !           536: C                                              !NO MOVEMENT, DONE.
        !           537:        IF((HERE.NE.CELL).AND.(HERE.NE.PCELL)) GO TO 24100
        !           538:        IF(FOLLWF) CALL RSPEAK(811)
        !           539: C                                              !WONT GO TO CELLS.
        !           540:        FOLLWF=.FALSE.
        !           541:        RETURN
        !           542: C
        !           543: 24100  FOLLWF=.TRUE.
        !           544: C                                              !FOLLOWING.
        !           545:        I=812
        !           546: C                                              !ASSUME CATCHES UP.
        !           547:        DO 24200 J=XMIN,XMAX,XMIN
        !           548:          IF(FINDXT(J,AROOM(AMASTR)).AND.(XROOM1.EQ.HERE))
        !           549: &              I=813
        !           550: 24200  CONTINUE
        !           551:        CALL RSPEAK(I)
        !           552:        CALL NEWSTA(MASTER,0,HERE,0,0)
        !           553: C                                              !MOVE MASTER OBJECT.
        !           554:        AROOM(AMASTR)=HERE
        !           555: C                                              !MOVE MASTER PLAYER.
        !           556:        RETURN
        !           557: C
        !           558:        END
        !           559: C LITINT-      LIGHT INTERRUPT PROCESSOR
        !           560: C
        !           561: C DECLARATIONS
        !           562: C
        !           563:        SUBROUTINE LITINT(OBJ,CTR,CEV,TICKS,TICKLN)
        !           564:        IMPLICIT INTEGER (A-Z)
        !           565:        INTEGER TICKS(TICKLN)
        !           566: #include "gamestate.h"
        !           567: #include "objects.h"
        !           568: #include "oflags.h"
        !           569: #include "clock.h"
        !           570: C
        !           571:        CTR=CTR+1
        !           572: C                                              !ADVANCE STATE CNTR.
        !           573:        CTICK(CEV)=TICKS(CTR)
        !           574: C                                              !RESET INTERRUPT.
        !           575:        IF(CTICK(CEV).NE.0) GO TO 100
        !           576: C                                              !EXPIRED?
        !           577:        OFLAG1(OBJ)=and(OFLAG1(OBJ), not(LITEBT+FLAMBT+ONBT))
        !           578:        IF((OROOM(OBJ).EQ.HERE).OR.(OADV(OBJ).EQ.WINNER))
        !           579: &              CALL RSPSUB(293,ODESC2(OBJ))
        !           580:        RETURN
        !           581: C
        !           582: 100    IF((OROOM(OBJ).EQ.HERE).OR.(OADV(OBJ).EQ.WINNER))
        !           583: &              CALL RSPEAK(TICKS(CTR+(TICKLN/2)))
        !           584:        RETURN
        !           585: C
        !           586:        END

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.