diff --git a/doc/Guidebook.mn b/doc/Guidebook.mn index 2ed8cfc1d..57a7cd3a8 100644 --- a/doc/Guidebook.mn +++ b/doc/Guidebook.mn @@ -4568,6 +4568,9 @@ Control what parts of the score list you are shown at the end (for example Only the first letter of each category (\(oqt\(cq, \(oqa\(cq, or \(oqo\(cq) is necessary. Persistent. +.lp showdamage +Whenever your character takes damage, show a message of the damage taken, +and the amount of hit points left. .lp "showexp " Show your accumulated experience points on bottom line (default off). Persistent. @@ -5990,6 +5993,8 @@ of moving 8 units at a time. 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 \(lq#attributes\(rq command. +.lp showdamage +Give a message of damage taken and how many hit points are left. .hn 2 Global Configuration for System Administrators .pg diff --git a/doc/Guidebook.tex b/doc/Guidebook.tex index 9f8f610ff..9729006d6 100644 --- a/doc/Guidebook.tex +++ b/doc/Guidebook.tex @@ -4999,6 +4999,10 @@ Control what parts of the score list you are shown at the end (for example, letter of each category (`{\tt t}', `{\tt a}' or `{\tt o}') is necessary. Persistent. %.lp +\item[\ib{showdamage}] +Whenever your character takes damage, show a message of the damage taken, +and the amount of hit points left. +%.lp \item[\ib{showexp}] Show your accumulated experience points on bottom line (default off). Persistent. @@ -6609,6 +6613,9 @@ of moving 8 units at a time. 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 {\tt \#attributes} command. +%.lp +\item[\ib{showdamage}] +Give a message of damage taken and how many hit points are left. \elist %.hn2 diff --git a/doc/fixes3-7-0.txt b/doc/fixes3-7-0.txt index 7b9a8732f..063a0fae0 100644 --- a/doc/fixes3-7-0.txt +++ b/doc/fixes3-7-0.txt @@ -2493,7 +2493,7 @@ erinyes overhaul; they now attempt to punish heroes who have violated their alignment and get stronger with greater alignment abuse accessibility options to tell where on map a message happened (accessiblemsg), to notify when a monster is spotted (spot_monsters), and when - a monster moved (mon_movement) + a monster moved (mon_movement), when hero takes damage (showdamage) if hero is punished or tethered to a buried iron ball and has no inventory (or only carries gold or embedded dragon scales or both), a nymph might remove the chain when finding nothing else to steal diff --git a/include/extern.h b/include/extern.h index ac5ec9dd2..a59fc9f0f 100644 --- a/include/extern.h +++ b/include/extern.h @@ -1109,6 +1109,7 @@ extern void end_running(boolean); extern void nomul(int); extern void unmul(const char *); extern int saving_grace(int); +extern void showdamage(int); extern void losehp(int, const char *, schar) ; extern int weight_cap(void); extern int inv_weight(void); diff --git a/include/flag.h b/include/flag.h index 2a0dba48d..e71e8c6da 100644 --- a/include/flag.h +++ b/include/flag.h @@ -213,6 +213,7 @@ struct accessibility_data { * and probably warrant a structure of their own elsewhere some day. */ struct instance_flags { + boolean showdamage; boolean debug_fuzzer; /* fuzz testing */ boolean defer_plname; /* X11 hack: askname() might not set gp.plname */ boolean herecmd_menu; /* use menu when mouseclick on yourself */ diff --git a/include/optlist.h b/include/optlist.h index ca47ea81b..6b3a5c425 100644 --- a/include/optlist.h +++ b/include/optlist.h @@ -620,6 +620,9 @@ static int optfn_##a(int, int, boolean, char *, char *); NHOPTB(selectsaved, Advanced, 0, opt_out, set_in_config, On, Yes, No, No, NoAlias, &iflags.wc2_selectsaved, Term_False, (char *)0) + NHOPTB(showdamage, Status, 0, opt_in, set_in_game, + Off, Yes, No, No, NoAlias, &iflags.showdamage, Term_False, + "show damage hero takes in message line") NHOPTB(showexp, Status, 0, opt_in, set_in_game, Off, Yes, No, No, NoAlias, &flags.showexp, Term_False, "show experience points in status line") diff --git a/src/hack.c b/src/hack.c index 5251b202a..2a3661cd9 100644 --- a/src/hack.c +++ b/src/hack.c @@ -3965,6 +3965,16 @@ saving_grace(int dmg) return dmg; } +/* show a message how much damage you received */ +void +showdamage(int dmg) +{ + if (!iflags.showdamage) + return; + + pline("[HP %i, %i left]", -dmg, Upolyd ? u.mh : u.uhp); +} + void losehp(int n, const char *knam, schar k_format) { @@ -3979,6 +3989,7 @@ losehp(int n, const char *knam, schar k_format) end_running(TRUE); if (Upolyd) { u.mh -= n; + showdamage(n); if (u.mhmax < u.mh) u.mhmax = u.mh; if (u.mh < 1) @@ -3990,6 +4001,7 @@ losehp(int n, const char *knam, schar k_format) n = saving_grace(n); u.uhp -= n; + showdamage(n); if (u.uhp > u.uhpmax) u.uhpmax = u.uhp; /* perhaps n was negative */ if (u.uhp < 1) { diff --git a/src/mhitu.c b/src/mhitu.c index 5e83af60c..25c3e5fd4 100644 --- a/src/mhitu.c +++ b/src/mhitu.c @@ -1810,11 +1810,13 @@ mdamageu(struct monst *mtmp, int n) disp.botl = TRUE; if (Upolyd) { u.mh -= n; + showdamage(n); if (u.mh < 1) rehumanize(); } else { n = saving_grace(n); u.uhp -= n; + showdamage(n); if (u.uhp < 1) done_in_by(mtmp, DIED); }