]> granicus.if.org Git - nethack/commitdiff
attributes disclosure: experience points
authorPatR <rankin@nethack.org>
Sun, 30 Jun 2019 17:51:00 +0000 (10:51 -0700)
committerPatR <rankin@nethack.org>
Sun, 30 Jun 2019 17:51:00 +0000 (10:51 -0700)
Wizard mode shows the number of points needed to reach the next level
(unless already maxxed out at 30) for ^X and end of game disclosure.
Do it in normal play for the latter too.  (I think it would ok to do
that for ^X too but haven't gone that far.)

Even when it was wizard mode only, the phrasing for past tense had a
minor grammar bug, and it could make the line a little too long for
tty and curses (not sure about others) when level was high, resulting
in wrapped text.  That looked bad for tty, which first tries removing
indentation (just 1 space in this case), making that line outdented
as well as wrapped.  So change the phrasing slightly when experience
level is 'too high'.  I had a version which formatted, measured, and
re-formatted if necessary but that was overkill; simple hardcoded
rephrasing suffices particularly when measuring was against assumed
display width (80) rather than actual width.

doc/fixes36.3
src/cmd.c

index 648ef6902461f94fbe3c07ae9e924e7d949e2b94..d03090095b6d79ebb9a4046625d79f94753a2b2e 100644 (file)
@@ -1,4 +1,4 @@
-$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.78 $ $NHDT-Date: 1561766416 2019/06/29 00:00:16 $
+$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.79 $ $NHDT-Date: 1561917056 2019/06/30 17:50:56 $
 
 This fixes36.3 file is here to capture information about updates in the 3.6.x
 lineage following the release of 3.6.2 in May 2019. Please note, however,
@@ -92,6 +92,8 @@ wizard mode ^I with 'perm_invent' On would unintentionally filter the content
 change #adjust to treat carrying only gold as not having anything to adjust
 saving bones with 'perm_invent' On could result in "Bad fruit #N" warnings
 update persistent inventory window immediately if 'sortpack' option is toggled
+grammar bit for wizard mode final disclosure; attribute section could show
+       "You had N experience points, 1 more were needed to attain level X+1."
 
 
 Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository
@@ -196,6 +198,9 @@ classify sources as released, beta, or work-in-progress via NH_DEVEL_STATUS
        rather than just released vs beta via BETA
 if you reach the edge of a level (relatively uncommon) and try to move off,
        report that you can't go farther if the 'mention_walls' option is set
+'attributes' disclosure at end of game includes number of experience points
+       that were needed to reach the next experience level (new for normal
+       play and explore mode; previously only shown for wizard mode)
 wizard-mode: display effect to show where an unseen wished-for monster landed
 curses: enable latent mouse support
 curses: give menus and text windows a minimum size of 5x25 since tiny ones can
index a3a1e60c5d370a9f3557289fd589c16889bfd1ce..c69bd4ff16ffdbc74800913dd8aeeb7cd82e5f81 100644 (file)
--- a/src/cmd.c
+++ b/src/cmd.c
@@ -1,4 +1,4 @@
-/* NetHack 3.6 cmd.c   $NHDT-Date: 1561017215 2019/06/20 07:53:35 $  $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.337 $ */
+/* NetHack 3.6 cmd.c   $NHDT-Date: 1561917056 2019/06/30 17:50:56 $  $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.338 $ */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
 /*-Copyright (c) Robert Patrick Rankin, 2013. */
 /* NetHack may be freely redistributed.  See license for details. */
@@ -1982,19 +1982,28 @@ int final;
         enlght_line(You_, "entered ", buf, "");
     }
     if (!Upolyd) {
-        /* flags.showexp does not matter */
+        int ulvl = (int) u.ulevel;
+        /* [flags.showexp currently does not matter; should it?] */
+
         /* experience level is already shown above */
         Sprintf(buf, "%-1ld experience point%s", u.uexp, plur(u.uexp));
-        if (wizard) {
-            if (u.ulevel < 30) {
-                int ulvl = (int) u.ulevel;
-                long nxtlvl = newuexp(ulvl);
-                /* long oldlvl = (ulvl > 1) ? newuexp(ulvl - 1) : 0; */
-
-                Sprintf(eos(buf), ", %ld %s%sneeded to attain level %d",
-                        (nxtlvl - u.uexp), (u.uexp > 0) ? "more " : "",
-                        !final ? "" : "were ", (ulvl + 1));
-            }
+        /* TODO?
+         *  Remove wizard-mode restriction since patient players can
+         *  determine the numbers needed without resorting to spoilers
+         *  (even before this started being disclosed for 'final';
+         *  just enable 'showexp' and look at normal status lines
+         *  after drinking gain level potions or eating wraith corpses
+         *  or being level-drained by vampires).
+         */
+        if (ulvl < 30 && (final || wizard)) {
+            long nxtlvl = newuexp(ulvl), delta = nxtlvl - u.uexp;
+
+            Sprintf(eos(buf), ", %ld %s%sneeded %s level %d",
+                    delta, (u.uexp > 0) ? "more " : "",
+                    /* present tense=="needed", past tense=="were needed" */
+                    !final ? "" : (delta == 1L) ? "was " : "were ",
+                    /* "for": grammatically iffy but less likely to wrap */
+                    (ulvl < 18) ? "to attain" : "for", (ulvl + 1));
         }
         you_have(buf, "");
     }