|
|
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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.