another conflict abuse

Reported a really long time ago (June 2001) by <Someone>:
 - stand on the upstairs and engrave Elbereth with a /oFire
 - create Demogorgon and e.g. a tame dragon
 - cause conflict
 - Dragon will kill Demogorgon and Demogorgon will never ever attack Dragon.
All monsters could still attack Demogorgon without response via fightm().
Modified fightm() to include a bit of code in m_move and dog_move, allowing
response to an attack.  Testing this in action, Demogorgon still usually
did things detrimental to the player, mostly summoning nasty monsters.
This commit is contained in:
cohrs
2003-10-24 01:59:48 +00:00
parent 96b0d848b2
commit a9c80974e8
2 changed files with 12 additions and 0 deletions

View File

@@ -151,6 +151,16 @@ fightm(mtmp) /* have monsters fight each other */
*/
if (has_u_swallowed) return 0;
/* Allow attacked monsters a chance to hit back. Primarily
* to allow monsters that resist conflict to respond.
*/
if ((result & MM_HIT) && !(result & MM_DEF_DIED) &&
rn2(4) && mon->movement >= NORMAL_SPEED) {
mon->movement -= NORMAL_SPEED;
notonhead = 0;
(void) mattackm(mon, mtmp); /* return attack */
}
return ((result & MM_HIT) ? 1 : 0);
}
}