-HDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.890 $ $NHDT-Date: 1650836671 2022/04/24 21:44:31 $
+HDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.891 $ $NHDT-Date: 1650838834 2022/04/24 22:20:34 $
General Fixes and Modified Features
-----------------------------------
and didn't cause any hunger itself; change to treat it like the ring
if the progarm was built with EXTRA_SANITY_CHECKS enabled, changing levels
while riding would give impossible warning "no monster to remove"
+the change to protect Rider corpses from being destroyed by exploding chests
+ inadvertently prevented them from being used up when Riders revived
curses: 'msg_window' option wasn't functional for curses unless the binary
also included tty support
-/* NetHack 3.7 extern.h $NHDT-Date: 1646870811 2022/03/10 00:06:51 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1069 $ */
+/* NetHack 3.7 extern.h $NHDT-Date: 1650838834 2022/04/24 22:20:34 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1108 $ */
/* Copyright (c) Steve Creps, 1988. */
/* NetHack may be freely redistributed. See license for details. */
extern void freeinv(struct obj *);
extern void delallobj(int, int);
extern void delobj(struct obj *);
+extern void delobj_core(struct obj *, boolean);
extern struct obj *sobj_at(int, int, int);
extern struct obj *nxtobj(struct obj *, int, boolean);
extern struct obj *carrying(int);
-/* NetHack 3.7 invent.c $NHDT-Date: 1648428942 2022/03/28 00:55:42 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.359 $ */
+/* NetHack 3.7 invent.c $NHDT-Date: 1650838836 2022/04/24 22:20:36 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.384 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Derek S. Ray, 2015. */
/* NetHack may be freely redistributed. See license for details. */
}
}
-/* destroy object in fobj chain (if unpaid, it remains on the bill) */
+/* normal object deletion (if unpaid, it remains on the bill) */
void
delobj(struct obj *obj)
+{
+ delobj_core(obj, FALSE);
+}
+
+/* destroy object; caller has control over whether to destroy something
+ that ordinarily shouldn't be destroyed */
+void
+delobj_core(
+ struct obj *obj,
+ boolean force) /* 'force==TRUE' used when reviving Rider corpses */
{
boolean update_map;
/* obj_resists(obj,0,0) protects the Amulet, the invocation tools,
and Rider corspes */
- if (obj_resists(obj, 0, 0)) {
+ if (!force && obj_resists(obj, 0, 0)) {
/* player might be doing something stupid, but we
* can't guarantee that. assume special artifacts
* are indestructible via drawbridges, and exploding
}
update_map = (obj->where == OBJ_FLOOR);
obj_extract_self(obj);
- if (update_map) {
+ if (update_map) { /* floor object's coordinates are always up to date */
maybe_unhide_at(obj->ox, obj->oy);
newsym(obj->ox, obj->oy);
}
-/* NetHack 3.7 zap.c $NHDT-Date: 1646870848 2022/03/10 00:07:28 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.402 $ */
+/* NetHack 3.7 zap.c $NHDT-Date: 1650838839 2022/04/24 22:20:39 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.408 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2013. */
/* NetHack may be freely redistributed. See license for details. */
/* not useupf(), which charges */
if (corpse->quan > 1L)
corpse = splitobj(corpse, 1L);
- delobj(corpse);
+ delobj_core(corpse, TRUE);
newsym(x, y);
break;
case OBJ_MINVENT: