kicking a tree could produce 0 to 4 killer bees but it should have been 1 to 5
mounting a steed allowed hero to make moves that would otherwise be disallowed
including mounting diagonally in a shop doorway
+monsters lose intrinsic speed when pertrified
Platform- and/or Interface-Specific Fixes
-/* SCCS Id: @(#)muse.c 3.4 2002/02/07 */
+/* SCCS Id: @(#)muse.c 3.4 2002/08/29 */
/* Copyright (C) 1990 by Ken Arromdee */
/* NetHack may be freely redistributed. See license for details. */
int nutrit = (obj->otyp == CORPSE) ? dog_nutrition(mon, obj) : 0;
/* also sets meating */
+ /* give a "<mon> is slowing down" message and also remove
+ intrinsic speed (comparable to similar effect on the hero) */
+ mon_adjust_speed(mon, -3, (struct obj *)0);
+
if (canseemon(mon)) {
long save_quan = obj->quan;
-/* SCCS Id: @(#)trap.c 3.4 2002/08/16 */
+/* SCCS Id: @(#)trap.c 3.4 2002/08/29 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
mon_to_stone(mon);
return;
}
+
+ /* give a "<mon> is slowing down" message and also remove
+ intrinsic speed (comparable to similar effect on the hero) */
+ mon_adjust_speed(mon, -3, (struct obj *)0);
+
if (cansee(mon->mx, mon->my))
pline("%s turns to stone.", Monnam(mon));
if (byplayer) {
-/* SCCS Id: @(#)worn.c 3.4 2002/02/07 */
+/* SCCS Id: @(#)worn.c 3.4 2002/08/30 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
struct obj *obj; /* item to make known if effect can be seen */
{
struct obj *otmp;
- boolean give_msg = !in_mklev;
+ boolean give_msg = !in_mklev, stoned = FALSE;
unsigned int oldspeed = mon->mspeed;
switch (adjust) {
mon->permspeed = MSLOW;
give_msg = FALSE; /* (not currently used) */
break;
+ case -3: /* petrification */
+ /* take away intrinsic speed but don't reduce normal speed */
+ if (mon->permspeed == MFAST) mon->permspeed = 0;
+ stoned = TRUE;
+ break;
}
for (otmp = mon->minvent; otmp; otmp = otmp->nobj)
else
mon->mspeed = mon->permspeed;
- if (give_msg && mon->mspeed != oldspeed && canseemon(mon)) {
+ if (give_msg && (mon->mspeed != oldspeed || stoned) && canseemon(mon)) {
/* fast to slow (skipping intermediate state) or vice versa */
const char *howmuch = (mon->mspeed + oldspeed == MFAST + MSLOW) ?
"much " : "";
- if (adjust > 0 || mon->mspeed == MFAST)
+ if (stoned) {
+ /* mimic the player's petrification countdown; "slowing down"
+ even if fast movement rate retained via worn speed boots */
+ if (flags.verbose) pline("%s is slowing down.", Monnam(mon));
+ } else if (adjust > 0 || mon->mspeed == MFAST)
pline("%s is suddenly moving %sfaster.", Monnam(mon), howmuch);
else
pline("%s seems to be moving %sslower.", Monnam(mon), howmuch);