diff --git a/doc/fixes37.0 b/doc/fixes37.0 index 8c1dd9813..221502d7f 100644 --- a/doc/fixes37.0 +++ b/doc/fixes37.0 @@ -428,6 +428,11 @@ poly'd hero who exploded when attacking a monster didn't wake up other woke other monsters within different radius than same monster's would troll corpse revival was inhibited by hero wielding Trollsbane; do that if anyone on level is wielding it +statues representing petrified creatures on Medusa's level might be from + monsters who change form (golems) when hit with stoning damage +attempt to make corpse or statue of a named player character would yield that + of a random monster instead when 'record' was empty; could result in + statues of non-stonable creatures in cockatrice nests Fixes to 3.7.0-x Problems that Were Exposed Via git Repository diff --git a/src/mkobj.c b/src/mkobj.c index 9cae22145..50aa4c3ea 100644 --- a/src/mkobj.c +++ b/src/mkobj.c @@ -1627,10 +1627,15 @@ mk_tt_object( /* player statues never contain books */ initialize_it = (objtype != STATUE); otmp = mksobj_at(objtype, x, y, initialize_it, FALSE); - /* tt_oname() will return null if the scoreboard is empty; - assigning an object name used to allocate a new obj but - doesn't any more so we can safely ignore the return value */ - (void) tt_oname(otmp); + + /* tt_oname() will return null if the scoreboard is empty, which in + turn leaves the random corpsenm value; force it to match a player */ + if (!tt_oname(otmp)) { + int pm = rn1(PM_WIZARD - PM_ARCHEOLOGIST + 1, PM_ARCHEOLOGIST); + + /* update weight for either, force timer sanity for corpses */ + set_corpsenm(otmp, pm); + } return otmp; } diff --git a/src/mplayer.c b/src/mplayer.c index d50f8daa2..b5e50c005 100644 --- a/src/mplayer.c +++ b/src/mplayer.c @@ -114,9 +114,9 @@ mk_mplayer_armor(struct monst* mon, short typ) } struct monst * -mk_mplayer(register struct permonst* ptr, xchar x, xchar y, register boolean special) +mk_mplayer(struct permonst *ptr, xchar x, xchar y, boolean special) { - register struct monst *mtmp; + struct monst *mtmp; char nam[PL_NSIZ]; if (!is_mplayer(ptr)) diff --git a/src/sp_lev.c b/src/sp_lev.c index efbc5d339..4335c5364 100755 --- a/src/sp_lev.c +++ b/src/sp_lev.c @@ -2206,7 +2206,7 @@ create_object(object* o, struct mkroom* croom) /* makemon without rndmonst() might create a group */ was = makemon(&mons[wastyp], 0, 0, MM_NOCOUNTBIRTH); if (was) { - if (!resists_ston(was)) { + if (!resists_ston(was) && !poly_when_stoned(&mons[wastyp])) { (void) propagate(wastyp, TRUE, FALSE); break; }