xref: /original-bsd/contrib/dungeon/ballop.F (revision 850c0003)
1C BALLOP-	BALLOON FUNCTION
2C
3C COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142
4C ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED
5C WRITTEN BY R. M. SUPNIK
6C
7C DECLARATIONS
8C
9	LOGICAL FUNCTION BALLOP(ARG)
10	IMPLICIT INTEGER (A-Z)
11	LOGICAL FINDXT,QEMPTY
12#include "parser.h"
13#include "gamestate.h"
14#include "state.h"
15#include "rooms.h"
16#include "rflag.h"
17#include "curxt.h"
18#include "xpars.h"
19#include "objects.h"
20#include "oflags.h"
21#include "oindex.h"
22#include "clock.h"
23
24#include "verbs.h"
25#include "flags.h"
26C BALLOP, PAGE 2
27C
28	BALLOP=.TRUE.
29C						!ASSUME WINS.
30	IF(ARG.NE.2) GO TO 200
31C						!READOUT?
32	IF(PRSA.NE.LOOKW) GO TO 10
33C						!ONLY PROCESS LOOK.
34	IF(BINFF.NE.0) GO TO 50
35C						!INFLATED?
36	CALL RSPEAK(543)
37C						!NO.
38	GO TO 100
3950	CALL RSPSUB(544,ODESC2(BINFF))
40C						!YES.
41100	IF(BTIEF.NE.0) CALL RSPEAK(545)
42C						!HOOKED?
43	RETURN
44C
45200	IF(ARG.NE.1) GO TO 500
46C						!READIN?
47	IF(PRSA.NE.WALKW) GO TO 300
48C						!WALK?
49	IF(FINDXT(PRSO,HERE)) GO TO 250
50C						!VALID EXIT?
51	CALL RSPEAK(546)
52C						!NO, JOKE.
53	RETURN
54C
55250	IF(BTIEF.EQ.0) GO TO 275
56C						!TIED UP?
57	CALL RSPEAK(547)
58C						!YES, JOKE.
59	RETURN
60C
61275	IF(XTYPE.NE.XNORM) GO TO 10
62C						!NORMAL EXIT?
63	IF(and(RFLAG(XROOM1),RMUNG).EQ.0) BLOC=XROOM1
6410	BALLOP=.FALSE.
65	RETURN
66C
67300	IF((PRSA.NE.TAKEW).OR.(PRSO.NE.BINFF)) GO TO 350
68	CALL RSPSUB(548,ODESC2(BINFF))
69C						!RECEP CONT TOO HOT.
70	RETURN
71C
72350	IF((PRSA.NE.PUTW).OR.(PRSI.NE.RECEP).OR.QEMPTY(RECEP))
73&		GO TO 10
74	CALL RSPEAK(549)
75	RETURN
76C
77500	IF((PRSA.NE.UNBOAW).OR.(and(RFLAG(HERE),RLAND).EQ.0))
78&		GO TO 600
79	IF(BINFF.NE.0) CTICK(CEVBAL)=3
80C						!HE GOT OUT, START BALLOON.
81	GO TO 10
82C
83600	IF((PRSA.NE.BURNW).OR.(OCAN(PRSO).NE.RECEP)) GO TO 700
84	CALL RSPSUB(550,ODESC2(PRSO))
85C						!LIGHT FIRE IN RECEP.
86	CTICK(CEVBRN)=OSIZE(PRSO)*20
87	OFLAG1(PRSO)=or(OFLAG1(PRSO),
88&		and((ONBT+FLAMBT+LITEBT), not(TAKEBT+READBT)))
89	IF(BINFF.NE.0) RETURN
90	IF(.NOT.BLABF) CALL NEWSTA(BLABE,0,0,BALLO,0)
91	BLABF=.TRUE.
92	BINFF=PRSO
93	CTICK(CEVBAL)=3
94	CALL RSPEAK(551)
95	RETURN
96C
97700	IF((PRSA.EQ.UNBOAW).AND.(BINFF.NE.0).AND.
98&		(and(RFLAG(HERE),RLAND).NE.0))
99&		CTICK(CEVBAL)=3
100	GO TO 10
101C
102	END
103