PLAYER
c = getcoord(PLAYER);
randomplace(PLAYER, ss);
placeship(PLAYER, ss, TRUE);
randomplace(PLAYER, ss);
placeship(PLAYER, ss, TRUE);
if (checkplace(PLAYER, ss, TRUE))
placeship(PLAYER, ss, TRUE);
if (turn % 2 == PLAYER) {
if (turn % 2 == PLAYER)
if (hits[PLAYER][curx][cury])
hits[PLAYER][curx][cury] = hit ? MARK_HIT : MARK_MISS;
addch((chtype)hits[PLAYER][curx][cury]);
hits[COMPUTER][x][y] = (hit = (board[PLAYER][x][y])) ? MARK_HIT : MARK_MISS;
PLAYER *pp;
stmonitor(PLAYER *pp)
stplayer(PLAYER *newpp, int enter_status)
PLAYER *pp;
static void stplayer(PLAYER *, int);
static void stmonitor(PLAYER *);
look(PLAYER *pp)
see(PLAYER *pp, int face)
check(PLAYER *pp, int y, int x)
PLAYER *rpp;
showstat(PLAYER *pp)
drawplayer(PLAYER *pp, FLAG draw)
PLAYER *newp;
message(PLAYER *pp, const char *s)
player_sym(PLAYER *pp, int y, int x)
PLAYER *npp;
static int player_sym(PLAYER *, int, int);
static void drawstatus(PLAYER *);
static void see(PLAYER *, int);
drawmaze(PLAYER *pp)
drawstatus(PLAYER *pp)
PLAYER *np;
PLAYER *pp;
PLAYER *pp;
checkdam(PLAYER *victim, PLAYER *attacker, IDENT *credit, int damage,
zap(PLAYER *pp, FLAG was_player)
PLAYER *np;
static int havechar(PLAYER *);
static void zap(PLAYER *, FLAG);
PLAYER *pp;
havechar(PLAYER *pp)
PLAYER *pp;
move_player(PLAYER *pp, int dir)
PLAYER *newp;
face(PLAYER *pp, int dir)
fire(PLAYER *pp, int req_index)
fire_slime(PLAYER *pp, int req_index)
static void cloak(PLAYER *);
static void face(PLAYER *, int);
static void fire(PLAYER *, int);
add_shot(int type, int y, int x, char wface, int charge, PLAYER *owner,
static void fire_slime(PLAYER *, int);
static void move_player(PLAYER *, int);
static void pickup(PLAYER *, int, int, int, int);
static void scan(PLAYER *);
PLAYER *owner, IDENT *score, int expl, char over)
cloak(PLAYER *pp)
mon_execute(PLAYER *pp)
scan(PLAYER *pp)
pickup(PLAYER *pp, int y, int x, int prob, int obj)
ammo_update(PLAYER *pp)
execute(PLAYER *pp)
PLAYER *pp;
PLAYER *pp;
PLAYER *pp;
PLAYER Player[MAXPL]; /* all the players */
PLAYER *End_player = Player; /* last active player slot */
PLAYER Boot[NBOOTS]; /* all the boots */
PLAYER Monitor[MAXMON]; /* all the monitors */
PLAYER *End_monitor = Monitor; /* last active monitor slot */
#define ALL_PLAYERS ((PLAYER *)1)
PLAYER *b_owner;
void drawmaze(PLAYER *);
void look(PLAYER *);
void check(PLAYER *, int, int);
void showstat(PLAYER *);
void drawplayer(PLAYER *, FLAG);
void message(PLAYER *, const char *);
void checkdam(PLAYER *, PLAYER *, IDENT *, int, char);
void mon_execute(PLAYER *);
void execute(PLAYER *);
void add_shot(int, int, int, char, int, PLAYER *, int, char);
BULLET *create_shot(int, int, int, char, int, int, PLAYER *, IDENT *,
void ammo_update(PLAYER *);
PLAYER *play_at(int, int);
void cgoto(PLAYER *, int, int);
void outch(PLAYER *, char);
void outstr(PLAYER *, const char *, int);
void outyx(PLAYER *, int, int, const char *, ...)
void clrscr(PLAYER *);
void ce(PLAYER *);
void sendcom(PLAYER *, int, ...);
void flush(PLAYER *);
extern PLAYER Player[MAXPL];
extern PLAYER * End_player;
extern PLAYER Boot[NBOOTS];
extern PLAYER Monitor[MAXMON];
extern PLAYER * End_monitor;
PLAYER *
PLAYER *pp;
PLAYER *pp;
PLAYER *pp;
PLAYER *pp;
PLAYER *pp;
static void move_flyer(PLAYER *);
move_flyer(PLAYER *pp)
PLAYER *pp;
PLAYER *pp;
PLAYER *pp;
PLAYER *pp;
outyx(PLAYER *pp, int y, int x, const char *fmt, ...)
clrscr(PLAYER *pp)
ce(PLAYER *pp)
sendcom(PLAYER *pp, int command, ...)
flush(PLAYER *pp)
cgoto(PLAYER *pp, int y, int x)
outch(PLAYER *pp, char ch)
outstr(PLAYER *pp, const char *str, int len)
op = &Player[PLAYER];
Player[PLAYER].was_finished = !Finished;
sort(Player[PLAYER].hand);
&& Player[PLAYER].total < 5000);
Play = PLAYER;
if (!restore || (Player[PLAYER].total >= 5000
if (Player[COMP].total < Player[PLAYER].total)
Player[PLAYER].games++;
else if (Player[COMP].total > Player[PLAYER].total)
Player[PLAYER].total = 0;
if (Play == PLAYER) {
op = &Player[PLAYER];
if (Player[PLAYER].total >= 5000 || Player[COMP].total >= 5000) {
if (Player[PLAYER].total > Player[COMP].total)
Player[PLAYER].games++;
else if (Player[PLAYER].total < Player[COMP].total)
Player[PLAYER].total = 0;
if (Order && Movetype != M_DRAW && goodplay && pp == &Player[PLAYER])
op = (pp == &Player[COMP] ? &Player[PLAYER] : &Player[COMP]);
if (pp == &Player[PLAYER])
if (Play == PLAYER)
if (Play == PLAYER)
pp = &Player[PLAYER];
mvaddch(My_pos.y, My_pos.x, PLAYER);
mvaddch(My_pos.y, My_pos.x, PLAYER);
addch(PLAYER);