-NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.835 $ $NHDT-Date: 1646136928 2022/03/01 12:15:28 $
+NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.836 $ $NHDT-Date: 1646260985 2022/03/02 22:43:05 $
General Fixes and Modified Features
-----------------------------------
place_object() validated coordinates after using them to index level.objects
killed rope golem may drop leashes and bullwhips
using magic portals and level teleporters stuns hero for a few turns
+clear obj->bypass for buried objects [a giant on ice triggers a fire trap,
+ inventory is subjected to burning and surviving objects have their
+ bypass bit set, giant is killed by fire trap and drops a boulder and
+ other inventory, ice is melted, boulder plugs resulting pool burying
+ rest of giant's dropped inventory, subsequent sanity checks report
+ that there are buried objects which are 'flagged bypass']
Fixes to 3.7.0-x Problems that Were Exposed Via git Repository
-/* NetHack 3.7 worn.c $NHDT-Date: 1627505148 2021/07/28 20:45:48 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.77 $ */
+/* NetHack 3.7 worn.c $NHDT-Date: 1646260985 2022/03/02 22:43:05 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.81 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2013. */
/* NetHack may be freely redistributed. See license for details. */
otmp->bypass = 0;
for (otmp = g.migrating_objs; otmp; otmp = otmp->nobj)
otmp->bypass = 0;
+ for (otmp = g.level.buriedobjlist; otmp; otmp = otmp->nobj)
+ otmp->bypass = 0;
+ for (otmp = g.billobjs; otmp; otmp = otmp->nobj)
+ otmp->bypass = 0;
for (mtmp = fmon; mtmp; mtmp = mtmp->nmon) {
if (DEADMONSTER(mtmp))
continue;
/* no MCORPSENM(mtmp)==PM_LONG_WORM check here; long worms can't
be just created by polymorph and migrating at the same time */
}
+ /* this is a no-op since mydogs is only non-Null during level change or
+ final ascension and we aren't called at those times, but be thorough */
+ for (mtmp = g.mydogs; mtmp; mtmp = mtmp->nmon)
+ for (otmp = mtmp->minvent; otmp; otmp = otmp->nobj)
+ otmp->bypass = 0;
/* ball can be "floating", not on any chain */
if (uball)