]> granicus.if.org Git - nethack/commitdiff
fix #H4457 - grammar nitpick
authorPatR <rankin@nethack.org>
Sat, 30 Jul 2016 08:19:44 +0000 (01:19 -0700)
committerPatR <rankin@nethack.org>
Sat, 30 Jul 2016 08:19:44 +0000 (01:19 -0700)
"Your pair of speed boots glow silver for a moment." should be
"Your pair of speed boots glows silver for a moment.".  The fix
reverses a post-3.6.0 change to is_plural().  Also, add new
pair_of() to test for object formatted as "pair of Bars".  For verb
usage, that's definitely singular, but for pronoun usage, sometimes
plural seems better (although it might actually be incorrect).

I fixed up the formatting of a block comment in obj.h, but it is
still a candidate for tab cleanup.

doc/fixes36.1
include/obj.h
src/dokick.c
src/invent.c
src/objnam.c
src/potion.c
src/wield.c

index aef6c5289de3d7f491cfc8c9c6044c516dcda154..8b63f9015dfe84abdcac0b7e2fc6ecc9afc1fd62 100644 (file)
@@ -338,6 +338,7 @@ fix for long lines in config file (28-Jan-2016) made 'O' command's 'list' and
        'remove' menu choices in interactive handling for menu colorings,
        message types, and autopickup exceptions subject to buffer overflow
 when picking a destination for #jump, '$' to show valid dest. is more accurate
+enchant armor gave "your pair of boots/gloves glow", should have been "glows"
 
 
 Platform- and/or Interface-Specific Fixes
index bb872af4f53f2ee68bac21e7e20b9817bc8c370c..e2dc585d42852874158674253d449b137242ee7f 100644 (file)
@@ -330,14 +330,17 @@ struct obj {
     ((obj)->otyp == LUCKSTONE || (obj)->otyp == LOADSTONE \
      || (obj)->otyp == FLINT || (obj)->otyp == TOUCHSTONE)
 
-/* misc */
+/* misc helpers, simple enough to be macros */
 #define is_flimsy(otmp)                           \
     (objects[(otmp)->otyp].oc_material <= LEATHER \
      || (otmp)->otyp == RUBBER_HOSE)
-
-/* helpers, simple enough to be macros */
 #define is_plural(o) \
-    ((o)->quan != 1L || (o)->otyp == LENSES || is_gloves(o) || is_boots(o))
+    ((o)->quan != 1L                                                    \
+     /* "the Eyes of the Overworld" are plural, but                     \
+        "a pair of lenses named the Eyes of the Overworld" is not */    \
+     || ((o)->oartifact == ART_EYES_OF_THE_OVERWORLD                    \
+         && !undiscovered_artifact(ART_EYES_OF_THE_OVERWORLD)))
+#define pair_of(o) ((o)->otyp == LENSES || is_gloves(o) || is_boots(o))
 
 /* Flags for get_obj_location(). */
 #define CONTAINED_TOO 0x1
@@ -366,17 +369,14 @@ struct obj {
  *  Notes for adding new oextra structures:
  *
  *      1. Add the structure definition and any required macros in an
- *appropriate
- *         header file that precedes this one.
- *      2. Add a pointer to your new struct to the oextra struct in this
- *file.
+ *          appropriate header file that precedes this one.
+ *      2. Add a pointer to your new struct to oextra struct in this file.
  *      3. Add a referencing macro to this file after the newobj macro above
  *         (see ONAME, OMONST, OMIN, OLONG, or OMAILCMD for examples).
  *      4. Add a testing macro after the set of referencing macros
  *         (see has_oname(), has_omonst(), has_omin(), has_olong(),
  *         has_omailcmd() for examples).
- *      5. Create a newXX(otmp) function and possibly a free_XX(otmp)
- *function
+ *      5. Create newXX(otmp) function and possibly free_XX(otmp) function
  *         in an appropriate new or existing source file and add a prototype
  *         for it to include/extern.h.  The majority of these are currently
  *         located in mkobj.c for convenience.
index b7e5c5757f46c07d93f6409111bf9904ea8c5d08..4737a27a0b469faeb1994e5e42add76ec99d4180 100644 (file)
@@ -1091,6 +1091,7 @@ dokick()
             goto ouch;
         if (IS_TREE(maploc->typ)) {
             struct obj *treefruit;
+
             /* nothing, fruit or trouble? 75:23.5:1.5% */
             if (rn2(3)) {
                 if (!rn2(6) && !(mvitals[PM_KILLER_BEE].mvflags & G_GONE))
@@ -1101,7 +1102,9 @@ dokick()
                 && (treefruit = rnd_treefruit_at(x, y))) {
                 long nfruit = 8L - rnl(7), nfall;
                 short frtype = treefruit->otyp;
+
                 treefruit->quan = nfruit;
+                treefruit->owt = weight(treefruit);
                 if (is_plural(treefruit))
                     pline("Some %s fall from the tree!", xname(treefruit));
                 else
@@ -1125,6 +1128,7 @@ dokick()
                 int cnt = rnl(4) + 2;
                 int made = 0;
                 coord mm;
+
                 mm.x = x;
                 mm.y = y;
                 while (cnt--) {
index 8859bb7b3dbdc5923961ebd9b24ec6254f6294fd..5aa99ce6c655eb3467e9389edbf8e108b9f1b9f5 100644 (file)
@@ -1489,7 +1489,7 @@ struct obj *otmp;
     }
     if (s1)
         pline("Use the '%s' command to %s %s%s.", s1, s2,
-              !is_plural(otmp) ? "that" : "those", s3);
+              !(is_plural(otmp) || pair_of(otmp)) ? "that" : "those", s3);
     else
 #endif
         pline(silly_thing_to, word);
index 6caa583b7e640c805ae30463a3a1f6fad9fd1dd3..24e444056a2d0107bf19485ad024a859ffd97fda 100644 (file)
@@ -2763,24 +2763,25 @@ struct obj *no_wish;
     }
 
     /*
-    Skip over "pair of ", "pairs of", "set of" and "sets of".
-
-    Accept "3 pair of boots" as well as "3 pairs of boots". It is valid
-    English either way.  See makeplural() for more on pair/pairs.
-
-    We should only double count if the object in question is not
-    referred to as a "pair of".  E.g. We should double if the player
-    types "pair of spears", but not if the player types "pair of
-    lenses".  Luckily (?) all objects that are referred to as pairs
-    -- boots, gloves, and lenses -- are also not mergable, so cnt is
-    ignored anyway.
-    */
+     * Skip over "pair of ", "pairs of", "set of" and "sets of".
+     *
+     * Accept "3 pair of boots" as well as "3 pairs of boots".  It is
+     * valid English either way.  See makeplural() for more on pair/pairs.
+     *
+     * We should only double count if the object in question is not
+     * referred to as a "pair of".  E.g. We should double if the player
+     * types "pair of spears", but not if the player types "pair of
+     * lenses".  Luckily (?) all objects that are referred to as pairs
+     * -- boots, gloves, and lenses -- are also not mergable, so cnt is
+     * ignored anyway.
+     */
     if (!strncmpi(bp, "pair of ", 8)) {
         bp += 8;
         cnt *= 2;
-    } else if (cnt > 1 && !strncmpi(bp, "pairs of ", 9)) {
+    } else if (!strncmpi(bp, "pairs of ", 9)) {
         bp += 9;
-        cnt *= 2;
+        if (cnt > 1)
+            cnt *= 2;
     } else if (!strncmpi(bp, "set of ", 7)) {
         bp += 7;
     } else if (!strncmpi(bp, "sets of ", 8)) {
index aebbc75ee4c9155e7b4da0eab1a6f18a3be324f3..b5971dd79f76c3e9a69b90af05600b840ccbcc01 100644 (file)
@@ -1798,7 +1798,7 @@ dodip()
     if (inaccessible_equipment(obj, "dip", FALSE))
         return 0;
 
-    shortestname = is_plural(obj) ? "them" : "it";
+    shortestname = (is_plural(obj) || pair_of(obj)) ? "them" : "it";
     /*
      * Bypass safe_qbuf() since it doesn't handle varying suffix without
      * an awful lot of support work.  Format the object once, even though
index 058eff434099797ffd09cc3d060c760eb2a322c6..929d45c82b2cd0cbdec8a90eaf9ad28ebaf1326e 100644 (file)
@@ -421,10 +421,11 @@ dowieldquiver()
             }
             Strcpy(qbuf, "Ready all of them instead?");
         } else {
+            boolean use_plural = (is_plural(uwep) || pair_of(uwep));
+
             Sprintf(qbuf, "You are wielding %s.  Ready %s instead?",
-                    /* uwep->quan is 1, but name might be plural ('boots') */
-                    !is_plural(uwep) ? "that" : "those",
-                    !is_plural(uwep) ? "it" : "them");
+                    !use_plural ? "that" : "those",
+                    !use_plural ? "it" : "them");
         }
         /* require confirmation to ready the main weapon */
         if (ynq(qbuf) != 'y') {
@@ -458,11 +459,12 @@ dowieldquiver()
             }
             Strcpy(qbuf, "Ready all of them instead?");
         } else {
+            boolean use_plural = (is_plural(uswapwep) || pair_of(uswapwep));
+
             Sprintf(qbuf, "%s your %s weapon.  Ready %s instead?",
-                    !is_plural(uswapwep) ? "That is" : "Those are",
+                    !use_plural ? "That is" : "Those are",
                     u.twoweap ? "second" : "alternate",
-                    /* uswapwep->quan is 1, but name might be plural */
-                    !is_plural(uswapwep) ? "it" : "them");
+                    !use_plural ? "it" : "them");
         }
         /* require confirmation to ready the alternate weapon */
         if (ynq(qbuf) != 'y') {