Merge branch 'NetHack-3.6.2'

This commit is contained in:
nhmall
2019-01-05 10:28:34 -05:00
4 changed files with 32 additions and 17 deletions

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 objnam.c $NHDT-Date: 1545774525 2018/12/25 21:48:45 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.231 $ */
/* NetHack 3.6 objnam.c $NHDT-Date: 1546687293 2019/01/05 11:21:33 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.232 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2011. */
/* NetHack may be freely redistributed. See license for details. */
@@ -1198,21 +1198,23 @@ unsigned doname_flags;
}
/* treat 'restoring' like suppress_price because shopkeeper and
bill might not be available yet while restore is in progress */
if (!iflags.suppress_price && !g.restoring && is_unpaid(obj)) {
if (iflags.suppress_price || g.restoring) {
; /* don't attempt to obtain any stop pricing, even if 'with_price' */
} else if (is_unpaid(obj)) { /* in inventory or in container in invent */
long quotedprice = unpaid_cost(obj, TRUE);
Sprintf(eos(bp), " (%s, %ld %s)",
obj->unpaid ? "unpaid" : "contents",
quotedprice, currency(quotedprice));
} else if (with_price) {
long price = get_cost_of_shop_item(obj); /* updates obj->ox,oy */
} else if (with_price) { /* on floor or in container on floor */
int nochrg = 0;
long price = get_cost_of_shop_item(obj, &nochrg);
if (price > 0L)
Sprintf(eos(bp), " (%ld %s)", price, currency(price));
else if (obj->no_charge /* only set for items on shop floor */
&& *u.ushops /* but make sure hero is inside same shop */
&& (*in_rooms(u.ux, u.uy, SHOPBASE)
== *in_rooms(obj->ox, obj->oy, SHOPBASE)))
Sprintf(eos(bp), " (%s, %ld %s)",
nochrg ? "contents" : "for sale",
price, currency(price));
else if (nochrg > 0)
Strcat(bp, " (no charge)");
}
if (!strncmp(prefix, "a ", 2)) {

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 shk.c $NHDT-Date: 1545953813 2018/12/27 23:36:53 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.150 $ */
/* NetHack 3.6 shk.c $NHDT-Date: 1546687294 2019/01/05 11:21:34 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.151 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2012. */
/* NetHack may be freely redistributed. See license for details. */
@@ -1970,19 +1970,27 @@ unsigned id;
/* Returns the price of an arbitrary item in the shop,
0 if the item doesn't belong to a shopkeeper or hero is not in the shop. */
long
get_cost_of_shop_item(obj)
get_cost_of_shop_item(obj, nochrg)
register struct obj *obj;
{
int *nochrg; /* alternate return value: 1: no charge, 0: shop owned, */
{ /* -1: not in a shop (so should't be formatted as "no charge") */
struct monst *shkp;
struct obj *top;
xchar x, y;
long cost = 0L;
*nochrg = -1; /* assume 'not applicable' */
if (*u.ushops && obj->oclass != COIN_CLASS
&& obj != uball && obj != uchain
&& get_obj_location(obj, &x, &y, CONTAINED_TOO)
&& *in_rooms(u.ux, u.uy, SHOPBASE) == *in_rooms(x, y, SHOPBASE)
&& *in_rooms(x, y, SHOPBASE) == *u.ushops
&& (shkp = shop_keeper(inside_shop(x, y))) != 0 && inhishop(shkp)) {
cost = obj->no_charge ? 0L : obj->quan * get_cost(obj, shkp);
for (top = obj; top->ocontainer; top = top->ocontainer)
continue;
*nochrg = (top->where == OBJ_FLOOR && obj->no_charge);
if (carried(top) ? (int) obj->unpaid : !*nochrg)
cost = obj->quan * get_cost(obj, shkp);
if (Has_contents(obj))
cost += contained_cost(obj, shkp, 0L, FALSE, FALSE);
}