EXTTHG player;
EXTWEP weaps[];
EXTARM armors[];
EXTMON monsters[], *mtlev[];
EXTTRAP traps[];
EXTROOM *oldrp, rooms[];
EXTCORD delta, stairs, oldpos, rndspot;
EXTLKL *mlist, *lvl_obj;
EXTOBJ *cur_armor, *cur_weapon, *cur_ring[];
EXTMAG r_magic[], s_magic[], ws_magic[], p_magic[];
EXTMAG things[], a_magic[], w_magic[];
EXTINT max_hp, quiet, food_left, hungry_state, level, max_level;
EXTINT foodlev, total, count, demoncnt, fung_hit, ntraps;
EXTINT lastscore, purse, mpos, seed, dnum, no_food, packvol, playuid;
EXTINT curprice, trader, group, levcount, levtype, ringfood, playgid;
EXTINT chkstairs(), notfight();
EXTINT prntfile();
EXTBOOL running, nochange, after, inwhgt, isfight, firstmove, nlmove;
EXTBOOL wizard, waswizard, in_shell, amulet, door_stop, playing, use_savedir;
EXTBOOL notify, ws_know[], p_know[], s_know[], r_know[], inpool;
EXTCHAR home[], file_name[], whoami[], fruit[], curpurch[], scorefile[];
EXTCHAR *r_stones[], *p_colors[], *s_names[], *ws_type[], *ws_made[];
EXTCHAR *ws_guess[], *s_guess[], *r_guess[], *p_guess[];/*, *unctrl();*/
EXTCHAR morestr[], prbuf[], huh[];
EXTCHAR *release, take, runch;
EXTCHAR retstr[], wizstr[], spacemsg[], illegal[], callit[], starlist[];
EXTSTAT max_stats, *him;
extern struct magic_info thnginfo[];
extern struct real re_stats;
extern long e_levels[];
extern struct rod ws_stuff[];
extern struct sgttyb _tty;

extern struct coord nh;
extern struct delayed_action d_list[MAXDAEMONS];
extern int between;

extern char *rainbow[NCOLORS];
extern char *sylls[NSYLS];
extern char *stones[NSTONES];
extern char *wood[NWOOD];
extern char *metal[NMETAL];

void    _attach(struct linked_list **list, struct linked_list *item);
void    _detach(struct linked_list **list, struct linked_list *item);
void    _free_list(struct linked_list **ptr);
void    activity(void);
int     add_dam(struct stats *who);
void    add_haste(bool potion);
void    add_mon(struct room *rm, bool treas);
bool    add_pack(struct linked_list *item, bool silent);
void    add_pass(void);
void    addmsg(char *fmt, ...);
void    aggravate(void);
int     attack(struct thing *mp);
bool    author(void);
void    auto_save(int a);
int     be_trapped(struct coord *tc, struct thing *th);
void    buy_it(void);
void    byebye(int how);
bool    cansee(int y, int x);
char   *charge_str(struct object *obj);
void    check_level(void);
void    chg_abil(int what, int amt, int how);
void    chg_hpt(int howmany, bool alsomax, char what);
void    command(void);
bool    cordok(int y, int x);
void    create_obj(bool fscr);
void    cur_null(struct object *op);
void    dbotline(WINDOW *scr, char *message);
bool    dead_end(char ch);
void    death(char monst);
void    del_pack(struct linked_list *what);
bool    diag_ok(struct coord *sp, struct coord *ep);
void    dip_it(void);
void    discard(struct linked_list *item);
void    displevl(void);
void    dispmax(void);
void    dispmons(void);
void    do_daemons(int flag);
void    do_fuses(void);
void    do_maze(void);
void    do_motion(struct object *obj, int ydelta, int xdelta);
void    do_move(int dy, int dx);
void    do_passages(void);
void    do_post(void);
void    do_rooms(void);
void    do_run(char ch);
void    do_zap(bool gotdir);
void    doctor(int fromfuse);
void    draw_room(struct room *rp);
int     drop(struct linked_list *item);
bool    dropcheck(struct object *op);
void    eat(void);
int     encread(void *starta, unsigned int size, FILE *inf);
void    encwrite(void *starta, unsigned int size, FILE *outf);
void    endit(int a);
void    endmsg(void);
void    extinguish(void (*func)());
int     extras(void);
void    fall(struct linked_list *item, bool pr);
bool    fallpos(struct coord *pos, struct coord *newpos, bool passages);
void    fatal(char *s);
bool    fight(struct coord *mp, struct object *weap, bool thrown);
struct linked_list *find_mons(int y, int x);
struct linked_list *find_obj(int y, int x);
void    fix_stick(struct object *cur);
void    fuse(void (*func)(), int arg, int time);
void    game_err(int a);
void    genocide(void);
bool    get_dir(void);
struct linked_list *get_item(char *purpose, int type);
int     get_str(char *opt, WINDOW *awin);
int     get_worth(struct object *obj);
int     getbless(void);
int     getindex(char what);
int     getpcon(struct stats *who);
int     getpdex(struct stats *who, bool heave);
int     getpwis(struct stats *who);
void    heal_self(int factor, bool updmaxhp);
bool    hit_monster(struct coord *mp, struct object *obj);
int     hitweight(void);
bool    hurt_armor(struct object *obj);
void    idenpack(void);
char   *identify(int what);
void    ignore(void);
bool    illeg_ch(unsigned char ch);
void    init_everything(void);
void    init_ring(struct object *what, bool fromwiz);
void    init_weapon(struct object *weap, int type);
void    initarmor(struct object *obj, int what);
void    initfood(struct object *what);
char   *inv_name(struct object *obj, bool drop);
bool    inventory(struct linked_list *list, int type);
int     itemvol(struct object *wh);
int     itemweight(struct object *wh);
bool    is_current(struct object *obj);
bool    is_magic(struct object *obj);
bool    isatrap(char ch);
bool    isring(int hand, int ring);
bool    iswearing(int ring);
void    killed(struct linked_list *item, bool pr);
void    lengthen(void (*func)(), int xtime);
void    lev_mon(void);
void    light(struct coord *cp);
void    look(bool wakeup);
bool    magring(struct object *what);
bool    makemons(int what);
int     midx(char whichmon);
void    missile(int ydelta, int xdelta);
void    money(void);
bool    monhurt(struct thing *th);
void    msg(char *fmt, ...);
char   *new(int size);
struct linked_list *new_item(int size);
void    new_level(int ltype);
struct linked_list *new_monster(char type, struct coord *cp, bool treas);
struct linked_list *new_thing(bool treas, int type, int which);
void    nohaste(int fromfuse);
void    noteth(int fromfuse);
void    notinvinc(int fromfuse);
void    notregen(int fromfuse);
void    notslow(int fromfuse);
char    npch(char ch);
char   *num(int n1, int n2);
bool    o_off(struct object *what, long bit);
bool    o_on(struct object *what, long bit);
void    option(void);
char    pack_char(struct object *obj);
void    parse_opts(char *str);
bool    passwd(void);
int     pick_one(struct magic_item *mag);
void    pick_up(char ch);
void    picky_inven(void);
bool    pl_off(long what);
bool    pl_on(long what);
void    playit(void);
bool    price_it(void);
void    quaff(void);
void    quit(int a);
void    raise_level(void);
void    rchg_str(int amt);
void    read_scroll(void);
int     readchar(void);
void    remove_monster(struct coord *mp, struct linked_list *item);
void    resoflg(struct object *what, long bit);
bool    restore(char *file, char **envp);
void    restscr(WINDOW *scr);
bool    rf_on(struct room *rm, long bit);
char   *ring_num(struct object *what);
void    ring_off(void);
void    ring_on(void);
void    ringabil(void);
int     ringex(int rtype);
int     rnd(int range);
char    rnd_mon(bool wander, bool baddie);
struct coord *rnd_pos(struct room *rp);
int     rnd_room(void);
struct coord *rndmove(struct thing *who);
int     roll(int number, int sides);
void    rollwand(int fromfuse);
struct room *roomin(struct coord *cp);
int     rs_restore_file(FILE *inf);
int     rs_save_file(FILE *savef);
void    runners(void);
void    runto(struct coord *runner, struct coord *spot);
void    sapem(int fromfuse);
bool    save(int which);
bool    save_game(void);
bool    save_throw(int which, struct thing *tp);
void    score(int amount, int aflag, char monst);
void    sell_it(void);
void    setoflg(struct object *what, long bit);
void    setup(void);
char    show(int y, int x);
bool    showtop(int showname);
void    sight(int fromfuse);
void    start_daemon(void (*func)(), int arg, int type);
void    status(int fromfuse);
bool    step_ok(unsigned char ch);
void    stomach(int fromfuse);
int     str_plus(struct stats *who);
void    strucpy(char *s1, char *s2, int len);
void    swander(int fromfuse);
bool    swing(int at_lvl, int op_arm, int wplus);
void    take_off(void);
int     teleport(struct coord spot, struct thing *th);
void    toss_ring(struct object *what);
void    total_winner(void);
int     totalenc(void);
char   *tr_name(char ch);
struct trap *trap_at(int y, int x);
void    unconfuse(int fromfuse);
void    unhold(char whichmon);
void    unsee(int fromfuse);
void    updpack(void);
char   *vowelstr(char *str);
void    wait_for(WINDOW *win, char ch);
struct linked_list *wake_monster(int y, int x);
void    wanderer(void);
void    waste_time(void);
void    wear(void);
void    wghtchk(int fromfuse);
void    whatis(struct linked_list *what);
void    wield(void);
char    winat(int y, int x);
void    writelog(int amount, int aflag, char monst);
