Merge branch 'NetHack-3.7' into twitch-interact
This commit is contained in:
215
include/amiconf.h
Normal file
215
include/amiconf.h
Normal file
@@ -0,0 +1,215 @@
|
||||
/* NetHack 3.6 amiconf.h $NHDT-Date: 1432512775 2015/05/25 00:12:55 $ $NHDT-Branch: master $:$NHDT-Revision: 1.12 $ */
|
||||
/* Copyright (c) Kenneth Lorber, Bethesda, Maryland, 1990, 1991, 1992, 1993.
|
||||
*/
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
#ifndef AMICONF_H
|
||||
#define AMICONF_H
|
||||
|
||||
#undef abs /* avoid using macro form of abs */
|
||||
#ifndef __SASC_60
|
||||
#undef min /* this gets redefined */
|
||||
#undef max /* this gets redefined */
|
||||
#endif
|
||||
|
||||
#include <time.h> /* get time_t defined before use! */
|
||||
|
||||
#ifdef CROSS_TO_AMIGA
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <dos/dos.h>
|
||||
#include <clib/dos_protos.h>
|
||||
#include <proto/dos.h>
|
||||
#endif
|
||||
|
||||
#ifdef __SASC_60 /* since SAS can prevent re-inclusion */
|
||||
#include <stdlib.h> /* general things, including builtins */
|
||||
#include <string.h>
|
||||
#endif
|
||||
|
||||
#ifdef AZTEC_50
|
||||
#include <stdlib.h>
|
||||
#define AZTEC_C_WORKAROUND /* Bug which turns up in sounds.c. Bummer... */
|
||||
#define NO_SIGNAL /* 5.0 signal handling doesn't like SIGINT... */
|
||||
#endif
|
||||
|
||||
#ifdef _DCC
|
||||
#include <stdlib.h>
|
||||
#define _SIZE_T
|
||||
#endif
|
||||
|
||||
#ifndef __GNUC__
|
||||
typedef long off_t;
|
||||
#endif
|
||||
|
||||
#define MICRO /* must be defined to allow some inclusions */
|
||||
|
||||
#define NOCWD_ASSUMPTIONS /* Allow paths to be specified for HACKDIR, \
|
||||
LEVELDIR, SAVEDIR, BONESDIR, DATADIR, \
|
||||
SCOREDIR, LOCKDIR, CONFIGDIR, and TROUBLEDIR */
|
||||
|
||||
#define PATHLEN 130
|
||||
|
||||
/* data librarian defs */
|
||||
#define DLBFILE "nhdat" /* main library */
|
||||
/* nhsdat sound library not used in 3.7 */
|
||||
#undef DLBFILE2
|
||||
|
||||
#ifndef CROSS_TO_AMIGA
|
||||
#define FILENAME_CMP stricmp /* case insensitive */
|
||||
#else
|
||||
#define FILENAME_CMP strcmpi /* case insensitive */
|
||||
#endif
|
||||
|
||||
#ifndef __SASC_60
|
||||
#define O_BINARY 0
|
||||
#endif
|
||||
|
||||
/* Compile in New Intuition look for 2.0 */
|
||||
#ifdef IDCMP_CLOSEWINDOW
|
||||
#ifndef INTUI_NEW_LOOK
|
||||
#define INTUI_NEW_LOOK 1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define MFLOPPY /* You'll probably want this; provides assistance \
|
||||
* for typical personal computer configurations \
|
||||
*/
|
||||
#ifndef CROSS_TO_AMIGA
|
||||
#define RANDOM
|
||||
#endif
|
||||
|
||||
/* ### amidos.c ### */
|
||||
|
||||
extern void nethack_exit(int);
|
||||
|
||||
/* ### amiwbench.c ### */
|
||||
|
||||
extern void ami_wbench_init(void);
|
||||
extern void ami_wbench_args(void);
|
||||
extern int ami_wbench_getsave(int);
|
||||
extern void ami_wbench_unlink(char *);
|
||||
extern int ami_wbench_iconsize(char *);
|
||||
extern void ami_wbench_iconwrite(char *);
|
||||
extern int ami_wbench_badopt(const char *);
|
||||
extern void ami_wbench_cleanup(void);
|
||||
extern void getlind(const char *, char *, const char *);
|
||||
|
||||
/* ### winreq.c ### */
|
||||
|
||||
extern void amii_setpens(int);
|
||||
|
||||
extern void exit(int);
|
||||
extern void CleanUp(void);
|
||||
extern void Abort(long);
|
||||
extern int getpid(void);
|
||||
extern char *CopyFile(const char *, const char *);
|
||||
extern int kbhit(void);
|
||||
extern int WindowGetchar(void);
|
||||
extern void ami_argset(int *, char *[]);
|
||||
extern void ami_mkargline(int *, char **[]);
|
||||
extern void ami_wininit_data(int);
|
||||
|
||||
#define FromWBench 0 /* A hint for compiler ... */
|
||||
/* extern boolean FromWBench; /* how were we run? */
|
||||
extern int ami_argc;
|
||||
extern char **ami_argv;
|
||||
|
||||
#ifndef MICRO_H
|
||||
#include "micro.h"
|
||||
#endif
|
||||
|
||||
#ifndef PCCONF_H
|
||||
#include "pcconf.h" /* remainder of stuff is almost same as the PC */
|
||||
#endif
|
||||
|
||||
#define remove(x) unlink(x)
|
||||
|
||||
/* DICE wants rewind() to return void. We want it to return int. */
|
||||
#if defined(_DCC) || defined(__GNUC__)
|
||||
#define rewind(f) fseek(f, 0, 0)
|
||||
#endif
|
||||
|
||||
#ifdef AZTEC_C
|
||||
extern FILE *freopen(const char *, const char *, FILE *);
|
||||
extern char *gets(char *);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* If AZTEC_C we can't use the long cpath in vision.c....
|
||||
*/
|
||||
#ifdef AZTEC_C
|
||||
#undef MACRO_CPATH
|
||||
#endif
|
||||
|
||||
/*
|
||||
* (Possibly) configurable Amiga options:
|
||||
*/
|
||||
|
||||
#define HACKFONT /* Use special hack.font */
|
||||
#ifndef CROSS_TO_AMIGA /* issues with prototype and spawnl */
|
||||
#define SHELL /* Have a shell escape command (!) */
|
||||
#endif
|
||||
#define MAIL /* Get mail at unexpected occasions */
|
||||
#define DEFAULT_ICON "NetHack:default.icon" /* private icon */
|
||||
#define AMIFLUSH /* toss typeahead (select flush in .cnf) */
|
||||
/* #define OPT_DISPMAP /* enable fast_map option */
|
||||
|
||||
/* new window system options */
|
||||
/* WRONG - AMIGA_INTUITION should go away */
|
||||
#ifdef AMII_GRAPHICS
|
||||
#define AMIGA_INTUITION /* high power graphics interface (amii) */
|
||||
#endif
|
||||
|
||||
#define CHANGE_COLOR 1
|
||||
#define DEPTH 6 /* Maximum depth of the screen allowed */
|
||||
#define AMII_MAXCOLORS (1L << DEPTH)
|
||||
typedef unsigned short AMII_COLOR_TYPE;
|
||||
|
||||
#define PORT_HELP "nethack:amii.hlp"
|
||||
|
||||
#undef TERMLIB
|
||||
|
||||
#define AMII_MUFFLED_VOLUME 40
|
||||
#define AMII_SOFT_VOLUME 50
|
||||
#define AMII_OKAY_VOLUME 60
|
||||
#define AMII_LOUDER_VOLUME 80
|
||||
|
||||
#ifdef TTY_GRAPHICS
|
||||
#define ANSI_DEFAULT
|
||||
#endif
|
||||
|
||||
extern int amibbs; /* BBS mode? */
|
||||
|
||||
#ifdef AMII_GRAPHICS
|
||||
extern int amii_numcolors;
|
||||
void amii_setpens(int);
|
||||
#endif
|
||||
|
||||
/* for cmd.c: override version in micro.h */
|
||||
#ifdef __SASC_60
|
||||
#undef M
|
||||
#define M(c) ((c) -128)
|
||||
#endif
|
||||
struct ami_sysflags {
|
||||
char sysflagsid[10];
|
||||
#ifdef AMIFLUSH
|
||||
boolean altmeta; /* use ALT keys as META */
|
||||
boolean amiflush; /* kill typeahead */
|
||||
#endif
|
||||
#ifdef AMII_GRAPHICS
|
||||
int numcols;
|
||||
unsigned short amii_dripens[20]; /* DrawInfo Pens currently there are 13 in v39 */
|
||||
AMII_COLOR_TYPE amii_curmap[AMII_MAXCOLORS]; /* colormap */
|
||||
#endif
|
||||
#ifdef OPT_DISPMAP
|
||||
boolean fast_map; /* use optimized, less flexible map display */
|
||||
#endif
|
||||
#ifdef MFLOPPY
|
||||
boolean asksavedisk;
|
||||
#endif
|
||||
};
|
||||
extern struct ami_sysflags sysflags;
|
||||
|
||||
#endif /* AMICONF_H */
|
||||
@@ -197,7 +197,7 @@ static NEARDATA struct artifact artilist[] = {
|
||||
* or the shriek that shrieked he,
|
||||
* As I gnashed my teeth, and from my sheath
|
||||
* I drew my Snickersnee!
|
||||
* --Koko, Lord high executioner of Titipu
|
||||
* --Ko-Ko, Lord high executioner of Titipu
|
||||
* (From Sir W.S. Gilbert's "The Mikado")
|
||||
*/
|
||||
A("Snickersnee", KATANA, SPFX_RESTR, 0, 0, PHYS(0, 8), NO_DFNS, NO_CARY,
|
||||
|
||||
@@ -27,6 +27,9 @@ Astral Plane \GXXXXNNNN:123456 HP:1234(1234) Pw:1234(1234) AC:-127
|
||||
#define MAXCO (COLNO + 40)
|
||||
#endif
|
||||
|
||||
/* limit of the player's name in the status window */
|
||||
#define BOTL_NSIZ 16
|
||||
|
||||
struct condmap {
|
||||
const char *id;
|
||||
unsigned long bitmask;
|
||||
|
||||
@@ -149,10 +149,11 @@
|
||||
|
||||
#ifdef X11_GRAPHICS
|
||||
/*
|
||||
* There are two ways that X11 tiles may be defined. (1) using a custom
|
||||
* format loaded by NetHack code, or (2) using the XPM format loaded by
|
||||
* the free XPM library. The second option allows you to then use other
|
||||
* programs to generate tiles files. For example, the PBMPlus tools
|
||||
* There are two ways that X11 tiles may be defined:
|
||||
* (1) using a custom format loaded by NetHack code.
|
||||
* (2) using the XPM format loaded by the free XPM library.
|
||||
* The second option allows you to then use other programs to
|
||||
* generate tiles files. For example, the PBMPlus tools
|
||||
* would allow:
|
||||
* xpmtoppm <x11tiles.xpm | pnmscale 1.25 | ppmquant 90 | \
|
||||
* ppmtoxpm >x11tiles_big.xpm
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
#undef UNIX
|
||||
#define DLB
|
||||
#define HACKDIR "NetHack:"
|
||||
#define NO_MACRO_CPATH
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
||||
@@ -168,7 +168,7 @@ struct context_info {
|
||||
boolean bypasses; /* bypass flag is set on at least one fobj */
|
||||
boolean door_opened; /* set to true if door was opened during test_move */
|
||||
boolean resume_wish; /* game was exited while in wish prompt */
|
||||
boolean tips[NUM_TIPS];
|
||||
unsigned long tips;
|
||||
struct dig_info digging;
|
||||
struct victual_info victual;
|
||||
struct engrave_info engraving;
|
||||
|
||||
@@ -59,6 +59,7 @@
|
||||
#include <stdarg.h>
|
||||
#include <ctype.h>
|
||||
#include <time.h>
|
||||
#include <limits.h>
|
||||
|
||||
#else /* !__cplusplus */
|
||||
/* for FILE */
|
||||
|
||||
@@ -240,6 +240,7 @@ struct instance_globals_c {
|
||||
/* decl.c */
|
||||
char chosen_windowtype[WINTYPELEN];
|
||||
int cmd_key; /* parse() / rhack() */
|
||||
struct Cmd_bind *cmd_bind;
|
||||
cmdcount_nht command_count;
|
||||
/* some objects need special handling during destruction or placement */
|
||||
struct obj *current_wand; /* wand currently zapped/applied */
|
||||
@@ -475,6 +476,7 @@ struct instance_globals_i {
|
||||
/* invent.c */
|
||||
char *invbuf;
|
||||
unsigned invbufsiz;
|
||||
boolean item_action_in_progress;
|
||||
int in_sync_perminvent;
|
||||
|
||||
/* mon.c */
|
||||
@@ -723,7 +725,8 @@ struct instance_globals_o {
|
||||
|
||||
/* options.c */
|
||||
|
||||
int opt_phase; /* builtin_opt, syscf_, rc_file_, environ_, play_opt */
|
||||
/* builtin_opt, syscf_, rc_file_, environ_, play_opt */
|
||||
enum option_phases opt_phase;
|
||||
boolean opt_initial;
|
||||
boolean opt_from_file;
|
||||
boolean opt_need_redraw; /* for doset() */
|
||||
@@ -837,6 +840,9 @@ struct instance_globals_r {
|
||||
|
||||
struct instance_globals_s {
|
||||
|
||||
/* allmain.c */
|
||||
boolean saving_grace_turn; /* saving grace was triggered this turn */
|
||||
|
||||
/* artifact.c */
|
||||
int spec_dbon_applies; /* coordinate effects from spec_dbon() with
|
||||
messages in artifact_hit() */
|
||||
@@ -968,6 +974,9 @@ struct instance_globals_t {
|
||||
|
||||
struct instance_globals_u {
|
||||
|
||||
/* allmain.c */
|
||||
int uhp_at_start_of_monster_turn;
|
||||
|
||||
/* botl.c */
|
||||
boolean update_all;
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ struct tmpbranch {
|
||||
};
|
||||
|
||||
/*
|
||||
* Values for type for tmpbranch structure.
|
||||
* Values for type in tmpbranch structure.
|
||||
*/
|
||||
#define TBR_STAIR 0 /* connection with both ends having a staircase */
|
||||
#define TBR_NO_UP 1 /* connection with no up staircase */
|
||||
|
||||
@@ -169,7 +169,7 @@ struct linfo {
|
||||
/* 0x02 was FORGOTTEN, when amnesia made you forget maps */
|
||||
#define LFILE_EXISTS 0x04 /* a level file exists for this level */
|
||||
/* Note: VISITED and LFILE_EXISTS are currently almost always
|
||||
* set at the same time. However they _mean_ different things.
|
||||
* set at the same time. However, they _mean_ different things.
|
||||
*/
|
||||
};
|
||||
|
||||
|
||||
@@ -13,6 +13,8 @@ enum engraving_texts {
|
||||
text_states
|
||||
};
|
||||
|
||||
#define engr_text_space(ep) ((char *) ((ep) + 1))
|
||||
|
||||
struct engr {
|
||||
struct engr *nxt_engr;
|
||||
char *engr_txt[text_states];
|
||||
|
||||
105
include/extern.h
105
include/extern.h
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.7 extern.h $NHDT-Date: 1738638877 2025/02/03 19:14:37 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1476 $ */
|
||||
/* NetHack 3.7 extern.h $NHDT-Date: 1770949988 2026/02/12 18:33:08 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1523 $ */
|
||||
/* Copyright (c) Steve Creps, 1988. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -71,6 +71,10 @@
|
||||
#include "artifact.h"
|
||||
#endif
|
||||
|
||||
#ifndef MFNDPOS_H
|
||||
#include "mfndpos.h"
|
||||
#endif
|
||||
|
||||
/* ### alloc.c ### */
|
||||
|
||||
#if 0
|
||||
@@ -101,7 +105,6 @@ extern void stop_occupation(void);
|
||||
extern void init_sound_disp_gamewindows(void);
|
||||
extern void newgame(void);
|
||||
extern void welcome(boolean);
|
||||
extern int argcheck(int, char **, enum earlyarg);
|
||||
extern long timet_to_seconds(time_t);
|
||||
extern long timet_delta(time_t, time_t);
|
||||
|
||||
@@ -258,6 +261,7 @@ extern void free_ebones(struct monst *) NONNULLARG1;
|
||||
|
||||
/* ### botl.c ### */
|
||||
|
||||
extern char *get_strength_str(void);
|
||||
extern char *do_statusline1(void);
|
||||
extern void check_gold_symbol(void);
|
||||
extern char *do_statusline2(void);
|
||||
@@ -331,6 +335,15 @@ 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);
|
||||
extern void rcfile(void);
|
||||
extern void rcfile_interface_options(void);
|
||||
extern void heed_all_config_statements(void);
|
||||
extern void disregard_all_config_statements(void);
|
||||
extern void heed_this_config_statement(int);
|
||||
extern void disregard_this_config_statement(int);
|
||||
extern boolean config_unmatched_ignored(void);
|
||||
extern void clear_ignore_errors_on_unmatched(void);
|
||||
extern void set_ignore_errors_on_unmatched(void);
|
||||
|
||||
/* ### coloratt.c ### */
|
||||
|
||||
@@ -365,6 +378,8 @@ extern void change_palette(void);
|
||||
|
||||
/* ### cmd.c ### */
|
||||
|
||||
extern void cmdbind_freeall(void);
|
||||
extern int dotoggleoption(void);
|
||||
extern void set_move_cmd(int, int);
|
||||
extern int do_move_west(void);
|
||||
extern int do_move_northwest(void);
|
||||
@@ -442,10 +457,10 @@ extern int doextlist(void);
|
||||
extern int extcmd_via_menu(void);
|
||||
extern int enter_explore_mode(void);
|
||||
extern boolean bind_mousebtn(int, const char *);
|
||||
extern boolean bind_key(uchar, const char *);
|
||||
extern boolean bind_key(uchar, const char *, boolean);
|
||||
extern void dokeylist(void);
|
||||
extern int xytod(coordxy, coordxy);
|
||||
extern void dtoxy(coord *, int);
|
||||
extern int xytodir(int, int);
|
||||
extern void dirtocoord(coord *, int);
|
||||
extern int movecmd(char, int);
|
||||
extern int dxdy_moveok(void);
|
||||
extern int getdir(const char *);
|
||||
@@ -746,6 +761,7 @@ extern void Ring_gone(struct obj *) NONNULLARG1;
|
||||
extern void Blindf_on(struct obj *) NONNULLARG1;
|
||||
extern void Blindf_off(struct obj *);
|
||||
extern int dotakeoff(void);
|
||||
extern int ia_dotakeoff(void);
|
||||
extern int doremring(void);
|
||||
extern int cursed(struct obj *);
|
||||
extern int armoroff(struct obj *);
|
||||
@@ -760,7 +776,8 @@ extern struct obj *unchanger(void);
|
||||
extern void reset_remarm(void);
|
||||
extern int doddoremarm(void);
|
||||
extern int remarm_swapwep(void);
|
||||
extern int destroy_arm(struct obj *);
|
||||
extern int disintegrate_arm(struct obj *);
|
||||
extern int destroy_arm(void);
|
||||
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 *);
|
||||
@@ -823,6 +840,7 @@ extern void hurtle(int, int, int, boolean);
|
||||
extern void mhurtle(struct monst *, int, int, int) NONNULLARG1;
|
||||
extern boolean harmless_missile(struct obj *) NONNULLARG1;
|
||||
extern boolean throwing_weapon(struct obj *) NONNULLARG1;
|
||||
extern boolean throwit_mon_hit(struct obj *, struct monst *) NONNULLARG1;
|
||||
extern void throwit(struct obj *, long, boolean, struct obj *) NONNULLARG1;
|
||||
extern int omon_adj(struct monst *, struct obj *, boolean) NONNULLPTRS;
|
||||
extern boolean should_mulch_missile(struct obj *);
|
||||
@@ -910,6 +928,14 @@ extern void overview_stats(winid, const char *, long *, long *) NONNULLPTRS;
|
||||
extern void remdun_mapseen(int);
|
||||
extern const char *endgamelevelname(char *, int);
|
||||
|
||||
/* ### earlyarg.c ### */
|
||||
|
||||
extern int argcheck(int, char **, enum earlyarg);
|
||||
extern void early_options(int *argc_p, char ***argv_p, char **hackdir_p);
|
||||
#ifdef WIN32
|
||||
int windows_early_options(const char *);
|
||||
#endif
|
||||
|
||||
/* ### eat.c ### */
|
||||
|
||||
extern void eatmupdate(void);
|
||||
@@ -1155,6 +1181,7 @@ extern void dump_glyphids(void);
|
||||
extern void clear_all_glyphmap_colors(void);
|
||||
extern void reset_customcolors(void);
|
||||
extern int glyph_to_cmap(int);
|
||||
extern void maybe_shuffle_customizations(void);
|
||||
|
||||
/* ### hack.c ### */
|
||||
|
||||
@@ -1233,6 +1260,10 @@ extern boolean pmatchi(const char *, const char *) NONNULLPTRS;
|
||||
extern boolean pmatchz(const char *, const char *) NONNULLPTRS;
|
||||
*/
|
||||
|
||||
/* ### iactions.c ### */
|
||||
|
||||
extern int itemactions(struct obj *otmp) NONNULLARG1;
|
||||
|
||||
/* ### insight.c ### */
|
||||
|
||||
extern int doattributes(void);
|
||||
@@ -1356,6 +1387,7 @@ 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);
|
||||
extern void repopulate_perminvent(void);
|
||||
|
||||
/* ### ioctl.c ### */
|
||||
|
||||
@@ -1531,7 +1563,7 @@ extern int monster_census(boolean);
|
||||
extern int msummon(struct monst *);
|
||||
extern void summon_minion(aligntyp, boolean);
|
||||
extern int demon_talk(struct monst *) NONNULLARG1;
|
||||
extern long bribe(struct monst *) NONNULLARG1;
|
||||
extern long bribe(struct monst *, const char *) NONNULLARG12;
|
||||
extern int dprince(aligntyp);
|
||||
extern int dlord(aligntyp);
|
||||
extern int llord(void);
|
||||
@@ -1654,6 +1686,7 @@ extern struct obj *mk_named_object(int, struct permonst *,
|
||||
coordxy, coordxy,
|
||||
const char *) ;
|
||||
extern struct obj *rnd_treefruit_at(coordxy, coordxy);
|
||||
extern boolean is_treefruit(struct obj *) NONNULLARG1;
|
||||
extern void set_corpsenm(struct obj *, int) NONNULLARG1;
|
||||
extern long rider_revival_time(struct obj *, boolean) NONNULLARG1;
|
||||
extern void start_corpse_timeout(struct obj *) NONNULLARG1;
|
||||
@@ -1743,7 +1776,7 @@ extern boolean can_touch_safely(struct monst *, struct obj *) NONNULLARG12;
|
||||
extern int can_carry(struct monst *, struct obj *) NONNULLARG12;
|
||||
extern long mon_allowflags(struct monst *) NONNULLARG1;
|
||||
extern boolean m_in_air(struct monst *) NONNULLARG1;
|
||||
extern int mfndpos(struct monst *, coord *, long *, long) NONNULLPTRS;
|
||||
extern int mfndpos(struct monst *, struct mfndposdata *, long) NONNULLPTRS;
|
||||
extern boolean monnear(struct monst *, coordxy, coordxy) NONNULLARG1;
|
||||
extern void dmonsfree(void);
|
||||
extern void elemental_clog(struct monst *) NONNULLARG1;
|
||||
@@ -1913,8 +1946,8 @@ extern boolean accessible(coordxy, coordxy);
|
||||
extern void set_apparxy(struct monst *) NONNULLARG1;
|
||||
extern boolean can_ooze(struct monst *) NONNULLARG1;
|
||||
extern boolean can_fog(struct monst *) NONNULLARG1;
|
||||
extern boolean should_displace(struct monst *, coord *, long *, int, coordxy,
|
||||
coordxy) NONNULLPTRS;
|
||||
extern boolean should_displace(struct monst *, const struct mfndposdata *,
|
||||
coordxy, coordxy) NONNULLPTRS;
|
||||
extern boolean undesirable_disp(struct monst *, coordxy, coordxy) NONNULLARG1;
|
||||
extern boolean can_hide_under_obj(struct obj *);
|
||||
|
||||
@@ -1952,7 +1985,7 @@ extern long filesize(char *);
|
||||
#endif /* MSDOS */
|
||||
extern char *foundfile_buffer(void);
|
||||
#endif /* __GO32__ */
|
||||
extern void chdrive(char *);
|
||||
extern void chdrive(const char *);
|
||||
#ifndef TOS
|
||||
extern void disable_ctrlP(void);
|
||||
extern void enable_ctrlP(void);
|
||||
@@ -2151,7 +2184,8 @@ extern boolean objdescr_is(struct obj *, const char *) NONNULLARG2;
|
||||
extern void oinit(void);
|
||||
extern void savenames(NHFILE *) NONNULLARG1;
|
||||
extern void restnames(NHFILE *) NONNULLARG1;
|
||||
extern void discover_object(int, boolean, boolean);
|
||||
extern void observe_object(struct obj *) NONNULLARG1;
|
||||
extern void discover_object(int, boolean, boolean, boolean);
|
||||
extern void undiscover_object(int);
|
||||
extern boolean interesting_to_discover(int);
|
||||
extern int choose_disco_sort(int);
|
||||
@@ -2268,6 +2302,7 @@ extern char *get_option_value(const char *, boolean) NONNULLARG1;
|
||||
extern int doset_simple(void);
|
||||
extern int doset(void);
|
||||
extern int dotogglepickup(void);
|
||||
extern int toggle_bool_option(const char *);
|
||||
extern void option_help(void);
|
||||
extern void all_options_strbuf(strbuf_t *) NONNULLARG1;
|
||||
extern void next_opt(winid, const char *) NONNULLARG2;
|
||||
@@ -2294,6 +2329,11 @@ 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);
|
||||
extern void heed_all_options(void);
|
||||
extern void disregard_all_options(void);
|
||||
extern void heed_this_option(enum opt);
|
||||
extern void disregard_this_option(enum opt);
|
||||
extern void clear_ignore_errors_on_unmatched(void);
|
||||
#ifdef TTY_PERM_INVENT
|
||||
extern void check_perm_invent_again(void);
|
||||
#endif
|
||||
@@ -2319,12 +2359,13 @@ extern int dowhatdoes(void);
|
||||
extern char *dowhatdoes_core(char, char *) NONNULLARG2; /*might return NULL*/
|
||||
extern int dohelp(void);
|
||||
extern int dohistory(void);
|
||||
void allopt_array_init(void);
|
||||
|
||||
/* ### xxmain.c ### */
|
||||
|
||||
#if defined(MICRO) || defined(WIN32)
|
||||
#if defined(UNIX) || defined(MICRO) || defined(WIN32)
|
||||
#ifdef CHDIR
|
||||
extern void chdirx(char *, boolean);
|
||||
extern void chdirx(const char *, boolean);
|
||||
#endif /* CHDIR */
|
||||
extern boolean authorize_wizard_mode(void);
|
||||
extern boolean authorize_explore_mode(void);
|
||||
@@ -2401,8 +2442,9 @@ extern int query_category(const char *, struct obj *, int, menu_item **, int) NO
|
||||
/* dotypeinv() call query_objlist with NULL arg1 */
|
||||
extern int query_objlist(const char *, struct obj **, int, menu_item **, int,
|
||||
boolean(*)(struct obj *)) NONNULLARG24;
|
||||
extern boolean reroll_menu(void);
|
||||
extern struct obj *pick_obj(struct obj *) NONNULLARG1;
|
||||
extern int encumber_msg(void);
|
||||
extern void encumber_msg(void);
|
||||
extern int container_at(coordxy, coordxy, boolean);
|
||||
extern int doloot(void);
|
||||
extern void observe_quantum_cat(struct obj *, boolean, boolean) NONNULLARG1;
|
||||
@@ -2694,6 +2736,9 @@ void restore_gamelog(NHFILE *);
|
||||
boolean restgamestate(NHFILE *);
|
||||
void restore_msghistory(NHFILE *);
|
||||
#endif
|
||||
extern void rest_adjust_levelflags(void);
|
||||
extern void moves_to_relative_time(long *);
|
||||
extern void relative_time_to_moves(long *);
|
||||
|
||||
/* ### rip.c ### */
|
||||
|
||||
@@ -2846,6 +2891,8 @@ extern void bclose(int);
|
||||
/* setpaid() has a conditional code block near the end of the
|
||||
function, where arg1 is tested for NULL, preventing NONNULLARG1 */
|
||||
extern void setpaid(struct monst *) NO_NNARGS;
|
||||
extern void record_price_quote(int, unsigned long, boolean);
|
||||
extern void append_price_quote(char *, char **, int) NONNULLARG12;
|
||||
extern long money2mon(struct monst *, long) NONNULLARG1;
|
||||
extern void money2u(struct monst *, long) NONNULLARG1;
|
||||
extern void shkgone(struct monst *) NONNULLARG1;
|
||||
@@ -2923,6 +2970,8 @@ extern void globby_bill_fixup(struct obj *, struct obj *) NONNULLARG12;
|
||||
extern void credit_report(struct monst *shkp, int idx,
|
||||
boolean silent) NONNULLARG1;
|
||||
extern void use_unpaid_trapobj(struct obj *, coordxy, coordxy) NONNULLARG1;
|
||||
extern void noisy_shop(struct mkroom *);
|
||||
|
||||
|
||||
/* ### shknam.c ### */
|
||||
|
||||
@@ -3019,6 +3068,8 @@ extern int nhl_abs_coord(lua_State *) NONNULLARG1;
|
||||
extern void update_croom(void);
|
||||
extern const char *get_trapname_bytype(int);
|
||||
extern void l_register_des(lua_State *) NONNULLARG1;
|
||||
extern int get_table_objclass(lua_State *) NONNULLARG1;
|
||||
extern int get_table_objtype(lua_State *) NONNULLARG1;
|
||||
#endif /* !CROSSCOMPILE || CROSSCOMPILE_TARGET */
|
||||
|
||||
/* ### spell.c ### */
|
||||
@@ -3035,6 +3086,7 @@ extern int spelleffects(int, boolean, boolean);
|
||||
extern int tport_spell(int);
|
||||
extern void losespells(void);
|
||||
extern int dovspell(void);
|
||||
extern void show_spells(void);
|
||||
extern void initialspell(struct obj *) NONNULLARG1;
|
||||
extern int known_spell(short);
|
||||
extern int spell_idx(short);
|
||||
@@ -3305,7 +3357,9 @@ extern void check_twitch(void);
|
||||
|
||||
/* ### u_init.c ### */
|
||||
|
||||
extern void u_init(void);
|
||||
extern void u_init_misc(void);
|
||||
extern void u_init_inventory_attrs(void);
|
||||
extern void u_init_skills_discoveries(void);
|
||||
|
||||
/* ### uhitm.c ### */
|
||||
|
||||
@@ -3417,6 +3471,8 @@ extern int passive(struct monst *, struct obj *, boolean, boolean, uchar,
|
||||
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 boolean disguised_as_non_mon(struct monst *) NONNULLARG1;
|
||||
extern boolean disguised_as_mon(struct monst *) NONNULLARG1;
|
||||
extern int flash_hits_mon(struct monst *, struct obj *) NONNULLARG12;
|
||||
extern void light_hits_gremlin(struct monst *, int) NONNULLARG1;
|
||||
|
||||
@@ -3433,8 +3489,8 @@ 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 */
|
||||
ATTRNORETURN extern void after_opt_showpaths(const char *) NORETURN;
|
||||
|
||||
/* ### unixtty.c ### */
|
||||
|
||||
@@ -3668,6 +3724,7 @@ extern void dry_a_towel(struct obj *, int, boolean) NONNULLARG1;
|
||||
extern char *skill_level_name(int, char *) NONNULLARG2;
|
||||
extern const char *skill_name(int);
|
||||
extern boolean can_advance(int, boolean);
|
||||
extern void show_skills(void);
|
||||
extern int enhance_weapon_skill(void);
|
||||
extern void unrestrict_weapon_skill(int);
|
||||
extern void use_skill(int, int);
|
||||
@@ -3832,6 +3889,7 @@ extern void wizcustom_callback(winid win, int glyphnum, char *id);
|
||||
#if (NH_DEVEL_STATUS != NH_STATUS_RELEASED) || defined(DEBUG)
|
||||
extern int wiz_display_macros(void);
|
||||
extern int wiz_mon_diff(void);
|
||||
extern int wiz_objprobs(void);
|
||||
#endif
|
||||
extern void sanity_check(void);
|
||||
|
||||
@@ -3869,9 +3927,11 @@ extern void setworn(struct obj *, long) NO_NNARGS; /* has tests for obj */
|
||||
extern void setnotworn(struct obj *) NO_NNARGS; /* has tests for obj */
|
||||
extern void allunworn(void);
|
||||
extern struct obj *wearmask_to_obj(long);
|
||||
extern int wornmask_to_armcat(long);
|
||||
extern long armcat_to_wornmask(int);
|
||||
extern long wearslot(struct obj *) NONNULLARG1;
|
||||
extern void check_wornmask_slots(void);
|
||||
extern void mon_set_minvis(struct monst *) NONNULLARG1;
|
||||
extern void mon_set_minvis(struct monst *, boolean) NONNULLARG1;
|
||||
extern void mon_adjust_speed(struct monst *, int, struct obj *) NONNULLARG1;
|
||||
extern void update_mon_extrinsics(struct monst *, struct obj *, boolean,
|
||||
boolean) NONNULLARG12;
|
||||
@@ -3937,16 +3997,17 @@ extern int spell_damage_bonus(int);
|
||||
extern const char *exclam(int force) NONNULL;
|
||||
extern void hit(const char *, struct monst *, const char *) NONNULLPTRS;
|
||||
extern void miss(const char *, struct monst *) NONNULLPTRS;
|
||||
extern struct monst *bhit(coordxy, coordxy, int, enum bhit_call_types,
|
||||
extern struct monst *bhit(int, int, int, enum bhit_call_types,
|
||||
int(*)(struct monst *, struct obj *),
|
||||
int(*)(struct obj *, struct obj *),
|
||||
struct obj **) NONNULLARG7;
|
||||
extern struct monst *boomhit(struct obj *, coordxy, coordxy) NONNULLARG1;
|
||||
extern struct monst *boomhit(struct obj *, int, int) NONNULLARG1;
|
||||
extern int zhitm(struct monst *, int, int, struct obj **) NONNULLPTRS;
|
||||
extern int burn_floor_objects(coordxy, coordxy, boolean, boolean);
|
||||
extern void ubuzz(int, int);
|
||||
extern void buzz(int, int, coordxy, coordxy, int, int);
|
||||
extern void dobuzz(int, int, coordxy, coordxy, int, int, boolean);
|
||||
extern void dobuzz(int, int, coordxy, coordxy, int, int,
|
||||
boolean, boolean, boolean);
|
||||
extern void melt_ice(coordxy, coordxy, const char *) NO_NNARGS;
|
||||
extern void start_melt_ice_timeout(coordxy, coordxy, long);
|
||||
extern void melt_ice_away(union any *, long) NONNULLARG1;
|
||||
@@ -3960,6 +4021,8 @@ extern boolean inventory_resistance_check(int);
|
||||
extern char *item_what(int);
|
||||
extern int destroy_items(struct monst *, int, int) NONNULLARG1;
|
||||
extern int resist(struct monst *, char, int, int) NONNULLARG1;
|
||||
extern void wish_history_add(char *);
|
||||
extern void wish_history_flush(void);
|
||||
extern void makewish(void);
|
||||
extern const char *flash_str(int, boolean) NONNULL;
|
||||
|
||||
|
||||
@@ -254,6 +254,7 @@ struct instance_flags {
|
||||
boolean remember_getpos; /* save getpos() positioning in do-again queue */
|
||||
boolean sad_feeling; /* unseen pet is dying */
|
||||
boolean showdamage; /* extra message reporting damage hero has taken */
|
||||
boolean pending_customizations; /* at least one custom. was specified */
|
||||
xint8 debug_fuzzer; /* fuzz testing */
|
||||
int at_midnight; /* only valid during end of game disclosure */
|
||||
int at_night; /* also only valid during end of game disclosure */
|
||||
@@ -292,6 +293,7 @@ struct instance_flags {
|
||||
boolean debug_overwrite_stairs; /* debug: allow overwriting stairs */
|
||||
boolean debug_mongen; /* debug: prevent monster generation */
|
||||
boolean debug_hunger; /* debug: prevent hunger */
|
||||
boolean debug_prevent_pline; /* debug: prevent pline going to UI */
|
||||
boolean mon_polycontrol; /* debug: control monster polymorphs */
|
||||
boolean mon_telecontrol; /* debug: control monster teleports */
|
||||
boolean in_dumplog; /* doing the dumplog right now? */
|
||||
@@ -328,6 +330,7 @@ struct instance_flags {
|
||||
boolean num_pad; /* use numbers for movement commands */
|
||||
boolean perm_invent; /* display persistent inventory window */
|
||||
boolean perm_invent_pending; /* need to try again */
|
||||
boolean pricequotes; /* display price quotes on unIDd objects */
|
||||
boolean renameallowed; /* can change hero name during role selection */
|
||||
boolean renameinprogress; /* we are changing hero name */
|
||||
boolean sounds; /* master on/off switch for using soundlib */
|
||||
@@ -481,7 +484,7 @@ struct instance_flags {
|
||||
};
|
||||
|
||||
/*
|
||||
* Old deprecated names
|
||||
* Old, deprecated names
|
||||
*/
|
||||
#ifdef TTY_GRAPHICS
|
||||
#define eight_bit_tty wc_eight_bit_input
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#define MOUSECMD 0x0800 /* cmd allowed to be bound to mouse button */
|
||||
#define CMD_INSANE 0x1000 /* suppress sanity check (for ^P and ^R) */
|
||||
#define AUTOCOMP_ADJ 0x2000 /* user changed command autocompletion */
|
||||
#define CMD_PARAM 0x4000 /* command requires a param from key bind */
|
||||
|
||||
/* flags for extcmds_match() */
|
||||
#define ECM_NOFLAGS 0
|
||||
@@ -29,6 +30,15 @@
|
||||
#define ECM_EXACTMATCH 0x02 /* needs exact match of findstr */
|
||||
#define ECM_NO1CHARCMD 0x04 /* ignore commands like '?' and '#' */
|
||||
|
||||
/* a key bound to ext_func_tab */
|
||||
struct Cmd_bind {
|
||||
uchar key;
|
||||
boolean userbind; /* added by user */
|
||||
char *param;
|
||||
const struct ext_func_tab *cmd;
|
||||
struct Cmd_bind *next;
|
||||
};
|
||||
|
||||
struct ext_func_tab {
|
||||
uchar key;
|
||||
const char *ef_txt, *ef_desc;
|
||||
|
||||
@@ -102,18 +102,20 @@ typedef unsigned readLenType;
|
||||
#endif
|
||||
#define BOOL_RANDOM (-1)
|
||||
|
||||
enum optchoice { opt_in, opt_out};
|
||||
|
||||
/*
|
||||
* type nhsym: loadable symbols go into this type
|
||||
*/
|
||||
typedef uchar nhsym;
|
||||
|
||||
#ifndef STRNCMPI
|
||||
#ifndef __SASC_60 /* SAS/C already shifts to stricmp */
|
||||
/* SAS/C already shifts to stricmp */
|
||||
#if !defined(__SASC_60) && !defined(CROSS_TO_AMIGA)
|
||||
#define strcmpi(a, b) strncmpi((a), (b), -1)
|
||||
#endif
|
||||
#endif
|
||||
#ifdef CROSS_TO_AMIGA
|
||||
#define strcmpi(a, b) stricmp(a, b)
|
||||
#endif
|
||||
|
||||
/* #define SPECIALIZATION */ /* do "specialized" version of new topology */
|
||||
|
||||
@@ -571,6 +573,45 @@ typedef enum NHL_pcall_action {
|
||||
NHLpa_impossible
|
||||
} NHL_pcall_action;
|
||||
|
||||
enum optchoice { opt_in, opt_out};
|
||||
/*
|
||||
* option setting restrictions
|
||||
*/
|
||||
enum optset_restrictions {
|
||||
set_in_sysconf = 0, /* system config file option only */
|
||||
set_in_config = 1, /* config file option only */
|
||||
set_viaprog = 2, /* may be set via extern program, not seen in game */
|
||||
set_gameview = 3, /* may be set via extern program, displayed in game */
|
||||
set_in_game = 4, /* may be set via extern program or set in the game */
|
||||
set_wizonly = 5, /* may be set in the game if wizmode */
|
||||
set_wiznofuz = 6, /* wizard-mode only, but not by fuzzer */
|
||||
set_hidden = 7 /* placeholder for prefixed entries, never show it */
|
||||
};
|
||||
|
||||
/* these aren't the same as set_xxx */
|
||||
enum option_phases {
|
||||
phase_not_set = 0,
|
||||
builtin_opt = 1, /* compiled-in default value of an option */
|
||||
syscf_opt, /* sysconf setting of an option, overrides builtin */
|
||||
rc_file_opt, /* player's run-time config file setting, overrides syscf */
|
||||
environ_opt, /* player's environment NETHACKOPTIONS, overrides rc_file */
|
||||
cmdline_opt, /* program invocation command-line, overrides environ */
|
||||
play_opt, /* 'O' command, interactively set so overrides all */
|
||||
num_opt_phases
|
||||
};
|
||||
|
||||
#define SET__IS_VALUE_VALID(s) ((s < set_in_sysconf) || (s > set_wiznofuz))
|
||||
#include "optlist.h"
|
||||
enum opt {
|
||||
opt_prefix_only = -1,
|
||||
#define NHOPT_ENUM
|
||||
#include "optlist.h"
|
||||
#undef NHOPT_ENUM
|
||||
OPTCOUNT
|
||||
};
|
||||
|
||||
|
||||
|
||||
#define SFCTOOL_BIT (1UL << 30)
|
||||
|
||||
#endif /* GLOBAL_H */
|
||||
|
||||
@@ -252,7 +252,7 @@ struct cmd {
|
||||
boolean swap_yz; /* QWERTZ keyboards; use z to move NW, y to zap */
|
||||
const char *dirchars; /* current movement/direction characters */
|
||||
const char *alphadirchars; /* same as dirchars if !numpad */
|
||||
const struct ext_func_tab *commands[256]; /* indexed by input character */
|
||||
struct Cmd_bind *cmdbinds;
|
||||
const struct ext_func_tab *mousebtn[NUM_MOUSE_BUTTONS];
|
||||
char spkeys[NUM_NHKF];
|
||||
char extcmd_char; /* key that starts an extended command ('#') */
|
||||
@@ -571,6 +571,11 @@ enum hunger_state_types {
|
||||
STARVED = 6
|
||||
};
|
||||
|
||||
/* fake inventory letters, not 'a'..'z' or 'A'..'Z' */
|
||||
#define NOINVSYM '#' /* overflow because all 52 letters are in use */
|
||||
#define CONTAINED_SYM '>' /* designator for inside a container */
|
||||
#define HANDS_SYM '-' /* hands|fingers|self depending on context */
|
||||
|
||||
/* inventory counts (slots in tty parlance)
|
||||
* a...zA..Z invlet_basic (52)
|
||||
* $a...zA..Z# 2 special additions
|
||||
@@ -697,22 +702,6 @@ enum nhcb_calls {
|
||||
NUM_NHCB
|
||||
};
|
||||
|
||||
/*
|
||||
* option setting restrictions
|
||||
*/
|
||||
|
||||
enum optset_restrictions {
|
||||
set_in_sysconf = 0, /* system config file option only */
|
||||
set_in_config = 1, /* config file option only */
|
||||
set_viaprog = 2, /* may be set via extern program, not seen in game */
|
||||
set_gameview = 3, /* may be set via extern program, displayed in game */
|
||||
set_in_game = 4, /* may be set via extern program or set in the game */
|
||||
set_wizonly = 5, /* may be set in the game if wizmode */
|
||||
set_wiznofuz = 6, /* wizard-mode only, but not by fuzzer */
|
||||
set_hidden = 7 /* placeholder for prefixed entries, never show it */
|
||||
};
|
||||
#define SET__IS_VALUE_VALID(s) ((s < set_in_sysconf) || (s > set_wiznofuz))
|
||||
|
||||
struct plinemsg_type {
|
||||
xint16 msgtype; /* one of MSGTYP_foo */
|
||||
struct nhregex *regex;
|
||||
@@ -776,7 +765,7 @@ struct selectionvar {
|
||||
|
||||
/* structure for 'program_state'; not saved and restored */
|
||||
struct sinfo {
|
||||
int gameover; /* self explanatory? */
|
||||
int gameover; /* self-explanatory? */
|
||||
int stopprint; /* inhibit further end of game disclosure */
|
||||
#ifdef HANGUPHANDLING
|
||||
volatile int done_hup; /* SIGHUP or moral equivalent received
|
||||
@@ -812,6 +801,7 @@ struct sinfo {
|
||||
interface to suppress menu commands in similar conditions;
|
||||
readchar() always resets it to 'otherInp' prior to returning */
|
||||
int input_state; /* whether next key pressed will be entering a command */
|
||||
int early_options; /* inside early_options processing */
|
||||
#ifdef TTY_GRAPHICS
|
||||
/* resize_pending only matters when handling a SIGWINCH signal for tty;
|
||||
getting_char is used along with that and also separately for UNIX;
|
||||
@@ -1345,7 +1335,7 @@ typedef uint32_t mmflags_nht; /* makemon MM_ flags */
|
||||
|
||||
/* Macros for launching objects */
|
||||
#define ROLL 0x01 /* the object is rolling */
|
||||
#define FLING 0x02 /* the object is flying thru the air */
|
||||
#define FLING 0x02 /* the object is flying through the air */
|
||||
#define LAUNCH_UNSEEN 0x40 /* hero neither caused nor saw it */
|
||||
#define LAUNCH_KNOWN 0x80 /* the hero caused this by explicit action */
|
||||
|
||||
@@ -1527,7 +1517,7 @@ typedef uint32_t mmflags_nht; /* makemon MM_ flags */
|
||||
(objects[(obj)->otyp].a_ac + (obj)->spe \
|
||||
- min((int) greatest_erosion(obj), objects[(obj)->otyp].a_ac))
|
||||
|
||||
#define makeknown(x) discover_object((x), TRUE, TRUE)
|
||||
#define makeknown(x) discover_object((x), TRUE, TRUE, TRUE)
|
||||
#define distu(xx, yy) dist2((coordxy) (xx), (coordxy) (yy), u.ux, u.uy)
|
||||
#define mdistu(mon) distu((mon)->mx, (mon)->my)
|
||||
#define onlineu(xx, yy) online2((coordxy)(xx), (coordxy)(yy), u.ux, u.uy)
|
||||
|
||||
39
include/mcastu.h
Normal file
39
include/mcastu.h
Normal file
@@ -0,0 +1,39 @@
|
||||
|
||||
|
||||
#define MCF_NONE 0x0000
|
||||
#define MCF_INDIRECT 0x0001 /* untargeted/indirect spell */
|
||||
#define MCF_SIGHT 0x0002 /* monster needs to see hero */
|
||||
#define MCF_HOSTILE 0x0004 /* cast by hostile monsters only */
|
||||
|
||||
#if defined(MCASTU_ENUM)
|
||||
#define MONSPELL(def, lvl, flags) MCAST_##def
|
||||
#elif defined(MCASTU_INIT)
|
||||
#define MONSPELL(def, lvl, flags) { lvl, flags }
|
||||
#elif defined(DUMP_MCASTU_ENUM1)
|
||||
#define MONSPELL(def, lvl, flags) MCAST_DUMPENUM_##def
|
||||
#elif defined(DUMP_MCASTU_ENUM2)
|
||||
#define MONSPELL(def, lvl, flags) { MCAST_DUMPENUM_##def, #def }
|
||||
#endif
|
||||
|
||||
MONSPELL(PSI_BOLT, 0, MCF_HOSTILE|MCF_SIGHT),
|
||||
MONSPELL(OPEN_WOUNDS, 0, MCF_HOSTILE|MCF_SIGHT),
|
||||
MONSPELL(CURE_SELF, 1, MCF_INDIRECT),
|
||||
MONSPELL(HASTE_SELF, 2, MCF_INDIRECT),
|
||||
MONSPELL(CONFUSE_YOU, 2, MCF_HOSTILE|MCF_SIGHT),
|
||||
MONSPELL(STUN_YOU, 3, MCF_HOSTILE|MCF_SIGHT),
|
||||
MONSPELL(DISAPPEAR, 4, MCF_INDIRECT),
|
||||
MONSPELL(PARALYZE, 4, MCF_HOSTILE|MCF_SIGHT),
|
||||
MONSPELL(BLIND_YOU, 6, MCF_HOSTILE|MCF_SIGHT),
|
||||
MONSPELL(WEAKEN_YOU, 6, MCF_HOSTILE|MCF_SIGHT),
|
||||
MONSPELL(DESTRY_ARMR, 8, MCF_HOSTILE|MCF_SIGHT),
|
||||
MONSPELL(INSECTS, 8, MCF_HOSTILE|MCF_INDIRECT|MCF_SIGHT),
|
||||
MONSPELL(CURSE_ITEMS, 10, MCF_HOSTILE|MCF_SIGHT),
|
||||
MONSPELL(LIGHTNING, 11, MCF_HOSTILE|MCF_SIGHT),
|
||||
MONSPELL(FIRE_PILLAR, 12, MCF_HOSTILE|MCF_SIGHT),
|
||||
MONSPELL(GEYSER, 13, MCF_HOSTILE|MCF_SIGHT),
|
||||
MONSPELL(AGGRAVATION, 13, MCF_INDIRECT|MCF_HOSTILE|MCF_SIGHT),
|
||||
MONSPELL(SUMMON_MONS, 15, MCF_HOSTILE|MCF_INDIRECT|MCF_SIGHT),
|
||||
MONSPELL(CLONE_WIZ, 18, MCF_HOSTILE|MCF_INDIRECT|MCF_SIGHT),
|
||||
MONSPELL(DEATH_TOUCH, 20, MCF_HOSTILE|MCF_SIGHT),
|
||||
|
||||
#undef MONSPELL
|
||||
@@ -98,6 +98,7 @@ struct epri {
|
||||
schar shroom; /* index in rooms */
|
||||
coord shrpos; /* position of shrine */
|
||||
d_level shrlevel; /* level (& dungeon) of shrine */
|
||||
unsigned cheapskate_count; /* number of cheapskate donations */
|
||||
long intone_time, /* used to limit verbosity +*/
|
||||
enter_time, /*+ of temple entry messages */
|
||||
hostile_time, /* forbidding feeling */
|
||||
|
||||
@@ -18,9 +18,9 @@
|
||||
#define UNLOCKDOOR 0x00800000L /* unlocks locked doors */
|
||||
#define BUSTDOOR 0x01000000L /* breaks any doors */
|
||||
#define ALLOW_ROCK 0x02000000L /* pushes rocks */
|
||||
#define ALLOW_WALL 0x04000000L /* walks thru walls */
|
||||
#define ALLOW_WALL 0x04000000L /* walks through walls */
|
||||
#define ALLOW_DIG 0x08000000L /* digs */
|
||||
#define ALLOW_BARS 0x10000000L /* may pass thru iron bars */
|
||||
#define ALLOW_BARS 0x10000000L /* may pass through iron bars */
|
||||
#define ALLOW_SANCT 0x20000000L /* enters temples */
|
||||
#define ALLOW_SSM 0x40000000L /* ignores scare monster */
|
||||
#ifdef NHSTDC
|
||||
@@ -30,4 +30,10 @@
|
||||
#endif
|
||||
/* clang-format on */
|
||||
|
||||
struct mfndposdata {
|
||||
int cnt;
|
||||
coord poss[9];
|
||||
long info[9];
|
||||
};
|
||||
|
||||
#endif /* MFNDPOS_H */
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
#define AD_BLND 11 /* blinds (yellow light) */
|
||||
#define AD_STUN 12 /* stuns */
|
||||
#define AD_SLOW 13 /* slows */
|
||||
#define AD_PLYS 14 /* paralyses */
|
||||
#define AD_PLYS 14 /* paralyzes */
|
||||
#define AD_DRLI 15 /* drains life levels (Vampire) */
|
||||
#define AD_DREN 16 /* drains magic energy */
|
||||
#define AD_LEGS 17 /* damages legs (xan) */
|
||||
@@ -101,7 +101,7 @@ struct mhitm_data {
|
||||
};
|
||||
|
||||
/*
|
||||
* Monster to monster attacks. When a monster attacks another (mattackm),
|
||||
* Monster-to-monster attacks. When a monster attacks another (mattackm),
|
||||
* any or all of the following can be returned. See mattackm() for more
|
||||
* details.
|
||||
*/
|
||||
|
||||
@@ -173,7 +173,7 @@
|
||||
as unique even though they really aren't; that's ok here */
|
||||
#define unique_corpstat(ptr) (((ptr)->geno & G_UNIQ) != 0)
|
||||
|
||||
/* this returns the light's range, or 0 if none; if we add more light emitting
|
||||
/* this returns the light's range, or 0 if none; if we add more light-emitting
|
||||
monsters, we'll likely have to add a new light range field to mons[] */
|
||||
#define emits_light(ptr) \
|
||||
(((ptr)->mlet == S_LIGHT || (ptr) == &mons[PM_FLAMING_SPHERE] \
|
||||
|
||||
@@ -85,9 +85,9 @@ enum ms_sounds {
|
||||
#define M1_FLY 0x00000001L /* can fly or float */
|
||||
#define M1_SWIM 0x00000002L /* can traverse water */
|
||||
#define M1_AMORPHOUS 0x00000004L /* can flow under doors */
|
||||
#define M1_WALLWALK 0x00000008L /* can phase thru rock */
|
||||
#define M1_WALLWALK 0x00000008L /* can phase through rock */
|
||||
#define M1_CLING 0x00000010L /* can cling to ceiling */
|
||||
#define M1_TUNNEL 0x00000020L /* can tunnel thru rock */
|
||||
#define M1_TUNNEL 0x00000020L /* can tunnel through rock */
|
||||
#define M1_NEEDPICK 0x00000040L /* needs pick to tunnel */
|
||||
#define M1_CONCEAL 0x00000080L /* hides under objects */
|
||||
#define M1_HIDE 0x00000100L /* mimics, blends in with ceiling */
|
||||
|
||||
@@ -162,6 +162,9 @@ struct monst {
|
||||
Bitfield(meverseen, 1); /* mon has been seen at some point */
|
||||
|
||||
Bitfield(mspotted, 1); /* mon is currently seen by hero */
|
||||
Bitfield(mwandexp, 1); /* mon has experience with wands */
|
||||
Bitfield(mgenmklev, 1); /* made by the level generation */
|
||||
/* 5 spare bits */
|
||||
|
||||
unsigned long mstrategy; /* for monsters with mflag3: current strategy */
|
||||
#ifdef NHSTDC
|
||||
|
||||
@@ -1600,7 +1600,7 @@
|
||||
M2_STRONG | M2_NEUTER, 0,
|
||||
10, CLR_BROWN, EARTH_ELEMENTAL),
|
||||
MON(NAM("water elemental"), S_ELEMENTAL,
|
||||
LVL(8, 6, 2, 30, 0), (G_NOCORPSE | 1),
|
||||
LVL(8, 5, 2, 30, 0), (G_NOCORPSE | 1),
|
||||
A(ATTK(AT_CLAW, AD_PHYS, 5, 6),
|
||||
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
||||
SIZ(2500, 0, MS_SILENT, MZ_HUGE), MR_POISON | MR_STONE, 0,
|
||||
@@ -3395,8 +3395,8 @@
|
||||
/* monster priests are separate monsters (above; "aligned cleric") */
|
||||
MON(NAMS("priest", "priestess", "cleric"), S_HUMAN,
|
||||
LVL(10, 12, 10, 2, 0), G_NOGEN,
|
||||
A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
|
||||
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
||||
A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_MAGC, AD_CLRC, 0, 0),
|
||||
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
||||
SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
|
||||
M1_HUMANOID | M1_OMNIVORE,
|
||||
M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_COLLECT,
|
||||
@@ -3451,8 +3451,8 @@
|
||||
12, HI_DOMESTIC, VALKYRIE),
|
||||
MON(NAM("wizard"), S_HUMAN,
|
||||
LVL(10, 12, 10, 3, 0), G_NOGEN,
|
||||
A(ATTK(AT_WEAP, AD_PHYS, 1, 6),
|
||||
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
||||
A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_MAGC, AD_SPEL, 0, 0),
|
||||
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
||||
SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0,
|
||||
M1_HUMANOID | M1_OMNIVORE,
|
||||
M2_NOPOLY | M2_HUMAN | M2_STRONG | M2_COLLECT | M2_MAGIC,
|
||||
|
||||
@@ -107,7 +107,9 @@ struct obj {
|
||||
* or enchantment); many items have this preset if
|
||||
* they lack anything interesting to discover */
|
||||
Bitfield(dknown, 1); /* description known (item seen "up close");
|
||||
* some types of items always have dknown set */
|
||||
* some types of items always have dknown set;
|
||||
* use observe_object to set to TRUE so that the
|
||||
* discoveries list is still correct */
|
||||
Bitfield(bknown, 1); /* BUC (blessed/uncursed/cursed) known */
|
||||
Bitfield(rknown, 1); /* rustproofing status known */
|
||||
Bitfield(cknown, 1); /* for containers (including statues): the contents
|
||||
@@ -449,6 +451,7 @@ struct obj {
|
||||
#define BURIED_TOO 0x2
|
||||
|
||||
/* object erosion types */
|
||||
#define ERODE_NONE -1
|
||||
#define ERODE_BURN 0
|
||||
#define ERODE_RUST 1
|
||||
#define ERODE_ROT 2
|
||||
|
||||
@@ -54,8 +54,8 @@ struct objclass {
|
||||
* otherwise, obj->dknown and obj->bknown
|
||||
* tell all, and obj->known should always
|
||||
* be set for proper merging behavior. */
|
||||
Bitfield(oc_pre_discovered, 1); /* already known at start of game; flagged
|
||||
* as such when discoveries are listed */
|
||||
Bitfield(oc_encountered, 1); /* hero has observed such an item at least
|
||||
once (perhaps without naming it) */
|
||||
Bitfield(oc_magic, 1); /* inherently magical object */
|
||||
Bitfield(oc_charged, 1); /* may have +n or (n) charges */
|
||||
Bitfield(oc_unique, 1); /* special one-of-a-kind object */
|
||||
@@ -76,9 +76,9 @@ struct objclass {
|
||||
#define IMMEDIATE 2 /* directional beam that doesn't ricochet */
|
||||
#define RAY 3 /* beam that does bounce off walls */
|
||||
/* overloaded oc_dir: strike mode bit mask for weapons and weptools */
|
||||
#define PIERCE 01 /* pointed weapon punctures target */
|
||||
#define SLASH 02 /* sharp weapon cuts target */
|
||||
#define WHACK 04 /* blunt weapon bashes target */
|
||||
#define PIERCE 1 /* pointed weapon punctures target */
|
||||
#define SLASH 2 /* sharp weapon cuts target */
|
||||
#define WHACK 4 /* blunt weapon bashes target */
|
||||
Bitfield(oc_material, 5); /* one of obj_material_types */
|
||||
|
||||
schar oc_subtyp;
|
||||
@@ -91,7 +91,7 @@ struct objclass {
|
||||
uchar oc_color; /* color of the object */
|
||||
|
||||
short oc_prob; /* probability, used in mkobj() */
|
||||
unsigned short oc_weight; /* encumbrance (1 cn = 0.1 lb.) */
|
||||
unsigned oc_weight; /* encumbrance (1 cn = 0.1 lb.) */
|
||||
short oc_cost; /* base cost in shops */
|
||||
/* Check the AD&D rules! The FIRST is small monster damage. */
|
||||
/* for weapons, and tools, rocks, and gems useful as weapons */
|
||||
@@ -104,6 +104,11 @@ struct objclass {
|
||||
#define oc_level oc_oc2 /* books: spell level */
|
||||
|
||||
unsigned short oc_nutrition; /* food value */
|
||||
|
||||
unsigned long oc_sell_minseen;
|
||||
unsigned long oc_sell_maxseen;
|
||||
unsigned long oc_buy_minseen;
|
||||
unsigned long oc_buy_maxseen;
|
||||
};
|
||||
|
||||
struct class_sym {
|
||||
@@ -146,7 +151,7 @@ enum objclass_syms {
|
||||
/* for mkobj() use ONLY! odd '-SPBOOK_CLASS' is in case of unsigned enums */
|
||||
#define SPBOOK_no_NOVEL (0 - (int) SPBOOK_CLASS)
|
||||
|
||||
#define BURNING_OIL (MAXOCLASSES + 1) /* Can be used as input to explode. */
|
||||
#define BURNING_OIL (MAXOCLASSES + 1) /* Can be used as input to explode */
|
||||
#define MON_EXPLODE (MAXOCLASSES + 2) /* Exploding monster (e.g. gas spore) */
|
||||
#define TRAP_EXPLODE (MAXOCLASSES + 3)
|
||||
|
||||
|
||||
@@ -41,10 +41,14 @@
|
||||
the second zero is oc_spare1 for padding between oc_tough and oc_dir */
|
||||
#define BITS(nmkn,mrg,uskn,ctnr,mgc,chrg,uniq,nwsh,big,tuf,dir,sub,mtrl) \
|
||||
nmkn,mrg,uskn,0,mgc,chrg,uniq,nwsh,big,tuf,0,dir,mtrl,sub /*cpp fodder*/
|
||||
/* note: 0UL-1UL is a method of expressing the largest possible
|
||||
unsigned long value whilst working around a false-positive warning
|
||||
in Microsoft Visual C (which assumes that a negative number was
|
||||
intended despite the explicit U suffix) */
|
||||
#define OBJECT(obj,bits,prp,sym,prob,dly,wt, \
|
||||
cost,sdam,ldam,oc1,oc2,nut,color,sn) \
|
||||
{ 0, 0, (char *) 0, bits, prp, sym, dly, color, prob, wt, \
|
||||
cost, sdam, ldam, oc1, oc2, nut }
|
||||
cost, sdam, ldam, oc1, oc2, nut, (0UL-1UL), 0, (0UL-1UL), 0 }
|
||||
#define MARKER(tag,sn) /*empty*/
|
||||
|
||||
#elif defined(OBJECTS_ENUM)
|
||||
@@ -451,12 +455,12 @@ HELM("fedora", NoDes,
|
||||
1, 0, 0, 0, 0, 3, 1, 10, 0, CLOTH, CLR_BROWN,
|
||||
FEDORA),
|
||||
HELM("cornuthaum", "conical hat",
|
||||
0, 1, CLAIRVOYANT, 3, 1, 4, 80, 10, 1, CLOTH, CLR_BLUE,
|
||||
0, 1, CLAIRVOYANT, 5, 1, 4, 80, 10, 1, CLOTH, CLR_BLUE,
|
||||
/* name coined by devteam; confers clairvoyance for wizards,
|
||||
blocks clairvoyance if worn by role other than wizard */
|
||||
CORNUTHAUM),
|
||||
HELM("dunce cap", "conical hat",
|
||||
0, 1, 0, 3, 1, 4, 1, 10, 0, CLOTH, CLR_BLUE,
|
||||
0, 1, 0, 5, 1, 4, 1, 10, 0, CLOTH, CLR_BLUE,
|
||||
/* sets Int and Wis to fixed value of 6, so actually provides
|
||||
protection against death caused by Int being drained below 3 */
|
||||
DUNCE_CAP),
|
||||
@@ -464,7 +468,7 @@ HELM("dented pot", NoDes,
|
||||
1, 0, 0, 2, 0, 10, 8, 9, 0, IRON, CLR_BLACK,
|
||||
DENTED_POT),
|
||||
HELM("helm of brilliance", "crystal helmet",
|
||||
0, 1, 0, 3, 1, 40, 50, 9, 0, GLASS, CLR_WHITE,
|
||||
0, 1, 0, 6, 1, 40, 50, 9, 0, GLASS, CLR_WHITE,
|
||||
/* used to be iron and shuffled as "etched helmet" but required
|
||||
special case for the effect of iron armor on spell casting */
|
||||
HELM_OF_BRILLIANCE),
|
||||
@@ -473,13 +477,13 @@ HELM("helmet", "plumed helmet",
|
||||
0, 0, 0, 10, 1, 30, 10, 9, 0, IRON, HI_METAL,
|
||||
HELMET),
|
||||
HELM("helm of caution", "etched helmet",
|
||||
0, 1, WARNING, 3, 1, 50, 50, 9, 0, IRON, CLR_GREEN,
|
||||
0, 1, WARNING, 6, 1, 50, 50, 9, 0, IRON, CLR_GREEN,
|
||||
HELM_OF_CAUTION),
|
||||
HELM("helm of opposite alignment", "crested helmet",
|
||||
0, 1, 0, 6, 1, 50, 50, 9, 0, IRON, HI_METAL,
|
||||
0, 1, 0, 10, 1, 50, 50, 9, 0, IRON, HI_METAL,
|
||||
HELM_OF_OPPOSITE_ALIGNMENT),
|
||||
HELM("helm of telepathy", "visored helmet",
|
||||
0, 1, TELEPAT, 2, 1, 50, 50, 9, 0, IRON, HI_METAL,
|
||||
0, 1, TELEPAT, 4, 1, 50, 50, 9, 0, IRON, HI_METAL,
|
||||
HELM_OF_TELEPATHY),
|
||||
|
||||
/* suits of armor */
|
||||
@@ -550,19 +554,19 @@ DRGN_ARMR("yellow dragon scales", 0, ACID_RES, 500, 7, CLR_YELLOW,
|
||||
#undef DRGN_ARMR
|
||||
/* other suits */
|
||||
ARMOR("plate mail", NoDes,
|
||||
1, 0, 1, 0, 44, 5, 450, 600, 3, 2, ARM_SUIT, IRON, HI_METAL,
|
||||
1, 0, 1, 0, 40, 5, 450, 600, 3, 2, ARM_SUIT, IRON, HI_METAL,
|
||||
PLATE_MAIL),
|
||||
ARMOR("crystal plate mail", NoDes,
|
||||
1, 0, 1, 0, 10, 5, 415, 820, 3, 2, ARM_SUIT, GLASS, CLR_WHITE,
|
||||
CRYSTAL_PLATE_MAIL),
|
||||
ARMOR("bronze plate mail", NoDes,
|
||||
1, 0, 1, 0, 25, 5, 450, 400, 4, 1, ARM_SUIT, COPPER, HI_COPPER,
|
||||
1, 0, 1, 0, 23, 5, 450, 400, 4, 1, ARM_SUIT, COPPER, HI_COPPER,
|
||||
BRONZE_PLATE_MAIL),
|
||||
ARMOR("splint mail", NoDes,
|
||||
1, 0, 1, 0, 62, 5, 400, 80, 4, 1, ARM_SUIT, IRON, HI_METAL,
|
||||
1, 0, 1, 0, 57, 5, 400, 80, 4, 1, ARM_SUIT, IRON, HI_METAL,
|
||||
SPLINT_MAIL),
|
||||
ARMOR("banded mail", NoDes,
|
||||
1, 0, 1, 0, 72, 5, 350, 90, 4, 1, ARM_SUIT, IRON, HI_METAL,
|
||||
1, 0, 1, 0, 66, 5, 350, 90, 4, 1, ARM_SUIT, IRON, HI_METAL,
|
||||
BANDED_MAIL),
|
||||
ARMOR("dwarvish mithril-coat", NoDes,
|
||||
1, 0, 0, 0, 10, 1, 150, 240, 4, 2, ARM_SUIT, MITHRIL, HI_SILVER,
|
||||
@@ -571,28 +575,28 @@ ARMOR("elven mithril-coat", NoDes,
|
||||
1, 0, 0, 0, 15, 1, 150, 240, 5, 2, ARM_SUIT, MITHRIL, HI_SILVER,
|
||||
ELVEN_MITHRIL_COAT),
|
||||
ARMOR("chain mail", NoDes,
|
||||
1, 0, 0, 0, 72, 5, 300, 75, 5, 1, ARM_SUIT, IRON, HI_METAL,
|
||||
1, 0, 0, 0, 66, 5, 300, 75, 5, 1, ARM_SUIT, IRON, HI_METAL,
|
||||
CHAIN_MAIL),
|
||||
ARMOR("orcish chain mail", "crude chain mail",
|
||||
0, 0, 0, 0, 20, 5, 300, 75, 6, 1, ARM_SUIT, IRON, CLR_BLACK,
|
||||
0, 0, 0, 0, 19, 5, 300, 75, 6, 1, ARM_SUIT, IRON, CLR_BLACK,
|
||||
ORCISH_CHAIN_MAIL),
|
||||
ARMOR("scale mail", NoDes,
|
||||
1, 0, 0, 0, 72, 5, 250, 45, 6, 1, ARM_SUIT, IRON, HI_METAL,
|
||||
1, 0, 0, 0, 66, 5, 250, 45, 6, 1, ARM_SUIT, IRON, HI_METAL,
|
||||
SCALE_MAIL),
|
||||
ARMOR("studded leather armor", NoDes,
|
||||
1, 0, 0, 0, 72, 3, 200, 15, 7, 1, ARM_SUIT, LEATHER, HI_LEATHER,
|
||||
1, 0, 0, 0, 66, 3, 200, 15, 7, 1, ARM_SUIT, LEATHER, HI_LEATHER,
|
||||
STUDDED_LEATHER_ARMOR),
|
||||
ARMOR("ring mail", NoDes,
|
||||
1, 0, 0, 0, 72, 5, 250, 100, 7, 1, ARM_SUIT, IRON, HI_METAL,
|
||||
1, 0, 0, 0, 66, 5, 250, 100, 7, 1, ARM_SUIT, IRON, HI_METAL,
|
||||
RING_MAIL),
|
||||
ARMOR("orcish ring mail", "crude ring mail",
|
||||
0, 0, 0, 0, 20, 5, 250, 80, 8, 1, ARM_SUIT, IRON, CLR_BLACK,
|
||||
0, 0, 0, 0, 19, 5, 250, 80, 8, 1, ARM_SUIT, IRON, CLR_BLACK,
|
||||
ORCISH_RING_MAIL),
|
||||
ARMOR("leather armor", NoDes,
|
||||
1, 0, 0, 0, 82, 3, 150, 5, 8, 1, ARM_SUIT, LEATHER, HI_LEATHER,
|
||||
1, 0, 0, 0, 75, 3, 150, 5, 8, 1, ARM_SUIT, LEATHER, HI_LEATHER,
|
||||
LEATHER_ARMOR),
|
||||
ARMOR("leather jacket", NoDes,
|
||||
1, 0, 0, 0, 12, 0, 30, 10, 9, 0, ARM_SUIT, LEATHER, CLR_BLACK,
|
||||
1, 0, 0, 0, 11, 0, 30, 10, 9, 0, ARM_SUIT, LEATHER, CLR_BLACK,
|
||||
LEATHER_JACKET),
|
||||
|
||||
/* shirts */
|
||||
@@ -620,52 +624,58 @@ CLOAK("oilskin cloak", "slippery cloak",
|
||||
0, 0, 0, 8, 0, 10, 50, 9, 2, CLOTH, HI_CLOTH,
|
||||
OILSKIN_CLOAK),
|
||||
CLOAK("robe", NoDes,
|
||||
1, 1, 0, 3, 0, 15, 50, 8, 2, CLOTH, CLR_RED, ROBE),
|
||||
1, 1, 0, 6, 0, 15, 50, 8, 2, CLOTH, CLR_RED, ROBE),
|
||||
/* robe was adopted from slash'em, where it's worn as a suit
|
||||
rather than as a cloak and there are several variations */
|
||||
CLOAK("alchemy smock", "apron",
|
||||
0, 1, POISON_RES, 9, 0, 10, 50, 9, 1, CLOTH, CLR_WHITE,
|
||||
0, 1, POISON_RES, 11, 0, 10, 50, 9, 1, CLOTH, CLR_WHITE,
|
||||
ALCHEMY_SMOCK),
|
||||
CLOAK("leather cloak", NoDes,
|
||||
1, 0, 0, 8, 0, 15, 40, 9, 1, LEATHER, CLR_BROWN,
|
||||
LEATHER_CLOAK),
|
||||
/* with shuffled appearances... */
|
||||
CLOAK("cloak of protection", "tattered cape",
|
||||
0, 1, PROTECTION, 9, 0, 10, 50, 7, 3, CLOTH, HI_CLOTH,
|
||||
0, 1, PROTECTION, 11, 0, 10, 50, 7, 3, CLOTH, HI_CLOTH,
|
||||
CLOAK_OF_PROTECTION),
|
||||
/* cloak of protection is now the only item conferring MC 3 */
|
||||
CLOAK("cloak of invisibility", "opera cloak",
|
||||
0, 1, INVIS, 10, 0, 10, 60, 9, 1, CLOTH, CLR_BRIGHT_MAGENTA,
|
||||
0, 1, INVIS, 12, 0, 10, 60, 9, 1, CLOTH, CLR_BRIGHT_MAGENTA,
|
||||
CLOAK_OF_INVISIBILITY),
|
||||
CLOAK("cloak of magic resistance", "ornamental cope",
|
||||
0, 1, ANTIMAGIC, 2, 0, 10, 60, 9, 1, CLOTH, CLR_WHITE,
|
||||
0, 1, ANTIMAGIC, 6, 0, 10, 60, 9, 1, CLOTH, CLR_WHITE,
|
||||
CLOAK_OF_MAGIC_RESISTANCE),
|
||||
/* 'cope' is not a spelling mistake... leave it be */
|
||||
CLOAK("cloak of displacement", "piece of cloth",
|
||||
0, 1, DISPLACED, 10, 0, 10, 50, 9, 1, CLOTH, HI_CLOTH,
|
||||
0, 1, DISPLACED, 12, 0, 10, 50, 9, 1, CLOTH, HI_CLOTH,
|
||||
CLOAK_OF_DISPLACEMENT),
|
||||
|
||||
/* shields */
|
||||
SHIELD("small shield", NoDes,
|
||||
1, 0, 0, 0, 6, 0, 30, 3, 9, 0, WOOD, HI_WOOD,
|
||||
SHIELD("small shield", "wooden shield",
|
||||
0, 0, 0, 0, 6, 0, 30, 3, 9, 0, WOOD, HI_WOOD,
|
||||
SMALL_SHIELD),
|
||||
SHIELD("shield of drain resistance", "wooden shield",
|
||||
0, 1, 0, DRAIN_RES, 12, 0, 30, 50, 9, 0, WOOD, HI_WOOD,
|
||||
SHIELD_OF_DRAIN_RESISTANCE),
|
||||
SHIELD("shield of shock resistance", "wooden shield",
|
||||
0, 1, 0, SHOCK_RES, 12, 0, 30, 50, 9, 0, WOOD, HI_WOOD,
|
||||
SHIELD_OF_SHOCK_RESISTANCE),
|
||||
SHIELD("elven shield", "blue and green shield",
|
||||
0, 0, 0, 0, 2, 0, 40, 7, 8, 0, WOOD, CLR_GREEN,
|
||||
0, 0, 0, 0, 2, 0, 40, 7, 8, 0, WOOD, CLR_GREEN,
|
||||
ELVEN_SHIELD),
|
||||
SHIELD("Uruk-hai shield", "white-handed shield",
|
||||
0, 0, 0, 0, 2, 0, 50, 7, 9, 0, IRON, HI_METAL,
|
||||
0, 0, 0, 0, 2, 0, 50, 7, 9, 0, IRON, HI_METAL,
|
||||
URUK_HAI_SHIELD),
|
||||
SHIELD("orcish shield", "red-eyed shield",
|
||||
0, 0, 0, 0, 2, 0, 50, 7, 9, 0, IRON, CLR_RED,
|
||||
0, 0, 0, 0, 2, 0, 50, 7, 9, 0, IRON, CLR_RED,
|
||||
ORCISH_SHIELD),
|
||||
SHIELD("large shield", NoDes,
|
||||
1, 0, 1, 0, 7, 0, 100, 10, 8, 0, IRON, HI_METAL,
|
||||
1, 0, 1, 0, 4, 0, 100, 10, 8, 0, IRON, HI_METAL,
|
||||
LARGE_SHIELD),
|
||||
SHIELD("dwarvish roundshield", "large round shield",
|
||||
0, 0, 0, 0, 4, 0, 100, 10, 8, 0, IRON, HI_METAL,
|
||||
0, 0, 0, 0, 3, 0, 100, 10, 8, 0, IRON, HI_METAL,
|
||||
DWARVISH_ROUNDSHIELD),
|
||||
SHIELD("shield of reflection", "polished silver shield",
|
||||
0, 1, 0, REFLECTING, 3, 0, 50, 50, 8, 0, SILVER, HI_SILVER,
|
||||
0, 1, 0, REFLECTING, 7, 0, 50, 50, 8, 0, SILVER, HI_SILVER,
|
||||
SHIELD_OF_REFLECTION),
|
||||
|
||||
/* gloves */
|
||||
@@ -674,7 +684,7 @@ SHIELD("shield of reflection", "polished silver shield",
|
||||
* HI_METAL or CLR_BLACK. All have shuffled descriptions.
|
||||
*/
|
||||
GLOVES("leather gloves", "old gloves",
|
||||
0, 0, 0, 16, 1, 10, 8, 9, 0, LEATHER, HI_LEATHER,
|
||||
0, 0, 0, 15, 1, 10, 8, 9, 0, LEATHER, HI_LEATHER,
|
||||
LEATHER_GLOVES),
|
||||
GLOVES("gauntlets of fumbling", "padded gloves",
|
||||
0, 1, FUMBLING, 8, 1, 10, 50, 9, 0, LEATHER, HI_LEATHER,
|
||||
@@ -688,11 +698,11 @@ GLOVES("gauntlets of dexterity", "fencing gloves",
|
||||
|
||||
/* boots */
|
||||
BOOTS("low boots", "walking shoes",
|
||||
0, 0, 0, 25, 2, 10, 8, 9, 0, LEATHER, HI_LEATHER, LOW_BOOTS),
|
||||
0, 0, 0, 23, 2, 10, 8, 9, 0, LEATHER, HI_LEATHER, LOW_BOOTS),
|
||||
BOOTS("iron shoes", "hard shoes",
|
||||
0, 0, 0, 7, 2, 50, 16, 8, 0, IRON, HI_METAL, IRON_SHOES),
|
||||
BOOTS("high boots", "jackboots",
|
||||
0, 0, 0, 15, 2, 20, 12, 8, 0, LEATHER, HI_LEATHER, HIGH_BOOTS),
|
||||
0, 0, 0, 14, 2, 20, 12, 8, 0, LEATHER, HI_LEATHER, HIGH_BOOTS),
|
||||
/* with shuffled appearances... */
|
||||
BOOTS("speed boots", "combat boots",
|
||||
0, 1, FAST, 12, 2, 20, 50, 9, 0, LEATHER, HI_LEATHER, SPEED_BOOTS),
|
||||
@@ -1447,9 +1457,11 @@ WAND("create monster", "maple", 45, 200, 1, NODIR, WOOD, HI_WOOD,
|
||||
WAN_CREATE_MONSTER),
|
||||
WAND("wishing", "pine", 5, 500, 1, NODIR, WOOD, HI_WOOD,
|
||||
WAN_WISHING),
|
||||
WAND("stasis", "redwood", 45, 150, 1, NODIR, WOOD, CLR_RED,
|
||||
WAN_STASIS),
|
||||
WAND("nothing", "oak", 25, 100, 0, IMMEDIATE, WOOD, HI_WOOD,
|
||||
WAN_NOTHING),
|
||||
WAND("striking", "ebony", 75, 150, 1, IMMEDIATE, WOOD, HI_WOOD,
|
||||
WAND("striking", "ebony", 30, 150, 1, IMMEDIATE, WOOD, HI_WOOD,
|
||||
WAN_STRIKING),
|
||||
WAND("make invisible", "marble", 45, 150, 1, IMMEDIATE, MINERAL, HI_MINERAL,
|
||||
WAN_MAKE_INVISIBLE),
|
||||
|
||||
@@ -4,10 +4,6 @@
|
||||
#ifndef OPTLIST_H
|
||||
#define OPTLIST_H
|
||||
|
||||
#ifdef OPTIONS_C
|
||||
static int optfn_boolean(int, int, boolean, char *, char *);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* NOTE: If you add (or delete) an option, please review:
|
||||
* doc/options.txt
|
||||
@@ -16,6 +12,10 @@ static int optfn_boolean(int, int, boolean, char *, char *);
|
||||
* updates that should accompany your change.
|
||||
*/
|
||||
|
||||
#define BACKWARD_COMPAT
|
||||
|
||||
extern int optfn_boolean(int, int, boolean, char *, char *);
|
||||
|
||||
enum OptType { BoolOpt, CompOpt, OthrOpt };
|
||||
enum Y_N { No, Yes };
|
||||
enum Off_On { Off, On };
|
||||
@@ -45,7 +45,7 @@ struct allopt_t {
|
||||
const char *alias;
|
||||
const char *descr;
|
||||
const char *prefixgw;
|
||||
boolean initval, has_handler, dupdetected;
|
||||
boolean initval, has_handler, dupdetected, disregarded;
|
||||
};
|
||||
|
||||
#endif /* OPTLIST_H */
|
||||
@@ -74,16 +74,16 @@ static int optfn_##a(int, int, boolean, char *, char *);
|
||||
#elif defined(NHOPT_PARSE)
|
||||
#define NHOPTB(a, sec, b, c, s, i, n, v, d, al, bp, termp, desc) \
|
||||
{ #a, OptS_##sec, 0, b, opt_##a, s, BoolOpt, n, v, d, No, termp, c, \
|
||||
bp, &optfn_boolean, al, desc, (const char *) 0, i, 0, 0 },
|
||||
bp, &optfn_boolean, al, desc, (const char *) 0, i, 0, 0 , 0 },
|
||||
#define NHOPTC(a, sec, b, c, s, n, v, d, h, al, z) \
|
||||
{ #a, OptS_##sec, 0, b, opt_##a, s, CompOpt, n, v, d, No, 0, c, \
|
||||
(boolean *) 0, &optfn_##a, al, z, (const char *) 0, Off, h, 0 },
|
||||
(boolean *) 0, &optfn_##a, al, z, (const char *) 0, Off, h, 0, 0 },
|
||||
#define NHOPTP(a, sec, b, c, s, n, v, d, h, al, z) \
|
||||
{ #a, OptS_##sec, 0, b, pfx_##a, s, CompOpt, n, v, d, Yes, 0, c, \
|
||||
(boolean *) 0, &pfxfn_##a, al, z, #a, Off, h, 0 },
|
||||
(boolean *) 0, &pfxfn_##a, al, z, #a, Off, h, 0, 0 },
|
||||
#define NHOPTO(m, sec, a, b, c, s, n, v, d, al, z) \
|
||||
{ m, OptS_##sec, 0, b, opt_##a, s, OthrOpt, n, v, d, No, 0, c, \
|
||||
(boolean *) 0, &optfn_##a, al, z, (const char *) 0, On, On, 0 },
|
||||
(boolean *) 0, &optfn_##a, al, z, (const char *) 0, On, On, 0, 0 },
|
||||
|
||||
/* this is not reliable because TILES_IN_GLYPHMAP might be defined
|
||||
* in a multi-interface binary but not apply to the current interface */
|
||||
@@ -589,6 +589,9 @@ static int optfn_##a(int, int, boolean, char *, char *);
|
||||
NHOPTB(preload_tiles, Advanced, 0, opt_out, set_in_config, /* MSDOS only */
|
||||
On, Yes, No, No, NoAlias, &iflags.wc_preload_tiles, Term_False,
|
||||
(char *)0)
|
||||
NHOPTB(price_quotes, General, 0, opt_in, set_in_game,
|
||||
Off, Yes, No, No, NoAlias, &iflags.pricequotes, Term_False,
|
||||
"display prices you have seen for unidentified objects")
|
||||
NHOPTB(pushweapon, Behavior, 0, opt_in, set_in_game,
|
||||
Off, Yes, No, No, NoAlias, &flags.pushweapon, Term_False,
|
||||
"previous weapon goes to secondary slot")
|
||||
@@ -608,6 +611,9 @@ static int optfn_##a(int, int, boolean, char *, char *);
|
||||
Off, No, No, No, NoAlias, (boolean *) 0, Term_False,
|
||||
(char *)0)
|
||||
#endif
|
||||
NHOPTB(reroll, Advanced, 0, opt_in, set_in_config,
|
||||
Off, Yes, No, No, NoAlias, &u.uroleplay.reroll, Term_False,
|
||||
"allow rerolling of starting inventory and items")
|
||||
NHOPTB(rest_on_space, Advanced, 0, opt_in, set_in_game, Off,
|
||||
Yes, No, No, NoAlias, &flags.rest_on_space, Term_False,
|
||||
"space bar is bound to the rest-command")
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
* Incrementing EDITLEVEL can be used to force invalidation of old bones
|
||||
* and save files.
|
||||
*/
|
||||
#define EDITLEVEL 130
|
||||
#define EDITLEVEL 140
|
||||
|
||||
/*
|
||||
* Development status possibilities.
|
||||
@@ -36,7 +36,7 @@
|
||||
#define DEBUG
|
||||
#endif
|
||||
|
||||
#define COPYRIGHT_BANNER_A "NetHack, Copyright 1985-2025"
|
||||
#define COPYRIGHT_BANNER_A "NetHack, Copyright 1985-2026"
|
||||
#define COPYRIGHT_BANNER_B \
|
||||
" By Stichting Mathematisch Centrum and M. Stephenson."
|
||||
/* nomakedefs.copyright_banner_c is generated at runtime */
|
||||
|
||||
@@ -64,8 +64,8 @@ struct permonst {
|
||||
aligntyp maligntyp; /* basic monster alignment */
|
||||
unsigned short geno; /* creation/geno mask value */
|
||||
struct attack mattk[NATTK]; /* attacks matrix */
|
||||
unsigned short cwt, /* weight of corpse */
|
||||
cnutrit; /* its nutritional value */
|
||||
unsigned cwt; /* weight of corpse */
|
||||
unsigned short cnutrit; /* its nutritional value */
|
||||
uchar msound; /* noise it makes (6 bits) */
|
||||
uchar msize; /* physical size (3 bits) */
|
||||
uchar mresists; /* resistances */
|
||||
|
||||
@@ -14,7 +14,7 @@ struct q_score { /* Quest "scorecard" */
|
||||
Bitfield(killed_leader, 1); /* killed the quest leader */
|
||||
|
||||
Bitfield(first_locate, 1); /* only set the first time */
|
||||
Bitfield(met_intermed, 1); /* used if the locate is a person. */
|
||||
Bitfield(met_intermed, 1); /* used if the locate is a person */
|
||||
Bitfield(got_final, 1); /* got the final quest assignment */
|
||||
|
||||
Bitfield(made_goal, 3); /* # of times on goal level */
|
||||
|
||||
@@ -56,7 +56,7 @@ typedef struct {
|
||||
|
||||
/* Should probably do the same thing about objects */
|
||||
|
||||
boolean visible; /* Is the region visible ? */
|
||||
boolean visible; /* Is the region visible? */
|
||||
int glyph; /* Which glyph to use if visible */
|
||||
anything arg; /* Optional user argument (Ex: strength of
|
||||
* force field, damage of a fire zone, ...*/
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
* building on Don G Kneller's MS-DOS implementation. See drawing.c for
|
||||
* the code that permits the user to set the contents of the symbol structure.
|
||||
*
|
||||
* The door representation was changed by Ari
|
||||
* Huttunen(ahuttune@niksula.hut.fi)
|
||||
* The door representation was changed by
|
||||
* Ari Huttunen(ahuttune@niksula.hut.fi).
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -454,6 +454,7 @@ struct levelflags {
|
||||
Bitfield(stormy, 1); /* clouds create lightning bolts at random */
|
||||
|
||||
schar temperature; /* +1 == hot, -1 == cold */
|
||||
long stasis_until; /* wand of stasis effect lasts until when? */
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
@@ -476,7 +477,7 @@ typedef struct {
|
||||
#define fmon svl.level.monlist
|
||||
|
||||
/*
|
||||
* Covert a trap number into the defsym graphics array.
|
||||
* Convert a trap number into the defsym graphics array.
|
||||
* Convert a defsym number into a trap number.
|
||||
* Assumes that arrow trap will always be the first trap.
|
||||
*/
|
||||
|
||||
@@ -145,6 +145,7 @@ typedef struct {
|
||||
schar peaceful, asleep;
|
||||
short female, invis, cancelled, revived, avenge, fleeing, blinded,
|
||||
paralyzed, stunned, confused, waiting;
|
||||
short m_lev_adj;
|
||||
long seentraps;
|
||||
short has_invent;
|
||||
mmflags_nht mm_flags; /* makemon flags */
|
||||
|
||||
@@ -26,7 +26,7 @@ struct trap {
|
||||
Bitfield(once, 1);
|
||||
Bitfield(madeby_u, 1); /* So monsters may take offence when you trap
|
||||
* them. Recognizing who made the trap isn't
|
||||
* completely unreasonable, everybody has
|
||||
* completely unreasonable; everybody has
|
||||
* their own style. This flag is also needed
|
||||
* when you untrap a monster. It would be too
|
||||
* easy to make a monster peaceful if you could
|
||||
|
||||
@@ -22,6 +22,7 @@ typedef struct amii_mi {
|
||||
char gselector; /* Group selector */
|
||||
char canselect; /* Can user select this entry. */
|
||||
char attr; /* Attribute for the line. */
|
||||
int color; /* Color for the line (from menucolors). */
|
||||
char *str; /* The text of the item. */
|
||||
} amii_menu_item;
|
||||
|
||||
|
||||
@@ -26,8 +26,6 @@ extern WINDOW *activemenu; /* curses window for menu requesting a
|
||||
#define SCROLLBAR_BACK_COLOR CLR_BLACK
|
||||
#define HIGHLIGHT_COLOR CLR_WHITE
|
||||
#define MORECOLOR CLR_ORANGE
|
||||
#define STAT_UP_COLOR CLR_GREEN
|
||||
#define STAT_DOWN_COLOR CLR_RED
|
||||
#define MESSAGE_WIN 1
|
||||
#define STATUS_WIN 2
|
||||
#define MAP_WIN 3
|
||||
|
||||
@@ -32,6 +32,9 @@
|
||||
|
||||
#define OPTIONS_AT_RUNTIME /* build info done at runtime not text file */
|
||||
|
||||
#define EARLY_CONFIGFILE_PASS
|
||||
#define TTY_PERM_INVENT
|
||||
|
||||
/*
|
||||
* -----------------------------------------------------------------
|
||||
* The remaining code shouldn't need modification.
|
||||
|
||||
@@ -11,10 +11,13 @@
|
||||
#endif
|
||||
|
||||
enum wp_ids { wp_tty = 1, wp_X11, wp_Qt, wp_mswin, wp_curses,
|
||||
wp_chainin, wp_chainout, wp_safestartup, wp_shim,
|
||||
wp_chainin, wp_chainout, wp_shim,
|
||||
wp_hup, wp_guistubs, wp_ttystubs,
|
||||
#if defined(AMIGA)
|
||||
wp_amii, wp_amiv,
|
||||
#endif
|
||||
#ifdef OUTDATED_STUFF
|
||||
wp_mac, wp_Gem, wp_Gnome, wp_amii, wp_amiv,
|
||||
wp_mac, wp_Gem, wp_Gnome,
|
||||
#endif
|
||||
wp_trace // XXX do we need this? should chainin/out get an id? TBD
|
||||
};
|
||||
@@ -412,79 +415,4 @@ struct chain_procs {
|
||||
};
|
||||
#endif /* WINCHAIN */
|
||||
|
||||
#ifdef SAFEPROCS
|
||||
/*
|
||||
* window port routines available in sys/share/safeproc.c
|
||||
*/
|
||||
extern struct window_procs *get_safe_procs(int);
|
||||
extern void safe_init_nhwindows(int *, char **);
|
||||
extern void safe_player_selection(void);
|
||||
extern void safe_askname(void);
|
||||
extern void safe_get_nh_event(void);
|
||||
extern void safe_exit_nhwindows(const char *);
|
||||
extern void safe_suspend_nhwindows(const char *);
|
||||
extern void safe_resume_nhwindows(void);
|
||||
extern winid safe_create_nhwindow(int);
|
||||
extern void safe_clear_nhwindow(winid);
|
||||
extern void safe_display_nhwindow(winid, boolean);
|
||||
extern void safe_destroy_nhwindow(winid);
|
||||
extern void safe_curs(winid, int, int);
|
||||
extern void safe_putstr(winid, int, const char *);
|
||||
extern void safe_putmixed(winid, int, const char *);
|
||||
extern void safe_display_file(const char *, boolean);
|
||||
extern void safe_start_menu(winid, unsigned long);
|
||||
extern void safe_add_menu(winid, const glyph_info *, const ANY_P *,
|
||||
char, char, int, int, const char *,
|
||||
unsigned int);
|
||||
extern void safe_end_menu(winid, const char *);
|
||||
extern int safe_select_menu(winid, int, MENU_ITEM_P **);
|
||||
extern char safe_message_menu(char, int, const char *);
|
||||
extern void safe_mark_synch(void);
|
||||
extern void safe_wait_synch(void);
|
||||
#ifdef CLIPPING
|
||||
extern void safe_cliparound(int, int);
|
||||
#endif
|
||||
#ifdef POSITIONBAR
|
||||
extern void safe_update_positionbar(char *);
|
||||
#endif
|
||||
extern void safe_print_glyph(winid, coordxy, coordxy,
|
||||
const glyph_info *, const glyph_info *);
|
||||
extern void safe_raw_print(const char *);
|
||||
extern void safe_raw_print_bold(const char *);
|
||||
extern int safe_nhgetch(void);
|
||||
extern int safe_nh_poskey(coordxy *, coordxy *, int *);
|
||||
extern void safe_nhbell(void);
|
||||
extern int safe_doprev_message(void);
|
||||
extern char safe_yn_function(const char *, const char *, char);
|
||||
extern void safe_getlin(const char *, char *);
|
||||
extern int safe_get_ext_cmd(void);
|
||||
extern void safe_number_pad(int);
|
||||
extern void safe_delay_output(void);
|
||||
#ifdef CHANGE_COLOR
|
||||
extern void safe_change_color(int, long, int);
|
||||
#ifdef MAC
|
||||
extern void safe_change_background(int);
|
||||
extern short safe_set_font_name(winid, char *);
|
||||
#endif
|
||||
extern char *safe_get_color_string(void);
|
||||
#endif
|
||||
extern void safe_outrip(winid, int, time_t);
|
||||
extern void safe_preference_update(const char *);
|
||||
extern char *safe_getmsghistory(boolean);
|
||||
extern void safe_putmsghistory(const char *, boolean);
|
||||
extern void safe_status_init(void);
|
||||
extern void safe_status_finish(void);
|
||||
extern void safe_status_enablefield(int, const char *, const char *,
|
||||
boolean);
|
||||
extern void safe_status_update(int, genericptr_t, int, int, int,
|
||||
unsigned long *);
|
||||
extern boolean safe_can_suspend(void);
|
||||
extern void stdio_raw_print(const char *);
|
||||
extern void stdio_nonl_raw_print(const char *);
|
||||
extern void stdio_raw_print_bold(const char *);
|
||||
extern void stdio_wait_synch(void);
|
||||
extern void safe_update_inventory(int);
|
||||
extern win_request_info *safe_ctrl_nhwindow(winid, int, win_request_info *);
|
||||
extern int stdio_nhgetch(void);
|
||||
#endif /* SAFEPROCS */
|
||||
#endif /* WINPROCS_H */
|
||||
|
||||
@@ -163,11 +163,13 @@ struct u_conduct { /* number of times... */
|
||||
};
|
||||
|
||||
struct u_roleplay {
|
||||
boolean blind; /* permanently blind */
|
||||
boolean nudist; /* has not worn any armor, ever */
|
||||
boolean deaf; /* permanently deaf */
|
||||
boolean pauper; /* no starting inventory */
|
||||
long numbones; /* # of bones files loaded */
|
||||
boolean blind; /* permanently blind */
|
||||
boolean nudist; /* has not worn any armor, ever */
|
||||
boolean deaf; /* permanently deaf */
|
||||
boolean pauper; /* no starting inventory */
|
||||
boolean reroll; /* starting inventory/attr rerolling enabled */
|
||||
long numbones; /* # of bones files loaded */
|
||||
long numrerolls; /* # of rerolls used */
|
||||
};
|
||||
|
||||
/*** Unified structure containing role information ***/
|
||||
@@ -534,6 +536,7 @@ struct _hitmon_data {
|
||||
boolean needpoismsg;
|
||||
boolean poiskilled;
|
||||
boolean already_killed;
|
||||
boolean offmap;
|
||||
boolean destroyed;
|
||||
boolean dryit;
|
||||
boolean doreturn;
|
||||
|
||||
Reference in New Issue
Block a user