]> granicus.if.org Git - nethack/commitdiff
B14004 Cloaks of invisibility
authornethack.allison <nethack.allison>
Sun, 5 Jan 2003 03:57:21 +0000 (03:57 +0000)
committernethack.allison <nethack.allison>
Sun, 5 Jan 2003 03:57:21 +0000 (03:57 +0000)
There's no feedback message nor item discovery when you see a monster
disappear as it puts on a cloak of invisibility.

doc/fixes34.1
src/worn.c

index 4bb8308f872297ec9674cc30689f171db8d8038d..89f06dce3352267e9965aecec9ab98eb81c93e03 100644 (file)
@@ -347,6 +347,7 @@ add missing data.base entries for caveman, healer, monk, priest, and samurai
 allow "grey spellbook" as alternative spelling of "gray spellbook"
 handle attacks by cancelled monsters more consistently
 armor worn by monsters might negate some magic attacks like it does for hero
+give feedback and discovery when visible monster puts on cloak of invisibility
 
 
 Platform- and/or Interface-Specific Fixes
index b89f0ddc6fb58153adc3d5f76676887d0f914dbf..738088ddd3c7a9321b4f44672d23e643c2a39ba8 100644 (file)
@@ -404,9 +404,14 @@ boolean racialexception;
 {
        struct obj *old, *best, *obj;
        int m_delay = 0;
+       int unseen = !canseemon(mon);
+       char nambuf[BUFSZ];
 
        if (mon->mfrozen) return; /* probably putting previous item on */
 
+       /* Get a copy of monster's name before altering its visibility */
+       Strcpy(nambuf, See_invisible ? Monnam(mon) : mon_nam(mon));
+
        old = which_armor(mon, flag);
        if (old && old->cursed) return;
        if (old && flag == W_AMUL) return; /* no such thing as better amulets */
@@ -495,6 +500,13 @@ outer_break:
        mon->misc_worn_check |= flag;
        best->owornmask |= flag;
        update_mon_intrinsics(mon, best, TRUE, creation);
+       /* if couldn't see it but now can, or vice versa, */
+       if (!creation && (unseen ^ !canseemon(mon))) {
+               if (mon->minvis && !See_invisible) {
+                       pline("Suddenly you cannot see %s.", nambuf);
+                       makeknown(best->otyp);
+               } /* else if (!mon->minvis) pline("%s suddenly appears!", Amonnam(mon)); */
+       }
 }
 #undef RACE_EXCEPTION