|
|
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.