From: nhmall Date: Sun, 9 Jun 2019 11:46:14 +0000 (-0400) Subject: extend wizard-mode display effect to unseen invisible monsters X-Git-Tag: nmake-explicit-path~2^2~51 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5f676aa56c77e1d48032e94b1613ac651cba46a8;p=nethack extend wizard-mode display effect to unseen invisible monsters --- diff --git a/doc/fixes36.3 b/doc/fixes36.3 index 43b3b0863..961ed254f 100644 --- a/doc/fixes36.3 +++ b/doc/fixes36.3 @@ -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 diff --git a/src/read.c b/src/read.c index 97678dba2..8ae59abd1 100644 --- a/src/read.c +++ b/src/read.c @@ -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);