]> granicus.if.org Git - nethack/commitdiff
discovered objects within class for a and u
authorPatR <rankin@nethack.org>
Thu, 10 Mar 2022 22:57:15 +0000 (14:57 -0800)
committerPatR <rankin@nethack.org>
Thu, 10 Mar 2022 22:57:15 +0000 (14:57 -0800)
If any artifacts are discovered and menustyle traditional is in use,
the player can type `a to get the artifact subset of discovered items.
Likewise with `u to for unique items (the invocation tools and the
real Amulet).  For normal object classes, `<class> works for every
class, even when there aren't any discoveries for it (where you get
told "you haven't discovered any yet" if you pick such).  But `a
and `u were only allowed if at least one thing in the corresponding
category had been discovered.  Change to allow it even when none have
been.  The feedback of "you haven't discovered any {unique items,
artifacts} yet" was already in place.

Doesn't apply for picking the class via menu.  Menus don't have any
concept of "allowed as a response even though not listed as a choice".

doc/fixes3-7-0.txt
src/o_init.c

index e3d797e43c3452f2f9eb4d762eed556cd885035c..77f6a44d0ca5fea0c447d1a1a71f1ca95582cfc4 100644 (file)
@@ -1,4 +1,4 @@
-NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.838 $ $NHDT-Date: 1646694720 2022/03/07 23:12:00 $
+NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.839 $ $NHDT-Date: 1646953027 2022/03/10 22:57:07 $
 
 General Fixes and Modified Features
 -----------------------------------
@@ -834,6 +834,9 @@ clear obj->bypass for buried objects [a giant on ice triggers a fire trap,
        rest of giant's dropped inventory, subsequent sanity checks report
        that there are buried objects which are 'flagged bypass']
 only give Sunsword or Demonbane as starting gear to lawful Angels
+for #knownclass with menustyle=Tradtional, allow player to ask for `a even if
+       no artifacts have been discovered yet, same as `<any-object-class>;
+       likewise for `u to ask to see unique items
 
 
 Fixes to 3.7.0-x Problems that Were Exposed Via git Repository
index 6ad5fe0d031cf74e3b4408698b9c0d215c993d98..e02b2be9d5c0a9c767df628e2b0c214bfe4de622 100644 (file)
@@ -1,4 +1,4 @@
-/* NetHack 3.7 o_init.c        $NHDT-Date: 1614812489 2021/03/03 23:01:29 $  $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.50 $ */
+/* NetHack 3.7 o_init.c        $NHDT-Date: 1646953028 2022/03/10 22:57:08 $  $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.56 $ */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
 /*-Copyright (c) Robert Patrick Rankin, 2011. */
 /* NetHack may be freely redistributed.  See license for details. */
@@ -833,11 +833,14 @@ doclassdisco(void)
     /* have player choose a class */
     c = '\0'; /* class not chosen yet */
     if (traditional) {
+        char allclasses_plustwo[sizeof allclasses + 2];
+
         /* we'll prompt even if there's only one viable class; we add all
            nonviable classes as unseen acceptable choices so player can ask
            for discoveries of any class whether it has discoveries or not */
-        for (s = allclasses, xtras = 0; *s; ++s) {
-            c = def_oc_syms[(int) *s].sym;
+        Sprintf(allclasses_plustwo, "%s%c%c", allclasses, 'u', 'a');
+        for (s = allclasses_plustwo, xtras = 0; *s; ++s) {
+            c = (*s == 'u' || *s == 'a') ? *s : def_oc_syms[(int) *s].sym;
             if (!index(discosyms, c)) {
                 if (!xtras++)
                     (void) strkitten(discosyms, '\033');