mind flayer vs ghost (trunk only)

There's newsgroup discussion about a mind flayer sucking the brains
of a ghost, plus speculation that the fix for C343-121 has already taken
care of it.  I agree with them that ghost's brains are too insubstantial
to be hit by brainsuck damage from mind flayers' tentacles.  C343-121 is
vague enough to cover this; the corresponding fixes entry was more specific
and is augmented here.
This commit is contained in:
nethack.rankin
2007-02-24 04:59:43 +00:00
parent c99c3459c8
commit 521469f27b
3 changed files with 16 additions and 3 deletions

View File

@@ -468,7 +468,12 @@ int *dmg_p; /* for dishing out extra damage in lieu of Int loss */
boolean give_nutrit = FALSE;
int result = MM_HIT, xtra_dmg = rnd(10);
if (magr == &youmonst) {
if (noncorporeal(pd)) {
if (visflag)
pline("%s brain is unharmed.",
(mdef == &youmonst) ? "Your" : s_suffix(mon_nam(mdef)));
return MM_MISS; /* side-effects can't occur */
} else if (magr == &youmonst) {
You("eat %s brain!", s_suffix(mon_nam(mdef)));
} else if (mdef == &youmonst) {
Your("brain is eaten!");

View File

@@ -1073,8 +1073,15 @@ dopois:
if (Half_physical_damage) dmg = (dmg+1) / 2;
mdamageu(mtmp, dmg);
if (!uarmh || uarmh->otyp != DUNCE_CAP)
(void) eat_brains(mtmp, &youmonst, TRUE, (int *)0);
if (!uarmh || uarmh->otyp != DUNCE_CAP) {
/* eat_brains() will miss if target is mindless (won't
happen here; hero is considered to retain his mind
regardless of current shape) or is noncorporeal
(can't happen here; no one can poly into a ghost
or shade) so this check for missing is academic */
if (eat_brains(mtmp, &youmonst, TRUE, (int *)0) == MM_MISS)
break;
}
/* adjattrib gives dunce cap message when appropriate */
(void) adjattrib(A_INT, -rnd(2), FALSE);
forget_levels(25); /* lose memory of 25% of levels */