fix #H4436 - polyself message sequencing bug

for digesting a swallowed critter.  The "you kill <critter>" message
was left implicit, but if hero gained a level, that made "welcome
to level N+1" look like it was issued out of sequence because it's
immediate and the "you totally digest <critter>" is delayed.  Giving
the you-kill-it message explicitly makes things be more verbose but
avoids having the new-level message seem out of order.
This commit is contained in:
PatR
2016-07-13 16:16:55 -07:00
parent ff29971453
commit 5713f92df1
2 changed files with 9 additions and 5 deletions

View File

@@ -320,6 +320,8 @@ monsters can throw cockatrice eggs at hero, but there was no handling for eggs
when the missile hit an intervening monster
clarify that shape-shifted vampires revert to vampire form when petrified or
digested; when back in 'V' form, they're vulnerable to such damage
when poly'd into an engulfer which does digestion damage, a kill resulting in
a level gain gave "welcome to level N+1" before "you digest <victim>"
Fixes to Post-3.6.0 Problems that Were Exposed Via git Repository

View File

@@ -1949,11 +1949,13 @@ register struct attack *mattk;
m_useup(mdef, otmp);
newuhs(FALSE);
/* Message sequencing BUG: if you gain a level here,
* "welcome to level N+1" is given immediately and
* then "you totally digest <foo>" is given later.
*/
xkilled(mdef, XKILL_NOMSG | XKILL_NOCORPSE);
/* start_engulf() issues "you engulf <mdef>" above; this
used to specify XKILL_NOMSG but we need "you kill <mdef>"
in case we're also going to get "welcome to level N+1";
"you totally digest <mdef>" will be coming soon (after
several turns) but the level-gain message seems out of
order if the kill message is left implicit */
xkilled(mdef, XKILL_GIVEMSG | XKILL_NOCORPSE);
if (mdef->mhp > 0) { /* monster lifesaved */
You("hurriedly regurgitate the sizzling in your %s.",
body_part(STOMACH));