diff --git a/doc/fixes34.4 b/doc/fixes34.4 index 9e4ba11b1..3743f7914 100644 --- a/doc/fixes34.4 +++ b/doc/fixes34.4 @@ -352,6 +352,8 @@ if magically removing steed's saddle is fatal, don't leave it saddled in bones charging prompt used wrong criteria when deciding whether to list rings an orc (or gnome) will respond to #chat if hero is also an orc (or gnome) kicking at "empty space" has side-effects so should use current turn +using weapon to kill tame engulfer from inside triggered "placing defunct + monster onto map?" warning Platform- and/or Interface-Specific Fixes diff --git a/src/monmove.c b/src/monmove.c index d2c4a5c4a..7d4b98227 100644 --- a/src/monmove.c +++ b/src/monmove.c @@ -1,4 +1,4 @@ -/* SCCS Id: @(#)monmove.c 3.5 2006/12/13 */ +/* SCCS Id: @(#)monmove.c 3.5 2007/05/16 */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* NetHack may be freely redistributed. See license for details. */ @@ -228,6 +228,9 @@ int fleetime; boolean first; boolean fleemsg; { + /* shouldn't happen; maybe warrants impossible()? */ + if (DEADMONSTER(mtmp)) return; + if (mtmp == u.ustuck) release_hero(mtmp); /* expels/unstuck */ if (!first || !mtmp->mflee) { diff --git a/src/uhitm.c b/src/uhitm.c index 62b1371fa..72823bad8 100644 --- a/src/uhitm.c +++ b/src/uhitm.c @@ -1,4 +1,4 @@ -/* SCCS Id: @(#)uhitm.c 3.5 2007/04/13 */ +/* SCCS Id: @(#)uhitm.c 3.5 2007/05/16 */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* NetHack may be freely redistributed. See license for details. */ @@ -1031,8 +1031,12 @@ int thrown; /* HMON_xxx (0 => hand-to-hand, other => ranged) */ if (mon->mhp > mon->mhpmax) mon->mhp = mon->mhpmax; if (mon->mhp < 1) destroyed = TRUE; - if (mon->mtame && (!mon->mflee || mon->mfleetim) && tmp > 0) { - abuse_dog(mon); + if (mon->mtame && tmp > 0) { + /* do this even if the pet is being killed (affects revival) */ + abuse_dog(mon); /* reduces tameness */ + /* flee if still alive and still tame; if already suffering from + untimed fleeing, no effect, otherwise increases timed fleeing */ + if (mon->mtame && !destroyed) monflee(mon, 10 * rnd(tmp), FALSE, FALSE); } if ((mdat == &mons[PM_BLACK_PUDDING] ||