From 882e843e4db8b11fc25cac40121efcfc46d787b5 Mon Sep 17 00:00:00 2001 From: jwalz Date: Sat, 5 Jan 2002 21:05:47 +0000 Subject: [PATCH] *** empty log message *** --- include/decl.h | 363 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 363 insertions(+) create mode 100644 include/decl.h diff --git a/include/decl.h b/include/decl.h new file mode 100644 index 000000000..4a42858b4 --- /dev/null +++ b/include/decl.h @@ -0,0 +1,363 @@ +/* SCCS Id: @(#)decl.h 3.3 2001/12/10 */ +/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ +/* NetHack may be freely redistributed. See license for details. */ + +#ifndef DECL_H +#define DECL_H + +#define E extern + +E int NDECL((*occupation)); +E int NDECL((*afternmv)); + +E const char *hname; +E int hackpid; +#if defined(UNIX) || defined(VMS) +E int locknum; +#endif +#ifdef DEF_PAGER +E char *catmore; +#endif /* DEF_PAGER */ + +E char SAVEF[]; +#ifdef MICRO +E char SAVEP[]; +#endif + +E NEARDATA int bases[MAXOCLASSES]; + +E NEARDATA int multi; +E NEARDATA int warnlevel; +E NEARDATA int nroom; +E NEARDATA int nsubroom; +E NEARDATA int occtime; + +#define WARNCOUNT 6 /* number of different warning levels */ +E uchar warnsyms[WARNCOUNT]; + +E int x_maze_max, y_maze_max; +E int otg_temp; + +#ifdef REDO +E NEARDATA int in_doagain; +#endif + +E struct dgn_topology { /* special dungeon levels for speed */ + d_level d_oracle_level; + d_level d_bigroom_level; /* unused */ +#ifdef REINCARNATION + d_level d_rogue_level; +#endif + d_level d_medusa_level; + d_level d_stronghold_level; + d_level d_valley_level; + d_level d_wiz1_level; + d_level d_wiz2_level; + d_level d_wiz3_level; + d_level d_juiblex_level; + d_level d_orcus_level; + d_level d_baalzebub_level; /* unused */ + d_level d_asmodeus_level; /* unused */ + d_level d_portal_level; /* only in goto_level() [do.c] */ + d_level d_sanctum_level; + d_level d_earth_level; + d_level d_water_level; + d_level d_fire_level; + d_level d_air_level; + d_level d_astral_level; + xchar d_tower_dnum; + xchar d_sokoban_dnum; + xchar d_mines_dnum, d_quest_dnum; + d_level d_qstart_level, d_qlocate_level, d_nemesis_level; + d_level d_knox_level; +} dungeon_topology; +/* macros for accesing the dungeon levels by their old names */ +#define oracle_level (dungeon_topology.d_oracle_level) +#define bigroom_level (dungeon_topology.d_bigroom_level) +#ifdef REINCARNATION +#define rogue_level (dungeon_topology.d_rogue_level) +#endif +#define medusa_level (dungeon_topology.d_medusa_level) +#define stronghold_level (dungeon_topology.d_stronghold_level) +#define valley_level (dungeon_topology.d_valley_level) +#define wiz1_level (dungeon_topology.d_wiz1_level) +#define wiz2_level (dungeon_topology.d_wiz2_level) +#define wiz3_level (dungeon_topology.d_wiz3_level) +#define juiblex_level (dungeon_topology.d_juiblex_level) +#define orcus_level (dungeon_topology.d_orcus_level) +#define baalzebub_level (dungeon_topology.d_baalzebub_level) +#define asmodeus_level (dungeon_topology.d_asmodeus_level) +#define portal_level (dungeon_topology.d_portal_level) +#define sanctum_level (dungeon_topology.d_sanctum_level) +#define earth_level (dungeon_topology.d_earth_level) +#define water_level (dungeon_topology.d_water_level) +#define fire_level (dungeon_topology.d_fire_level) +#define air_level (dungeon_topology.d_air_level) +#define astral_level (dungeon_topology.d_astral_level) +#define tower_dnum (dungeon_topology.d_tower_dnum) +#define sokoban_dnum (dungeon_topology.d_sokoban_dnum) +#define mines_dnum (dungeon_topology.d_mines_dnum) +#define quest_dnum (dungeon_topology.d_quest_dnum) +#define qstart_level (dungeon_topology.d_qstart_level) +#define qlocate_level (dungeon_topology.d_qlocate_level) +#define nemesis_level (dungeon_topology.d_nemesis_level) +#define knox_level (dungeon_topology.d_knox_level) + +E NEARDATA stairway dnstair, upstair; /* stairs up and down */ +#define xdnstair (dnstair.sx) +#define ydnstair (dnstair.sy) +#define xupstair (upstair.sx) +#define yupstair (upstair.sy) + +E NEARDATA stairway dnladder, upladder; /* ladders up and down */ +#define xdnladder (dnladder.sx) +#define ydnladder (dnladder.sy) +#define xupladder (upladder.sx) +#define yupladder (upladder.sy) + +E NEARDATA stairway sstairs; + +E NEARDATA dest_area updest, dndest; /* level-change destination areas */ + +E NEARDATA coord inv_pos; +E NEARDATA dungeon dungeons[]; +E NEARDATA s_level *sp_levchn; +#define dunlev_reached(x) (dungeons[(x)->dnum].dunlev_ureached) + +#include "quest.h" +E struct q_score quest_status; + +E NEARDATA char pl_character[PL_CSIZ]; +E NEARDATA char pl_race; /* character's race */ + +E NEARDATA char pl_fruit[PL_FSIZ]; +E NEARDATA int current_fruit; +E NEARDATA struct fruit *ffruit; + +E NEARDATA char tune[6]; + +#define MAXLINFO (MAXDUNGEON * MAXLEVEL) +E struct linfo level_info[MAXLINFO]; + +E NEARDATA struct sinfo { + int gameover; /* self explanatory? */ + int stopprint; /* inhibit further end of game disclosure */ +#if defined(UNIX) || defined(VMS) || defined (__EMX__) || defined(WIN32) + int done_hup; /* SIGHUP or moral equivalent received + * -- no more screen output */ +#endif + int something_worth_saving; /* in case of panic */ + int panicking; /* `panic' is in progress */ +#if defined(VMS) || defined(WIN32) + int exiting; /* an exit handler is executing */ +#endif +} program_state; + +E boolean restoring; + +E const char quitchars[]; +E const char vowels[]; +E const char ynchars[]; +E const char ynqchars[]; +E const char ynaqchars[]; +E const char ynNaqchars[]; +E NEARDATA long yn_number; +E NEARDATA int smeq[]; +E NEARDATA int doorindex; +E NEARDATA char *save_cm; +#define KILLED_BY_AN 0 +#define KILLED_BY 1 +#define NO_KILLER_PREFIX 2 +E NEARDATA int killer_format; +E const char *killer; +E const char *delayed_killer; +E char killer_buf[BUFSZ]; +E const char *configfile; +E NEARDATA char plname[PL_NSIZ]; +E NEARDATA char dogname[]; +E NEARDATA char catname[]; +E NEARDATA char horsename[]; +E char preferred_pet; +E const char *occtxt; /* defined when occupation != NULL */ +E const char *nomovemsg; +E const char nul[]; +E char lock[]; + +E const char sdir[], ndir[]; +E const schar xdir[], ydir[], zdir[]; + +E NEARDATA schar tbx, tby; /* set in mthrowu.c */ + +E NEARDATA struct multishot { int n, i; short o; boolean s; } m_shot; + +E NEARDATA struct dig_info { /* apply.c, hack.c */ + int effort; + d_level level; + coord pos; + boolean down, chew, warned; +} digging; + +E NEARDATA long moves, monstermoves; +E NEARDATA long wailmsg; + +E NEARDATA boolean in_mklev; +E NEARDATA boolean stoned; +E NEARDATA boolean unweapon; +E NEARDATA boolean mrg_to_wielded; +E NEARDATA struct obj *current_wand; + +E NEARDATA boolean in_steed_dismounting; + +E const int shield_static[]; + +#include "spell.h" +E NEARDATA struct spell spl_book[]; /* sized in decl.c */ + +#ifdef TEXTCOLOR +#include "color.h" +E const int zapcolors[]; +#endif + +E const char def_oc_syms[MAXOCLASSES]; /* default class symbols */ +E uchar oc_syms[MAXOCLASSES]; /* current class symbols */ +E const char def_monsyms[MAXMCLASSES]; /* default class symbols */ +E uchar monsyms[MAXMCLASSES]; /* current class symbols */ + +#include "obj.h" +E NEARDATA struct obj *invent, + *uarm, *uarmc, *uarmh, *uarms, *uarmg, *uarmf, +#ifdef TOURIST + *uarmu, /* under-wear, so to speak */ +#endif + *uskin, *uamul, *uleft, *uright, *ublindf, + *uwep, *uswapwep, *uquiver; + +E NEARDATA struct obj *uchain; /* defined only when punished */ +E NEARDATA struct obj *uball; +E NEARDATA struct obj *migrating_objs; +E NEARDATA struct obj *billobjs; +E NEARDATA struct obj zeroobj; /* init'd and defined in decl.c */ + +#include "you.h" +E NEARDATA struct you u; + +#include "onames.h" +#ifndef PM_H /* (pm.h has already been included via youprop.h) */ +#include "pm.h" +#endif + +E NEARDATA struct monst youmonst; /* init'd and defined in decl.c */ +E NEARDATA struct monst *mydogs, *migrating_mons; + +E NEARDATA struct mvitals { + uchar born; + uchar died; + uchar mvflags; +} mvitals[NUMMONS]; + +E NEARDATA struct c_color_names { + const char *const c_black, *const c_amber, *const c_golden, + *const c_light_blue,*const c_red, *const c_green, + *const c_silver, *const c_blue, *const c_purple, + *const c_white; +} c_color_names; +#define Black c_color_names.c_black +#define amber c_color_names.c_amber +#define golden c_color_names.c_golden +#define light_blue c_color_names.c_light_blue +#define red c_color_names.c_red +#define green c_color_names.c_green +#define silver c_color_names.c_silver +#define blue c_color_names.c_blue +#define purple c_color_names.c_purple +#define White c_color_names.c_white + +E struct c_common_strings { + const char *const c_nothing_happens, *const c_thats_enough_tries, + *const c_silly_thing_to, *const c_shudder_for_moment, + *const c_something, *const c_Something, + *const c_You_can_move_again, + *const c_Never_mind, *c_vision_clears; +} c_common_strings; +#define nothing_happens c_common_strings.c_nothing_happens +#define thats_enough_tries c_common_strings.c_thats_enough_tries +#define silly_thing_to c_common_strings.c_silly_thing_to +#define shudder_for_moment c_common_strings.c_shudder_for_moment +#define something c_common_strings.c_something +#define Something c_common_strings.c_Something +#define You_can_move_again c_common_strings.c_You_can_move_again +#define Never_mind c_common_strings.c_Never_mind +#define vision_clears c_common_strings.c_vision_clears + +/* material strings */ +E const char *materialnm[]; + +/* Monster name articles */ +#define ARTICLE_NONE 0 +#define ARTICLE_THE 1 +#define ARTICLE_A 2 +#define ARTICLE_YOUR 3 + +/* Monster name suppress masks */ +#define SUPPRESS_IT 0x01 +#define SUPPRESS_INVISIBLE 0x02 +#define SUPPRESS_HALLUCINATION 0x04 +#define SUPPRESS_SADDLE 0x08 +#define EXACT_NAME 0x0F + +/* Vision */ +E NEARDATA boolean vision_full_recalc; /* TRUE if need vision recalc */ +E NEARDATA char **viz_array; /* could see/in sight row pointers */ + +/* Window system stuff */ +E NEARDATA winid WIN_MESSAGE, WIN_STATUS; +E NEARDATA winid WIN_MAP, WIN_INVEN; +E char toplines[]; +#ifndef TCAP_H +E struct tc_gbl_data { /* also declared in tcap.h */ + char *tc_AS, *tc_AE; /* graphics start and end (tty font swapping) */ + int tc_LI, tc_CO; /* lines and columns */ +} tc_gbl_data; +#define AS tc_gbl_data.tc_AS +#define AE tc_gbl_data.tc_AE +#define LI tc_gbl_data.tc_LI +#define CO tc_gbl_data.tc_CO +#endif + +/* xxxexplain[] is in drawing.c */ +E const char *monexplain[], *invisexplain, *objexplain[], *oclass_names[]; + +/* Some systems want to use full pathnames for some subsets of file names, + * rather than assuming that they're all in the current directory. This + * provides all the subclasses that seem reasonable, and sets up for all + * prefixes being null. Port code can set those that it wants. + */ +#define HACKPREFIX 0 +#define LEVELPREFIX 1 +#define SAVEPREFIX 2 +#define BONESPREFIX 3 +#define DATAPREFIX 4 +#define SCOREPREFIX 5 +#define LOCKPREFIX 6 +#define CONFIGPREFIX 7 +#define PREFIX_COUNT 8 +/* used in files.c; xxconf.h can override if needed */ +# ifndef FQN_MAX_FILENAME +#define FQN_MAX_FILENAME 512 +# endif + +#if defined(NOCWD_ASSUMPTIONS) || defined(VAR_PLAYGROUND) +/* the bare-bones stuff is unconditional above to simplify coding; for + * ports that actually use prefixes, add some more localized things + */ +#define PREFIXES_IN_USE +#endif + +E char *fqn_prefix[PREFIX_COUNT]; +#ifdef PREFIXES_IN_USE +E char *fqn_prefix_names[PREFIX_COUNT]; +#endif + +#undef E + +#endif /* DECL_H */