]> granicus.if.org Git - nethack/commitdiff
genociding mindflayers
authornethack.rankin <nethack.rankin>
Sat, 31 Dec 2005 06:19:04 +0000 (06:19 +0000)
committernethack.rankin <nethack.rankin>
Sat, 31 Dec 2005 06:19:04 +0000 (06:19 +0000)
     When looking at name_to_mon() to teach it how to cope with possessive
suffices, I discovered that it already knows how.  But while looking at
it, I remembered a newsgroup complaint from a while back by someone who
accidentally committed suicide by attempting to genocide "master mindflayers"
(when he meant "master mind flayers").  name_to_mon() didn't recognize that
misspelling but it did match "master" as a role title.  Unfortunately for
the player, his character was a monk; the game allowed him to genocide his
own role and he died.  That's kind of harsh for such a likely misspelling.
(I don't think a monk is very likely to ever use "master thief" as a mistake
for "master of thieves", but catch that one too just in case.  Conversely,
recognize "master of assassins" as an alternate for "master assassin".)

     Also, wishing for "the <something>" strips off "the" and finds (or not)
<something>, but genociding didn't.  You could specify "a wolf" to wipe out
all wolves, but "the wolf" yielded "such creatures don't exist", and ^G had
similar unfriendly behavior.  This extends name_to_mon() to handle it.

doc/fixes34.4
src/mondata.c

index ceccd9be41205cbf4e2c0b5a2dad3df574f7424b..b99520276b3a7e97b733cc40b044eb3563cb4fa8 100644 (file)
@@ -174,6 +174,7 @@ Call command could be used to remotely identify which high priest is which
 large amorphous, whirly, noncorporeal, or slithy creatures can fit through
        tight diagonal gaps despite their size
 avoid "You summoned it!" for unseen monster produced by same-race offering
+recognize "mindflayer" as an alternative spelling for "mind flayer"
 
 
 Platform- and/or Interface-Specific Fixes
index 9a219ac1426b6ab686c24325a6f10e5bc1cacc74..974087aae7a402921600685c5ae87e3815687d95 100644 (file)
@@ -517,6 +517,7 @@ const char *in_str;
 
        if (!strncmp(str, "a ", 2)) str += 2;
        else if (!strncmp(str, "an ", 3)) str += 3;
+       else if (!strncmp(str, "the ", 4)) str += 4;
 
        slen = strlen(str);
        term = str + slen;
@@ -542,6 +543,14 @@ const char *in_str;
                { "grey unicorn",       PM_GRAY_UNICORN },
                { "grey ooze",          PM_GRAY_OOZE },
                { "gray-elf",           PM_GREY_ELF },
+               { "mindflayer",         PM_MIND_FLAYER },
+               { "master mindflayer",  PM_MASTER_MIND_FLAYER },
+           /* Inappropriate singularization by -ves check above */
+               { "master of thief",    PM_MASTER_OF_THIEVES },
+           /* Potential misspellings where we want to avoid falling back
+              to the rank title prefix (input has been singularized) */
+               { "master thief",       PM_MASTER_OF_THIEVES },
+               { "master of assassin", PM_MASTER_ASSASSIN },
            /* Hyphenated names */
                { "ki rin",             PM_KI_RIN },
                { "uruk hai",           PM_URUK_HAI },
@@ -568,8 +577,6 @@ const char *in_str;
                { "djinn",              PM_DJINNI },
                { "mumakil",            PM_MUMAK },
                { "erinyes",            PM_ERINYS },
-           /* falsely caught by -ves check above */
-               { "master of thief",    PM_MASTER_OF_THIEVES },
            /* end of list */
                { 0, 0 }
        };