Merge branch 'NetHack-3.7' into twitch-interact

This commit is contained in:
2025-08-30 11:09:34 -07:00
396 changed files with 31854 additions and 14952 deletions

View File

@@ -1,4 +1,4 @@
/* NetHack 3.7 extern.h $NHDT-Date: 1723580890 2024/08/13 20:28:10 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1435 $ */
/* NetHack 3.7 extern.h $NHDT-Date: 1738638877 2025/02/03 19:14:37 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1476 $ */
/* Copyright (c) Steve Creps, 1988. */
/* NetHack may be freely redistributed. See license for details. */
@@ -67,6 +67,10 @@
*
*/
#ifndef ARTIFACT_H
#include "artifact.h"
#endif
/* ### alloc.c ### */
#if 0
@@ -126,7 +130,9 @@ extern void use_unicorn_horn(struct obj **);
extern boolean tinnable(struct obj *) NONNULLPTRS;
extern void reset_trapset(void);
extern int use_whip(struct obj *) NONNULLPTRS;
extern boolean could_pole_mon(void);
extern int use_pole(struct obj *, boolean) NONNULLPTRS;
extern void maybe_dunk_boulders(coordxy, coordxy);
extern void fig_transform(union any *, long) NONNULLARG1;
extern int unfixable_trouble_count(boolean);
@@ -136,7 +142,7 @@ extern void init_artifacts(void);
extern void save_artifacts(NHFILE *);
extern void restore_artifacts(NHFILE *);
extern const char *artiname(int);
extern struct obj *mk_artifact(struct obj *, aligntyp);
extern struct obj *mk_artifact(struct obj *, aligntyp, uchar, boolean);
extern const char *artifact_name(const char *, short *, boolean) NONNULLARG1;
extern boolean exist_artifact(int, const char *) NONNULLPTRS;
extern void artifact_exists(struct obj *, const char *, boolean, unsigned) ;
@@ -181,6 +187,7 @@ extern void mkot_trap_warn(void);
extern boolean is_magic_key(struct monst *, struct obj *);
extern struct obj *has_magic_key(struct monst *);
extern boolean is_art(struct obj *, int);
extern boolean permapoisoned(struct obj *);
/* ### attrib.c ### */
@@ -246,6 +253,8 @@ extern void savebones(int, time_t, struct obj *);
extern int getbones(void);
extern boolean bones_include_name(const char *) NONNULLARG1;
extern void fix_ghostly_obj(struct obj *) NONNULLARG1;
extern void newebones(struct monst *) NONNULLARG1;
extern void free_ebones(struct monst *) NONNULLARG1;
/* ### botl.c ### */
@@ -301,6 +310,28 @@ extern boolean friday_13th(void);
extern int night(void);
extern int midnight(void);
/* ### cfgfiles.c ### */
#if !defined(CROSSCOMPILE) || defined(CROSSCOMPILE_TARGET)
extern int l_get_config_errors(lua_State *) NONNULLARG1;
#endif
extern int do_write_config_file(void);
extern boolean parse_config_line(char *) NONNULLARG1;
#ifdef USER_SOUNDS
extern boolean can_read_file(const char *) NONNULLARG1;
#endif
extern void config_error_init(boolean, const char *, boolean);
extern void config_erradd(const char *);
extern int config_error_done(void);
/* arg1 of read_config_file can be NULL to pass through
* to fopen_config_file() to mean 'use the default config file name' */
extern boolean read_config_file(const char *, int);
extern boolean parse_conf_str(const char *str, boolean (*proc)(char *));
extern boolean parse_conf_file(FILE *fp, boolean (*proc)(char *arg));
extern void set_configfile_name(const char *);
extern char *get_configfile(void);
extern const char *get_default_configfile(void);
/* ### coloratt.c ### */
extern char *color_attr_to_str(color_attr *);
@@ -394,8 +425,10 @@ extern char extcmd_initiator(void);
extern int doextcmd(void);
extern struct ext_func_tab *extcmds_getentry(int);
extern int count_bind_keys(void);
extern int count_autocompletions(void);
extern void get_changed_key_binds(strbuf_t *);
extern void handler_rebind_keys(void);
extern void handler_change_autocompletions(void);
extern int extcmds_match(const char *, int, int **);
extern const char *key2extcmddesc(uchar);
extern boolean bind_specialkey(uchar, const char *);
@@ -411,7 +444,7 @@ extern int enter_explore_mode(void);
extern boolean bind_mousebtn(int, const char *);
extern boolean bind_key(uchar, const char *);
extern void dokeylist(void);
extern coordxy xytod(coordxy, coordxy);
extern int xytod(coordxy, coordxy);
extern void dtoxy(coord *, int);
extern int movecmd(char, int);
extern int dxdy_moveok(void);
@@ -730,12 +763,14 @@ extern int remarm_swapwep(void);
extern int destroy_arm(struct obj *);
extern void adj_abon(struct obj *, schar) NONNULLARG1;
extern boolean inaccessible_equipment(struct obj *, const char *, boolean);
extern int any_worn_armor_ok(struct obj *);
extern int count_worn_armor(void);
/* ### dog.c ### */
extern void newedog(struct monst *) NONNULLARG1;
extern void free_edog(struct monst *) NONNULLARG1;
extern void initedog(struct monst *) NONNULLARG1;
extern void initedog(struct monst *, boolean) NONNULLARG1;
extern struct monst *make_familiar(struct obj *, coordxy, coordxy, boolean);
extern struct monst *makedog(void);
extern void update_mlstmv(void);
@@ -757,7 +792,7 @@ extern struct obj *droppables(struct monst *) NONNULLARG1;
extern int dog_nutrition(struct monst *, struct obj *) NONNULLPTRS;
extern int dog_eat(struct monst *, struct obj *,
coordxy, coordxy, boolean) NONNULLPTRS;
extern int pet_ranged_attk(struct monst *) NONNULLARG1;
extern int pet_ranged_attk(struct monst *, boolean) NONNULLARG1;
extern int dog_move(struct monst *, int) NONNULLARG1;
extern boolean could_reach_item(struct monst *, coordxy, coordxy) NONNULLARG1;
extern void finish_meating(struct monst *) NONNULLARG1;
@@ -940,20 +975,21 @@ extern char *build_english_list(char *) NONNULLARG1;
/* ### engrave.c ### */
extern char *random_engraving(char *) NONNULLARG1;
extern char *random_engraving(char *, char *) NONNULLARG12;
extern void wipeout_text(char *, int, unsigned) NONNULLARG1;
extern boolean can_reach_floor(boolean);
extern void cant_reach_floor(coordxy, coordxy, boolean, boolean);
extern void cant_reach_floor(coordxy, coordxy, boolean, boolean, boolean);
extern struct engr *engr_at(coordxy, coordxy);
extern struct engr *sengr_at(const char *, coordxy, coordxy, boolean) NONNULLARG1;
extern void u_wipe_engr(int);
extern void wipe_engr_at(coordxy, coordxy, xint16, boolean);
extern void read_engr_at(coordxy, coordxy);
extern void make_engr_at(coordxy, coordxy, const char *, long, int) NONNULLARG3;
extern void make_engr_at(coordxy, coordxy, const char *, const char *, long, int) NONNULLARG3;
extern void del_engr_at(coordxy, coordxy);
extern int freehand(void);
extern int doengrave(void);
extern void sanitize_engravings(void);
extern void forget_engravings(void);
extern void engraving_sanity_check(void);
extern void save_engravings(NHFILE *) NONNULLARG1;
extern void rest_engravings(NHFILE *) NONNULLARG1;
@@ -964,6 +1000,7 @@ extern void make_grave(coordxy, coordxy, const char *);
extern void disturb_grave(coordxy, coordxy);
extern void see_engraving(struct engr *) NONNULLARG1;
extern void feel_engraving(struct engr *) NONNULLARG1;
extern boolean engr_can_be_felt(struct engr *) NONNULLARG1;
/* ### exper.c ### */
@@ -994,15 +1031,12 @@ extern void makerogueghost(void);
/* ### files.c ### */
extern const char *nh_basename(const char *, boolean) NONNULLARG1;
#if !defined(CROSSCOMPILE) || defined(CROSSCOMPILE_TARGET)
extern int l_get_config_errors(lua_State *) NONNULLARG1;
#endif
extern char *fname_encode(const char *, char,
char *, char *, int) NONNULLPTRS;
extern char *fname_decode(char, char *, char *, int) NONNULLPTRS;
extern const char *fqname(const char *, int, int);
extern FILE *fopen_datafile(const char *, const char *, int) NONNULLPTRS;
extern void zero_nhfile(NHFILE *) NONNULLARG1;
extern void init_nhfile(NHFILE *) NONNULLARG1;
extern void close_nhfile(NHFILE *) NONNULLARG1;
extern void rewind_nhfile(NHFILE *) NONNULLARG1;
extern void set_levelfile_name(char *, int) NONNULLARG1;
@@ -1025,6 +1059,7 @@ extern void set_error_savefile(void);
extern NHFILE *create_savefile(void);
extern NHFILE *open_savefile(void);
extern int delete_savefile(void);
extern NHFILE *get_freeing_nhfile(void);
extern NHFILE *restore_saved_game(void);
extern int check_panic_save(void);
#ifdef SELECTSAVED
@@ -1034,22 +1069,14 @@ extern char **get_saved_games(void);
extern void free_saved_games(char **);
extern void nh_compress(const char *);
extern void nh_uncompress(const char *);
extern void nh_sfconvert(const char *);
extern void nh_sfunconvert(const char *);
extern int delete_convertedfile(const char *);
extern void free_convert_filenames(void);
extern boolean lock_file(const char *, int, int) NONNULLARG1;
extern void unlock_file(const char *) NONNULLARG1;
extern int do_write_config_file(void);
extern boolean parse_config_line(char *) NONNULLARG1;
#ifdef USER_SOUNDS
extern boolean can_read_file(const char *) NONNULLARG1;
#endif
extern void config_error_init(boolean, const char *, boolean);
extern void config_erradd(const char *);
extern int config_error_done(void);
/* arg1 of read_config_file can be NULL to pass through
* to fopen_config_file() to mean 'use the default config file name' */
extern boolean read_config_file(const char *, int);
extern void check_recordfile(const char *);
extern void read_wizkit(void);
extern boolean parse_conf_str(const char *str, boolean (*proc)(char *));
extern int read_sym_file(int);
extern void paniclog(const char *, const char *) NONNULLPTRS;
extern void testinglog(const char *, const char *, const char *);
@@ -1065,11 +1092,13 @@ extern int nhclose(int);
#ifdef DEBUG
extern boolean debugcore(const char *, boolean);
#endif
extern void reveal_paths(void);
extern void reveal_paths(int);
extern boolean read_tribute(const char *, const char *, int, char *, int,
unsigned);
extern boolean Death_quote(char *, int) NONNULLARG1;
extern void livelog_add(long ll_type, const char *) NONNULLARG2;
ATTRNORETURN extern void do_deferred_showpaths(int) NORETURN;
extern boolean contains_directory(const char *);
/* ### fountain.c ### */
@@ -1168,6 +1197,7 @@ extern boolean in_town(coordxy, coordxy);
extern void check_special_room(boolean);
extern int dopickup(void);
extern void lookaround(void);
extern boolean doorless_door(coordxy, coordxy);
extern boolean crawl_destination(coordxy, coordxy);
extern int monster_nearby(void);
extern void end_running(boolean);
@@ -1182,6 +1212,7 @@ extern int near_capacity(void);
extern int calc_capacity(int);
extern int max_capacity(void);
extern boolean check_capacity(const char *);
extern void dump_weights(void);
extern int inv_cnt(boolean);
/* sometimes money_cnt(gi.invent) which can be null */
extern long money_cnt(struct obj *) NO_NNARGS;
@@ -1324,6 +1355,7 @@ extern void silly_thing(const char *, struct obj *) NONNULLARG1;
extern void sync_perminvent(void);
extern void perm_invent_toggled(boolean negated);
extern void prepare_perminvent(winid window);
extern struct obj *carrying_stoning_corpse(void);
/* ### ioctl.c ### */
@@ -1431,6 +1463,7 @@ extern void mkmonmoney(struct monst *, long) NONNULLARG1;
extern int bagotricks(struct obj *, boolean, int *);
extern boolean propagate(int, boolean, boolean);
extern void summon_furies(int);
extern void dump_mongen(void);
/* ### mcastu.c ### */
@@ -1474,6 +1507,7 @@ extern struct monst *cloneu(void);
extern void expels(struct monst *, struct permonst *, boolean) NONNULLARG12;
extern struct attack *getmattk(struct monst *, struct monst *, int, int *,
struct attack *) NONNULLARG12;
extern boolean mtrapped_in_pit(struct monst *) NONNULLARG1;
extern int mattacku(struct monst *) NONNULLARG1;
boolean diseasemu(struct permonst *) NONNULLARG1;
boolean u_slip_free(struct monst *, struct attack *) NONNULLARG12;
@@ -1483,6 +1517,11 @@ extern int gazemu(struct monst *, struct attack *) NONNULLARG12;
extern void mdamageu(struct monst *, int) NONNULLARG1;
extern int could_seduce(struct monst *, struct monst *, struct attack *) NONNULLARG12;
extern int doseduce(struct monst *) NONNULLARG1;
extern boolean mon_avoiding_this_attack(struct monst *, int) NONNULLARG1;
/* extern boolean ranged_attk_assessed(struct monst *mtmp,
boolean (*assessfunct)(struct monst *, int)) NONNULLARG1;
*/
extern boolean ranged_attk_available(struct monst *mtmp) NONNULLARG1;
/* ### minion.c ### */
@@ -1504,9 +1543,11 @@ extern void gain_guardian_angel(void);
/* ### mklev.c ### */
extern void sort_rooms(void);
extern void add_room(int, int, int, int, boolean, schar, boolean);
extern void add_subroom(struct mkroom *, int, int, int, int, boolean, schar,
boolean) NONNULLARG1;
extern void add_room(coordxy, coordxy, coordxy, coordxy,
boolean, schar, boolean);
extern void add_subroom(struct mkroom *,
coordxy, coordxy, coordxy, coordxy,
boolean, schar, boolean) NONNULLARG1;
extern void free_luathemes(enum lua_theme_group);
extern void makecorridors(void);
extern void add_door(coordxy, coordxy, struct mkroom *) NONNULLARG3;
@@ -1532,8 +1573,8 @@ extern void mineralize(int, int, int, int, boolean);
/* ### mkmap.c ### */
extern void flood_fill_rm(int, int, int, boolean, boolean);
extern void remove_rooms(int, int, int, int);
extern void flood_fill_rm(coordxy, coordxy, int, boolean, boolean);
extern void remove_rooms(coordxy, coordxy, coordxy, coordxy);
extern boolean litstate_rnd(int);
/* ### mkmaze.c ### */
@@ -1552,6 +1593,7 @@ extern void bound_digging(void);
extern void mkportal(coordxy, coordxy, xint16, xint16);
extern boolean bad_location(coordxy, coordxy, coordxy, coordxy, coordxy,
coordxy);
extern boolean is_exclusion_zone(xint16, coordxy, coordxy);
/* dungeon.c u_on_rndspot() passes NULL final arg to place_lregion() */
extern void place_lregion(coordxy, coordxy, coordxy, coordxy, coordxy,
coordxy, coordxy, coordxy, xint16, d_level *) NO_NNARGS;
@@ -1596,6 +1638,8 @@ extern void costly_alteration(struct obj *, int) NONNULLARG1;
extern void clear_dknown(struct obj *);
extern void unknow_object(struct obj *);
extern struct obj *mksobj(int, boolean, boolean) NONNULL;
extern boolean stone_object_type(unsigned);
extern boolean stone_furniture_type(unsigned);
extern int bcsign(struct obj *) NONNULLARG1;
extern int weight(struct obj *) NONNULLARG1;
extern struct obj *mkgold(long, coordxy, coordxy);
@@ -1740,6 +1784,7 @@ extern struct monst *get_iter_mons(boolean (*)(struct monst *));
extern struct monst *get_iter_mons_xy(boolean (*)(struct monst *,
coordxy, coordxy),
coordxy, coordxy);
extern int healmon(struct monst *, int, int) NONNULLARG1;
extern void rescham(void);
extern void restartcham(void);
extern void restore_cham(struct monst *) NONNULLARG1;
@@ -1767,6 +1812,10 @@ extern void dealloc_mextra(struct monst *);
extern boolean usmellmon(struct permonst *);
extern void mimic_hit_msg(struct monst *, short);
extern void adj_erinys(unsigned);
extern void see_monster_closeup(struct monst *, boolean) NONNULLARG1;
extern void see_nearby_monsters(void);
extern void shieldeff_mon(struct monst *) NONNULLARG1;
extern void flash_mon(struct monst *) NONNULLARG1;
/* ### mondata.c ### */
@@ -1776,6 +1825,7 @@ extern boolean attacktype(struct permonst *, int) NONNULLARG1;
extern boolean noattacks(struct permonst *) NONNULLARG1;
extern boolean poly_when_stoned(struct permonst *) NONNULLARG1;
extern boolean defended(struct monst *, int) NONNULLARG1;
extern boolean Resists_Elem(struct monst *, int) NONNULLARG1;
extern boolean resists_drli(struct monst *) NONNULLARG1;
extern boolean resists_magm(struct monst *) NONNULLARG1;
extern boolean resists_blnd(struct monst *) NONNULLARG1;
@@ -1926,6 +1976,7 @@ extern int dosuspend(void);
extern void nt_regularize(char *);
extern int(*nt_kbhit)(void);
extern void Delay(int);
boolean get_user_home_folder(char *, size_t);
# ifdef CRASHREPORT
struct CRctxt;
extern struct CRctxt *ctxp;
@@ -2065,12 +2116,7 @@ extern void tutorial(boolean);
#endif /* MAKEDEFS_C MDLIB_C CPPREGEX_C */
/* ### {cpp,pmatch,posix}regex.c ### */
extern struct nhregex *regex_init(void);
extern boolean regex_compile(const char *, struct nhregex *) NONNULLARG1;
extern char *regex_error_desc(struct nhregex *, char *) NONNULLARG2;
extern boolean regex_match(const char *, struct nhregex *) NO_NNARGS;
extern void regex_free(struct nhregex *) NONNULLARG1;
#include "nhregex.h"
#if !defined(MAKEDEFS_C) && !defined(MDLIB_C) && !defined(CPPREGEX_C)
@@ -2083,6 +2129,7 @@ extern void consoletty_open(int);
extern void consoletty_rubout(void);
extern int tgetch(void);
extern int console_poskey(coordxy *, coordxy *, int *);
void console_g_putch(int in_ch);
extern void set_output_mode(int);
extern void synch_cursor(void);
extern void nethack_enter_consoletty(void);
@@ -2246,6 +2293,10 @@ extern boolean msgtype_parse_add(char *) NONNULLARG1;
extern int msgtype_type(const char *, boolean) NONNULLARG1;
extern void hide_unhide_msgtypes(boolean, int);
extern void msgtype_free(void);
extern void options_free_window_colors(void);
#ifdef TTY_PERM_INVENT
extern void check_perm_invent_again(void);
#endif
/* ### pager.c ### */
@@ -2283,7 +2334,14 @@ extern int getlock(void);
extern const char *get_portable_device(void);
#endif
/* ### pcsys.c ### */
/* ### pcsys.c, windsys.c ### */
#if defined(MICRO) || defined(WIN32)
ATTRNORETURN extern void nethack_exit(int) NORETURN;
#else
#define nethack_exit exit
#endif
/* ### pcsys.c ### */
#if defined(MICRO) || defined(WIN32)
extern void flushout(void);
@@ -2355,6 +2413,7 @@ extern int loot_mon(struct monst *, int *, boolean *) NO_NNARGS;
extern int dotip(void);
extern struct autopickup_exception *check_autopickup_exceptions(struct obj *) NONNULLARG1;
extern boolean autopick_testobj(struct obj *, boolean) NONNULLARG1;
extern boolean u_safe_from_fatal_corpse(struct obj *obj, int) NONNULLARG1;
/* ### pline.c ### */
@@ -2621,16 +2680,20 @@ extern int dorecover(NHFILE *) NONNULLARG1;
extern void restcemetery(NHFILE *, struct cemetery **) NONNULLARG12;
extern void trickery(char *) NO_NNARGS;
extern void getlev(NHFILE *, int, xint8) NONNULLARG1;
extern void get_plname_from_file(NHFILE *, char *) NONNULLARG12;
extern void get_plname_from_file(NHFILE *, char *, boolean) NONNULLARG12;
#ifdef SELECTSAVED
extern int restore_menu(winid);
#endif
extern void minit(void);
extern boolean lookup_id_mapping(unsigned, unsigned *) NONNULLARG2;
extern int validate(NHFILE *, const char *, boolean) NONNULLARG1;
/* extern void reset_restpref(void); */
/* extern void set_restpref(const char *); */
/* extern void set_savepref(const char *); */
#ifdef SFCTOOL
void rest_bubbles(NHFILE *);
void restore_gamelog(NHFILE *);
boolean restgamestate(NHFILE *);
void restore_msghistory(NHFILE *);
#endif
/* ### rip.c ### */
@@ -2776,11 +2839,7 @@ extern void bufoff(int);
extern void bflush(int);
extern void bwrite(int, const genericptr_t, unsigned) NONNULLARG2;
extern void mread(int, genericptr_t, unsigned) NONNULLARG2;
extern void minit(void);
extern void bclose(int);
#if defined(ZEROCOMP)
extern void zerocomp_bclose(int);
#endif
/* ### shk.c ### */
@@ -2894,6 +2953,7 @@ extern void whimper(struct monst *) NONNULLARG1;
extern void beg(struct monst *) NONNULLARG1;
extern const char *maybe_gasp(struct monst *) NONNULLARG1;
extern const char *cry_sound(struct monst *) NONNULLARG1;
extern int domonnoise(struct monst *) NONNULLARG1;
extern int dotalk(void);
extern int tiphat(void);
#ifdef USER_SOUNDS
@@ -2918,6 +2978,7 @@ extern char *get_sound_effect_filename(int32_t seidint,
extern char *base_soundname_to_filename(char *, char *, size_t, int32_t) NONNULLARG1;
extern void set_voice(struct monst *, int32_t, int32_t, int32_t) NO_NNARGS;
extern void sound_speak(const char *) NO_NNARGS;
extern enum soundlib_ids soundlib_id_from_opt(char *);
/* ### sp_lev.c ### */
@@ -2936,7 +2997,7 @@ extern void flip_level_rnd(int, boolean);
extern boolean check_room(coordxy *, coordxy *, coordxy *, coordxy *, boolean) NONNULLPTRS;
extern boolean create_room(coordxy, coordxy, coordxy, coordxy,
coordxy, coordxy, xint16, xint16);
extern boolean dig_corridor(coord *, coord *, boolean, schar, schar) NONNULLARG12;
extern boolean dig_corridor(coord *, coord *, int *, boolean, schar, schar) NONNULLARG12;
extern void fill_special_room(struct mkroom *) NO_NNARGS;
extern void wallify_map(coordxy, coordxy, coordxy, coordxy);
extern boolean load_special(const char *) NONNULLARG1;
@@ -3025,7 +3086,7 @@ extern struct obj *findgold(struct obj *) NO_NNARGS;
extern void rider_cant_reach(void);
extern boolean can_saddle(struct monst *) NONNULLARG1;
extern int use_saddle(struct obj *) NONNULLARG1;
extern void put_saddle_on_mon(struct obj *, struct monst *) NONNULLARG12;
extern void put_saddle_on_mon(struct obj *, struct monst *) NONNULLARG2;
extern boolean can_ride(struct monst *) NONNULLARG1;
extern int doride(void);
extern boolean mount_steed(struct monst *, boolean) NO_NNARGS;
@@ -3078,6 +3139,8 @@ extern boolean goodpos(coordxy, coordxy, struct monst *,
mmflags_nht) NO_NNARGS;
extern boolean enexto(coord *, coordxy, coordxy,
struct permonst *) NONNULLARG1;
extern boolean enexto_gpflags(coord *, coordxy, coordxy, struct permonst *,
mmflags_nht) NONNULLARG1;
extern boolean enexto_core(coord *, coordxy, coordxy, struct permonst *,
mmflags_nht) NONNULLARG1;
extern void teleds(coordxy, coordxy, int);
@@ -3085,6 +3148,7 @@ extern int collect_coords(coord *, coordxy, coordxy, int, unsigned,
boolean (*)(coordxy, coordxy)) NONNULLARG1;
extern boolean safe_teleds(int);
extern boolean teleport_pet(struct monst *, boolean) NONNULLARG1;
extern void tele_to_rnd_pet(void);
extern void tele(void);
extern void scrolltele(struct obj *) NO_NNARGS;
extern int dotelecmd(void);
@@ -3208,6 +3272,7 @@ extern void drain_en(int, boolean);
extern int dountrap(void);
extern int could_untrap(boolean, boolean);
extern void cnv_trap_obj(int, int, struct trap *, boolean) NONNULLARG3;
extern boolean into_vs_onto(int);
extern int untrap(boolean, coordxy, coordxy, struct obj *) NO_NNARGS;
extern boolean openholdingtrap(struct monst *, boolean *) NO_NNARGS;
extern boolean closeholdingtrap(struct monst *, boolean *) NO_NNARGS;
@@ -3350,6 +3415,7 @@ extern boolean mhitm_knockback(struct monst *, struct monst *,struct attack *,
extern int passive(struct monst *, struct obj *, boolean, boolean, uchar,
boolean) NONNULLARG1;
extern void passive_obj(struct monst *, struct obj *, struct attack *) NONNULLARG1;
extern void that_is_a_mimic(struct monst *, unsigned) NONNULLARG1;
extern void stumble_onto_mimic(struct monst *) NONNULLARG1;
extern int flash_hits_mon(struct monst *, struct obj *) NONNULLARG12;
extern void light_hits_gremlin(struct monst *, int) NONNULLARG1;
@@ -3367,6 +3433,7 @@ extern void append_slash(char *) NONNULLARG1;
extern boolean check_user_string(const char *) NONNULLARG1;
extern char *get_login_name(void);
extern unsigned long sys_random_seed(void);
ATTRNORETURN extern void after_opt_showpaths(const char *) NORETURN;
#endif /* UNIX */
/* ### unixtty.c ### */
@@ -3448,15 +3515,18 @@ extern int doextversion(void);
extern boolean comp_times(long);
#endif
extern boolean check_version(struct version_info *, const char *, boolean,
unsigned long) NONNULLARG12;
extern boolean uptodate(NHFILE *, const char *, unsigned long) NONNULLARG1;
extern void store_formatindicator(NHFILE *) NONNULLARG1;
unsigned long) NONNULLARG1;
extern int uptodate(NHFILE *, const char *, unsigned long) NONNULLARG1;
extern void store_version(NHFILE *) NONNULLARG1;
extern unsigned long get_feature_notice_ver(char *) NO_NNARGS;
extern unsigned long get_current_feature_ver(void);
extern const char *copyright_banner_line(int) NONNULL;
extern void early_version_info(boolean);
extern void dump_version_info(void);
extern void store_critical_bytes(NHFILE *) NONNULLARG1;
extern int compare_critical_bytes(NHFILE *, int *, unsigned long) NONNULLARG1;
extern int get_critical_size_count(void);
extern int validate(NHFILE *, const char *, boolean) NONNULLARG1;
/* ### video.c ### */
@@ -3475,12 +3545,14 @@ extern int assign_videocolors(char *) NONNULLARG1;
/* ### vision.c ### */
extern boolean get_viz_clear(int, int);
extern void vision_init(void);
extern int does_block(int, int, struct rm *) NONNULLARG3;
extern void vision_reset(void);
extern void vision_recalc(int);
extern void block_point(int, int);
extern void unblock_point(int, int);
extern void recalc_block_point(coordxy, coordxy);
extern boolean clear_path(int, int, int, int);
extern void do_clear_area(coordxy, coordxy, int,
void(*)(coordxy, coordxy, void *), genericptr_t);
@@ -3610,6 +3682,8 @@ extern int weapon_hit_bonus(struct obj *) NO_NNARGS;
extern int weapon_dam_bonus(struct obj *) NO_NNARGS;
extern void skill_init(const struct def_skill *) NONNULLARG1;
extern void setmnotwielded(struct monst *, struct obj *) NONNULLARG1;
extern const struct throw_and_return_weapon *autoreturn_weapon(struct obj *)
NONNULLARG1;
/* ### were.c ### */
@@ -3786,6 +3860,7 @@ extern boolean worm_cross(int, int, int, int);
extern int wseg_at(struct monst *, int, int) NO_NNARGS;
extern void flip_worm_segs_vertical(struct monst *, int, int) NONNULLARG1;
extern void flip_worm_segs_horizontal(struct monst *, int, int) NONNULLARG1;
extern void redraw_worm(struct monst *);
/* ### worn.c ### */