|
|
1.1 root 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: #include "rooms.h"
12: #include "rflag.h"
13: #include "rindex.h"
14: C
15: COMMON /STAR/ MBASE,STRBIT
16: C GHERE, PAGE 2
17: C
18: GHERE=.TRUE.
19: C !ASSUME WINS.
20: GO TO (1000,1000,1000,1000,1000,1000,
21: & 1000,1000,1000,1000,1000,
22: & 2000,3000,4000,5000,5000,5000,6000,
23: & 7000,8000,9000,9100,8000,10000,11000),OBJ-STRBIT
24: CALL BUG(60,OBJ)
25: C
26: C 1000-- STARS ARE ALWAYS HERE
27: C
28: 1000 RETURN
29: C
30: C 2000-- BIRD
31: C
32: 2000 GHERE=((RM.GE.FORE1).AND.(RM.LT.CLEAR)).OR.(RM.EQ.MTREE)
33: RETURN
34: C
35: C 3000-- TREE
36: C
37: 3000 GHERE=((RM.GE.FORE1).AND.(RM.LT.CLEAR)).AND.(RM.NE.FORE3)
38: RETURN
39: C
40: C 4000-- NORTH WALL
41: C
42: 4000 GHERE=((RM.GE.BKVW).AND.(RM.LE.BKBOX)).OR.(RM.EQ.CPUZZ)
43: RETURN
44: C
45: C 5000-- EAST, SOUTH, WEST WALLS
46: C
47: 5000 GHERE=((RM.GE.BKVW).AND.(RM.LT.BKBOX)).OR.(RM.EQ.CPUZZ)
48: RETURN
49: C
50: C 6000-- GLOBAL WATER
51: C
52: 6000 GHERE=and(RFLAG(RM),(RWATER+RFILL)).NE.0
53: RETURN
54: C
55: C 7000-- GLOBAL GUARDIANS
56: C
57: 7000 GHERE=((RM.GE.MRC).AND.(RM.LE.MRD)).OR.
58: & ((RM.GE.MRCE).AND.(RM.LE.MRDW)).OR.(RM.EQ.INMIR)
59: RETURN
60: C
61: C 8000-- ROSE/CHANNEL
62: C
63: 8000 GHERE=((RM.GE.MRA).AND.(RM.LE.MRD)).OR.(RM.EQ.INMIR)
64: RETURN
65: C
66: C 9000-- MIRROR
67: C 9100 PANEL
68: C
69: 9100 IF(RM.EQ.FDOOR) RETURN
70: C !PANEL AT FDOOR.
71: 9000 GHERE=((RM.GE.MRA).AND.(RM.LE.MRC)).OR.
72: & ((RM.GE.MRAE).AND.(RM.LE.MRCW))
73: RETURN
74: C
75: C 10000-- MASTER
76: C
77: 10000 GHERE=(RM.EQ.FDOOR).OR.(RM.EQ.NCORR).OR.(RM.EQ.PARAP).OR.
78: & (RM.EQ.CELL)
79: RETURN
80: C
81: C 11000-- LADDER
82: C
83: 11000 GHERE=(RM.EQ.CPUZZ)
84: RETURN
85: C
86: END
87: C MRHERE-- IS MIRROR HERE?
88: C
89: C DECLARATIONS
90: C
91: INTEGER FUNCTION MRHERE(RM)
92: IMPLICIT INTEGER(A-Z)
93: C
94: C ROOMS
95: #include "rindex.h"
96: #include "flags.h"
97: C MRHERE, PAGE 2
98: C
99: IF((RM.LT.MRAE).OR.(RM.GT.MRDW)) GO TO 100
100: C
101: C RM IS AN E-W ROOM, MIRROR MUST BE N-S (MDIR= 0 OR 180)
102: C
103: MRHERE=1
104: C !ASSUME MIRROR 1 HERE.
105: IF(MOD(RM-MRAE,2).EQ.(MDIR/180)) MRHERE=2
106: RETURN
107: C
108: C RM IS NORTH OR SOUTH OF MIRROR. IF MIRROR IS N-S OR NOT
109: C WITHIN ONE ROOM OF RM, LOSE.
110: C
111: 100 MRHERE=0
112: IF((IABS(MLOC-RM).NE.1).OR.(MOD(MDIR,180).EQ.0)) RETURN
113: C
114: C RM IS WITHIN ONE OF MLOC, AND MDIR IS E-W
115: C
116: MRHERE=1
117: IF(((RM.LT.MLOC).AND.(MDIR.LT.180)).OR.
118: & ((RM.GT.MLOC).AND.(MDIR.GT.180))) MRHERE=2
119: RETURN
120: END
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.