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