1
2
3
4
5 LOGICAL CYCLOP(ARG)
6 IMPLICIT INTEGER (A-Z)
7 %include dparam
8
9 CYCLOP=.TRUE.
10 IF(.NOT.CYCLOF) GO TO 100
11 IF((PRSA.NE.ALARMW).AND.(PRSA.NE.MUNGW).AND.(PRSA.NE.KICKW).AND.
12 & (PRSA.NE.BURNW).AND.(PRSA.NE.KILLW).AND.(PRSA.NE.ATTACW))
13 & GO TO 10
14 CYCLOF=.FALSE.
15 CALL RSPEAK(187)
16 RVCYC=IABS(RVCYC)
17
18 OFLAG2(CYCLO)=OR(OFLAG2(CYCLO),FITEBT)
19 RETURN
20
21 100 IF(PRSA.NE.GIVEW) GO TO 500
22 IF(PRSO.NE.FOOD) GO TO 300
23 IF(RVCYC.LT.0) GO TO 200
24 CALL NEWSTA(FOOD,189,0,0,0)
25 RVCYC=MIN0(-1,-RVCYC)
26 200 CFLAG(CEVCYC)=.TRUE.
27 CTICK(CEVCYC)=-1
28 RETURN
29
30 300 IF(PRSO.NE.WATER) GO TO 400
31 IF(RVCYC.GE.0) GO TO 350
32 CALL NEWSTA(PRSO,190,0,0,0)
33 CYCLOF=.TRUE.
34
35 OFLAG2(CYCLO)=AND(OFLAG2(CYCLO),COMPL(FITEBT))
36 CFLAG(CEVCYC)=.FALSE.
37 RETURN
38
39 350 CALL RSPEAK(191)
40 10 CYCLOP=.FALSE.
41 RETURN
42
43 400 I=192
44 IF(PRSO.EQ.GARLI) I=193
45 450 CALL RSPEAK(I)
46 RETURN
47
48 500 IF((PRSA.NE.KILLW).AND.(PRSA.NE.ATTACW).AND.
49 & (PRSA.NE.MUNGW).AND.(PRSA.NE.THROWW)) GO TO 600
50 CFLAG(CEVCYC)=.TRUE.
51 CTICK(CEVCYC)=-1
52 I=201
53 IF(PRSA.EQ.MUNGW) I=912
54 GO TO 450
55
56 600 I=202
57 IF(PRSA.EQ.TAKEW) GO TO 450
58 I=203
59 IF(PRSA.EQ.TIEW) GO TO 450
60 CYCLOP=.FALSE.
61 RETURN
62
63
64
65
66
67
68
69 LOGICAL THIEFP(ARG)
70 IMPLICIT INTEGER (A-Z)
71 %include dparam
72 LOGICAL QHERE,PROB,QEMPTY
73
74 THIEFP=.TRUE.
75 IF(PRSA.NE.FIGHTW) GO TO 100
76 IF(OCAN(STILL).EQ.THIEF) GO TO 10
77 IF(QHERE(STILL,THFPOS)) GO TO 50
78 CALL NEWSTA(THIEF,0,0,0,0)
79 IF(QHERE(THIEF,HERE)) CALL RSPEAK(498)
80 RETURN
81
82 50 CALL NEWSTA(STILL,0,0,THIEF,0)
83 IF(QHERE(THIEF,HERE)) CALL RSPEAK(499)
84 RETURN
85
86 100 IF(PRSA.NE.DEADXW) GO TO 200
87 THFACT=.FALSE.
88 IF(HERE.NE.TREAS) GO TO 150
89 J=501
90 DO 125 I=1,OLNT
91 IF((I.EQ.CHALI).OR.(I.EQ.THIEF).OR..NOT.QHERE(I,HERE))
92 & GO TO 125
93
94 OFLAG1(I)=OR(OFLAG1(I),VISIBT)
95 CALL RSPSUB(J,ODESC2(I))
96 J=502
97
98
99
100 IF(.NOT.QEMPTY(I).AND.
101 & (((AND(OFLAG1(I),TRANBT)).NE.0).OR.
102 & ((AND(OFLAG2(I),OPENBT)).NE.0))) CALL PRINCO(I,573,.TRUE.)
103 125 CONTINUE
104
105 150 J=500
106 DO 175 I=1,OLNT
107 IF(OADV(I).NE.-THIEF) GO TO 175
108 CALL NEWSTA(I,0,HERE,0,0)
109 CALL RSPSUB(J,ODESC2(I))
110 J=502
111
112
113
114 IF(.NOT.QEMPTY(I).AND.
115 & (((AND(OFLAG1(I),TRANBT)).NE.0).OR.
116 & ((AND(OFLAG2(I),OPENBT)).NE.0))) CALL PRINCO(I,573,.TRUE.)
117 175 CONTINUE
118 RETURN
119
120 200 IF(PRSA.NE.FRSTQW) GO TO 250
121 THIEFP=PROB(20,75)
122 RETURN
123
124 250 IF((PRSA.NE.HELLOW).OR.(OCAPAC(THIEF).GE.0)) GO TO 300
125 CALL RSPEAK(626)
126 RETURN
127
128 300 IF(PRSA.NE.OUTXW) GO TO 400
129 THFACT=.FALSE.
130 ODESC1(THIEF)=504
131
132 OFLAG1(STILL)=AND(OFLAG1(STILL),COMPL(VISIBT))
133 RETURN
134
135 400 IF((PRSA.NE.INXW).AND.
136 & (((PRSA.NE.ALARMW).AND.(PRSA.NE.KICKW)).OR.
137 & (OCAPAC(THIEF).GE.0))) GO TO 500
138 OCAPAC(THIEF)=IABS(OCAPAC(THIEF))
139 IF(QHERE(THIEF,HERE)) CALL RSPEAK(505)
140 THFACT=.TRUE.
141 ODESC1(THIEF)=503
142
143 OFLAG1(STILL)=OR(OFLAG1(STILL),VISIBT)
144 RETURN
145
146 500 IF(PRSA.NE.TAKEW) GO TO 600
147 CALL RSPEAK(506)
148 RETURN
149
150
151
152 600 IF((PRSA.NE.THROWW).OR.(PRSO.NE.KNIFE).OR.
153 & ((AND(OFLAG2(THIEF),FITEBT)).NE.0)) GO TO 700
154 IF(PROB(10,10)) GO TO 650
155 CALL RSPEAK(507)
156
157 OFLAG2(THIEF)=OR(OFLAG2(THIEF),FITEBT)
158 RETURN
159
160 650 J=508
161 DO 675 I=1,OLNT
162 IF(OADV(I).NE.-THIEF) GO TO 675
163 J=509
164 CALL NEWSTA(I,0,HERE,0,0)
165 675 CONTINUE
166 CALL NEWSTA(THIEF,J,0,0,0)
167 RETURN
168
169 700 IF(((PRSA.NE.THROWW).AND.(PRSA.NE.GIVEW)).OR.(PRSO.EQ.0).OR.
170 & (PRSO.EQ.THIEF)) GO TO 10
171 IF(OCAPAC(THIEF).GE.0) GO TO 750
172 OCAPAC(THIEF)=IABS(OCAPAC(THIEF))
173 THFACT=.TRUE.
174 ODESC1(THIEF)=503
175
176 OFLAG1(STILL)=OR(OFLAG1(STILL),VISIBT)
177 CALL RSPEAK(510)
178
179 750 IF((PRSO.NE.BRICK).OR.(OCAN(FUSE).NE.BRICK).OR.
180 & (CTICK(CEVFUS).EQ.0)) GO TO 800
181 CALL RSPEAK(511)
182 RETURN
183
184 800 IF(PRSO.NE.WATER) GO TO 850
185 CALL NEWSTA(WATER,1081,0,0,0)
186 RETURN
187
188 850 CALL NEWSTA(PRSO,0,0,0,-THIEF)
189 IF(OTVAL(PRSO).GT.0) GO TO 900
190 CALL RSPSUB(512,ODESC2(PRSO))
191 RETURN
192
193 900 CALL RSPSUB(627,ODESC2(PRSO))
194 THFENF=.TRUE.
195 RETURN
196
197 10 THIEFP=.FALSE.
198 RETURN
199