Annotation of 43BSDReno/games/dungeon/rooms.F, revision 1.1.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.