home *** CD-ROM | disk | FTP | other *** search
- C RAPPL2- SPECIAL PURPOSE ROOM ROUTINES, PART 2
- C
- C COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142
- C ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED
- C WRITTEN BY R. M. SUPNIK
- C
- C DECLARATIONS
- C
- LOGICAL FUNCTION RAPPL2(RI)
- IMPLICIT INTEGER (A-Z)
- LOGICAL QOPEN,QHERE,F
- C
- C PARSER OUTPUT
- C
- LOGICAL PRSWON
- COMMON /PRSVEC/ PRSA,PRSI,PRSO,PRSWON,PRSCON
- C
- C GAME STATE
- C
- LOGICAL TELFLG
- COMMON /PLAY/ WINNER,HERE,TELFLG
- COMMON /STATE/ MOVES,DEATHS,RWSCOR,MXSCOR,MXLOAD,
- 1 LTSHFT,BLOC,MUNGRM,HS,EGSCOR,EGMXSC
- C
- C MISCELLANEOUS VARIABLES
- C
- COMMON /CHAN/ INPCH,OUTCH,DBCH
- C
- C ROOMS
- C
- COMMON /ROOMS/ RLNT,RDESC2,RDESC1(200),REXIT(200),
- 1 RACTIO(200),RVAL(200),RFLAG(200)
- INTEGER RRAND(200)
- EQUIVALENCE (RVAL,RRAND)
- C
- COMMON /RFLAG/ RSEEN,RLIGHT,RLAND,RWATER,RAIR,
- 1 RSACRD,RFILL,RMUNG,RBUCK,RHOUSE,RNWALL,REND
- C
- COMMON /RINDEX/ WHOUS,LROOM,CELLA
- COMMON /RINDEX/ MTROL,MAZE1
- COMMON /RINDEX/ MGRAT,MAZ15
- COMMON /RINDEX/ FORE1,FORE3,CLEAR,RESER
- COMMON /RINDEX/ STREA,EGYPT,ECHOR
- COMMON /RINDEX/ TSHAF
- COMMON /RINDEX/ BSHAF,MMACH,DOME,MTORC
- COMMON /RINDEX/ CAROU
- COMMON /RINDEX/ RIDDL,LLD2,TEMP1,TEMP2,MAINT
- COMMON /RINDEX/ BLROO,TREAS,RIVR1,RIVR2,RIVR3,MCYCL
- COMMON /RINDEX/ RIVR4,RIVR5,FCHMP,FALLS,MBARR
- COMMON /RINDEX/ MRAIN,POG,VLBOT,VAIR1,VAIR2,VAIR3,VAIR4
- COMMON /RINDEX/ LEDG2,LEDG3,LEDG4,MSAFE,CAGER
- COMMON /RINDEX/ CAGED,TWELL,BWELL,ALICE,ALISM,ALITR
- COMMON /RINDEX/ MTREE,BKENT,BKVW,BKTWI,BKVAU,BKBOX
- COMMON /RINDEX/ CRYPT,TSTRS,MRANT,MREYE
- COMMON /RINDEX/ MRA,MRB,MRC,MRG,MRD,FDOOR
- COMMON /RINDEX/ MRAE,MRCE,MRCW,MRGE,MRGW,MRDW,INMIR
- COMMON /RINDEX/ SCORR,NCORR,PARAP,CELL,PCELL,NCELL
- COMMON /RINDEX/ CPANT,CPOUT,CPUZZ
- C
- C OBJECTS
- C
- COMMON /OBJCTS/ OLNT,ODESC1(220),ODESC2(220),ODESCO(220),
- 1 OACTIO(220),OFLAG1(220),OFLAG2(220),OFVAL(220),
- 2 OTVAL(220),OSIZE(220),OCAPAC(220),OROOM(220),
- 3 OADV(220),OCAN(220),OREAD(220)
- C
- COMMON /OFLAGS/ VISIBT,READBT,TAKEBT,DOORBT,TRANBT,FOODBT,
- 1 NDSCBT,DRNKBT,CONTBT,LITEBT,VICTBT,BURNBT,FLAMBT,
- 2 TOOLBT,TURNBT,ONBT
- COMMON /OFLAGS/ FINDBT,SLEPBT,SCRDBT,TIEBT,CLMBBT,ACTRBT,
- 1 WEAPBT,FITEBT,VILLBT,STAGBT,TRYBT,NOCHBT,OPENBT,
- 2 TCHBT,VEHBT,SCHBT
- C
- COMMON /OINDEX/ GARLI,FOOD,GUNK,COAL,MACHI,DIAMO,TCASE,BOTTL
- COMMON /OINDEX/ WATER,ROPE,KNIFE,SWORD,LAMP,BLAMP,RUG
- COMMON /OINDEX/ LEAVE,TROLL,AXE
- COMMON /OINDEX/ RKNIF,KEYS,ICE,BAR
- COMMON /OINDEX/ COFFI,TORCH,TBASK,FBASK,IRBOX
- COMMON /OINDEX/ GHOST,TRUNK,BELL,BOOK,CANDL
- COMMON /OINDEX/ MATCH,TUBE,PUTTY,WRENC,SCREW,CYCLO,CHALI
- COMMON /OINDEX/ THIEF,STILL,WINDO,GRATE,DOOR
- COMMON /OINDEX/ HPOLE,LEAK,RBUTT,RAILI
- COMMON /OINDEX/ POT,STATU,IBOAT,DBOAT,PUMP,RBOAT
- COMMON /OINDEX/ STICK,BUOY,SHOVE,BALLO,RECEP,GUANO
- COMMON /OINDEX/ BROPE,HOOK1,HOOK2,SAFE,SSLOT,BRICK,FUSE
- COMMON /OINDEX/ GNOME,BLABE,DBALL,TOMB
- COMMON /OINDEX/ LCASE,CAGE,RCAGE,SPHER,SQBUT
- COMMON /OINDEX/ FLASK,POOL,SAFFR,BUCKE,ECAKE,ORICE,RDICE,BLICE
- COMMON /OINDEX/ ROBOT,FTREE,BILLS,PORTR,SCOL,ZGNOM
- COMMON /OINDEX/ EGG,BEGG,BAUBL,CANAR,BCANA
- COMMON /OINDEX/ YLWAL,RDWAL,PINDR,RBEAM
- COMMON /OINDEX/ ODOOR,QDOOR,CDOOR,NUM1,NUM8
- COMMON /OINDEX/ WARNI,CSLIT,GCARD,STLDR
- COMMON /OINDEX/ HANDS,WALL,LUNGS,SAILO,AVIAT,TEETH
- COMMON /OINDEX/ ITOBJ,EVERY,VALUA,OPLAY,WNORT,GWATE,MASTER
- C
- C EXITS
- C
- COMMON /XSRCH/ XMIN,XMAX,XDOWN,XUP,
- 1 XNORTH,XSOUTH,XENTER,XEXIT,XEAST,XWEST
- C
- C CLOCK INTERRUPTS
- C
- LOGICAL*1 CFLAG
- COMMON /CEVENT/ CLNT,CTICK(25),CACTIO(25),CFLAG(25)
- C
- COMMON /CINDEX/ CEVCUR,CEVMNT,CEVLNT,CEVMAT,CEVCND,
- 1 CEVBAL,CEVBRN,CEVFUS,CEVLED,CEVSAF,CEVVLG,
- 2 CEVGNO,CEVBUC,CEVSPH,CEVEGH,
- 3 CEVFOR,CEVSCL,CEVZGI,CEVZGO,CEVSTE,
- 5 CEVMRS,CEVPIN,CEVINQ,CEVFOL
-
- C
- COMMON /AINDEX/ PLAYER,AROBOT,AMASTR
- C
- C VERBS
- C
- COMMON /VINDEX/ CINTW,DEADXW,FRSTQW,INXW,OUTXW
- COMMON /VINDEX/ WALKIW,FIGHTW,FOOW
- COMMON /VINDEX/ MELTW,READW,INFLAW,DEFLAW,ALARMW,EXORCW
- COMMON /VINDEX/ PLUGW,KICKW,WAVEW,RAISEW,LOWERW,RUBW
- COMMON /VINDEX/ PUSHW,UNTIEW,TIEW,TIEUPW,TURNW,BREATW
- COMMON /VINDEX/ KNOCKW,LOOKW,EXAMIW,SHAKEW,MOVEW,TRNONW,TRNOFW
- COMMON /VINDEX/ OPENW,CLOSEW,FINDW,WAITW,SPINW,BOARDW,UNBOAW,TAKEW
- COMMON /VINDEX/ INVENW,FILLW,EATW,DRINKW,BURNW
- COMMON /VINDEX/ MUNGW,KILLW,ATTACW,SWINGW
- COMMON /VINDEX/ WALKW,TELLW,PUTW,DROPW,GIVEW,POURW,THROWW
- COMMON /VINDEX/ DIGW,LEAPW,STAYW,FOLLOW
- COMMON /VINDEX/ HELLOW,LOOKIW,LOOKUW,PUMPW,WINDW
- COMMON /VINDEX/ CLMBW,CLMBUW,CLMBDW,TRNTOW
- C
- C FLAGS
- C
- LOGICAL*1 TROLLF,CAGESF,BUCKTF,CAROFF,CAROZF,LWTIDF
- LOGICAL*1 DOMEF,GLACRF,ECHOF,RIDDLF,LLDF,CYCLOF
- LOGICAL*1 MAGICF,LITLDF,SAFEF,GNOMEF,GNODRF,MIRRMF
- LOGICAL*1 EGYPTF,ONPOLF,BLABF,BRIEFF,SUPERF,BUOYF
- LOGICAL*1 GRUNLF,GATEF,RAINBF,CAGETF,EMPTHF,DEFLAF
- LOGICAL*1 GLACMF,FROBZF,ENDGMF,BADLKF,THFENF,SINGSF
- LOGICAL*1 MRPSHF,MROPNF,WDOPNF,MR1F,MR2F,INQSTF
- LOGICAL*1 FOLLWF,SPELLF,CPOUTF,CPUSHF
- COMMON /FINDEX/ TROLLF,CAGESF,BUCKTF,CAROFF,CAROZF,LWTIDF,
- 1 DOMEF,GLACRF,ECHOF,RIDDLF,LLDF,CYCLOF,
- 2 MAGICF,LITLDF,SAFEF,GNOMEF,GNODRF,MIRRMF,
- 3 EGYPTF,ONPOLF,BLABF,BRIEFF,SUPERF,BUOYF,
- 4 GRUNLF,GATEF,RAINBF,CAGETF,EMPTHF,DEFLAF,
- 5 GLACMF,FROBZF,ENDGMF,BADLKF,THFENF,SINGSF,
- 6 MRPSHF,MROPNF,WDOPNF,MR1F,MR2F,INQSTF,
- 7 FOLLWF,SPELLF,CPOUTF,CPUSHF
- COMMON /FINDEX/ BTIEF,BINFF
- COMMON /FINDEX/ RVMNT,RVCLR,RVCYC,RVSND,RVGUA
- COMMON /FINDEX/ ORRUG,ORCAND,ORMTCH,ORLAMP
- COMMON /FINDEX/ MDIR,MLOC,POLEUF
- COMMON /FINDEX/ QUESNO,NQATT,CORRCT
- COMMON /FINDEX/ LCELL,PNUMB,ACELL,DCELL,CPHERE
- C
- C FUNCTIONS AND DATA
- C
- QOPEN(R)=(OFLAG2(R).AND.OPENBT).NE.0
- DATA NEWRMS/38/
- C RAPPL2, PAGE 2
- C
- RAPPL2=.TRUE.
- GO TO (38000,39000,40000,41000,42000,43000,44000,
- 1 45000,46000,47000,48000,49000,50000,
- 2 51000,52000,53000,54000,55000,56000,
- 3 57000,58000,59000,60000),
- 2 (RI-NEWRMS+1)
- CALL BUG(70,RI)
- RETURN
- C
- C R38-- MIRROR D ROOM
- C
- 38000 IF(PRSA.EQ.LOOKW) CALL LOOKTO(FDOOR,MRG,0,682,681)
- RETURN
- C
- C R39-- MIRROR G ROOM
- C
- 39000 IF(PRSA.EQ.WALKIW) CALL JIGSUP(685)
- RETURN
- C
- C R40-- MIRROR C ROOM
- C
- 40000 IF(PRSA.EQ.LOOKW) CALL LOOKTO(MRG,MRB,683,0,681)
- RETURN
- C
- C R41-- MIRROR B ROOM
- C
- 41000 IF(PRSA.EQ.LOOKW) CALL LOOKTO(MRC,MRA,0,0,681)
- RETURN
- C
- C R42-- MIRROR A ROOM
- C
- 42000 IF(PRSA.EQ.LOOKW) CALL LOOKTO(MRB,0,0,684,681)
- RETURN
- C RAPPL2, PAGE 3
- C
- C R43-- MIRROR C EAST/WEST
- C
- 43000 IF(PRSA.EQ.LOOKW) CALL EWTELL(HERE,683)
- RETURN
- C
- C R44-- MIRROR B EAST/WEST
- C
- 44000 IF(PRSA.EQ.LOOKW) CALL EWTELL(HERE,686)
- RETURN
- C
- C R45-- MIRROR A EAST/WEST
- C
- 45000 IF(PRSA.EQ.LOOKW) CALL EWTELL(HERE,687)
- RETURN
- C
- C R46-- INSIDE MIRROR
- C
- 46000 IF(PRSA.NE.LOOKW) RETURN !LOOK?
- CALL RSPEAK(688) !DESCRIBE
- C
- C NOW DESCRIBE POLE STATE.
- C
- C CASES 1,2-- MDIR=270 & MLOC=MRB, POLE IS UP OR IN HOLE
- C CASES 3,4-- MDIR=0 V MDIR=180, POLE IS UP OR IN CHANNEL
- C CASE 5-- POLE IS UP
- C
- I=689 !ASSUME CASE 5.
- IF((MDIR.EQ.270).AND.(MLOC.EQ.MRB))
- 1 I=690+MIN0(POLEUF,1) !CASES 1,2.
- IF(MOD(MDIR,180).EQ.0)
- 1 I=692+MIN0(POLEUF,1) !CASES 3,4.
- CALL RSPEAK(I) !DESCRIBE POLE.
- CALL RSPSUB(694,695+(MDIR/45)) !DESCRIBE ARROW.
- RETURN
- C RAPPL2, PAGE 4
- C
- C R47-- MIRROR EYE ROOM
- C
- 47000 IF(PRSA.NE.LOOKW) RETURN !LOOK?
- I=704 !ASSUME BEAM STOP.
- DO 47100 J=1,OLNT
- IF(QHERE(J,HERE).AND.(J.NE.RBEAM)) GO TO 47200
- 47100 CONTINUE
- I=703
- 47200 CALL RSPSUB(I,ODESC2(J)) !DESCRIBE BEAM.
- CALL LOOKTO(MRA,0,0,0,0) !LOOK NORTH.
- RETURN
- C
- C R48-- INSIDE CRYPT
- C
- 48000 IF(PRSA.NE.LOOKW) RETURN !LOOK?
- I=46 !CRYPT IS OPEN/CLOSED.
- IF(QOPEN(TOMB)) I=12
- CALL RSPSUB(705,I)
- RETURN
- C
- C R49-- SOUTH CORRIDOR
- C
- 49000 IF(PRSA.NE.LOOKW) RETURN !LOOK?
- CALL RSPEAK(706) !DESCRIBE.
- I=46 !ODOOR IS OPEN/CLOSED.
- IF(QOPEN(ODOOR)) I=12
- IF(LCELL.EQ.4) CALL RSPSUB(707,I) !DESCRIBE ODOOR IF THERE.
- RETURN
- C
- C R50-- BEHIND DOOR
- C
- 50000 IF(PRSA.NE.WALKIW) GO TO 50100 !WALK IN?
- CFLAG(CEVFOL)=.TRUE. !MASTER FOLLOWS.
- CTICK(CEVFOL)=-1
- RETURN
- C
- 50100 IF(PRSA.NE.LOOKW) RETURN !LOOK?
- I=46 !QDOOR IS OPEN/CLOSED.
- IF(QOPEN(QDOOR)) I=12
- CALL RSPSUB(708,I)
- RETURN
- C RAPPL2, PAGE 5
- C
- C R51-- FRONT DOOR
- C
- 51000 IF(PRSA.EQ.WALKIW) CTICK(CEVFOL)=0 !IF EXITS, KILL FOLLOW.
- IF(PRSA.NE.LOOKW) RETURN !LOOK?
- CALL LOOKTO(0,MRD,709,0,0) !DESCRIBE SOUTH.
- I=46 !PANEL IS OPEN/CLOSED.
- IF(INQSTF) I=12 !OPEN IF INQ STARTED.
- J=46 !QDOOR IS OPEN/CLOSED.
- IF(QOPEN(QDOOR)) J=12
- CALL RSPSB2(710,I,J)
- RETURN
- C
- C R52-- NORTH CORRIDOR
- C
- 52000 IF(PRSA.NE.LOOKW) RETURN !LOOK?
- I=46
- IF(QOPEN(CDOOR)) I=12 !CDOOR IS OPEN/CLOSED.
- CALL RSPSUB(711,I)
- RETURN
- C
- C R53-- PARAPET
- C
- 53000 IF(PRSA.EQ.LOOKW) CALL RSPSUB(712,712+PNUMB)
- RETURN
- C
- C R54-- CELL
- C
- 54000 IF(PRSA.NE.LOOKW) RETURN !LOOK?
- I=721 !CDOOR IS OPEN/CLOSED.
- IF(QOPEN(CDOOR)) I=722
- CALL RSPEAK(I)
- I=46 !ODOOR IS OPEN/CLOSED.
- IF(QOPEN(ODOOR)) I=12
- IF(LCELL.EQ.4) CALL RSPSUB(723,I) !DESCRIBE.
- RETURN
- C
- C R55-- PRISON CELL
- C
- 55000 IF(PRSA.EQ.LOOKW) CALL RSPEAK(724) !LOOK?
- RETURN
- C
- C R56-- NIRVANA CELL
- C
- 56000 IF(PRSA.NE.LOOKW) RETURN !LOOK?
- I=46 !ODOOR IS OPEN/CLOSED.
- IF(QOPEN(ODOOR)) I=12
- CALL RSPSUB(725,I)
- RETURN
- C RAPPL2, PAGE 6
- C
- C R57-- NIRVANA AND END OF GAME
- C
- 57000 IF(PRSA.NE.WALKIW) RETURN !WALKIN?
- CALL RSPEAK(726)
- CALL SCORE(.FALSE.)
- CLOSE(UNIT=DBCH)
- CALL EXIT
- C
- C R58-- TOMB ROOM
- C
- 58000 IF(PRSA.NE.LOOKW) RETURN !LOOK?
- I=46 !TOMB IS OPEN/CLOSED.
- IF(QOPEN(TOMB)) I=12
- CALL RSPSUB(792,I)
- RETURN
- C
- C R59-- PUZZLE SIDE ROOM
- C
- 59000 IF(PRSA.NE.LOOKW) RETURN !LOOK?
- I=861 !ASSUME DOOR CLOSED.
- IF(CPOUTF) I=862 !OPEN?
- CALL RSPEAK(I) !DESCRIBE.
- RETURN
- C
- C R60-- PUZZLE ROOM
- C
- 60000 IF(PRSA.NE.LOOKW) RETURN !LOOK?
- IF(CPUSHF) GO TO 60100 !STARTED PUZZLE?
- CALL RSPEAK(868) !NO, DESCRIBE.
- IF((OFLAG2(WARNI).AND.TCHBT).NE.0) CALL RSPEAK(869)
- RETURN
- C
- 60100 CALL CPINFO(880,CPHERE) !DESCRIBE ROOM.
- RETURN
- C
- END
- C LOOKTO-- DESCRIBE VIEW IN MIRROR HALLWAY
- C
- C DECLARATIONS
- C
- SUBROUTINE LOOKTO(NRM,SRM,NT,ST,HT)
- IMPLICIT INTEGER(A-Z)
- C
- C GAME STATE
- C
- LOGICAL TELFLG
- COMMON /PLAY/ WINNER,HERE,TELFLG
- C
- C FLAGS
- C
- LOGICAL*1 TROLLF,CAGESF,BUCKTF,CAROFF,CAROZF,LWTIDF
- LOGICAL*1 DOMEF,GLACRF,ECHOF,RIDDLF,LLDF,CYCLOF
- LOGICAL*1 MAGICF,LITLDF,SAFEF,GNOMEF,GNODRF,MIRRMF
- LOGICAL*1 EGYPTF,ONPOLF,BLABF,BRIEFF,SUPERF,BUOYF
- LOGICAL*1 GRUNLF,GATEF,RAINBF,CAGETF,EMPTHF,DEFLAF
- LOGICAL*1 GLACMF,FROBZF,ENDGMF,BADLKF,THFENF,SINGSF
- LOGICAL*1 MRPSHF,MROPNF,WDOPNF,MR1F,MR2F,INQSTF
- LOGICAL*1 FOLLWF,SPELLF,CPOUTF,CPUSHF
- COMMON /FINDEX/ TROLLF,CAGESF,BUCKTF,CAROFF,CAROZF,LWTIDF,
- 1 DOMEF,GLACRF,ECHOF,RIDDLF,LLDF,CYCLOF,
- 2 MAGICF,LITLDF,SAFEF,GNOMEF,GNODRF,MIRRMF,
- 3 EGYPTF,ONPOLF,BLABF,BRIEFF,SUPERF,BUOYF,
- 4 GRUNLF,GATEF,RAINBF,CAGETF,EMPTHF,DEFLAF,
- 5 GLACMF,FROBZF,ENDGMF,BADLKF,THFENF,SINGSF,
- 6 MRPSHF,MROPNF,WDOPNF,MR1F,MR2F,INQSTF,
- 7 FOLLWF,SPELLF,CPOUTF,CPUSHF
- COMMON /FINDEX/ BTIEF,BINFF
- COMMON /FINDEX/ RVMNT,RVCLR,RVCYC,RVSND,RVGUA
- COMMON /FINDEX/ ORRUG,ORCAND,ORMTCH,ORLAMP
- COMMON /FINDEX/ MDIR,MLOC,POLEUF
- COMMON /FINDEX/ QUESNO,NQATT,CORRCT
- COMMON /FINDEX/ LCELL,PNUMB,ACELL,DCELL,CPHERE
- C LOOKTO, PAGE 2
- C
- CALL RSPEAK(HT) !DESCRIBE HALL.
- CALL RSPEAK(NT) !DESCRIBE NORTH VIEW.
- CALL RSPEAK(ST) !DESCRIBE SOUTH VIEW.
- DIR=0 !ASSUME NO DIRECTION.
- IF(IABS(MLOC-HERE).NE.1) GO TO 200 !MIRROR TO N OR S?
- IF(MLOC.EQ.NRM) DIR=695
- IF(MLOC.EQ.SRM) DIR=699 !DIR=N/S.
- IF(MOD(MDIR,180).NE.0) GO TO 100 !MIRROR N-S?
- CALL RSPSUB(847,DIR) !YES, HE SEES PANEL
- CALL RSPSB2(848,DIR,DIR) !AND NARROW ROOMS.
- GO TO 200
- C
- 100 M1=MRHERE(HERE) !WHICH MIRROR?
- MRBF=0 !ASSUME INTACT.
- IF(((M1.EQ.1).AND..NOT.MR1F).OR.
- 1 ((M1.EQ.2).AND..NOT.MR2F)) MRBF=1 !BROKEN?
- CALL RSPSUB(849+MRBF,DIR) !DESCRIBE.
- IF((M1.EQ.1).AND.MROPNF) CALL RSPEAK(823+MRBF)
- IF(MRBF.NE.0) CALL RSPEAK(851)
- C
- 200 I=0 !ASSUME NO MORE TO DO.
- IF((NT.EQ.0).AND.((DIR.EQ.0).OR.(DIR.EQ.699))) I=852
- IF((ST.EQ.0).AND.((DIR.EQ.0).OR.(DIR.EQ.695))) I=853
- IF((NT+ST+DIR).EQ.0) I=854
- IF(HT.NE.0) CALL RSPEAK(I) !DESCRIBE HALLS.
- RETURN
- C
- END
- C EWTELL-- DESCRIBE E/W NARROW ROOMS
- C
- C DECLARATIONS
- C
- SUBROUTINE EWTELL(RM,ST)
- IMPLICIT INTEGER(A-Z)
- LOGICAL M1
- C
- C ROOMS
- C
- COMMON /RINDEX/ WHOUS,LROOM,CELLA
- COMMON /RINDEX/ MTROL,MAZE1
- COMMON /RINDEX/ MGRAT,MAZ15
- COMMON /RINDEX/ FORE1,FORE3,CLEAR,RESER
- COMMON /RINDEX/ STREA,EGYPT,ECHOR
- COMMON /RINDEX/ TSHAF
- COMMON /RINDEX/ BSHAF,MMACH,DOME,MTORC
- COMMON /RINDEX/ CAROU
- COMMON /RINDEX/ RIDDL,LLD2,TEMP1,TEMP2,MAINT
- COMMON /RINDEX/ BLROO,TREAS,RIVR1,RIVR2,RIVR3,MCYCL
- COMMON /RINDEX/ RIVR4,RIVR5,FCHMP,FALLS,MBARR
- COMMON /RINDEX/ MRAIN,POG,VLBOT,VAIR1,VAIR2,VAIR3,VAIR4
- COMMON /RINDEX/ LEDG2,LEDG3,LEDG4,MSAFE,CAGER
- COMMON /RINDEX/ CAGED,TWELL,BWELL,ALICE,ALISM,ALITR
- COMMON /RINDEX/ MTREE,BKENT,BKVW,BKTWI,BKVAU,BKBOX
- COMMON /RINDEX/ CRYPT,TSTRS,MRANT,MREYE
- COMMON /RINDEX/ MRA,MRB,MRC,MRG,MRD,FDOOR
- COMMON /RINDEX/ MRAE,MRCE,MRCW,MRGE,MRGW,MRDW,INMIR
- COMMON /RINDEX/ SCORR,NCORR,PARAP,CELL,PCELL,NCELL
- COMMON /RINDEX/ CPANT,CPOUT,CPUZZ
- C
- C FLAGS
- C
- LOGICAL*1 TROLLF,CAGESF,BUCKTF,CAROFF,CAROZF,LWTIDF
- LOGICAL*1 DOMEF,GLACRF,ECHOF,RIDDLF,LLDF,CYCLOF
- LOGICAL*1 MAGICF,LITLDF,SAFEF,GNOMEF,GNODRF,MIRRMF
- LOGICAL*1 EGYPTF,ONPOLF,BLABF,BRIEFF,SUPERF,BUOYF
- LOGICAL*1 GRUNLF,GATEF,RAINBF,CAGETF,EMPTHF,DEFLAF
- LOGICAL*1 GLACMF,FROBZF,ENDGMF,BADLKF,THFENF,SINGSF
- LOGICAL*1 MRPSHF,MROPNF,WDOPNF,MR1F,MR2F,INQSTF
- LOGICAL*1 FOLLWF,SPELLF,CPOUTF,CPUSHF
- COMMON /FINDEX/ TROLLF,CAGESF,BUCKTF,CAROFF,CAROZF,LWTIDF,
- 1 DOMEF,GLACRF,ECHOF,RIDDLF,LLDF,CYCLOF,
- 2 MAGICF,LITLDF,SAFEF,GNOMEF,GNODRF,MIRRMF,
- 3 EGYPTF,ONPOLF,BLABF,BRIEFF,SUPERF,BUOYF,
- 4 GRUNLF,GATEF,RAINBF,CAGETF,EMPTHF,DEFLAF,
- 5 GLACMF,FROBZF,ENDGMF,BADLKF,THFENF,SINGSF,
- 6 MRPSHF,MROPNF,WDOPNF,MR1F,MR2F,INQSTF,
- 7 FOLLWF,SPELLF,CPOUTF,CPUSHF
- COMMON /FINDEX/ BTIEF,BINFF
- COMMON /FINDEX/ RVMNT,RVCLR,RVCYC,RVSND,RVGUA
- COMMON /FINDEX/ ORRUG,ORCAND,ORMTCH,ORLAMP
- COMMON /FINDEX/ MDIR,MLOC,POLEUF
- COMMON /FINDEX/ QUESNO,NQATT,CORRCT
- COMMON /FINDEX/ LCELL,PNUMB,ACELL,DCELL,CPHERE
- C EWTELL, PAGE 2
- C
- C NOTE THAT WE ARE EAST OR WEST OF MIRROR, AND
- C MIRROR MUST BE N-S.
- C
- M1=(MDIR+(MOD(RM-MRAE,2)*180)).EQ.180
- I=819+MOD(RM-MRAE,2) !GET BASIC E/W STRING.
- IF((M1.AND..NOT.MR1F).OR.(.NOT.M1.AND..NOT.MR2F))
- 1 I=I+2 !MIRROR BROKEN?
- CALL RSPEAK(I)
- IF(M1.AND.MROPNF) CALL RSPEAK(823+((I-819)/2))
- CALL RSPEAK(825)
- CALL RSPEAK(ST)
- RETURN
- C
- END
-