|
|
1.1 root 1: /*
2: * Copyright (c) 1985 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: * @(#)hunt.h 5.2 (Berkeley) 6/27/88
18: */
19:
20: /*
21: * Hunt
22: * Copyright (c) 1985 Conrad C. Huang, Gregory S. Couch, Kenneth C.R.C. Arnold
23: * San Francisco, California
24: */
25:
26: # include <stdio.h>
27: # ifndef OLDIPC
28: # include <sgtty.h>
29: # include <sys/types.h>
30: # include <sys/uio.h>
31: # else OLDIPC
32: # include <sys/localopts.h>
33: # include <sys/types.h>
34: # include <sys/netltoshort.h>
35: # endif OLDIPC
36: # include <sys/socket.h>
37: # ifdef INTERNET
38: # include <netinet/in.h>
39: # include <netdb.h>
40: # ifndef OLDIPC
41: # include <arpa/inet.h>
42: # endif !OLDIPC
43: # ifdef BROADCAST
44: # include <net/if.h>
45: # endif BROADCAST
46: # else INTERNET
47: # include <sys/un.h>
48: # endif INTERNET
49:
50: # ifdef INTERNET
51: # define SOCK_FAMILY AF_INET
52: # else INTERNET
53: # define SOCK_FAMILY AF_UNIX
54: # define AF_UNIX_HACK /* 4.2 hack; leaves files around */
55: # endif INTERNET
56:
57: # define ADDCH ('a' | 0200)
58: # define MOVE ('m' | 0200)
59: # define REFRESH ('r' | 0200)
60: # define CLRTOEOL ('c' | 0200)
61: # define ENDWIN ('e' | 0200)
62: # define CLEAR ('C' | 0200)
63: # define REDRAW ('R' | 0200)
64: # define LAST_PLAYER ('l' | 0200)
65: # define BELL ('b' | 0200)
66: # define READY ('g' | 0200)
67:
68: /*
69: * Choose MAXPL and MAXMON carefully. The screen is assumed to be
70: * 23 lines high and will only tolerate (MAXPL == 12 && MAXMON == 0)
71: * or (MAXPL + MAXMON <= 10).
72: */
73: # define MAXPL 9
74: # ifdef MONITOR
75: # define MAXMON 1
76: # endif MONITOR
77: # define NAMELEN 20
78: # define MSGLEN 80
79: # define DECAY 50.0
80:
81: # define NASCII 128
82:
83: # ifndef REFLECT
84: # ifndef RANDOM
85: # define RANDOM
86: # endif RANDOM
87: # endif REFLECT
88:
89: # define WIDTH 59
90: # define WIDTH2 64 /* Next power of 2 >= WIDTH (for fast access) */
91: # define HEIGHT 23
92: # define UBOUND 1
93: # define DBOUND 22
94: # define LBOUND 1
95: # define RBOUND (WIDTH - 1)
96:
97: # define STAT_LABEL_COL 60
98: # define STAT_VALUE_COL 74
99: # define STAT_NAME_COL 61
100: # define STAT_SCAN_COL (STAT_NAME_COL + 5)
101: # define STAT_NAME_ROW 0
102: # define STAT_AMMO_ROW 2
103: # define STAT_SCAN_ROW 3
104: # define STAT_CLOAK_ROW 4
105: # define STAT_GUN_ROW 5
106: # define STAT_DAM_ROW 7
107: # define STAT_KILL_ROW 8
108: # define STAT_PLAY_ROW 10
109: # ifdef MONITOR
110: # define STAT_MON_ROW (STAT_PLAY_ROW + MAXPL + 1)
111: # endif MONITOR
112: # define STAT_NAME_LEN 16
113:
114: # define DOOR '#'
115: # define WALL1 '-'
116: # define WALL2 '|'
117: # define WALL3 '+'
118: # ifdef REFLECT
119: # define WALL4 '/'
120: # define WALL5 '\\'
121: # endif REFLECT
122: # define KNIFE 'K'
123: # define SHOT ':'
124: # define GRENADE 'o'
125: # define SATCHEL 'O'
126: # define BOMB '@'
127: # define MINE ';'
128: # define GMINE 'g'
129: # ifdef OOZE
130: # define SLIME '$'
131: # endif OOZE
132: # ifdef VOLCANO
133: # define LAVA '~'
134: # endif VOLCANO
135: # ifdef FLY
136: # define FALL 'F'
137: # endif FLY
138: # define SPACE ' '
139:
140: # define ABOVE 'i'
141: # define BELOW '!'
142: # define RIGHT '}'
143: # define LEFTS '{'
144: # ifdef FLY
145: # define FLYER '&'
146: # endif FLY
147:
148: # define NORTH 01
149: # define SOUTH 02
150: # define EAST 010
151: # define WEST 020
152:
153: # ifndef TRUE
154: # define TRUE 1
155: # define FALSE 0
156: # endif TRUE
157: # ifndef CTRL
158: # define CTRL(x) ('x' & 037)
159: # endif CTRL
160:
161: # define BULSPD 5 /* bullets movement speed */
162: # define ISHOTS 15
163: # define NSHOTS 5
164: # define MAXNCSHOT 2
165: # define MAXDAM 10
166: # define MINDAM 5
167: # define STABDAM 2
168:
169: # define BULREQ 1
170: # define GRENREQ 9
171: # define SATREQ 25
172: # define BOMBREQ 49
173: # ifdef OOZE
174: # define SLIMEREQ 15
175: # define SSLIMEREQ 30
176: # define SLIMESPEED 5
177: # endif OOZE
178: # ifdef VOLCANO
179: # define LAVASPEED 2
180: # endif VOLCANO
181:
182: # define CLOAKLEN 20
183: # define SCANLEN (Nplayer * 20)
184: # define EXPLEN 4
185:
186: # ifdef FLY
187: # define _cloak_char(pp) (((pp)->p_cloak < 0) ? ' ' : '+')
188: # define _scan_char(pp) (((pp)->p_scan < 0) ? _cloak_char(pp) : '*')
189: # define stat_char(pp) (((pp)->p_flying < 0) ? _scan_char(pp) : FLYER)
190: # else FLY
191: # define _cloak_char(pp) (((pp)->p_cloak < 0) ? ' ' : '+')
192: # define stat_char(pp) (((pp)->p_scan < 0) ? _cloak_char(pp) : '*')
193: # endif FLY
194:
195: typedef int FLAG;
196: typedef struct bullet_def BULLET;
197: typedef struct expl_def EXPL;
198: typedef struct player_def PLAYER;
199: typedef struct ident_def IDENT;
200: typedef struct regen_def REGEN;
201: # ifdef INTERNET
202: typedef struct sockaddr_in SOCKET;
203: # else INTERNET
204: typedef struct sockaddr_un SOCKET;
205: # endif INTERNET
206: typedef struct sgttyb TTYB;
207:
208: struct ident_def {
209: char i_name[NAMELEN];
210: long i_machine;
211: long i_uid;
212: int i_kills;
213: int i_entries;
214: float i_score;
215: IDENT *i_next;
216: };
217:
218: struct player_def {
219: IDENT *p_ident;
220: int p_face;
221: char p_over;
222: int p_undershot;
223: # ifdef FLY
224: int p_flying;
225: int p_flyx, p_flyy;
226: # endif FLY
227: FILE *p_output;
228: int p_fd;
229: int p_mask;
230: int p_damage;
231: int p_damcap;
232: int p_ammo;
233: int p_ncshot;
234: int p_scan;
235: int p_cloak;
236: int p_x, p_y;
237: int p_ncount;
238: int p_nexec;
239: long p_nchar;
240: char p_death[MSGLEN];
241: char p_maze[HEIGHT][WIDTH2];
242: int p_curx, p_cury;
243: int p_lastx, p_lasty;
244: int p_changed;
245: char p_cbuf[BUFSIZ];
246: };
247:
248: struct bullet_def {
249: int b_x, b_y;
250: int b_face;
251: int b_charge;
252: char b_type;
253: char b_over;
254: PLAYER *b_owner;
255: IDENT *b_score;
256: FLAG b_expl;
257: BULLET *b_next;
258: };
259:
260: struct expl_def {
261: int e_x, e_y;
262: char e_char;
263: EXPL *e_next;
264: };
265:
266: struct regen_def {
267: int r_x, r_y;
268: REGEN *r_next;
269: };
270:
271: /*
272: * external variables
273: */
274:
275: extern FLAG Last_player;
276:
277: extern char Buf[BUFSIZ], Maze[HEIGHT][WIDTH2], Orig_maze[HEIGHT][WIDTH2];
278:
279: extern char *Sock_name, *Driver;
280:
281: extern int errno, Have_inp, Nplayer, Num_fds, Socket;
282: extern long Fds_mask, Sock_mask;
283:
284: # ifdef INTERNET
285: extern int Test_port;
286: extern int Sock_port;
287: # else INTERNET
288: extern char *Sock_name;
289: # endif INTERNET
290:
291: # ifdef VOLCANO
292: extern int volcano;
293: # endif VOLCANO
294:
295: extern int See_over[NASCII];
296:
297: extern BULLET *Bullets;
298:
299: extern EXPL *Expl[EXPLEN];
300:
301: extern IDENT *Scores;
302:
303: extern PLAYER Player[MAXPL], *End_player;
304:
305: # ifdef MONITOR
306: extern FLAG Am_monitor;
307: extern PLAYER Monitor[MAXMON], *End_monitor;
308: # endif MONITOR
309:
310: /*
311: * function types
312: */
313:
314: char *getenv(), *malloc(), *strcpy(), *strncpy();
315:
316: IDENT *get_ident();
317:
318: int moveshots();
319:
320: BULLET *is_bullet(), *create_shot();
321:
322: PLAYER *play_at();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.