fix #H4457 - grammar nitpick
"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.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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--) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
29
src/objnam.c
29
src/objnam.c
@@ -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)) {
|
||||
|
||||
@@ -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
|
||||
|
||||
14
src/wield.c
14
src/wield.c
@@ -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') {
|
||||
|
||||
Reference in New Issue
Block a user