]> granicus.if.org Git - nethack/commitdiff
extend wizard-mode display effect to unseen invisible monsters
authornhmall <nhmall@nethack.org>
Sun, 9 Jun 2019 11:46:14 +0000 (07:46 -0400)
committernhmall <nhmall@nethack.org>
Sun, 9 Jun 2019 11:46:14 +0000 (07:46 -0400)
doc/fixes36.3
src/read.c

index 43b3b08636d80407c592f055a3af4041c67b24f8..961ed254f57e3a0b62897ad63f2f0d81e64f8bc2 100644 (file)
@@ -66,7 +66,7 @@ thrown or kicked light source (lit lamp, candle, oil) should emit light as it
 unlike watching a monster trying to swap out a cursed weapon for some other
        weapon and failing, watching it wield a cursed weapon didn't report
        that weapon becoming welded to the monster's hand/claw/whatever
-debug mode wishing for hidden monsters that pass is_hider test
+wizard-mode: wish for hidden monsters that pass is_hider test
 
 
 Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository
@@ -117,6 +117,7 @@ classify sources as released, beta, or work-in-progress via NH_DEVEL_STATUS
        rather than just released vs beta via BETA
 if you reach the edge of a level (relatively uncommon) and try to move off,
        report that you can't go farther if the 'mention_walls' option is set
+wizard-mode: display effect to show where an unseen wished-for monster landed
 
 
 NetHack Community Patches (or Variation) Included
index 97678dba264ad6b20858ff69ee970e6d4ea26c81..8ae59abd16baedc8f3c6fb6714d978b640f6192e 100644 (file)
@@ -2522,9 +2522,9 @@ create_particular_creation(d)
 struct _create_particular_data *d;
 {
     struct permonst *whichpm = NULL;
-    int i, firstchoice = NON_PM;
+    int i, saveglyph, firstchoice = NON_PM;
     struct monst *mtmp;
-    boolean madeany = FALSE;
+    boolean madeany = FALSE, doflash = FALSE;
 
     if (!d->randmonst) {
         firstchoice = d->which;
@@ -2570,19 +2570,25 @@ struct _create_particular_data *d;
         }
         if (d->invisible) {
             int mx = mtmp->mx, my = mtmp->my;
+            saveglyph = glyph_at(mx, my);
             mon_set_minvis(mtmp);
             if (does_block(mx, my, &levl[mx][my]))
                 block_point(mx, my);
             else
                 unblock_point(mx, my);
+            if (saveglyph == glyph_at(mx, my))
+                saveglyph = mon_to_glyph(mtmp, rn2_on_display_rng);
+            doflash = TRUE;
         }
-        if (d->sleeping)
-            mtmp->msleeping = 1;
         if (d->hidden && is_hider(mtmp->data)) {
-            int saveglyph = glyph_at(mtmp->mx, mtmp->my);
-
+            saveglyph = glyph_at(mtmp->mx, mtmp->my);
             mtmp->mundetected = 1;
             newsym(mtmp->mx, mtmp->my);
+            doflash = TRUE;
+        }
+        if (d->sleeping)
+            mtmp->msleeping = 1;
+        if (doflash) {
             if (wizard && cansee(mtmp->mx, mtmp->my))
                 if (!canseemon(mtmp) && !sensemon(mtmp))
                     flash_glyph_at(mtmp->mx, mtmp->my, saveglyph);