home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol047 / nrooms.for < prev    next >
Encoding:
Text File  |  1984-04-29  |  14.2 KB  |  500 lines

  1. C RAPPL2- SPECIAL PURPOSE ROOM ROUTINES, PART 2
  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 RAPPL2(RI)
  10.     IMPLICIT INTEGER (A-Z)
  11.     LOGICAL QOPEN,QHERE,F
  12. C
  13. C PARSER OUTPUT
  14. C
  15.     LOGICAL PRSWON
  16.     COMMON /PRSVEC/ PRSA,PRSI,PRSO,PRSWON,PRSCON
  17. C
  18. C GAME STATE
  19. C
  20.     LOGICAL TELFLG
  21.     COMMON /PLAY/ WINNER,HERE,TELFLG
  22.     COMMON /STATE/ MOVES,DEATHS,RWSCOR,MXSCOR,MXLOAD,
  23.     1    LTSHFT,BLOC,MUNGRM,HS,EGSCOR,EGMXSC
  24. C
  25. C MISCELLANEOUS VARIABLES
  26. C
  27.     COMMON /CHAN/ INPCH,OUTCH,DBCH
  28. C
  29. C ROOMS
  30. C
  31.     COMMON /ROOMS/ RLNT,RDESC2,RDESC1(200),REXIT(200),
  32.     1    RACTIO(200),RVAL(200),RFLAG(200)
  33.     INTEGER RRAND(200)
  34.     EQUIVALENCE (RVAL,RRAND)
  35. C
  36.     COMMON /RFLAG/ RSEEN,RLIGHT,RLAND,RWATER,RAIR,
  37.     1    RSACRD,RFILL,RMUNG,RBUCK,RHOUSE,RNWALL,REND
  38. C
  39.     COMMON /RINDEX/ WHOUS,LROOM,CELLA
  40.     COMMON /RINDEX/ MTROL,MAZE1    
  41.     COMMON /RINDEX/ MGRAT,MAZ15    
  42.     COMMON /RINDEX/ FORE1,FORE3,CLEAR,RESER
  43.     COMMON /RINDEX/ STREA,EGYPT,ECHOR
  44.     COMMON /RINDEX/ TSHAF    
  45.     COMMON /RINDEX/ BSHAF,MMACH,DOME,MTORC
  46.     COMMON /RINDEX/ CAROU    
  47.     COMMON /RINDEX/ RIDDL,LLD2,TEMP1,TEMP2,MAINT
  48.     COMMON /RINDEX/ BLROO,TREAS,RIVR1,RIVR2,RIVR3,MCYCL
  49.     COMMON /RINDEX/ RIVR4,RIVR5,FCHMP,FALLS,MBARR
  50.     COMMON /RINDEX/ MRAIN,POG,VLBOT,VAIR1,VAIR2,VAIR3,VAIR4
  51.     COMMON /RINDEX/ LEDG2,LEDG3,LEDG4,MSAFE,CAGER
  52.     COMMON /RINDEX/ CAGED,TWELL,BWELL,ALICE,ALISM,ALITR
  53.     COMMON /RINDEX/ MTREE,BKENT,BKVW,BKTWI,BKVAU,BKBOX
  54.     COMMON /RINDEX/ CRYPT,TSTRS,MRANT,MREYE
  55.     COMMON /RINDEX/ MRA,MRB,MRC,MRG,MRD,FDOOR
  56.     COMMON /RINDEX/ MRAE,MRCE,MRCW,MRGE,MRGW,MRDW,INMIR
  57.     COMMON /RINDEX/ SCORR,NCORR,PARAP,CELL,PCELL,NCELL
  58.     COMMON /RINDEX/ CPANT,CPOUT,CPUZZ
  59. C
  60. C OBJECTS
  61. C
  62.     COMMON /OBJCTS/ OLNT,ODESC1(220),ODESC2(220),ODESCO(220),
  63.     1    OACTIO(220),OFLAG1(220),OFLAG2(220),OFVAL(220),
  64.     2    OTVAL(220),OSIZE(220),OCAPAC(220),OROOM(220),
  65.     3    OADV(220),OCAN(220),OREAD(220)
  66. C
  67.     COMMON /OFLAGS/ VISIBT,READBT,TAKEBT,DOORBT,TRANBT,FOODBT,
  68.     1    NDSCBT,DRNKBT,CONTBT,LITEBT,VICTBT,BURNBT,FLAMBT,
  69.     2    TOOLBT,TURNBT,ONBT
  70.     COMMON /OFLAGS/ FINDBT,SLEPBT,SCRDBT,TIEBT,CLMBBT,ACTRBT,
  71.     1    WEAPBT,FITEBT,VILLBT,STAGBT,TRYBT,NOCHBT,OPENBT,
  72.     2    TCHBT,VEHBT,SCHBT
  73. C
  74.     COMMON /OINDEX/ GARLI,FOOD,GUNK,COAL,MACHI,DIAMO,TCASE,BOTTL
  75.     COMMON /OINDEX/ WATER,ROPE,KNIFE,SWORD,LAMP,BLAMP,RUG
  76.     COMMON /OINDEX/    LEAVE,TROLL,AXE
  77.     COMMON /OINDEX/ RKNIF,KEYS,ICE,BAR
  78.     COMMON /OINDEX/ COFFI,TORCH,TBASK,FBASK,IRBOX
  79.     COMMON /OINDEX/ GHOST,TRUNK,BELL,BOOK,CANDL
  80.     COMMON /OINDEX/ MATCH,TUBE,PUTTY,WRENC,SCREW,CYCLO,CHALI
  81.     COMMON /OINDEX/ THIEF,STILL,WINDO,GRATE,DOOR
  82.     COMMON /OINDEX/ HPOLE,LEAK,RBUTT,RAILI
  83.     COMMON /OINDEX/ POT,STATU,IBOAT,DBOAT,PUMP,RBOAT
  84.     COMMON /OINDEX/ STICK,BUOY,SHOVE,BALLO,RECEP,GUANO
  85.     COMMON /OINDEX/ BROPE,HOOK1,HOOK2,SAFE,SSLOT,BRICK,FUSE
  86.     COMMON /OINDEX/ GNOME,BLABE,DBALL,TOMB
  87.     COMMON /OINDEX/ LCASE,CAGE,RCAGE,SPHER,SQBUT
  88.     COMMON /OINDEX/ FLASK,POOL,SAFFR,BUCKE,ECAKE,ORICE,RDICE,BLICE
  89.     COMMON /OINDEX/ ROBOT,FTREE,BILLS,PORTR,SCOL,ZGNOM
  90.     COMMON /OINDEX/ EGG,BEGG,BAUBL,CANAR,BCANA
  91.     COMMON /OINDEX/ YLWAL,RDWAL,PINDR,RBEAM
  92.     COMMON /OINDEX/ ODOOR,QDOOR,CDOOR,NUM1,NUM8
  93.     COMMON /OINDEX/ WARNI,CSLIT,GCARD,STLDR
  94.     COMMON /OINDEX/ HANDS,WALL,LUNGS,SAILO,AVIAT,TEETH
  95.     COMMON /OINDEX/ ITOBJ,EVERY,VALUA,OPLAY,WNORT,GWATE,MASTER
  96. C
  97. C EXITS
  98. C
  99.     COMMON /XSRCH/ XMIN,XMAX,XDOWN,XUP,
  100.     1    XNORTH,XSOUTH,XENTER,XEXIT,XEAST,XWEST
  101. C
  102. C CLOCK INTERRUPTS
  103. C
  104.     LOGICAL*1 CFLAG
  105.     COMMON /CEVENT/ CLNT,CTICK(25),CACTIO(25),CFLAG(25)
  106. C
  107.     COMMON /CINDEX/ CEVCUR,CEVMNT,CEVLNT,CEVMAT,CEVCND,
  108.     1    CEVBAL,CEVBRN,CEVFUS,CEVLED,CEVSAF,CEVVLG,
  109.     2    CEVGNO,CEVBUC,CEVSPH,CEVEGH,
  110.     3    CEVFOR,CEVSCL,CEVZGI,CEVZGO,CEVSTE,
  111.     5    CEVMRS,CEVPIN,CEVINQ,CEVFOL
  112.  
  113. C
  114.     COMMON /AINDEX/ PLAYER,AROBOT,AMASTR
  115. C
  116. C VERBS
  117. C
  118.     COMMON /VINDEX/ CINTW,DEADXW,FRSTQW,INXW,OUTXW
  119.     COMMON /VINDEX/ WALKIW,FIGHTW,FOOW
  120.     COMMON /VINDEX/ MELTW,READW,INFLAW,DEFLAW,ALARMW,EXORCW
  121.     COMMON /VINDEX/ PLUGW,KICKW,WAVEW,RAISEW,LOWERW,RUBW
  122.     COMMON /VINDEX/ PUSHW,UNTIEW,TIEW,TIEUPW,TURNW,BREATW
  123.     COMMON /VINDEX/ KNOCKW,LOOKW,EXAMIW,SHAKEW,MOVEW,TRNONW,TRNOFW
  124.     COMMON /VINDEX/ OPENW,CLOSEW,FINDW,WAITW,SPINW,BOARDW,UNBOAW,TAKEW
  125.     COMMON /VINDEX/ INVENW,FILLW,EATW,DRINKW,BURNW
  126.     COMMON /VINDEX/ MUNGW,KILLW,ATTACW,SWINGW
  127.     COMMON /VINDEX/ WALKW,TELLW,PUTW,DROPW,GIVEW,POURW,THROWW
  128.     COMMON /VINDEX/ DIGW,LEAPW,STAYW,FOLLOW
  129.     COMMON /VINDEX/ HELLOW,LOOKIW,LOOKUW,PUMPW,WINDW
  130.     COMMON /VINDEX/ CLMBW,CLMBUW,CLMBDW,TRNTOW
  131. C
  132. C FLAGS
  133. C
  134.     LOGICAL*1 TROLLF,CAGESF,BUCKTF,CAROFF,CAROZF,LWTIDF
  135.     LOGICAL*1 DOMEF,GLACRF,ECHOF,RIDDLF,LLDF,CYCLOF
  136.     LOGICAL*1 MAGICF,LITLDF,SAFEF,GNOMEF,GNODRF,MIRRMF
  137.     LOGICAL*1 EGYPTF,ONPOLF,BLABF,BRIEFF,SUPERF,BUOYF
  138.     LOGICAL*1 GRUNLF,GATEF,RAINBF,CAGETF,EMPTHF,DEFLAF
  139.     LOGICAL*1 GLACMF,FROBZF,ENDGMF,BADLKF,THFENF,SINGSF
  140.     LOGICAL*1 MRPSHF,MROPNF,WDOPNF,MR1F,MR2F,INQSTF
  141.     LOGICAL*1 FOLLWF,SPELLF,CPOUTF,CPUSHF
  142.     COMMON /FINDEX/ TROLLF,CAGESF,BUCKTF,CAROFF,CAROZF,LWTIDF,
  143.     1    DOMEF,GLACRF,ECHOF,RIDDLF,LLDF,CYCLOF,
  144.     2    MAGICF,LITLDF,SAFEF,GNOMEF,GNODRF,MIRRMF,
  145.     3    EGYPTF,ONPOLF,BLABF,BRIEFF,SUPERF,BUOYF,
  146.     4    GRUNLF,GATEF,RAINBF,CAGETF,EMPTHF,DEFLAF,
  147.     5    GLACMF,FROBZF,ENDGMF,BADLKF,THFENF,SINGSF,
  148.     6    MRPSHF,MROPNF,WDOPNF,MR1F,MR2F,INQSTF,
  149.     7    FOLLWF,SPELLF,CPOUTF,CPUSHF
  150.     COMMON /FINDEX/ BTIEF,BINFF
  151.     COMMON /FINDEX/ RVMNT,RVCLR,RVCYC,RVSND,RVGUA
  152.     COMMON /FINDEX/ ORRUG,ORCAND,ORMTCH,ORLAMP
  153.     COMMON /FINDEX/ MDIR,MLOC,POLEUF
  154.     COMMON /FINDEX/ QUESNO,NQATT,CORRCT
  155.     COMMON /FINDEX/ LCELL,PNUMB,ACELL,DCELL,CPHERE
  156. C
  157. C FUNCTIONS AND DATA
  158. C
  159.     QOPEN(R)=(OFLAG2(R).AND.OPENBT).NE.0
  160.     DATA NEWRMS/38/
  161. C RAPPL2, PAGE 2
  162. C
  163.     RAPPL2=.TRUE.
  164.     GO TO (38000,39000,40000,41000,42000,43000,44000,
  165.     1    45000,46000,47000,48000,49000,50000,
  166.     2    51000,52000,53000,54000,55000,56000,
  167.     3    57000,58000,59000,60000),
  168.     2    (RI-NEWRMS+1)
  169.     CALL BUG(70,RI)
  170.     RETURN
  171. C
  172. C R38--    MIRROR D ROOM
  173. C
  174. 38000    IF(PRSA.EQ.LOOKW) CALL LOOKTO(FDOOR,MRG,0,682,681)
  175.     RETURN
  176. C
  177. C R39--    MIRROR G ROOM
  178. C
  179. 39000    IF(PRSA.EQ.WALKIW) CALL JIGSUP(685)
  180.     RETURN
  181. C
  182. C R40--    MIRROR C ROOM
  183. C
  184. 40000    IF(PRSA.EQ.LOOKW) CALL LOOKTO(MRG,MRB,683,0,681)
  185.     RETURN
  186. C
  187. C R41--    MIRROR B ROOM
  188. C
  189. 41000    IF(PRSA.EQ.LOOKW) CALL LOOKTO(MRC,MRA,0,0,681)
  190.     RETURN
  191. C
  192. C R42--    MIRROR A ROOM
  193. C
  194. 42000    IF(PRSA.EQ.LOOKW) CALL LOOKTO(MRB,0,0,684,681)
  195.     RETURN
  196. C RAPPL2, PAGE 3
  197. C
  198. C R43--    MIRROR C EAST/WEST
  199. C
  200. 43000    IF(PRSA.EQ.LOOKW) CALL EWTELL(HERE,683)
  201.     RETURN
  202. C
  203. C R44--    MIRROR B EAST/WEST
  204. C
  205. 44000    IF(PRSA.EQ.LOOKW) CALL EWTELL(HERE,686)
  206.     RETURN
  207. C
  208. C R45--    MIRROR A EAST/WEST
  209. C
  210. 45000    IF(PRSA.EQ.LOOKW) CALL EWTELL(HERE,687)
  211.     RETURN
  212. C
  213. C R46--    INSIDE MIRROR
  214. C
  215. 46000    IF(PRSA.NE.LOOKW) RETURN        !LOOK?
  216.     CALL RSPEAK(688)            !DESCRIBE
  217. C
  218. C NOW DESCRIBE POLE STATE.
  219. C
  220. C CASES 1,2--    MDIR=270 & MLOC=MRB, POLE IS UP OR IN HOLE
  221. C CASES 3,4--    MDIR=0 V MDIR=180, POLE IS UP OR IN CHANNEL
  222. C CASE 5--    POLE IS UP
  223. C
  224.     I=689                    !ASSUME CASE 5.
  225.     IF((MDIR.EQ.270).AND.(MLOC.EQ.MRB))
  226.     1    I=690+MIN0(POLEUF,1)        !CASES 1,2.
  227.     IF(MOD(MDIR,180).EQ.0)
  228.     1    I=692+MIN0(POLEUF,1)        !CASES 3,4.
  229.     CALL RSPEAK(I)            !DESCRIBE POLE.
  230.     CALL RSPSUB(694,695+(MDIR/45))        !DESCRIBE ARROW.
  231.     RETURN
  232. C RAPPL2, PAGE 4
  233. C
  234. C R47--    MIRROR EYE ROOM
  235. C
  236. 47000    IF(PRSA.NE.LOOKW) RETURN        !LOOK?
  237.     I=704                    !ASSUME BEAM STOP.
  238.     DO 47100 J=1,OLNT
  239.       IF(QHERE(J,HERE).AND.(J.NE.RBEAM)) GO TO 47200
  240. 47100    CONTINUE
  241.     I=703
  242. 47200    CALL RSPSUB(I,ODESC2(J))        !DESCRIBE BEAM.
  243.     CALL LOOKTO(MRA,0,0,0,0)        !LOOK NORTH.
  244.     RETURN
  245. C
  246. C R48--    INSIDE CRYPT
  247. C
  248. 48000    IF(PRSA.NE.LOOKW) RETURN        !LOOK?
  249.     I=46                    !CRYPT IS OPEN/CLOSED.
  250.     IF(QOPEN(TOMB)) I=12
  251.     CALL RSPSUB(705,I)
  252.     RETURN
  253. C
  254. C R49--    SOUTH CORRIDOR
  255. C
  256. 49000    IF(PRSA.NE.LOOKW) RETURN        !LOOK?
  257.     CALL RSPEAK(706)            !DESCRIBE.
  258.     I=46                    !ODOOR IS OPEN/CLOSED.
  259.     IF(QOPEN(ODOOR)) I=12
  260.     IF(LCELL.EQ.4) CALL RSPSUB(707,I)    !DESCRIBE ODOOR IF THERE.
  261.     RETURN
  262. C
  263. C R50--    BEHIND DOOR
  264. C
  265. 50000    IF(PRSA.NE.WALKIW) GO TO 50100        !WALK IN?
  266.     CFLAG(CEVFOL)=.TRUE.            !MASTER FOLLOWS.
  267.     CTICK(CEVFOL)=-1
  268.     RETURN
  269. C
  270. 50100    IF(PRSA.NE.LOOKW) RETURN        !LOOK?
  271.     I=46                    !QDOOR IS OPEN/CLOSED.
  272.     IF(QOPEN(QDOOR)) I=12
  273.     CALL RSPSUB(708,I)
  274.     RETURN
  275. C RAPPL2, PAGE 5
  276. C
  277. C R51--    FRONT DOOR
  278. C
  279. 51000    IF(PRSA.EQ.WALKIW) CTICK(CEVFOL)=0    !IF EXITS, KILL FOLLOW.
  280.     IF(PRSA.NE.LOOKW) RETURN        !LOOK?
  281.     CALL LOOKTO(0,MRD,709,0,0)        !DESCRIBE SOUTH.
  282.     I=46                    !PANEL IS OPEN/CLOSED.
  283.     IF(INQSTF) I=12                !OPEN IF INQ STARTED.
  284.     J=46                    !QDOOR IS OPEN/CLOSED.
  285.     IF(QOPEN(QDOOR)) J=12
  286.     CALL RSPSB2(710,I,J)
  287.     RETURN
  288. C
  289. C R52--    NORTH CORRIDOR
  290. C
  291. 52000    IF(PRSA.NE.LOOKW) RETURN        !LOOK?
  292.     I=46
  293.     IF(QOPEN(CDOOR)) I=12            !CDOOR IS OPEN/CLOSED.
  294.     CALL RSPSUB(711,I)
  295.     RETURN
  296. C
  297. C R53--    PARAPET
  298. C
  299. 53000    IF(PRSA.EQ.LOOKW) CALL RSPSUB(712,712+PNUMB)
  300.     RETURN
  301. C
  302. C R54--    CELL
  303. C
  304. 54000    IF(PRSA.NE.LOOKW) RETURN        !LOOK?
  305.     I=721                    !CDOOR IS OPEN/CLOSED.
  306.     IF(QOPEN(CDOOR)) I=722
  307.     CALL RSPEAK(I)
  308.     I=46                    !ODOOR IS OPEN/CLOSED.
  309.     IF(QOPEN(ODOOR)) I=12
  310.     IF(LCELL.EQ.4) CALL RSPSUB(723,I)    !DESCRIBE.
  311.     RETURN
  312. C
  313. C R55--    PRISON CELL
  314. C
  315. 55000    IF(PRSA.EQ.LOOKW) CALL RSPEAK(724)    !LOOK?
  316.     RETURN
  317. C
  318. C R56--    NIRVANA CELL
  319. C
  320. 56000    IF(PRSA.NE.LOOKW) RETURN        !LOOK?
  321.     I=46                    !ODOOR IS OPEN/CLOSED.
  322.     IF(QOPEN(ODOOR)) I=12
  323.     CALL RSPSUB(725,I)
  324.     RETURN
  325. C RAPPL2, PAGE 6
  326. C
  327. C R57--    NIRVANA AND END OF GAME
  328. C
  329. 57000    IF(PRSA.NE.WALKIW) RETURN        !WALKIN?
  330.     CALL RSPEAK(726)
  331.     CALL SCORE(.FALSE.)
  332.     CLOSE(UNIT=DBCH)
  333.     CALL EXIT
  334. C
  335. C R58--    TOMB ROOM
  336. C
  337. 58000    IF(PRSA.NE.LOOKW) RETURN        !LOOK?
  338.     I=46                    !TOMB IS OPEN/CLOSED.
  339.     IF(QOPEN(TOMB)) I=12
  340.     CALL RSPSUB(792,I)
  341.     RETURN
  342. C
  343. C R59--    PUZZLE SIDE ROOM
  344. C
  345. 59000    IF(PRSA.NE.LOOKW) RETURN        !LOOK?
  346.     I=861                    !ASSUME DOOR CLOSED.
  347.     IF(CPOUTF) I=862            !OPEN?
  348.     CALL RSPEAK(I)                !DESCRIBE.
  349.     RETURN
  350. C
  351. C R60--    PUZZLE ROOM
  352. C
  353. 60000    IF(PRSA.NE.LOOKW) RETURN        !LOOK?
  354.     IF(CPUSHF) GO TO 60100            !STARTED PUZZLE?
  355.     CALL RSPEAK(868)            !NO, DESCRIBE.
  356.     IF((OFLAG2(WARNI).AND.TCHBT).NE.0) CALL RSPEAK(869)
  357.     RETURN
  358. C
  359. 60100    CALL CPINFO(880,CPHERE)            !DESCRIBE ROOM.
  360.     RETURN
  361. C
  362.     END
  363. C LOOKTO--    DESCRIBE VIEW IN MIRROR HALLWAY
  364. C
  365. C DECLARATIONS
  366. C
  367.     SUBROUTINE LOOKTO(NRM,SRM,NT,ST,HT)
  368.     IMPLICIT INTEGER(A-Z)
  369. C
  370. C GAME STATE
  371. C
  372.     LOGICAL TELFLG
  373.     COMMON /PLAY/ WINNER,HERE,TELFLG
  374. C
  375. C FLAGS
  376. C
  377.     LOGICAL*1 TROLLF,CAGESF,BUCKTF,CAROFF,CAROZF,LWTIDF
  378.     LOGICAL*1 DOMEF,GLACRF,ECHOF,RIDDLF,LLDF,CYCLOF
  379.     LOGICAL*1 MAGICF,LITLDF,SAFEF,GNOMEF,GNODRF,MIRRMF
  380.     LOGICAL*1 EGYPTF,ONPOLF,BLABF,BRIEFF,SUPERF,BUOYF
  381.     LOGICAL*1 GRUNLF,GATEF,RAINBF,CAGETF,EMPTHF,DEFLAF
  382.     LOGICAL*1 GLACMF,FROBZF,ENDGMF,BADLKF,THFENF,SINGSF
  383.     LOGICAL*1 MRPSHF,MROPNF,WDOPNF,MR1F,MR2F,INQSTF
  384.     LOGICAL*1 FOLLWF,SPELLF,CPOUTF,CPUSHF
  385.     COMMON /FINDEX/ TROLLF,CAGESF,BUCKTF,CAROFF,CAROZF,LWTIDF,
  386.     1    DOMEF,GLACRF,ECHOF,RIDDLF,LLDF,CYCLOF,
  387.     2    MAGICF,LITLDF,SAFEF,GNOMEF,GNODRF,MIRRMF,
  388.     3    EGYPTF,ONPOLF,BLABF,BRIEFF,SUPERF,BUOYF,
  389.     4    GRUNLF,GATEF,RAINBF,CAGETF,EMPTHF,DEFLAF,
  390.     5    GLACMF,FROBZF,ENDGMF,BADLKF,THFENF,SINGSF,
  391.     6    MRPSHF,MROPNF,WDOPNF,MR1F,MR2F,INQSTF,
  392.     7    FOLLWF,SPELLF,CPOUTF,CPUSHF
  393.     COMMON /FINDEX/ BTIEF,BINFF
  394.     COMMON /FINDEX/ RVMNT,RVCLR,RVCYC,RVSND,RVGUA
  395.     COMMON /FINDEX/ ORRUG,ORCAND,ORMTCH,ORLAMP
  396.     COMMON /FINDEX/ MDIR,MLOC,POLEUF
  397.     COMMON /FINDEX/ QUESNO,NQATT,CORRCT
  398.     COMMON /FINDEX/ LCELL,PNUMB,ACELL,DCELL,CPHERE
  399. C LOOKTO, PAGE 2
  400. C
  401.     CALL RSPEAK(HT)                !DESCRIBE HALL.
  402.     CALL RSPEAK(NT)                !DESCRIBE NORTH VIEW.
  403.     CALL RSPEAK(ST)                !DESCRIBE SOUTH VIEW.
  404.     DIR=0                    !ASSUME NO DIRECTION.
  405.     IF(IABS(MLOC-HERE).NE.1) GO TO 200    !MIRROR TO N OR S?
  406.     IF(MLOC.EQ.NRM) DIR=695
  407.     IF(MLOC.EQ.SRM) DIR=699            !DIR=N/S.
  408.     IF(MOD(MDIR,180).NE.0) GO TO 100    !MIRROR N-S?
  409.     CALL RSPSUB(847,DIR)            !YES, HE SEES PANEL
  410.     CALL RSPSB2(848,DIR,DIR)        !AND NARROW ROOMS.
  411.     GO TO 200
  412. C
  413. 100    M1=MRHERE(HERE)                !WHICH MIRROR?
  414.     MRBF=0                    !ASSUME INTACT.
  415.     IF(((M1.EQ.1).AND..NOT.MR1F).OR.
  416.     1  ((M1.EQ.2).AND..NOT.MR2F)) MRBF=1    !BROKEN?
  417.     CALL RSPSUB(849+MRBF,DIR)        !DESCRIBE.
  418.     IF((M1.EQ.1).AND.MROPNF) CALL RSPEAK(823+MRBF)
  419.     IF(MRBF.NE.0) CALL RSPEAK(851)
  420. C
  421. 200    I=0                    !ASSUME NO MORE TO DO.
  422.     IF((NT.EQ.0).AND.((DIR.EQ.0).OR.(DIR.EQ.699))) I=852
  423.     IF((ST.EQ.0).AND.((DIR.EQ.0).OR.(DIR.EQ.695))) I=853
  424.     IF((NT+ST+DIR).EQ.0) I=854
  425.     IF(HT.NE.0) CALL RSPEAK(I)        !DESCRIBE HALLS.
  426.     RETURN
  427. C
  428.     END
  429. C EWTELL--    DESCRIBE E/W NARROW ROOMS
  430. C
  431. C DECLARATIONS
  432. C
  433.     SUBROUTINE EWTELL(RM,ST)
  434.     IMPLICIT INTEGER(A-Z)
  435.     LOGICAL M1
  436. C
  437. C ROOMS
  438. C
  439.     COMMON /RINDEX/ WHOUS,LROOM,CELLA
  440.     COMMON /RINDEX/ MTROL,MAZE1    
  441.     COMMON /RINDEX/ MGRAT,MAZ15    
  442.     COMMON /RINDEX/ FORE1,FORE3,CLEAR,RESER
  443.     COMMON /RINDEX/ STREA,EGYPT,ECHOR
  444.     COMMON /RINDEX/ TSHAF    
  445.     COMMON /RINDEX/ BSHAF,MMACH,DOME,MTORC
  446.     COMMON /RINDEX/ CAROU    
  447.     COMMON /RINDEX/ RIDDL,LLD2,TEMP1,TEMP2,MAINT
  448.     COMMON /RINDEX/ BLROO,TREAS,RIVR1,RIVR2,RIVR3,MCYCL
  449.     COMMON /RINDEX/ RIVR4,RIVR5,FCHMP,FALLS,MBARR
  450.     COMMON /RINDEX/ MRAIN,POG,VLBOT,VAIR1,VAIR2,VAIR3,VAIR4
  451.     COMMON /RINDEX/ LEDG2,LEDG3,LEDG4,MSAFE,CAGER
  452.     COMMON /RINDEX/ CAGED,TWELL,BWELL,ALICE,ALISM,ALITR
  453.     COMMON /RINDEX/ MTREE,BKENT,BKVW,BKTWI,BKVAU,BKBOX
  454.     COMMON /RINDEX/ CRYPT,TSTRS,MRANT,MREYE
  455.     COMMON /RINDEX/ MRA,MRB,MRC,MRG,MRD,FDOOR
  456.     COMMON /RINDEX/ MRAE,MRCE,MRCW,MRGE,MRGW,MRDW,INMIR
  457.     COMMON /RINDEX/ SCORR,NCORR,PARAP,CELL,PCELL,NCELL
  458.     COMMON /RINDEX/ CPANT,CPOUT,CPUZZ
  459. C
  460. C FLAGS
  461. C
  462.     LOGICAL*1 TROLLF,CAGESF,BUCKTF,CAROFF,CAROZF,LWTIDF
  463.     LOGICAL*1 DOMEF,GLACRF,ECHOF,RIDDLF,LLDF,CYCLOF
  464.     LOGICAL*1 MAGICF,LITLDF,SAFEF,GNOMEF,GNODRF,MIRRMF
  465.     LOGICAL*1 EGYPTF,ONPOLF,BLABF,BRIEFF,SUPERF,BUOYF
  466.     LOGICAL*1 GRUNLF,GATEF,RAINBF,CAGETF,EMPTHF,DEFLAF
  467.     LOGICAL*1 GLACMF,FROBZF,ENDGMF,BADLKF,THFENF,SINGSF
  468.     LOGICAL*1 MRPSHF,MROPNF,WDOPNF,MR1F,MR2F,INQSTF
  469.     LOGICAL*1 FOLLWF,SPELLF,CPOUTF,CPUSHF
  470.     COMMON /FINDEX/ TROLLF,CAGESF,BUCKTF,CAROFF,CAROZF,LWTIDF,
  471.     1    DOMEF,GLACRF,ECHOF,RIDDLF,LLDF,CYCLOF,
  472.     2    MAGICF,LITLDF,SAFEF,GNOMEF,GNODRF,MIRRMF,
  473.     3    EGYPTF,ONPOLF,BLABF,BRIEFF,SUPERF,BUOYF,
  474.     4    GRUNLF,GATEF,RAINBF,CAGETF,EMPTHF,DEFLAF,
  475.     5    GLACMF,FROBZF,ENDGMF,BADLKF,THFENF,SINGSF,
  476.     6    MRPSHF,MROPNF,WDOPNF,MR1F,MR2F,INQSTF,
  477.     7    FOLLWF,SPELLF,CPOUTF,CPUSHF
  478.     COMMON /FINDEX/ BTIEF,BINFF
  479.     COMMON /FINDEX/ RVMNT,RVCLR,RVCYC,RVSND,RVGUA
  480.     COMMON /FINDEX/ ORRUG,ORCAND,ORMTCH,ORLAMP
  481.     COMMON /FINDEX/ MDIR,MLOC,POLEUF
  482.     COMMON /FINDEX/ QUESNO,NQATT,CORRCT
  483.     COMMON /FINDEX/ LCELL,PNUMB,ACELL,DCELL,CPHERE
  484. C EWTELL, PAGE 2
  485. C
  486. C NOTE THAT WE ARE EAST OR WEST OF MIRROR, AND
  487. C MIRROR MUST BE N-S.
  488. C
  489.     M1=(MDIR+(MOD(RM-MRAE,2)*180)).EQ.180
  490.     I=819+MOD(RM-MRAE,2)            !GET BASIC E/W STRING.
  491.     IF((M1.AND..NOT.MR1F).OR.(.NOT.M1.AND..NOT.MR2F))
  492.     1    I=I+2                !MIRROR BROKEN?
  493.     CALL RSPEAK(I)
  494.     IF(M1.AND.MROPNF) CALL RSPEAK(823+((I-819)/2))
  495.     CALL RSPEAK(825)
  496.     CALL RSPEAK(ST)
  497.     RETURN
  498. C
  499.     END
  500.