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