From: nethack.rankin Date: Tue, 30 Nov 2004 04:32:01 +0000 (+0000) Subject: avoid hallucinatory effect on black light as it explodes X-Git-Tag: MOVE2GIT~1397 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b4be660c0a06a377ce16c3e89f46cf21caa166a7;p=nethack avoid hallucinatory effect on black light as it explodes From a bug report: when a black light explodes and triggers hallucination, its own monster symbol--or warning marker for same--could be seen changing. Since nothing is left after it explodes, you shouldn't hallucinate anything at its location. Fix by killing it off (so removing it from the map) before initiating Hallucination. --- diff --git a/doc/fixes34.4 b/doc/fixes34.4 index 9a7fa4dab..2c5fd9694 100644 --- a/doc/fixes34.4 +++ b/doc/fixes34.4 @@ -69,6 +69,7 @@ some types of shop theft of a stack of items only charged for a single one wizard mode: WIZKIT wish for own quest artifact triggered crash at startup avoid "your steed is still eating" message when going through a magic portal cannot drink from fountain, sink or surrounding water while swallowed +don't hallucinate anything for an exploding black light as it dies Platform- and/or Interface-Specific Fixes diff --git a/src/mhitu.c b/src/mhitu.c index fe60be78b..c0b3d2025 100644 --- a/src/mhitu.c +++ b/src/mhitu.c @@ -1826,7 +1826,7 @@ register struct monst *mtmp; register struct attack *mattk; boolean ufound; { - boolean physical_damage = TRUE; + boolean physical_damage = TRUE, kill_agr = TRUE; if (mtmp->mcan) return(0); @@ -1890,6 +1890,9 @@ common: boolean chg; if (!Hallucination) You("are caught in a blast of kaleidoscopic light!"); + /* avoid hallucinating the black light as it dies */ + mondead(mtmp); /* remove it from map now */ + kill_agr = FALSE; /* already killed (maybe lifesaved) */ chg = make_hallucinated(HHallucination + (long)tmp,FALSE,0L); You("%s.", chg ? "are freaked out" : "seem unaffected"); } @@ -1903,10 +1906,9 @@ common: ugolemeffects((int)mattk->adtyp, tmp); } } - mondead(mtmp); + if (kill_agr) mondead(mtmp); wake_nearto(mtmp->mx, mtmp->my, 7*7); - if (mtmp->mhp > 0) return(0); - return(2); /* it dies */ + return (mtmp->mhp > 0) ? 0 : 2; } int