fix case on leading character in "Crunched in the head..." in ball.c
using travel mode to move next to a known trap and then trying to step onto
that trap required an extra step; the first one ended up as a no-op
+punished with ball and chain on the same floor square as a trapped chest
+ when it exploded resulted in panic "remove_object: obj not on floor"
Platform- and/or Interface-Specific Fixes
loss += stolen_value(obj, ox, oy,
(boolean)shkp->mpeaceful, TRUE);
delete_contents(obj);
+ /* we're about to delete all things at this location,
+ * which could include the ball & chain.
+ * If we attempt to call unpunish() in the
+ * for-loop below we can end up with otmp2
+ * being invalid once the chain is gone.
+ * Deal with ball & chain right now instead.
+ */
+ if (Punished && !carried(uball) &&
+ ((uchain->ox == u.ux && uchain->oy == u.uy) ||
+ (uball->ox == u.ux && uball->oy == u.uy)))
+ unpunish();
+
for(otmp = level.objects[u.ux][u.uy];
otmp; otmp = otmp2) {
otmp2 = otmp->nexthere;