From 74edf42f1c46f73bb57cbc7387446c42ec0e0641 Mon Sep 17 00:00:00 2001 From: Bart House Date: Sat, 22 Dec 2018 18:44:22 -0800 Subject: [PATCH] Moved decl.c globals into instance globals. --- include/context.h | 2 +- include/decl.h | 93 +++++++++--------- include/flag.h | 2 +- include/rm.h | 2 +- src/allmain.c | 34 +++---- src/apply.c | 8 +- src/artifact.c | 12 +-- src/bones.c | 20 ++-- src/botl.c | 8 +- src/cmd.c | 34 +++---- src/decl.c | 85 ++++++++-------- src/detect.c | 6 +- src/dig.c | 10 +- src/display.c | 4 +- src/do.c | 14 +-- src/do_name.c | 4 +- src/do_wear.c | 12 +-- src/dog.c | 8 +- src/dokick.c | 12 +-- src/dothrow.c | 30 +++--- src/dungeon.c | 228 +++++++++++++++++++++---------------------- src/eat.c | 36 +++---- src/end.c | 14 +-- src/engrave.c | 18 ++-- src/extralev.c | 2 +- src/files.c | 24 ++--- src/hack.c | 22 ++--- src/invent.c | 4 +- src/mail.c | 8 +- src/makemon.c | 52 +++++----- src/mcastu.c | 4 +- src/mhitu.c | 18 ++-- src/mklev.c | 58 +++++------ src/mkmaze.c | 62 ++++++------ src/mkobj.c | 4 +- src/mkroom.c | 4 +- src/mon.c | 20 ++-- src/mthrowu.c | 46 ++++----- src/muse.c | 22 ++--- src/music.c | 10 +- src/objnam.c | 30 +++--- src/options.c | 50 +++++----- src/pager.c | 2 +- src/pickup.c | 8 +- src/polyself.c | 6 +- src/potion.c | 12 +-- src/pray.c | 8 +- src/priest.c | 8 +- src/quest.c | 2 +- src/questpgr.c | 10 +- src/read.c | 2 +- src/region.c | 4 +- src/restore.c | 56 +++++------ src/rip.c | 4 +- src/role.c | 34 +++---- src/rumors.c | 2 +- src/save.c | 32 +++--- src/shk.c | 34 +++---- src/shknam.c | 2 +- src/sounds.c | 4 +- src/sp_lev.c | 6 +- src/spell.c | 6 +- src/steal.c | 2 +- src/steed.c | 4 +- src/teleport.c | 106 ++++++++++---------- src/timeout.c | 8 +- src/topten.c | 10 +- src/trap.c | 16 +-- src/uhitm.c | 20 ++-- src/vault.c | 4 +- src/vision.c | 2 +- src/weapon.c | 4 +- src/wield.c | 12 +-- src/windows.c | 4 +- src/wizard.c | 6 +- src/worn.c | 14 +-- src/write.c | 2 +- src/zap.c | 6 +- sys/winnt/windmain.c | 12 +-- win/tty/wintty.c | 16 +-- win/win32/mhdlg.c | 2 +- win/win32/mswproc.c | 6 +- win/win32/winhack.c | 8 +- 83 files changed, 818 insertions(+), 824 deletions(-) diff --git a/include/context.h b/include/context.h index c24da8d56..448e0bd01 100644 --- a/include/context.h +++ b/include/context.h @@ -112,7 +112,7 @@ struct context_info { /* 3: FH, 4: ff+, 5: ff-, 6: FF+, 7: FF- */ /* 8: travel */ unsigned startingpet_mid; - int current_fruit; /* fruit->fid corresponding to pl_fruit[] */ + int current_fruit; /* fruit->fid corresponding to g.pl_fruit[] */ int warnlevel; int rndencode; /* randomized escape sequence introducer */ long next_attrib_check; /* next attribute check */ diff --git a/include/decl.h b/include/decl.h index 51cb89a3d..9ca46f3e8 100644 --- a/include/decl.h +++ b/include/decl.h @@ -86,35 +86,19 @@ E struct dgn_topology { /* special dungeon levels for speed */ #define sokoend_level (dungeon_topology.d_sokoend_level) /* clang-format on */ -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) +#define xdnstair (g.dnstair.sx) +#define ydnstair (g.dnstair.sy) +#define xupstair (g.upstair.sx) +#define yupstair (g.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) +#define xdnladder (g.dnladder.sx) +#define ydnladder (g.dnladder.sy) +#define xupladder (g.upladder.sx) +#define yupladder (g.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) +#define dunlev_reached(x) (g.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 struct fruit *ffruit; E NEARDATA char tune[6]; @@ -140,9 +124,6 @@ E NEARDATA struct sinfo { int wizkit_wishing; } program_state; -E boolean restoring; -E boolean ransacked; - E const char quitchars[]; E const char vowels[]; E const char ynchars[]; @@ -153,10 +134,6 @@ E NEARDATA long yn_number; E const char disclosure_options[]; -E NEARDATA int smeq[]; -E NEARDATA int doorindex; -E NEARDATA char *save_cm; - E NEARDATA struct kinfo { struct kinfo *next; /* chain of delayed killers */ int id; /* uprop keys to ID a delayed killer */ @@ -167,36 +144,24 @@ E NEARDATA struct kinfo { char name[BUFSZ]; /* actual killer name */ } killer; -E long done_money; -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 char lock[]; E const schar xdir[], ydir[], zdir[]; -E NEARDATA schar tbx, tby; /* set in mthrowu.c */ - -E NEARDATA struct multishot { +struct multishot { int n, i; short o; boolean s; -} m_shot; +}; 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 boolean defer_see_monsters; - E NEARDATA boolean in_steed_dismounting; E const int shield_static[]; @@ -692,6 +657,38 @@ struct instance_globals { int y_maze_max; int otg_temp; /* used by object_to_glyph() [otg] */ int in_doagain; + stairway dnstair; /* stairs down */ + stairway upstair; /* stairs up */ + stairway dnladder; /* ladder down */ + stairway upladder; /* ladder up */ + int smeq[MAXNROFROOMS + 1]; + int doorindex; + char *save_cm; + long done_money; + const char *nomovemsg; + char plname[PL_NSIZ]; /* player name */ + char pl_character[PL_CSIZ]; + char pl_race; /* character's race */ + char pl_fruit[PL_FSIZ]; + struct fruit *ffruit; + char tune[6]; + const char *occtxt; /* defined when occupation != NULL */ + schar tbx; /* mthrowu: target x */ + schar tby; /* mthrowu: target y */ + s_level * sp_levchn; + /* for xname handling of multiple shot missile volleys: + number of shots, index of current one, validity check, shoot vs throw */ + struct multishot m_shot; + dungeon dungeons[MAXDUNGEON]; /* ini'ed by init_dungeon() */ + stairway sstairs; + dest_area updest; + dest_area dndest; + coord inv_pos; + boolean defer_see_monsters; + boolean in_mklev; + boolean stoned; /* done to monsters hit by 'c' */ + boolean unweapon; + boolean mrg_to_wielded; /* weapon picked is merged with wielded one */ /* dig.c */ @@ -834,6 +831,7 @@ struct instance_globals { struct bubble *ebubbles; struct trap *wportal; int xmin, ymin, xmax, ymax; /* level boundaries */ + boolean ransacked; /* mon.c */ boolean vamp_rise_msg; @@ -910,6 +908,9 @@ struct instance_globals { int p_trouble; int p_type; /* (-1)-3: (-1)=really naughty, 3=really good */ + /* quest.c */ + struct q_score quest_status; + /* questpgr.c */ char cvt_buf[CVT_BUF_SIZE]; struct qtlists qt_list; diff --git a/include/flag.h b/include/flag.h index 812fb6191..ba0d5c781 100644 --- a/include/flag.h +++ b/include/flag.h @@ -238,7 +238,7 @@ struct instance_flags { * a structure of their own elsewhere some day. */ boolean debug_fuzzer; /* fuzz testing */ - boolean defer_plname; /* X11 hack: askname() might not set plname */ + boolean defer_plname; /* X11 hack: askname() might not set g.plname */ boolean herecmd_menu; /* use menu when mouseclick on yourself */ boolean invis_goldsym; /* gold symbol is ' '? */ int failing_untrap; /* move_into_trap() -> spoteffects() -> dotrap() */ diff --git a/include/rm.h b/include/rm.h index 20b8550c9..3e0d8cfca 100644 --- a/include/rm.h +++ b/include/rm.h @@ -534,7 +534,7 @@ struct damage { an existing bones level; if so, most recent victim will be first in list */ struct cemetery { struct cemetery *next; /* next struct is previous dead character... */ - /* "plname" + "-ROLe" + "-RACe" + "-GENder" + "-ALIgnment" + \0 */ + /* "g.plname" + "-ROLe" + "-RACe" + "-GENder" + "-ALIgnment" + \0 */ char who[PL_NSIZ + 4 * (1 + 3) + 1]; /* death reason, same as in score/log file */ char how[100 + 1]; /* [DTHSZ+1] */ diff --git a/src/allmain.c b/src/allmain.c index 284cc2558..f5d83c2e4 100644 --- a/src/allmain.c +++ b/src/allmain.c @@ -62,8 +62,8 @@ boolean resuming; } (void) encumber_msg(); /* in case they auto-picked up something */ - if (defer_see_monsters) { - defer_see_monsters = FALSE; + if (g.defer_see_monsters) { + g.defer_see_monsters = FALSE; see_monsters(); } initrack(); @@ -411,7 +411,7 @@ boolean resuming; domove(); } else { --g.multi; - rhack(save_cm); + rhack(g.save_cm); } } else if (g.multi == 0) { #ifdef MAIL @@ -512,7 +512,7 @@ stop_occupation() { if (g.occupation) { if (!maybe_finished_meal(TRUE)) - You("stop %s.", occtxt); + You("stop %s.", g.occtxt); g.occupation = 0; context.botl = 1; /* in case u.uhs changed */ nomul(0); @@ -664,7 +664,7 @@ boolean new_game; /* false => restoring an old game */ pline(new_game ? "%s %s, welcome to NetHack! You are a%s %s %s." : "%s %s, the%s %s %s, welcome back to NetHack!", - Hello((struct monst *) 0), plname, buf, urace.adj, + Hello((struct monst *) 0), g.plname, buf, urace.adj, (currentgend && urole.name.f) ? urole.name.f : urole.name.m); } @@ -685,31 +685,31 @@ do_positionbar() *p++ = '<'; *p++ = upstair.sx; } - if (sstairs.sx - && (glyph_to_cmap(level.locations[sstairs.sx][sstairs.sy].glyph) + if (g.sstairs.sx + && (glyph_to_cmap(level.locations[g.sstairs.sx][g.sstairs.sy].glyph) == S_upstair - || glyph_to_cmap(level.locations[sstairs.sx][sstairs.sy].glyph) + || glyph_to_cmap(level.locations[g.sstairs.sx][g.sstairs.sy].glyph) == S_upladder)) { *p++ = '<'; - *p++ = sstairs.sx; + *p++ = g.sstairs.sx; } /* down stairway */ - if (dnstair.sx - && (glyph_to_cmap(level.locations[dnstair.sx][dnstair.sy].glyph) + if (g.dnstair.sx + && (glyph_to_cmap(level.locations[g.dnstair.sx][g.dnstair.sy].glyph) == S_dnstair - || glyph_to_cmap(level.locations[dnstair.sx][dnstair.sy].glyph) + || glyph_to_cmap(level.locations[g.dnstair.sx][g.dnstair.sy].glyph) == S_dnladder)) { *p++ = '>'; - *p++ = dnstair.sx; + *p++ = g.dnstair.sx; } - if (sstairs.sx - && (glyph_to_cmap(level.locations[sstairs.sx][sstairs.sy].glyph) + if (g.sstairs.sx + && (glyph_to_cmap(level.locations[g.sstairs.sx][g.sstairs.sy].glyph) == S_dnstair - || glyph_to_cmap(level.locations[sstairs.sx][sstairs.sy].glyph) + || glyph_to_cmap(level.locations[g.sstairs.sx][g.sstairs.sy].glyph) == S_dnladder)) { *p++ = '>'; - *p++ = sstairs.sx; + *p++ = g.sstairs.sx; } /* hero location */ diff --git a/src/apply.c b/src/apply.c index 9beeac239..e864500ff 100644 --- a/src/apply.c +++ b/src/apply.c @@ -843,7 +843,7 @@ struct obj *obj; nomul(-rnd(MAXULEV + 6 - u.ulevel)); g.multi_reason = "gazing into a mirror"; } - nomovemsg = 0; /* default, "you can move again" */ + g.nomovemsg = 0; /* default, "you can move again" */ } } else if (youmonst.data->mlet == S_VAMPIRE) You("don't have a reflection."); @@ -919,7 +919,7 @@ struct obj *obj; return 1; if (vis) pline("%s is turned to stone!", Monnam(mtmp)); - stoned = TRUE; + g.stoned = TRUE; killed(mtmp); } else if (monable && mtmp->data == &mons[PM_FLOATING_EYE]) { int tmp = d((int) mtmp->m_lev, (int) mtmp->data->mattk[0].damd); @@ -1028,7 +1028,7 @@ struct obj **optr; mon_adjust_speed(mtmp, 2, (struct obj *) 0); break; case 2: /* no explanation; it just happens... */ - nomovemsg = ""; + g.nomovemsg = ""; g.multi_reason = NULL; nomul(-rnd(2)); break; @@ -1787,7 +1787,7 @@ int magic; /* 0=Physical, otherwise skill level */ sokoban_guilt(); nomul(-1); g.multi_reason = "jumping around"; - nomovemsg = ""; + g.nomovemsg = ""; morehungry(rnd(25)); return 1; } diff --git a/src/artifact.c b/src/artifact.c index a66fd8dc9..c31de3041 100644 --- a/src/artifact.c +++ b/src/artifact.c @@ -1055,7 +1055,7 @@ char *hittee; /* target's name: "you" or mon_nam(mdef) */ } else { nomul(-3); g.multi_reason = "being scared stiff"; - nomovemsg = ""; + g.nomovemsg = ""; if (magr && magr == u.ustuck && sticks(youmonst.data)) { u.ustuck = (struct monst *) 0; You("release %s!", mon_nam(magr)); @@ -1515,11 +1515,11 @@ struct obj *obj; start_menu(tmpwin); /* use index+1 (cant use 0) as identifier */ for (i = num_ok_dungeons = 0; i < g.n_dgns; i++) { - if (!dungeons[i].dunlev_ureached) + if (!g.dungeons[i].dunlev_ureached) continue; any.a_int = i + 1; add_menu(tmpwin, NO_GLYPH, &any, 0, 0, ATR_NONE, - dungeons[i].dname, MENU_UNSELECTED); + g.dungeons[i].dname, MENU_UNSELECTED); num_ok_dungeons++; last_ok_dungeon = i; } @@ -1547,10 +1547,10 @@ struct obj *obj; * The closest level is either the entry or dunlev_ureached. */ newlev.dnum = i; - if (dungeons[i].depth_start >= depth(&u.uz)) - newlev.dlevel = dungeons[i].entry_lev; + if (g.dungeons[i].depth_start >= depth(&u.uz)) + newlev.dlevel = g.dungeons[i].entry_lev; else - newlev.dlevel = dungeons[i].dunlev_ureached; + newlev.dlevel = g.dungeons[i].dunlev_ureached; if (u.uhave.amulet || In_endgame(&u.uz) || In_endgame(&newlev) || newlev.dnum == u.uz.dnum || !next_to_u()) { diff --git a/src/bones.c b/src/bones.c index 02e9f5650..1a3b0cea7 100644 --- a/src/bones.c +++ b/src/bones.c @@ -26,7 +26,7 @@ d_level *lev; assign_level(lev, &g.save_dlevel); return (boolean) (((sptr = Is_special(lev)) != 0 && !sptr->boneid) - || !dungeons[lev->dnum].boneid + || !g.dungeons[lev->dnum].boneid /* no bones on the last or multiway branch levels in any dungeon (level 1 isn't multiway) */ || Is_botlevel(lev) @@ -384,7 +384,7 @@ make_bones: /* mark all fruits as nonexistent; when we come to them we'll mark * them as existing (using goodfruit()) */ - for (f = ffruit; f; f = f->nextf) + for (f = g.ffruit; f; f = f->nextf) f->fid = -f->fid; /* check iron balls separately--maybe they're not carrying it */ @@ -396,7 +396,7 @@ make_bones: struct obj *otmp; /* embed your possessions in your statue */ - otmp = mk_named_object(STATUE, &mons[u.umonnum], u.ux, u.uy, plname); + otmp = mk_named_object(STATUE, &mons[u.umonnum], u.ux, u.uy, g.plname); drop_upon_death((struct monst *) 0, otmp, u.ux, u.uy); if (!otmp) @@ -408,19 +408,19 @@ make_bones: /* trick makemon() into allowing monster creation * on your location */ - in_mklev = TRUE; + g.in_mklev = TRUE; mtmp = makemon(&mons[PM_GHOST], u.ux, u.uy, MM_NONAME); - in_mklev = FALSE; + g.in_mklev = FALSE; if (!mtmp) return; - mtmp = christen_monst(mtmp, plname); + mtmp = christen_monst(mtmp, g.plname); if (corpse) (void) obj_attach_mid(corpse, mtmp->m_id); } else { /* give your possessions to the monster you become */ - in_mklev = TRUE; /* use as-is */ + g.in_mklev = TRUE; /* use as-is */ mtmp = makemon(&mons[u.ugrave_arise], u.ux, u.uy, NO_MINVENT); - in_mklev = FALSE; + g.in_mklev = FALSE; if (!mtmp) { drop_upon_death((struct monst *) 0, (struct obj *) 0, u.ux, u.uy); u.ugrave_arise = NON_PM; /* in case caller cares */ @@ -430,7 +430,7 @@ make_bones: carries one; don't bother forcing it to become worn */ if (mtmp->data->mlet == S_MUMMY && !carrying(MUMMY_WRAPPING)) (void) mongets(mtmp, MUMMY_WRAPPING); - mtmp = christen_monst(mtmp, plname); + mtmp = christen_monst(mtmp, g.plname); newsym(u.ux, u.uy); /* ["Your body rises from the dead as an ..." used to be given here, but it has been moved to done() so that @@ -479,7 +479,7 @@ make_bones: /* format name+role,&c, death reason, and date+time; gender and alignment reflect final values rather than what the character started out as, same as topten and logfile entries */ - Sprintf(newbones->who, "%s-%.3s-%.3s-%.3s-%.3s", plname, urole.filecode, + Sprintf(newbones->who, "%s-%.3s-%.3s-%.3s-%.3s", g.plname, urole.filecode, urace.filecode, genders[flags.female].filecode, aligns[1 - u.ualign.type].filecode); formatkiller(newbones->how, sizeof newbones->how, how, TRUE); diff --git a/src/botl.c b/src/botl.c index ff9c21441..7369aa011 100644 --- a/src/botl.c +++ b/src/botl.c @@ -44,7 +44,7 @@ do_statusline1() register char *nb; register int i, j; - Strcpy(newbot1, plname); + Strcpy(newbot1, g.plname); if ('a' <= newbot1[0] && newbot1[0] <= 'z') newbot1[0] += 'A' - 'a'; newbot1[10] = 0; @@ -379,7 +379,7 @@ char *buf; /* TODO: Add in dungeon name */ if (Is_knox(&u.uz)) - Sprintf(buf, "%s ", dungeons[u.uz.dnum].dname); + Sprintf(buf, "%s ", g.dungeons[u.uz.dnum].dname); else if (In_quest(&u.uz)) Sprintf(buf, "Home %d ", dunlev(&u.uz)); else if (In_endgame(&u.uz)) @@ -515,7 +515,7 @@ bot_via_windowport() /* * Player name and title. */ - Strcpy(nb = buf, plname); + Strcpy(nb = buf, g.plname); nb[0] = highc(nb[0]); nb[10] = '\0'; Sprintf(nb = eos(nb), " the "); @@ -1542,7 +1542,7 @@ int *colorptr; txtstr = g.blstats[idx][fldidx].val; if (fldidx == BL_TITLE) /* " the ", skip past " the " */ - txtstr += (strlen(plname) + sizeof " the " - sizeof ""); + txtstr += (strlen(g.plname) + sizeof " the " - sizeof ""); if (hl->rel == TXT_VALUE && hl->textmatch[0]) { if (fuzzymatch(hl->textmatch, txtstr, "\" -_", TRUE)) { merge_bestcolor(&bestcolor, hl->coloridx); diff --git a/src/cmd.c b/src/cmd.c index 728157d7a..b2fa6fcf1 100644 --- a/src/cmd.c +++ b/src/cmd.c @@ -258,7 +258,7 @@ int xtime; timed_occ_fn = fn; } else g.occupation = fn; - occtxt = txt; + g.occtxt = txt; g.occtime = 0; return; } @@ -1190,7 +1190,7 @@ wiz_map_levltyp(VOID_ARGS) Strcat(dsc, " endgame"); else { /* somebody's added a dungeon branch we're not expecting */ - const char *brname = dungeons[u.uz.dnum].dname; + const char *brname = g.dungeons[u.uz.dnum].dname; if (!brname || !*brname) brname = "unknown"; @@ -1700,7 +1700,7 @@ int final; /* ENL_GAMEINPROGRESS:0, ENL_GAMEOVERALIVE, ENL_GAMEOVERDEAD */ if (g.en_via_menu) start_menu(g.en_win); - Strcpy(tmpbuf, plname); + Strcpy(tmpbuf, g.plname); *tmpbuf = highc(*tmpbuf); /* same adjustment as bottom line */ /* as in background_enlightenment, when poly'd we need to use the saved gender in u.mfemale rather than the current you-as-monster gender */ @@ -1880,13 +1880,13 @@ int final; !strncmp(tmpbuf, "Plane", 5) ? "Elemental " : "", tmpbuf); } else if (Is_knox(&u.uz)) { /* this gives away the fact that the knox branch is only 1 level */ - Sprintf(buf, "on the %s level", dungeons[u.uz.dnum].dname); + Sprintf(buf, "on the %s level", g.dungeons[u.uz.dnum].dname); /* TODO? maybe phrase it differently when actually inside the fort, if we're able to determine that (not trivial) */ } else { char dgnbuf[QBUFSZ]; - Strcpy(dgnbuf, dungeons[u.uz.dnum].dname); + Strcpy(dgnbuf, g.dungeons[u.uz.dnum].dname); if (!strncmpi(dgnbuf, "The ", 4)) *dgnbuf = lowc(*dgnbuf); Sprintf(tmpbuf, "level %d", @@ -2837,14 +2837,14 @@ int final; struct fruit *f; reorder_fruit(TRUE); /* sort by fruit index, from low to high; - * this modifies the ffruit chain, so could + * this modifies the g.ffruit chain, so could * possibly mask or even introduce a problem, * but it does useful sanity checking */ - for (f = ffruit; f; f = f->nextf) { + for (f = g.ffruit; f; f = f->nextf) { Sprintf(buf, "Fruit #%d ", f->fid); enl_msg(buf, "is ", "was ", f->fname, ""); } - enl_msg("The current fruit ", "is ", "was ", pl_fruit, ""); + enl_msg("The current fruit ", "is ", "was ", g.pl_fruit, ""); Sprintf(buf, "%d", flags.made_fruit); enl_msg("The made fruit flag ", "is ", "was ", buf, ""); } @@ -2925,7 +2925,7 @@ minimal_enlightenment() "Starting", FALSE); /* Starting name, race, role, gender */ - Sprintf(buf, fmtstr, "name", plname); + Sprintf(buf, fmtstr, "name", g.plname); add_menu(tmpwin, NO_GLYPH, &any, 0, 0, ATR_NONE, buf, FALSE); Sprintf(buf, fmtstr, "race", urace.noun); add_menu(tmpwin, NO_GLYPH, &any, 0, 0, ATR_NONE, buf, FALSE); @@ -5247,7 +5247,7 @@ boolean doit; "Sit on the throne"); if ((u.ux == xupstair && u.uy == yupstair) - || (u.ux == sstairs.sx && u.uy == sstairs.sy && sstairs.up) + || (u.ux == g.sstairs.sx && u.uy == g.sstairs.sy && g.sstairs.up) || (u.ux == xupladder && u.uy == yupladder)) { Sprintf(buf, "Go up the %s", (u.ux == xupladder && u.uy == yupladder) @@ -5255,7 +5255,7 @@ boolean doit; add_herecmd_menuitem(win, doup, buf); } if ((u.ux == xdnstair && u.uy == ydnstair) - || (u.ux == sstairs.sx && u.uy == sstairs.sy && !sstairs.up) + || (u.ux == g.sstairs.sx && u.uy == g.sstairs.sy && !g.sstairs.up) || (u.ux == xdnladder && u.uy == ydnladder)) { Sprintf(buf, "Go down the %s", (u.ux == xupladder && u.uy == yupladder) @@ -5365,14 +5365,14 @@ int x, y, mod; cmd[0] = cmd_from_func(dosit); return cmd; } else if ((u.ux == xupstair && u.uy == yupstair) - || (u.ux == sstairs.sx && u.uy == sstairs.sy - && sstairs.up) + || (u.ux == g.sstairs.sx && u.uy == g.sstairs.sy + && g.sstairs.up) || (u.ux == xupladder && u.uy == yupladder)) { cmd[0] = cmd_from_func(doup); return cmd; } else if ((u.ux == xdnstair && u.uy == ydnstair) - || (u.ux == sstairs.sx && u.uy == sstairs.sy - && !sstairs.up) + || (u.ux == g.sstairs.sx && u.uy == g.sstairs.sy + && !g.sstairs.up) || (u.ux == xdnladder && u.uy == ydnladder)) { cmd[0] = cmd_from_func(dodown); return cmd; @@ -5564,9 +5564,9 @@ parse() if (g.multi) { g.multi--; - save_cm = in_line; + g.save_cm = in_line; } else { - save_cm = (char *) 0; + g.save_cm = (char *) 0; } /* in 3.4.3 this was in rhack(), where it was too late to handle M-5 */ if (g.Cmd.pcHack_compat) { diff --git a/src/decl.c b/src/decl.c index e8ba714a3..d8e84e28c 100644 --- a/src/decl.c +++ b/src/decl.c @@ -19,26 +19,8 @@ char *catmore = 0; /* default pager */ */ struct dgn_topology dungeon_topology = { DUMMY }; -struct q_score quest_status = DUMMY; - -NEARDATA int smeq[MAXNROFROOMS + 1] = DUMMY; -NEARDATA int doorindex = 0; -NEARDATA char *save_cm = 0; - NEARDATA struct kinfo killer = DUMMY; -NEARDATA long done_money = 0; -const char *nomovemsg = 0; -NEARDATA char plname[PL_NSIZ] = DUMMY; /* player name */ -NEARDATA char pl_character[PL_CSIZ] = DUMMY; -NEARDATA char pl_race = '\0'; -NEARDATA char pl_fruit[PL_FSIZ] = DUMMY; -NEARDATA struct fruit *ffruit = (struct fruit *) 0; - -NEARDATA char tune[6] = DUMMY; -NEARDATA boolean ransacked = 0; - -const char *occtxt = DUMMY; const char quitchars[] = " \r\n\033"; const char vowels[] = "aeiouAEIOU"; const char ynchars[] = "yn"; @@ -73,30 +55,6 @@ const schar xdir[10] = { -1, -1, 0, 1, 1, 1, 0, -1, 0, 0 }; const schar ydir[10] = { 0, -1, -1, -1, 0, 1, 1, 1, 0, 0 }; const schar zdir[10] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, -1 }; -NEARDATA schar tbx = 0, tby = 0; /* mthrowu: target */ - -/* for xname handling of multiple shot missile volleys: - number of shots, index of current one, validity check, shoot vs throw */ -NEARDATA struct multishot m_shot = { 0, 0, STRANGE_OBJECT, FALSE }; - -NEARDATA dungeon dungeons[MAXDUNGEON]; /* ini'ed by init_dungeon() */ -NEARDATA s_level *sp_levchn; -NEARDATA stairway upstair = { 0, 0, { 0, 0 }, 0 }, - dnstair = { 0, 0, { 0, 0 }, 0 }; -NEARDATA stairway upladder = { 0, 0, { 0, 0 }, 0 }, - dnladder = { 0, 0, { 0, 0 }, 0 }; -NEARDATA stairway sstairs = { 0, 0, { 0, 0 }, 0 }; -NEARDATA dest_area updest = { 0, 0, 0, 0, 0, 0, 0, 0 }; -NEARDATA dest_area dndest = { 0, 0, 0, 0, 0, 0, 0, 0 }; -NEARDATA coord inv_pos = { 0, 0 }; - -NEARDATA boolean defer_see_monsters = FALSE; -NEARDATA boolean in_mklev = FALSE; -NEARDATA boolean stoned = FALSE; /* done to monsters hit by 'c' */ -NEARDATA boolean unweapon = FALSE; -NEARDATA boolean mrg_to_wielded = FALSE; -/* weapon picked is merged with wielded one */ - NEARDATA boolean in_steed_dismounting = FALSE; NEARDATA coord bhitpos = DUMMY; @@ -339,7 +297,7 @@ const struct instance_globals g_init = { UNDEFINED_VALUE, /* last_multi */ /* dbridge.c */ - UNDEFINED_VALUES, + UNDEFINED_VALUES, /* occupants */ /* decl.c */ UNDEFINED_PTR, /* occupation */ @@ -359,14 +317,45 @@ const struct instance_globals g_init = { (ROWNO - 1) & ~1, /* y_maze_max */ UNDEFINED_VALUE, /* otg_temp */ 0, /* in_doagain */ + DUMMY, /* dnstair */ + DUMMY, /* upstair */ + DUMMY, /* dnladder */ + DUMMY, /* upladder */ + DUMMY, /* smeq */ + 0, /* doorindex */ + NULL, /* save_cm */ + 0, /* done_money */ + NULL, /* nomovemsg */ + DUMMY, /* plname */ + DUMMY, /* pl_character */ + '\0', /* pl_race */ + DUMMY, /* pl_fruit */ + NULL, /* ffruit */ + DUMMY, /* tune */ + NULL, /* occtxt */ + 0, /* tbx */ + 0, /* tby */ + UNDEFINED_PTR, /* sp_levchn */ + { 0, 0, STRANGE_OBJECT, FALSE }, /* m_shot */ + UNDEFINED_VALUES, /* dungeons */ + { 0, 0, { 0, 0 }, 0 }, /* sstairs */ + { 0, 0, 0, 0, 0, 0, 0, 0 }, /* updest */ + { 0, 0, 0, 0, 0, 0, 0, 0 }, /* dndest */ + { 0, 0} , /* inv_pos */ + FALSE, /* defer_see_monsters */ + FALSE, /* in_mklev */ + FALSE, /* stoned */ + FALSE, /* unweapon */ + FALSE, /* mrg_to_wielded */ + /* dig.c */ UNDEFINED_VALUE, /* did_dig_msg */ /* display.c */ - UNDEFINED_VALUES, - UNDEFINED_VALUES, - UNDEFINED_VALUES, + UNDEFINED_VALUES, /* gbuf */ + UNDEFINED_VALUES, /* gbuf_start */ + UNDEFINED_VALUES, /* gbug_stop */ /* do.c */ FALSE, /* at_ladder */ @@ -486,6 +475,7 @@ const struct instance_globals g_init = { UNDEFINED_VALUE, /* ymin */ UNDEFINED_VALUE, /* xmax */ UNDEFINED_VALUE, /* ymax */ + 0, /* ransacked */ /* mon.c */ UNDEFINED_VALUE, /* vamp_rise_msg */ @@ -542,6 +532,9 @@ const struct instance_globals g_init = { UNDEFINED_VALUE, /* p_trouble */ UNDEFINED_VALUE, /* p_type */ + /* quest.c */ + DUMMY, /* quest_status */ + /* questpgr.c */ UNDEFINED_VALUES, /* cvt_buf */ UNDEFINED_VALUES, /* qt_list */ diff --git a/src/detect.c b/src/detect.c index 3a1315157..b4826a9bd 100644 --- a/src/detect.c +++ b/src/detect.c @@ -971,7 +971,7 @@ struct obj *sobj; /* null if crystal ball, *scroll if gold detection scroll */ if (detect_obj_traps(invent, FALSE, 0) != OTRAP_NONE) found = TRUE; /* door traps */ - for (door = 0; door < doorindex; door++) { + for (door = 0; door < g.doorindex; door++) { cc = doors[door]; if (levl[cc.x][cc.y].doormask & D_TRAPPED) { if (cc.x != u.ux || cc.y != u.uy) @@ -1009,7 +1009,7 @@ outtrapmap: for (ttmp = ftrap; ttmp; ttmp = ttmp->ntrap) sense_trap(ttmp, 0, 0, cursed_src); - for (door = 0; door < doorindex; door++) { + for (door = 0; door < g.doorindex; door++) { cc = doors[door]; if (levl[cc.x][cc.y].doormask & D_TRAPPED) sense_trap((struct trap *) 0, cc.x, cc.y, cursed_src); @@ -1184,7 +1184,7 @@ struct obj **optr; You("peer into %s...", the(xname(obj))); nomul(-rnd(10)); g.multi_reason = "gazing into a crystal ball"; - nomovemsg = ""; + g.nomovemsg = ""; if (obj->spe <= 0) { pline_The("vision is unclear."); } else { diff --git a/src/dig.c b/src/dig.c index 1519a91c3..dcdf6cf42 100644 --- a/src/dig.c +++ b/src/dig.c @@ -1064,7 +1064,7 @@ struct obj *obj; /* (maybe `move_into_trap()' would be better) */ nomul(-d(2, 2)); g.multi_reason = "stuck in a spider web"; - nomovemsg = "You pull free."; + g.nomovemsg = "You pull free."; } else if (lev->typ == IRONBARS) { pline("Clang!"); wake_nearby(); @@ -1645,13 +1645,13 @@ char *msg; else if (IS_ALTAR(ltyp)) supporting = "altar"; else if ((cc->x == xupstair && cc->y == yupstair) - || (cc->x == sstairs.sx && cc->y == sstairs.sy - && sstairs.up)) + || (cc->x == g.sstairs.sx && cc->y == g.sstairs.sy + && g.sstairs.up)) /* "staircase up" */ supporting = "stairs"; else if ((cc->x == xdnstair && cc->y == ydnstair) - || (cc->x == sstairs.sx && cc->y == sstairs.sy - && !sstairs.up)) + || (cc->x == g.sstairs.sx && cc->y == g.sstairs.sy + && !g.sstairs.up)) /* "staircase down" */ supporting = "stairs"; else if (ltyp == DRAWBRIDGE_DOWN /* "lowered drawbridge" */ diff --git a/src/display.c b/src/display.c index 6569daa09..6d25f00fc 100644 --- a/src/display.c +++ b/src/display.c @@ -716,7 +716,7 @@ register int x, y; register int see_it; register xchar worm_tail; - if (in_mklev) + if (g.in_mklev) return; #ifdef HANGUPHANDLING if (program_state.done_hup) @@ -1232,7 +1232,7 @@ see_monsters() register struct monst *mon; int new_warn_obj_cnt = 0; - if (defer_see_monsters) + if (g.defer_see_monsters) return; for (mon = fmon; mon; mon = mon->nmon) { diff --git a/src/do.c b/src/do.c index 73d9cf16e..7469e05f2 100644 --- a/src/do.c +++ b/src/do.c @@ -898,8 +898,8 @@ dodown() { struct trap *trap = 0; boolean stairs_down = ((u.ux == xdnstair && u.uy == ydnstair) - || (u.ux == sstairs.sx && u.uy == sstairs.sy - && !sstairs.up)), + || (u.ux == g.sstairs.sx && u.uy == g.sstairs.sy + && !g.sstairs.up)), ladder_down = (u.ux == xdnladder && u.uy == ydnladder); if (u_rooted()) @@ -1044,8 +1044,8 @@ doup() if ((u.ux != xupstair || u.uy != yupstair) && (!xupladder || u.ux != xupladder || u.uy != yupladder) - && (!sstairs.sx || u.ux != sstairs.sx || u.uy != sstairs.sy - || !sstairs.up)) { + && (!g.sstairs.sx || u.ux != g.sstairs.sx || u.uy != g.sstairs.sy + || !g.sstairs.up)) { You_cant("go up here."); return 0; } @@ -1324,8 +1324,8 @@ boolean at_stairs, falling, portal; /* set default level change destination areas */ /* the special level code may override these */ - (void) memset((genericptr_t) &updest, 0, sizeof updest); - (void) memset((genericptr_t) &dndest, 0, sizeof dndest); + (void) memset((genericptr_t) &g.updest, 0, sizeof g.updest); + (void) memset((genericptr_t) &g.dndest, 0, sizeof g.dndest); if (!(level_info[new_ledger].flags & LFILE_EXISTS)) { /* entering this level for first time; make it now */ @@ -1569,7 +1569,7 @@ boolean at_stairs, falling, portal; /* main dungeon message from your quest leader */ if (!In_quest(&u.uz0) && at_dgn_entrance("The Quest") && !(u.uevent.qcompleted || u.uevent.qexpelled - || quest_status.leader_is_dead)) { + || g.quest_status.leader_is_dead)) { if (!u.uevent.qcalled) { u.uevent.qcalled = 1; com_pager(2); /* main "leader needs help" message */ diff --git a/src/do_name.c b/src/do_name.c index be5c55137..35fee96fa 100644 --- a/src/do_name.c +++ b/src/do_name.c @@ -1135,7 +1135,7 @@ do_mname() mtmp = u.usteed; } else { pline("This %s creature is called %s and cannot be renamed.", - beautiful(), plname); + beautiful(), g.plname); return; } } else @@ -1572,7 +1572,7 @@ static const char *const ghostnames[] = { const char * rndghostname() { - return rn2(7) ? ghostnames[rn2(SIZE(ghostnames))] : (const char *) plname; + return rn2(7) ? ghostnames[rn2(SIZE(ghostnames))] : (const char *) g.plname; } /* diff --git a/src/do_wear.c b/src/do_wear.c index eaf9ec74a..e4067f736 100644 --- a/src/do_wear.c +++ b/src/do_wear.c @@ -1292,7 +1292,7 @@ cancel_don() (g.afternmv == Boots_on || g.afternmv == Helmet_on || g.afternmv == Gloves_on || g.afternmv == Armor_on); g.afternmv = (int NDECL((*))) 0; - nomovemsg = (char *) 0; + g.nomovemsg = (char *) 0; g.multi = 0; context.takeoff.delay = 0; context.takeoff.what = 0L; @@ -1530,18 +1530,18 @@ register struct obj *otmp; g.multi_reason = "disrobing"; if (is_helmet(otmp)) { /* ick... */ - nomovemsg = !strcmp(helm_simple_name(otmp), "hat") + g.nomovemsg = !strcmp(helm_simple_name(otmp), "hat") ? "You finish taking off your hat." : "You finish taking off your helmet."; g.afternmv = Helmet_off; } else if (is_gloves(otmp)) { - nomovemsg = "You finish taking off your gloves."; + g.nomovemsg = "You finish taking off your gloves."; g.afternmv = Gloves_off; } else if (is_boots(otmp)) { - nomovemsg = "You finish taking off your boots."; + g.nomovemsg = "You finish taking off your boots."; g.afternmv = Boots_off; } else { - nomovemsg = "You finish taking off your suit."; + g.nomovemsg = "You finish taking off your suit."; g.afternmv = Armor_off; } } else { @@ -1915,7 +1915,7 @@ struct obj *obj; g.afternmv = Gloves_on; if (obj == uarm) g.afternmv = Armor_on; - nomovemsg = "You finish your dressing maneuver."; + g.nomovemsg = "You finish your dressing maneuver."; } else { if (is_cloak(obj)) (void) Cloak_on(); diff --git a/src/dog.c b/src/dog.c index 903a80a4a..4251668e4 100644 --- a/src/dog.c +++ b/src/dog.c @@ -393,7 +393,7 @@ boolean with_you; xlocale = xdnladder, ylocale = ydnladder; break; case MIGR_SSTAIRS: - xlocale = sstairs.sx, ylocale = sstairs.sy; + xlocale = g.sstairs.sx, ylocale = g.sstairs.sy; break; case MIGR_PORTAL: if (In_endgame(&u.uz)) { @@ -402,8 +402,8 @@ boolean with_you; that we know that the current endgame levels always build upwards and never have any exclusion subregion inside their TELEPORT_REGION settings. */ - xlocale = rn1(updest.hx - updest.lx + 1, updest.lx); - ylocale = rn1(updest.hy - updest.ly + 1, updest.ly); + xlocale = rn1(g.updest.hx - g.updest.lx + 1, g.updest.lx); + ylocale = rn1(g.updest.hy - g.updest.ly + 1, g.updest.ly); break; } /* find the arrival portal */ @@ -944,7 +944,7 @@ register struct obj *obj; || (obj && dogfood(mtmp, obj) >= MANFOOD)) return FALSE; - if (mtmp->m_id == quest_status.leader_m_id) + if (mtmp->m_id == g.quest_status.leader_m_id) return FALSE; /* add the pet extension */ diff --git a/src/dokick.c b/src/dokick.c index 6f513f2d7..b16d9eb05 100644 --- a/src/dokick.c +++ b/src/dokick.c @@ -1331,8 +1331,8 @@ schar loc; cc->y = u.uz.dlevel + 1; break; case MIGR_SSTAIRS: - cc->x = sstairs.tolev.dnum; - cc->y = sstairs.tolev.dlevel; + cc->x = g.sstairs.tolev.dnum; + cc->y = g.sstairs.tolev.dlevel; break; default: case MIGR_NOWHERE: @@ -1447,11 +1447,11 @@ xchar dlev; /* if !0 send to dlev near player */ You("removed %ld %s worth of goods!", price, currency(price)); if (cansee(shkp->mx, shkp->my)) { if (ESHK(shkp)->customer[0] == 0) - (void) strncpy(ESHK(shkp)->customer, plname, PL_NSIZ); + (void) strncpy(ESHK(shkp)->customer, g.plname, PL_NSIZ); if (angry) pline("%s is infuriated!", Monnam(shkp)); else - pline("\"%s, you are a thief!\"", plname); + pline("\"%s, you are a thief!\"", g.plname); } else You_hear("a scream, \"Thief!\""); hot_pursuit(shkp); @@ -1628,7 +1628,7 @@ boolean near_hero; nx = xupladder, ny = yupladder; break; case MIGR_SSTAIRS: - nx = sstairs.sx, ny = sstairs.sy; + nx = g.sstairs.sx, ny = g.sstairs.sy; break; case MIGR_WITH_HERO: nx = u.ux, ny = u.uy; @@ -1762,7 +1762,7 @@ xchar x, y; return MIGR_NOWHERE; if ((xdnstair == x && ydnstair == y) - || (sstairs.sx == x && sstairs.sy == y && !sstairs.up)) { + || (g.sstairs.sx == x && g.sstairs.sy == y && !g.sstairs.up)) { g.gate_str = "down the stairs"; return (xdnstair == x && ydnstair == y) ? MIGR_STAIRS_UP : MIGR_SSTAIRS; diff --git a/src/dothrow.c b/src/dothrow.c index 4cd221be4..24ce9317f 100644 --- a/src/dothrow.c +++ b/src/dothrow.c @@ -198,20 +198,20 @@ int shotlimit; multishot = shotlimit; } - m_shot.s = ammo_and_launcher(obj, uwep) ? TRUE : FALSE; + g.m_shot.s = ammo_and_launcher(obj, uwep) ? TRUE : FALSE; /* give a message if shooting more than one, or if player attempted to specify a count */ if (multishot > 1 || shotlimit > 0) { /* "You shoot N arrows." or "You throw N daggers." */ - You("%s %d %s.", m_shot.s ? "shoot" : "throw", + You("%s %d %s.", g.m_shot.s ? "shoot" : "throw", multishot, /* (might be 1 if player gave shotlimit) */ (multishot == 1) ? singular(obj, xname) : xname(obj)); } wep_mask = obj->owornmask; - m_shot.o = obj->otyp; - m_shot.n = multishot; - for (m_shot.i = 1; m_shot.i <= m_shot.n; m_shot.i++) { + g.m_shot.o = obj->otyp; + g.m_shot.n = multishot; + for (g.m_shot.i = 1; g.m_shot.i <= g.m_shot.n; g.m_shot.i++) { twoweap = u.twoweap; /* split this object off from its slot if necessary */ if (obj->quan > 1L) { @@ -224,9 +224,9 @@ int shotlimit; freeinv(otmp); throwit(otmp, wep_mask, twoweap); } - m_shot.n = m_shot.i = 0; - m_shot.o = STRANGE_OBJECT; - m_shot.s = FALSE; + g.m_shot.n = g.m_shot.i = 0; + g.m_shot.o = STRANGE_OBJECT; + g.m_shot.s = FALSE; return 1; } @@ -237,7 +237,7 @@ ok_to_throw(shotlimit_p) int *shotlimit_p; /* (see dothrow()) */ { /* kludge to work around parse()'s pre-decrement of `multi' */ - *shotlimit_p = (g.multi || save_cm) ? g.multi + 1 : 0; + *shotlimit_p = (g.multi || g.save_cm) ? g.multi + 1 : 0; g.multi = 0; /* reset; it's been used up */ if (notake(youmonst.data)) { @@ -403,13 +403,13 @@ void endmultishot(verbose) boolean verbose; { - if (m_shot.i < m_shot.n) { + if (g.m_shot.i < g.m_shot.n) { if (verbose && !context.mon_moving) { You("stop %s after the %d%s %s.", - m_shot.s ? "firing" : "throwing", m_shot.i, ordin(m_shot.i), - m_shot.s ? "shot" : "toss"); + g.m_shot.s ? "firing" : "throwing", g.m_shot.i, ordin(g.m_shot.i), + g.m_shot.s ? "shot" : "toss"); } - m_shot.n = m_shot.i; /* make current shot be the last */ + g.m_shot.n = g.m_shot.i; /* make current shot be the last */ } } @@ -835,7 +835,7 @@ boolean verbose; nomul(-range); g.multi_reason = "moving through the air"; - nomovemsg = ""; /* it just happens */ + g.nomovemsg = ""; /* it just happens */ if (verbose) You("%s in the opposite direction.", range > 1 ? "hurtle" : "float"); /* if we're in the midst of shooting multiple projectiles, stop */ @@ -1492,7 +1492,7 @@ boolean maybe_wakeup; #define quest_arti_hits_leader(obj, mon) \ (obj->oartifact && is_quest_artifact(obj) \ - && mon->m_id == quest_status.leader_m_id) + && mon->m_id == g.quest_status.leader_m_id) /* * Object thrown by player arrives at monster's location. diff --git a/src/dungeon.c b/src/dungeon.c index 913fe0c9d..b160ebd8e 100644 --- a/src/dungeon.c +++ b/src/dungeon.c @@ -70,7 +70,7 @@ STATIC_DCL const char *FDECL(shop_string, (int)); STATIC_DCL char *FDECL(tunesuffix, (mapseen *, char *)); #ifdef DEBUG -#define DD dungeons[i] +#define DD g.dungeons[i] STATIC_DCL void NDECL(dumpit); STATIC_OVL void @@ -96,7 +96,7 @@ dumpit() getchar(); } fprintf(stderr, "\nSpecial levels:\n"); - for (x = sp_levchn; x; x = x->next) { + for (x = g.sp_levchn; x; x = x->next) { fprintf(stderr, "%s (%d): ", x->proto, x->rndlevs); fprintf(stderr, "on %d, %d; ", x->dlevel.dnum, x->dlevel.dlevel); fprintf(stderr, "flags:%s%s%s%s\n", @@ -139,10 +139,10 @@ boolean perform_write, free_data; if (perform_write) { bwrite(fd, (genericptr_t) &g.n_dgns, sizeof g.n_dgns); - bwrite(fd, (genericptr_t) dungeons, + bwrite(fd, (genericptr_t) g.dungeons, sizeof(dungeon) * (unsigned) g.n_dgns); bwrite(fd, (genericptr_t) &dungeon_topology, sizeof dungeon_topology); - bwrite(fd, (genericptr_t) tune, sizeof tune); + bwrite(fd, (genericptr_t) g.tune, sizeof tune); for (count = 0, curr = g.branches; curr; curr = curr->next) count++; @@ -155,7 +155,7 @@ boolean perform_write, free_data; bwrite(fd, (genericptr_t) &count, sizeof count); bwrite(fd, (genericptr_t) level_info, (unsigned) count * sizeof(struct linfo)); - bwrite(fd, (genericptr_t) &inv_pos, sizeof inv_pos); + bwrite(fd, (genericptr_t) &g.inv_pos, sizeof g.inv_pos); for (count = 0, curr_ms = g.mapseenchn; curr_ms; curr_ms = curr_ms->next) @@ -192,9 +192,9 @@ int fd; mapseen *curr_ms, *last_ms; mread(fd, (genericptr_t) &g.n_dgns, sizeof(g.n_dgns)); - mread(fd, (genericptr_t) dungeons, sizeof(dungeon) * (unsigned) g.n_dgns); + mread(fd, (genericptr_t) g.dungeons, sizeof(dungeon) * (unsigned) g.n_dgns); mread(fd, (genericptr_t) &dungeon_topology, sizeof dungeon_topology); - mread(fd, (genericptr_t) tune, sizeof tune); + mread(fd, (genericptr_t) g.tune, sizeof tune); last = g.branches = (branch *) 0; @@ -216,7 +216,7 @@ int fd; count); mread(fd, (genericptr_t) level_info, (unsigned) count * sizeof(struct linfo)); - mread(fd, (genericptr_t) &inv_pos, sizeof inv_pos); + mread(fd, (genericptr_t) &g.inv_pos, sizeof g.inv_pos); mread(fd, (genericptr_t) &count, sizeof(count)); last_ms = (mapseen *) 0; @@ -254,7 +254,7 @@ const char *s; xchar i; for (i = 0; i < g.n_dgns; i++) - if (!strcmp(dungeons[i].dname, s)) + if (!strcmp(g.dungeons[i].dname, s)) return i; panic("Couldn't resolve dungeon number for name \"%s\".", s); @@ -267,7 +267,7 @@ find_level(s) const char *s; { s_level *curr; - for (curr = sp_levchn; curr; curr = curr->next) + for (curr = g.sp_levchn; curr; curr = curr->next) if (!strcmpi(s, curr->proto)) break; return curr; @@ -293,7 +293,7 @@ struct proto_dungeon *pd; const char *dnam; for (br = g.branches; br; br = br->next) { - dnam = dungeons[br->end2.dnum].dname; + dnam = g.dungeons[br->end2.dnum].dname; if (!strcmpi(dnam, s) || (!strncmpi(dnam, "The ", 4) && !strcmpi(dnam + 4, s))) break; @@ -346,7 +346,7 @@ int base, randc, chain; struct proto_dungeon *pd; int *adjusted_base; { - int lmax = dungeons[dgn].num_dunlevs; + int lmax = g.dungeons[dgn].num_dunlevs; if (chain >= 0) { /* relative to a special level */ s_level *levtmp = pd->final_lev[chain]; @@ -485,14 +485,14 @@ struct proto_dungeon *pd; int branch_num; branch *new_branch; - branch_num = find_branch(dungeons[dgn].dname, pd); + branch_num = find_branch(g.dungeons[dgn].dname, pd); new_branch = (branch *) alloc(sizeof(branch)); (void) memset((genericptr_t)new_branch, 0, sizeof(branch)); new_branch->next = (branch *) 0; new_branch->id = branch_id++; new_branch->type = correct_branch_type(&pd->tmpbranch[branch_num]); - new_branch->end1.dnum = parent_dnum(dungeons[dgn].dname, pd); - new_branch->end1.dlevel = parent_dlevel(dungeons[dgn].dname, pd); + new_branch->end1.dnum = parent_dnum(g.dungeons[dgn].dname, pd); + new_branch->end1.dlevel = parent_dlevel(g.dungeons[dgn].dname, pd); new_branch->end2.dnum = dgn; new_branch->end2.dlevel = child_entry_level; new_branch->end1_up = pd->tmpbranch[branch_num].up ? TRUE : FALSE; @@ -514,15 +514,15 @@ s_level *new_lev; s_level *prev, *curr; prev = (s_level *) 0; - for (curr = sp_levchn; curr; curr = curr->next) { + for (curr = g.sp_levchn; curr; curr = curr->next) { if (curr->dlevel.dnum == new_lev->dlevel.dnum && curr->dlevel.dlevel > new_lev->dlevel.dlevel) break; prev = curr; } if (!prev) { - new_lev->next = sp_levchn; - sp_levchn = new_lev; + new_lev->next = g.sp_levchn; + g.sp_levchn = new_lev; } else { new_lev->next = curr; prev->next = new_lev; @@ -757,7 +757,7 @@ init_dungeons() * Read in each dungeon and transfer the results to the internal * dungeon arrays. */ - sp_levchn = (s_level *) 0; + g.sp_levchn = (s_level *) 0; Fread((genericptr_t) &g.n_dgns, sizeof(int), 1, dgn_file); if (g.n_dgns >= MAXDUNGEON) panic("init_dungeons: too many dungeons"); @@ -782,30 +782,30 @@ init_dungeons() continue; } - Strcpy(dungeons[i].dname, pd.tmpdungeon[i].name); - Strcpy(dungeons[i].proto, pd.tmpdungeon[i].protoname); - dungeons[i].boneid = pd.tmpdungeon[i].boneschar; + Strcpy(g.dungeons[i].dname, pd.tmpdungeon[i].name); + Strcpy(g.dungeons[i].proto, pd.tmpdungeon[i].protoname); + g.dungeons[i].boneid = pd.tmpdungeon[i].boneschar; if (pd.tmpdungeon[i].lev.rand) - dungeons[i].num_dunlevs = (xchar) rn1(pd.tmpdungeon[i].lev.rand, + g.dungeons[i].num_dunlevs = (xchar) rn1(pd.tmpdungeon[i].lev.rand, pd.tmpdungeon[i].lev.base); else - dungeons[i].num_dunlevs = (xchar) pd.tmpdungeon[i].lev.base; + g.dungeons[i].num_dunlevs = (xchar) pd.tmpdungeon[i].lev.base; if (!i) { - dungeons[i].ledger_start = 0; - dungeons[i].depth_start = 1; - dungeons[i].dunlev_ureached = 1; + g.dungeons[i].ledger_start = 0; + g.dungeons[i].depth_start = 1; + g.dungeons[i].dunlev_ureached = 1; } else { - dungeons[i].ledger_start = - dungeons[i - 1].ledger_start + dungeons[i - 1].num_dunlevs; - dungeons[i].dunlev_ureached = 0; + g.dungeons[i].ledger_start = + g.dungeons[i - 1].ledger_start + g.dungeons[i - 1].num_dunlevs; + g.dungeons[i].dunlev_ureached = 0; } - dungeons[i].flags.hellish = !!(pd.tmpdungeon[i].flags & HELLISH); - dungeons[i].flags.maze_like = !!(pd.tmpdungeon[i].flags & MAZELIKE); - dungeons[i].flags.rogue_like = !!(pd.tmpdungeon[i].flags & ROGUELIKE); - dungeons[i].flags.align = + g.dungeons[i].flags.hellish = !!(pd.tmpdungeon[i].flags & HELLISH); + g.dungeons[i].flags.maze_like = !!(pd.tmpdungeon[i].flags & MAZELIKE); + g.dungeons[i].flags.rogue_like = !!(pd.tmpdungeon[i].flags & ROGUELIKE); + g.dungeons[i].flags.align = ((pd.tmpdungeon[i].flags & D_ALIGN_MASK) >> 4); /* * Set the entry level for this dungeon. The pd.tmpdungeon entry @@ -818,16 +818,16 @@ init_dungeons() * redundant. It is used only here and in print_dungeon(). */ if (pd.tmpdungeon[i].entry_lev < 0) { - dungeons[i].entry_lev = - dungeons[i].num_dunlevs + pd.tmpdungeon[i].entry_lev + 1; - if (dungeons[i].entry_lev <= 0) - dungeons[i].entry_lev = 1; + g.dungeons[i].entry_lev = + g.dungeons[i].num_dunlevs + pd.tmpdungeon[i].entry_lev + 1; + if (g.dungeons[i].entry_lev <= 0) + g.dungeons[i].entry_lev = 1; } else if (pd.tmpdungeon[i].entry_lev > 0) { - dungeons[i].entry_lev = pd.tmpdungeon[i].entry_lev; - if (dungeons[i].entry_lev > dungeons[i].num_dunlevs) - dungeons[i].entry_lev = dungeons[i].num_dunlevs; + g.dungeons[i].entry_lev = pd.tmpdungeon[i].entry_lev; + if (g.dungeons[i].entry_lev > g.dungeons[i].num_dunlevs) + g.dungeons[i].entry_lev = g.dungeons[i].num_dunlevs; } else { /* default */ - dungeons[i].entry_lev = 1; /* defaults to top level */ + g.dungeons[i].entry_lev = 1; /* defaults to top level */ } if (i) { /* set depth */ @@ -835,7 +835,7 @@ init_dungeons() schar from_depth; boolean from_up; - br = add_branch(i, dungeons[i].entry_lev, &pd); + br = add_branch(i, g.dungeons[i].entry_lev, &pd); /* Get the depth of the connecting end. */ if (br->end1.dnum == i) { @@ -860,14 +860,14 @@ init_dungeons() * * We'll say that portals stay on the same depth. */ - dungeons[i].depth_start = + g.dungeons[i].depth_start = from_depth + (br->type == BR_PORTAL ? 0 : (from_up ? -1 : 1)) - - (dungeons[i].entry_lev - 1); + - (g.dungeons[i].entry_lev - 1); } /* this is redundant - it should have been flagged by dgn_comp */ - if (dungeons[i].num_dunlevs > MAXLEVEL) - dungeons[i].num_dunlevs = MAXLEVEL; + if (g.dungeons[i].num_dunlevs > MAXLEVEL) + g.dungeons[i].num_dunlevs = MAXLEVEL; pd.start = pd.n_levs; /* save starting point */ pd.n_levs += pd.tmpdungeon[i].levels; @@ -908,8 +908,8 @@ init_dungeons() (void) dlb_fclose(dgn_file); for (i = 0; i < 5; i++) - tune[i] = 'A' + rn2(7); - tune[5] = 0; + g.tune[i] = 'A' + rn2(7); + g.tune[5] = 0; /* * Find most of the special levels and dungeons so we can access their @@ -959,8 +959,8 @@ init_dungeons() making the dummy level overlay level 1; but the whole reason for having the dummy level is to make earth have depth -1 instead of 0, so adjust the start point to shift endgame up */ - if (dunlevs_in_dungeon(&x->dlevel) > 1 - dungeons[i].depth_start) - dungeons[i].depth_start -= 1; + if (dunlevs_in_dungeon(&x->dlevel) > 1 - g.dungeons[i].depth_start) + g.dungeons[i].depth_start -= 1; /* TODO: strip "dummy" out all the way here, so that it's hidden from feedback. */ } @@ -983,7 +983,7 @@ xchar dunlevs_in_dungeon(lev) d_level *lev; { - return dungeons[lev->dnum].num_dunlevs; + return g.dungeons[lev->dnum].num_dunlevs; } /* return the lowest level explored in the game*/ @@ -1013,7 +1013,7 @@ boolean noquest; for (i = 0; i < g.n_dgns; i++) { if (noquest && i == quest_dnum) continue; - tmp.dlevel = dungeons[i].dunlev_ureached; + tmp.dlevel = g.dungeons[i].dunlev_ureached; if (tmp.dlevel == 0) continue; tmp.dnum = i; @@ -1029,12 +1029,12 @@ xchar ledger_no(lev) d_level *lev; { - return (xchar) (lev->dlevel + dungeons[lev->dnum].ledger_start); + return (xchar) (lev->dlevel + g.dungeons[lev->dnum].ledger_start); } /* * The last level in the bookkeeping list of level is the bottom of the last - * dungeon in the dungeons[] array. + * dungeon in the g.dungeons[] array. * * Maxledgerno() -- which is the max number of levels in the bookkeeping * list, should not be confused with dunlevs_in_dungeon(lev) -- which @@ -1045,8 +1045,8 @@ d_level *lev; xchar maxledgerno() { - return (xchar) (dungeons[g.n_dgns - 1].ledger_start - + dungeons[g.n_dgns - 1].num_dunlevs); + return (xchar) (g.dungeons[g.n_dgns - 1].ledger_start + + g.dungeons[g.n_dgns - 1].num_dunlevs); } /* return the dungeon that this ledgerno exists in */ @@ -1058,8 +1058,8 @@ xchar ledgerno; /* find i such that (i->base + 1) <= ledgerno <= (i->base + i->count) */ for (i = 0; i < g.n_dgns; i++) - if (dungeons[i].ledger_start < ledgerno - && ledgerno <= dungeons[i].ledger_start + dungeons[i].num_dunlevs) + if (g.dungeons[i].ledger_start < ledgerno + && ledgerno <= g.dungeons[i].ledger_start + g.dungeons[i].num_dunlevs) return (xchar) i; panic("level number out of range [ledger_to_dnum(%d)]", (int) ledgerno); @@ -1073,7 +1073,7 @@ ledger_to_dlev(ledgerno) xchar ledgerno; { return (xchar) (ledgerno - - dungeons[ledger_to_dnum(ledgerno)].ledger_start); + - g.dungeons[ledger_to_dnum(ledgerno)].ledger_start); } /* returns the depth of a level, in floors below the surface @@ -1082,7 +1082,7 @@ schar depth(lev) d_level *lev; { - return (schar) (dungeons[lev->dnum].depth_start + lev->dlevel - 1); + return (schar) (g.dungeons[lev->dnum].depth_start + lev->dlevel - 1); } /* are "lev1" and "lev2" actually the same? */ @@ -1101,7 +1101,7 @@ d_level *lev; { s_level *levtmp; - for (levtmp = sp_levchn; levtmp; levtmp = levtmp->next) + for (levtmp = g.sp_levchn; levtmp; levtmp = levtmp->next) if (on_level(lev, &levtmp->dlevel)) return levtmp; @@ -1130,7 +1130,7 @@ boolean builds_up(lev) d_level *lev; { - dungeon *dptr = &dungeons[lev->dnum]; + dungeon *dptr = &g.dungeons[lev->dnum]; /* * FIXME: this misclassifies a single level branch reached via stairs * from below. Saving grace is that no such branches currently exist. @@ -1144,9 +1144,9 @@ void next_level(at_stairs) boolean at_stairs; { - if (at_stairs && u.ux == sstairs.sx && u.uy == sstairs.sy) { + if (at_stairs && u.ux == g.sstairs.sx && u.uy == g.sstairs.sy) { /* Taking a down dungeon branch. */ - goto_level(&sstairs.tolev, at_stairs, FALSE, FALSE); + goto_level(&g.sstairs.tolev, at_stairs, FALSE, FALSE); } else { /* Going down a stairs or jump in a trap door. */ d_level newlevel; @@ -1162,14 +1162,14 @@ void prev_level(at_stairs) boolean at_stairs; { - if (at_stairs && u.ux == sstairs.sx && u.uy == sstairs.sy) { + if (at_stairs && u.ux == g.sstairs.sx && u.uy == g.sstairs.sy) { /* Taking an up dungeon branch. */ /* KMH -- Upwards branches are okay if not level 1 */ /* (Just make sure it doesn't go above depth 1) */ if (!u.uz.dnum && u.uz.dlevel == 1 && !u.uhave.amulet) done(ESCAPED); else - goto_level(&sstairs.tolev, at_stairs, FALSE, FALSE); + goto_level(&g.sstairs.tolev, at_stairs, FALSE, FALSE); } else { /* Going up a stairs or rising through the ceiling. */ d_level newlevel; @@ -1215,15 +1215,15 @@ int upflag; destination instead of its enclosing region. Note: up vs down doesn't matter in this case because both specify the same exclusion area. */ - place_lregion(dndest.nlx, dndest.nly, dndest.nhx, dndest.nhy, + place_lregion(g.dndest.nlx, g.dndest.nly, g.dndest.nhx, g.dndest.nhy, 0, 0, 0, 0, LR_DOWNTELE, (d_level *) 0); else if (up) - place_lregion(updest.lx, updest.ly, updest.hx, updest.hy, - updest.nlx, updest.nly, updest.nhx, updest.nhy, + place_lregion(g.updest.lx, g.updest.ly, g.updest.hx, g.updest.hy, + g.updest.nlx, g.updest.nly, g.updest.nhx, g.updest.nhy, LR_UPTELE, (d_level *) 0); else - place_lregion(dndest.lx, dndest.ly, dndest.hx, dndest.hy, - dndest.nlx, dndest.nly, dndest.nhx, dndest.nhy, + place_lregion(g.dndest.lx, g.dndest.ly, g.dndest.hx, g.dndest.hy, + g.dndest.nlx, g.dndest.nly, g.dndest.nhx, g.dndest.nhy, LR_DOWNTELE, (d_level *) 0); } @@ -1232,8 +1232,8 @@ void u_on_sstairs(upflag) int upflag; { - if (sstairs.sx) - u_on_newpos(sstairs.sx, sstairs.sy); + if (g.sstairs.sx) + u_on_newpos(g.sstairs.sx, g.sstairs.sy); else u_on_rndspot(upflag); } @@ -1266,14 +1266,14 @@ xchar x, y; || (x == xdnstair && y == ydnstair) || (x == xdnladder && y == ydnladder) || (x == xupladder && y == yupladder) - || (x == sstairs.sx && y == sstairs.sy)); + || (x == g.sstairs.sx && y == g.sstairs.sy)); } boolean Is_botlevel(lev) d_level *lev; { - return (boolean) (lev->dlevel == dungeons[lev->dnum].num_dunlevs); + return (boolean) (lev->dlevel == g.dungeons[lev->dnum].num_dunlevs); } boolean @@ -1314,9 +1314,9 @@ d_level *lev; || (Is_wiz1_level(lev) && In_W_tower(x, y, lev))) return FALSE; return (boolean) (lev->dlevel > 1 - || (dungeons[lev->dnum].entry_lev == 1 + || (g.dungeons[lev->dnum].entry_lev == 1 && ledger_no(lev) != 1 - && sstairs.sx && sstairs.up)); + && g.sstairs.sx && g.sstairs.up)); } boolean @@ -1350,9 +1350,9 @@ int levnum; /* can only currently happen in endgame */ levnum = u.uz.dlevel; } else if (levnum - > dungeons[dgn].depth_start + dungeons[dgn].num_dunlevs - 1) { + > g.dungeons[dgn].depth_start + g.dungeons[dgn].num_dunlevs - 1) { /* beyond end of dungeon, jump to last level */ - levnum = dungeons[dgn].num_dunlevs; + levnum = g.dungeons[dgn].num_dunlevs; } else { /* The desired level is in this dungeon or a "higher" one. */ @@ -1360,7 +1360,7 @@ int levnum; * Branch up the tree until we reach a dungeon that contains the * levnum. */ - if (levnum < dungeons[dgn].depth_start) { + if (levnum < g.dungeons[dgn].depth_start) { do { /* * Find the parent dungeon of this dungeon. @@ -1375,11 +1375,11 @@ int levnum; panic("get_level: can't find parent dungeon"); dgn = br->end1.dnum; - } while (levnum < dungeons[dgn].depth_start); + } while (levnum < g.dungeons[dgn].depth_start); } /* We're within the same dungeon; calculate the level. */ - levnum = levnum - dungeons[dgn].depth_start + 1; + levnum = levnum - g.dungeons[dgn].depth_start + 1; } newlevel->dnum = dgn; @@ -1477,11 +1477,11 @@ d_level *lev; /* * Both of the exclusion regions for arriving via level teleport * (from above or below) define the tower's boundary. - * assert( updest.nIJ == dndest.nIJ for I={l|h},J={x|y} ); + * assert( g.updest.nIJ == g.dndest.nIJ for I={l|h},J={x|y} ); */ - if (dndest.nlx > 0) - return (boolean) within_bounded_area(x, y, dndest.nlx, dndest.nly, - dndest.nhx, dndest.nhy); + if (g.dndest.nlx > 0) + return (boolean) within_bounded_area(x, y, g.dndest.nlx, g.dndest.nly, + g.dndest.nhx, g.dndest.nhy); else impossible("No boundary for Wizard's Tower?"); return FALSE; @@ -1492,7 +1492,7 @@ boolean In_hell(lev) d_level *lev; { - return (boolean) (dungeons[lev->dnum].flags.hellish); + return (boolean) (g.dungeons[lev->dnum].flags.hellish); } /* sets *lev to be the gateway to Gehennom... */ @@ -1550,9 +1550,9 @@ int pct; if (rn2(100) < pct) return lev->flags.align; - if (dungeons[u.uz.dnum].flags.align) + if (g.dungeons[u.uz.dnum].flags.align) if (rn2(100) < pct) - return dungeons[u.uz.dnum].flags.align; + return g.dungeons[u.uz.dnum].flags.align; al = rn2(3) - 1; return Align2amask(al); @@ -1563,7 +1563,7 @@ Invocation_lev(lev) d_level *lev; { return (boolean) (In_hell(lev) - && lev->dlevel == dungeons[lev->dnum].num_dunlevs - 1); + && lev->dlevel == g.dungeons[lev->dnum].num_dunlevs - 1); } /* use instead of depth() wherever a degree of difficulty is made @@ -1586,7 +1586,7 @@ level_difficulty() they were easier; adjust for the extra effort involved in going down to the entrance and then up to the location */ if (builds_up(&u.uz)) - res += 2 * (dungeons[u.uz.dnum].entry_lev - u.uz.dlevel + 1); + res += 2 * (g.dungeons[u.uz.dnum].entry_lev - u.uz.dlevel + 1); /* * 'Proof' by example: suppose the entrance to sokoban is * on dungeon level 9, leading up to bottom sokoban level @@ -1711,7 +1711,7 @@ unplaced_floater(dptr) struct dungeon *dptr; { branch *br; - int idx = (int) (dptr - dungeons); + int idx = (int) (dptr - g.dungeons); /* if other floating branches are added, this will need to change */ if (idx != knox_level.dnum) @@ -1817,7 +1817,7 @@ struct lchoice *lchoices_p; Sprintf(buf, "%c %s to %s: %d", bymenu ? chr_u_on_lvl(&br->end1) : ' ', br_string(br->type), - dungeons[br->end2.dnum].dname, depth(&br->end1)); + g.dungeons[br->end2.dnum].dname, depth(&br->end1)); if (bymenu) tport_menu(win, buf, lchoices_p, &br->end1, unreachable_level(&br->end1, FALSE)); @@ -1851,7 +1851,7 @@ xchar *rdgn; lchoices.menuletter = 'a'; } - for (i = 0, dptr = dungeons; i < g.n_dgns; i++, dptr++) { + for (i = 0, dptr = g.dungeons; i < g.n_dgns; i++, dptr++) { if (bymenu && In_endgame(&u.uz) && i != astral_level.dnum) continue; unplaced = unplaced_floater(dptr); @@ -1882,7 +1882,7 @@ xchar *rdgn; * Circle through the special levels to find levels that are in * this dungeon. */ - for (slev = sp_levchn, last_level = 0; slev; slev = slev->next) { + for (slev = g.sp_levchn, last_level = 0; slev; slev = slev->next) { if (slev->dlevel.dnum != i) continue; @@ -1894,7 +1894,7 @@ xchar *rdgn; chr_u_on_lvl(&slev->dlevel), slev->proto, depth(&slev->dlevel)); if (Is_stronghold(&slev->dlevel)) - Sprintf(eos(buf), " (tune %s)", tune); + Sprintf(eos(buf), " (tune %s)", g.tune); if (bymenu) tport_menu(win, buf, &lchoices, &slev->dlevel, unreachable_level(&slev->dlevel, unplaced)); @@ -1936,7 +1936,7 @@ xchar *rdgn; first = FALSE; } Sprintf(buf, " %s to %s", br_string(br->type), - dungeons[br->end2.dnum].dname); + g.dungeons[br->end2.dnum].dname); putstr(win, 0, buf); } } @@ -1945,7 +1945,7 @@ xchar *rdgn; if (Invocation_lev(&u.uz)) { putstr(win, 0, ""); Sprintf(buf, "Invocation position @ (%d,%d), hero @ (%d,%d)", - inv_pos.x, inv_pos.y, u.ux, u.uy); + g.inv_pos.x, g.inv_pos.y, u.ux, u.uy); putstr(win, 0, buf); } else { struct trap *trap; @@ -2118,7 +2118,7 @@ int ledger_num; struct cemetery *bp; for (mptr = g.mapseenchn; mptr; mptr = mptr->next) - if (dungeons[mptr->lev.dnum].ledger_start + mptr->lev.dlevel + if (g.dungeons[mptr->lev.dnum].ledger_start + mptr->lev.dlevel == ledger_num) break; @@ -2147,7 +2147,7 @@ int ledger_num; struct cemetery *bp, *bpnext; for (mptr = g.mapseenchn; mptr; mprev = mptr, mptr = mptr->next) - if (dungeons[mptr->lev.dnum].ledger_start + mptr->lev.dlevel == ledger_num) + if (g.dungeons[mptr->lev.dnum].ledger_start + mptr->lev.dlevel == ledger_num) break; if (!mptr) @@ -2380,7 +2380,7 @@ mapseen *mptr; && (mptr->flags.knownbones || wizard)) || mptr->custom || mptr->br || (mptr->lev.dlevel - == dungeons[mptr->lev.dnum].dunlev_ureached)); + == g.dungeons[mptr->lev.dnum].dunlev_ureached)); } /* recalculate mapseen for the current level */ @@ -2437,9 +2437,9 @@ recalc_mapseen() && u.uevent.qcalled && !(u.uevent.qcompleted || u.uevent.qexpelled - || quest_status.leader_is_dead)); + || g.quest_status.leader_is_dead)); mptr->flags.questing = (on_level(&u.uz, &qstart_level) - && quest_status.got_quest); + && g.quest_status.got_quest); /* track rooms the hero is in */ for (i = 0; i < SIZE(u.urooms); ++i) { @@ -2863,7 +2863,7 @@ char *outbuf; char tmp[BUFSZ]; if (u.uevent.uheard_tune == 2) - Sprintf(tmp, "notes \"%s\"", tune); + Sprintf(tmp, "notes \"%s\"", g.tune); else Strcpy(tmp, "5-note tune"); Sprintf(outbuf, " (play %s to open or close drawbridge)", tmp); @@ -2914,22 +2914,22 @@ boolean printdun; if (dnum == quest_dnum || dnum == knox_level.dnum) depthstart = 1; else - depthstart = dungeons[dnum].depth_start; + depthstart = g.dungeons[dnum].depth_start; if (printdun) { - if (dungeons[dnum].dunlev_ureached == dungeons[dnum].entry_lev + if (g.dungeons[dnum].dunlev_ureached == g.dungeons[dnum].entry_lev /* suppress the negative numbers in the endgame */ || In_endgame(&mptr->lev)) - Sprintf(buf, "%s:", dungeons[dnum].dname); + Sprintf(buf, "%s:", g.dungeons[dnum].dname); else if (builds_up(&mptr->lev)) Sprintf(buf, "%s: levels %d up to %d", - dungeons[dnum].dname, - depthstart + dungeons[dnum].entry_lev - 1, - depthstart + dungeons[dnum].dunlev_ureached - 1); + g.dungeons[dnum].dname, + depthstart + g.dungeons[dnum].entry_lev - 1, + depthstart + g.dungeons[dnum].dunlev_ureached - 1); else Sprintf(buf, "%s: levels %d to %d", - dungeons[dnum].dname, depthstart, - depthstart + dungeons[dnum].dunlev_ureached - 1); + g.dungeons[dnum].dname, depthstart, + depthstart + g.dungeons[dnum].dunlev_ureached - 1); putstr(win, !final ? ATR_INVERSE : 0, buf); } @@ -3044,7 +3044,7 @@ boolean printdun; /* print out branches */ if (mptr->br) { Sprintf(buf, "%s%s to %s", PREFIX, br_string2(mptr->br), - dungeons[mptr->br->end2.dnum].dname); + g.dungeons[mptr->br->end2.dnum].dname); /* Since mapseen objects are printed out in increasing order * of dlevel, clarify which level this branch is going to diff --git a/src/eat.c b/src/eat.c index e9cc53237..8136d1b7a 100644 --- a/src/eat.c +++ b/src/eat.c @@ -150,8 +150,8 @@ eatmdone(VOID_ARGS) { /* release `eatmbuf' */ if (g.eatmbuf) { - if (nomovemsg == g.eatmbuf) - nomovemsg = 0; + if (g.nomovemsg == g.eatmbuf) + g.nomovemsg = 0; free((genericptr_t) g.eatmbuf), g.eatmbuf = 0; } /* update display */ @@ -169,7 +169,7 @@ eatmupdate() const char *altmsg = 0; int altapp = 0; /* lint suppression */ - if (!g.eatmbuf || nomovemsg != g.eatmbuf) + if (!g.eatmbuf || g.nomovemsg != g.eatmbuf) return; if (is_obj_mappear(&youmonst,ORANGE) && !Hallucination) { @@ -190,7 +190,7 @@ eatmupdate() free((genericptr_t) g.eatmbuf); g.eatmbuf = (char *) alloc(strlen(altmsg) + 1); } - nomovemsg = strcpy(g.eatmbuf, altmsg); + g.nomovemsg = strcpy(g.eatmbuf, altmsg); /* update current image */ youmonst.mappearance = altapp; newsym(u.ux, u.uy); @@ -452,10 +452,10 @@ boolean message; piece->in_use = TRUE; g.occupation = 0; /* do this early, so newuhs() knows we're done */ newuhs(FALSE); - if (nomovemsg) { + if (g.nomovemsg) { if (message) - pline1(nomovemsg); - nomovemsg = 0; + pline1(g.nomovemsg); + g.nomovemsg = 0; } else if (message) You("finish eating %s.", food_xname(piece, TRUE)); @@ -1032,7 +1032,7 @@ int pm; : "You now prefer mimicking %s again.", an(Upolyd ? youmonst.data->mname : urace.noun)); g.eatmbuf = dupstr(buf); - nomovemsg = g.eatmbuf; + g.nomovemsg = g.eatmbuf; g.afternmv = eatmdone; /* ??? what if this was set before? */ youmonst.m_ap_type = M_AP_OBJECT; @@ -1575,7 +1575,7 @@ struct obj *obj; context.botl = TRUE; nomul(-duration); g.multi_reason = "unconscious from rotten food"; - nomovemsg = "You are conscious again."; + g.nomovemsg = "You are conscious again."; g.afternmv = Hear_again; return 1; } @@ -1750,19 +1750,19 @@ struct obj *otmp; } } - old_nomovemsg = nomovemsg; + old_nomovemsg = g.nomovemsg; if (bite()) { /* survived choking, finish off food that's nearly done; need this to handle cockatrice eggs, fortune cookies, etc */ if (++context.victual.usedtime >= context.victual.reqtime) { - /* don't want done_eating() to issue nomovemsg if it + /* don't want done_eating() to issue g.nomovemsg if it is due to vomit() called by bite() */ - save_nomovemsg = nomovemsg; + save_nomovemsg = g.nomovemsg; if (!old_nomovemsg) - nomovemsg = 0; + g.nomovemsg = 0; done_eating(FALSE); if (!old_nomovemsg) - nomovemsg = save_nomovemsg; + g.nomovemsg = save_nomovemsg; } return; } @@ -2862,7 +2862,7 @@ int num; if (!context.victual.eating || (context.victual.eating && !context.victual.fullwarn)) { pline("You're having a hard time getting all of it down."); - nomovemsg = "You're finally finished."; + g.nomovemsg = "You're finally finished."; if (!context.victual.eating) { g.multi = -2; } else { @@ -2873,7 +2873,7 @@ int num; if (yn_function("Continue eating?", ynchars, 'n') != 'y') { reset_eat(); - nomovemsg = (char *) 0; + g.nomovemsg = (char *) 0; } } } @@ -2977,7 +2977,7 @@ boolean incr; context.botl = TRUE; nomul(-duration); g.multi_reason = "fainted from lack of food"; - nomovemsg = "You regain consciousness."; + g.nomovemsg = "You regain consciousness."; g.afternmv = unfaint; newhs = FAINTED; if (!Levitation) @@ -3198,7 +3198,7 @@ vomit() /* A good idea from David Neves */ if (g.multi >= -2) { nomul(-2); g.multi_reason = "vomiting"; - nomovemsg = You_can_move_again; + g.nomovemsg = You_can_move_again; } } diff --git a/src/end.c b/src/end.c index dbcf00b3b..c2ddf0821 100644 --- a/src/end.c +++ b/src/end.c @@ -715,7 +715,7 @@ time_t when; /* date+time at end of game */ putstr(0, 0, ""); /* character name and basic role info */ - Sprintf(pbuf, "%s, %s %s %s %s", plname, + Sprintf(pbuf, "%s, %s %s %s %s", g.plname, aligns[1 - u.ualign.type].adj, genders[flags.female].adj, urace.adj, @@ -846,7 +846,7 @@ int how; } if (how == CHOKING) init_uhunger(); - nomovemsg = "You survived that attempt on your life."; + g.nomovemsg = "You survived that attempt on your life."; context.move = 0; if (g.multi > 0) g.multi = 0; @@ -1270,8 +1270,8 @@ int how; ? urace.femalenum : urace.malenum; } - corpse = mk_named_object(CORPSE, &mons[mnum], u.ux, u.uy, plname); - Sprintf(pbuf, "%s, ", plname); + corpse = mk_named_object(CORPSE, &mons[mnum], u.ux, u.uy, g.plname); + Sprintf(pbuf, "%s, ", g.plname); formatkiller(eos(pbuf), sizeof pbuf - strlen(pbuf), how, TRUE); make_grave(u.ux, u.uy, pbuf); } @@ -1328,7 +1328,7 @@ int how; /* update gold for the rip output, which can't use hidden_gold() (containers will be gone by then if bones just got saved...) */ - done_money = umoney; + g.done_money = umoney; /* clean up unneeded windows */ if (have_windows) { @@ -1374,7 +1374,7 @@ int how; /* don't bother counting to see whether it should be plural */ } - Sprintf(pbuf, "%s %s the %s...", Goodbye(), plname, + Sprintf(pbuf, "%s %s the %s...", Goodbye(), g.plname, (how != ASCENDED) ? (const char *) ((flags.female && urole.name.f) ? urole.name.f @@ -1484,7 +1484,7 @@ int how; (u.uz.dlevel < 0) ? "passed away" : ends[how]); } else { /* more conventional demise */ - const char *where = dungeons[u.uz.dnum].dname; + const char *where = g.dungeons[u.uz.dnum].dname; if (Is_astralevel(&u.uz)) where = "The Astral Plane"; diff --git a/src/engrave.c b/src/engrave.c index 6f8bfbe0e..487156160 100644 --- a/src/engrave.c +++ b/src/engrave.c @@ -400,7 +400,7 @@ xchar e_type; ep->engr_txt = (char *) (ep + 1); Strcpy(ep->engr_txt, s); /* engraving Elbereth shows wisdom */ - if (!in_mklev && !strcmp(s, "Elbereth")) + if (!g.in_mklev && !strcmp(s, "Elbereth")) exercise(A_WIS, TRUE); ep->engr_time = e_time; ep->engr_type = e_type > 0 ? e_type : rnd(N_ENGRAVE - 1); @@ -490,7 +490,7 @@ doengrave() char *writer; g.multi = 0; /* moves consumed */ - nomovemsg = (char *) 0; /* occupation end message */ + g.nomovemsg = (char *) 0; /* occupation end message */ buf[0] = (char) 0; ebuf[0] = (char) 0; @@ -1066,12 +1066,12 @@ doengrave() default: g.multi = -(len / 10); if (g.multi) - nomovemsg = "You finish your weird engraving."; + g.nomovemsg = "You finish your weird engraving."; break; case DUST: g.multi = -(len / 10); if (g.multi) - nomovemsg = "You finish writing in the dust."; + g.nomovemsg = "You finish writing in the dust."; break; case HEADSTONE: case ENGRAVE: @@ -1098,12 +1098,12 @@ doengrave() g.multi = -len; } if (g.multi) - nomovemsg = "You finish engraving."; + g.nomovemsg = "You finish engraving."; break; case BURN: g.multi = -(len / 10); if (g.multi) - nomovemsg = is_ice(u.ux, u.uy) + g.nomovemsg = is_ice(u.ux, u.uy) ? "You finish melting your message into the ice." : "You finish burning your message into the floor."; break; @@ -1121,12 +1121,12 @@ doengrave() otmp->spe -= 1; /* Prevent infinite graffiti */ } if (g.multi) - nomovemsg = "You finish defacing the dungeon."; + g.nomovemsg = "You finish defacing the dungeon."; break; case ENGR_BLOOD: g.multi = -(len / 10); if (g.multi) - nomovemsg = "You finish scrawling."; + g.nomovemsg = "You finish scrawling."; break; } @@ -1138,7 +1138,7 @@ doengrave() if (!maxelen && *sp) { *sp = '\0'; if (g.multi) - nomovemsg = "You cannot write any more."; + g.nomovemsg = "You cannot write any more."; You("are only able to write \"%s\".", ebuf); } } diff --git a/src/extralev.c b/src/extralev.c index cd33dded5..8464631a2 100644 --- a/src/extralev.c +++ b/src/extralev.c @@ -249,7 +249,7 @@ makeroguerooms() int lowx, lowy, hix, hiy; g.r[x][y].nroom = g.nroom; - smeq[g.nroom] = g.nroom; + g.smeq[g.nroom] = g.nroom; lowx = 1 + 26 * x + here.rlx; lowy = 7 * y + here.rly; diff --git a/src/files.c b/src/files.c index 28e805971..0da34755c 100644 --- a/src/files.c +++ b/src/files.c @@ -738,7 +738,7 @@ d_level *lev; in the quest branch, skipping the boneid character 'Q' and the first letter of the role's filecode; bones loading still worked because the bonesid used for validation had the same error */ - Sprintf(dptr, "%c%s", dungeons[lev->dnum].boneid, + Sprintf(dptr, "%c%s", g.dungeons[lev->dnum].boneid, In_quest(lev) ? urole.filecode : "0"); if ((sptr = Is_special(lev)) != 0) Sprintf(eos(dptr), ".%c", sptr->boneid); @@ -896,14 +896,14 @@ compress_bonesfile() /* ---------- BEGIN SAVE FILE HANDLING ----------- */ -/* set savefile name in OS-dependent manner from pre-existing plname, +/* set savefile name in OS-dependent manner from pre-existing g.plname, * avoiding troublesome characters */ void set_savefile_name(regularize_it) boolean regularize_it; { #ifdef VMS - Sprintf(SAVEF, "[.save]%d%s", getuid(), plname); + Sprintf(SAVEF, "[.save]%d%s", getuid(), g.plname); if (regularize_it) regularize(SAVEF + 7); Strcat(SAVEF, ";1"); @@ -916,10 +916,10 @@ boolean regularize_it; { int i = strlen(SAVEP); #ifdef AMIGA - /* plname has to share space with SAVEP and ".sav" */ - (void) strncat(SAVEF, plname, FILENAME - i - 4); + /* g.plname has to share space with SAVEP and ".sav" */ + (void) strncat(SAVEF, g.plname, FILENAME - i - 4); #else - (void) strncat(SAVEF, plname, 8); + (void) strncat(SAVEF, g.plname, 8); #endif if (regularize_it) regularize(SAVEF + i); @@ -935,14 +935,14 @@ boolean regularize_it; /* Obtain the name of the logged on user and incorporate * it into the name. */ - Sprintf(fnamebuf, "%s-%s", get_username(0), plname); + Sprintf(fnamebuf, "%s-%s", get_username(0), g.plname); if (regularize_it) ++legal; /* skip '*' wildcard character */ (void) fname_encode(legal, '%', fnamebuf, encodedfnamebuf, BUFSZ); Sprintf(SAVEF, "%s%s", encodedfnamebuf, SAVE_EXTENSION); } #else /* not VMS or MICRO or WIN32 */ - Sprintf(SAVEF, "save/%d%s", (int) getuid(), plname); + Sprintf(SAVEF, "save/%d%s", (int) getuid(), g.plname); if (regularize_it) regularize(SAVEF + 5); /* avoid . or / in name */ #endif /* WIN32 */ @@ -1130,7 +1130,7 @@ get_saved_games() char *foundfile; const char *fq_save; - Strcpy(plname, "*"); + Strcpy(g.plname, "*"); set_savefile_name(FALSE); #if defined(ZLIB_COMP) Strcat(SAVEF, COMPRESS_EXTENSION); @@ -1200,7 +1200,7 @@ get_saved_games() } #endif #ifdef VMS - Strcpy(plname, "*"); + Strcpy(g.plname, "*"); set_savefile_name(FALSE); j = vms_get_saved_games(SAVEF, &result); #endif /* VMS */ @@ -2359,7 +2359,7 @@ char *origbuf; #endif /*NOCWD_ASSUMPTIONS*/ } else if (match_varname(buf, "NAME", 4)) { - (void) strncpy(plname, bufp, PL_NSIZ - 1); + (void) strncpy(g.plname, bufp, PL_NSIZ - 1); } else if (match_varname(buf, "ROLE", 4) || match_varname(buf, "CHARACTER", 4)) { if ((len = str2role(bufp)) >= 0) @@ -3540,7 +3540,7 @@ const char *reason; /* explanation */ if (lfile) { #ifdef PANICLOG_FMT2 (void) fprintf(lfile, "%ld %s: %s %s\n", - ubirthday, (plname ? plname : "(none)"), + ubirthday, (g.plname ? g.plname : "(none)"), type, reason); #else time_t now = getnow(); diff --git a/src/hack.c b/src/hack.c index 0547544a6..b5c6998ab 100644 --- a/src/hack.c +++ b/src/hack.c @@ -681,7 +681,7 @@ invocation_pos(x, y) xchar x, y; { return (boolean) (Invocation_lev(&u.uz) - && x == inv_pos.x && y == inv_pos.y); + && x == g.inv_pos.x && y == g.inv_pos.y); } /* return TRUE if (dx,dy) is an OK place to move @@ -1863,7 +1863,7 @@ domove() if (cause_delay) { nomul(-2); g.multi_reason = "dragging an iron ball"; - nomovemsg = ""; + g.nomovemsg = ""; } if (context.run && flags.runmode != RUN_TPORT) { @@ -2418,10 +2418,10 @@ register boolean newlev; struct monst *oracle = monstinroom(&mons[PM_ORACLE], roomno); if (oracle) { if (!oracle->mpeaceful) - verbalize("You're in Delphi, %s.", plname); + verbalize("You're in Delphi, %s.", g.plname); else verbalize("%s, %s, welcome to Delphi!", - Hello((struct monst *) 0), plname); + Hello((struct monst *) 0), g.plname); } else msg_given = FALSE; break; @@ -2565,7 +2565,7 @@ dopickup(VOID_ARGS) int count, tmpcount, ret; /* awful kludge to work around parse()'s pre-decrement */ - count = (g.multi || (save_cm && *save_cm == cmd_from_func(dopickup))) ? g.multi + 1 : 0; + count = (g.multi || (g.save_cm && *g.save_cm == cmd_from_func(dopickup))) ? g.multi + 1 : 0; g.multi = 0; /* always reset */ if ((ret = pickup_checks() >= 0)) @@ -2824,12 +2824,12 @@ const char *msg_override; { g.multi = 0; /* caller will usually have done this already */ if (msg_override) - nomovemsg = msg_override; - else if (!nomovemsg) - nomovemsg = You_can_move_again; - if (*nomovemsg) - pline("%s", nomovemsg); - nomovemsg = 0; + g.nomovemsg = msg_override; + else if (!g.nomovemsg) + g.nomovemsg = You_can_move_again; + if (*g.nomovemsg) + pline("%s", g.nomovemsg); + g.nomovemsg = 0; u.usleep = 0; g.multi_reason = NULL; if (g.afternmv) { diff --git a/src/invent.c b/src/invent.c index 1608a0bb8..3785beb59 100644 --- a/src/invent.c +++ b/src/invent.c @@ -3244,10 +3244,10 @@ char *buf; align_str(Amask2align(lev->altarmask & ~AM_SHRINE))); dfeature = altbuf; } else if ((x == xupstair && y == yupstair) - || (x == sstairs.sx && y == sstairs.sy && sstairs.up)) + || (x == g.sstairs.sx && y == g.sstairs.sy && g.sstairs.up)) cmap = S_upstair; /* "staircase up" */ else if ((x == xdnstair && y == ydnstair) - || (x == sstairs.sx && y == sstairs.sy && !sstairs.up)) + || (x == g.sstairs.sx && y == g.sstairs.sy && !g.sstairs.up)) cmap = S_dnstair; /* "staircase down" */ else if (x == xupladder && y == yupladder) cmap = S_upladder; /* "ladder up" */ diff --git a/src/mail.c b/src/mail.c index b3f8e97c6..b2a119750 100644 --- a/src/mail.c +++ b/src/mail.c @@ -169,9 +169,9 @@ coord *startp; startp->y = upstair.sy; return TRUE; } - if (couldsee(dnstair.sx, dnstair.sy)) { - startp->x = dnstair.sx; - startp->y = dnstair.sy; + if (couldsee(g.dnstair.sx, g.dnstair.sy)) { + startp->x = g.dnstair.sx; + startp->y = g.dnstair.sy; return TRUE; } @@ -403,7 +403,7 @@ struct mail_info *info; goto go_back; message_seen = TRUE; - verbalize("%s, %s! %s.", Hello(md), plname, info->display_txt); + verbalize("%s, %s! %s.", Hello(md), g.plname, info->display_txt); if (info->message_typ) { struct obj *obj = mksobj(SCR_MAIL, FALSE, FALSE); diff --git a/src/makemon.c b/src/makemon.c index 02c0e36a3..26ebe148b 100644 --- a/src/makemon.c +++ b/src/makemon.c @@ -251,7 +251,7 @@ register struct monst *mtmp; break; } if (mm == PM_ELVENKING) { - if (rn2(3) || (in_mklev && Is_earthlevel(&u.uz))) + if (rn2(3) || (g.in_mklev && Is_earthlevel(&u.uz))) (void) mongets(mtmp, PICK_AXE); if (!rn2(50)) (void) mongets(mtmp, CRYSTAL_BALL); @@ -708,7 +708,7 @@ register struct monst *mtmp; break; case S_GIANT: if (ptr == &mons[PM_MINOTAUR]) { - if (!rn2(3) || (in_mklev && Is_earthlevel(&u.uz))) + if (!rn2(3) || (g.in_mklev && Is_earthlevel(&u.uz))) (void) mongets(mtmp, WAN_DIGGING); } else if (is_giant(ptr)) { for (cnt = rn2((int) (mtmp->m_lev / 2)); cnt; cnt--) { @@ -778,7 +778,7 @@ register struct monst *mtmp; } break; case S_GNOME: - if (!rn2((In_mines(&u.uz) && in_mklev) ? 20 : 60)) { + if (!rn2((In_mines(&u.uz) && g.in_mklev) ? 20 : 60)) { otmp = mksobj(rn2(4) ? TALLOW_CANDLE : WAX_CANDLE, TRUE, FALSE); otmp->quan = 1; otmp->owt = weight(otmp); @@ -1039,7 +1039,7 @@ coord *cc; do { nx = rn1(COLNO - 3, 2); ny = rn2(ROWNO); - good = (!in_mklev && cansee(nx,ny)) ? FALSE + good = (!g.in_mklev && cansee(nx,ny)) ? FALSE : goodpos(nx, ny, mon, gpflags); } while ((++tryct < 50) && !good); @@ -1050,7 +1050,7 @@ coord *cc; int xofs = nx; int yofs = ny; int dx,dy; - int bl = (in_mklev || Blind) ? 1 : 0; + int bl = (g.in_mklev || Blind) ? 1 : 0; for ( ; bl < 2; bl++) { for (dx = 0; dx < COLNO; dx++) @@ -1065,18 +1065,18 @@ coord *cc; if (bl == 0 && (!mon || mon->data->mmove)) { /* all map positions are visible (or not good), try to pick something logical */ - if (dnstair.sx && !rn2(2)) { - nx = dnstair.sx; - ny = dnstair.sy; - } else if (upstair.sx && !rn2(2)) { - nx = upstair.sx; - ny = upstair.sy; - } else if (dnladder.sx && !rn2(2)) { - nx = dnladder.sx; - ny = dnladder.sy; - } else if (upladder.sx && !rn2(2)) { - nx = upladder.sx; - ny = upladder.sy; + if (g.dnstair.sx && !rn2(2)) { + nx = g.dnstair.sx; + ny = g.dnstair.sy; + } else if (g.upstair.sx && !rn2(2)) { + nx = g.upstair.sx; + ny = g.upstair.sy; + } else if (g.dnladder.sx && !rn2(2)) { + nx = g.dnladder.sx; + ny = g.dnladder.sy; + } else if (g.upladder.sx && !rn2(2)) { + nx = g.upladder.sx; + ny = g.upladder.sy; } if (goodpos(nx, ny, mon, gpflags)) goto gotgood; @@ -1094,7 +1094,7 @@ coord *cc; /* * called with [x,y] = coordinates; * [0,0] means anyplace - * [u.ux,u.uy] means: near player (if !in_mklev) + * [u.ux,u.uy] means: near player (if !g.in_mklev) * * In case we make a monster group, only return the one at [x,y]. */ @@ -1124,7 +1124,7 @@ int mmflags; return (struct monst *) 0; x = cc.x; y = cc.y; - } else if (byyou && !in_mklev) { + } else if (byyou && !g.in_mklev) { coord bypos; if (enexto_core(&bypos, u.ux, u.uy, ptr, gpflags)) { @@ -1202,7 +1202,7 @@ int mmflags; mtmp->m_id = context.ident++; /* ident overflowed */ set_mon_data(mtmp, ptr, 0); if (ptr->msound == MS_LEADER && quest_info(MS_LEADER) == mndx) - quest_status.leader_m_id = mtmp->m_id; + g.quest_status.leader_m_id = mtmp->m_id; mtmp->mnum = mndx; /* set up level and hit points */ @@ -1216,9 +1216,9 @@ int mmflags; but for ones which can be random, it has already been chosen (in role_init(), for possible use by the quest pager code) */ else if (ptr->msound == MS_LEADER && quest_info(MS_LEADER) == mndx) - mtmp->female = quest_status.ldrgend; + mtmp->female = g.quest_status.ldrgend; else if (ptr->msound == MS_NEMESIS && quest_info(MS_NEMESIS) == mndx) - mtmp->female = quest_status.nemgend; + mtmp->female = g.quest_status.nemgend; else mtmp->female = rn2(2); /* ignored for neuters */ @@ -1238,7 +1238,7 @@ int mmflags; break; case S_SPIDER: case S_SNAKE: - if (in_mklev) + if (g.in_mklev) if (x && y) (void) mkobj_at(0, x, y, TRUE); (void) hideunder(mtmp); @@ -1315,7 +1315,7 @@ int mmflags; if (mitem && allow_minvent) (void) mongets(mtmp, mitem); - if (in_mklev) { + if (g.in_mklev) { if ((is_ndemon(ptr) || mndx == PM_WUMPUS || mndx == PM_LONG_WORM || mndx == PM_GIANT_EEL) && !u.uhave.amulet && rn2(5)) @@ -1406,7 +1406,7 @@ int mmflags; if (allow_minvent && migrating_objs) deliver_obj_to_mon(mtmp, 1, DF_NONE); /* in case of waiting items */ - if (!in_mklev) + if (!g.in_mklev) newsym(mtmp->mx, mtmp->my); /* make sure the mon shows up */ return mtmp; @@ -1491,7 +1491,7 @@ register struct permonst *ptr; lev = Is_special(&u.uz); oldmoves = moves; } - switch ((lev) ? lev->flags.align : dungeons[u.uz.dnum].flags.align) { + switch ((lev) ? lev->flags.align : g.dungeons[u.uz.dnum].flags.align) { default: /* just in case */ case AM_NONE: alshift = 0; diff --git a/src/mcastu.c b/src/mcastu.c index 5240eb195..c234b4ff5 100644 --- a/src/mcastu.c +++ b/src/mcastu.c @@ -673,7 +673,7 @@ int spellnum; nomul(-dmg); g.multi_reason = "paralyzed by a monster"; } - nomovemsg = 0; + g.nomovemsg = 0; dmg = 0; break; case CLC_CONFUSE_YOU: @@ -855,7 +855,7 @@ register struct attack *mattk; pline("%s zaps you with a %s!", Monnam(mtmp), flash_types[ad_to_typ(mattk->adtyp)]); buzz(-ad_to_typ(mattk->adtyp), (int) mattk->damn, mtmp->mx, - mtmp->my, sgn(tbx), sgn(tby)); + mtmp->my, sgn(g.tbx), sgn(g.tby)); } else impossible("Monster spell %d cast", mattk->adtyp - 1); } diff --git a/src/mhitu.c b/src/mhitu.c index d795962a5..8e27a46d6 100644 --- a/src/mhitu.c +++ b/src/mhitu.c @@ -487,11 +487,11 @@ register struct monst *mtmp; || u.umonnum == PM_TRAPPER) pline( "Wait, %s! There's a hidden %s named %s there!", - m_monnam(mtmp), youmonst.data->mname, plname); + m_monnam(mtmp), youmonst.data->mname, g.plname); else pline( "Wait, %s! There's a %s named %s hiding under %s!", - m_monnam(mtmp), youmonst.data->mname, plname, + m_monnam(mtmp), youmonst.data->mname, g.plname, doname(level.objects[u.ux][u.uy])); if (obj) obj->spe = save_spe; @@ -514,7 +514,7 @@ register struct monst *mtmp; pline("It gets stuck on you."); else /* see note about m_monnam() above */ pline("Wait, %s! That's a %s named %s!", m_monnam(mtmp), - youmonst.data->mname, plname); + youmonst.data->mname, g.plname); if (sticky) u.ustuck = mtmp; youmonst.m_ap_type = M_AP_NOTHING; @@ -536,7 +536,7 @@ register struct monst *mtmp; else /* see note about m_monnam() above */ pline("Wait, %s! That %s is really %s named %s!", m_monnam(mtmp), mimic_obj_name(&youmonst), an(mons[u.umonnum].mname), - plname); + g.plname); if (g.multi < 0) { /* this should always be the case */ char buf[BUFSZ]; @@ -781,7 +781,7 @@ register struct monst *mtmp; if (sum[i] == 1) { /* successful attack */ if (u.usleep && u.usleep < monstermoves && !rn2(10)) { g.multi = -1; - nomovemsg = "The combat suddenly awakens you."; + g.nomovemsg = "The combat suddenly awakens you."; } } if (sum[i] == 2) @@ -1165,7 +1165,7 @@ register struct attack *mattk; You("are frozen!"); else You("are frozen by %s!", mon_nam(mtmp)); - nomovemsg = You_can_move_again; + g.nomovemsg = You_can_move_again; nomul(-rnd(10)); g.multi_reason = "paralyzed by a monster"; exercise(A_DEX, FALSE); @@ -2138,7 +2138,7 @@ struct attack *mattk; } if (useeit) pline("%s is turned to stone!", Monnam(mtmp)); - stoned = TRUE; + g.stoned = TRUE; killed(mtmp); if (!DEADMONSTER(mtmp)) @@ -2775,7 +2775,7 @@ struct attack *mattk; return 1; } pline("%s turns to stone!", Monnam(mtmp)); - stoned = 1; + g.stoned = 1; xkilled(mtmp, XKILL_NOMSG); if (!DEADMONSTER(mtmp)) return 1; @@ -2909,7 +2909,7 @@ cloneu() if (!mon) return NULL; mon->mcloned = 1; - mon = christen_monst(mon, plname); + mon = christen_monst(mon, g.plname); initedog(mon); mon->m_lev = youmonst.data->mlevel; mon->mhpmax = u.mhmax; diff --git a/src/mklev.c b/src/mklev.c index 093e9f702..f78ff961b 100644 --- a/src/mklev.c +++ b/src/mklev.c @@ -144,11 +144,11 @@ boolean is_room; croom->hy = hiy; croom->rtype = rtype; croom->doorct = 0; - /* if we're not making a vault, doorindex will still be 0 + /* if we're not making a vault, g.doorindex will still be 0 * if we are, we'll have problems adding niches to the previous room - * unless fdoor is at least doorindex + * unless fdoor is at least g.doorindex */ - croom->fdoor = doorindex; + croom->fdoor = g.doorindex; croom->irregular = FALSE; croom->nsubrooms = 0; @@ -253,7 +253,7 @@ boolean nxcor; /* find positions cc and tt for doors in croom and troom and direction for a corridor between them */ - if (troom->hx < 0 || croom->hx < 0 || doorindex >= DOORMAX) + if (troom->hx < 0 || croom->hx < 0 || g.doorindex >= DOORMAX) return; if (troom->lx > croom->hx) { dx = 1; @@ -306,10 +306,10 @@ boolean nxcor; if (okdoor(tt.x, tt.y) || !nxcor) dodoor(tt.x, tt.y, troom); - if (smeq[a] < smeq[b]) - smeq[b] = smeq[a]; + if (g.smeq[a] < g.smeq[b]) + g.smeq[b] = g.smeq[a]; else - smeq[a] = smeq[b]; + g.smeq[a] = g.smeq[b]; } void @@ -324,12 +324,12 @@ makecorridors() break; /* allow some randomness */ } for (a = 0; a < g.nroom - 2; a++) - if (smeq[a] != smeq[a + 2]) + if (g.smeq[a] != g.smeq[a + 2]) join(a, a + 2, FALSE); for (a = 0; any && a < g.nroom; a++) { any = FALSE; for (b = 0; b < g.nroom; b++) - if (smeq[a] != smeq[b]) { + if (g.smeq[a] != g.smeq[b]) { join(a, b, FALSE); any = TRUE; } @@ -354,11 +354,11 @@ register struct mkroom *aroom; int i; if (aroom->doorct == 0) - aroom->fdoor = doorindex; + aroom->fdoor = g.doorindex; aroom->doorct++; - for (tmp = doorindex; tmp > aroom->fdoor; tmp--) + for (tmp = g.doorindex; tmp > aroom->fdoor; tmp--) doors[tmp] = doors[tmp - 1]; for (i = 0; i < g.nroom; i++) { @@ -372,7 +372,7 @@ register struct mkroom *aroom; broom->fdoor++; } - doorindex++; + g.doorindex++; doors[aroom->fdoor].x = x; doors[aroom->fdoor].y = y; } @@ -487,7 +487,7 @@ int trap_type; int dy, xx, yy; struct trap *ttmp; - if (doorindex < DOORMAX) { + if (g.doorindex < DOORMAX) { while (vct--) { aroom = &rooms[rn2(g.nroom)]; if (aroom->rtype != OROOM) @@ -628,11 +628,11 @@ clear_level_structures() rooms[0].hx = -1; g.nsubroom = 0; subrooms[0].hx = -1; - doorindex = 0; + g.doorindex = 0; init_rect(); init_vault(); xdnstair = ydnstair = xupstair = yupstair = 0; - sstairs.sx = sstairs.sy = 0; + g.sstairs.sx = g.sstairs.sy = 0; xdnladder = ydnladder = xupladder = yupladder = 0; g.made_branch = FALSE; clear_regions(); @@ -660,7 +660,7 @@ makelevel() if (slev && !Is_rogue_level(&u.uz)) { makemaz(slev->proto); return; - } else if (dungeons[u.uz.dnum].proto[0]) { + } else if (g.dungeons[u.uz.dnum].proto[0]) { makemaz(""); return; } else if (In_mines(&u.uz)) { @@ -984,11 +984,11 @@ mklev() if (getbones()) return; - in_mklev = TRUE; + g.in_mklev = TRUE; makelevel(); bound_digging(); mineralize(-1, -1, -1, -1, FALSE); - in_mklev = FALSE; + g.in_mklev = FALSE; /* has_morgue gets cleared once morgue is entered; graveyard stays set (graveyard might already be set even when has_morgue is clear [see fixup_special()], so don't update it unconditionally) */ @@ -1161,14 +1161,14 @@ xchar x, y; /* location */ if (br->type == BR_PORTAL) { mkportal(x, y, dest->dnum, dest->dlevel); } else if (make_stairs) { - sstairs.sx = x; - sstairs.sy = y; - sstairs.up = + g.sstairs.sx = x; + g.sstairs.sy = y; + g.sstairs.up = (char) on_level(&br->end1, &u.uz) ? br->end1_up : !br->end1_up; - assign_level(&sstairs.tolev, dest); + assign_level(&g.sstairs.tolev, dest); sstairs_room = br_room; - levl[x][y].ladder = sstairs.up ? LA_UP : LA_DOWN; + levl[x][y].ladder = g.sstairs.up ? LA_UP : LA_DOWN; levl[x][y].typ = STAIRS; } /* @@ -1217,7 +1217,7 @@ xchar x, y; boolean near_door = bydoor(x, y); return ((levl[x][y].typ == HWALL || levl[x][y].typ == VWALL) - && doorindex < DOORMAX && !near_door); + && g.doorindex < DOORMAX && !near_door); } void @@ -1225,7 +1225,7 @@ dodoor(x, y, aroom) int x, y; struct mkroom *aroom; { - if (doorindex >= DOORMAX) { + if (g.doorindex >= DOORMAX) { impossible("DOORMAX exceeded?"); return; } @@ -1661,8 +1661,8 @@ struct mkroom *croom; /* * Major level transmutation: add a set of stairs (to the Sanctum) after - * an earthquake that leaves behind a a new topology, centered at inv_pos. - * Assumes there are no rooms within the invocation area and that inv_pos + * an earthquake that leaves behind a a new topology, centered at g.inv_pos. + * Assumes there are no rooms within the invocation area and that g.inv_pos * is not too close to the edge of the map. Also assume the hero can see, * which is guaranteed for normal play due to the fact that sight is needed * to read the Book of the Dead. @@ -1671,8 +1671,8 @@ void mkinvokearea() { int dist; - xchar xmin = inv_pos.x, xmax = inv_pos.x; - xchar ymin = inv_pos.y, ymax = inv_pos.y; + xchar xmin = g.inv_pos.x, xmax = g.inv_pos.x; + xchar ymin = g.inv_pos.y, ymax = g.inv_pos.y; register xchar i; pline_The("floor shakes violently under you!"); diff --git a/src/mkmaze.c b/src/mkmaze.c index 5903b8463..ba4f648ca 100644 --- a/src/mkmaze.c +++ b/src/mkmaze.c @@ -503,24 +503,24 @@ fixup_special() case LR_DOWNTELE: /* save the region outlines for goto_level() */ if (r->rtype == LR_TELE || r->rtype == LR_UPTELE) { - updest.lx = r->inarea.x1; - updest.ly = r->inarea.y1; - updest.hx = r->inarea.x2; - updest.hy = r->inarea.y2; - updest.nlx = r->delarea.x1; - updest.nly = r->delarea.y1; - updest.nhx = r->delarea.x2; - updest.nhy = r->delarea.y2; + g.updest.lx = r->inarea.x1; + g.updest.ly = r->inarea.y1; + g.updest.hx = r->inarea.x2; + g.updest.hy = r->inarea.y2; + g.updest.nlx = r->delarea.x1; + g.updest.nly = r->delarea.y1; + g.updest.nhx = r->delarea.x2; + g.updest.nhy = r->delarea.y2; } if (r->rtype == LR_TELE || r->rtype == LR_DOWNTELE) { - dndest.lx = r->inarea.x1; - dndest.ly = r->inarea.y1; - dndest.hx = r->inarea.x2; - dndest.hy = r->inarea.y2; - dndest.nlx = r->delarea.x1; - dndest.nly = r->delarea.y1; - dndest.nhx = r->delarea.x2; - dndest.nhy = r->delarea.y2; + g.dndest.lx = r->inarea.x1; + g.dndest.ly = r->inarea.y1; + g.dndest.hx = r->inarea.x2; + g.dndest.hy = r->inarea.y2; + g.dndest.nlx = r->delarea.x1; + g.dndest.nly = r->delarea.y1; + g.dndest.nhx = r->delarea.x2; + g.dndest.nhy = r->delarea.y2; } /* place_lregion gets called from goto_level() */ break; @@ -606,7 +606,7 @@ fixup_special() } else if (on_level(&u.uz, &baalzebub_level)) { /* custom wallify the "beetle" potion of the level */ baalz_fixup(); - } else if (u.uz.dnum == mines_dnum && ransacked) { + } else if (u.uz.dnum == mines_dnum && g.ransacked) { stolen_booty(); } @@ -620,7 +620,7 @@ check_ransacked(s) char *s; { /* this kludge only works as long as orctown is minetn-1 */ - ransacked = (u.uz.dnum == mines_dnum && !strcmp(s, "minetn-1")); + g.ransacked = (u.uz.dnum == mines_dnum && !strcmp(s, "minetn-1")); } #define ORC_LEADER 1 @@ -636,7 +636,7 @@ unsigned long mflags; cur_depth = (int) depth(&u.uz); max_depth = dunlevs_in_dungeon(&u.uz) - + (dungeons[u.uz.dnum].depth_start - 1); + + (g.dungeons[u.uz.dnum].depth_start - 1); if (mflags == ORC_LEADER) { /* Note that the orc leader will take possession of any * remaining stuff not already delivered to other @@ -797,7 +797,7 @@ stolen_booty(VOID_ARGS) migrate_orc(mtmp, 0UL); } } - ransacked = 0; + g.ransacked = 0; } #undef ORC_LEADER @@ -963,19 +963,19 @@ const char *s; Sprintf(protofile, "%s-%d", s, rnd((int) sp->rndlevs)); else Strcpy(protofile, s); - } else if (*(dungeons[u.uz.dnum].proto)) { + } else if (*(g.dungeons[u.uz.dnum].proto)) { if (dunlevs_in_dungeon(&u.uz) > 1) { if (sp && sp->rndlevs) - Sprintf(protofile, "%s%d-%d", dungeons[u.uz.dnum].proto, + Sprintf(protofile, "%s%d-%d", g.dungeons[u.uz.dnum].proto, dunlev(&u.uz), rnd((int) sp->rndlevs)); else - Sprintf(protofile, "%s%d", dungeons[u.uz.dnum].proto, + Sprintf(protofile, "%s%d", g.dungeons[u.uz.dnum].proto, dunlev(&u.uz)); } else if (sp && sp->rndlevs) { - Sprintf(protofile, "%s-%d", dungeons[u.uz.dnum].proto, + Sprintf(protofile, "%s-%d", g.dungeons[u.uz.dnum].proto, rnd((int) sp->rndlevs)); } else - Strcpy(protofile, dungeons[u.uz.dnum].proto); + Strcpy(protofile, g.dungeons[u.uz.dnum].proto); } else Strcpy(protofile, ""); @@ -1054,10 +1054,10 @@ const char *s; if (x_range <= INVPOS_X_MARGIN || y_range <= INVPOS_Y_MARGIN || (x_range * y_range) <= (INVPOS_DISTANCE * INVPOS_DISTANCE)) { - debugpline2("inv_pos: maze is too small! (%d x %d)", + debugpline2("g.inv_pos: maze is too small! (%d x %d)", g.x_maze_max, g.y_maze_max); } - inv_pos.x = inv_pos.y = 0; /*{occupied() => invocation_pos()}*/ + g.inv_pos.x = g.inv_pos.y = 0; /*{occupied() => invocation_pos()}*/ do { x = rn1(x_range, x_maze_min + INVPOS_X_MARGIN + 1); y = rn1(y_range, y_maze_min + INVPOS_Y_MARGIN + 1); @@ -1067,9 +1067,9 @@ const char *s; || abs(x - xupstair) == abs(y - yupstair) || distmin(x, y, xupstair, yupstair) <= INVPOS_DISTANCE || !SPACE_POS(levl[x][y].typ) || occupied(x, y)); - inv_pos.x = x; - inv_pos.y = y; - maketrap(inv_pos.x, inv_pos.y, VIBRATING_SQUARE); + g.inv_pos.x = x; + g.inv_pos.y = y; + maketrap(g.inv_pos.x, g.inv_pos.y, VIBRATING_SQUARE); #undef INVPOS_X_MARGIN #undef INVPOS_Y_MARGIN #undef INVPOS_DISTANCE @@ -1335,7 +1335,7 @@ xchar x, y, todnum, todlevel; return; } debugpline4("mkportal: at <%d,%d>, to %s, level %d", x, y, - dungeons[todnum].dname, todlevel); + g.dungeons[todnum].dname, todlevel); ttmp->dst.dnum = todnum; ttmp->dst.dlevel = todlevel; return; diff --git a/src/mkobj.c b/src/mkobj.c index 5c0ac2a12..fa3d857c1 100644 --- a/src/mkobj.c +++ b/src/mkobj.c @@ -292,7 +292,7 @@ struct obj *box; case SACK: case OILSKIN_SACK: /* initial inventory: sack starts out empty */ - if (moves <= 1 && !in_mklev) { + if (moves <= 1 && !g.in_mklev) { n = 0; break; } @@ -1168,7 +1168,7 @@ struct obj *body; return; action = ROT_CORPSE; /* default action: rot away */ - rot_adjust = in_mklev ? 25 : 10; /* give some variation */ + rot_adjust = g.in_mklev ? 25 : 10; /* give some variation */ corpse_age = monstermoves - body->age; if (corpse_age > ROT_AGE) when = rot_adjust; diff --git a/src/mkroom.c b/src/mkroom.c index d3fbea694..43b5f503c 100644 --- a/src/mkroom.c +++ b/src/mkroom.c @@ -617,7 +617,7 @@ register struct mkroom *sroom; { if (sroom == dnstairs_room) return TRUE; - if (sstairs.sx && !sstairs.up) + if (g.sstairs.sx && !g.sstairs.up) return (boolean) (sroom == sstairs_room); return FALSE; } @@ -628,7 +628,7 @@ register struct mkroom *sroom; { if (sroom == upstairs_room) return TRUE; - if (sstairs.sx && sstairs.up) + if (g.sstairs.sx && g.sstairs.up) return (boolean) (sroom == sstairs_room); return FALSE; } diff --git a/src/mon.c b/src/mon.c index ad000602e..2952589e7 100644 --- a/src/mon.c +++ b/src/mon.c @@ -279,7 +279,7 @@ int mndx; || is_reviver((mon)->data) \ /* normally quest leader will be unique, */ \ /* but he or she might have been polymorphed */ \ - || (mon)->m_id == quest_status.leader_m_id \ + || (mon)->m_id == g.quest_status.leader_m_id \ /* special cancellation handling for these */ \ || (dmgtype((mon)->data, AD_SEDU) || dmgtype((mon)->data, AD_SSEX))) @@ -2008,8 +2008,8 @@ register struct monst *mtmp; mvitals[tmp].died++; /* if it's a (possibly polymorphed) quest leader, mark him as dead */ - if (mtmp->m_id == quest_status.leader_m_id) - quest_status.leader_is_dead = TRUE; + if (mtmp->m_id == g.quest_status.leader_m_id) + g.quest_status.leader_is_dead = TRUE; #ifdef MAIL /* if the mail daemon dies, no more mail delivery. -3. */ if (tmp == PM_MAIL_DAEMON) @@ -2351,7 +2351,7 @@ int xkill_flags; /* 1: suppress message, 2: suppress corpse, 4: pacifist */ g.vamp_rise_msg = FALSE; /* might get set in mondead(); only checked below */ g.disintegested = nocorpse; /* alternate vamp_rise message needed if true */ /* dispose of monster and make cadaver */ - if (stoned) + if (g.stoned) monstone(mtmp); else mondead(mtmp); @@ -2362,7 +2362,7 @@ int xkill_flags; /* 1: suppress message, 2: suppress corpse, 4: pacifist */ * lifesaved_monster() since the message appears only when _you_ * kill it (as opposed to visible lifesaving which always appears). */ - stoned = FALSE; + g.stoned = FALSE; if (!cansee(x, y) && !g.vamp_rise_msg) pline("Maybe not..."); return; @@ -2371,8 +2371,8 @@ int xkill_flags; /* 1: suppress message, 2: suppress corpse, 4: pacifist */ mdat = mtmp->data; /* note: mondead can change mtmp->data */ mndx = monsndx(mdat); - if (stoned) { - stoned = FALSE; + if (g.stoned) { + g.stoned = FALSE; goto cleanup; } @@ -2448,7 +2448,7 @@ cleanup: newexplevel(); /* will decide if you go up */ /* adjust alignment points */ - if (mtmp->m_id == quest_status.leader_m_id) { /* REAL BAD! */ + if (mtmp->m_id == g.quest_status.leader_m_id) { /* REAL BAD! */ adjalign(-(u.ualign.record + (int) ALIGNLIM / 2)); pline("That was %sa bad idea...", u.uevent.qcompleted ? "probably " : ""); @@ -2594,7 +2594,7 @@ struct monst *mtmp; if (!isok(mm.x, mm.y)) return; rloc_to(mtmp, mm.x, mm.y); - if (!in_mklev && (mtmp->mstrategy & STRAT_APPEARMSG)) { + if (!g.in_mklev && (mtmp->mstrategy & STRAT_APPEARMSG)) { mtmp->mstrategy &= ~STRAT_APPEARMSG; /* one chance only */ if (!couldspot && canspotmon(mtmp)) pline("%s suddenly %s!", Amonnam(mtmp), @@ -3223,7 +3223,7 @@ isspecmon(mon) struct monst *mon; { return (mon->isshk || mon->ispriest || mon->isgd - || mon->m_id == quest_status.leader_m_id); + || mon->m_id == g.quest_status.leader_m_id); } /* restrict certain special monsters (shopkeepers, aligned priests, diff --git a/src/mthrowu.c b/src/mthrowu.c index 595f614da..9d5583808 100644 --- a/src/mthrowu.c +++ b/src/mthrowu.c @@ -249,7 +249,7 @@ struct obj *otmp, *mwep; mtarg ? mtarg->my : mtmp->muy), multishot = monmulti(mtmp, otmp, mwep); /* - * Caller must have called linedup() to set up tbx, tby. + * Caller must have called linedup() to set up g.tbx, g.tby. */ if (canseemon(mtmp)) { @@ -266,33 +266,33 @@ struct obj *otmp, *mwep; onm = singular(otmp, xname); onm = obj_is_pname(otmp) ? the(onm) : an(onm); } - m_shot.s = ammo_and_launcher(otmp, mwep) ? TRUE : FALSE; + g.m_shot.s = ammo_and_launcher(otmp, mwep) ? TRUE : FALSE; Strcpy(trgbuf, mtarg ? mon_nam(mtarg) : ""); if (!strcmp(trgbuf, "it")) Strcpy(trgbuf, humanoid(mtmp->data) ? "someone" : something); pline("%s %s %s%s%s!", Monnam(mtmp), - m_shot.s ? "shoots" : "throws", onm, + g.m_shot.s ? "shoots" : "throws", onm, mtarg ? " at " : "", trgbuf); - m_shot.o = otmp->otyp; + g.m_shot.o = otmp->otyp; } else { - m_shot.o = STRANGE_OBJECT; /* don't give multishot feedback */ + g.m_shot.o = STRANGE_OBJECT; /* don't give multishot feedback */ } - m_shot.n = multishot; - for (m_shot.i = 1; m_shot.i <= m_shot.n; m_shot.i++) { - m_throw(mtmp, mtmp->mx, mtmp->my, sgn(tbx), sgn(tby), dm, otmp); + g.m_shot.n = multishot; + for (g.m_shot.i = 1; g.m_shot.i <= g.m_shot.n; g.m_shot.i++) { + m_throw(mtmp, mtmp->mx, mtmp->my, sgn(g.tbx), sgn(g.tby), dm, otmp); /* conceptually all N missiles are in flight at once, but if mtmp gets killed (shot kills adjacent gas spore and triggers explosion, perhaps), inventory will be dropped and otmp might go away via merging into another stack */ - if (DEADMONSTER(mtmp) && m_shot.i < m_shot.n) + if (DEADMONSTER(mtmp) && g.m_shot.i < g.m_shot.n) /* cancel pending shots (perhaps ought to give a message here since we gave one above about throwing/shooting N missiles) */ break; /* endmultishot(FALSE); */ } - /* reset 'm_shot' */ - m_shot.n = m_shot.i = 0; - m_shot.o = STRANGE_OBJECT; - m_shot.s = FALSE; + /* reset 'g.m_shot' */ + g.m_shot.n = g.m_shot.i = 0; + g.m_shot.o = STRANGE_OBJECT; + g.m_shot.s = FALSE; } /* an object launched by someone/thing other than player attacks a monster; @@ -653,7 +653,7 @@ struct obj *obj; /* missile (or stack providing it) */ if (!range /* reached end of path */ || MT_FLIGHTCHECK(FALSE)) { if (singleobj) { /* hits_bars might have destroyed it */ - if (m_shot.n > 1 + if (g.m_shot.n > 1 && (!mesg_given || bhitpos.x != u.ux || bhitpos.y != u.uy) && (cansee(bhitpos.x, bhitpos.y) || (archer && canseemon(archer)))) @@ -759,7 +759,7 @@ struct attack *mattk; if (canseemon(mtmp)) pline("%s spits venom!", Monnam(mtmp)); target = mtarg; - m_throw(mtmp, mtmp->mx, mtmp->my, sgn(tbx), sgn(tby), + m_throw(mtmp, mtmp->mx, mtmp->my, sgn(g.tbx), sgn(g.tby), distmin(mtmp->mx,mtmp->my,mtarg->mx,mtarg->my), otmp); target = (struct monst *)0; nomul(0); @@ -804,7 +804,7 @@ struct attack *mattk; if (canseemon(mtmp)) pline("%s breathes %s!", Monnam(mtmp), breathwep[typ - 1]); dobuzz((int) (-20 - (typ - 1)), (int) mattk->damn, - mtmp->mx, mtmp->my, sgn(tbx), sgn(tby), FALSE); + mtmp->mx, mtmp->my, sgn(g.tbx), sgn(g.tby), FALSE); nomul(0); /* breath runs out sometimes. Also, give monster some * cunning; don't breath if the target fell asleep. @@ -960,7 +960,7 @@ struct attack *mattk; - distmin(mtmp->mx, mtmp->my, mtmp->mux, mtmp->muy))) { if (canseemon(mtmp)) pline("%s spits venom!", Monnam(mtmp)); - m_throw(mtmp, mtmp->mx, mtmp->my, sgn(tbx), sgn(tby), + m_throw(mtmp, mtmp->mx, mtmp->my, sgn(g.tbx), sgn(g.tby), distmin(mtmp->mx, mtmp->my, mtmp->mux, mtmp->muy), otmp); nomul(0); return 0; @@ -997,7 +997,7 @@ struct attack *mattk; pline("%s breathes %s!", Monnam(mtmp), breathwep[typ - 1]); buzz((int) (-20 - (typ - 1)), (int) mattk->damn, mtmp->mx, - mtmp->my, sgn(tbx), sgn(tby)); + mtmp->my, sgn(g.tbx), sgn(g.tby)); nomul(0); /* breath runs out sometimes. Also, give monster some * cunning; don't breath if the player fell asleep. @@ -1021,16 +1021,16 @@ int boulderhandling; /* 0=block, 1=ignore, 2=conditionally block */ int dx, dy, boulderspots; /* These two values are set for use after successful return. */ - tbx = ax - bx; - tby = ay - by; + g.tbx = ax - bx; + g.tby = ay - by; /* sometimes displacement makes a monster think that you're at its own location; prevent it from throwing and zapping in that case */ - if (!tbx && !tby) + if (!g.tbx && !g.tby) return FALSE; - if ((!tbx || !tby || abs(tbx) == abs(tby)) /* straight line or diagonal */ - && distmin(tbx, tby, 0, 0) < BOLT_LIM) { + if ((!g.tbx || !g.tby || abs(g.tbx) == abs(g.tby)) /* straight line or diagonal */ + && distmin(g.tbx, g.tby, 0, 0) < BOLT_LIM) { if ((ax == u.ux && ay == u.uy) ? (boolean) couldsee(bx, by) : clear_path(ax, ay, bx, by)) return TRUE; diff --git a/src/muse.c b/src/muse.c index 8b3602ab3..0af94a71b 100644 --- a/src/muse.c +++ b/src/muse.c @@ -367,8 +367,8 @@ struct monst *mtmp; g.m.has_defense = MUSE_DOWNSTAIRS; } else if (x == xupstair && y == yupstair) { g.m.has_defense = MUSE_UPSTAIRS; - } else if (sstairs.sx && x == sstairs.sx && y == sstairs.sy) { - if (sstairs.up || !is_floater(mtmp->data)) + } else if (g.sstairs.sx && x == g.sstairs.sx && y == g.sstairs.sy) { + if (g.sstairs.up || !is_floater(mtmp->data)) g.m.has_defense = MUSE_SSTAIRS; } } else if (levl[x][y].typ == LADDER) { @@ -377,8 +377,8 @@ struct monst *mtmp; } else if (x == xdnladder && y == ydnladder) { if (!is_floater(mtmp->data)) g.m.has_defense = MUSE_DN_LADDER; - } else if (sstairs.sx && x == sstairs.sx && y == sstairs.sy) { - if (sstairs.up || !is_floater(mtmp->data)) + } else if (g.sstairs.sx && x == g.sstairs.sx && y == g.sstairs.sy) { + if (g.sstairs.up || !is_floater(mtmp->data)) g.m.has_defense = MUSE_SSTAIRS; } } else { @@ -703,8 +703,8 @@ struct monst *mtmp; if (IS_FURNITURE(levl[mtmp->mx][mtmp->my].typ) || IS_DRAWBRIDGE(levl[mtmp->mx][mtmp->my].typ) || (is_drawbridge_wall(mtmp->mx, mtmp->my) >= 0) - || (sstairs.sx && sstairs.sx == mtmp->mx - && sstairs.sy == mtmp->my)) { + || (g.sstairs.sx && g.sstairs.sx == mtmp->mx + && g.sstairs.sy == mtmp->my)) { pline_The("digging ray is ineffective."); return 2; } @@ -884,12 +884,12 @@ struct monst *mtmp; } if (vismon) pline("%s escapes %sstairs!", Monnam(mtmp), - sstairs.up ? "up" : "down"); + g.sstairs.up ? "up" : "down"); /* going from the Valley to Castle (Stronghold) has no sstairs - to target, but having sstairs. == <0,0> will work the + to target, but having g.sstairs. == <0,0> will work the same as specifying MIGR_RANDOM when mon_arrive() eventually places the monster, so we can use MIGR_SSTAIRS unconditionally */ - migrate_to_level(mtmp, ledger_no(&sstairs.tolev), MIGR_SSTAIRS, + migrate_to_level(mtmp, ledger_no(&g.sstairs.tolev), MIGR_SSTAIRS, (coord *) 0); return 2; case MUSE_TELEPORT_TRAP: @@ -1119,7 +1119,7 @@ struct monst *mtmp; && (onscary(u.ux, u.uy, mtmp) || (u.ux == xupstair && u.uy == yupstair) || (u.ux == xdnstair && u.uy == ydnstair) - || (u.ux == sstairs.sx && u.uy == sstairs.sy) + || (u.ux == g.sstairs.sx && u.uy == g.sstairs.sy) || (u.ux == xupladder && u.uy == yupladder) || (u.ux == xdnladder && u.uy == ydnladder))) { g.m.offensive = obj; @@ -1964,7 +1964,7 @@ struct monst *mtmp; docrt(); if (unconscious()) { g.multi = -1; - nomovemsg = "Aggravated, you are jolted into full consciousness."; + g.nomovemsg = "Aggravated, you are jolted into full consciousness."; } newsym(mtmp->mx, mtmp->my); if (!canspotmon(mtmp)) diff --git a/src/music.c b/src/music.c index bcaae3f83..45fef0bb1 100644 --- a/src/music.c +++ b/src/music.c @@ -665,7 +665,7 @@ struct obj *instr; if (c == 'q') { goto nevermind; } else if (c == 'y') { - Strcpy(buf, tune); + Strcpy(buf, g.tune); } else { getlin("What tune are you playing? [5 notes, A-G]", buf); (void) mungspaces(buf); @@ -719,7 +719,7 @@ struct obj *instr; */ if (Is_stronghold(&u.uz)) { exercise(A_WIS, TRUE); /* just for trying */ - if (!strcmp(buf, tune)) { + if (!strcmp(buf, g.tune)) { /* Search for the drawbridge */ for (y = u.uy - 1; y <= u.uy + 1; y++) for (x = u.ux - 1; x <= u.ux + 1; x++) @@ -756,13 +756,13 @@ struct obj *instr; for (x = 0; x < (int) strlen(buf); x++) if (x < 5) { - if (buf[x] == tune[x]) { + if (buf[x] == g.tune[x]) { gears++; matched[x] = TRUE; } else for (y = 0; y < 5; y++) - if (!matched[y] && buf[x] == tune[y] - && buf[y] != tune[y]) { + if (!matched[y] && buf[x] == g.tune[y] + && buf[y] != g.tune[y]) { tumblers++; matched[y] = TRUE; break; diff --git a/src/objnam.c b/src/objnam.c index be69913d8..3f15cc774 100644 --- a/src/objnam.c +++ b/src/objnam.c @@ -242,12 +242,12 @@ fruitname(juice) boolean juice; /* whether or not to append " juice" to the name */ { char *buf = nextobuf(); - const char *fruit_nam = strstri(pl_fruit, " of "); + const char *fruit_nam = strstri(g.pl_fruit, " of "); if (fruit_nam) fruit_nam += 4; /* skip past " of " */ else - fruit_nam = pl_fruit; /* use it as is */ + fruit_nam = g.pl_fruit; /* use it as is */ Sprintf(buf, "%s%s", makesingular(fruit_nam), juice ? " juice" : ""); return buf; @@ -260,7 +260,7 @@ int indx; { struct fruit *f; - for (f = ffruit; f; f = f->nextf) + for (f = g.ffruit; f; f = f->nextf) if (f->fid == indx) break; return f; @@ -283,7 +283,7 @@ int *highest_fid; /* optional output; only valid if 'fname' isn't found */ if (highest_fid) *highest_fid = 0; /* first try for an exact match */ - for (f = ffruit; f; f = f->nextf) + for (f = g.ffruit; f; f = f->nextf) if (!strcmp(f->fname, fname)) return f; else if (highest_fid && f->fid > *highest_fid) @@ -294,7 +294,7 @@ int *highest_fid; /* optional output; only valid if 'fname' isn't found */ matches, not the first */ if (!exact) { tentativef = 0; - for (f = ffruit; f; f = f->nextf) { + for (f = g.ffruit; f; f = f->nextf) { k = strlen(f->fname); if (!strncmp(f->fname, fname, k) && (!fname[k] || fname[k] == ' ') @@ -307,7 +307,7 @@ int *highest_fid; /* optional output; only valid if 'fname' isn't found */ for exact match, that's trivial, but for prefix, it's hard */ if (!f) { altfname = makesingular(fname); - for (f = ffruit; f; f = f->nextf) { + for (f = g.ffruit; f; f = f->nextf) { if (!strcmp(f->fname, altfname)) break; } @@ -318,7 +318,7 @@ int *highest_fid; /* optional output; only valid if 'fname' isn't found */ unsigned fname_k = strlen(fname); /* length of assumed plural fname */ tentativef = 0; - for (f = ffruit; f; f = f->nextf) { + for (f = g.ffruit; f; f = f->nextf) { k = strlen(f->fname); /* reload fnamebuf[] each iteration in case it gets modified; there's no need to recalculate fname_k */ @@ -356,7 +356,7 @@ boolean forward; for (i = 0; i < k; ++i) allfr[i] = (struct fruit *) 0; - for (f = ffruit; f; f = f->nextf) { + for (f = g.ffruit; f; f = f->nextf) { /* without sanity checking, this would reduce to 'allfr[f->fid]=f' */ j = f->fid; if (j < 1 || j >= k) { @@ -368,7 +368,7 @@ boolean forward; } allfr[j] = f; } - ffruit = 0; /* reset linked list; we're rebuilding it from scratch */ + g.ffruit = 0; /* reset linked list; we're rebuilding it from scratch */ /* slot [0] will always be empty; must start 'i' at 1 to avoid [k - i] being out of bounds during first iteration */ for (i = 1; i < k; ++i) { @@ -376,8 +376,8 @@ boolean forward; for backward ordering, go from low to high */ j = forward ? (k - i) : i; if (allfr[j]) { - allfr[j]->nextf = ffruit; - ffruit = allfr[j]; + allfr[j]->nextf = g.ffruit; + g.ffruit = allfr[j]; } } } @@ -767,10 +767,10 @@ struct obj *obj; char tmpbuf[BUFSZ]; char *onm = xname(obj); - if (m_shot.n > 1 && m_shot.o == obj->otyp) { + if (g.m_shot.n > 1 && g.m_shot.o == obj->otyp) { /* "the Nth arrow"; value will eventually be passed to an() or The(), both of which correctly handle this "the " prefix */ - Sprintf(tmpbuf, "the %d%s ", m_shot.i, ordin(m_shot.i)); + Sprintf(tmpbuf, "the %d%s ", g.m_shot.i, ordin(g.m_shot.i)); onm = strprepend(onm, tmpbuf); } return onm; @@ -1139,7 +1139,7 @@ unsigned doname_flags; break; } - if ((obj->owornmask & W_WEP) && !mrg_to_wielded) { + if ((obj->owornmask & W_WEP) && !g.mrg_to_wielded) { if (obj->quan != 1L) { Strcat(bp, " (wielded)"); } else { @@ -3503,7 +3503,7 @@ srch: fp += l; } - for (f = ffruit; f; f = f->nextf) { + for (f = g.ffruit; f; f = f->nextf) { /* match type: 0=none, 1=exact, 2=singular, 3=plural */ int ftyp = 0; diff --git a/src/options.c b/src/options.c index 0ae76e04a..c30578212 100644 --- a/src/options.c +++ b/src/options.c @@ -818,7 +818,7 @@ initoptions_init() /* since this is done before init_objects(), do partial init here */ objects[SLIME_MOLD].oc_name_idx = SLIME_MOLD; - nmcpy(pl_fruit, OBJ_NAME(objects[SLIME_MOLD]), PL_FSIZ); + nmcpy(g.pl_fruit, OBJ_NAME(objects[SLIME_MOLD]), PL_FSIZ); } void @@ -858,7 +858,7 @@ initoptions_finish() config_error_done(); } - (void) fruitadd(pl_fruit, (struct fruit *) 0); + (void) fruitadd(g.pl_fruit, (struct fruit *) 0); /* * Remove "slime mold" from list of object names. This will * prevent it from being wished unless it's actually present @@ -2090,7 +2090,7 @@ boolean tinitial, tfrom_file; config_error_add("Unknown %s '%s'", fullname, op); return FALSE; } else /* Backwards compatibility */ - nmcpy(pl_character, op, PL_NSIZ); + nmcpy(g.pl_character, op, PL_NSIZ); } else return FALSE; return retval; @@ -2104,7 +2104,7 @@ boolean tinitial, tfrom_file; config_error_add("Unknown %s '%s'", fullname, op); return FALSE; } else /* Backwards compatibility */ - pl_race = *op; + g.pl_race = *op; } else return FALSE; return retval; @@ -2615,7 +2615,7 @@ boolean tinitial, tfrom_file; f = fruit_from_name(op, FALSE, &fnum); if (!f) { if (!flags.made_fruit) - forig = fruit_from_name(pl_fruit, FALSE, (int *) 0); + forig = fruit_from_name(g.pl_fruit, FALSE, (int *) 0); if (!forig && fnum >= 100) { config_error_add( @@ -2625,18 +2625,18 @@ boolean tinitial, tfrom_file; } } goodfruit: - nmcpy(pl_fruit, op, PL_FSIZ); - sanitize_name(pl_fruit); + nmcpy(g.pl_fruit, op, PL_FSIZ); + sanitize_name(g.pl_fruit); /* OBJ_NAME(objects[SLIME_MOLD]) won't work for this after initialization; it gets changed to generic "fruit" */ - if (!*pl_fruit) - nmcpy(pl_fruit, "slime mold", PL_FSIZ); + if (!*g.pl_fruit) + nmcpy(g.pl_fruit, "slime mold", PL_FSIZ); if (!initial) { /* if 'forig' is nonNull, we replace it rather than add a new fruit; it can only be nonNull if no fruits have been created since the previous name was put in place */ - (void) fruitadd(pl_fruit, forig); - pline("Fruit is now \"%s\".", pl_fruit); + (void) fruitadd(g.pl_fruit, forig); + pline("Fruit is now \"%s\".", g.pl_fruit); } /* If initial, then initoptions is allowed to do it instead * of here (initoptions always has to do it even if there's @@ -2767,7 +2767,7 @@ boolean tinitial, tfrom_file; bad_negation(fullname, FALSE); return FALSE; } else if ((op = string_for_env_opt(fullname, opts, FALSE)) != 0) { - nmcpy(plname, op, PL_NSIZ); + nmcpy(g.plname, op, PL_NSIZ); } else return FALSE; return retval; @@ -5485,7 +5485,7 @@ char *buf; else Strcpy(buf, defopt); } else if (!strcmp(optname, "fruit")) - Sprintf(buf, "%s", pl_fruit); + Sprintf(buf, "%s", g.pl_fruit); else if (!strcmp(optname, "gender")) Sprintf(buf, "%s", rolestring(flags.initgend, genders, adj)); else if (!strcmp(optname, "horsename")) @@ -5544,7 +5544,7 @@ char *buf; : "reversed"); #endif } else if (!strcmp(optname, "name")) { - Sprintf(buf, "%s", plname); + Sprintf(buf, "%s", g.plname); } else if (!strcmp(optname, "mouse_support")) { #ifdef WIN32 #define MOUSEFIX1 ", QuickEdit off" @@ -6152,7 +6152,7 @@ struct fruit *replace_fruit; register struct fruit *f; int highest_fruit_id = 0; char buf[PL_FSIZ], altname[PL_FSIZ]; - boolean user_specified = (str == pl_fruit); + boolean user_specified = (str == g.pl_fruit); /* if not user-specified, then it's a fruit name for a fruit on * a bones level... */ @@ -6166,14 +6166,14 @@ struct fruit *replace_fruit; /* force fruit to be singular; this handling is not needed--or wanted--for fruits from bones because they already received it in their original game */ - nmcpy(pl_fruit, makesingular(str), PL_FSIZ); - /* assert( str == pl_fruit ); */ + nmcpy(g.pl_fruit, makesingular(str), PL_FSIZ); + /* assert( str == g.pl_fruit ); */ /* disallow naming after other foods (since it'd be impossible * to tell the difference) */ for (i = g.bases[FOOD_CLASS]; objects[i].oc_class == FOOD_CLASS; i++) { - if (!strcmp(OBJ_NAME(objects[i]), pl_fruit)) { + if (!strcmp(OBJ_NAME(objects[i]), g.pl_fruit)) { found = TRUE; break; } @@ -6181,7 +6181,7 @@ struct fruit *replace_fruit; { char *c; - for (c = pl_fruit; *c >= '0' && *c <= '9'; c++) + for (c = g.pl_fruit; *c >= '0' && *c <= '9'; c++) continue; if (isspace((uchar) *c) || *c == 0) numeric = TRUE; @@ -6198,9 +6198,9 @@ struct fruit *replace_fruit; || ((str_end_is(str, " corpse") || str_end_is(str, " egg")) && name_to_mon(str) >= LOW_PM)) { - Strcpy(buf, pl_fruit); - Strcpy(pl_fruit, "candied "); - nmcpy(pl_fruit + 8, buf, PL_FSIZ - 8); + Strcpy(buf, g.pl_fruit); + Strcpy(g.pl_fruit, "candied "); + nmcpy(g.pl_fruit + 8, buf, PL_FSIZ - 8); } *altname = '\0'; /* This flag indicates that a fruit has been made since the @@ -6242,8 +6242,8 @@ struct fruit *replace_fruit; f->fid = ++highest_fruit_id; /* we used to go out of our way to add it at the end of the list, but the order is arbitrary so use simpler insertion at start */ - f->nextf = ffruit; - ffruit = f; + f->nextf = g.ffruit; + g.ffruit = f; nonew: if (user_specified) context.current_fruit = f->fid; @@ -6712,7 +6712,7 @@ set_playmode() { if (wizard) { if (authorize_wizard_mode()) - Strcpy(plname, "wizard"); + Strcpy(g.plname, "wizard"); else wizard = FALSE; /* not allowed or not available */ /* force explore mode if we didn't make it into wizard mode */ diff --git a/src/pager.c b/src/pager.c index f7fdb7087..5887aa001 100644 --- a/src/pager.c +++ b/src/pager.c @@ -86,7 +86,7 @@ char *outbuf; Sprintf(outbuf, "%s%s%s called %s", /* being blinded may hide invisibility from self */ (Invis && (senseself() || !Blind)) ? "invisible " : "", race, - mons[u.umonnum].mname, plname); + mons[u.umonnum].mname, g.plname); if (u.usteed) Sprintf(eos(outbuf), ", mounted on %s", y_monnam(u.usteed)); if (u.uundetected || (Upolyd && youmonst.m_ap_type)) diff --git a/src/pickup.c b/src/pickup.c index c0be5be2b..ac5485c56 100644 --- a/src/pickup.c +++ b/src/pickup.c @@ -1497,11 +1497,11 @@ boolean telekinesis; /* not picking it up directly by hand */ obj = pick_obj(obj); if (uwep && uwep == obj) - mrg_to_wielded = TRUE; + g.mrg_to_wielded = TRUE; nearload = near_capacity(); prinv(nearload == SLT_ENCUMBER ? moderateloadmsg : (char *) 0, obj, count); - mrg_to_wielded = FALSE; + g.mrg_to_wielded = FALSE; return 1; } @@ -2481,7 +2481,7 @@ boolean more_containers; /* True iff #loot multiple and this isn't last one */ if (g.multi >= 0) { /* in case we didn't become paralyzed */ nomul(-1); g.multi_reason = "opening a container"; - nomovemsg = ""; + g.nomovemsg = ""; } g.abort_looting = TRUE; return 1; @@ -3088,7 +3088,7 @@ struct obj *box; /* or bag */ if (g.multi >= 0) { /* in case we didn't become paralyzed */ nomul(-1); g.multi_reason = "tipping a container"; - nomovemsg = ""; + g.nomovemsg = ""; } } else if (box->otyp == BAG_OF_TRICKS || box->otyp == HORN_OF_PLENTY) { boolean bag = box->otyp == BAG_OF_TRICKS; diff --git a/src/polyself.c b/src/polyself.c index bd3f2ebe5..be2b6a948 100644 --- a/src/polyself.c +++ b/src/polyself.c @@ -251,9 +251,9 @@ change_sex() u.mfemale = !u.mfemale; max_rank_sz(); /* [this appears to be superfluous] */ if ((already_polyd ? u.mfemale : flags.female) && urole.name.f) - Strcpy(pl_character, urole.name.f); + Strcpy(g.pl_character, urole.name.f); else - Strcpy(pl_character, urole.name.m); + Strcpy(g.pl_character, urole.name.m); u.umonster = ((already_polyd ? u.mfemale : flags.female) && urole.femalenum != NON_PM) ? urole.femalenum @@ -1385,7 +1385,7 @@ dogaze() (int) mtmp->data->mattk[0].damd) : -200); g.multi_reason = "frozen by a monster's gaze"; - nomovemsg = 0; + g.nomovemsg = 0; return 1; } else You("stiffen momentarily under %s gaze.", diff --git a/src/potion.c b/src/potion.c index 7a688ff90..2ebdf8073 100644 --- a/src/potion.c +++ b/src/potion.c @@ -459,7 +459,7 @@ ghost_from_bottle() You("are frightened to death, and unable to move."); nomul(-3); g.multi_reason = "being frightened to death"; - nomovemsg = "You regain your composure."; + g.nomovemsg = "You regain your composure."; } /* "Quaffing is like drinking, except you spill more." - Terry Pratchett */ @@ -686,7 +686,7 @@ register struct obj *otmp; if (otmp->cursed) { You("pass out."); g.multi = -rnd(15); - nomovemsg = "You awake with a headache."; + g.nomovemsg = "You awake with a headache."; } break; case POT_ENLIGHTENMENT: @@ -780,7 +780,7 @@ register struct obj *otmp; surface(u.ux, u.uy)); nomul(-(rn1(10, 25 - 12 * bcsign(otmp)))); g.multi_reason = "frozen by a potion"; - nomovemsg = You_can_move_again; + g.nomovemsg = You_can_move_again; exercise(A_DEX, FALSE); } break; @@ -1026,7 +1026,7 @@ register struct obj *otmp; if (BLevitation) { ; /* rising via levitation is blocked */ } else if ((u.ux == xupstair && u.uy == yupstair) - || (sstairs.up && u.ux == sstairs.sx && u.uy == sstairs.sy) + || (g.sstairs.up && u.ux == g.sstairs.sx && u.uy == g.sstairs.sy) || (xupladder && u.ux == xupladder && u.uy == yupladder)) { (void) doup(); /* in case we're already Levitating, which would have @@ -1683,7 +1683,7 @@ register struct obj *obj; pline("%s seems to be holding you.", Something); nomul(-rnd(5)); g.multi_reason = "frozen by a potion"; - nomovemsg = You_can_move_again; + g.nomovemsg = You_can_move_again; exercise(A_DEX, FALSE); } else You("stiffen momentarily."); @@ -1694,7 +1694,7 @@ register struct obj *obj; You_feel("rather tired."); nomul(-rnd(5)); g.multi_reason = "sleeping off a magical draught"; - nomovemsg = You_can_move_again; + g.nomovemsg = You_can_move_again; exercise(A_DEX, FALSE); } else You("yawn."); diff --git a/src/pray.c b/src/pray.c index 77a894998..011e02810 100644 --- a/src/pray.c +++ b/src/pray.c @@ -1047,7 +1047,7 @@ aligntyp g_align; break; } else if (u.uevent.uheard_tune < 2) { You_hear("a divine music..."); - pline("It sounds like: \"%s\".", tune); + pline("It sounds like: \"%s\".", g.tune); u.uevent.uheard_tune++; break; } @@ -1395,7 +1395,7 @@ dosacrifice() You("are terrified, and unable to move."); nomul(-3); g.multi_reason = "being terrified of a demon"; - nomovemsg = 0; + g.nomovemsg = 0; } else pline_The("%s.", demonless_msg); } @@ -1834,7 +1834,7 @@ dopray() } nomul(-3); g.multi_reason = "praying"; - nomovemsg = "You finish your prayer."; + g.nomovemsg = "You finish your prayer."; g.afternmv = prayer_done; if (g.p_type == 3 && !Inhell) { @@ -2004,7 +2004,7 @@ doturn() } nomul(-(5 - ((u.ulevel - 1) / 6))); /* -5 .. -1 */ g.multi_reason = "trying to turn the monsters"; - nomovemsg = You_can_move_again; + g.nomovemsg = You_can_move_again; return 1; } diff --git a/src/priest.c b/src/priest.c index 5896eacf0..0be0f52b4 100644 --- a/src/priest.c +++ b/src/priest.c @@ -508,7 +508,7 @@ int roomno; You("are frightened to death, and unable to move."); nomul(-3); g.multi_reason = "being terrified of a ghost"; - nomovemsg = "You regain your composure."; + g.nomovemsg = "You regain your composure."; } } } @@ -785,8 +785,8 @@ struct monst *priest; break; } - buzz(-10 - (AD_ELEC - 1), 6, x, y, sgn(tbx), - sgn(tby)); /* bolt of lightning */ + buzz(-10 - (AD_ELEC - 1), 6, x, y, sgn(g.tbx), + sgn(g.tby)); /* bolt of lightning */ exercise(A_WIS, FALSE); } @@ -1088,7 +1088,7 @@ ustatusline() Strcat(info, mon_nam(u.ustuck)); } - pline("Status of %s (%s): Level %d HP %d(%d) AC %d%s.", plname, + pline("Status of %s (%s): Level %d HP %d(%d) AC %d%s.", g.plname, piousness(FALSE, align_str(u.ualign.type)), Upolyd ? mons[u.umonnum].mlevel : u.ulevel, Upolyd ? u.mh : u.uhp, Upolyd ? u.mhmax : u.uhpmax, u.uac, info); diff --git a/src/quest.c b/src/quest.c index df4b83155..5fda7d63e 100644 --- a/src/quest.c +++ b/src/quest.c @@ -10,7 +10,7 @@ #include "qtext.h" #define Not_firsttime (on_level(&u.uz0, &u.uz)) -#define Qstat(x) (quest_status.x) +#define Qstat(x) (g.quest_status.x) STATIC_DCL void NDECL(on_start); STATIC_DCL void NDECL(on_locate); diff --git a/src/questpgr.c b/src/questpgr.c index a82ae2991..ac2768a4c 100644 --- a/src/questpgr.c +++ b/src/questpgr.c @@ -289,9 +289,9 @@ char who, /* 'd' => deity, 'l' => leader, 'n' => nemesis, 'o' => artifact */ : (lwhich == 'i') ? "them" : (lwhich == 'j') ? "their" : "?"; } else { - godgend = (who == 'd') ? quest_status.godgend - : (who == 'l') ? quest_status.ldrgend - : (who == 'n') ? quest_status.nemgend + godgend = (who == 'd') ? g.quest_status.godgend + : (who == 'l') ? g.quest_status.ldrgend + : (who == 'n') ? g.quest_status.nemgend : 2; /* default to neuter */ pnoun = (lwhich == 'h') ? genders[godgend].he : (lwhich == 'i') ? genders[godgend].him @@ -326,7 +326,7 @@ char c; switch (c) { case 'p': - str = plname; + str = g.plname; break; case 'c': str = (flags.female && urole.name.f) ? urole.name.f : urole.name.m; @@ -398,7 +398,7 @@ char c; str = Blind ? "sense" : "see"; break; case 'Z': - str = dungeons[0].dname; + str = g.dungeons[0].dname; break; case '%': str = "%"; diff --git a/src/read.c b/src/read.c index 84c627f37..3a5830f15 100644 --- a/src/read.c +++ b/src/read.c @@ -1579,7 +1579,7 @@ struct obj *sobj; /* scroll, or fake spellbook object for scroll-like spell */ | (!confused || scursed ? ALL_MAP : 0)); if (Hallucination) /* Ommmmmm! */ Your("mind releases itself from mundane concerns."); - else if (!strncmpi(plname, "Maud", 4)) + else if (!strncmpi(g.plname, "Maud", 4)) pline( "As your mind turns inward on itself, you forget everything else."); else if (rn2(2)) diff --git a/src/region.c b/src/region.c index 446d82685..839ca3f9c 100644 --- a/src/region.c +++ b/src/region.c @@ -895,7 +895,7 @@ long ttl; tmprect.hy--; } ff->ttl = ttl; - if (!in_mklev && !context.mon_moving) + if (!g.in_mklev && !context.mon_moving) set_heros_fault(ff); /* assume player has created it */ /* ff->can_enter_f = enter_force_field; */ /* ff->can_leave_f = enter_force_field; */ @@ -1038,7 +1038,7 @@ int damage; tmprect.hy--; } cloud->ttl = rn1(3, 4); - if (!in_mklev && !context.mon_moving) + if (!g.in_mklev && !context.mon_moving) set_heros_fault(cloud); /* assume player has created it */ cloud->inside_f = INSIDE_GAS_CLOUD; cloud->expire_f = EXPIRE_GAS_CLOUD; diff --git a/src/restore.c b/src/restore.c index fe2243e24..f1ca421ee 100644 --- a/src/restore.c +++ b/src/restore.c @@ -139,15 +139,15 @@ register int fd; int cnt; s_level *tmplev, *x; - sp_levchn = (s_level *) 0; + g.sp_levchn = (s_level *) 0; mread(fd, (genericptr_t) &cnt, sizeof(int)); for (; cnt > 0; cnt--) { tmplev = (s_level *) alloc(sizeof(s_level)); mread(fd, (genericptr_t) tmplev, sizeof(s_level)); - if (!sp_levchn) - sp_levchn = tmplev; + if (!g.sp_levchn) + g.sp_levchn = tmplev; else { - for (x = sp_levchn; x->next; x = x->next) + for (x = g.sp_levchn; x->next; x = x->next) ; x->next = tmplev; } @@ -658,7 +658,7 @@ unsigned int *stuckid, *steedid; * side-effects too early in the game. * Disable see_monsters() here, re-enable it at the top of moveloop() */ - defer_see_monsters = TRUE; + g.defer_see_monsters = TRUE; /* this comes after inventory has been loaded */ for (otmp = invent; otmp; otmp = otmp->nobj) @@ -672,13 +672,13 @@ unsigned int *stuckid, *steedid; uwep = 0; /* clear it and have setuwep() reinit */ setuwep(otmp); /* (don't need any null check here) */ if (!uwep || uwep->otyp == PICK_AXE || uwep->otyp == GRAPPLING_HOOK) - unweapon = TRUE; + g.unweapon = TRUE; restore_dungeon(fd); restlevchn(fd); mread(fd, (genericptr_t) &moves, sizeof moves); mread(fd, (genericptr_t) &monstermoves, sizeof monstermoves); - mread(fd, (genericptr_t) &quest_status, sizeof (struct q_score)); + mread(fd, (genericptr_t) &g.quest_status, sizeof (struct q_score)); mread(fd, (genericptr_t) spl_book, (MAXSPELL + 1) * sizeof (struct spell)); restore_artifacts(fd); restore_oracles(fd); @@ -686,11 +686,11 @@ unsigned int *stuckid, *steedid; mread(fd, (genericptr_t) stuckid, sizeof *stuckid); if (u.usteed) mread(fd, (genericptr_t) steedid, sizeof *steedid); - mread(fd, (genericptr_t) pl_character, sizeof pl_character); + mread(fd, (genericptr_t) g.pl_character, sizeof g.pl_character); - mread(fd, (genericptr_t) pl_fruit, sizeof pl_fruit); - freefruitchn(ffruit); /* clean up fruit(s) made by initoptions() */ - ffruit = loadfruitchn(fd); + mread(fd, (genericptr_t) g.pl_fruit, sizeof g.pl_fruit); + freefruitchn(g.ffruit); /* clean up fruit(s) made by initoptions() */ + g.ffruit = loadfruitchn(fd); restnames(fd); restore_waterlevel(fd); @@ -799,7 +799,7 @@ register int fd; struct obj *otmp; g.restoring = TRUE; - get_plname_from_file(fd, plname); + get_plname_from_file(fd, g.plname); getlev(fd, 0, (xchar) 0, FALSE); if (!restgamestate(fd, &stuckid, &steedid)) { display_nhwindow(WIN_MESSAGE, TRUE); @@ -839,7 +839,7 @@ register int fd; #endif clear_nhwindow(WIN_MESSAGE); You("return to level %d in %s%s.", depth(&u.uz), - dungeons[u.uz.dnum].dname, + g.dungeons[u.uz.dnum].dname, flags.debug ? " while in debug mode" : flags.explore ? " while in explore mode" : ""); curs(WIN_MAP, 1, 1); @@ -877,7 +877,7 @@ register int fd; (void) lseek(fd, (off_t) 0, 0); #endif (void) validate(fd, (char *) 0); /* skip version and savefile info */ - get_plname_from_file(fd, plname); + get_plname_from_file(fd, g.plname); getlev(fd, 0, (xchar) 0, FALSE); (void) nhclose(fd); @@ -1058,20 +1058,20 @@ boolean ghostly; mread(fd, (genericptr_t) lastseentyp, sizeof(lastseentyp)); mread(fd, (genericptr_t) &g.omoves, sizeof(g.omoves)); elapsed = monstermoves - g.omoves; - mread(fd, (genericptr_t) &upstair, sizeof(stairway)); - mread(fd, (genericptr_t) &dnstair, sizeof(stairway)); - mread(fd, (genericptr_t) &upladder, sizeof(stairway)); - mread(fd, (genericptr_t) &dnladder, sizeof(stairway)); - mread(fd, (genericptr_t) &sstairs, sizeof(stairway)); - mread(fd, (genericptr_t) &updest, sizeof(dest_area)); - mread(fd, (genericptr_t) &dndest, sizeof(dest_area)); + mread(fd, (genericptr_t) &g.upstair, sizeof(stairway)); + mread(fd, (genericptr_t) &g.dnstair, sizeof(stairway)); + mread(fd, (genericptr_t) &g.upladder, sizeof(stairway)); + mread(fd, (genericptr_t) &g.dnladder, sizeof(stairway)); + mread(fd, (genericptr_t) &g.sstairs, sizeof(stairway)); + mread(fd, (genericptr_t) &g.updest, sizeof(dest_area)); + mread(fd, (genericptr_t) &g.dndest, sizeof(dest_area)); mread(fd, (genericptr_t) &level.flags, sizeof(level.flags)); mread(fd, (genericptr_t) doors, sizeof(doors)); rest_rooms(fd); /* No joke :-) */ if (g.nroom) - doorindex = rooms[g.nroom - 1].fdoor + rooms[g.nroom - 1].doorct; + g.doorindex = rooms[g.nroom - 1].fdoor + rooms[g.nroom - 1].doorct; else - doorindex = 0; + g.doorindex = 0; restore_timers(fd, RANGE_LEVEL, ghostly, elapsed); restore_light_sources(fd); @@ -1157,8 +1157,8 @@ boolean ghostly; switch (br->type) { case BR_STAIR: case BR_NO_END1: - case BR_NO_END2: /* OK to assign to sstairs if it's not used */ - assign_level(&sstairs.tolev, <mp); + case BR_NO_END2: /* OK to assign to g.sstairs if it's not used */ + assign_level(&g.sstairs.tolev, <mp); break; case BR_PORTAL: /* max of 1 portal per level */ for (trap = ftrap; trap; trap = trap->ntrap) @@ -1317,7 +1317,7 @@ boolean ghostly; #ifdef SELECTSAVED /* put up a menu listing each character from this player's saved games; - returns 1: use plname[], 0: new game, -1: quit */ + returns 1: use g.plname[], 0: new game, -1: quit */ int restore_menu(bannerwin) winid bannerwin; /* if not WIN_ERR, clear window and show copyright in menu */ @@ -1328,7 +1328,7 @@ winid bannerwin; /* if not WIN_ERR, clear window and show copyright in menu */ menu_item *chosen_game = (menu_item *) 0; int k, clet, ch = 0; /* ch: 0 => new game */ - *plname = '\0'; + *g.plname = '\0'; saved = get_saved_games(); /* array of character names */ if (saved && *saved) { tmpwin = create_nhwindow(NHW_MENU); @@ -1364,7 +1364,7 @@ winid bannerwin; /* if not WIN_ERR, clear window and show copyright in menu */ if (select_menu(tmpwin, PICK_ONE, &chosen_game) > 0) { ch = chosen_game->item.a_int; if (ch > 0) - Strcpy(plname, saved[ch - 1]); + Strcpy(g.plname, saved[ch - 1]); else if (ch < 0) ++ch; /* -1 -> 0 (new game), -2 -> -1 (quit) */ free((genericptr_t) chosen_game); diff --git a/src/rip.c b/src/rip.c index f6fba01bc..a3a53018a 100644 --- a/src/rip.c +++ b/src/rip.c @@ -102,12 +102,12 @@ time_t when; dp[x] = (char *) 0; /* Put name on stone */ - Sprintf(buf, "%s", plname); + Sprintf(buf, "%s", g.plname); buf[STONE_LINE_LEN] = 0; center(NAME_LINE, buf); /* Put $ on stone */ - Sprintf(buf, "%ld Au", done_money); + Sprintf(buf, "%ld Au", g.done_money); buf[STONE_LINE_LEN] = 0; /* It could be a *lot* of gold :-) */ center(GOLD_LINE, buf); diff --git a/src/role.c b/src/role.c index 31b512349..6d162c2c0 100644 --- a/src/role.c +++ b/src/role.c @@ -1704,22 +1704,22 @@ plnamesuffix() /* some generic user names will be ignored in favor of prompting */ if (sysopt.genericusers) { if (*sysopt.genericusers == '*') { - *plname = '\0'; + *g.plname = '\0'; } else { - i = (int) strlen(plname); - if ((sptr = strstri(sysopt.genericusers, plname)) != 0 + i = (int) strlen(g.plname); + if ((sptr = strstri(sysopt.genericusers, g.plname)) != 0 && (sptr == sysopt.genericusers || sptr[-1] == ' ') && (sptr[i] == ' ' || sptr[i] == '\0')) - *plname = '\0'; /* call askname() */ + *g.plname = '\0'; /* call askname() */ } } do { - if (!*plname) - askname(); /* fill plname[] if necessary, or set defer_plname */ + if (!*g.plname) + askname(); /* fill g.plname[] if necessary, or set defer_plname */ /* Look for tokens delimited by '-' */ - if ((eptr = index(plname, '-')) != (char *) 0) + if ((eptr = index(g.plname, '-')) != (char *) 0) *eptr++ = '\0'; while (eptr) { /* Isolate the next token */ @@ -1737,10 +1737,10 @@ plnamesuffix() else if ((i = str2align(sptr)) != ROLE_NONE) flags.initalign = i; } - } while (!*plname && !iflags.defer_plname); + } while (!*g.plname && !iflags.defer_plname); - /* commas in the plname confuse the record file, convert to spaces */ - for (sptr = plname; *sptr; sptr++) { + /* commas in the g.plname confuse the record file, convert to spaces */ + for (sptr = g.plname; *sptr; sptr++) { if (*sptr == ',') *sptr = ' '; } @@ -1794,7 +1794,7 @@ winid where; to narrow something done to a single choice] */ Sprintf(buf, "%12s ", "name:"); - Strcat(buf, (which == RS_NAME) ? choosing : !*plname ? not_yet : plname); + Strcat(buf, (which == RS_NAME) ? choosing : !*g.plname ? not_yet : g.plname); putstr(where, 0, buf); Sprintf(buf, "%12s ", "role:"); Strcat(buf, (which == RS_ROLE) ? choosing : (r == ROLE_NONE) @@ -2011,15 +2011,15 @@ role_init() /* Check for a valid role. Try flags.initrole first. */ if (!validrole(flags.initrole)) { /* Try the player letter second */ - if ((flags.initrole = str2role(pl_character)) < 0) + if ((flags.initrole = str2role(g.pl_character)) < 0) /* None specified; pick a random role */ flags.initrole = randrole_filtered(); } /* We now have a valid role index. Copy the role name back. */ /* This should become OBSOLETE */ - Strcpy(pl_character, roles[flags.initrole].name.m); - pl_character[PL_CSIZ - 1] = '\0'; + Strcpy(g.pl_character, roles[flags.initrole].name.m); + g.pl_character[PL_CSIZ - 1] = '\0'; /* Check for a valid race */ if (!validrace(flags.initrole, flags.initrace)) @@ -2054,7 +2054,7 @@ role_init() pm->maligntyp = alignmnt * 3; /* if gender is random, we choose it now instead of waiting until the leader monster is created */ - quest_status.ldrgend = + g.quest_status.ldrgend = is_neuter(pm) ? 2 : is_female(pm) ? 1 : is_male(pm) ? 0 : (rn2(100) < 50); @@ -2077,7 +2077,7 @@ role_init() pm->mflags3 |= M3_WANTSARTI | M3_WAITFORU; /* if gender is random, we choose it now instead of waiting until the nemesis monster is created */ - quest_status.nemgend = is_neuter(pm) ? 2 : is_female(pm) ? 1 + g.quest_status.nemgend = is_neuter(pm) ? 2 : is_female(pm) ? 1 : is_male(pm) ? 0 : (rn2(100) < 50); } @@ -2093,7 +2093,7 @@ role_init() urole.cgod = roles[flags.pantheon].cgod; } /* 0 or 1; no gods are neuter, nor is gender randomized */ - quest_status.godgend = !strcmpi(align_gtitle(alignmnt), "goddess"); + g.quest_status.godgend = !strcmpi(align_gtitle(alignmnt), "goddess"); /* Fix up infravision */ if (mons[urace.malenum].mflags3 & M3_INFRAVISION) { diff --git a/src/rumors.c b/src/rumors.c index 315f7b128..d77617309 100644 --- a/src/rumors.c +++ b/src/rumors.c @@ -142,7 +142,7 @@ boolean exclude_cookie; (void) dlb_fclose(rumors); if (count >= 50) impossible("Can't find non-cookie rumor?"); - else if (!in_mklev) /* avoid exercizing wisdom for graffiti */ + else if (!g.in_mklev) /* avoid exercizing wisdom for graffiti */ exercise(A_WIS, (adjtruth > 0)); } else { couldnt_open_file(RUMORFILE); diff --git a/src/save.c b/src/save.c index 7db263a69..30f768ca7 100644 --- a/src/save.c +++ b/src/save.c @@ -328,7 +328,7 @@ register int fd, mode; savelevchn(fd, mode); bwrite(fd, (genericptr_t) &moves, sizeof moves); bwrite(fd, (genericptr_t) &monstermoves, sizeof monstermoves); - bwrite(fd, (genericptr_t) &quest_status, sizeof(struct q_score)); + bwrite(fd, (genericptr_t) &g.quest_status, sizeof(struct q_score)); bwrite(fd, (genericptr_t) spl_book, sizeof(struct spell) * (MAXSPELL + 1)); save_artifacts(fd); @@ -337,8 +337,8 @@ register int fd, mode; bwrite(fd, (genericptr_t) &g.ustuck_id, sizeof g.ustuck_id); if (g.usteed_id) bwrite(fd, (genericptr_t) &g.usteed_id, sizeof g.usteed_id); - bwrite(fd, (genericptr_t) pl_character, sizeof pl_character); - bwrite(fd, (genericptr_t) pl_fruit, sizeof pl_fruit); + bwrite(fd, (genericptr_t) g.pl_character, sizeof g.pl_character); + bwrite(fd, (genericptr_t) g.pl_fruit, sizeof g.pl_fruit); savefruitchn(fd, mode); savenames(fd, mode); save_waterlevel(fd, mode); @@ -505,13 +505,13 @@ int mode; (boolean) ((sfsaveinfo.sfi1 & SFI1_RLECOMP) == SFI1_RLECOMP)); bwrite(fd, (genericptr_t) lastseentyp, sizeof(lastseentyp)); bwrite(fd, (genericptr_t) &monstermoves, sizeof(monstermoves)); - bwrite(fd, (genericptr_t) &upstair, sizeof(stairway)); - bwrite(fd, (genericptr_t) &dnstair, sizeof(stairway)); - bwrite(fd, (genericptr_t) &upladder, sizeof(stairway)); - bwrite(fd, (genericptr_t) &dnladder, sizeof(stairway)); - bwrite(fd, (genericptr_t) &sstairs, sizeof(stairway)); - bwrite(fd, (genericptr_t) &updest, sizeof(dest_area)); - bwrite(fd, (genericptr_t) &dndest, sizeof(dest_area)); + bwrite(fd, (genericptr_t) &g.upstair, sizeof(stairway)); + bwrite(fd, (genericptr_t) &g.dnstair, sizeof(stairway)); + bwrite(fd, (genericptr_t) &g.upladder, sizeof(stairway)); + bwrite(fd, (genericptr_t) &g.dnladder, sizeof(stairway)); + bwrite(fd, (genericptr_t) &g.sstairs, sizeof(stairway)); + bwrite(fd, (genericptr_t) &g.updest, sizeof(dest_area)); + bwrite(fd, (genericptr_t) &g.dndest, sizeof(dest_area)); bwrite(fd, (genericptr_t) &level.flags, sizeof(level.flags)); bwrite(fd, (genericptr_t) doors, sizeof(doors)); save_rooms(fd); /* no dynamic memory to reclaim */ @@ -898,12 +898,12 @@ register int fd, mode; s_level *tmplev, *tmplev2; int cnt = 0; - for (tmplev = sp_levchn; tmplev; tmplev = tmplev->next) + for (tmplev = g.sp_levchn; tmplev; tmplev = tmplev->next) cnt++; if (perform_bwrite(mode)) bwrite(fd, (genericptr_t) &cnt, sizeof(int)); - for (tmplev = sp_levchn; tmplev; tmplev = tmplev2) { + for (tmplev = g.sp_levchn; tmplev; tmplev = tmplev2) { tmplev2 = tmplev->next; if (perform_bwrite(mode)) bwrite(fd, (genericptr_t) tmplev, sizeof(s_level)); @@ -911,7 +911,7 @@ register int fd, mode; free((genericptr_t) tmplev); } if (release_data(mode)) - sp_levchn = 0; + g.sp_levchn = 0; } /* used when saving a level and also when saving dungeon overview data */ @@ -1193,7 +1193,7 @@ int fd, mode; static struct fruit zerofruit; register struct fruit *f2, *f1; - f1 = ffruit; + f1 = g.ffruit; while (f1) { f2 = f1->nextf; if (f1->fid >= 0 && perform_bwrite(mode)) @@ -1205,7 +1205,7 @@ int fd, mode; if (perform_bwrite(mode)) bwrite(fd, (genericptr_t) &zerofruit, sizeof zerofruit); if (release_data(mode)) - ffruit = 0; + g.ffruit = 0; } void @@ -1217,7 +1217,7 @@ int fd; bufoff(fd); /* bwrite() before bufon() uses plain write() */ bwrite(fd, (genericptr_t) &plsiztmp, sizeof(plsiztmp)); - bwrite(fd, (genericptr_t) plname, plsiztmp); + bwrite(fd, (genericptr_t) g.plname, plsiztmp); bufon(fd); return; } diff --git a/src/shk.c b/src/shk.c index f3d85199c..b8344c6e9 100644 --- a/src/shk.c +++ b/src/shk.c @@ -255,7 +255,7 @@ boolean ghostly; /* savebones guarantees that non-homed shk's will be gone */ if (ghostly) { assign_level(&eshkp->shoplevel, &u.uz); - if (ANGRY(shkp) && strncmpi(eshkp->customer, plname, PL_NSIZ)) + if (ANGRY(shkp) && strncmpi(eshkp->customer, g.plname, PL_NSIZ)) pacify_shk(shkp); } } @@ -432,7 +432,7 @@ boolean newlev; if (!Deaf && !muteshk(shkp)) verbalize(NOTANGRY(shkp) ? "%s! Please pay before leaving." : "%s! Don't you leave without paying!", - plname); + g.plname); else pline("%s %s that you need to pay before leaving%s", Shknam(shkp), @@ -568,11 +568,11 @@ char *enterstring; eshkp->bill_p = &(eshkp->bill[0]); if ((!eshkp->visitct || *eshkp->customer) - && strncmpi(eshkp->customer, plname, PL_NSIZ)) { + && strncmpi(eshkp->customer, g.plname, PL_NSIZ)) { /* You seem to be new here */ eshkp->visitct = 0; eshkp->following = 0; - (void) strncpy(eshkp->customer, plname, PL_NSIZ); + (void) strncpy(eshkp->customer, g.plname, PL_NSIZ); pacify_shk(shkp); } @@ -593,7 +593,7 @@ char *enterstring; if (ANGRY(shkp)) { if (!Deaf && !muteshk(shkp)) - verbalize("So, %s, you dare return to %s %s?!", plname, + verbalize("So, %s, you dare return to %s %s?!", g.plname, s_suffix(shkname(shkp)), shtypes[rt - SHOPBASE].name); else pline("%s seems %s over your return to %s %s!", @@ -608,7 +608,7 @@ char *enterstring; Shknam(shkp), noit_mhis(shkp)); } else { if (!Deaf && !muteshk(shkp)) - verbalize("%s, %s! Welcome%s to %s %s!", Hello(shkp), plname, + verbalize("%s, %s! Welcome%s to %s %s!", Hello(shkp), g.plname, eshkp->visitct++ ? " again" : "", s_suffix(shkname(shkp)), shtypes[rt - SHOPBASE].name); else @@ -1159,7 +1159,7 @@ register struct monst *shkp; return; rile_shk(shkp); - (void) strncpy(ESHK(shkp)->customer, plname, PL_NSIZ); + (void) strncpy(ESHK(shkp)->customer, g.plname, PL_NSIZ); ESHK(shkp)->following = 1; } @@ -1398,7 +1398,7 @@ proceed: : shkname(shkp), noit_mhim(shkp)); pay(1000L, shkp); - if (strncmp(eshkp->customer, plname, PL_NSIZ) || rn2(3)) + if (strncmp(eshkp->customer, g.plname, PL_NSIZ) || rn2(3)) make_happy_shk(shkp, FALSE); else pline("But %s is as angry as ever.", shkname(shkp)); @@ -1835,7 +1835,7 @@ int croaked; context.botl = 1; pline("%s %s the %ld %s %sowed %s.", Shknam(shkp), takes, loss, currency(loss), - strncmp(eshkp->customer, plname, PL_NSIZ) ? "" : "you ", + strncmp(eshkp->customer, g.plname, PL_NSIZ) ? "" : "you ", noit_mhim(shkp)); /* shopkeeper has now been paid in full */ pacify_shk(shkp); @@ -2885,7 +2885,7 @@ boolean peaceful, silent; if (!silent) { if (canseemon(shkp)) { Norep("%s booms: \"%s, you are a thief!\"", - Shknam(shkp), plname); + Shknam(shkp), g.plname); } else Norep("You hear a scream, \"Thief!\""); } @@ -3685,17 +3685,17 @@ struct monst *shkp; return 0; } if (eshkp->following) { - if (strncmp(eshkp->customer, plname, PL_NSIZ)) { + if (strncmp(eshkp->customer, g.plname, PL_NSIZ)) { if (!Deaf && !muteshk(shkp)) verbalize("%s, %s! I was looking for %s.", Hello(shkp), - plname, eshkp->customer); + g.plname, eshkp->customer); eshkp->following = 0; return 0; } if (moves > followmsg + 4) { if (!Deaf && !muteshk(shkp)) verbalize("%s, %s! Didn't you forget to pay?", - Hello(shkp), plname); + Hello(shkp), g.plname); else pline("%s holds out %s upturned %s.", Shknam(shkp), noit_mhis(shkp), @@ -3985,7 +3985,7 @@ boolean cant_mollify; y = appear_here->place.y; /* not the best introduction to the shk... */ - (void) strncpy(ESHK(shkp)->customer, plname, PL_NSIZ); + (void) strncpy(ESHK(shkp)->customer, g.plname, PL_NSIZ); /* if the shk is already on the war path, be sure it's all out */ if (ANGRY(shkp) || ESHK(shkp)->following) { @@ -4272,15 +4272,15 @@ struct monst *shkp; (!Deaf && !muteshk(shkp)) ? "mentions" : "indicates", noit_mhe(shkp), eshk->robbed ? "non-paying" : "rude"); } else if (eshk->following) { - if (strncmp(eshk->customer, plname, PL_NSIZ)) { + if (strncmp(eshk->customer, g.plname, PL_NSIZ)) { if (!Deaf && !muteshk(shkp)) verbalize("%s %s! I was looking for %s.", - Hello(shkp), plname, eshk->customer); + Hello(shkp), g.plname, eshk->customer); eshk->following = 0; } else { if (!Deaf && !muteshk(shkp)) verbalize("%s %s! Didn't you forget to pay?", - Hello(shkp), plname); + Hello(shkp), g.plname); else pline("%s taps you on the %s.", Shknam(shkp), body_part(ARM)); diff --git a/src/shknam.c b/src/shknam.c index 55ce43afd..5f7b238ba 100644 --- a/src/shknam.c +++ b/src/shknam.c @@ -636,7 +636,7 @@ struct mkroom *sroom; pline("Where is shopdoor?"); pline("Room at (%d,%d),(%d,%d).", sroom->lx, sroom->ly, sroom->hx, sroom->hy); - pline("doormax=%d doorct=%d fdoor=%d", doorindex, sroom->doorct, + pline("doormax=%d doorct=%d fdoor=%d", g.doorindex, sroom->doorct, sh); while (j--) { pline("door [%d,%d]", doors[sh].x, doors[sh].y); diff --git a/src/sounds.c b/src/sounds.c index 1dd8631f8..65f9f35f7 100644 --- a/src/sounds.c +++ b/src/sounds.c @@ -505,7 +505,7 @@ register struct monst *mtmp; return 0; /* leader might be poly'd; if he can still speak, give leader speech */ - if (mtmp->m_id == quest_status.leader_m_id && msound > MS_ANIMAL) + if (mtmp->m_id == g.quest_status.leader_m_id && msound > MS_ANIMAL) msound = MS_LEADER; /* make sure it's your role's quest guardian; adjust if not */ else if (msound == MS_GUARDIAN && ptr != &mons[urole.guardnum]) @@ -720,7 +720,7 @@ register struct monst *mtmp; You("freeze for a moment."); nomul(-2); g.multi_reason = "scared by rattling"; - nomovemsg = 0; + g.nomovemsg = 0; break; case MS_LAUGH: { static const char *const laugh_msg[4] = { diff --git a/src/sp_lev.c b/src/sp_lev.c index 63b71050b..a838e6509 100644 --- a/src/sp_lev.c +++ b/src/sp_lev.c @@ -748,7 +748,7 @@ maybe_add_door(x, y, droom) int x, y; struct mkroom *droom; { - if (droom->hx >= 0 && doorindex < DOORMAX && inside_room(droom, x, y)) + if (droom->hx >= 0 && g.doorindex < DOORMAX && inside_room(droom, x, y)) add_door(x, y, droom); } @@ -1260,7 +1260,7 @@ xchar rtype, rlit; split_rects(r1, &r2); if (!vault) { - smeq[g.nroom] = g.nroom; + g.smeq[g.nroom] = g.nroom; add_room(xabs, yabs, xabs + wtmp - 1, yabs + htmp - 1, rlit, rtype, FALSE); } else { @@ -4650,7 +4650,7 @@ struct sp_coder *coder; if (irregular) { g.min_rx = g.max_rx = dx1; g.min_ry = g.max_ry = dy1; - smeq[g.nroom] = g.nroom; + g.smeq[g.nroom] = g.nroom; flood_fill_rm(dx1, dy1, g.nroom + ROOMOFFSET, OV_i(rlit), TRUE); add_room(g.min_rx, g.min_ry, g.max_rx, g.max_ry, FALSE, OV_i(rtype), TRUE); diff --git a/src/spell.c b/src/spell.c index 7238e2385..6a40cea78 100644 --- a/src/spell.c +++ b/src/spell.c @@ -354,7 +354,7 @@ learn(VOID_ARGS) context.spbook.o_id = 0; nomul(context.spbook.delay); /* remaining delay is uninterrupted */ g.multi_reason = "reading a book"; - nomovemsg = 0; + g.nomovemsg = 0; context.spbook.delay = 0; return 0; } @@ -557,7 +557,7 @@ register struct obj *spellbook; nomul(context.spbook.delay); /* study time */ g.multi_reason = "reading a book"; - nomovemsg = 0; + g.nomovemsg = 0; context.spbook.delay = 0; if (gone || !rn2(3)) { if (!gone) @@ -575,7 +575,7 @@ register struct obj *spellbook; } nomul(context.spbook.delay); g.multi_reason = "reading a book"; - nomovemsg = 0; + g.nomovemsg = 0; context.spbook.delay = 0; return 1; } diff --git a/src/steal.c b/src/steal.c index ce523d0a7..522c23179 100644 --- a/src/steal.c +++ b/src/steal.c @@ -424,7 +424,7 @@ gotobj: /* the following is to set multi for later on */ nomul(-armordelay); g.multi_reason = "taking off clothes"; - nomovemsg = 0; + g.nomovemsg = 0; remove_worn_item(otmp, TRUE); otmp->cursed = curssv; if (g.multi < 0) { diff --git a/src/steed.c b/src/steed.c index feede89c5..de0dc5d38 100644 --- a/src/steed.c +++ b/src/steed.c @@ -350,7 +350,7 @@ boolean force; /* Quietly force this animal */ } /* setuwep handles polearms differently when you're mounted */ if (uwep && is_pole(uwep)) - unweapon = FALSE; + g.unweapon = FALSE; u.usteed = mtmp; remove_monster(mtmp->mx, mtmp->my); teleds(mtmp->mx, mtmp->my, TRUE); @@ -683,7 +683,7 @@ int reason; /* Player was thrown off etc. */ context.botl = TRUE; /* polearms behave differently when not mounted */ if (uwep && is_pole(uwep)) - unweapon = TRUE; + g.unweapon = TRUE; return; } diff --git a/src/teleport.c b/src/teleport.c index 9aedc0c3e..e7accb8f7 100644 --- a/src/teleport.c +++ b/src/teleport.c @@ -201,30 +201,30 @@ int x1, y1, x2, y2; { if (!isok(x2, y2)) return FALSE; - if (dndest.nlx > 0) { + if (g.dndest.nlx > 0) { /* if inside a restricted region, can't teleport outside */ - if (within_bounded_area(x1, y1, dndest.nlx, dndest.nly, dndest.nhx, - dndest.nhy) - && !within_bounded_area(x2, y2, dndest.nlx, dndest.nly, - dndest.nhx, dndest.nhy)) + if (within_bounded_area(x1, y1, g.dndest.nlx, g.dndest.nly, g.dndest.nhx, + g.dndest.nhy) + && !within_bounded_area(x2, y2, g.dndest.nlx, g.dndest.nly, + g.dndest.nhx, g.dndest.nhy)) return FALSE; /* and if outside, can't teleport inside */ - if (!within_bounded_area(x1, y1, dndest.nlx, dndest.nly, dndest.nhx, - dndest.nhy) - && within_bounded_area(x2, y2, dndest.nlx, dndest.nly, dndest.nhx, - dndest.nhy)) + if (!within_bounded_area(x1, y1, g.dndest.nlx, g.dndest.nly, g.dndest.nhx, + g.dndest.nhy) + && within_bounded_area(x2, y2, g.dndest.nlx, g.dndest.nly, g.dndest.nhx, + g.dndest.nhy)) return FALSE; } - if (updest.nlx > 0) { /* ditto */ - if (within_bounded_area(x1, y1, updest.nlx, updest.nly, updest.nhx, - updest.nhy) - && !within_bounded_area(x2, y2, updest.nlx, updest.nly, - updest.nhx, updest.nhy)) + if (g.updest.nlx > 0) { /* ditto */ + if (within_bounded_area(x1, y1, g.updest.nlx, g.updest.nly, g.updest.nhx, + g.updest.nhy) + && !within_bounded_area(x2, y2, g.updest.nlx, g.updest.nly, + g.updest.nhx, g.updest.nhy)) return FALSE; - if (!within_bounded_area(x1, y1, updest.nlx, updest.nly, updest.nhx, - updest.nhy) - && within_bounded_area(x2, y2, updest.nlx, updest.nly, updest.nhx, - updest.nhy)) + if (!within_bounded_area(x1, y1, g.updest.nlx, g.updest.nly, g.updest.nhx, + g.updest.nhy) + && within_bounded_area(x2, y2, g.updest.nlx, g.updest.nly, g.updest.nhx, + g.updest.nhy)) return FALSE; } return TRUE; @@ -725,7 +725,7 @@ level_tele() * we let negative values requests fall into the "heaven" loop. */ if (In_quest(&u.uz) && newlev > 0) - newlev = newlev + dungeons[u.uz.dnum].depth_start - 1; + newlev = newlev + g.dungeons[u.uz.dnum].depth_start - 1; } else { /* involuntary level tele */ random_levtport: newlev = random_teleport_level(); @@ -762,11 +762,11 @@ level_tele() if (newlev < 0 && !force_dest) { if (*u.ushops0) { /* take unpaid inventory items off of shop bills */ - in_mklev = TRUE; /* suppress map update */ + g.in_mklev = TRUE; /* suppress map update */ u_left_shop(u.ushops0, TRUE); /* you're now effectively out of the shop */ *u.ushops0 = *u.ushops = '\0'; - in_mklev = FALSE; + g.in_mklev = FALSE; } if (newlev <= -10) { You("arrive in heaven."); @@ -819,7 +819,7 @@ level_tele() teleport out of the dungeon and float or fly down to the surface but then actually arrive back inside the dungeon] */ } else if (u.uz.dnum == medusa_level.dnum - && newlev >= dungeons[u.uz.dnum].depth_start + && newlev >= g.dungeons[u.uz.dnum].depth_start + dunlevs_in_dungeon(&u.uz)) { if (!(wizard && force_dest)) find_hell(&newlevel); @@ -828,9 +828,9 @@ level_tele() * the last level of Gehennom is forbidden. */ if (!wizard && Inhell && !u.uevent.invoked - && newlev >= (dungeons[u.uz.dnum].depth_start + && newlev >= (g.dungeons[u.uz.dnum].depth_start + dunlevs_in_dungeon(&u.uz) - 1)) { - newlev = dungeons[u.uz.dnum].depth_start + newlev = g.dungeons[u.uz.dnum].depth_start + dunlevs_in_dungeon(&u.uz) - 2; pline("Sorry..."); } @@ -957,23 +957,23 @@ struct monst *mtmp; yy = mtmp->my; if (!xx) { /* no current location (migrating monster arrival) */ - if (dndest.nlx && On_W_tower_level(&u.uz)) + if (g.dndest.nlx && On_W_tower_level(&u.uz)) return (((yy & 2) != 0) /* inside xor not within */ - ^ !within_bounded_area(x, y, dndest.nlx, dndest.nly, - dndest.nhx, dndest.nhy)); - if (updest.lx && (yy & 1) != 0) /* moving up */ - return (within_bounded_area(x, y, updest.lx, updest.ly, - updest.hx, updest.hy) - && (!updest.nlx - || !within_bounded_area(x, y, updest.nlx, updest.nly, - updest.nhx, updest.nhy))); - if (dndest.lx && (yy & 1) == 0) /* moving down */ - return (within_bounded_area(x, y, dndest.lx, dndest.ly, - dndest.hx, dndest.hy) - && (!dndest.nlx - || !within_bounded_area(x, y, dndest.nlx, dndest.nly, - dndest.nhx, dndest.nhy))); + ^ !within_bounded_area(x, y, g.dndest.nlx, g.dndest.nly, + g.dndest.nhx, g.dndest.nhy)); + if (g.updest.lx && (yy & 1) != 0) /* moving up */ + return (within_bounded_area(x, y, g.updest.lx, g.updest.ly, + g.updest.hx, g.updest.hy) + && (!g.updest.nlx + || !within_bounded_area(x, y, g.updest.nlx, g.updest.nly, + g.updest.nhx, g.updest.nhy))); + if (g.dndest.lx && (yy & 1) == 0) /* moving down */ + return (within_bounded_area(x, y, g.dndest.lx, g.dndest.ly, + g.dndest.hx, g.dndest.hy) + && (!g.dndest.nlx + || !within_bounded_area(x, y, g.dndest.nlx, g.dndest.nly, + g.dndest.nhx, g.dndest.nhy))); } else { /* [try to] prevent a shopkeeper or temple priest from being sent out of his room (caller might resort to goodpos() if @@ -1262,7 +1262,7 @@ register struct obj *obj; obj_extract_self(obj); otx = obj->ox; oty = obj->oy; - restricted_fall = (otx == 0 && dndest.lx); + restricted_fall = (otx == 0 && g.dndest.lx); do { tx = rn1(COLNO - 3, 2); ty = rn2(ROWNO); @@ -1270,19 +1270,19 @@ register struct obj *obj; break; } while (!goodpos(tx, ty, (struct monst *) 0, 0) || (restricted_fall - && (!within_bounded_area(tx, ty, dndest.lx, dndest.ly, - dndest.hx, dndest.hy) - || (dndest.nlx + && (!within_bounded_area(tx, ty, g.dndest.lx, g.dndest.ly, + g.dndest.hx, g.dndest.hy) + || (g.dndest.nlx && within_bounded_area(tx, ty, - dndest.nlx, dndest.nly, - dndest.nhx, dndest.nhy)))) + g.dndest.nlx, g.dndest.nly, + g.dndest.nhx, g.dndest.nhy)))) /* on the Wizard Tower levels, objects inside should stay inside and objects outside should stay outside */ - || (dndest.nlx && On_W_tower_level(&u.uz) - && within_bounded_area(tx, ty, dndest.nlx, dndest.nly, - dndest.nhx, dndest.nhy) - != within_bounded_area(otx, oty, dndest.nlx, dndest.nly, - dndest.nhx, dndest.nhy))); + || (g.dndest.nlx && On_W_tower_level(&u.uz) + && within_bounded_area(tx, ty, g.dndest.nlx, g.dndest.nly, + g.dndest.nhx, g.dndest.nhy) + != within_bounded_area(otx, oty, g.dndest.nlx, g.dndest.nly, + g.dndest.nhx, g.dndest.nhy))); if (flooreffects(obj, tx, ty, "fall")) { return FALSE; @@ -1342,12 +1342,12 @@ random_teleport_level() no one can randomly teleport past it */ if (dunlev_reached(&u.uz) < qlocate_depth) bottom = qlocate_depth; - min_depth = dungeons[u.uz.dnum].depth_start; - max_depth = bottom + (dungeons[u.uz.dnum].depth_start - 1); + min_depth = g.dungeons[u.uz.dnum].depth_start; + max_depth = bottom + (g.dungeons[u.uz.dnum].depth_start - 1); } else { min_depth = 1; max_depth = - dunlevs_in_dungeon(&u.uz) + (dungeons[u.uz.dnum].depth_start - 1); + dunlevs_in_dungeon(&u.uz) + (g.dungeons[u.uz.dnum].depth_start - 1); /* can't reach Sanctum if the invocation hasn't been performed */ if (Inhell && !u.uevent.invoked) max_depth -= 1; diff --git a/src/timeout.c b/src/timeout.c index ea9c4e20c..0230eda7c 100644 --- a/src/timeout.c +++ b/src/timeout.c @@ -136,7 +136,7 @@ stoned_dialogue() stop_occupation(); nomul(-3); /* can't move anymore */ g.multi_reason = "getting stoned"; - nomovemsg = You_can_move_again; /* not unconscious */ + g.nomovemsg = You_can_move_again; /* not unconscious */ /* "your limbs have turned to stone" so terminate wounded legs */ if (Wounded_legs && !u.usteed) heal_legs(2); @@ -676,7 +676,7 @@ nh_timeout() slip_or_trip(); nomul(-2); g.multi_reason = "fumbling"; - nomovemsg = ""; + g.nomovemsg = ""; /* The more you are carrying the more likely you * are to make noise when you fumble. Adjustments * to this number must be thoroughly play tested. @@ -719,7 +719,7 @@ boolean wakeup_msg; } /* early wakeup from combat won't be possible until next monster turn */ u.usleep = monstermoves; - nomovemsg = wakeup_msg ? "You wake up." : You_can_move_again; + g.nomovemsg = wakeup_msg ? "You wake up." : You_can_move_again; } /* Attach an egg hatch timeout to the given egg. @@ -1584,7 +1584,7 @@ do_storms() stop_occupation(); nomul(-3); g.multi_reason = "hiding from thunderstorm"; - nomovemsg = 0; + g.nomovemsg = 0; } } else You_hear("a rumbling noise."); diff --git a/src/topten.c b/src/topten.c index e35c288c5..92bc4a648 100644 --- a/src/topten.c +++ b/src/topten.c @@ -333,7 +333,7 @@ struct toptenentry *tt; #ifdef XLOGFILE -/* as tab is never used in eg. plname or death, no need to mangle those. */ +/* as tab is never used in eg. g.plname or death, no need to mangle those. */ STATIC_OVL void writexlentry(rfile, tt, how) FILE *rfile; @@ -361,7 +361,7 @@ int how; formatkiller(tmpbuf, sizeof tmpbuf, how, FALSE); Fprintf(rfile, "%s%cname=%s%cdeath=%s", buf, /* (already includes separator) */ - XLOG_SEP, plname, XLOG_SEP, tmpbuf); + XLOG_SEP, g.plname, XLOG_SEP, tmpbuf); if (g.multi) Fprintf(rfile, "%cwhile=%s", XLOG_SEP, g.multi_reason ? g.multi_reason : "helpless"); @@ -551,7 +551,7 @@ time_t when; copynchars(t0->plrace, urace.filecode, ROLESZ); copynchars(t0->plgend, genders[flags.female].filecode, ROLESZ); copynchars(t0->plalign, aligns[1 - u.ualign.type].filecode, ROLESZ); - copynchars(t0->name, plname, NAMSZ); + copynchars(t0->name, g.plname, NAMSZ); formatkiller(t0->death, sizeof t0->death, how, TRUE); t0->birthdate = yyyymmdd(ubirthday); t0->deathdate = yyyymmdd(when); @@ -880,7 +880,7 @@ boolean so; } Sprintf(eos(linebuf), fmt, arg); } else { - Sprintf(eos(linebuf), " in %s", dungeons[t1->deathdnum].dname); + Sprintf(eos(linebuf), " in %s", g.dungeons[t1->deathdnum].dname); if (t1->deathdnum != knox_level.dnum) Sprintf(eos(linebuf), " on level %d", t1->deathlev); if (t1->deathlev != t1->maxlvl) @@ -1061,7 +1061,7 @@ char **argv; playerct = 0; players = (const char **) 0; } else { - player0 = plname; + player0 = g.plname; if (!*player0) #ifdef AMIGA player0 = "all"; /* single user system */ diff --git a/src/trap.c b/src/trap.c index 9a31439ba..e88758348 100644 --- a/src/trap.c +++ b/src/trap.c @@ -2642,7 +2642,7 @@ register struct monst *mtmp; trapkilled = TRUE; if (unconscious()) { g.multi = -1; - nomovemsg = "The explosion awakens you!"; + g.nomovemsg = "The explosion awakens you!"; } break; case POLY_TRAP: @@ -2750,7 +2750,7 @@ boolean byplayer; if (cansee(mon->mx, mon->my)) pline("%s turns to stone.", Monnam(mon)); if (byplayer) { - stoned = TRUE; + g.stoned = TRUE; xkilled(mon, XKILL_NOMSG); } else monstone(mon); @@ -4905,7 +4905,7 @@ boolean disarm; nomul(-d(5, 6)); g.multi_reason = "frozen by a trap"; exercise(A_DEX, FALSE); - nomovemsg = You_can_move_again; + g.nomovemsg = You_can_move_again; } else You("momentarily stiffen."); break; @@ -5197,10 +5197,10 @@ unconscious() return FALSE; return (boolean) (u.usleep - || (nomovemsg - && (!strncmp(nomovemsg, "You awake", 9) - || !strncmp(nomovemsg, "You regain con", 14) - || !strncmp(nomovemsg, "You are consci", 14)))); + || (g.nomovemsg + && (!strncmp(g.nomovemsg, "You awake", 9) + || !strncmp(g.nomovemsg, "You regain con", 14) + || !strncmp(g.nomovemsg, "You are consci", 14)))); } static const char lava_killer[] = "molten lava"; @@ -5395,7 +5395,7 @@ maybe_finish_sokoban() { struct trap *t; - if (Sokoban && !in_mklev) { + if (Sokoban && !g.in_mklev) { /* scan all remaining traps, ignoring any created by the hero; if this level has no more pits or holes, the current sokoban puzzle has been solved */ diff --git a/src/uhitm.c b/src/uhitm.c index 6af37c451..520ee9271 100644 --- a/src/uhitm.c +++ b/src/uhitm.c @@ -405,8 +405,8 @@ register struct monst *mtmp; if (u.twoweap && !can_twoweapon()) untwoweapon(); - if (unweapon) { - unweapon = FALSE; + if (g.unweapon) { + g.unweapon = FALSE; if (flags.verbose) { if (uwep) You("begin bashing monsters with %s.", yname(uwep)); @@ -752,7 +752,7 @@ int dieroll; mon_nam(mon), more_than_1 ? "one of " : "", yname(obj)); if (!more_than_1) - uwepgone(); /* set unweapon */ + uwepgone(); /* set g.unweapon */ useup(obj); if (!more_than_1) obj = (struct obj *) 0; @@ -934,7 +934,7 @@ int dieroll; /* egg is always either used up or transformed, so next hand-to-hand attack should yield a "bashing" mesg */ if (obj == uwep) - unweapon = TRUE; + g.unweapon = TRUE; if (obj->spe && obj->corpsenm >= LOW_PM) { if (obj->quan < 5L) change_luck((schar) - (obj->quan)); @@ -1162,7 +1162,7 @@ int dieroll; /* (must be either primary or secondary weapon to get here) */ u.twoweap = FALSE; /* untwoweapon() is too verbose here */ if (obj == uwep) - uwepgone(); /* set unweapon */ + uwepgone(); /* set g.unweapon */ /* minor side-effect: broken lance won't split puddings */ useup(obj); obj = 0; @@ -1234,7 +1234,7 @@ int dieroll; if (!hittxt /*( thrown => obj exists )*/ && (!destroyed - || (thrown && m_shot.n > 1 && m_shot.o == obj->otyp))) { + || (thrown && g.m_shot.n > 1 && g.m_shot.o == obj->otyp))) { if (thrown) hit(mshot_xname(obj), mon, exclam(tmp)); else if (!flags.verbose) @@ -2037,7 +2037,7 @@ register struct attack *mattk; #ifdef LINT /* static char msgbuf[BUFSZ]; */ char msgbuf[BUFSZ]; #else - static char msgbuf[BUFSZ]; /* for nomovemsg */ + static char msgbuf[BUFSZ]; /* for g.nomovemsg */ #endif register int tmp; register int dam = d((int) mattk->damn, (int) mattk->damd); @@ -2145,7 +2145,7 @@ register struct attack *mattk; tmp *= 2; nomul(-tmp); g.multi_reason = "digesting something"; - nomovemsg = msgbuf; + g.nomovemsg = msgbuf; } else pline1(msgbuf); if (pd == &mons[PM_GREEN_SLIME]) { @@ -2647,7 +2647,7 @@ boolean wep_was_destroyed; You("are frozen by %s gaze!", s_suffix(mon_nam(mon))); nomul((ACURR(A_WIS) > 12 || rn2(4)) ? -tmp : -127); g.multi_reason = "frozen by a monster's gaze"; - nomovemsg = 0; + g.nomovemsg = 0; } } else { pline("%s cannot defend itself.", @@ -2659,7 +2659,7 @@ boolean wep_was_destroyed; You("momentarily stiffen."); } else { /* gelatinous cube */ You("are frozen by %s!", mon_nam(mon)); - nomovemsg = You_can_move_again; + g.nomovemsg = You_can_move_again; nomul(-tmp); g.multi_reason = "frozen by a monster"; exercise(A_DEX, FALSE); diff --git a/src/vault.c b/src/vault.c index 71605514e..66496e2b1 100644 --- a/src/vault.c +++ b/src/vault.c @@ -420,7 +420,7 @@ invault() if (u.ualign.type == A_LAWFUL /* ignore trailing text, in case player includes rank */ - && strncmpi(buf, plname, (int) strlen(plname)) != 0) { + && strncmpi(buf, g.plname, (int) strlen(g.plname)) != 0) { adjalign(-1); /* Liar! */ } @@ -1060,7 +1060,7 @@ paygd() gx = rooms[EGD(grd)->vroom].lx + rn2(2); gy = rooms[EGD(grd)->vroom].ly + rn2(2); Sprintf(buf, "To Croesus: here's the gold recovered from %s the %s.", - plname, mons[u.umonster].mname); + g.plname, mons[u.umonster].mname); make_grave(gx, gy, buf); } for (coins = invent; coins; coins = nextcoins) { diff --git a/src/vision.c b/src/vision.c index b8ce2e507..eb6d63302 100644 --- a/src/vision.c +++ b/src/vision.c @@ -520,7 +520,7 @@ int control; int oldseenv; /* previous seenv value */ vision_full_recalc = 0; /* reset flag */ - if (in_mklev || !iflags.vision_inited) + if (g.in_mklev || !iflags.vision_inited) return; /* diff --git a/src/weapon.c b/src/weapon.c index d72c18b9b..d8543c717 100644 --- a/src/weapon.c +++ b/src/weapon.c @@ -832,7 +832,7 @@ boolean verbose; /* if hero is wielding this towel, don't give "you begin bashing with your wet towel" message on next attack with it */ if (obj == uwep) - unweapon = !is_wet_towel(obj); + g.unweapon = !is_wet_towel(obj); } /* decrease a towel's wetness */ @@ -861,7 +861,7 @@ boolean verbose; /* if hero is wielding this towel and it is now dry, give "you begin bashing with your towel" message on next attack with it */ if (obj == uwep) - unweapon = !is_wet_towel(obj); + g.unweapon = !is_wet_towel(obj); } /* copy the skill level name into the given buffer */ diff --git a/src/wield.c b/src/wield.c index 405199393..23dba0729 100644 --- a/src/wield.c +++ b/src/wield.c @@ -87,7 +87,7 @@ register struct obj *obj; struct obj *olduwep = uwep; if (obj == uwep) - return; /* necessary to not set unweapon */ + return; /* necessary to not set g.unweapon */ /* This message isn't printed in the caller because it happens * *whenever* Sunsword is unwielded, from whatever cause. */ @@ -106,12 +106,12 @@ register struct obj *obj; * 3.2.2: Wielding arbitrary objects will give bashing message too. */ if (obj) { - unweapon = (obj->oclass == WEAPON_CLASS) + g.unweapon = (obj->oclass == WEAPON_CLASS) ? is_launcher(obj) || is_ammo(obj) || is_missile(obj) || (is_pole(obj) && !u.usteed) : !is_weptool(obj) && !is_wet_towel(obj); } else - unweapon = TRUE; /* for "bare hands" message */ + g.unweapon = TRUE; /* for "bare hands" message */ } STATIC_OVL boolean @@ -275,7 +275,7 @@ dowield() else if (wep == uwep) { You("are already wielding that!"); if (is_weptool(wep) || is_wet_towel(wep)) - unweapon = FALSE; /* [see setuwep()] */ + g.unweapon = FALSE; /* [see setuwep()] */ return 0; } else if (welded(uwep)) { weldmsg(uwep); @@ -591,7 +591,7 @@ const char *verb; /* "rub",&c */ if (u.twoweap) untwoweapon(); if (obj->oclass != WEAPON_CLASS) - unweapon = TRUE; + g.unweapon = TRUE; return TRUE; } @@ -685,7 +685,7 @@ uwepgone() pline("%s shining.", Tobjnam(uwep, "stop")); } setworn((struct obj *) 0, W_WEP); - unweapon = TRUE; + g.unweapon = TRUE; update_inventory(); } } diff --git a/src/windows.c b/src/windows.c index 5b7f5f616..9b9e9a05e 100644 --- a/src/windows.c +++ b/src/windows.c @@ -1147,10 +1147,10 @@ char *buf; Sprintf(tmpbuf, "%ld", uid); break; case 'n': /* player name */ - Sprintf(tmpbuf, "%s", *plname ? plname : "unknown"); + Sprintf(tmpbuf, "%s", *g.plname ? g.plname : "unknown"); break; case 'N': /* first character of player name */ - Sprintf(tmpbuf, "%c", *plname ? *plname : 'u'); + Sprintf(tmpbuf, "%c", *g.plname ? *g.plname : 'u'); break; } diff --git a/src/wizard.c b/src/wizard.c index df64a4d2d..b885745ad 100644 --- a/src/wizard.c +++ b/src/wizard.c @@ -347,9 +347,9 @@ xchar *sy; } } - if (!x && sstairs.sx) { - x = sstairs.sx; - y = sstairs.sy; + if (!x && g.sstairs.sx) { + x = g.sstairs.sx; + y = g.sstairs.sy; } if (x && y) { diff --git a/src/worn.c b/src/worn.c index 1eb1ed671..a2e504305 100644 --- a/src/worn.c +++ b/src/worn.c @@ -247,7 +247,7 @@ int adjust; /* positive => increase speed, negative => decrease */ struct obj *obj; /* item to make known if effect can be seen */ { struct obj *otmp; - boolean give_msg = !in_mklev, petrify = FALSE; + boolean give_msg = !g.in_mklev, petrify = FALSE; unsigned int oldspeed = mon->mspeed; switch (adjust) { @@ -339,11 +339,11 @@ boolean on, silently; mon->minvis = !mon->invis_blkd; break; case FAST: { - boolean save_in_mklev = in_mklev; + boolean save_in_mklev = g.in_mklev; if (silently) - in_mklev = TRUE; + g.in_mklev = TRUE; mon_adjust_speed(mon, 0, obj); - in_mklev = save_in_mklev; + g.in_mklev = save_in_mklev; break; } /* properties handled elsewhere */ @@ -379,11 +379,11 @@ boolean on, silently; mon->minvis = mon->perminvis; break; case FAST: { - boolean save_in_mklev = in_mklev; + boolean save_in_mklev = g.in_mklev; if (silently) - in_mklev = TRUE; + g.in_mklev = TRUE; mon_adjust_speed(mon, 0, obj); - in_mklev = save_in_mklev; + g.in_mklev = save_in_mklev; break; } case FIRE_RES: diff --git a/src/write.c b/src/write.c index e9e00ba38..a2985ceec 100644 --- a/src/write.c +++ b/src/write.c @@ -301,7 +301,7 @@ found: Strcpy(namebuf, OBJ_DESCR(objects[new_obj->otyp])); wipeout_text(namebuf, (6 + MAXULEV - u.ulevel) / 6, 0); } else - Sprintf(namebuf, "%s was here!", plname); + Sprintf(namebuf, "%s was here!", g.plname); You("write \"%s\" and the scroll disappears.", namebuf); useup(paper); } diff --git a/src/zap.c b/src/zap.c index d71164a96..134a0abc6 100644 --- a/src/zap.c +++ b/src/zap.c @@ -603,10 +603,10 @@ boolean adjacentok; /* False: at obj's spot only, True: nearby is allowed */ if (mtmp->m_id) { mtmp2->m_id = mtmp->m_id; /* might be bringing quest leader back to life */ - if (quest_status.leader_is_dead + if (g.quest_status.leader_is_dead /* leader_is_dead implies leader_m_id is valid */ - && mtmp2->m_id == quest_status.leader_m_id) - quest_status.leader_is_dead = FALSE; + && mtmp2->m_id == g.quest_status.leader_m_id) + g.quest_status.leader_is_dead = FALSE; } mtmp2->mx = mtmp->mx; mtmp2->my = mtmp->my; diff --git a/sys/winnt/windmain.c b/sys/winnt/windmain.c index 034d2e78f..02f906ef0 100644 --- a/sys/winnt/windmain.c +++ b/sys/winnt/windmain.c @@ -287,17 +287,17 @@ _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR);*/ if (WINDOWPORT("tty")) toggle_mouse_support(); - /* strip role,race,&c suffix; calls askname() if plname[] is empty + /* strip role,race,&c suffix; calls askname() if g.plname[] is empty or holds a generic user name like "player" or "games" */ plnamesuffix(); - set_playmode(); /* sets plname to "wizard" for wizard mode */ + set_playmode(); /* sets g.plname to "wizard" for wizard mode */ /* until the getlock code is resolved, override askname()'s setting of renameallowed; when False, player_selection() won't resent renaming as an option */ iflags.renameallowed = FALSE; /* Obtain the name of the logged on user and incorporate * it into the name. */ - Sprintf(fnamebuf, "%s-%s", get_username(0), plname); + Sprintf(fnamebuf, "%s-%s", get_username(0), g.plname); (void) fname_encode( "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_-.", '%', fnamebuf, encodedfnamebuf, BUFSZ); @@ -471,11 +471,11 @@ char *argv[]; #endif case 'u': if (argv[0][2]) - (void) strncpy(plname, argv[0] + 2, sizeof(plname) - 1); + (void) strncpy(g.plname, argv[0] + 2, sizeof(g.plname) - 1); else if (argc > 1) { argc--; argv++; - (void) strncpy(plname, argv[0], sizeof(plname) - 1); + (void) strncpy(g.plname, argv[0], sizeof(g.plname) - 1); } else raw_print("Player name expected after -u"); break; @@ -582,7 +582,7 @@ port_help() boolean authorize_wizard_mode() { - if (!strcmp(plname, WIZARD_NAME)) + if (!strcmp(g.plname, WIZARD_NAME)) return TRUE; return FALSE; } diff --git a/win/tty/wintty.c b/win/tty/wintty.c index 16a02762e..34367d984 100644 --- a/win/tty/wintty.c +++ b/win/tty/wintty.c @@ -890,7 +890,7 @@ makepicks: Sprintf(plbuf, " %s", genders[GEND].adj); else *plbuf = '\0'; /* omit redundant gender */ - Sprintf(pbuf, "%s, %s%s %s %s", plname, aligns[ALGN].adj, plbuf, + Sprintf(pbuf, "%s, %s%s %s %s", g.plname, aligns[ALGN].adj, plbuf, races[RACE].adj, (GEND == 1 && roles[ROLE].name.f) ? roles[ROLE].name.f : roles[ROLE].name.m); @@ -940,8 +940,8 @@ makepicks: GEND, ALGN; we'll override that and honor only the name */ saveROLE = ROLE, saveRACE = RACE, saveGEND = GEND, saveALGN = ALGN; - *plname = '\0'; - plnamesuffix(); /* calls askname() when plname[] is empty */ + *g.plname = '\0'; + plnamesuffix(); /* calls askname() when g.plname[] is empty */ ROLE = saveROLE, RACE = saveRACE, GEND = saveGEND, ALGN = saveALGN; break; /* getconfirmation is still True */ @@ -1167,7 +1167,7 @@ int role, race, gend; } /* - * plname is filled either by an option (-u Player or -uPlayer) or + * g.plname is filled either by an option (-u Player or -uPlayer) or * explicitly (by being the wizard) or by askname. * It may still contain a suffix denoting the role, etc. * Always called after init_nhwindows() and before display_gamewindows(). @@ -1187,7 +1187,7 @@ tty_askname() case 0: break; /* no game chosen; start new game */ case 1: - return; /* plname[] has been set */ + return; /* g.plname[] has been set */ } #endif /* SELECTSAVED */ @@ -1250,7 +1250,7 @@ tty_askname() !(c >= '0' && c <= '9' && ct > 0)) c = '_'; #endif - if (ct < (int) (sizeof plname) - 1) { + if (ct < (int) (sizeof g.plname) - 1) { #if defined(MICRO) #if defined(MSDOS) if (iflags.grmode) { @@ -1261,13 +1261,13 @@ tty_askname() #else (void) putchar(c); #endif - plname[ct++] = c; + g.plname[ct++] = c; #ifdef WIN32CON ttyDisplay->curx++; #endif } } - plname[ct] = 0; + g.plname[ct] = 0; } while (ct == 0); /* move to next line to simulate echo of user's */ diff --git a/win/win32/mhdlg.c b/win/win32/mhdlg.c index 51134332c..b4616f247 100644 --- a/win/win32/mhdlg.c +++ b/win/win32/mhdlg.c @@ -556,7 +556,7 @@ plselInitDialog(HWND hWnd) Button_SetCheck(data->control_aligns[0], BST_CHECKED); /* set player name */ - SetDlgItemText(hWnd, IDC_PLSEL_NAME, NH_A2W(plname, wbuf, sizeof(wbuf))); + SetDlgItemText(hWnd, IDC_PLSEL_NAME, NH_A2W(g.plname, wbuf, sizeof(wbuf))); plselRandomize(data); diff --git a/win/win32/mswproc.c b/win/win32/mswproc.c index 8393ea3e0..4973c0d18 100644 --- a/win/win32/mswproc.c +++ b/win/win32/mswproc.c @@ -682,7 +682,7 @@ mswin_askname(void) { logDebug("mswin_askname()\n"); - if (mswin_getlin_window("Who are you?", plname, PL_NSIZ) == IDCANCEL) { + if (mswin_getlin_window("Who are you?", g.plname, PL_NSIZ) == IDCANCEL) { bail("bye-bye"); /* not reached */ } @@ -1894,12 +1894,12 @@ mswin_outrip(winid wid, int how, time_t when) } /* Put name on stone */ - Sprintf(buf, "%s", plname); + Sprintf(buf, "%s", g.plname); buf[STONE_LINE_LEN] = 0; putstr(wid, 0, buf); /* Put $ on stone */ - Sprintf(buf, "%ld Au", done_money); + Sprintf(buf, "%ld Au", g.done_money); buf[STONE_LINE_LEN] = 0; /* It could be a *lot* of gold :-) */ putstr(wid, 0, buf); diff --git a/win/win32/winhack.c b/win/win32/winhack.c index c6941d7c0..6776b376f 100644 --- a/win/win32/winhack.c +++ b/win/win32/winhack.c @@ -216,19 +216,19 @@ WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, if (argc == 2) { TCHAR *savefile = strdup(argv[1]); - TCHAR *plname; + TCHAR *name; for (p = savefile; *p && *p != '-'; p++) ; if (*p) { /* we found a '-' */ - plname = p + 1; - for (p = plname; *p && *p != '.'; p++) + name = p + 1; + for (p = name; *p && *p != '.'; p++) ; if (*p) { if (strcmp(p + 1, "NetHack-saved-game") == 0) { *p = '\0'; argv[1] = "-u"; - argv[2] = _strdup(plname); + argv[2] = _strdup(name); argc = 3; } }