fix #H333 - boulder theft
From a bug report: nymphs could steal boulders even though they aren't allowed to pick those up. It happened becuase can_carry() is only called for monkeys (consequently, they don't have this problem), not for nymphs.
This commit is contained in:
@@ -354,6 +354,7 @@ an orc (or gnome) will respond to #chat if hero is also an orc (or gnome)
|
||||
kicking at "empty space" has side-effects so should use current turn
|
||||
using weapon to kill tame engulfer from inside triggered "placing defunct
|
||||
monster onto map?" warning
|
||||
nymphs could steal carried boulders
|
||||
|
||||
|
||||
Platform- and/or Interface-Specific Fixes
|
||||
|
||||
@@ -270,7 +270,7 @@ struct monst *mtmp;
|
||||
char *objnambuf;
|
||||
{
|
||||
struct obj *otmp;
|
||||
int tmp, could_petrify, named = 0, armordelay;
|
||||
int tmp, could_petrify, named = 0, armordelay, retrycnt = 0;
|
||||
boolean monkey_business; /* true iff an animal is doing the thievery */
|
||||
|
||||
if (objnambuf) *objnambuf = '\0';
|
||||
@@ -304,6 +304,7 @@ nothing_to_steal:
|
||||
goto gotobj;
|
||||
}
|
||||
|
||||
retry:
|
||||
tmp = 0;
|
||||
for(otmp = invent; otmp; otmp = otmp->nobj)
|
||||
if ((!uarm || otmp != uarmc) && otmp != uskin
|
||||
@@ -343,6 +344,10 @@ nothing_to_steal:
|
||||
gotobj:
|
||||
if(otmp->o_id == stealoid) return(0);
|
||||
|
||||
if (otmp->otyp == BOULDER && !throws_rocks(mtmp->data)) {
|
||||
if (!retrycnt++) goto retry;
|
||||
goto cant_take;
|
||||
}
|
||||
/* animals can't overcome curse stickiness nor unlock chains */
|
||||
if (monkey_business) {
|
||||
boolean ostuck;
|
||||
|
||||
Reference in New Issue
Block a user