diff --git a/doc/fixes34.4 b/doc/fixes34.4 index 4194bde52..ce7cf491c 100644 --- a/doc/fixes34.4 +++ b/doc/fixes34.4 @@ -164,6 +164,7 @@ tombstone's reason for death from kicking an object could include so much detail about the object that is was too verbose several quest messages were worded inappropriately if the hero was blind a samurai quest guardian message used "ninja" where "ronin" was intended +revive from fainting if vault guard or bribe-demanding demon approaches Platform- and/or Interface-Specific Fixes diff --git a/src/eat.c b/src/eat.c index a439021b6..064c9aedc 100644 --- a/src/eat.c +++ b/src/eat.c @@ -2514,7 +2514,7 @@ is_fainted() void reset_faint() /* call when a faint must be prematurely terminated */ { - if(is_fainted()) nomul(0); + if (afternmv == unfaint) unmul("You revive."); } void diff --git a/src/minion.c b/src/minion.c index 0480ea1d2..f66cd1b7d 100644 --- a/src/minion.c +++ b/src/minion.c @@ -156,6 +156,13 @@ register struct monst *mtmp; return 0; } + if (is_fainted()) { + reset_faint(); /* if fainted - wake up */ + } else { + stop_occupation(); + if (multi > 0) { nomul(0); unmul((char *)0); } + } + /* Slight advantage given. */ if (is_dprince(mtmp->data) && mtmp->minvis) { mtmp->minvis = mtmp->perminvis = 0; @@ -176,7 +183,7 @@ register struct monst *mtmp; demand = (cash * (rnd(80) + 20 * Athome)) / (100 * (1 + (sgn(u.ualign.type) == sgn(mtmp->data->maligntyp)))); - if (!demand) { /* you have no gold */ + if (!demand || multi < 0) { /* you have no gold or can't move */ mtmp->mpeaceful = 0; set_malign(mtmp); return 0; diff --git a/src/monmove.c b/src/monmove.c index 1fb1d4934..a247d1f3d 100644 --- a/src/monmove.c +++ b/src/monmove.c @@ -396,6 +396,7 @@ register struct monst *mtmp; /* Why? For the same reason in real demon talk */ pline("%s gets angry!", Amonnam(mtmp)); mtmp->mpeaceful = 0; + set_malign(mtmp); /* since no way is an image going to pay it off */ } } else if(demon_talk(mtmp)) return(1); /* you paid it off */