diff --git a/doc/Guidebook.mn b/doc/Guidebook.mn index f5adc8b6e..de4e6c01a 100644 --- a/doc/Guidebook.mn +++ b/doc/Guidebook.mn @@ -2859,6 +2859,8 @@ Boldface monsters and ``\fB--More--\fP'' (default off). Persistent. .lp statushilites Enable coloring of status fields (default off). See ``Configuring Status Hilites'' for further information. +.lp status_updates +Allow updates to the status lines at the bottom of the screen (default true). .lp suppress_alert This option may be set to a NetHack version level to suppress alert notification messages about feature changes for that @@ -3707,6 +3709,10 @@ was interrupted. .lp whatis_coord:compass When targeting with cursor, describe the cursor position with coordinates relative to your character. +.lp nostatus_updates +Prevent updates to the status lines at the bottom of the screen, if +your screen-reader reads those lines. The same information can be +seen via the #attributes command. .hn 2 Global Configuration for System Administrators .pg diff --git a/doc/Guidebook.tex b/doc/Guidebook.tex index 0f3c83504..7c2d3e6f1 100644 --- a/doc/Guidebook.tex +++ b/doc/Guidebook.tex @@ -3479,6 +3479,9 @@ Boldface monsters and ``{\tt --More--}'' (default off). Persistent. Enable coloring of status fields (default off). See ``{\it Configuring Status Hilites\/}'' for further information. %.lp +\item[\ib{status\verb+_+updates}] +Allow updates to the status lines at the bottom of the screen (default true). +%.lp \item[\ib{suppress\verb+_+alert}] This option may be set to a NetHack version level to suppress alert notification messages about feature changes for that @@ -4509,6 +4512,11 @@ was interrupted. \item[\ib{whatis\verb+_+coord:compass}] When targeting with cursor, describe the cursor position with coordinates relative to your character. +%.lp +\item[\ib{nostatus\verb+_+updates}] +Prevent updates to the status lines at the bottom of the screen, if +your screen-reader reads those lines. The same information can be +seen via the #attributes command. \elist %.hn2 diff --git a/doc/fixes36.1 b/doc/fixes36.1 index 7142c52ca..56916b68e 100644 --- a/doc/fixes36.1 +++ b/doc/fixes36.1 @@ -364,6 +364,8 @@ some death by the-poison-was-deadly situations left stale non-zero HP shown on the status line during final disclosure when sitting at a trap spot: You sit down. You step on a level teleporter. (likewise for polymorph trap, and similar issue for web) +show all statusline information in #attributes +add option status_updates to prevent bottom of screen status line updates Fixes to Post-3.6.0 Problems that Were Exposed Via git Repository diff --git a/include/flag.h b/include/flag.h index 4927cb632..612a14720 100644 --- a/include/flag.h +++ b/include/flag.h @@ -232,6 +232,7 @@ struct instance_flags { boolean echo; /* 1 to echo characters */ boolean use_menu_color; /* use color in menus; only if wc_color */ boolean use_status_hilites; /* use color in status line */ + boolean status_updates; /* allow updates to bottom status lines */ boolean use_background_glyph; /* use background glyph when appropriate */ boolean hilite_pile; /* mark piles of objects with a hilite */ boolean autodescribe; /* autodescribe mode in getpos() */ diff --git a/src/botl.c b/src/botl.c index 8fc6ab521..f39086174 100644 --- a/src/botl.c +++ b/src/botl.c @@ -213,7 +213,7 @@ bot2() void bot() { - if (youmonst.data) { + if (youmonst.data && iflags.status_updates) { bot1(); bot2(); } @@ -436,7 +436,7 @@ bot() if (!blinit) panic("bot before init."); - if (!youmonst.data) { + if (!youmonst.data || !iflags.status_updates) { context.botl = context.botlx = 0; update_all = FALSE; return; diff --git a/src/cmd.c b/src/cmd.c index a1020bdba..4d39a8ba6 100644 --- a/src/cmd.c +++ b/src/cmd.c @@ -1592,10 +1592,44 @@ characteristics_enlightenment(mode, final) int mode; int final; { + char buf[BUFSZ]; + int hp = Upolyd ? u.mh : u.uhp; + int hpmax = Upolyd ? u.mhmax : u.uhpmax; + putstr(en_win, 0, ""); /* separator after background */ putstr(en_win, 0, final ? "Final Characteristics:" : "Current Characteristics:"); + if (hp < 0) + hp = 0; + Sprintf(buf, "%d hit points (max:%d)", hp, hpmax); + you_have(buf, ""); + + Sprintf(buf, "%d magic power (max:%d)", u.uen, u.uenmax); + you_have(buf, ""); + + Sprintf(buf, "%d", u.uac); + enl_msg("Your armor class ", "is ", "was ", buf, ""); + + if (Upolyd) { + Sprintf(buf, "%d hit dice", mons[u.umonnum].mlevel); + } else { + /* flags.showexp does not matter */ + /* experience level is already shown in the Background section */ + Sprintf(buf, "%-1ld experience point%s", + u.uexp, u.uexp == 1 ? "" : "s"); + } + you_have(buf, ""); + + Sprintf(buf, " You entered the dungeon %ld turn%s ago", + moves, moves == 1 ? "" : "s"); + putstr(en_win, 0, buf); + +#ifdef SCORE_ON_BOTL + Sprintf(buf, "%ld", botl_score()); + enl_msg("Your score ", "is ", "was ", buf, ""); +#endif + /* bottom line order */ one_characteristic(mode, final, A_STR); /* strength */ one_characteristic(mode, final, A_DEX); /* dexterity */ diff --git a/src/mon.c b/src/mon.c index 23ebcdb45..dbfbd5a40 100644 --- a/src/mon.c +++ b/src/mon.c @@ -2518,8 +2518,8 @@ struct monst *mtmp; /* mnearto() * Put monster near (or at) location if possible. * Returns: - * 1 - if a monster was moved from x, y to put mtmp at x, y. - * 0 - in most cases. + * true if relocation was successful + * false otherwise */ boolean mnearto(mtmp, x, y, move_other) @@ -2532,7 +2532,7 @@ boolean move_other; /* make sure mtmp gets to x, y! so move m_at(x, y) */ coord mm; if (mtmp->mx == x && mtmp->my == y) - return FALSE; + return TRUE; if (move_other && (othermon = m_at(x, y)) != 0) { if (othermon->wormno) @@ -2570,7 +2570,7 @@ boolean move_other; /* make sure mtmp gets to x, y! so move m_at(x, y) */ } } - return FALSE; + return TRUE; } /* monster responds to player action; not the same as a passive attack; diff --git a/src/options.c b/src/options.c index 9b610f3d9..d49102ddc 100644 --- a/src/options.c +++ b/src/options.c @@ -208,6 +208,7 @@ static struct Bool_Opt { #else { "statushilites", &iflags.use_status_hilites, FALSE, DISP_IN_GAME }, #endif + { "status_updates", &iflags.status_updates, TRUE, DISP_IN_GAME }, { "tiled_map", &iflags.wc_tiled_map, PREFER_TILED, DISP_IN_GAME }, /*WC*/ { "time", &flags.time, FALSE, SET_IN_GAME }, #ifdef TIMED_DELAY