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:
@@ -125,6 +125,9 @@ register xchar x, y;
|
||||
bhitpos.x = x;
|
||||
bhitpos.y = y;
|
||||
if (attack_checks(mon, (struct obj *)0)) return;
|
||||
/* burn extra nutrition, same as direct combat;
|
||||
maybe pass out before making target angry */
|
||||
if (overexertion()) return;
|
||||
/* anger target even if wild miss will occur */
|
||||
setmangry(mon);
|
||||
|
||||
@@ -805,6 +808,11 @@ dokick()
|
||||
* ceiling shouldn't be kickable (unless hero is flying?);
|
||||
* kicking toward them should just target whatever is on
|
||||
* the floor at that spot.]
|
||||
* [FIXME too: kick_monster() calls attack_checks() which gives
|
||||
* the player a chance to decline to attack a peaceful monster,
|
||||
* and also calls overexertion() so hero might pass out before
|
||||
* performing the kick. We shouldn't call wake_nearby() (and
|
||||
* u_wipe_engr(), both already done above) in such cases.]
|
||||
*/
|
||||
|
||||
if(MON_AT(x, y)) {
|
||||
|
||||
Reference in New Issue
Block a user