Reported by ars3niy, the curses interface could behave strangely on the first turn if the 'pauper' option/conduct was specified. There isn't any definitive flag indicating whether or not the game has started. Since 'moves' has traditionally been initialized to 1 rather than to 0, there were several instances of | if (moves <= 1 && invent != NULL) being used to determine the starting state on the assumption that once hero has inventory, the game has begun. Introduction of the 'pauper' option made the test for non-Null invent become unreliable. For paupers, the program would behave as if the game hadn't started yet until the player finally made a time-consuming move. This changes compile-time initialization of 'moves' from 1 to 0, then sets it to 1 when initial inventory would be bestowed (even when 'pauper' inhibits that). That's probably not the best place for it, but testing for 'moves==0' now should produce an identical effect as 'moves<=1 && invent!=NULL' used to accomplish. It would have been much simpler just to give paupers 1 gold piece, or perhaps one rock, in place of usual starting gear so that their initial inventory wouldn't be empty, but the moves+invent way of checking for start-of-play has always bothered me. Should 'pauper' be preventing 'nethack -X' from giving its starting wand of wishing? Conducts and explore mode don't really overlap so maybe it doesn't matter. Fixes #1275
1239 lines
35 KiB
C
1239 lines
35 KiB
C
/* NetHack 3.7 decl.c $NHDT-Date: 1725138480 2024/08/31 21:08:00 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.337 $ */
|
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
|
/*-Copyright (c) Michael Allison, 2009. */
|
|
/* NetHack may be freely redistributed. See license for details. */
|
|
|
|
#include "hack.h"
|
|
|
|
const char * const nhcb_name[NUM_NHCB] = {
|
|
"cmd_before",
|
|
"level_enter",
|
|
"level_leave",
|
|
"end_turn",
|
|
};
|
|
|
|
int nhcb_counts[NUM_NHCB] = DUMMY;
|
|
NEARDATA const struct c_color_names c_color_names = {
|
|
"black", "amber", "golden", "light blue", "red", "green",
|
|
"silver", "blue", "purple", "white", "orange"
|
|
};
|
|
const char *c_obj_colors[] = {
|
|
"black", /* CLR_BLACK */
|
|
"red", /* CLR_RED */
|
|
"green", /* CLR_GREEN */
|
|
"brown", /* CLR_BROWN */
|
|
"blue", /* CLR_BLUE */
|
|
"magenta", /* CLR_MAGENTA */
|
|
"cyan", /* CLR_CYAN */
|
|
"gray", /* CLR_GRAY */
|
|
"transparent", /* no_color */
|
|
"orange", /* CLR_ORANGE */
|
|
"bright green", /* CLR_BRIGHT_GREEN */
|
|
"yellow", /* CLR_YELLOW */
|
|
"bright blue", /* CLR_BRIGHT_BLUE */
|
|
"bright magenta", /* CLR_BRIGHT_MAGENTA */
|
|
"bright cyan", /* CLR_BRIGHT_CYAN */
|
|
"white", /* CLR_WHITE */
|
|
};
|
|
|
|
const struct c_common_strings c_common_strings =
|
|
{ "Nothing happens.",
|
|
"Nothing seems to happen.",
|
|
"That's enough tries!",
|
|
"That is a silly thing to %s.",
|
|
"shudder for a moment.",
|
|
"something",
|
|
"Something",
|
|
"You can move again.",
|
|
"Never mind.",
|
|
"vision quickly clears.",
|
|
{ "the", "your" },
|
|
{ "mon", "you" }
|
|
};
|
|
|
|
static const struct savefile_info default_sfinfo = {
|
|
#ifdef NHSTDC
|
|
0x00000000UL
|
|
#else
|
|
0x00000000L
|
|
#endif
|
|
#if defined(COMPRESS) || defined(ZLIB_COMP)
|
|
| SFI1_EXTERNALCOMP
|
|
#endif
|
|
#if defined(ZEROCOMP)
|
|
| SFI1_ZEROCOMP
|
|
#endif
|
|
#if defined(RLECOMP)
|
|
| SFI1_RLECOMP
|
|
#endif
|
|
,
|
|
#ifdef NHSTDC
|
|
0x00000000UL, 0x00000000UL
|
|
#else
|
|
0x00000000L, 0x00000000L
|
|
#endif
|
|
};
|
|
|
|
const char disclosure_options[] = "iavgco";
|
|
char emptystr[] = {0}; /* non-const */
|
|
|
|
NEARDATA struct flag flags; /* extern declaration is in flag.h, not decl.h */
|
|
|
|
/* Global windowing data, defined here for multi-window-system support */
|
|
#ifdef WIN32
|
|
boolean fqn_prefix_locked[PREFIX_COUNT] = { FALSE, FALSE, FALSE,
|
|
FALSE, FALSE, FALSE,
|
|
FALSE, FALSE, FALSE,
|
|
FALSE };
|
|
#endif
|
|
#ifdef PREFIXES_IN_USE
|
|
const char *fqn_prefix_names[PREFIX_COUNT] = {
|
|
"hackdir", "leveldir", "savedir", "bonesdir", "datadir",
|
|
"scoredir", "lockdir", "sysconfdir", "configdir", "troubledir"
|
|
};
|
|
#endif
|
|
|
|
/* used by coloratt.c, options.c, utf8map.c, windows.c */
|
|
const char hexdd[33] = "00112233445566778899aAbBcCdDeEfF";
|
|
|
|
/* x/y/z deltas for the 10 movement directions (8 compass pts, 2 down/up) */
|
|
const schar xdir[N_DIRS_Z] = { -1, -1, 0, 1, 1, 1, 0, -1, 0, 0 };
|
|
const schar ydir[N_DIRS_Z] = { 0, -1, -1, -1, 0, 1, 1, 1, 0, 0 };
|
|
const schar zdir[N_DIRS_Z] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, -1 };
|
|
/* reordered directions, cardinals first */
|
|
const schar dirs_ord[N_DIRS] =
|
|
{ DIR_W, DIR_N, DIR_E, DIR_S, DIR_NW, DIR_NE, DIR_SE, DIR_SW };
|
|
|
|
NEARDATA boolean has_strong_rngseed = FALSE;
|
|
struct engr *head_engr;
|
|
NEARDATA struct instance_flags iflags;
|
|
NEARDATA struct accessibility_data a11y;
|
|
/* NOTE: the order of these words exactly corresponds to the
|
|
order of oc_material values #define'd in objclass.h. */
|
|
const char *materialnm[] = { "mysterious", "liquid", "wax", "organic",
|
|
"flesh", "paper", "cloth", "leather",
|
|
"wooden", "bone", "dragonhide", "iron",
|
|
"metal", "copper", "silver", "gold",
|
|
"platinum", "mithril", "plastic", "glass",
|
|
"gemstone", "stone" };
|
|
const char quitchars[] = " \r\n\033";
|
|
NEARDATA struct savefile_info sfcap, sfrestinfo, sfsaveinfo;
|
|
const int shield_static[SHIELD_COUNT] = {
|
|
S_ss1, S_ss2, S_ss3, S_ss2, S_ss1, S_ss2, S_ss4, /* 7 per row */
|
|
S_ss1, S_ss2, S_ss3, S_ss2, S_ss1, S_ss2, S_ss4,
|
|
S_ss1, S_ss2, S_ss3, S_ss2, S_ss1, S_ss2, S_ss4,
|
|
};
|
|
NEARDATA struct you u;
|
|
NEARDATA time_t ubirthday;
|
|
NEARDATA struct u_realtime urealtime;
|
|
NEARDATA struct obj *uwep, *uarm, *uswapwep,
|
|
*uquiver, /* quiver */
|
|
*uarmu, /* under-wear, so to speak */
|
|
*uskin, /* dragon armor, if a dragon */
|
|
*uarmc, *uarmh, *uarms, *uarmg,*uarmf, *uamul,
|
|
*uright, *uleft, *ublindf, *uchain, *uball;
|
|
const char vowels[] = "aeiouAEIOU";
|
|
NEARDATA winid WIN_MESSAGE, WIN_STATUS, WIN_MAP, WIN_INVEN;
|
|
const char ynchars[] = "yn";
|
|
const char ynqchars[] = "ynq";
|
|
const char ynaqchars[] = "ynaq";
|
|
const char ynNaqchars[] = "yn#aq";
|
|
const char rightleftchars[] = "rl";
|
|
const char hidespinchars[] = "hsq";
|
|
NEARDATA long yn_number = 0L;
|
|
|
|
#ifdef PANICTRACE
|
|
const char *ARGV0;
|
|
#endif
|
|
|
|
#define IVMAGIC 0xdeadbeef
|
|
|
|
static const struct Role urole_init_data = {
|
|
{ "Undefined", 0 },
|
|
{ { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
|
|
{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 } },
|
|
"L", "N", "C",
|
|
"Xxx", "home", "locate",
|
|
NON_PM, NON_PM, NON_PM, NON_PM, NON_PM, NON_PM, NON_PM,
|
|
0, 0, 0, 0,
|
|
/* Str Int Wis Dex Con Cha */
|
|
{ 7, 7, 7, 7, 7, 7 },
|
|
{ 20, 15, 15, 20, 20, 10 },
|
|
/* Init Lower Higher */
|
|
{ 10, 0, 0, 8, 1, 0 }, /* Hit points */
|
|
{ 2, 0, 0, 2, 0, 3 },
|
|
14, /* Energy */
|
|
0,
|
|
10,
|
|
0,
|
|
0,
|
|
4,
|
|
A_INT,
|
|
0,
|
|
-3
|
|
};
|
|
|
|
static const struct Race urace_init_data = {
|
|
"something",
|
|
"undefined",
|
|
"something",
|
|
"Xxx",
|
|
{ 0, 0 },
|
|
NON_PM,
|
|
NON_PM,
|
|
NON_PM,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
/* Str Int Wis Dex Con Cha */
|
|
{ 3, 3, 3, 3, 3, 3 },
|
|
{ STR18(100), 18, 18, 18, 18, 18 },
|
|
/* Init Lower Higher */
|
|
{ 2, 0, 0, 2, 1, 0 }, /* Hit points */
|
|
{ 1, 0, 2, 0, 2, 0 } /* Energy */
|
|
};
|
|
|
|
struct display_hints disp = { 0 };
|
|
|
|
static const struct instance_globals_a g_init_a = {
|
|
/* artifact.c */
|
|
/* decl.c */
|
|
UNDEFINED_PTR, /* afternmv */
|
|
/* detect.c */
|
|
0, /* already_found_flag */
|
|
/* do.c */
|
|
FALSE, /* at_ladder */
|
|
/* dog.c */
|
|
UNDEFINED_PTR, /* apelist */
|
|
/* end.c */
|
|
{ UNDEFINED_VALUES }, /* amulets */
|
|
/* mon.c */
|
|
UNDEFINED_PTR, /* animal_list */
|
|
UNDEFINED_VALUE, /* animal_list_count */
|
|
#ifdef CHANGE_COLOR
|
|
/* options.c */
|
|
{ 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U,
|
|
0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U }, /* altpalette[CLR_MAX] */
|
|
#endif
|
|
/* pickup.c */
|
|
0, /* A_first_hint */
|
|
0, /* A_second_hint */
|
|
UNDEFINED_VALUE, /* abort_looting */
|
|
/* shk.c */
|
|
FALSE, /* auto_credit */
|
|
/* sounds.c */
|
|
soundlib_nosound, /* enum soundlib_ids active_soundlib */
|
|
|
|
/* trap.c */
|
|
{ 0, 0, FALSE }, /* acid_ctx */
|
|
TRUE, /* havestate*/
|
|
IVMAGIC /* a_magic to validate that structure layout has been preserved */
|
|
};
|
|
|
|
static const struct instance_globals_b g_init_b = {
|
|
/* botl.c */
|
|
{ { { NULL, NULL, 0L, FALSE, FALSE, 0, 0U, { 0 }, { 0 }, NULL, 0, 0, 0
|
|
#ifdef STATUS_HILITES
|
|
, UNDEFINED_PTR, UNDEFINED_PTR
|
|
#endif
|
|
} }
|
|
}, /* blstats */
|
|
FALSE, /* blinit */
|
|
#ifdef STATUS_HILITES
|
|
0L, /* bl_hilite_moves */
|
|
#endif
|
|
/* decl.c */
|
|
{ 0, 0 }, /* bhitpos */
|
|
UNDEFINED_PTR, /* billobjs */
|
|
/* files.c */
|
|
BONESINIT, /* bones */
|
|
/* hack.c */
|
|
0U, /* bldrpush_oid - last boulder pushed */
|
|
0L, /* bldrpushtime - turn message was given about pushing that boulder */
|
|
/* mkmaze.c */
|
|
{ {COLNO, ROWNO, 0, 0}, {COLNO, ROWNO, 0, 0},
|
|
FALSE, FALSE, 0, 0, { 0 } }, /* bughack */
|
|
/* pickup.c */
|
|
FALSE, /* bucx_filter */
|
|
/* zap.c */
|
|
NULL, /* buzzer -- monst that zapped/cast/breathed to initiate buzz() */
|
|
FALSE, /* bot_disabled */
|
|
|
|
TRUE, /* havestate*/
|
|
IVMAGIC /* b_magic to validate that structure layout has been preserved */
|
|
};
|
|
|
|
static const struct instance_globals_c g_init_c = {
|
|
UNDEFINED_VALUES, /* command_queue */
|
|
/* botl.c */
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0 }, /* cond_hilites */
|
|
0, /* condmenu_sortorder */
|
|
/* cmd.c */
|
|
UNDEFINED_VALUES, /* Cmd */
|
|
{ 0, 0 }, /* clicklook_cc */
|
|
/* decl.c */
|
|
UNDEFINED_VALUES, /* chosen_windowtype */
|
|
0, /* cmd_key */
|
|
0L, /* command_count */
|
|
UNDEFINED_PTR, /* current_wand */
|
|
#ifdef DEF_PAGER
|
|
NULL, /* catmore */
|
|
#endif
|
|
/* dog.c */
|
|
DUMMY, /* catname */
|
|
/* end.c */
|
|
NULL, /* crash_email */
|
|
NULL, /* crash_name */
|
|
-1, /* crash_urlmax */
|
|
/* symbols.c */
|
|
0, /* currentgraphics */
|
|
/* files.c */
|
|
NULL, /* cmdline_rcfile */
|
|
NULL, /* config_section_chosen */
|
|
NULL, /* config_section_current */
|
|
FALSE, /* chosen_symset_start */
|
|
FALSE, /* chosen_symset_end */
|
|
/* invent.c */
|
|
WIN_ERR, /* cached_pickinv_win */
|
|
0, /* core_invent_state */
|
|
/* options.c */
|
|
NULL, /* cmdline_windowsys */
|
|
(struct menucoloring *) 0, /* color_colorings */
|
|
/* pickup.c */
|
|
(struct obj *) 0, /* current_container */
|
|
FALSE, /* class_filter */
|
|
/* questpgr.c */
|
|
UNDEFINED_VALUES, /* cvt_buf */
|
|
/* sounds.c */
|
|
soundlib_nosound, /* chosen_soundlib */
|
|
UNDEFINED_PTR, /* coder */
|
|
/* uhitm.c */
|
|
NON_PM, /* corpsenm_digested */
|
|
TRUE, /* havestate*/
|
|
IVMAGIC /* c_magic to validate that structure layout has been preserved */
|
|
};
|
|
|
|
static const struct instance_globals_d g_init_d = {
|
|
/* decl.c */
|
|
0, /* doorindex */
|
|
0L, /* done_money */
|
|
0L, /* domove_attempting */
|
|
0L, /* domove_succeeded */
|
|
FALSE, /* defer_see_monsters */
|
|
/* dig.c */
|
|
UNDEFINED_VALUE, /* did_dig_msg */
|
|
/* do.c */
|
|
NULL, /* dfr_pre_msg */
|
|
NULL, /* dfr_post_msg */
|
|
0, /* did_nothing_flag */
|
|
/* dog.c */
|
|
DUMMY, /* dogname */
|
|
/* end.c */
|
|
0L, /* done_seq */
|
|
/* mon.c */
|
|
FALSE, /* disintegested */
|
|
/* objname.c */
|
|
0, /* distantname */
|
|
/* pickup.c */
|
|
FALSE, /* decor_fumble_override */
|
|
FALSE, /* decor_levitate_override */
|
|
TRUE, /* havestate*/
|
|
IVMAGIC /* d_magic to validate that structure layout has been preserved */
|
|
};
|
|
|
|
static const struct instance_globals_e g_init_e = {
|
|
/* cmd.c */
|
|
WIN_ERR, /* en_win */
|
|
FALSE, /* en_via_menu */
|
|
UNDEFINED_VALUE, /* ext_tlist */
|
|
/* eat.c */
|
|
NULL, /* eatmbuf */
|
|
/* mkmaze.c */
|
|
UNDEFINED_PTR, /* ebubbles */
|
|
/* new */
|
|
0, /* early_raw_messages */
|
|
TRUE, /* havestate*/
|
|
IVMAGIC /* e_magic to validate that structure layout has been preserved */
|
|
};
|
|
|
|
static const struct instance_globals_f g_init_f = {
|
|
/* decl.c */
|
|
UNDEFINED_PTR, /* ftrap */
|
|
{ NULL }, /* fqn_prefix */
|
|
NULL, /* ffruit */
|
|
/* eat.c */
|
|
FALSE, /* force_save_hs */
|
|
/* mhitm.c */
|
|
FALSE, /* far_noise */
|
|
/* rumors.c */
|
|
0L, /* false_rumor_size */
|
|
0UL, /* false_rumor_start*/
|
|
0L, /* false_rumor_end */
|
|
/* shk.c */
|
|
0L, /* followmsg */
|
|
TRUE, /* havestate*/
|
|
IVMAGIC /* f_magic to validate that structure layout has been preserved */
|
|
};
|
|
|
|
static const struct instance_globals_g g_init_g = {
|
|
/* display.c */
|
|
{ { { 0 } } }, /* gbuf */
|
|
UNDEFINED_VALUES, /* gbuf_start */
|
|
UNDEFINED_VALUES, /* gbug_stop */
|
|
|
|
/* do_name.c */
|
|
0, 0, /* getposx, getposy */
|
|
UNDEFINED_PTR, /* gloc_filter_map */
|
|
UNDEFINED_VALUE, /* gloc_filter_floodfill_match_glyph */
|
|
/* dog.c */
|
|
UNDEFINED_VALUE, /* gtyp */
|
|
0, /* gx */
|
|
0, /* gy */
|
|
/* dokick.c */
|
|
NULL, /* gate_str */
|
|
/* end.c */
|
|
{ UNDEFINED_VALUES }, /* gems */
|
|
/* invent.c */
|
|
0L, /* glyph_reset_timestamp */
|
|
/* nhlua.c */
|
|
FALSE, /* gmst_stored */
|
|
0L, /* gmst_moves */
|
|
NULL, /* gmst_invent */
|
|
NULL, NULL, NULL, /* gmst_ubak, gmst_disco, gmst_mvitals */
|
|
/* pline.c */
|
|
UNDEFINED_PTR, /* gamelog */
|
|
/* region.c */
|
|
FALSE, /* gas_cloud_diss_within */
|
|
0, /* gas_cloud_diss_seen */
|
|
/* new */
|
|
/* per-level glyph mapping flags */
|
|
0L, /* glyphmap_perlevel_flags */
|
|
TRUE, /* havestate*/
|
|
IVMAGIC /* g_magic to validate that structure layout has been preserved */
|
|
};
|
|
|
|
static const struct instance_globals_h g_init_h = {
|
|
/* decl.c */
|
|
NULL, /* hname */
|
|
#if defined(MICRO) || defined(WIN32)
|
|
UNDEFINED_VALUES, /* hackdir */
|
|
#endif /* MICRO || WIN32 */
|
|
1L << 3, /* hero_seq: sequence number for hero movement, 'moves*8 + n'
|
|
* where n is usually 1, sometimes 2 when Fast/Very_fast, maybe
|
|
* higher if polymorphed into something that's even faster */
|
|
/* dog.c */
|
|
DUMMY, /* horsename */
|
|
/* mhitu.c */
|
|
0U, /* hitmsg_mid */
|
|
NULL, /* hitmsg_prev */
|
|
/* save.c */
|
|
TRUE, /* havestate*/
|
|
IVMAGIC /* h_magic to validate that structure layout has been preserved */
|
|
};
|
|
|
|
static const struct instance_globals_i g_init_i = {
|
|
/* decl.c */
|
|
0, /* in_doagain */
|
|
FALSE, /* in_mklev */
|
|
FALSE, /* in_steed_dismounting */
|
|
UNDEFINED_PTR, /* invent */
|
|
/* do_wear.c */
|
|
FALSE, /* initial_don */
|
|
/* invent.c */
|
|
NULL, /* invbuf */
|
|
0U, /* invbufsize */
|
|
0, /* in_sync_perminvent */
|
|
/* mon.c */
|
|
NULL, /* itermonarr */
|
|
/* restore.c */
|
|
UNDEFINED_PTR, /* id_map */
|
|
/* sp_lev.c */
|
|
FALSE, /* in_mk_themerooms */
|
|
|
|
TRUE, /* havestate*/
|
|
IVMAGIC /* i_magic to validate that structure layout has been preserved */
|
|
};
|
|
|
|
static const struct instance_globals_j g_init_j = {
|
|
/* apply.c */
|
|
0, /* jumping_is_magic */
|
|
TRUE, /* havestate*/
|
|
IVMAGIC /* j_magic to validate that structure layout has been preserved */
|
|
};
|
|
|
|
static const struct instance_globals_k g_init_k = {
|
|
{ 0, 0 }, /* kickedloc */
|
|
/* decl.c */
|
|
UNDEFINED_PTR, /* kickedobj */
|
|
/* read.c */
|
|
UNDEFINED_VALUE, /* known */
|
|
TRUE, /* havestate*/
|
|
IVMAGIC /* k_magic to validate that structure layout has been preserved */
|
|
};
|
|
|
|
static const struct instance_globals_l g_init_l = {
|
|
/* cmd.c */
|
|
UNDEFINED_VALUE, /* last_command_count */
|
|
/* decl.c */
|
|
#if defined(UNIX) || defined(VMS)
|
|
0, /* locknum */
|
|
#endif
|
|
#ifdef MICRO
|
|
UNDEFINED_VALUES, /* levels */
|
|
#endif /* MICRO */
|
|
/* files.c */
|
|
UNDEFINED_VALUE, /* lockptr */
|
|
LOCKNAMEINIT, /* lock */
|
|
/* invent.c */
|
|
51, /* lastinvr */
|
|
/* light.c */
|
|
UNDEFINED_PTR, /* light_base */
|
|
/* mklev.c */
|
|
{ UNDEFINED_PTR }, /* luathemes[] */
|
|
/* mon.c */
|
|
0U, /* last_hider */
|
|
/* nhlan.c */
|
|
#ifdef MAX_LAN_USERNAME
|
|
UNDEFINED_VALUES, /* lusername */
|
|
MAX_LAN_USERNAME, /* lusername_size */
|
|
#endif /* MAX_LAN_USERNAME */
|
|
/* nhlua.c */
|
|
UNDEFINED_VALUE, /* luacore */
|
|
DUMMY, /* lua_warnbuf[] */
|
|
0, /* loglua */
|
|
0, /* lua_sid */
|
|
/* options.c */
|
|
FALSE, /* loot_reset_justpicked */
|
|
/* save.c */
|
|
(struct obj *) 0, /* looseball */
|
|
(struct obj *) 0, /* loosechain */
|
|
/* sp_lev.c */
|
|
NULL, /* lev_message */
|
|
UNDEFINED_PTR, /* lregions */
|
|
/* trap.c */
|
|
{ UNDEFINED_PTR, 0, 0 }, /* launchplace */
|
|
/* windows.c */
|
|
UNDEFINED_PTR, /* last_winchoice */
|
|
/* new */
|
|
DUMMY, /* lua_ver[LUA_VER_BUFSIZ] */
|
|
DUMMY, /* lua_copyright[LUA_COPYRIGHT_BUFSIZ] */
|
|
TRUE, /* havestate*/
|
|
IVMAGIC /* l_magic to validate that structure layout has been preserved */
|
|
};
|
|
|
|
static const struct instance_globals_m g_init_m = {
|
|
/* apply.c */
|
|
0, /* mkot_trap_warn_count */
|
|
/* botl.c */
|
|
0, /* mrank_sz */
|
|
/* decl.c */
|
|
0, /* multi */
|
|
NULL, /* multi_reason */
|
|
/* multi_reason usually points to a string literal (when not Null)
|
|
but multireasonbuf[] is available for when it needs to be dynamic */
|
|
DUMMY, /* multireasonbuf[] */
|
|
{ 0, 0, STRANGE_OBJECT, FALSE }, /* m_shot */
|
|
FALSE, /* mrg_to_wielded */
|
|
UNDEFINED_PTR, /* menu_colorings */
|
|
UNDEFINED_PTR, /* migrating_objs */
|
|
/* dog.c */
|
|
UNDEFINED_PTR, /* mydogs */
|
|
UNDEFINED_PTR, /* migrating_mons */
|
|
/* dokick.c */
|
|
UNDEFINED_PTR, /* maploc */
|
|
/* mhitu.c */
|
|
UNDEFINED_VALUE, /* mhitu_dieroll */
|
|
/* mklev.c */
|
|
FALSE, /* made_branch */
|
|
/* mkmap.c */
|
|
UNDEFINED_VALUE, /* min_rx */
|
|
UNDEFINED_VALUE, /* max_rx */
|
|
UNDEFINED_VALUE, /* min_ry */
|
|
UNDEFINED_VALUE, /* max_ry */
|
|
/* mkobj.c */
|
|
FALSE, /* mkcorpstat_norevive */
|
|
/* mthrowu.c */
|
|
UNDEFINED_VALUE, /* mesg_given */
|
|
UNDEFINED_PTR, /* mtarget */
|
|
UNDEFINED_PTR, /* marcher */
|
|
/* muse.c */
|
|
FALSE, /* m_using */
|
|
UNDEFINED_VALUES, /* m */
|
|
/* options.c */
|
|
UNDEFINED_VALUES, /* mapped_menu_cmds */
|
|
UNDEFINED_VALUES, /* mapped_menu_op */
|
|
/* region.c */
|
|
0, /* max_regions */
|
|
/* trap.c */
|
|
FALSE, /* mentioned_water */
|
|
TRUE, /* havestate*/
|
|
IVMAGIC /* m_magic to validate that structure layout has been preserved */
|
|
};
|
|
|
|
static const struct instance_globals_n g_init_n = {
|
|
/* botl.c */
|
|
0, /* now_or_before_idx */
|
|
/* decl.c */
|
|
NULL, /* nomovemsg */
|
|
0, /* nsubroom */
|
|
/* dokick.c */
|
|
UNDEFINED_VALUES, /* nowhere */
|
|
/* files.c */
|
|
0, /* nesting */
|
|
0, /* no_sound_notified */
|
|
/* mhitm.c */
|
|
0L, /* noisetime */
|
|
/* mkmap.c */
|
|
UNDEFINED_PTR, /* new_locations */
|
|
UNDEFINED_VALUE, /* n_loc_filled */
|
|
/* options.c */
|
|
0, /* n_menu_mapped */
|
|
/* potion.c */
|
|
FALSE, /* notonhead */
|
|
/* questpgr.c */
|
|
UNDEFINED_VALUES, /* nambuf */
|
|
/* restore.c */
|
|
0, /* n_ids_mapped */
|
|
/* sp_lev.c */
|
|
0, /* num_lregions */
|
|
/* u_init.c */
|
|
STRANGE_OBJECT, /* nocreate */
|
|
STRANGE_OBJECT, /* nocreate2 */
|
|
STRANGE_OBJECT, /* nocreate3 */
|
|
STRANGE_OBJECT, /* nocreate4 */
|
|
TRUE, /* havestate*/
|
|
IVMAGIC /* n_magic to validate that structure layout has been preserved */
|
|
};
|
|
|
|
static const struct instance_globals_o g_init_o = {
|
|
NULL, /* objs_deleted */
|
|
/* dbridge.c */
|
|
{ { 0 } }, /* occupants */
|
|
/* decl.c */
|
|
UNDEFINED_PTR, /* occupation */
|
|
0, /* occtime */
|
|
UNDEFINED_VALUE, /* otg_temp */
|
|
NULL, /* otg_otmp */
|
|
NULL, /* occtxt */
|
|
/* symbols.c */
|
|
DUMMY, /* ov_primary_syms */
|
|
DUMMY, /* ov_rogue_syms */
|
|
/* invent.c */
|
|
UNDEFINED_VALUES, /* only (coord) */
|
|
/* o_init.c */
|
|
DUMMY, /* oclass_prob_totals */
|
|
/* options.c */
|
|
0, /* opt_phase */
|
|
FALSE, /* opt_initial */
|
|
FALSE, /* opt_from_file */
|
|
FALSE, /* opt_need_redraw */
|
|
FALSE, /* opt_need_glyph_reset */
|
|
FALSE, /* opt_need_promptstyle */
|
|
FALSE, /* opt_reset_customcolors */
|
|
FALSE, /* opt_reset_customsymbols */
|
|
FALSE, /* opt_update_basic_palette */
|
|
FALSE, /* opt_symset_changed */
|
|
/* pickup.c */
|
|
0, /* oldcap */
|
|
/* restore.c */
|
|
UNDEFINED_PTR, /* oldfruit */
|
|
0L, /* omoves */
|
|
/* rumors.c */
|
|
0, /* oracle_flag */
|
|
UNDEFINED_PTR, /* oracle_loc */
|
|
/* uhitm.c */
|
|
FALSE, /* override_confirmation */
|
|
/* zap.c */
|
|
FALSE, /* obj_zapped */
|
|
TRUE, /* havestate*/
|
|
IVMAGIC /* o_magic to validate that structure layout has been preserved */
|
|
};
|
|
|
|
static const struct instance_globals_p g_init_p = {
|
|
/* apply.c */
|
|
-1, /* polearm_range_min */
|
|
-1, /* polearm_range_max */
|
|
/* decl.c */
|
|
0, /* plnamelen */
|
|
'\0', /* pl_race */
|
|
UNDEFINED_PTR, /* plinemsg_types */
|
|
/* dog.c */
|
|
0, /* petname_used */
|
|
UNDEFINED_VALUE, /* preferred_pet */
|
|
/* symbols.c */
|
|
DUMMY, /* primary_syms */
|
|
/* invent.c */
|
|
0, /* perm_invent_toggling_direction */
|
|
/* pickup.c */
|
|
FALSE, /* picked_filter */
|
|
0, /* pickup_encumbrance */
|
|
/* pline.c */
|
|
0U, /* pline_flags */
|
|
UNDEFINED_VALUES, /* prevmsg */
|
|
/* potion.c */
|
|
UNDEFINED_VALUE, /* potion_nothing */
|
|
UNDEFINED_VALUE, /* potion_unkn */
|
|
/* pray.c */
|
|
UNDEFINED_VALUE, /* p_aligntyp */
|
|
UNDEFINED_VALUE, /* p_trouble */
|
|
UNDEFINED_VALUE, /* p_type */
|
|
/* weapon.c */
|
|
UNDEFINED_PTR, /* propellor */
|
|
/* zap.c */
|
|
UNDEFINED_VALUE, /* poly_zap */
|
|
TRUE, /* havestate*/
|
|
IVMAGIC /* p_magic to validate that structure layout has been preserved */
|
|
};
|
|
|
|
static const struct instance_globals_q g_init_q = {
|
|
TRUE, /* havestate*/
|
|
IVMAGIC /* q_magic to validate that structure layout has been preserved */
|
|
};
|
|
|
|
static const struct instance_globals_r g_init_r = {
|
|
/* symbols.c */
|
|
DUMMY, /* rogue_syms */
|
|
/* extralev.c */
|
|
{ { UNDEFINED_VALUES } }, /* r */
|
|
/* mkmaze.c */
|
|
FALSE, /* ransacked */
|
|
/* region.c */
|
|
UNDEFINED_PTR, /* regions */
|
|
/* rip.c */
|
|
UNDEFINED_PTR, /* rip */
|
|
/* role.c */
|
|
UNDEFINED_VALUES, /* role_pa */
|
|
UNDEFINED_VALUE, /* role_post_attrib */
|
|
{ { 0 }, 0 }, /* rfilter */
|
|
/* shk.c */
|
|
UNDEFINED_VALUES, /* repo */
|
|
TRUE, /* havestate*/
|
|
IVMAGIC /* r_magic to validate that structure layout has been preserved */
|
|
};
|
|
|
|
static const struct instance_globals_s g_init_s = {
|
|
/* artifact.c */
|
|
0, /* spec_dbon_applies */
|
|
/* decl.c */
|
|
UNDEFINED_PTR, /* stairs */
|
|
DUMMY, /* smeq */
|
|
FALSE, /* stoned */
|
|
UNDEFINED_PTR, /* subrooms */
|
|
/* do.c */
|
|
{ 0, 0 }, /* save_dlevel */
|
|
/* symbols.c */
|
|
{ DUMMY }, /* symset */
|
|
{ { { 0 } }, { { 0 } } }, /* symset_customizations */
|
|
DUMMY, /* showsyms */
|
|
/* files.c */
|
|
0, /* symset_count */
|
|
0, /* symset_which_set */
|
|
DUMMY, /* SAVEF */
|
|
#ifdef MICRO
|
|
DUMMY, /* SAVEP */
|
|
#endif
|
|
/* invent.c */
|
|
0, /* sortloogmode */
|
|
/* mhitm.c */
|
|
FALSE, /* skipdrin */
|
|
/* mon.c */
|
|
FALSE, /* somebody_can_move */
|
|
/* options.c */
|
|
(struct symsetentry *) 0, /* symset_list */
|
|
FALSE, /* save_menucolors */
|
|
(struct menucoloring *) 0, /* save_colorings */
|
|
FALSE, /* simple_options_help */
|
|
/* pickup.c */
|
|
FALSE, /* sellobj_first */
|
|
FALSE, /* shop_filter */
|
|
/* pline.c */
|
|
#ifdef DUMPLOG_CORE
|
|
0U, /* saved_pline_index */
|
|
{ NULL }, /* saved_plines */
|
|
#endif
|
|
/* polyself.c */
|
|
0, /* sex_change_ok */
|
|
/* shk.c */
|
|
'a', /* sell_response */
|
|
SELL_NORMAL, /* sell_how */
|
|
/* spells.c */
|
|
0, /* spl_sortmode */
|
|
UNDEFINED_PTR, /* spl_orderindx */
|
|
/* steal.c */
|
|
0U, /* stealoid */
|
|
0U, /* stealmid */
|
|
/* vision.c */
|
|
0, /* seethru */
|
|
TRUE, /* havestate*/
|
|
IVMAGIC /* s_magic to validate that structure layout has been preserved */
|
|
};
|
|
|
|
static const struct instance_globals_t g_init_t = {
|
|
/* apply.c */
|
|
UNDEFINED_VALUES, /* trapinfo */
|
|
/* decl.c */
|
|
0, /* tbx */
|
|
0, /* tby */
|
|
UNDEFINED_VALUES, /* toplines */
|
|
UNDEFINED_PTR, /* thrownobj */
|
|
DUMMY, /* tc_gbl_data */
|
|
/* hack.c */
|
|
UNDEFINED_VALUES, /* tmp_anything */
|
|
UNDEFINED_PTR, /* travelmap */
|
|
/* invent.c */
|
|
0, /* this_type */
|
|
NULL, /* this_title */
|
|
/* muse.c */
|
|
UNDEFINED_VALUE, /* trapx */
|
|
UNDEFINED_VALUE, /* trapy */
|
|
/* rumors.c */
|
|
0L, /* true_rumor_size */
|
|
0UL, /* true_rumor_start*/
|
|
0L, /* true_rumor_end */
|
|
/* sp_lev.c */
|
|
FALSE, /* themeroom_failed */
|
|
/* timeout.c */
|
|
UNDEFINED_PTR, /* timer_base */
|
|
/* topten.c */
|
|
WIN_ERR, /* toptenwin */
|
|
/* uhitm.c */
|
|
0, /* twohits */
|
|
/**/
|
|
TRUE, /* havestate*/
|
|
IVMAGIC /* t_magic to validate that structure layout has been preserved */
|
|
};
|
|
|
|
static const struct instance_globals_u g_init_u = {
|
|
/* botl.c */
|
|
FALSE, /* update_all */
|
|
/* decl.c */
|
|
FALSE, /* unweapon */
|
|
/* role.c */
|
|
UNDEFINED_ROLE, /* urole */
|
|
UNDEFINED_RACE, /* urace */
|
|
/* save.c */
|
|
{ 0, 0 }, /* uz_save */
|
|
TRUE, /* havestate*/
|
|
IVMAGIC /* u_magic to validate that structure layout has been preserved */
|
|
};
|
|
|
|
static const struct instance_globals_v g_init_v = {
|
|
/* botl.c */
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, /* valset */
|
|
/* end.c */
|
|
{ UNDEFINED_VALUES }, /* valuables */
|
|
/* mhitm.c */
|
|
FALSE, /* vis */
|
|
/* mklev.c */
|
|
UNDEFINED_VALUE, /* vault_x */
|
|
UNDEFINED_VALUE, /* vault_y */
|
|
/* mon.c */
|
|
FALSE, /* vamp_rise_msg */
|
|
/* pickup.c */
|
|
0L, /* val_for_n_or_more */
|
|
UNDEFINED_VALUES, /* valid_menu_classes */
|
|
/* vision.c */
|
|
UNDEFINED_PTR, /* viz_array */
|
|
UNDEFINED_PTR, /* viz_rmin */
|
|
UNDEFINED_PTR, /* viz_rmax */
|
|
FALSE, /* vision_full_recalc */
|
|
UNDEFINED_VALUES, /* voice */
|
|
TRUE, /* havestate*/
|
|
IVMAGIC /* v_magic to validate that structure layout has been preserved */
|
|
};
|
|
|
|
static const struct instance_globals_w g_init_w = {
|
|
/* decl.c */
|
|
0, /* warn_obj_cnt */
|
|
0L, /* wailmsg */
|
|
/* symbols.c */
|
|
DUMMY, /* warnsyms */
|
|
/* files.c */
|
|
UNDEFINED_VALUES, /* wizkit */
|
|
/* hack.c */
|
|
UNDEFINED_VALUE, /* wc */
|
|
/* mkmaze.c */
|
|
UNDEFINED_PTR, /* wportal */
|
|
/* new */
|
|
{ wdmode_traditional, NO_COLOR }, /* wsettings */
|
|
TRUE, /* havestate*/
|
|
IVMAGIC /* w_magic to validate that structure layout has been preserved */
|
|
};
|
|
|
|
static const struct instance_globals_x g_init_x = {
|
|
/* decl.c */
|
|
(COLNO - 1) & ~1, /* x_maze_max */
|
|
/* lock.c */
|
|
UNDEFINED_VALUES, /* xlock */
|
|
/* objnam.c */
|
|
NULL, /* xnamep */
|
|
/* sp_lev.c */
|
|
UNDEFINED_VALUE, /* xstart */
|
|
UNDEFINED_VALUE, /* xsize */
|
|
TRUE, /* havestate*/
|
|
IVMAGIC /* x_magic to validate that structure layout has been preserved */
|
|
};
|
|
|
|
static const struct instance_globals_y g_init_y = {
|
|
/* decl.c */
|
|
(ROWNO - 1) & ~1, /* y_maze_max */
|
|
DUMMY, /* youmonst */
|
|
/* pline.c */
|
|
NULL, /* you_buf */
|
|
0, /* you_buf_siz */
|
|
/* sp_lev.c */
|
|
UNDEFINED_VALUE, /* ystart */
|
|
UNDEFINED_VALUE, /* ysize */
|
|
TRUE, /* havestate*/
|
|
IVMAGIC /* y_magic to validate that structure layout has been preserved */
|
|
};
|
|
|
|
static const struct instance_globals_z g_init_z = {
|
|
/* mon.c */
|
|
FALSE, /* zombify */
|
|
/* muse.c */
|
|
FALSE, /* zap_oseen */
|
|
TRUE, /* havestate*/
|
|
IVMAGIC /* z_magic to validate that structure layout has been preserved */
|
|
};
|
|
|
|
static const struct instance_globals_saved_b init_svb = {
|
|
/* dungeon.c */
|
|
UNDEFINED_PTR, /* branches */
|
|
/* mkmaze.c */
|
|
UNDEFINED_PTR, /* bbubbles */
|
|
DUMMY /* bases */
|
|
};
|
|
|
|
static const struct instance_globals_saved_c init_svc = {
|
|
/* decl.c */
|
|
DUMMY, /* context */
|
|
};
|
|
|
|
static const struct instance_globals_saved_d init_svd = {
|
|
/* dungeon.c */
|
|
{ { {0},{0},{0},{0}, 0, {0}, 0, 0, 0, 0, 0 } }, /* dungeons */
|
|
{ {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0},
|
|
{0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0},
|
|
0, 0, 0, 0, 0,
|
|
{0}, {0}, {0},
|
|
{0}, {0}, {0} }, /* dungeon_topology */
|
|
/* decl.c */
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0 }, /* dndest */
|
|
NULL, /* doors */
|
|
0, /* doors_alloc */
|
|
/* o_init.c */
|
|
DUMMY, /* disco */
|
|
};
|
|
|
|
static const struct instance_globals_saved_e init_sve = {
|
|
/* decl.c */
|
|
NULL /* exclusion_zones */
|
|
};
|
|
|
|
static const struct instance_globals_saved_h init_svh = {
|
|
/* decl.c */
|
|
0 /* hackpid */
|
|
};
|
|
|
|
static const struct instance_globals_saved_i init_svi = {
|
|
/* decl.c */
|
|
{ 0, 0 } /* inv_pos */
|
|
};
|
|
|
|
static const struct instance_globals_saved_k init_svk = {
|
|
/* decl.c */
|
|
DUMMY /* killer */
|
|
};
|
|
|
|
static const struct instance_globals_saved_l init_svl = {
|
|
/* decl.c */
|
|
{ { 0 } }, /* lastseentyp */
|
|
{ { { UNDEFINED_VALUES } }, /* level.locations */
|
|
{ { UNDEFINED_PTR } }, /* level.objects */
|
|
{ { UNDEFINED_PTR } }, /* level.monsters */
|
|
NULL, NULL, NULL, NULL, NULL, {0} }, /* level */
|
|
{ UNDEFINED_VALUES } /* level_info */
|
|
};
|
|
|
|
static const struct instance_globals_saved_m init_svm = {
|
|
/* dungeon.c */
|
|
UNDEFINED_PTR, /* mapseenchn */
|
|
/* decl.c */
|
|
0L, /* moves; misnamed turn counter */
|
|
{ UNDEFINED_VALUES } /* mvitals */
|
|
};
|
|
|
|
static const struct instance_globals_saved_n init_svn = {
|
|
/* dungeon.c */
|
|
0, /* n_dgns */
|
|
/* mkroom.c */
|
|
0, /* nroom */
|
|
/* region.c */
|
|
0 /* n_regions */
|
|
};
|
|
|
|
static const struct instance_globals_saved_o init_svo = {
|
|
/* rumors.c */
|
|
0U /* oracle_cnt */
|
|
};
|
|
|
|
static const struct instance_globals_saved_p init_svp = {
|
|
/* decl.c */
|
|
DUMMY, /* plname */
|
|
DUMMY, /* pl_character */
|
|
DUMMY, /* pl_fruit */
|
|
};
|
|
|
|
static const struct instance_globals_saved_q init_svq = {
|
|
/* quest.c */
|
|
DUMMY /* quest_status */
|
|
};
|
|
|
|
static const struct instance_globals_saved_r init_svr = {
|
|
/* mkroom.c */
|
|
{ DUMMY }, /* rooms */
|
|
};
|
|
|
|
static const struct instance_globals_saved_s init_svs = {
|
|
/* decl.c */
|
|
{ DUMMY }, /* spl_book */
|
|
UNDEFINED_PTR /* sp_levchn */
|
|
};
|
|
|
|
static const struct instance_globals_saved_t init_svt = {
|
|
/* decl.c */
|
|
DUMMY, /* tune */
|
|
/* timeout.c */
|
|
1UL, /* timer_id */
|
|
};
|
|
|
|
static const struct instance_globals_saved_u init_svu = {
|
|
/* decl.c */
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0 }, /* updest */
|
|
};
|
|
|
|
static const struct instance_globals_saved_x init_svx = {
|
|
/* mkmaze.c */
|
|
UNDEFINED_VALUE, /* xmin */
|
|
UNDEFINED_VALUE /* xmax */
|
|
};
|
|
|
|
static const struct instance_globals_saved_y init_svy = {
|
|
/* mkmaze.c */
|
|
UNDEFINED_VALUE, /* ymin */
|
|
UNDEFINED_VALUE /* ymax */
|
|
};
|
|
|
|
static const struct sinfo init_program_state = { 0 };
|
|
|
|
#if 0
|
|
struct instance_globals g;
|
|
#endif /* 0 */
|
|
|
|
struct instance_globals_a ga;
|
|
struct instance_globals_b gb;
|
|
struct instance_globals_c gc;
|
|
struct instance_globals_d gd;
|
|
struct instance_globals_e ge;
|
|
struct instance_globals_f gf;
|
|
struct instance_globals_g gg;
|
|
struct instance_globals_h gh;
|
|
struct instance_globals_i gi;
|
|
struct instance_globals_j gj;
|
|
struct instance_globals_k gk;
|
|
struct instance_globals_l gl;
|
|
struct instance_globals_m gm;
|
|
struct instance_globals_n gn;
|
|
struct instance_globals_o go;
|
|
struct instance_globals_p gp;
|
|
struct instance_globals_q gq;
|
|
struct instance_globals_r gr;
|
|
struct instance_globals_s gs;
|
|
struct instance_globals_t gt;
|
|
struct instance_globals_u gu;
|
|
struct instance_globals_v gv;
|
|
struct instance_globals_w gw;
|
|
struct instance_globals_x gx;
|
|
struct instance_globals_y gy;
|
|
struct instance_globals_z gz;
|
|
struct instance_globals_saved_b svb;
|
|
struct instance_globals_saved_c svc;
|
|
struct instance_globals_saved_d svd;
|
|
struct instance_globals_saved_e sve;
|
|
struct instance_globals_saved_h svh;
|
|
struct instance_globals_saved_i svi;
|
|
struct instance_globals_saved_k svk;
|
|
struct instance_globals_saved_l svl;
|
|
struct instance_globals_saved_m svm;
|
|
struct instance_globals_saved_n svn;
|
|
struct instance_globals_saved_o svo;
|
|
struct instance_globals_saved_p svp;
|
|
struct instance_globals_saved_q svq;
|
|
struct instance_globals_saved_r svr;
|
|
struct instance_globals_saved_s svs;
|
|
struct instance_globals_saved_t svt;
|
|
struct instance_globals_saved_u svu;
|
|
struct instance_globals_saved_x svx;
|
|
struct instance_globals_saved_y svy;
|
|
struct sinfo program_state;
|
|
|
|
const struct const_globals cg = {
|
|
DUMMY, /* zeroobj */
|
|
DUMMY, /* zeromonst */
|
|
DUMMY, /* zeroany */
|
|
DUMMY, /* zeroNhRect */
|
|
};
|
|
|
|
#define ZERO(x) memset(&x, 0, sizeof(x))
|
|
|
|
#define MAGICCHECK(xx) \
|
|
do { \
|
|
if ((xx).magic != IVMAGIC) { \
|
|
raw_printf( \
|
|
"decl_globals_init: %s.magic in unexpected state (%lx).", \
|
|
#xx, (xx).magic); \
|
|
exit(1); \
|
|
} \
|
|
if ((xx).havestate != TRUE) { \
|
|
raw_printf( \
|
|
"decl_globals_init: %s.havestate not True.", #xx); \
|
|
exit(1); \
|
|
} \
|
|
} while(0);
|
|
|
|
void
|
|
decl_globals_init(void)
|
|
{
|
|
#if 0
|
|
g = g_init;
|
|
#endif
|
|
ga = g_init_a;
|
|
gb = g_init_b;
|
|
gc = g_init_c;
|
|
gd = g_init_d;
|
|
ge = g_init_e;
|
|
gf = g_init_f;
|
|
gg = g_init_g;
|
|
gh = g_init_h;
|
|
gi = g_init_i;
|
|
gj = g_init_j;
|
|
gk = g_init_k;
|
|
gl = g_init_l;
|
|
gm = g_init_m;
|
|
gn = g_init_n;
|
|
go = g_init_o;
|
|
gp = g_init_p;
|
|
gq = g_init_q;
|
|
gr = g_init_r;
|
|
gs = g_init_s;
|
|
gt = g_init_t;
|
|
gu = g_init_u;
|
|
gv = g_init_v;
|
|
gw = g_init_w;
|
|
gx = g_init_x;
|
|
gy = g_init_y;
|
|
gz = g_init_z;
|
|
svb = init_svb;
|
|
svc = init_svc;
|
|
svd = init_svd;
|
|
sve = init_sve;
|
|
svh = init_svh;
|
|
svi = init_svi;
|
|
svk = init_svk;
|
|
svl = init_svl;
|
|
svm = init_svm;
|
|
svn = init_svn;
|
|
svo = init_svo;
|
|
svp = init_svp;
|
|
svq = init_svq;
|
|
svr = init_svr;
|
|
svs = init_svs;
|
|
svt = init_svt;
|
|
svu = init_svu;
|
|
svx = init_svx;
|
|
svy = init_svy;
|
|
program_state = init_program_state;
|
|
|
|
gv.valuables[0].list = gg.gems;
|
|
gv.valuables[0].size = SIZE(gg.gems);
|
|
gv.valuables[1].list = ga.amulets;
|
|
gv.valuables[1].size = SIZE(ga.amulets);
|
|
gv.valuables[2].list = NULL;
|
|
gv.valuables[2].size = 0;
|
|
|
|
#if 0
|
|
MAGICCHECK(g_init);
|
|
#endif
|
|
MAGICCHECK(g_init_a);
|
|
MAGICCHECK(g_init_b);
|
|
MAGICCHECK(g_init_c);
|
|
MAGICCHECK(g_init_d);
|
|
MAGICCHECK(g_init_e);
|
|
MAGICCHECK(g_init_f);
|
|
MAGICCHECK(g_init_g);
|
|
MAGICCHECK(g_init_h);
|
|
MAGICCHECK(g_init_i);
|
|
MAGICCHECK(g_init_j);
|
|
MAGICCHECK(g_init_k);
|
|
MAGICCHECK(g_init_l);
|
|
MAGICCHECK(g_init_m);
|
|
MAGICCHECK(g_init_n);
|
|
MAGICCHECK(g_init_o);
|
|
MAGICCHECK(g_init_p);
|
|
MAGICCHECK(g_init_q);
|
|
MAGICCHECK(g_init_r);
|
|
MAGICCHECK(g_init_s);
|
|
MAGICCHECK(g_init_t);
|
|
MAGICCHECK(g_init_u);
|
|
MAGICCHECK(g_init_v);
|
|
MAGICCHECK(g_init_w);
|
|
MAGICCHECK(g_init_x);
|
|
MAGICCHECK(g_init_y);
|
|
MAGICCHECK(g_init_z);
|
|
|
|
sfcap = default_sfinfo;
|
|
sfrestinfo = default_sfinfo;
|
|
sfsaveinfo = default_sfinfo;
|
|
|
|
gs.subrooms = &svr.rooms[MAXNROFROOMS + 1];
|
|
|
|
ZERO(flags);
|
|
ZERO(iflags);
|
|
ZERO(a11y);
|
|
ZERO(disp);
|
|
ZERO(u);
|
|
ZERO(ubirthday);
|
|
ZERO(urealtime);
|
|
|
|
uwep = uarm = uswapwep = uquiver = uarmu = uskin = uarmc = NULL;
|
|
uarmh = uarms = uarmg = uarmf = uamul = uright = uleft = NULL;
|
|
ublindf = uchain = uball = NULL;
|
|
|
|
WIN_MESSAGE = WIN_STATUS = WIN_MAP = WIN_INVEN = WIN_ERR;
|
|
|
|
gu.urole = urole_init_data;
|
|
gu.urace = urace_init_data;
|
|
}
|
|
|
|
/* fields in 'hands_obj' don't matter, just its distinct address */
|
|
struct obj hands_obj = DUMMY;
|
|
|
|
/* gcc 12.2's static analyzer thinks that some fields of svc.context.victual
|
|
are uninitialized when compiling 'bite(eat.c)' but that's impossible;
|
|
it is defined at global scope so guaranteed to be given implicit
|
|
initialization for fields that aren't explicitly initialized (all of
|
|
'context'); having bite() pass &svc.context.victual to this no-op
|
|
eliminates the analyzer's very verbose complaint */
|
|
void
|
|
sa_victual(
|
|
volatile struct victual_info *context_victual UNUSED)
|
|
{
|
|
return;
|
|
}
|
|
|
|
/*decl.c*/
|