Home | History | Annotate | Line # | Download | only in hack
extern.h revision 1.9
      1  1.9     lukem /*	$NetBSD: extern.h,v 1.9 2009/01/18 00:34:03 lukem Exp $	*/
      2  1.1  christos 
      3  1.3  christos /*-
      4  1.3  christos  * Copyright (c) 1997 The NetBSD Foundation, Inc.
      5  1.3  christos  * All rights reserved.
      6  1.3  christos  *
      7  1.3  christos  * This code is derived from software contributed to The NetBSD Foundation
      8  1.3  christos  * by Christos Zoulas.
      9  1.1  christos  *
     10  1.1  christos  * Redistribution and use in source and binary forms, with or without
     11  1.1  christos  * modification, are permitted provided that the following conditions
     12  1.1  christos  * are met:
     13  1.1  christos  * 1. Redistributions of source code must retain the above copyright
     14  1.1  christos  *    notice, this list of conditions and the following disclaimer.
     15  1.1  christos  * 2. Redistributions in binary form must reproduce the above copyright
     16  1.1  christos  *    notice, this list of conditions and the following disclaimer in the
     17  1.1  christos  *    documentation and/or other materials provided with the distribution.
     18  1.1  christos  *
     19  1.3  christos  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     20  1.3  christos  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     21  1.3  christos  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     22  1.3  christos  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     23  1.3  christos  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     24  1.3  christos  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     25  1.3  christos  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     26  1.3  christos  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     27  1.3  christos  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     28  1.3  christos  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     29  1.3  christos  * POSSIBILITY OF SUCH DAMAGE.
     30  1.1  christos  */
     31  1.1  christos #ifndef _EXTERN_H_
     32  1.1  christos #define _EXTERN_H_
     33  1.5       wiz #include <stdarg.h>
     34  1.1  christos #include <stdio.h>
     35  1.1  christos 
     36  1.1  christos /* alloc.c */
     37  1.6       jsm long *alloc(unsigned);
     38  1.6       jsm long *enlarge(char *, unsigned);
     39  1.1  christos 
     40  1.1  christos /* hack.apply.c */
     41  1.6       jsm int doapply(void);
     42  1.6       jsm int holetime(void);
     43  1.6       jsm void dighole(void);
     44  1.1  christos 
     45  1.1  christos /* hack.bones.c */
     46  1.6       jsm void savebones(void);
     47  1.6       jsm int getbones(void);
     48  1.1  christos 
     49  1.1  christos /* hack.c */
     50  1.6       jsm void unsee(void);
     51  1.6       jsm void seeoff(int);
     52  1.6       jsm void domove(void);
     53  1.6       jsm void movobj(struct obj *, int, int);
     54  1.6       jsm int dopickup(void);
     55  1.6       jsm void pickup(int);
     56  1.6       jsm void lookaround(void);
     57  1.6       jsm int monster_nearby(void);
     58  1.6       jsm int rroom(int, int);
     59  1.6       jsm int cansee(xchar, xchar);
     60  1.6       jsm int sgn(int);
     61  1.6       jsm void setsee(void);
     62  1.6       jsm void nomul(int);
     63  1.6       jsm int abon(void);
     64  1.6       jsm int dbon(void);
     65  1.6       jsm void losestr(int);
     66  1.6       jsm void losehp(int, const char *);
     67  1.6       jsm void losehp_m(int, struct monst *);
     68  1.6       jsm void losexp(void);
     69  1.6       jsm int inv_weight(void);
     70  1.6       jsm int inv_cnt(void);
     71  1.6       jsm long newuexp(void);
     72  1.1  christos 
     73  1.1  christos /* hack.cmd.c */
     74  1.6       jsm void rhack(const char *);
     75  1.6       jsm int doextcmd(void);
     76  1.6       jsm char lowc(int);
     77  1.6       jsm char unctrl(int);
     78  1.6       jsm int movecmd(int);
     79  1.6       jsm int getdir(boolean);
     80  1.6       jsm void confdir(void);
     81  1.6       jsm int finddir(void);
     82  1.6       jsm int isroom(int, int);
     83  1.6       jsm int isok(int, int);
     84  1.1  christos 
     85  1.1  christos /* hack.do.c */
     86  1.6       jsm int dodrop(void);
     87  1.6       jsm void dropx(struct obj *);
     88  1.6       jsm void dropy(struct obj *);
     89  1.6       jsm int doddrop(void);
     90  1.6       jsm int dodown(void);
     91  1.6       jsm int doup(void);
     92  1.6       jsm void goto_level(int, boolean);
     93  1.6       jsm int donull(void);
     94  1.6       jsm int dopray(void);
     95  1.6       jsm int dothrow(void);
     96  1.6       jsm struct obj *splitobj(struct obj *, int);
     97  1.6       jsm void more_experienced(int, int);
     98  1.6       jsm void set_wounded_legs(long, int);
     99  1.6       jsm void heal_legs(void);
    100  1.1  christos 
    101  1.1  christos /* hack.do_name.c */
    102  1.6       jsm coord getpos(int, const char *);
    103  1.6       jsm int do_mname(void);
    104  1.6       jsm void do_oname(struct obj *);
    105  1.6       jsm int ddocall(void);
    106  1.6       jsm void docall(struct obj *);
    107  1.6       jsm char *xmonnam(struct monst *, int);
    108  1.6       jsm char *lmonnam(struct monst *);
    109  1.6       jsm char *monnam(struct monst *);
    110  1.6       jsm char *Monnam(struct monst *);
    111  1.6       jsm char *amonnam(struct monst *, const char *);
    112  1.6       jsm char *Amonnam(struct monst *, const char *);
    113  1.6       jsm char *Xmonnam(struct monst *);
    114  1.6       jsm char *visctrl(int);
    115  1.1  christos 
    116  1.1  christos /* hack.do_wear.c */
    117  1.6       jsm void off_msg(struct obj *);
    118  1.6       jsm int doremarm(void);
    119  1.6       jsm int doremring(void);
    120  1.6       jsm int dorr(struct obj *);
    121  1.6       jsm int cursed(struct obj *);
    122  1.6       jsm int armoroff(struct obj *);
    123  1.6       jsm int doweararm(void);
    124  1.6       jsm int dowearring(void);
    125  1.6       jsm void ringoff(struct obj *);
    126  1.6       jsm void find_ac(void);
    127  1.6       jsm void glibr(void);
    128  1.6       jsm struct obj *some_armor(void);
    129  1.6       jsm void corrode_armor(void);
    130  1.1  christos 
    131  1.1  christos /* hack.dog.c */
    132  1.6       jsm void makedog(void);
    133  1.6       jsm void initedog(struct monst *);
    134  1.6       jsm void losedogs(void);
    135  1.6       jsm void keepdogs(void);
    136  1.6       jsm void fall_down(struct monst *);
    137  1.6       jsm int dogfood(struct obj *);
    138  1.6       jsm int dog_move(struct monst *, int);
    139  1.6       jsm int inroom(xchar, xchar);
    140  1.6       jsm int tamedog(struct monst *, struct obj *);
    141  1.1  christos 
    142  1.1  christos /* hack.eat.c */
    143  1.6       jsm void init_uhunger(void);
    144  1.6       jsm int opentin(void);
    145  1.6       jsm int Meatdone(void);
    146  1.6       jsm int doeat(void);
    147  1.6       jsm void gethungry(void);
    148  1.6       jsm void morehungry(int);
    149  1.6       jsm void lesshungry(int);
    150  1.6       jsm int unfaint(void);
    151  1.6       jsm void newuhs(boolean);
    152  1.6       jsm int poisonous(struct obj *);
    153  1.6       jsm int eatcorpse(struct obj *);
    154  1.1  christos 
    155  1.1  christos /* hack.end.c */
    156  1.6       jsm int dodone(void);
    157  1.6       jsm void done1(int);
    158  1.6       jsm void done_intr(int);
    159  1.6       jsm void done_hangup(int);
    160  1.6       jsm void done_in_by(struct monst *);
    161  1.6       jsm void done(const char *);
    162  1.6       jsm void topten(void);
    163  1.6       jsm void outheader(void);
    164  1.1  christos struct toptenentry;
    165  1.6       jsm int outentry(int, struct toptenentry *, int);
    166  1.6       jsm char *itoa(int);
    167  1.6       jsm const char *ordin(int);
    168  1.6       jsm void clearlocks(void);
    169  1.6       jsm void hangup(int) __attribute__((__noreturn__));
    170  1.6       jsm char *eos(char *);
    171  1.6       jsm void charcat(char *, int);
    172  1.6       jsm void prscore(int, char **);
    173  1.1  christos 
    174  1.1  christos /* hack.engrave.c */
    175  1.6       jsm struct engr *engr_at(xchar, xchar);
    176  1.6       jsm int sengr_at(const char *, xchar, xchar);
    177  1.6       jsm void u_wipe_engr(int);
    178  1.6       jsm void wipe_engr_at(xchar, xchar, xchar);
    179  1.6       jsm void read_engr_at(int, int);
    180  1.6       jsm void make_engr_at(int, int, const char *);
    181  1.6       jsm int doengrave(void);
    182  1.6       jsm void save_engravings(int);
    183  1.6       jsm void rest_engravings(int);
    184  1.6       jsm void del_engr(struct engr *);
    185  1.1  christos 
    186  1.1  christos /* hack.fight.c */
    187  1.6       jsm int hitmm(struct monst *, struct monst *);
    188  1.6       jsm void mondied(struct monst *);
    189  1.6       jsm void monstone(struct monst *);
    190  1.6       jsm int fightm(struct monst *);
    191  1.6       jsm int thitu(int, int, const char *);
    192  1.6       jsm boolean hmon(struct monst *, struct obj *, int);
    193  1.6       jsm int attack(struct monst *);
    194  1.1  christos 
    195  1.1  christos /* hack.invent.c */
    196  1.6       jsm struct obj *addinv(struct obj *);
    197  1.6       jsm void useup(struct obj *);
    198  1.6       jsm void freeinv(struct obj *);
    199  1.6       jsm void delobj(struct obj *);
    200  1.6       jsm void freeobj(struct obj *);
    201  1.6       jsm void freegold(struct gold *);
    202  1.6       jsm void deltrap(struct trap *);
    203  1.6       jsm struct monst *m_at(int, int);
    204  1.6       jsm struct obj *o_at(int, int);
    205  1.6       jsm struct obj *sobj_at(int, int, int);
    206  1.6       jsm int carried(struct obj *);
    207  1.6       jsm int carrying(int);
    208  1.6       jsm struct obj *o_on(unsigned int, struct obj *);
    209  1.6       jsm struct trap *t_at(int, int);
    210  1.6       jsm struct gold *g_at(int, int);
    211  1.6       jsm struct obj *mkgoldobj(long);
    212  1.6       jsm struct obj *getobj(const char *, const char *);
    213  1.6       jsm int ckunpaid(struct obj *);
    214  1.6       jsm int ggetobj(const char *, int (*fn)(struct obj *), int);
    215  1.6       jsm int askchain(struct obj *, char *, int, int (*)(struct obj *),
    216  1.6       jsm     int (*)(struct obj *), int);
    217  1.6       jsm char obj_to_let(struct obj *);
    218  1.6       jsm void prinv(struct obj *);
    219  1.6       jsm int ddoinv(void);
    220  1.6       jsm void doinv(char *);
    221  1.6       jsm int dotypeinv(void);
    222  1.6       jsm int dolook(void);
    223  1.6       jsm void stackobj(struct obj *);
    224  1.6       jsm int merged(struct obj *, struct obj *, int);
    225  1.6       jsm int countgold(void);
    226  1.6       jsm int doprgold(void);
    227  1.6       jsm int doprwep(void);
    228  1.6       jsm int doprarm(void);
    229  1.6       jsm int doprring(void);
    230  1.6       jsm int digit(int);
    231  1.1  christos 
    232  1.1  christos /* hack.ioctl.c */
    233  1.6       jsm void getioctls(void);
    234  1.6       jsm void setioctls(void);
    235  1.6       jsm int dosuspend(void);
    236  1.1  christos 
    237  1.1  christos /* hack.lev.c */
    238  1.6       jsm void savelev(int, xchar);
    239  1.9     lukem void bwrite(int, const void *, size_t);
    240  1.6       jsm void saveobjchn(int, struct obj *);
    241  1.6       jsm void savemonchn(int, struct monst *);
    242  1.6       jsm void savegoldchn(int, struct gold *);
    243  1.6       jsm void savetrapchn(int, struct trap *);
    244  1.6       jsm void getlev(int, int, xchar);
    245  1.6       jsm void mread(int, char *, unsigned);
    246  1.6       jsm void mklev(void);
    247  1.1  christos 
    248  1.1  christos /* hack.main.c */
    249  1.6       jsm void glo(int);
    250  1.6       jsm void askname(void);
    251  1.6       jsm void impossible(const char *, ...)
    252  1.1  christos     __attribute__((__format__(__printf__, 1, 2)));
    253  1.6       jsm void stop_occupation(void);
    254  1.1  christos 
    255  1.1  christos /* hack.makemon.c */
    256  1.6       jsm struct monst *makemon(const struct permonst *, int, int);
    257  1.6       jsm coord enexto(xchar, xchar);
    258  1.6       jsm int goodpos(int, int);
    259  1.6       jsm void rloc(struct monst *);
    260  1.6       jsm struct monst *mkmon_at(int, int, int);
    261  1.1  christos 
    262  1.1  christos /* hack.mhitu.c */
    263  1.6       jsm int mhitu(struct monst *);
    264  1.6       jsm int hitu(struct monst *, int);
    265  1.1  christos 
    266  1.1  christos /* hack.mklev.c */
    267  1.6       jsm void makelevel(void);
    268  1.6       jsm int makerooms(void);
    269  1.6       jsm void addrs(int, int, int, int);
    270  1.6       jsm void addrsx(int, int, int, int, boolean);
    271  1.1  christos struct mkroom;
    272  1.6       jsm int comp(const void *, const void *);
    273  1.6       jsm coord finddpos(int, int, int, int);
    274  1.6       jsm int okdoor(int, int);
    275  1.6       jsm void dodoor(int, int, struct mkroom *);
    276  1.6       jsm void dosdoor(int, int, struct mkroom *, int);
    277  1.6       jsm int maker(schar, schar, schar, schar);
    278  1.6       jsm void makecorridors(void);
    279  1.6       jsm void join(int, int);
    280  1.6       jsm void make_niches(void);
    281  1.6       jsm void makevtele(void);
    282  1.6       jsm void makeniche(boolean);
    283  1.6       jsm void mktrap(int, int, struct mkroom *);
    284  1.1  christos 
    285  1.1  christos /* hack.mkmaze.c */
    286  1.6       jsm void makemaz(void);
    287  1.6       jsm void walkfrom(int, int);
    288  1.6       jsm void move(int *, int *, int);
    289  1.6       jsm int okay(int, int, int);
    290  1.6       jsm coord mazexy(void);
    291  1.1  christos 
    292  1.1  christos /* hack.mkobj.c */
    293  1.6       jsm struct obj *mkobj_at(int, int, int);
    294  1.6       jsm void mksobj_at(int, int, int);
    295  1.6       jsm struct obj *mkobj(int);
    296  1.6       jsm struct obj *mksobj(int);
    297  1.6       jsm int letter(int);
    298  1.6       jsm int weight(struct obj *);
    299  1.6       jsm void mkgold(long, int, int);
    300  1.1  christos 
    301  1.1  christos /* hack.mkshop.c */
    302  1.6       jsm void mkshop(void);
    303  1.6       jsm void mkzoo(int);
    304  1.6       jsm const struct permonst *morguemon(void);
    305  1.6       jsm void mkswamp(void);
    306  1.6       jsm int nexttodoor(int, int);
    307  1.6       jsm int has_dnstairs(struct mkroom *);
    308  1.6       jsm int has_upstairs(struct mkroom *);
    309  1.6       jsm int isbig(struct mkroom *);
    310  1.6       jsm int dist2(int, int, int, int);
    311  1.6       jsm int sq(int);
    312  1.1  christos 
    313  1.1  christos /* hack.mon.c */
    314  1.6       jsm void movemon(void);
    315  1.6       jsm void justswld(struct monst *, const char *);
    316  1.6       jsm void youswld(struct monst *, int, int, const char *);
    317  1.6       jsm int dochugw(struct monst *);
    318  1.6       jsm int dochug(struct monst *);
    319  1.6       jsm int m_move(struct monst *, int);
    320  1.6       jsm void mpickgold(struct monst *);
    321  1.6       jsm void mpickgems(struct monst *);
    322  1.6       jsm int mfndpos(struct monst *, coord[9 ], int[9 ], int);
    323  1.6       jsm int dist(int, int);
    324  1.6       jsm void poisoned(const char *, const char *);
    325  1.6       jsm void mondead(struct monst *);
    326  1.6       jsm void replmon(struct monst *, struct monst *);
    327  1.6       jsm void relmon(struct monst *);
    328  1.6       jsm void monfree(struct monst *);
    329  1.6       jsm void dmonsfree(void);
    330  1.6       jsm void unstuck(struct monst *);
    331  1.6       jsm void killed(struct monst *);
    332  1.6       jsm void kludge(const char *, const char *);
    333  1.6       jsm void rescham(void);
    334  1.6       jsm int newcham(struct monst *, const struct permonst *);
    335  1.6       jsm void mnexto(struct monst *);
    336  1.6       jsm int ishuman(struct monst *);
    337  1.6       jsm void setmangry(struct monst *);
    338  1.6       jsm int canseemon(struct monst *);
    339  1.1  christos 
    340  1.1  christos /* hack.monst.c */
    341  1.1  christos 
    342  1.1  christos /* hack.o_init.c */
    343  1.6       jsm int letindex(int);
    344  1.6       jsm void init_objects(void);
    345  1.6       jsm int probtype(int);
    346  1.6       jsm void setgemprobs(void);
    347  1.6       jsm void oinit(void);
    348  1.6       jsm void savenames(int);
    349  1.6       jsm void restnames(int);
    350  1.6       jsm int dodiscovered(void);
    351  1.6       jsm int interesting_to_discover(int);
    352  1.1  christos 
    353  1.1  christos /* hack.objnam.c */
    354  1.6       jsm char *strprepend(char *, char *);
    355  1.6       jsm char *sitoa(int);
    356  1.6       jsm char *typename(int);
    357  1.6       jsm char *xname(struct obj *);
    358  1.6       jsm char *doname(struct obj *);
    359  1.6       jsm void setan(const char *, char *);
    360  1.6       jsm char *aobjnam(struct obj *, const char *);
    361  1.6       jsm char *Doname(struct obj *);
    362  1.6       jsm struct obj *readobjnam(char *);
    363  1.1  christos 
    364  1.1  christos /* hack.options.c */
    365  1.6       jsm void initoptions(void);
    366  1.6       jsm void parseoptions(char *, boolean);
    367  1.6       jsm int doset(void);
    368  1.1  christos 
    369  1.1  christos /* hack.pager.c */
    370  1.6       jsm int dowhatis(void);
    371  1.6       jsm void intruph(int);
    372  1.6       jsm void page_more(FILE *, int);
    373  1.6       jsm void set_whole_screen(void);
    374  1.6       jsm int readnews(void);
    375  1.6       jsm void set_pager(int);
    376  1.6       jsm int page_line(const char *);
    377  1.6       jsm void cornline(int, const char *);
    378  1.6       jsm int dohelp(void);
    379  1.6       jsm int page_file(const char *, boolean);
    380  1.6       jsm int dosh(void);
    381  1.6       jsm int child(int);
    382  1.1  christos 
    383  1.1  christos /* hack.potion.c */
    384  1.6       jsm int dodrink(void);
    385  1.6       jsm void pluslvl(void);
    386  1.6       jsm void strange_feeling(struct obj *, const char *);
    387  1.6       jsm void potionhit(struct monst *, struct obj *);
    388  1.6       jsm void potionbreathe(struct obj *);
    389  1.6       jsm int dodip(void);
    390  1.6       jsm void ghost_from_bottle(void);
    391  1.1  christos 
    392  1.1  christos /* hack.pri.c */
    393  1.6       jsm void swallowed(void);
    394  1.6       jsm void panic(const char *, ...)
    395  1.1  christos     __attribute__((__format__(__printf__, 1, 2)));
    396  1.6       jsm void atl(int, int, int);
    397  1.6       jsm void on_scr(int, int);
    398  1.6       jsm void tmp_at(schar, schar);
    399  1.6       jsm void Tmp_at(schar, schar);
    400  1.6       jsm void setclipped(void) __attribute__((__noreturn__));
    401  1.6       jsm void at(xchar, xchar, int);
    402  1.6       jsm void prme(void);
    403  1.6       jsm int doredraw(void);
    404  1.6       jsm void docrt(void);
    405  1.6       jsm void docorner(int, int);
    406  1.6       jsm void curs_on_u(void);
    407  1.6       jsm void pru(void);
    408  1.6       jsm void prl(int, int);
    409  1.6       jsm char news0(xchar, xchar);
    410  1.6       jsm void newsym(int, int);
    411  1.6       jsm void mnewsym(int, int);
    412  1.6       jsm void nosee(int, int);
    413  1.6       jsm void prl1(int, int);
    414  1.6       jsm void nose1(int, int);
    415  1.6       jsm int vism_at(int, int);
    416  1.6       jsm void pobj(struct obj *);
    417  1.6       jsm void unpobj(struct obj *);
    418  1.6       jsm void seeobjs(void);
    419  1.6       jsm void seemons(void);
    420  1.6       jsm void pmon(struct monst *);
    421  1.6       jsm void unpmon(struct monst *);
    422  1.6       jsm void nscr(void);
    423  1.6       jsm void cornbot(int);
    424  1.6       jsm void bot(void);
    425  1.6       jsm void mstatusline(struct monst *);
    426  1.6       jsm void cls(void);
    427  1.1  christos 
    428  1.1  christos /* hack.read.c */
    429  1.6       jsm int doread(void);
    430  1.6       jsm int identify(struct obj *);
    431  1.6       jsm void litroom(boolean);
    432  1.6       jsm int monstersym(int);
    433  1.1  christos 
    434  1.1  christos /* hack.rip.c */
    435  1.6       jsm void outrip(void);
    436  1.6       jsm void center(int, char *);
    437  1.1  christos 
    438  1.1  christos /* hack.rumors.c */
    439  1.6       jsm void init_rumors(FILE *);
    440  1.6       jsm int skipline(FILE *);
    441  1.6       jsm void outline(FILE *);
    442  1.6       jsm void outrumor(void);
    443  1.6       jsm int used(int);
    444  1.1  christos 
    445  1.1  christos /* hack.save.c */
    446  1.6       jsm int dosave(void);
    447  1.6       jsm int dosave0(int);
    448  1.6       jsm int dorecover(int);
    449  1.6       jsm struct obj *restobjchn(int);
    450  1.6       jsm struct monst *restmonchn(int);
    451  1.1  christos 
    452  1.1  christos /* hack.search.c */
    453  1.6       jsm int findit(void);
    454  1.6       jsm int dosearch(void);
    455  1.6       jsm int doidtrap(void);
    456  1.6       jsm void wakeup(struct monst *);
    457  1.6       jsm void seemimic(struct monst *);
    458  1.1  christos 
    459  1.1  christos /* hack.shk.c */
    460  1.6       jsm void obfree(struct obj *, struct obj *);
    461  1.6       jsm void paybill(void);
    462  1.6       jsm char *shkname(struct monst *);
    463  1.6       jsm void shkdead(struct monst *);
    464  1.6       jsm void replshk(struct monst *, struct monst *);
    465  1.6       jsm int inshop(void);
    466  1.6       jsm int dopay(void);
    467  1.1  christos struct bill_x;
    468  1.6       jsm struct obj *bp_to_obj(struct bill_x *);
    469  1.6       jsm void addtobill(struct obj *);
    470  1.6       jsm void splitbill(struct obj *, struct obj *);
    471  1.6       jsm void subfrombill(struct obj *);
    472  1.6       jsm int doinvbill(int);
    473  1.6       jsm int shkcatch(struct obj *);
    474  1.6       jsm int shk_move(struct monst *);
    475  1.6       jsm void shopdig(int);
    476  1.6       jsm int online(int, int);
    477  1.6       jsm int follower(struct monst *);
    478  1.1  christos 
    479  1.1  christos /* hack.shknam.c */
    480  1.6       jsm void findname(char *, int);
    481  1.1  christos 
    482  1.1  christos /* hack.steal.c */
    483  1.6       jsm long somegold(void);
    484  1.6       jsm void stealgold(struct monst *);
    485  1.6       jsm int stealarm(void);
    486  1.6       jsm int steal(struct monst *);
    487  1.6       jsm void mpickobj(struct monst *, struct obj *);
    488  1.6       jsm int stealamulet(struct monst *);
    489  1.6       jsm void relobj(struct monst *, int);
    490  1.1  christos 
    491  1.1  christos /* hack.termcap.c */
    492  1.6       jsm void startup(void);
    493  1.6       jsm void start_screen(void);
    494  1.6       jsm void end_screen(void);
    495  1.6       jsm void curs(int, int);
    496  1.6       jsm void nocmov(int, int);
    497  1.6       jsm void cmov(int, int);
    498  1.6       jsm int xputc(int);
    499  1.7  dholland void xputs(const char *);
    500  1.6       jsm void cl_end(void);
    501  1.6       jsm void clear_screen(void);
    502  1.6       jsm void home(void);
    503  1.6       jsm void standoutbeg(void);
    504  1.6       jsm void standoutend(void);
    505  1.6       jsm void backsp(void);
    506  1.6       jsm void bell(void);
    507  1.6       jsm void delay_output(void);
    508  1.6       jsm void cl_eos(void);
    509  1.1  christos 
    510  1.1  christos /* hack.timeout.c */
    511  1.6       jsm void timeout(void);
    512  1.6       jsm void stoned_dialogue(void);
    513  1.1  christos 
    514  1.1  christos /* hack.topl.c */
    515  1.6       jsm int doredotopl(void);
    516  1.6       jsm void redotoplin(void);
    517  1.6       jsm void remember_topl(void);
    518  1.6       jsm void addtopl(const char *);
    519  1.6       jsm void xmore(const char *);
    520  1.6       jsm void more(void);
    521  1.6       jsm void cmore(const char *);
    522  1.6       jsm void clrlin(void);
    523  1.6       jsm void pline(const char *, ...)
    524  1.1  christos     __attribute__((__format__(__printf__, 1, 2)));
    525  1.6       jsm void vpline(const char *, va_list)
    526  1.4       jsm     __attribute__((__format__(__printf__, 1, 0)));
    527  1.6       jsm void putsym(int);
    528  1.6       jsm void putstr(const char *);
    529  1.1  christos 
    530  1.1  christos /* hack.track.c */
    531  1.6       jsm void initrack(void);
    532  1.6       jsm void settrack(void);
    533  1.6       jsm coord *gettrack(int, int);
    534  1.1  christos 
    535  1.1  christos /* hack.trap.c */
    536  1.6       jsm struct trap *maketrap(int, int, int);
    537  1.6       jsm void dotrap(struct trap *);
    538  1.6       jsm int mintrap(struct monst *);
    539  1.6       jsm void selftouch(const char *);
    540  1.6       jsm void float_up(void);
    541  1.6       jsm void float_down(void);
    542  1.6       jsm void vtele(void);
    543  1.6       jsm void tele(void);
    544  1.6       jsm void teleds(int, int);
    545  1.6       jsm int teleok(int, int);
    546  1.6       jsm int dotele(void);
    547  1.6       jsm void placebc(int);
    548  1.6       jsm void unplacebc(void);
    549  1.6       jsm void level_tele(void);
    550  1.6       jsm void drown(void);
    551  1.1  christos 
    552  1.1  christos /* hack.tty.c */
    553  1.6       jsm void gettty(void);
    554  1.6       jsm void settty(const char *);
    555  1.6       jsm void setctty(void);
    556  1.6       jsm void setftty(void);
    557  1.6       jsm void error(const char *, ...)
    558  1.1  christos     __attribute__((__format__(__printf__, 1, 2),__noreturn__));
    559  1.6       jsm void getlin(char *);
    560  1.6       jsm void getret(void);
    561  1.6       jsm void cgetret(const char *);
    562  1.6       jsm void xwaitforspace(const char *);
    563  1.6       jsm char *parse(void);
    564  1.6       jsm char readchar(void);
    565  1.6       jsm void end_of_input(void) __attribute__((__noreturn__));
    566  1.1  christos 
    567  1.1  christos /* hack.u_init.c */
    568  1.6       jsm void u_init(void);
    569  1.1  christos struct trobj;
    570  1.6       jsm void ini_inv(struct trobj *);
    571  1.6       jsm void wiz_inv(void);
    572  1.6       jsm void plnamesuffix(void);
    573  1.6       jsm int role_index(int);
    574  1.1  christos 
    575  1.1  christos /* hack.unix.c */
    576  1.6       jsm void setrandom(void);
    577  1.6       jsm struct tm *getlt(void);
    578  1.6       jsm int getyear(void);
    579  1.6       jsm char *getdate(void);
    580  1.6       jsm int phase_of_the_moon(void);
    581  1.6       jsm int night(void);
    582  1.6       jsm int midnight(void);
    583  1.6       jsm void gethdate(char *);
    584  1.6       jsm int uptodate(int);
    585  1.6       jsm int veryold(int);
    586  1.6       jsm void getlock(void);
    587  1.6       jsm void getmailstatus(void);
    588  1.6       jsm void ckmailstatus(void);
    589  1.6       jsm void newmail(void);
    590  1.6       jsm void mdrush(struct monst *, boolean);
    591  1.6       jsm void readmail(void);
    592  1.6       jsm void regularize(char *);
    593  1.1  christos 
    594  1.1  christos /* hack.vault.c */
    595  1.6       jsm void setgd(void);
    596  1.6       jsm int gd_move(void);
    597  1.6       jsm void gddead(void);
    598  1.6       jsm void replgd(struct monst *, struct monst *);
    599  1.6       jsm void invault(void);
    600  1.1  christos 
    601  1.1  christos /* hack.version.c */
    602  1.6       jsm int doversion(void);
    603  1.1  christos 
    604  1.1  christos /* hack.wield.c */
    605  1.6       jsm void setuwep(struct obj *);
    606  1.6       jsm int dowield(void);
    607  1.6       jsm void corrode_weapon(void);
    608  1.6       jsm int chwepon(struct obj *, int);
    609  1.1  christos 
    610  1.1  christos /* hack.wizard.c */
    611  1.6       jsm void amulet(void);
    612  1.6       jsm int wiz_hit(struct monst *);
    613  1.6       jsm void inrange(struct monst *);
    614  1.6       jsm void aggravate(void);
    615  1.6       jsm void clonewiz(struct monst *);
    616  1.1  christos 
    617  1.1  christos /* hack.worm.c */
    618  1.1  christos #ifndef NOWORM
    619  1.6       jsm int getwn(struct monst *);
    620  1.6       jsm void initworm(struct monst *);
    621  1.6       jsm void worm_move(struct monst *);
    622  1.6       jsm void worm_nomove(struct monst *);
    623  1.6       jsm void wormdead(struct monst *);
    624  1.6       jsm void wormhit(struct monst *);
    625  1.6       jsm void wormsee(unsigned);
    626  1.1  christos struct wseg;
    627  1.6       jsm void pwseg(struct wseg *);
    628  1.6       jsm void cutworm(struct monst *, xchar, xchar, uchar);
    629  1.6       jsm void remseg(struct wseg *);
    630  1.1  christos #endif
    631  1.1  christos 
    632  1.1  christos /* hack.worn.c */
    633  1.6       jsm void setworn(struct obj *, long);
    634  1.6       jsm void setnotworn(struct obj *);
    635  1.1  christos 
    636  1.1  christos /* hack.zap.c */
    637  1.6       jsm void bhitm(struct monst *, struct obj *);
    638  1.6       jsm int bhito(struct obj *, struct obj *);
    639  1.6       jsm int dozap(void);
    640  1.6       jsm const char *exclam(int);
    641  1.6       jsm void hit(const char *, struct monst *, const char *);
    642  1.6       jsm void miss(const char *, struct monst *);
    643  1.6       jsm struct monst *bhit(int, int, int, int,
    644  1.1  christos     void (*)(struct monst *, struct obj *),
    645  1.1  christos     int (*)(struct obj *, struct obj *),
    646  1.6       jsm     struct obj *);
    647  1.6       jsm struct monst *boomhit(int, int);
    648  1.6       jsm char dirlet(int, int);
    649  1.6       jsm void buzz(int, xchar, xchar, int, int);
    650  1.6       jsm int zhit(struct monst *, int);
    651  1.6       jsm int revive(struct obj *);
    652  1.6       jsm void rloco(struct obj *);
    653  1.6       jsm void fracture_rock(struct obj *);
    654  1.6       jsm void burn_scrolls(void);
    655  1.1  christos 
    656  1.1  christos /* rnd.c */
    657  1.6       jsm int rn1(int, int);
    658  1.6       jsm int rn2(int);
    659  1.6       jsm int rnd(int);
    660  1.6       jsm int d(int, int);
    661  1.1  christos #endif /* _EXTERN_H_ */
    662