oops [all of fixes35.0 as log text]
This commit is contained in:
165
src/cmd.c
165
src/cmd.c
@@ -126,6 +126,7 @@ STATIC_PTR int NDECL(domonability);
|
||||
STATIC_PTR int NDECL(dooverview_or_wiz_where);
|
||||
#endif /* DUNGEON_OVERVIEW */
|
||||
STATIC_PTR int NDECL(dotravel);
|
||||
STATIC_PTR int NDECL(doterrain);
|
||||
# ifdef WIZARD
|
||||
STATIC_PTR int NDECL(wiz_wish);
|
||||
STATIC_PTR int NDECL(wiz_identify);
|
||||
@@ -142,7 +143,8 @@ STATIC_PTR int NDECL(wiz_show_vision);
|
||||
STATIC_PTR int NDECL(wiz_smell);
|
||||
STATIC_PTR int NDECL(wiz_mon_polycontrol);
|
||||
STATIC_PTR int NDECL(wiz_show_wmodes);
|
||||
STATIC_PTR int NDECL(wiz_map_terrain);
|
||||
STATIC_DCL void NDECL(wiz_map_levltyp);
|
||||
STATIC_DCL void NDECL(wiz_levltyp_legend);
|
||||
#if defined(__BORLANDC__) && !defined(_WIN32)
|
||||
extern void FDECL(show_borlandc_stats, (winid));
|
||||
#endif
|
||||
@@ -820,9 +822,9 @@ wiz_show_wmodes(VOID_ARGS)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* #terrain command */
|
||||
STATIC_PTR int
|
||||
wiz_map_terrain(VOID_ARGS)
|
||||
/* wizard mode variant of #terrain; internal levl[][].typ values in base-36 */
|
||||
STATIC_OVL void
|
||||
wiz_map_levltyp(VOID_ARGS)
|
||||
{
|
||||
winid win;
|
||||
int x, y, terrain;
|
||||
@@ -921,10 +923,91 @@ wiz_map_terrain(VOID_ARGS)
|
||||
}
|
||||
|
||||
display_nhwindow(win, TRUE);
|
||||
/* TODO? create legend of levl[][].typ codes and allow switching
|
||||
back and forth between it and coded map display */
|
||||
destroy_nhwindow(win);
|
||||
return 0;
|
||||
return;
|
||||
}
|
||||
|
||||
/* temporary? hack, since level type codes aren't the same as screen
|
||||
symbols and only the latter have easily accessible descriptions */
|
||||
static const char *levltyp[] = {
|
||||
"stone",
|
||||
"vertical wall",
|
||||
"horizontal wall",
|
||||
"top-left corner wall",
|
||||
"top-right corner wall",
|
||||
"bottom-left corner wall",
|
||||
"bottom-right corner wall",
|
||||
"cross wall",
|
||||
"tee-up wall",
|
||||
"tee-down wall",
|
||||
"tee-left wall",
|
||||
"tee-right wall",
|
||||
"drawbridge wall",
|
||||
"tree",
|
||||
"secret door",
|
||||
"secret corridor",
|
||||
"pool",
|
||||
"moat",
|
||||
"water",
|
||||
"drawbridge up",
|
||||
"lava pool",
|
||||
"iron bars",
|
||||
"door",
|
||||
"corridor",
|
||||
"room",
|
||||
"stairs",
|
||||
"ladder",
|
||||
"fountain",
|
||||
"throne",
|
||||
"sink",
|
||||
"grave",
|
||||
"altar",
|
||||
"ice",
|
||||
"drawbridge down",
|
||||
"air",
|
||||
"cloud",
|
||||
/* not a real terrain type, but used for undiggable stone
|
||||
by wiz_map_levltyp() */
|
||||
"unreachable/undiggable",
|
||||
/* padding in case the number of entries above is odd */
|
||||
""
|
||||
};
|
||||
|
||||
/* explanation of base-36 output from wiz_map_levltyp() */
|
||||
STATIC_OVL void
|
||||
wiz_levltyp_legend(VOID_ARGS)
|
||||
{
|
||||
winid win;
|
||||
int i, j, last, c;
|
||||
const char *dsc, *fmt;
|
||||
char buf[BUFSZ];
|
||||
|
||||
win = create_nhwindow(NHW_TEXT);
|
||||
putstr(win, 0, "#terrain encodings:");
|
||||
putstr(win, 0, "");
|
||||
fmt = " %c - %-28s"; /* TODO: include tab-separated variant for win32 */
|
||||
*buf = '\0';
|
||||
/* output in pairs, left hand column holds [0],[1],...,[N/2-1]
|
||||
and right hand column holds [N/2],[N/2+1],...,[N-1];
|
||||
N ('last') will always be even, and may or may not include
|
||||
the empty string entry to pad out the final pair, depending
|
||||
upon how many other entries are present in levltyp[] */
|
||||
last = SIZE(levltyp) & ~1;
|
||||
for (i = 0; i < last / 2; ++i)
|
||||
for (j = i; j < last; j += last / 2) {
|
||||
dsc = levltyp[j];
|
||||
c = !*dsc ? ' ' : !strncmp(dsc, "unreachable", 11) ? '*' :
|
||||
/* same int-to-char conversion as wiz_map_levltyp() */
|
||||
(j < 10) ? '0' + j : (j < 36) ? 'a' + j - 10 : 'A' + j - 36;
|
||||
Sprintf(eos(buf), fmt, c, dsc);
|
||||
if (j > i) {
|
||||
putstr(win, 0, buf);
|
||||
*buf = '\0';
|
||||
}
|
||||
}
|
||||
display_nhwindow(win, TRUE);
|
||||
destroy_nhwindow(win);
|
||||
return;
|
||||
}
|
||||
|
||||
/* #wizsmell command - test usmellmon(). */
|
||||
@@ -983,6 +1066,71 @@ wiz_rumor_check(VOID_ARGS)
|
||||
}
|
||||
#endif /* WIZARD */
|
||||
|
||||
/* #terrain command */
|
||||
STATIC_PTR int
|
||||
doterrain(VOID_ARGS)
|
||||
{
|
||||
int which = 1; /* show known map, ala crawl's '|' command */
|
||||
|
||||
if (discover || wizard) {
|
||||
/* explore mode #terrain: choose between known map and full map;
|
||||
wizard mode #terrain: choose between known map, full map,
|
||||
a dump of the internal levl[][].typ codes w/ level flags,
|
||||
and a legend for the levl[][].typ codes */
|
||||
winid men;
|
||||
menu_item *sel;
|
||||
anything any;
|
||||
int n;
|
||||
|
||||
men = create_nhwindow(NHW_MENU);
|
||||
any = zeroany;
|
||||
any.a_int = 1;
|
||||
add_menu(men, NO_GLYPH, &any, 0, 0, ATR_NONE,
|
||||
"known map without monsters, objects, and traps",
|
||||
MENU_SELECTED);
|
||||
any.a_int = 2;
|
||||
add_menu(men, NO_GLYPH, &any, 0, 0, ATR_NONE,
|
||||
"full map without monsters, objects, and traps",
|
||||
MENU_UNSELECTED);
|
||||
#ifdef WIZARD
|
||||
if (wizard) {
|
||||
any.a_int = 3;
|
||||
add_menu(men, NO_GLYPH, &any, 0, 0, ATR_NONE,
|
||||
"internal levl[][].typ codes in base-36",
|
||||
MENU_UNSELECTED);
|
||||
any.a_int = 4;
|
||||
add_menu(men, NO_GLYPH, &any, 0, 0, ATR_NONE,
|
||||
"legend of base-36 levl[][].typ codes",
|
||||
MENU_UNSELECTED);
|
||||
}
|
||||
#endif
|
||||
end_menu(men, "View which?");
|
||||
|
||||
n = select_menu(men, PICK_ONE, &sel);
|
||||
destroy_nhwindow(men);
|
||||
/*
|
||||
* n < 0: player used ESC to cancel;
|
||||
* n == 0: preselected entry was explicitly chosen and got toggled off;
|
||||
* n == 1: preselected entry was implicitly chosen via <space>|<enter>;
|
||||
* n == 2: another entry was explicitly chosen, so skip preselected one
|
||||
*/
|
||||
which = (n < 0) ? -1 : (n == 0) ? 1 : sel[0].item.a_int;
|
||||
if (n > 1 && which == 1) which = sel[1].item.a_int;
|
||||
if (n > 0) free((genericptr_t)sel);
|
||||
} /* discover || wizard */
|
||||
|
||||
switch (which) {
|
||||
case 1: reveal_terrain(FALSE); break; /* known map */
|
||||
case 2: reveal_terrain(TRUE); break; /* full map */
|
||||
#ifdef WIZARD
|
||||
case 3: wiz_map_levltyp(); break; /* map internals */
|
||||
case 4: wiz_levltyp_legend(); break; /* internal details */
|
||||
#endif
|
||||
default: break;
|
||||
}
|
||||
return 0; /* no time elapses */
|
||||
}
|
||||
|
||||
|
||||
/* -enlightenment and conduct- */
|
||||
static winid en_win = WIN_ERR;
|
||||
@@ -2330,6 +2478,7 @@ struct ext_func_tab extcmdlist[] = {
|
||||
#endif
|
||||
{"rub", "rub a lamp or a stone", dorub, FALSE},
|
||||
{"sit", "sit down", dosit, FALSE},
|
||||
{"terrain", "show map without obstructions", doterrain, TRUE},
|
||||
{"tip", "empty a container", dotip, FALSE},
|
||||
{"turn", "turn undead", doturn, TRUE},
|
||||
{"twoweapon", "toggle two-weapon combat", dotwoweapon, FALSE},
|
||||
@@ -2356,7 +2505,6 @@ struct ext_func_tab extcmdlist[] = {
|
||||
#endif
|
||||
{(char *)0, (char *)0, donull, TRUE}, /* seenv */
|
||||
{(char *)0, (char *)0, donull, TRUE}, /* stats */
|
||||
{(char *)0, (char *)0, donull, TRUE}, /* terrain */
|
||||
{(char *)0, (char *)0, donull, TRUE}, /* timeout */
|
||||
{(char *)0, (char *)0, donull, TRUE}, /* vanquished */
|
||||
{(char *)0, (char *)0, donull, TRUE}, /* vision */
|
||||
@@ -2386,7 +2534,6 @@ static const struct ext_func_tab debug_extcmdlist[] = {
|
||||
#endif
|
||||
{"seenv", "show seen vectors", wiz_show_seenv, TRUE},
|
||||
{"stats", "show memory statistics", wiz_show_stats, TRUE},
|
||||
{"terrain", "show map topology", wiz_map_terrain, TRUE},
|
||||
{"timeout", "look at timeout queue", wiz_timeout_queue, TRUE},
|
||||
{"vanquished", "list vanquished monsters", dovanquished, TRUE},
|
||||
{"vision", "show vision array", wiz_show_vision, TRUE},
|
||||
|
||||
Reference in New Issue
Block a user