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

@@ -78,6 +78,8 @@ when polymorphed into a quantum mechanic, it was possible to jump into
the water on a no teleport level and instinctively teleport
when polymorphed into a quantum mechanic on a no teleport level and swallowed,
no feedback was given when you teleported the swallower away
allow Conflict-resistant monsters to respond to conflict attacks rather than
sitting there and taking the attacks until they die
Platform- and/or Interface-Specific Fixes

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);
}
}