sleeping steeds (trunk only)

From the newsgroup:  it was possible to saddle, mount, and ride on a
sleeping jabberwork without it ever waking up.  Movement was checking for
timed sleep (!mon->mcanmove, set when mon->mfrozen contains a timer count
for either sleep or paralysis) but not indefinite sleep (mon->msleeping).
This moves the checking into its own routine which handles both types.
And it gives monsters a chance to wake up when they get saddled or mounted.
This commit is contained in:
nethack.rankin
2006-10-13 04:03:36 +00:00
parent 951e0d87fa
commit 93eccebe84
6 changed files with 75 additions and 26 deletions

View File

@@ -1277,7 +1277,7 @@ int amt, how;
(how >= 0 && resist(mon, (char)how, 0, NOTELL))) {
shieldeff(mon->mx, mon->my);
} else if (mon->mcanmove) {
mon->meating = 0; /* terminate any meal-in-progress */
finish_meating(mon); /* terminate any meal-in-progress */
amt += (int) mon->mfrozen;
if (amt > 0) { /* sleep for N turns */
mon->mcanmove = 0;