# 2.11BSD#431 - /usr/src/new/PORT/dungeon/rooms.F

       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: 646 |