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