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
Last modified: 1988-10-21
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 1771
Valid CSS Valid XHTML 1.0 Strict