frightened by hero standing on scroll of scare monster
the Wizard, Angels and lawful minions, the Riders, shopkeep/priest in own room
are never frightened by tooled horns
+'Iu' would reveal unknown container contents if carrying one unpaid item inside
+ a hero-owned container whose contents weren't known
Fixes to Post-3.6.0 Problems that Were Exposed Via git Repository
-/* NetHack 3.6 extern.h $NHDT-Date: 1517128658 2018/01/28 08:37:38 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.624 $ */
+/* NetHack 3.6 extern.h $NHDT-Date: 1518053385 2018/02/08 01:29:45 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.625 $ */
/* Copyright (c) Steve Creps, 1988. */
/* NetHack may be freely redistributed. See license for details. */
E struct obj *FDECL(unsplitobj, (struct obj *));
E void NDECL(clear_splitobjs);
E void FDECL(replace_object, (struct obj *, struct obj *));
+E struct obj *FDECL(unknwn_contnr_contents, (struct obj *));
E void FDECL(bill_dummy_object, (struct obj *));
E void FDECL(costly_alteration, (struct obj *, int));
E struct obj *FDECL(mksobj, (int, BOOLEAN_P, BOOLEAN_P));
-/* NetHack 3.6 invent.c $NHDT-Date: 1512473628 2017/12/05 11:33:48 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.223 $ */
+/* NetHack 3.6 invent.c $NHDT-Date: 1518053384 2018/02/08 01:29:44 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.224 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
dounpaid()
{
winid win;
- struct obj *otmp, *marker;
+ struct obj *otmp, *marker, *contnr;
register char ilet;
char *invlet = flags.inv_order;
int classcount, count, num_so_far;
long cost, totcost;
count = count_unpaid(invent);
+ otmp = marker = contnr = (struct obj *) 0;
if (count == 1) {
- marker = (struct obj *) 0;
otmp = find_unpaid(invent, &marker);
+ contnr = unknwn_contnr_contents(otmp);
+ }
+ if (otmp && !contnr) {
+ /* 1 item; use pline instead of popup menu */
cost = unpaid_cost(otmp, FALSE);
iflags.suppress_price++; /* suppress "(unpaid)" suffix */
pline1(xprname(otmp, distant_name(otmp, doname),
- carried(otmp) ? otmp->invlet : CONTAINED_SYM, TRUE,
- cost, 0L));
+ carried(otmp) ? otmp->invlet : CONTAINED_SYM,
+ TRUE, cost, 0L));
iflags.suppress_price--;
return;
}
-/* NetHack 3.6 mkobj.c $NHDT-Date: 1513298759 2017/12/15 00:45:59 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.129 $ */
+/* NetHack 3.6 mkobj.c $NHDT-Date: 1518053380 2018/02/08 01:29:40 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.130 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
}
}
+/* is 'obj' inside a container whose contents aren't known?
+ if so, return the outermost container meeting that criterium */
+struct obj *
+unknwn_contnr_contents(obj)
+struct obj *obj;
+{
+ struct obj *result = 0, *parent;
+
+ while (obj->where == OBJ_CONTAINED) {
+ parent = obj->ocontainer;
+ if (!parent->cknown)
+ result = parent;
+ obj = parent;
+ }
+ return result;
+}
+
/*
* Create a dummy duplicate to put on shop bill. The duplicate exists
* only in the billobjs chain. This function is used when a shop object