Home | History | Annotate | Line # | Download | only in hack
extern.h revision 1.10
      1  1.10  ginsbach /*	$NetBSD: extern.h,v 1.10 2009/05/06 02:59:12 ginsbach 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.10  ginsbach char *getdatestr(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