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

  1. C GHERE--    IS GLOBAL ACTUALLY IN THIS ROOM?
  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 GHERE(OBJ,RM)
  10.     IMPLICIT INTEGER(A-Z)
  11. C
  12. C ROOMS
  13. C
  14.     COMMON /ROOMS/ RLNT,RDESC2,RDESC1(200),REXIT(200),
  15.     1    RACTIO(200),RVAL(200),RFLAG(200)
  16.     INTEGER RRAND(200)
  17.     EQUIVALENCE (RVAL,RRAND)
  18. C
  19.     COMMON /RFLAG/ RSEEN,RLIGHT,RLAND,RWATER,RAIR,
  20.     1    RSACRD,RFILL,RMUNG,RBUCK,RHOUSE,RNWALL,REND
  21. C
  22.     COMMON /RINDEX/ WHOUS,LROOM,CELLA
  23.     COMMON /RINDEX/ MTROL,MAZE1    
  24.     COMMON /RINDEX/ MGRAT,MAZ15    
  25.     COMMON /RINDEX/ FORE1,FORE3,CLEAR,RESER
  26.     COMMON /RINDEX/ STREA,EGYPT,ECHOR
  27.     COMMON /RINDEX/ TSHAF    
  28.     COMMON /RINDEX/ BSHAF,MMACH,DOME,MTORC
  29.     COMMON /RINDEX/ CAROU    
  30.     COMMON /RINDEX/ RIDDL,LLD2,TEMP1,TEMP2,MAINT
  31.     COMMON /RINDEX/ BLROO,TREAS,RIVR1,RIVR2,RIVR3,MCYCL
  32.     COMMON /RINDEX/ RIVR4,RIVR5,FCHMP,FALLS,MBARR
  33.     COMMON /RINDEX/ MRAIN,POG,VLBOT,VAIR1,VAIR2,VAIR3,VAIR4
  34.     COMMON /RINDEX/ LEDG2,LEDG3,LEDG4,MSAFE,CAGER
  35.     COMMON /RINDEX/ CAGED,TWELL,BWELL,ALICE,ALISM,ALITR
  36.     COMMON /RINDEX/ MTREE,BKENT,BKVW,BKTWI,BKVAU,BKBOX
  37.     COMMON /RINDEX/ CRYPT,TSTRS,MRANT,MREYE
  38.     COMMON /RINDEX/ MRA,MRB,MRC,MRG,MRD,FDOOR
  39.     COMMON /RINDEX/ MRAE,MRCE,MRCW,MRGE,MRGW,MRDW,INMIR
  40.     COMMON /RINDEX/ SCORR,NCORR,PARAP,CELL,PCELL,NCELL
  41.     COMMON /RINDEX/ CPANT,CPOUT,CPUZZ
  42. C
  43.     COMMON /STAR/ MBASE,STRBIT
  44. C GHERE, PAGE 2
  45. C
  46.     GHERE=.TRUE.                !ASSUME WINS.
  47.     GO TO (1000,1000,1000,1000,1000,1000,
  48.     1    1000,1000,1000,1000,1000,
  49.     2    2000,3000,4000,5000,5000,5000,6000,
  50.     3    7000,8000,9000,9100,8000,10000,11000),OBJ-STRBIT
  51.     CALL BUG(60,OBJ)
  52. C
  53. C 1000--    STARS ARE ALWAYS HERE
  54. C
  55. 1000    RETURN
  56. C
  57. C 2000--    BIRD
  58. C
  59. 2000    GHERE=((RM.GE.FORE1).AND.(RM.LT.CLEAR)).OR.(RM.EQ.MTREE)
  60.     RETURN
  61. C
  62. C 3000--    TREE
  63. C
  64. 3000    GHERE=((RM.GE.FORE1).AND.(RM.LT.CLEAR)).AND.(RM.NE.FORE3)
  65.     RETURN
  66. C
  67. C 4000--    NORTH WALL
  68. C
  69. 4000    GHERE=((RM.GE.BKVW).AND.(RM.LE.BKBOX)).OR.(RM.EQ.CPUZZ)
  70.     RETURN
  71. C
  72. C 5000--    EAST, SOUTH, WEST WALLS
  73. C
  74. 5000    GHERE=((RM.GE.BKVW).AND.(RM.LT.BKBOX)).OR.(RM.EQ.CPUZZ)
  75.     RETURN
  76. C
  77. C 6000--    GLOBAL WATER
  78. C
  79. 6000    GHERE=(RFLAG(RM).AND.(RWATER+RFILL)).NE.0
  80.     RETURN
  81. C
  82. C 7000--    GLOBAL GUARDIANS
  83. C
  84. 7000    GHERE=((RM.GE.MRC).AND.(RM.LE.MRD)).OR.
  85.     1    ((RM.GE.MRCE).AND.(RM.LE.MRDW)).OR.(RM.EQ.INMIR)
  86.     RETURN
  87. C
  88. C 8000--    ROSE/CHANNEL
  89. C
  90. 8000    GHERE=((RM.GE.MRA).AND.(RM.LE.MRD)).OR.(RM.EQ.INMIR)
  91.     RETURN
  92. C
  93. C 9000--    MIRROR
  94. C 9100        PANEL
  95. C
  96. 9100    IF(RM.EQ.FDOOR) RETURN            !PANEL AT FDOOR.
  97. 9000    GHERE=((RM.GE.MRA).AND.(RM.LE.MRC)).OR.
  98.     1    ((RM.GE.MRAE).AND.(RM.LE.MRCW))
  99.     RETURN
  100. C
  101. C 10000--    MASTER
  102. C
  103. 10000    GHERE=(RM.EQ.FDOOR).OR.(RM.EQ.NCORR).OR.(RM.EQ.PARAP).OR.
  104.     1    (RM.EQ.CELL)
  105.     RETURN
  106. C
  107. C 11000--    LADDER
  108. C
  109. 11000    GHERE=(RM.EQ.CPUZZ)
  110.     RETURN
  111. C
  112.     END
  113. C MRHERE--    IS MIRROR HERE?
  114. C
  115. C DECLARATIONS
  116. C
  117.     INTEGER FUNCTION MRHERE(RM)
  118.     IMPLICIT INTEGER(A-Z)
  119. C
  120. C ROOMS
  121. C
  122.     COMMON /RINDEX/ WHOUS,LROOM,CELLA
  123.     COMMON /RINDEX/ MTROL,MAZE1    
  124.     COMMON /RINDEX/ MGRAT,MAZ15    
  125.     COMMON /RINDEX/ FORE1,FORE3,CLEAR,RESER
  126.     COMMON /RINDEX/ STREA,EGYPT,ECHOR
  127.     COMMON /RINDEX/ TSHAF    
  128.     COMMON /RINDEX/ BSHAF,MMACH,DOME,MTORC
  129.     COMMON /RINDEX/ CAROU    
  130.     COMMON /RINDEX/ RIDDL,LLD2,TEMP1,TEMP2,MAINT
  131.     COMMON /RINDEX/ BLROO,TREAS,RIVR1,RIVR2,RIVR3,MCYCL
  132.     COMMON /RINDEX/ RIVR4,RIVR5,FCHMP,FALLS,MBARR
  133.     COMMON /RINDEX/ MRAIN,POG,VLBOT,VAIR1,VAIR2,VAIR3,VAIR4
  134.     COMMON /RINDEX/ LEDG2,LEDG3,LEDG4,MSAFE,CAGER
  135.     COMMON /RINDEX/ CAGED,TWELL,BWELL,ALICE,ALISM,ALITR
  136.     COMMON /RINDEX/ MTREE,BKENT,BKVW,BKTWI,BKVAU,BKBOX
  137.     COMMON /RINDEX/ CRYPT,TSTRS,MRANT,MREYE
  138.     COMMON /RINDEX/ MRA,MRB,MRC,MRG,MRD,FDOOR
  139.     COMMON /RINDEX/ MRAE,MRCE,MRCW,MRGE,MRGW,MRDW,INMIR
  140.     COMMON /RINDEX/ SCORR,NCORR,PARAP,CELL,PCELL,NCELL
  141.     COMMON /RINDEX/ CPANT,CPOUT,CPUZZ
  142. C
  143. C FLAGS
  144. C
  145.     LOGICAL*1 TROLLF,CAGESF,BUCKTF,CAROFF,CAROZF,LWTIDF
  146.     LOGICAL*1 DOMEF,GLACRF,ECHOF,RIDDLF,LLDF,CYCLOF
  147.     LOGICAL*1 MAGICF,LITLDF,SAFEF,GNOMEF,GNODRF,MIRRMF
  148.     LOGICAL*1 EGYPTF,ONPOLF,BLABF,BRIEFF,SUPERF,BUOYF
  149.     LOGICAL*1 GRUNLF,GATEF,RAINBF,CAGETF,EMPTHF,DEFLAF
  150.     LOGICAL*1 GLACMF,FROBZF,ENDGMF,BADLKF,THFENF,SINGSF
  151.     LOGICAL*1 MRPSHF,MROPNF,WDOPNF,MR1F,MR2F,INQSTF
  152.     LOGICAL*1 FOLLWF,SPELLF,CPOUTF,CPUSHF
  153.     COMMON /FINDEX/ TROLLF,CAGESF,BUCKTF,CAROFF,CAROZF,LWTIDF,
  154.     1    DOMEF,GLACRF,ECHOF,RIDDLF,LLDF,CYCLOF,
  155.     2    MAGICF,LITLDF,SAFEF,GNOMEF,GNODRF,MIRRMF,
  156.     3    EGYPTF,ONPOLF,BLABF,BRIEFF,SUPERF,BUOYF,
  157.     4    GRUNLF,GATEF,RAINBF,CAGETF,EMPTHF,DEFLAF,
  158.     5    GLACMF,FROBZF,ENDGMF,BADLKF,THFENF,SINGSF,
  159.     6    MRPSHF,MROPNF,WDOPNF,MR1F,MR2F,INQSTF,
  160.     7    FOLLWF,SPELLF,CPOUTF,CPUSHF
  161.     COMMON /FINDEX/ BTIEF,BINFF
  162.     COMMON /FINDEX/ RVMNT,RVCLR,RVCYC,RVSND,RVGUA
  163.     COMMON /FINDEX/ ORRUG,ORCAND,ORMTCH,ORLAMP
  164.     COMMON /FINDEX/ MDIR,MLOC,POLEUF
  165.     COMMON /FINDEX/ QUESNO,NQATT,CORRCT
  166.     COMMON /FINDEX/ LCELL,PNUMB,ACELL,DCELL,CPHERE
  167. C MRHERE, PAGE 2
  168. C
  169.     IF((RM.LT.MRAE).OR.(RM.GT.MRDW)) GO TO 100
  170. C
  171. C RM IS AN E-W ROOM, MIRROR MUST BE N-S (MDIR= 0 OR 180)
  172. C
  173.     MRHERE=1            !ASSUME MIRROR 1 HERE.
  174.     IF(MOD(RM-MRAE,2).EQ.(MDIR/180)) MRHERE=2
  175.     RETURN
  176. C
  177. C RM IS NORTH OR SOUTH OF MIRROR.  IF MIRROR IS N-S OR NOT
  178. C WITHIN ONE ROOM OF RM, LOSE.
  179. C
  180. 100    MRHERE=0
  181.     IF((IABS(MLOC-RM).NE.1).OR.(MOD(MDIR,180).EQ.0)) RETURN
  182. C
  183. C RM IS WITHIN ONE OF MLOC, AND MDIR IS E-W
  184. C
  185.     MRHERE=1
  186.     IF(((RM.LT.MLOC).AND.(MDIR.LT.180)).OR.
  187.     1  ((RM.GT.MLOC).AND.(MDIR.GT.180))) MRHERE=2
  188.     RETURN
  189.     END
  190.