fix [part of] #H2554 - hunger when declining to attack peaceful monst

Reported last December by <email deleted>, attempting to move
into a peaceful monster's position and then declining to attack at the
confirmation prompt uses no time, as expected, but does burn nutrition
the same as if you carried out the attack.  A player could abuse that to
make room to eat an intrinisic-conferring corpse before it rots away.
This fixes that, and also makes attacking a monster via applying a polearm
and via kicking burn the same extra nutrition as ordinary attack.  I didn't
add it for attacking via throwing.

     He/she also reported that kicking at a peaceful monster and declining
to attack at the prompt wakes up nearby monsters even though no actual kick
ultimately takes place.  I can confirm that, but this does not fix it.
This commit is contained in:
nethack.rankin
2012-05-01 02:22:33 +00:00
parent 889e3fa0b6
commit 9f2ca00138
6 changed files with 42 additions and 22 deletions

View File

@@ -366,16 +366,16 @@ register struct monst *mtmp;
bhitpos.y = u.uy + u.dy;
if (attack_checks(mtmp, uwep)) return(TRUE);
if (Upolyd) {
/* certain "pacifist" monsters don't attack */
if(noattacks(youmonst.data)) {
You("have no way to attack monsters physically.");
mtmp->mstrategy &= ~STRAT_WAITMASK;
goto atk_done;
}
if (Upolyd && noattacks(youmonst.data)) {
/* certain "pacifist" monsters don't attack */
You("have no way to attack monsters physically.");
mtmp->mstrategy &= ~STRAT_WAITMASK;
goto atk_done;
}
if(check_capacity("You cannot fight while so heavily loaded."))
if (check_capacity("You cannot fight while so heavily loaded.") ||
/* consume extra nutrition during combat; maybe pass out */
overexertion())
goto atk_done;
if (u.twoweap && !can_twoweapon())