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

1.1     ! root        1: C RAPPL1- SPECIAL PURPOSE ROOM ROUTINES, PART 1
        !             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:        LOGICAL FUNCTION RAPPL1(RI)
        !            10:        IMPLICIT INTEGER (A-Z)
        !            11:        LOGICAL QOPEN,QON,QHERE,PROB,F
        !            12:        LOGICAL MOVETO,LIT
        !            13: #include "parser.h"
        !            14: #include "gamestate.h"
        !            15: #include "state.h"
        !            16: C
        !            17: C SCREEN OF LIGHT
        !            18: C
        !            19:        COMMON /SCREEN/ FROMDR,SCOLRM,SCOLAC
        !            20:        COMMON /SCREEN/ SCOLDR(8),SCOLWL(12)
        !            21: C
        !            22: C MISCELLANEOUS VARIABLES
        !            23: C
        !            24:        COMMON /BATS/ BATDRP(9)
        !            25: #include "rooms.h"
        !            26: #include "rflag.h"
        !            27: #include "rindex.h"
        !            28: #include "objects.h"
        !            29: #include "oflags.h"
        !            30: #include "oindex.h"
        !            31: #include "clock.h"
        !            32: #include "villians.h"
        !            33: #include "advers.h"
        !            34: #include "verbs.h"
        !            35: #include "flags.h"
        !            36: C
        !            37: C FUNCTIONS AND DATA
        !            38: C
        !            39:        QOPEN(R)=and(OFLAG2(R),OPENBT).NE.0
        !            40:        QON(R)=and(OFLAG1(R),ONBT).NE.0
        !            41: C RAPPL1, PAGE 2
        !            42: C
        !            43:        RAPPL1=.TRUE.
        !            44: C                                              !USUALLY IGNORED.
        !            45:        IF(RI.EQ.0) RETURN
        !            46: C                                              !RETURN IF NAUGHT.
        !            47: C
        !            48: C                                              !SET TO FALSE FOR
        !            49: C
        !            50: C                                              !NEW DESC NEEDED.
        !            51:        GO TO (1000,2000,3000,4000,5000,6000,7000,8000,9000,10000,
        !            52: &       11000,12000,13000,14000,15000,16000,17000,18000,19000,20000,
        !            53: &       21000,22000,23000,24000,25000,26000,27000,28000,29000,30000,
        !            54: &       31000,32000,33000,34000,35000,36000,37000),RI
        !            55:        CALL BUG(1,RI)
        !            56: C
        !            57: C R1-- EAST OF HOUSE.  DESCRIPTION DEPENDS ON STATE OF WINDOW
        !            58: C
        !            59: 1000   IF(PRSA.NE.LOOKW) RETURN
        !            60: C                                              !LOOK?
        !            61:        I=13
        !            62: C                                              !ASSUME CLOSED.
        !            63:        IF(QOPEN(WINDO)) I=12
        !            64: C                                              !IF OPEN, AJAR.
        !            65:        CALL RSPSUB(11,I)
        !            66: C                                              !DESCRIBE.
        !            67:        RETURN
        !            68: C
        !            69: C R2-- KITCHEN.  SAME VIEW FROM INSIDE.
        !            70: C
        !            71: 2000   IF(PRSA.NE.LOOKW) RETURN
        !            72: C                                              !LOOK?
        !            73:        I=13
        !            74: C                                              !ASSUME CLOSED.
        !            75:        IF(QOPEN(WINDO)) I=12
        !            76: C                                              !IF OPEN, AJAR.
        !            77:        CALL RSPSUB(14,I)
        !            78: C                                              !DESCRIBE.
        !            79:        RETURN
        !            80: C
        !            81: C R3-- LIVING ROOM.  DESCRIPTION DEPENDS ON MAGICF (STATE OF
        !            82: C      DOOR TO CYCLOPS ROOM), RUG (MOVED OR NOT), DOOR (OPEN OR CLOSED)
        !            83: C
        !            84: 3000   IF(PRSA.NE.LOOKW) GO TO 3500
        !            85: C                                              !LOOK?
        !            86:        I=15
        !            87: C                                              !ASSUME NO HOLE.
        !            88:        IF(MAGICF) I=16
        !            89: C                                              !IF MAGICF, CYCLOPS HOLE.
        !            90:        CALL RSPEAK(I)
        !            91: C                                              !DESCRIBE.
        !            92:        I=17+ORRUG
        !            93: C                                              !ASSUME INITIAL STATE.
        !            94:        IF(QOPEN(DOOR)) I=I+2
        !            95: C                                              !DOOR OPEN?
        !            96:        CALL RSPEAK(I)
        !            97: C                                              !DESCRIBE.
        !            98:        RETURN
        !            99: C
        !           100: C      NOT A LOOK WORD.  REEVALUATE TROPHY CASE.
        !           101: C
        !           102: 3500   IF((PRSA.NE.TAKEW).AND.((PRSA.NE.PUTW).OR.(PRSI.NE.TCASE)))
        !           103: &              RETURN
        !           104:        ASCORE(WINNER)=RWSCOR
        !           105: C                                              !SCORE TROPHY CASE.
        !           106:        DO 3600 I=1,OLNT
        !           107: C                                              !RETAIN RAW SCORE AS WELL.
        !           108:          J=I
        !           109: C                                              !FIND OUT IF IN CASE.
        !           110: 3550     J=OCAN(J)
        !           111: C                                              !TRACE OWNERSHIP.
        !           112:          IF(J.EQ.0) GO TO 3600
        !           113:          IF(J.NE.TCASE) GO TO 3550
        !           114: C                                              !DO ALL LEVELS.
        !           115:          ASCORE(WINNER)=ASCORE(WINNER)+OTVAL(I)
        !           116: 3600   CONTINUE
        !           117:        CALL SCRUPD(0)
        !           118: C                                              !SEE IF ENDGAME TRIG.
        !           119:        RETURN
        !           120: C RAPPL1, PAGE 3
        !           121: C
        !           122: C R4-- CELLAR.  SHUT DOOR AND BAR IT IF HE JUST WALKED IN.
        !           123: C
        !           124: 4000   IF(PRSA.NE.LOOKW) GO TO 4500
        !           125: C                                              !LOOK?
        !           126:        CALL RSPEAK(21)
        !           127: C                                              !DESCRIBE CELLAR.
        !           128:        RETURN
        !           129: C
        !           130: 4500   IF(PRSA.NE.WALKIW) RETURN
        !           131: C                                              !WALKIN?
        !           132:        IF(and(OFLAG2(DOOR),(OPENBT+TCHBT)).NE.OPENBT) RETURN
        !           133:        OFLAG2(DOOR)=and( or(OFLAG2(DOOR),TCHBT), not(OPENBT))
        !           134:        CALL RSPEAK(22)
        !           135: C                                              !SLAM AND BOLT DOOR.
        !           136:        RETURN
        !           137: C
        !           138: C R5-- MAZE11.  DESCRIBE STATE OF GRATING.
        !           139: C
        !           140: 5000   IF(PRSA.NE.LOOKW) RETURN
        !           141: C                                              !LOOK?
        !           142:        CALL RSPEAK(23)
        !           143: C                                              !DESCRIBE.
        !           144:        I=24
        !           145: C                                              !ASSUME LOCKED.
        !           146:        IF(GRUNLF) I=26
        !           147: C                                              !UNLOCKED?
        !           148:        IF(QOPEN(GRATE)) I=25
        !           149: C                                              !OPEN?
        !           150:        CALL RSPEAK(I)
        !           151: C                                              !DESCRIBE GRATE.
        !           152:        RETURN
        !           153: C
        !           154: C R6-- CLEARING.  DESCRIBE CLEARING, MOVE LEAVES.
        !           155: C
        !           156: 6000   IF(PRSA.NE.LOOKW) GO TO 6500
        !           157: C                                              !LOOK?
        !           158:        CALL RSPEAK(27)
        !           159: C                                              !DESCRIBE.
        !           160:        IF(RVCLR.EQ.0) RETURN
        !           161: C                                              !LEAVES MOVED?
        !           162:        I=28
        !           163: C                                              !YES, ASSUME GRATE CLOSED.
        !           164:        IF(QOPEN(GRATE)) I=29
        !           165: C                                              !OPEN?
        !           166:        CALL RSPEAK(I)
        !           167: C                                              !DESCRIBE GRATE.
        !           168:        RETURN
        !           169: C
        !           170: 6500   IF((RVCLR.NE.0).OR.(QHERE(LEAVE,CLEAR).AND.
        !           171: &              ((PRSA.NE.MOVEW).OR.(PRSO.NE.LEAVE)))) RETURN
        !           172:        CALL RSPEAK(30)
        !           173: C                                              !MOVE LEAVES, REVEAL GRATE.
        !           174:        RVCLR=1
        !           175: C                                              !INDICATE LEAVES MOVED.
        !           176:        RETURN
        !           177: C RAPPL1, PAGE 4
        !           178: C
        !           179: C R7-- RESERVOIR SOUTH.  DESCRIPTION DEPENDS ON LOW TIDE FLAG.
        !           180: C
        !           181: 7000   IF(PRSA.NE.LOOKW) RETURN
        !           182: C                                              !LOOK?
        !           183:        I=31
        !           184: C                                              !ASSUME FULL.
        !           185:        IF(LWTIDF) I=32
        !           186: C                                              !IF LOW TIDE, EMPTY.
        !           187:        CALL RSPEAK(I)
        !           188: C                                              !DESCRIBE.
        !           189:        CALL RSPEAK(33)
        !           190: C                                              !DESCRIBE EXITS.
        !           191:        RETURN
        !           192: C
        !           193: C R8-- RESERVOIR.  STATE DEPENDS ON LOW TIDE FLAG.
        !           194: C
        !           195: 8000   IF(PRSA.NE.LOOKW) RETURN
        !           196: C                                              !LOOK?
        !           197:        I=34
        !           198: C                                              !ASSUME FULL.
        !           199:        IF(LWTIDF) I=35
        !           200: C                                              !IF LOW TIDE, EMTPY.
        !           201:        CALL RSPEAK(I)
        !           202: C                                              !DESCRIBE.
        !           203:        RETURN
        !           204: C
        !           205: C R9-- RESERVOIR NORTH.  ALSO DEPENDS ON LOW TIDE FLAG.
        !           206: C
        !           207: 9000   IF(PRSA.NE.LOOKW) RETURN
        !           208: C                                              !LOOK?
        !           209:        I=36
        !           210: C                                              !YOU GET THE IDEA.
        !           211:        IF(LWTIDF) I=37
        !           212:        CALL RSPEAK(I)
        !           213:        CALL RSPEAK(38)
        !           214:        RETURN
        !           215: C
        !           216: C R10--        GLACIER ROOM.  STATE DEPENDS ON MELTED, VANISHED FLAGS.
        !           217: C
        !           218: 10000  IF(PRSA.NE.LOOKW) RETURN
        !           219: C                                              !LOOK?
        !           220:        CALL RSPEAK(39)
        !           221: C                                              !BASIC DESCRIPTION.
        !           222:        I=0
        !           223: C                                              !ASSUME NO CHANGES.
        !           224:        IF(GLACMF) I=40
        !           225: C                                              !PARTIAL MELT?
        !           226:        IF(GLACRF) I=41
        !           227: C                                              !COMPLETE MELT?
        !           228:        CALL RSPEAK(I)
        !           229: C                                              !DESCRIBE.
        !           230:        RETURN
        !           231: C
        !           232: C R11--        FOREST ROOM
        !           233: C
        !           234: 11000  IF(PRSA.EQ.WALKIW) CFLAG(CEVFOR)=.TRUE.
        !           235: C                                              !IF WALK IN, BIRDIE.
        !           236:        RETURN
        !           237: C
        !           238: C R12--        MIRROR ROOM.  STATE DEPENDS ON MIRROR INTACT.
        !           239: C
        !           240: 12000  IF(PRSA.NE.LOOKW) RETURN
        !           241: C                                              !LOOK?
        !           242:        CALL RSPEAK(42)
        !           243: C                                              !DESCRIBE.
        !           244:        IF(MIRRMF) CALL RSPEAK(43)
        !           245: C                                              !IF BROKEN, NASTY REMARK.
        !           246:        RETURN
        !           247: C RAPPL1, PAGE 5
        !           248: C
        !           249: C R13--        CAVE2 ROOM.  BLOW OUT CANDLES WITH 50% PROBABILITY.
        !           250: C
        !           251: 13000  IF(PRSA.NE.WALKIW) RETURN
        !           252: C                                              !WALKIN?
        !           253:        IF(PROB(50,50).OR.(OADV(CANDL).NE.WINNER).OR.
        !           254: &              .NOT.QON(CANDL)) RETURN
        !           255:        OFLAG1(CANDL)=and(OFLAG1(CANDL), not(ONBT))
        !           256:        CALL RSPEAK(47)
        !           257: C                                              !TELL OF WINDS.
        !           258:        CFLAG(CEVCND)=.FALSE.
        !           259: C                                              !HALT CANDLE COUNTDOWN.
        !           260:        RETURN
        !           261: C
        !           262: C R14--        BOOM ROOM.  BLOW HIM UP IF CARRYING FLAMING OBJECT.
        !           263: C
        !           264: 14000  J=ODESC2(CANDL)
        !           265: C                                              !ASSUME CANDLE.
        !           266:        IF((OADV(CANDL).EQ.WINNER).AND.QON(CANDL)) GO TO 14100
        !           267:        J=ODESC2(TORCH)
        !           268: C                                              !ASSUME TORCH.
        !           269:        IF((OADV(TORCH).EQ.WINNER).AND.QON(TORCH)) GO TO 14100
        !           270:        J=ODESC2(MATCH)
        !           271:        IF((OADV(MATCH).EQ.WINNER).AND.QON(MATCH)) GO TO 14100
        !           272:        RETURN
        !           273: C                                              !SAFE
        !           274: C
        !           275: 14100  IF(PRSA.NE.TRNONW) GO TO 14200
        !           276: C                                              !TURN ON?
        !           277:        CALL RSPSUB(294,J)
        !           278: C                                              !BOOM
        !           279: C                                              !
        !           280:        CALL JIGSUP(44)
        !           281:        RETURN
        !           282: C
        !           283: 14200  IF(PRSA.NE.WALKIW) RETURN
        !           284: C                                              !WALKIN?
        !           285:        CALL RSPSUB(295,J)
        !           286: C                                              !BOOM
        !           287: C                                              !
        !           288:        CALL JIGSUP(44)
        !           289:        RETURN
        !           290: C
        !           291: C R15--        NO-OBJS.  SEE IF EMPTY HANDED, SCORE LIGHT SHAFT.
        !           292: C
        !           293: 15000  EMPTHF=.TRUE.
        !           294: C                                              !ASSUME TRUE.
        !           295:        DO 15100 I=1,OLNT
        !           296: C                                              !SEE IF CARRYING.
        !           297:          IF(OADV(I).EQ.WINNER) EMPTHF=.FALSE.
        !           298: 15100  CONTINUE
        !           299: C
        !           300:        IF((HERE.NE.BSHAF).OR.(.NOT.LIT(HERE))) RETURN
        !           301:        CALL SCRUPD(LTSHFT)
        !           302: C                                              !SCORE LIGHT SHAFT.
        !           303:        LTSHFT=0
        !           304: C                                              !NEVER AGAIN.
        !           305:        RETURN
        !           306: C RAPPL1, PAGE 6
        !           307: C
        !           308: C R16--        MACHINE ROOM.  DESCRIBE MACHINE.
        !           309: C
        !           310: 16000  IF(PRSA.NE.LOOKW) RETURN
        !           311: C                                              !LOOK?
        !           312:        I=46
        !           313: C                                              !ASSUME LID CLOSED.
        !           314:        IF(QOPEN(MACHI)) I=12
        !           315: C                                              !IF OPEN, OPEN.
        !           316:        CALL RSPSUB(45,I)
        !           317: C                                              !DESCRIBE.
        !           318:        RETURN
        !           319: C
        !           320: C R17--        BAT ROOM.  UNLESS CARRYING GARLIC, FLY AWAY WITH ME...
        !           321: C
        !           322: 17000  IF(PRSA.NE.LOOKW) GO TO 17500
        !           323: C                                              !LOOK?
        !           324:        CALL RSPEAK(48)
        !           325: C                                              !DESCRIBE ROOM.
        !           326:        IF(OADV(GARLI).EQ.WINNER) CALL RSPEAK(49)
        !           327: C                                              !BAT HOLDS NOSE.
        !           328:        RETURN
        !           329: C
        !           330: 17500  IF((PRSA.NE.WALKIW).OR.(OADV(GARLI).EQ.WINNER)) RETURN
        !           331:        CALL RSPEAK(50)
        !           332: C                                              !TIME TO FLY, JACK.
        !           333:        F=MOVETO(BATDRP(RND(9)+1),WINNER)
        !           334: C                                              !SELECT RANDOM DEST.
        !           335:        RAPPL1=.FALSE.
        !           336: C                                              !INDICATE NEW DESC NEEDED.
        !           337:        RETURN
        !           338: C
        !           339: C R18--        DOME ROOM.  STATE DEPENDS ON WHETHER ROPE TIED TO RAILING.
        !           340: C
        !           341: 18000  IF(PRSA.NE.LOOKW) GO TO 18500
        !           342: C                                              !LOOK?
        !           343:        CALL RSPEAK(51)
        !           344: C                                              !DESCRIBE.
        !           345:        IF(DOMEF) CALL RSPEAK(52)
        !           346: C                                              !IF ROPE, DESCRIBE.
        !           347:        RETURN
        !           348: C
        !           349: 18500  IF(PRSA.EQ.LEAPW) CALL JIGSUP(53)
        !           350: C                                              !DID HE JUMP???
        !           351:        RETURN
        !           352: C
        !           353: C R19--        TORCH ROOM.  ALSO DEPENDS ON WHETHER ROPE TIED TO RAILING.
        !           354: C
        !           355: 19000  IF(PRSA.NE.LOOKW) RETURN
        !           356: C                                              !LOOK?
        !           357:        CALL RSPEAK(54)
        !           358: C                                              !DESCRIBE.
        !           359:        IF(DOMEF) CALL RSPEAK(55)
        !           360: C                                              !IF ROPE, DESCRIBE.
        !           361:        RETURN
        !           362: C
        !           363: C R20--        CAROUSEL ROOM.  SPIN HIM OR KILL HIM.
        !           364: C
        !           365: 20000  IF(PRSA.NE.LOOKW) GO TO 20500
        !           366: C                                              !LOOK?
        !           367:        CALL RSPEAK(56)
        !           368: C                                              !DESCRIBE.
        !           369:        IF(.NOT.CAROFF) CALL RSPEAK(57)
        !           370: C                                              !IF NOT FLIPPED, SPIN.
        !           371:        RETURN
        !           372: C
        !           373: 20500  IF((PRSA.EQ.WALKIW).AND.CAROZF) CALL JIGSUP(58)
        !           374: C                                              !WALKED IN.
        !           375:        RETURN
        !           376: C RAPPL1, PAGE 7
        !           377: C
        !           378: C R21--        LLD ROOM.  HANDLE EXORCISE, DESCRIPTIONS.
        !           379: C
        !           380: 21000  IF(PRSA.NE.LOOKW) GO TO 21500
        !           381: C                                              !LOOK?
        !           382:        CALL RSPEAK(59)
        !           383: C                                              !DESCRIBE.
        !           384:        IF(.NOT.LLDF) CALL RSPEAK(60)
        !           385: C                                              !IF NOT VANISHED, GHOSTS.
        !           386:        RETURN
        !           387: C
        !           388: 21500  IF(PRSA.NE.EXORCW) RETURN
        !           389: C                                              !EXORCISE?
        !           390:        IF((OADV(BELL).EQ.WINNER).AND.(OADV(BOOK).EQ.WINNER).AND.
        !           391: &              (OADV(CANDL).EQ.WINNER).AND.QON(CANDL)) GO TO 21600
        !           392:        CALL RSPEAK(62)
        !           393: C                                              !NOT EQUIPPED.
        !           394:        RETURN
        !           395: C
        !           396: 21600  IF(QHERE(GHOST,HERE)) GO TO 21700
        !           397: C                                              !GHOST HERE?
        !           398:        CALL JIGSUP(61)
        !           399: C                                              !NOPE, EXORCISE YOU.
        !           400:        RETURN
        !           401: C
        !           402: 21700  CALL NEWSTA(GHOST,63,0,0,0)
        !           403: C                                              !VANISH GHOST.
        !           404:        LLDF=.TRUE.
        !           405: C                                              !OPEN GATE.
        !           406:        RETURN
        !           407: C
        !           408: C R22--        LLD2-ROOM.  IS HIS HEAD ON A POLE?
        !           409: C
        !           410: 22000  IF(PRSA.NE.LOOKW) RETURN
        !           411: C                                              !LOOK?
        !           412:        CALL RSPEAK(64)
        !           413: C                                              !DESCRIBE.
        !           414:        IF(ONPOLF) CALL RSPEAK(65)
        !           415: C                                              !ON POLE?
        !           416:        RETURN
        !           417: C
        !           418: C R23--        DAM ROOM.  DESCRIBE RESERVOIR, PANEL.
        !           419: C
        !           420: 23000  IF(PRSA.NE.LOOKW) RETURN
        !           421: C                                              !LOOK?
        !           422:        CALL RSPEAK(66)
        !           423: C                                              !DESCRIBE.
        !           424:        I=67
        !           425:        IF(LWTIDF) I=68
        !           426:        CALL RSPEAK(I)
        !           427: C                                              !DESCRIBE RESERVOIR.
        !           428:        CALL RSPEAK(69)
        !           429: C                                              !DESCRIBE PANEL.
        !           430:        IF(GATEF) CALL RSPEAK(70)
        !           431: C                                              !BUBBLE IS GLOWING.
        !           432:        RETURN
        !           433: C
        !           434: C R24--        TREE ROOM
        !           435: C
        !           436: 24000  IF(PRSA.NE.LOOKW) RETURN
        !           437: C                                              !LOOK?
        !           438:        CALL RSPEAK(660)
        !           439: C                                              !DESCRIBE.
        !           440:        I=661
        !           441: C                                              !SET FLAG FOR BELOW.
        !           442:        DO 24200 J=1,OLNT
        !           443: C                                              !DESCRIBE OBJ IN FORE3.
        !           444:          IF(.NOT.QHERE(J,FORE3).OR.(J.EQ.FTREE)) GO TO 24200
        !           445:          CALL RSPEAK(I)
        !           446: C                                              !SET STAGE,
        !           447:          I=0
        !           448:          CALL RSPSUB(502,ODESC2(J))
        !           449: C                                              !DESCRIBE.
        !           450: 24200  CONTINUE
        !           451:        RETURN
        !           452: C RAPPL1, PAGE 8
        !           453: C
        !           454: C R25--        CYCLOPS-ROOM.  DEPENDS ON CYCLOPS STATE, ASLEEP FLAG, MAGIC FLAG.
        !           455: C
        !           456: 25000  IF(PRSA.NE.LOOKW) RETURN
        !           457: C                                              !LOOK?
        !           458:        CALL RSPEAK(606)
        !           459: C                                              !DESCRIBE.
        !           460:        I=607
        !           461: C                                              !ASSUME BASIC STATE.
        !           462:        IF(RVCYC.GT.0) I=608
        !           463: C                                              !>0?  HUNGRY.
        !           464:        IF(RVCYC.LT.0) I=609
        !           465: C                                              !<0?  THIRSTY.
        !           466:        IF(CYCLOF) I=610
        !           467: C                                              !ASLEEP?
        !           468:        IF(MAGICF) I=611
        !           469: C                                              !GONE?
        !           470:        CALL RSPEAK(I)
        !           471: C                                              !DESCRIBE.
        !           472:        IF(.NOT.CYCLOF .AND.(RVCYC.NE.0))
        !           473: &              CALL RSPEAK(193+IABS(RVCYC))
        !           474:        RETURN
        !           475: C
        !           476: C R26--        BANK BOX ROOM.
        !           477: C
        !           478: 26000  IF(PRSA.NE.WALKIW) RETURN
        !           479: C                                              !SURPRISE HIM.
        !           480:        DO 26100 I=1,8,2
        !           481: C                                              !SCOLRM DEPENDS ON
        !           482:          IF(FROMDR.EQ.SCOLDR(I)) SCOLRM=SCOLDR(I+1)
        !           483: 26100  CONTINUE
        !           484: C                                              !ENTRY DIRECTION.
        !           485:        RETURN
        !           486: C
        !           487: C R27--        TREASURE ROOM.
        !           488: C
        !           489: 27000  IF((PRSA.NE.WALKIW).OR. .NOT.THFACT)
        !           490: &              RETURN
        !           491:        IF(OROOM(THIEF).NE.HERE)
        !           492: &              CALL NEWSTA(THIEF,82,HERE,0,0)
        !           493:        THFPOS=HERE
        !           494: C                                              !RESET SEARCH PATTERN.
        !           495:        OFLAG2(THIEF)=or(OFLAG2(THIEF),FITEBT)
        !           496:        IF(OROOM(CHALI).EQ.HERE)
        !           497: &              OFLAG1(CHALI)=and(OFLAG1(CHALI),not(TAKEBT))
        !           498: C
        !           499: C      VANISH EVERYTHING IN ROOM
        !           500: C
        !           501:        J=0
        !           502: C                                              !ASSUME NOTHING TO VANISH.
        !           503:        DO 27200 I=1,OLNT
        !           504:          IF((I.EQ.CHALI).OR.(I.EQ.THIEF).OR..NOT.QHERE(I,HERE))
        !           505: &              GO TO 27200
        !           506:          J=83
        !           507: C                                              !FLAG BYEBYE.
        !           508:          OFLAG1(I)=and(OFLAG1(I),not(VISIBT))
        !           509: 27200  CONTINUE
        !           510:        CALL RSPEAK(J)
        !           511: C                                              !DESCRIBE.
        !           512:        RETURN
        !           513: C
        !           514: C R28--        CLIFF FUNCTION.  SEE IF CARRYING INFLATED BOAT.
        !           515: C
        !           516: 28000  DEFLAF=OADV(RBOAT).NE.WINNER
        !           517: C                                              !TRUE IF NOT CARRYING.
        !           518:        RETURN
        !           519: C RAPPL1, PAGE 9
        !           520: C
        !           521: C R29--        RIVR4 ROOM.  PLAY WITH BUOY.
        !           522: C
        !           523: 29000  IF(.NOT.BUOYF.OR.(OADV(BUOY).NE.WINNER)) RETURN
        !           524:        CALL RSPEAK(84)
        !           525: C                                              !GIVE HINT,
        !           526:        BUOYF=.FALSE.
        !           527: C                                              !THEN DISABLE.
        !           528:        RETURN
        !           529: C
        !           530: C R30--        OVERFALLS.  DOOM.
        !           531: C
        !           532: 30000  IF(PRSA.NE.LOOKW) CALL JIGSUP(85)
        !           533: C                                              !OVER YOU GO.
        !           534:        RETURN
        !           535: C
        !           536: C R31--        BEACH ROOM.  DIG A HOLE.
        !           537: C
        !           538: 31000  IF((PRSA.NE.DIGW).OR.(PRSO.NE.SHOVE)) RETURN
        !           539:        RVSND=RVSND+1
        !           540: C                                              !INCREMENT DIG STATE.
        !           541:        GO TO (31100,31100,31100,31400,31500),RVSND
        !           542: C                                              !PROCESS STATE.
        !           543:        CALL BUG(2,RVSND)
        !           544: C
        !           545: 31100  CALL RSPEAK(85+RVSND)
        !           546: C                                              !1-3... DISCOURAGE HIM.
        !           547:        RETURN
        !           548: C
        !           549: 31400  I=89
        !           550: C                                              !ASSUME DISCOVERY.
        !           551:        IF(and(OFLAG1(STATU),VISIBT).NE.0) I=88
        !           552:        CALL RSPEAK(I)
        !           553:        OFLAG1(STATU)=or(OFLAG1(STATU),VISIBT)
        !           554:        RETURN
        !           555: C
        !           556: 31500  RVSND=0
        !           557: C                                              !5... SAND COLLAPSES
        !           558:        CALL JIGSUP(90)
        !           559: C                                              !AND SO DOES HE.
        !           560:        RETURN
        !           561: C
        !           562: C R32--        TCAVE ROOM.  DIG A HOLE IN GUANO.
        !           563: C
        !           564: 32000  IF((PRSA.NE.DIGW).OR.(PRSO.NE.SHOVE)) RETURN
        !           565:        I=91
        !           566: C                                              !ASSUME NO GUANO.
        !           567:        IF(.NOT. QHERE(GUANO,HERE)) GO TO 32100
        !           568: C                                              !IS IT HERE?
        !           569:        RVGUA=MIN0(4,RVGUA+1)
        !           570: C                                              !YES, SET NEW STATE.
        !           571:        I=91+RVGUA
        !           572: C                                              !GET NASTY REMARK.
        !           573: 32100  CALL RSPEAK(I)
        !           574: C                                              !DESCRIBE.
        !           575:        RETURN
        !           576: C
        !           577: C R33--        FALLS ROOM
        !           578: C
        !           579: 33000  IF(PRSA.NE.LOOKW) RETURN
        !           580: C                                              !LOOK?
        !           581:        CALL RSPEAK(96)
        !           582: C                                              !DESCRIBE.
        !           583:        I=97
        !           584: C                                              !ASSUME NO RAINBOW.
        !           585:        IF(RAINBF) I=98
        !           586: C                                              !GOT ONE?
        !           587:        CALL RSPEAK(I)
        !           588: C                                              !DESCRIBE.
        !           589:        RETURN
        !           590: C RAPPL1, PAGE 10
        !           591: C
        !           592: C R34--        LEDGE FUNCTION.  LEDGE CAN COLLAPSE.
        !           593: C
        !           594: 34000  IF(PRSA.NE.LOOKW) RETURN
        !           595: C                                              !LOOK?
        !           596:        CALL RSPEAK(100)
        !           597: C                                              !DESCRIBE.
        !           598:        I=102
        !           599: C                                              !ASSUME SAFE ROOM OK.
        !           600:        IF(and(RFLAG(MSAFE),RMUNG).NE.0) I=101
        !           601:        CALL RSPEAK(I)
        !           602: C                                              !DESCRIBE.
        !           603:        RETURN
        !           604: C
        !           605: C R35--        SAFE ROOM.  STATE DEPENDS ON WHETHER SAFE BLOWN.
        !           606: C
        !           607: 35000  IF(PRSA.NE.LOOKW) RETURN
        !           608: C                                              !LOOK?
        !           609:        CALL RSPEAK(104)
        !           610: C                                              !DESCRIBE.
        !           611:        I=105
        !           612: C                                              !ASSUME OK.
        !           613:        IF(SAFEF) I=106
        !           614: C                                              !BLOWN?
        !           615:        CALL RSPEAK(I)
        !           616: C                                              !DESCRIBE.
        !           617:        RETURN
        !           618: C
        !           619: C R36--        MAGNET ROOM.  DESCRIBE, CHECK FOR SPINDIZZY DOOM.
        !           620: C
        !           621: 36000  IF(PRSA.NE.LOOKW) GO TO 36500
        !           622: C                                              !LOOK?
        !           623:        CALL RSPEAK(107)
        !           624: C                                              !DESCRIBE.
        !           625:        RETURN
        !           626: C
        !           627: 36500  IF((PRSA.NE.WALKIW).OR. .NOT.CAROFF) RETURN
        !           628: C                                              !WALKIN ON FLIPPED?
        !           629:        IF(CAROZF) GO TO 36600
        !           630: C                                              !ZOOM?
        !           631:        CALL RSPEAK(108)
        !           632: C                                              !NO, SPIN HIS COMPASS.
        !           633:        RETURN
        !           634: C
        !           635: 36600  I=58
        !           636: C                                              !SPIN HIS INSIDES.
        !           637:        IF(WINNER.NE.PLAYER) I=99
        !           638: C                                              !SPIN ROBOT.
        !           639:        CALL JIGSUP(I)
        !           640: C                                              !DEAD.
        !           641:        RETURN
        !           642: C
        !           643: C R37--        CAGE ROOM.  IF SOLVED CAGE, MOVE TO OTHER CAGE ROOM.
        !           644: C
        !           645: 37000  IF(CAGESF) F=MOVETO(CAGER,WINNER)
        !           646: C                                              !IF SOLVED, MOVE.
        !           647:        RETURN
        !           648: C
        !           649:        END

unix.superglobalmegacorp.com

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