From: nethack.rankin Date: Sat, 12 Nov 2005 03:19:22 +0000 (+0000) Subject: fix #Q221 - inappropriate vault guard message when embedded gold reached X-Git-Tag: MOVE2GIT~1211 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=90a9978c33871d5dc5a6fab75667aa92d3baf5bc;p=nethack fix #Q221 - inappropriate vault guard message when embedded gold reached From a bug report: when a guard who's leading the character out of a vault comes across gold (from mineralize() usually, but a player could deliberately seed the area in xorn form), the message "the guard calms down and picks up the gold" was given even though the guard wasn't angry. Pick up such gold as soon as temporary corridor reaches it so that on his next move the guard won't mistakenly think that the hero has just dropped it. --- diff --git a/doc/fixes34.4 b/doc/fixes34.4 index 681a7637f..536822cbc 100644 --- a/doc/fixes34.4 +++ b/doc/fixes34.4 @@ -152,6 +152,8 @@ incubi react to mirrors alignment of Angels was handled inconsistently pets capable of digging could pass through walls and stone on the Rogue level avoid inappropriate "the corridor disappears" when vault guard gets killed +avoid inappropriate "the guard calms down" if vault guard's magic corridor + reaches a spot where gold is embedded in the rock adjust message for gas effect from chest trap if hero resists hallucination diff --git a/src/vault.c b/src/vault.c index a65c2d7b0..2cce55a0b 100644 --- a/src/vault.c +++ b/src/vault.c @@ -454,7 +454,7 @@ register struct monst *grd; long umoney = money_cnt(invent); register boolean u_carry_gold = ((umoney + hidden_gold()) > 0L); #endif - boolean see_guard; + boolean see_guard, newspot = FALSE; if(!on_level(&(egrd->gdlevel), &u.uz)) return(-1); nx = ny = m = n = 0; @@ -695,6 +695,7 @@ nextpos: } crm->typ = CORR; proceed: + newspot = TRUE; unblock_point(nx, ny); /* doesn't block light */ if (cansee(nx,ny)) newsym(nx,ny); @@ -738,7 +739,14 @@ cleanup: egrd->ogy = grd->my; remove_monster(grd->mx, grd->my); place_monster(grd, nx, ny); - newsym(grd->mx,grd->my); + if (newspot && g_at(nx, ny)) { + /* if there's gold already here (most likely from mineralize()), + pick it up now so that guard doesn't later think hero dropped + it and give an inappropriate message */ + mpickgold(grd); + if (canspotmon(grd)) pline("%s picks up some gold.", Monnam(grd)); + } else + newsym(grd->mx, grd->my); restfakecorr(grd); return(1); }