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
/* 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;
}
}
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))
/* 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;
}