From: nethack.rankin Date: Sat, 31 Dec 2005 06:19:04 +0000 (+0000) Subject: genociding mindflayers X-Git-Tag: MOVE2GIT~1173 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fe5d79c85943314831f6a0a931aece8401462194;p=nethack genociding mindflayers 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 " strips off "the" and finds (or not) , 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. --- diff --git a/doc/fixes34.4 b/doc/fixes34.4 index ceccd9be4..b99520276 100644 --- a/doc/fixes34.4 +++ b/doc/fixes34.4 @@ -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 diff --git a/src/mondata.c b/src/mondata.c index 9a219ac14..974087aae 100644 --- a/src/mondata.c +++ b/src/mondata.c @@ -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 } };