diff --git a/doc/fixes36.3 b/doc/fixes36.3 index 287b74044..d65976a9d 100644 --- a/doc/fixes36.3 +++ b/doc/fixes36.3 @@ -232,6 +232,7 @@ dipping into an undiscovered potion would offer chance to give a name to the potion even when its description wasn't known (picked up while blind) dipping lichen corpse into acid when not blind and acid was undicovered would not offer a chance to give a name to the potion after lichen feedback +pluralization improvement for words ending in a k-sound like "biotech" Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository diff --git a/src/objnam.c b/src/objnam.c index cc95bc653..db23756a9 100644 --- a/src/objnam.c +++ b/src/objnam.c @@ -2199,7 +2199,11 @@ const char *const *alt_as_is; /* another set like as_is[] */ } } - /* avoid false hit on one_off[].plur == "lice" or .sing == "goose"; + /* Leave "craft" as a suffix as-is (aircraft, hovercraft); + "craft" itself is (arguably) not included in our likely context */ + if ((baselen > 5) && (!BSTRCMPI(basestr, endstring - 5, "craft"))) + return TRUE; + /* avoid false hit on one_off[].plur == "lice" or .sing == "goose"; if more of these turn up, one_off[] entries will need to flagged as to which are whole words and which are matchable as suffices then matching in the loop below will end up becoming more complex */ @@ -2429,7 +2433,10 @@ const char *oldstr; /* Ends in z, x, s, ch, sh; add an "es" */ if (index("zxs", lo_c) - || (len >= 2 && lo_c == 'h' && index("cs", lowc(*(spot - 1)))) + || (len >= 2 && lo_c == 'h' && index("cs", lowc(*(spot - 1))) + /* 21st century k-sound */ + && !(len >= 4 && !strcmpi(spot - 2, "ech") + && index("tm", lowc(*(spot - 4))))) /* Kludge to get "tomatoes" and "potatoes" right */ || (len >= 4 && !strcmpi(spot - 2, "ato")) || (len >= 5 && !strcmpi(spot - 4, "dingo"))) {