From: cohrs Date: Mon, 24 Mar 2003 02:15:49 +0000 (+0000) Subject: U384 - dopay impossible X-Git-Tag: MOVE2GIT~2057 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2ec40201f4884969bdebe6f55265eeb7797a7ca0;p=nethack U384 - dopay impossible If you zapped a WoStriking while outside a shop and broke the door and 2 separate objects, the shopkeeper would come out to get paid but if you tried, it would result in "dopay: not to shopkeeper?" due to stolen_value not adding the cost of the 2nd object to the right accumulator. --- diff --git a/doc/fixes34.2 b/doc/fixes34.2 index d0f33b3ec..47f42eef5 100644 --- a/doc/fixes34.2 +++ b/doc/fixes34.2 @@ -24,6 +24,8 @@ avoid integer division rounding error when calculating carrying capacity don't lock/unlock a door while in a pit, to be consistent with door opening infravision should not make invisible player "visible" (it doesn't for monsters) Perseus statue should always be male +charge correctly when breaking multiple objects with the same zap, avoids + a dopay: not to shopkeeper impossible Platform- and/or Interface-Specific Fixes diff --git a/src/shk.c b/src/shk.c index 83de96711..2c0ac27c2 100644 --- a/src/shk.c +++ b/src/shk.c @@ -2441,7 +2441,13 @@ register boolean peaceful, silent; if(peaceful) { boolean credit_use = !!ESHK(shkp)->credit; value = check_credit(value, shkp); - ESHK(shkp)->debit += value; + /* 'peaceful' affects general treatment, but doesn't affect + * the fact that other code expects that all charges after the + * shopkeeper is angry are included in robbed, not debit */ + if (ANGRY(shkp)) + ESHK(shkp)->robbed += value; + else + ESHK(shkp)->debit += value; if(!silent) { const char *still = "";