diff --git a/src/dothrow.c b/src/dothrow.c index 6ec093f98..5d61f0356 100644 --- a/src/dothrow.c +++ b/src/dothrow.c @@ -691,30 +691,24 @@ mhurtle(mon, dx, dy, range) STATIC_OVL void check_shop_obj(obj, x, y, broken) -register struct obj *obj; -register xchar x, y; -register boolean broken; +struct obj *obj; +xchar x, y; +boolean broken; { struct monst *shkp = shop_keeper(*u.ushops); if(!shkp) return; - if(broken) { - if (obj->unpaid) - (void)stolen_value(obj, u.ux, u.uy, - (boolean)shkp->mpeaceful, FALSE); - obj->no_charge = 1; - return; - } - - if (!costly_spot(x, y) || *in_rooms(x, y, SHOPBASE) != *u.ushops) { + if (broken || + !costly_spot(x, y) || *in_rooms(x, y, SHOPBASE) != *u.ushops) { /* thrown out of a shop or into a different shop */ - if (obj->unpaid) + if (count_unpaid(obj)) (void)stolen_value(obj, u.ux, u.uy, (boolean)shkp->mpeaceful, FALSE); + if (broken) obj->no_charge = 1; } else { if (costly_spot(u.ux, u.uy) && costly_spot(x, y)) { - if (obj->unpaid) + if (count_unpaid(obj)) subfrombill(obj, shkp); else if (x != shkp->mx || y != shkp->my) sellobj(obj, x, y);