xref: /csrg-svn/contrib/dungeon/dso6.F (revision 35973)
1*35973SbosticC GHERE--	IS GLOBAL ACTUALLY IN THIS ROOM?
2*35973SbosticC
3*35973SbosticC COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142
4*35973SbosticC ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED
5*35973SbosticC WRITTEN BY R. M. SUPNIK
6*35973SbosticC
7*35973SbosticC DECLARATIONS
8*35973SbosticC
9*35973Sbostic	LOGICAL FUNCTION GHERE(OBJ,RM)
10*35973Sbostic	IMPLICIT INTEGER(A-Z)
11*35973Sbostic#include "rooms.h"
12*35973Sbostic#include "rflag.h"
13*35973Sbostic#include "rindex.h"
14*35973SbosticC
15*35973Sbostic	COMMON /STAR/ MBASE,STRBIT
16*35973SbosticC GHERE, PAGE 2
17*35973SbosticC
18*35973Sbostic	GHERE=.TRUE.
19*35973SbosticC						!ASSUME WINS.
20*35973Sbostic	GO TO (1000,1000,1000,1000,1000,1000,
21*35973Sbostic&		1000,1000,1000,1000,1000,
22*35973Sbostic&		2000,3000,4000,5000,5000,5000,6000,
23*35973Sbostic&		7000,8000,9000,9100,8000,10000,11000),OBJ-STRBIT
24*35973Sbostic	CALL BUG(60,OBJ)
25*35973SbosticC
26*35973SbosticC 1000--	STARS ARE ALWAYS HERE
27*35973SbosticC
28*35973Sbostic1000	RETURN
29*35973SbosticC
30*35973SbosticC 2000--	BIRD
31*35973SbosticC
32*35973Sbostic2000	GHERE=((RM.GE.FORE1).AND.(RM.LT.CLEAR)).OR.(RM.EQ.MTREE)
33*35973Sbostic	RETURN
34*35973SbosticC
35*35973SbosticC 3000--	TREE
36*35973SbosticC
37*35973Sbostic3000	GHERE=((RM.GE.FORE1).AND.(RM.LT.CLEAR)).AND.(RM.NE.FORE3)
38*35973Sbostic	RETURN
39*35973SbosticC
40*35973SbosticC 4000--	NORTH WALL
41*35973SbosticC
42*35973Sbostic4000	GHERE=((RM.GE.BKVW).AND.(RM.LE.BKBOX)).OR.(RM.EQ.CPUZZ)
43*35973Sbostic	RETURN
44*35973SbosticC
45*35973SbosticC 5000--	EAST, SOUTH, WEST WALLS
46*35973SbosticC
47*35973Sbostic5000	GHERE=((RM.GE.BKVW).AND.(RM.LT.BKBOX)).OR.(RM.EQ.CPUZZ)
48*35973Sbostic	RETURN
49*35973SbosticC
50*35973SbosticC 6000--	GLOBAL WATER
51*35973SbosticC
52*35973Sbostic6000	GHERE=and(RFLAG(RM),(RWATER+RFILL)).NE.0
53*35973Sbostic	RETURN
54*35973SbosticC
55*35973SbosticC 7000--	GLOBAL GUARDIANS
56*35973SbosticC
57*35973Sbostic7000	GHERE=((RM.GE.MRC).AND.(RM.LE.MRD)).OR.
58*35973Sbostic&		((RM.GE.MRCE).AND.(RM.LE.MRDW)).OR.(RM.EQ.INMIR)
59*35973Sbostic	RETURN
60*35973SbosticC
61*35973SbosticC 8000--	ROSE/CHANNEL
62*35973SbosticC
63*35973Sbostic8000	GHERE=((RM.GE.MRA).AND.(RM.LE.MRD)).OR.(RM.EQ.INMIR)
64*35973Sbostic	RETURN
65*35973SbosticC
66*35973SbosticC 9000--	MIRROR
67*35973SbosticC 9100		PANEL
68*35973SbosticC
69*35973Sbostic9100	IF(RM.EQ.FDOOR) RETURN
70*35973SbosticC						!PANEL AT FDOOR.
71*35973Sbostic9000	GHERE=((RM.GE.MRA).AND.(RM.LE.MRC)).OR.
72*35973Sbostic&		((RM.GE.MRAE).AND.(RM.LE.MRCW))
73*35973Sbostic	RETURN
74*35973SbosticC
75*35973SbosticC 10000--	MASTER
76*35973SbosticC
77*35973Sbostic10000	GHERE=(RM.EQ.FDOOR).OR.(RM.EQ.NCORR).OR.(RM.EQ.PARAP).OR.
78*35973Sbostic&		(RM.EQ.CELL)
79*35973Sbostic	RETURN
80*35973SbosticC
81*35973SbosticC 11000--	LADDER
82*35973SbosticC
83*35973Sbostic11000	GHERE=(RM.EQ.CPUZZ)
84*35973Sbostic	RETURN
85*35973SbosticC
86*35973Sbostic	END
87*35973SbosticC MRHERE--	IS MIRROR HERE?
88*35973SbosticC
89*35973SbosticC DECLARATIONS
90*35973SbosticC
91*35973Sbostic	INTEGER FUNCTION MRHERE(RM)
92*35973Sbostic	IMPLICIT INTEGER(A-Z)
93*35973SbosticC
94*35973SbosticC ROOMS
95*35973Sbostic#include "rindex.h"
96*35973Sbostic#include "flags.h"
97*35973SbosticC MRHERE, PAGE 2
98*35973SbosticC
99*35973Sbostic	IF((RM.LT.MRAE).OR.(RM.GT.MRDW)) GO TO 100
100*35973SbosticC
101*35973SbosticC RM IS AN E-W ROOM, MIRROR MUST BE N-S (MDIR= 0 OR 180)
102*35973SbosticC
103*35973Sbostic	MRHERE=1
104*35973SbosticC						!ASSUME MIRROR 1 HERE.
105*35973Sbostic	IF(MOD(RM-MRAE,2).EQ.(MDIR/180)) MRHERE=2
106*35973Sbostic	RETURN
107*35973SbosticC
108*35973SbosticC RM IS NORTH OR SOUTH OF MIRROR.  IF MIRROR IS N-S OR NOT
109*35973SbosticC WITHIN ONE ROOM OF RM, LOSE.
110*35973SbosticC
111*35973Sbostic100	MRHERE=0
112*35973Sbostic	IF((IABS(MLOC-RM).NE.1).OR.(MOD(MDIR,180).EQ.0)) RETURN
113*35973SbosticC
114*35973SbosticC RM IS WITHIN ONE OF MLOC, AND MDIR IS E-W
115*35973SbosticC
116*35973Sbostic	MRHERE=1
117*35973Sbostic	IF(((RM.LT.MLOC).AND.(MDIR.LT.180)).OR.
118*35973Sbostic&	  ((RM.GT.MLOC).AND.(MDIR.GT.180))) MRHERE=2
119*35973Sbostic	RETURN
120*35973Sbostic	END
121