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:
@@ -88,6 +88,7 @@ prevent polymorphing into "new man" at low level from magnifying HP and Pw
|
|||||||
losing a level while polymorphed affects hero's current monster HP as well as
|
losing a level while polymorphed affects hero's current monster HP as well as
|
||||||
underlying normal HP
|
underlying normal HP
|
||||||
mind flayer brain eating is subject to certain fatal targets and to cannibalism
|
mind flayer brain eating is subject to certain fatal targets and to cannibalism
|
||||||
|
mind flayer can't eat brains of ghost or shade
|
||||||
corpses of unique monsters in bones behaved incorrectly if revived or eaten
|
corpses of unique monsters in bones behaved incorrectly if revived or eaten
|
||||||
fix pluralization for "this tin smells like mother-in-laws" when hallucinating
|
fix pluralization for "this tin smells like mother-in-laws" when hallucinating
|
||||||
try harder to keep pluralization straight when user assigns an already plural
|
try harder to keep pluralization straight when user assigns an already plural
|
||||||
|
|||||||
@@ -468,7 +468,12 @@ int *dmg_p; /* for dishing out extra damage in lieu of Int loss */
|
|||||||
boolean give_nutrit = FALSE;
|
boolean give_nutrit = FALSE;
|
||||||
int result = MM_HIT, xtra_dmg = rnd(10);
|
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)));
|
You("eat %s brain!", s_suffix(mon_nam(mdef)));
|
||||||
} else if (mdef == &youmonst) {
|
} else if (mdef == &youmonst) {
|
||||||
Your("brain is eaten!");
|
Your("brain is eaten!");
|
||||||
|
|||||||
+9
-2
@@ -1073,8 +1073,15 @@ dopois:
|
|||||||
if (Half_physical_damage) dmg = (dmg+1) / 2;
|
if (Half_physical_damage) dmg = (dmg+1) / 2;
|
||||||
mdamageu(mtmp, dmg);
|
mdamageu(mtmp, dmg);
|
||||||
|
|
||||||
if (!uarmh || uarmh->otyp != DUNCE_CAP)
|
if (!uarmh || uarmh->otyp != DUNCE_CAP) {
|
||||||
(void) eat_brains(mtmp, &youmonst, TRUE, (int *)0);
|
/* 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 */
|
/* adjattrib gives dunce cap message when appropriate */
|
||||||
(void) adjattrib(A_INT, -rnd(2), FALSE);
|
(void) adjattrib(A_INT, -rnd(2), FALSE);
|
||||||
forget_levels(25); /* lose memory of 25% of levels */
|
forget_levels(25); /* lose memory of 25% of levels */
|
||||||
|
|||||||
Reference in New Issue
Block a user