xref: /csrg-svn/games/battlestar/extern.h (revision 60750)
118725Sedward /*
2*60750Sbostic  * Copyright (c) 1983, 1993
3*60750Sbostic  *	The Regents of the University of California.  All rights reserved.
434234Sbostic  *
542569Sbostic  * %sccs.include.redist.c%
634234Sbostic  *
7*60750Sbostic  *	@(#)extern.h	8.1 (Berkeley) 05/31/93
818725Sedward  */
917393Sedward 
1017393Sedward #include <sys/signal.h>
1117393Sedward #include <stdio.h>
1217393Sedward 
1317393Sedward #define BITS (8 * sizeof (int))
1417393Sedward 
1517393Sedward #define OUTSIDE		(position > 68 && position < 246 && position != 218)
1617393Sedward #define rnd(x)		(rand() % (x))
1717393Sedward #define max(a,b)	((a) < (b) ? (b) : (a))
1817393Sedward #define testbit(array, index)	(array[index/BITS] & (1 << (index % BITS)))
1917393Sedward #define setbit(array, index)	(array[index/BITS] |= (1 << (index % BITS)))
2017393Sedward #define clearbit(array, index)	(array[index/BITS] &= ~(1 << (index % BITS)))
2117393Sedward 
2217393Sedward 	/* well known rooms */
2317393Sedward #define FINAL	275
2417393Sedward #define GARDEN	197
2517393Sedward #define POOLS	126
2617393Sedward #define DOCK	93
2717393Sedward 
2817393Sedward 	/* word types */
2917393Sedward #define VERB	0
3017393Sedward #define OBJECT  1
3117393Sedward #define NOUNS	2
3217393Sedward #define PREPS	3
3317393Sedward #define ADJS	4
3417393Sedward #define CONJ	5
3517393Sedward 
3617393Sedward 	/* words numbers */
3717393Sedward #define KNIFE		0
3817393Sedward #define SWORD		1
3917393Sedward #define LAND		2
4017393Sedward #define WOODSMAN 	3
4117393Sedward #define TWO_HANDED	4
4217393Sedward #define CLEAVER		5
4317393Sedward #define BROAD		6
4417393Sedward #define MAIL		7
4517393Sedward #define HELM		8
4617393Sedward #define SHIELD		9
4717393Sedward #define MAID		10
4817393Sedward #define BODY		10
4917393Sedward #define VIPER		11
5017393Sedward #define LAMPON		12
5117393Sedward #define SHOES		13
5217393Sedward #define CYLON		14
5317393Sedward #define PAJAMAS		15
5417393Sedward #define ROBE		16
5517393Sedward #define AMULET		17
5617393Sedward #define MEDALION	18
5717393Sedward #define TALISMAN	19
5817393Sedward #define DEADWOOD	20
5917393Sedward #define MALLET		21
6017393Sedward #define LASER		22
6117393Sedward #define BATHGOD		23
6217393Sedward #define NORMGOD		24
6317393Sedward #define GRENADE		25
6417393Sedward #define CHAIN		26
6517393Sedward #define ROPE		27
6617393Sedward #define LEVIS		28
6717393Sedward #define MACE		29
6817393Sedward #define SHOVEL		30
6917393Sedward #define HALBERD		31
7017393Sedward #define	COMPASS		32
7117393Sedward #define	CRASH		33
7217393Sedward #define ELF		34
7317393Sedward #define FOOT		35
7417393Sedward #define COINS		36
7517393Sedward #define MATCHES		37
7617393Sedward #define MAN		38
7717393Sedward #define PAPAYAS		39
7817393Sedward #define PINEAPPLE	40
7917393Sedward #define KIWI		41
8017393Sedward #define COCONUTS	42
8117393Sedward #define MANGO		43
8217393Sedward #define RING		44
8317393Sedward #define POTION		45
8417393Sedward #define BRACELET	46
8517393Sedward #define GIRL		47
8617393Sedward #define GIRLTALK	48
8717393Sedward #define DARK		49
8817393Sedward #define TIMER		50
8917393Sedward #define CHAR		53
9017393Sedward #define BOMB		54
9117393Sedward #define DEADGOD		55
9217393Sedward #define DEADTIME	56
9317393Sedward #define DEADNATIVE	57
9417393Sedward #define NATIVE		58
9517393Sedward #define HORSE		59
9617393Sedward #define CAR		60
9717393Sedward #define POT		61
9817393Sedward #define BAR		62
9917393Sedward #define	BLOCK		63
10017393Sedward #define NUMOFOBJECTS	64
10117393Sedward 	/* non-objects below */
10217393Sedward #define UP	1000
10317393Sedward #define DOWN	1001
10417393Sedward #define AHEAD	1002
10517393Sedward #define BACK	1003
10617393Sedward #define RIGHT	1004
10717393Sedward #define LEFT	1005
10817393Sedward #define TAKE	1006
10917393Sedward #define USE	1007
11017393Sedward #define LOOK	1008
11117393Sedward #define QUIT	1009
11217393Sedward #define NORTH	1010
11317393Sedward #define SOUTH	1011
11417393Sedward #define EAST	1012
11517393Sedward #define WEST	1013
11617393Sedward #define SU      1014
11717393Sedward #define DROP	1015
11817393Sedward #define TAKEOFF	1016
11917393Sedward #define DRAW	1017
12017393Sedward #define PUTON	1018
12117393Sedward #define WEARIT	1019
12217393Sedward #define PUT	1020
12317393Sedward #define INVEN	1021
12417393Sedward #define EVERYTHING 1022
12517393Sedward #define AND	1023
12617393Sedward #define KILL	1024
12717393Sedward #define RAVAGE	1025
12817393Sedward #define UNDRESS	1026
12917393Sedward #define THROW	1027
13017393Sedward #define LAUNCH	1028
13117393Sedward #define LANDIT	1029
13217393Sedward #define LIGHT	1030
13317393Sedward #define FOLLOW	1031
13417393Sedward #define KISS	1032
13517393Sedward #define LOVE	1033
13617393Sedward #define GIVE	1034
13717393Sedward #define SMITE	1035
13817393Sedward #define SHOOT	1036
13917393Sedward #define ON	1037
14017393Sedward #define	OFF	1038
14117393Sedward #define TIME	1039
14217393Sedward #define SLEEP	1040
14317393Sedward #define DIG	1041
14417393Sedward #define EAT	1042
14517393Sedward #define SWIM	1043
14617393Sedward #define DRINK	1044
14717393Sedward #define DOOR	1045
14817393Sedward #define SAVE	1046
14917393Sedward #define RIDE	1047
15017393Sedward #define DRIVE	1048
15117393Sedward #define SCORE	1049
15217393Sedward #define BURY	1050
15317393Sedward #define JUMP	1051
15417441Sedward #define KICK	1052
15517393Sedward 
15617393Sedward 	/* injuries */
15717393Sedward #define ARM	6		/* broken arm */
15817393Sedward #define RIBS	7		/* broken ribs */
15917393Sedward #define SPINE	9		/* broken back */
16017393Sedward #define SKULL	11		/* fractured skull */
16117393Sedward #define INCISE	10		/* deep incisions */
16217393Sedward #define NECK	12		/* broken NECK */
16317393Sedward #define NUMOFINJURIES 13
16417393Sedward 
16517393Sedward 	/* notes */
16617393Sedward #define	CANTLAUNCH	0
16717393Sedward #define LAUNCHED	1
16817393Sedward #define CANTSEE		2
16917393Sedward #define CANTMOVE	3
17017393Sedward #define JINXED		4
17117393Sedward #define DUG		5
17217393Sedward #define NUMOFNOTES	6
17317393Sedward 
17417393Sedward 	/* fundamental constants */
17517393Sedward #define NUMOFROOMS	275
17617393Sedward #define NUMOFWORDS	((NUMOFOBJECTS + BITS - 1) / BITS)
17717393Sedward #define LINELENGTH	81
17817393Sedward 
17917393Sedward #define TODAY		0
18017393Sedward #define TONIGHT		1
18117393Sedward #define CYCLE		100
18217393Sedward 
18317393Sedward 	/* initial variable values */
18417441Sedward #define TANKFULL	250
18517393Sedward #define TORPEDOES	10
18617393Sedward #define MAXWEIGHT	60
18717393Sedward #define MAXCUMBER	10
18817393Sedward 
18917393Sedward struct room {
19017393Sedward 	char *name;
19117393Sedward 	int link[8];
19217393Sedward #define north	link[0]
19317393Sedward #define south	link[1]
19417393Sedward #define east	link[2]
19517393Sedward #define west	link[3]
19617393Sedward #define up	link[4]
19717393Sedward #define access	link[5]
19817393Sedward #define down	link[6]
19917393Sedward #define flyhere	link[7]
20017393Sedward 	char *desc;
20117393Sedward 	unsigned int objects[NUMOFWORDS];
20217393Sedward };
20317393Sedward struct room dayfile[];
20417393Sedward struct room nightfile[];
20517393Sedward struct room *location;
20617393Sedward 
20717393Sedward 	/* object characteristics */
20817393Sedward char *objdes[NUMOFOBJECTS];
20917393Sedward char *objsht[NUMOFOBJECTS];
21017393Sedward char *ouch[NUMOFINJURIES];
21117393Sedward int objwt[NUMOFOBJECTS];
21217393Sedward int objcumber[NUMOFOBJECTS];
21317393Sedward 
21417393Sedward 	/* current input line */
21517393Sedward #define NWORD	20			/* words per line */
21617393Sedward char words[NWORD][15];
21717393Sedward int wordvalue[NWORD];
21817393Sedward int wordtype[NWORD];
21917393Sedward int wordcount, wordnumber;
22017393Sedward 
22117393Sedward char *truedirec(), *rate();
22217393Sedward char *getcom(), *getword();
22317393Sedward 
22417393Sedward 	/* state of the game */
22517393Sedward int time;
22617393Sedward int position;
22717393Sedward int direction;
22817393Sedward int left, right, ahead, back;
22917393Sedward int clock, fuel, torps;
23017393Sedward int carrying, encumber;
23117393Sedward int rythmn;
23217393Sedward int followfight;
23317393Sedward int ate;
23417393Sedward int snooze;
23517393Sedward int meetgirl;
23617393Sedward int followgod;
23717393Sedward int godready;
23817393Sedward int win;
23917393Sedward int wintime;
24017393Sedward int wiz;
24117393Sedward int tempwiz;
24217393Sedward int matchlight, matchcount;
24317393Sedward int loved;
24417393Sedward int pleasure, power, ego;
24517393Sedward int WEIGHT;
24617393Sedward int CUMBER;
24717393Sedward int notes[NUMOFNOTES];
24817393Sedward unsigned int inven[NUMOFWORDS];
24917393Sedward unsigned int wear[NUMOFWORDS];
25017393Sedward char beenthere[NUMOFROOMS+1];
25117393Sedward char injuries[NUMOFINJURIES];
25217393Sedward 
25317393Sedward char uname[9];
25417393Sedward 
25517393Sedward struct wlist {
25617393Sedward 	char *string;
25717393Sedward 	int value, article;
25817393Sedward 	struct wlist *next;
25917393Sedward };
26017393Sedward #define HASHSIZE	256
26117393Sedward #define HASHMUL		81
26217393Sedward #define HASHMASK	(HASHSIZE - 1)
26317393Sedward struct wlist *hashtab[HASHSIZE];
26417393Sedward struct wlist wlist[];
26517393Sedward 
26617393Sedward struct objs {
26717393Sedward 	short room;
26817393Sedward 	short obj;
26917393Sedward };
27017393Sedward struct objs dayobjs[];
27117393Sedward struct objs nightobjs[];
272