xref: /original-bsd/games/battlestar/extern.h (revision aba77441)
1 /*
2  * Copyright (c) 1983 Regents of the University of California,
3  * All rights reserved.  Redistribution permitted subject to
4  * the terms of the Berkeley Software License Agreement.
5  */
6 
7 /* @(#)extern.h	1.3 04/24/85 */
8 
9 #include <sys/signal.h>
10 #include <stdio.h>
11 
12 #define PATH(x)		"/usr/games/lib/x"
13 #define logfile		PATH(battlestar.log)
14 
15 #define BITS (8 * sizeof (int))
16 
17 #define OUTSIDE		(position > 68 && position < 246 && position != 218)
18 #define rnd(x)		(rand() % (x))
19 #define max(a,b)	((a) < (b) ? (b) : (a))
20 #define testbit(array, index)	(array[index/BITS] & (1 << (index % BITS)))
21 #define setbit(array, index)	(array[index/BITS] |= (1 << (index % BITS)))
22 #define clearbit(array, index)	(array[index/BITS] &= ~(1 << (index % BITS)))
23 
24 	/* well known rooms */
25 #define FINAL	275
26 #define GARDEN	197
27 #define POOLS	126
28 #define DOCK	93
29 
30 	/* word types */
31 #define VERB	0
32 #define OBJECT  1
33 #define NOUNS	2
34 #define PREPS	3
35 #define ADJS	4
36 #define CONJ	5
37 
38 	/* words numbers */
39 #define KNIFE		0
40 #define SWORD		1
41 #define LAND		2
42 #define WOODSMAN 	3
43 #define TWO_HANDED	4
44 #define CLEAVER		5
45 #define BROAD		6
46 #define MAIL		7
47 #define HELM		8
48 #define SHIELD		9
49 #define MAID		10
50 #define BODY		10
51 #define VIPER		11
52 #define LAMPON		12
53 #define SHOES		13
54 #define CYLON		14
55 #define PAJAMAS		15
56 #define ROBE		16
57 #define AMULET		17
58 #define MEDALION	18
59 #define TALISMAN	19
60 #define DEADWOOD	20
61 #define MALLET		21
62 #define LASER		22
63 #define BATHGOD		23
64 #define NORMGOD		24
65 #define GRENADE		25
66 #define CHAIN		26
67 #define ROPE		27
68 #define LEVIS		28
69 #define MACE		29
70 #define SHOVEL		30
71 #define HALBERD		31
72 #define	COMPASS		32
73 #define	CRASH		33
74 #define ELF		34
75 #define FOOT		35
76 #define COINS		36
77 #define MATCHES		37
78 #define MAN		38
79 #define PAPAYAS		39
80 #define PINEAPPLE	40
81 #define KIWI		41
82 #define COCONUTS	42
83 #define MANGO		43
84 #define RING		44
85 #define POTION		45
86 #define BRACELET	46
87 #define GIRL		47
88 #define GIRLTALK	48
89 #define DARK		49
90 #define TIMER		50
91 #define CHAR		53
92 #define BOMB		54
93 #define DEADGOD		55
94 #define DEADTIME	56
95 #define DEADNATIVE	57
96 #define NATIVE		58
97 #define HORSE		59
98 #define CAR		60
99 #define POT		61
100 #define BAR		62
101 #define	BLOCK		63
102 #define NUMOFOBJECTS	64
103 	/* non-objects below */
104 #define UP	1000
105 #define DOWN	1001
106 #define AHEAD	1002
107 #define BACK	1003
108 #define RIGHT	1004
109 #define LEFT	1005
110 #define TAKE	1006
111 #define USE	1007
112 #define LOOK	1008
113 #define QUIT	1009
114 #define NORTH	1010
115 #define SOUTH	1011
116 #define EAST	1012
117 #define WEST	1013
118 #define SU      1014
119 #define DROP	1015
120 #define TAKEOFF	1016
121 #define DRAW	1017
122 #define PUTON	1018
123 #define WEARIT	1019
124 #define PUT	1020
125 #define INVEN	1021
126 #define EVERYTHING 1022
127 #define AND	1023
128 #define KILL	1024
129 #define RAVAGE	1025
130 #define UNDRESS	1026
131 #define THROW	1027
132 #define LAUNCH	1028
133 #define LANDIT	1029
134 #define LIGHT	1030
135 #define FOLLOW	1031
136 #define KISS	1032
137 #define LOVE	1033
138 #define GIVE	1034
139 #define SMITE	1035
140 #define SHOOT	1036
141 #define ON	1037
142 #define	OFF	1038
143 #define TIME	1039
144 #define SLEEP	1040
145 #define DIG	1041
146 #define EAT	1042
147 #define SWIM	1043
148 #define DRINK	1044
149 #define DOOR	1045
150 #define SAVE	1046
151 #define RIDE	1047
152 #define DRIVE	1048
153 #define SCORE	1049
154 #define BURY	1050
155 #define JUMP	1051
156 #define KICK	1052
157 
158 	/* injuries */
159 #define ARM	6		/* broken arm */
160 #define RIBS	7		/* broken ribs */
161 #define SPINE	9		/* broken back */
162 #define SKULL	11		/* fractured skull */
163 #define INCISE	10		/* deep incisions */
164 #define NECK	12		/* broken NECK */
165 #define NUMOFINJURIES 13
166 
167 	/* notes */
168 #define	CANTLAUNCH	0
169 #define LAUNCHED	1
170 #define CANTSEE		2
171 #define CANTMOVE	3
172 #define JINXED		4
173 #define DUG		5
174 #define NUMOFNOTES	6
175 
176 	/* fundamental constants */
177 #define NUMOFROOMS	275
178 #define NUMOFWORDS	((NUMOFOBJECTS + BITS - 1) / BITS)
179 #define LINELENGTH	81
180 
181 #define TODAY		0
182 #define TONIGHT		1
183 #define CYCLE		100
184 
185 	/* initial variable values */
186 #define TANKFULL	250
187 #define TORPEDOES	10
188 #define MAXWEIGHT	60
189 #define MAXCUMBER	10
190 
191 struct room {
192 	char *name;
193 	int link[8];
194 #define north	link[0]
195 #define south	link[1]
196 #define east	link[2]
197 #define west	link[3]
198 #define up	link[4]
199 #define access	link[5]
200 #define down	link[6]
201 #define flyhere	link[7]
202 	char *desc;
203 	unsigned int objects[NUMOFWORDS];
204 };
205 struct room dayfile[];
206 struct room nightfile[];
207 struct room *location;
208 
209 	/* object characteristics */
210 char *objdes[NUMOFOBJECTS];
211 char *objsht[NUMOFOBJECTS];
212 char *ouch[NUMOFINJURIES];
213 int objwt[NUMOFOBJECTS];
214 int objcumber[NUMOFOBJECTS];
215 
216 	/* current input line */
217 #define NWORD	20			/* words per line */
218 char words[NWORD][15];
219 int wordvalue[NWORD];
220 int wordtype[NWORD];
221 int wordcount, wordnumber;
222 
223 char *truedirec(), *rate();
224 char *getcom(), *getword();
225 
226 	/* state of the game */
227 int time;
228 int position;
229 int direction;
230 int left, right, ahead, back;
231 int clock, fuel, torps;
232 int carrying, encumber;
233 int rythmn;
234 int followfight;
235 int ate;
236 int snooze;
237 int meetgirl;
238 int followgod;
239 int godready;
240 int win;
241 int wintime;
242 int wiz;
243 int tempwiz;
244 int matchlight, matchcount;
245 int loved;
246 int pleasure, power, ego;
247 int WEIGHT;
248 int CUMBER;
249 int notes[NUMOFNOTES];
250 unsigned int inven[NUMOFWORDS];
251 unsigned int wear[NUMOFWORDS];
252 char beenthere[NUMOFROOMS+1];
253 char injuries[NUMOFINJURIES];
254 
255 char uname[9];
256 
257 struct wlist {
258 	char *string;
259 	int value, article;
260 	struct wlist *next;
261 };
262 #define HASHSIZE	256
263 #define HASHMUL		81
264 #define HASHMASK	(HASHSIZE - 1)
265 struct wlist *hashtab[HASHSIZE];
266 struct wlist wlist[];
267 
268 struct objs {
269 	short room;
270 	short obj;
271 };
272 struct objs dayobjs[];
273 struct objs nightobjs[];
274