fix shop ownership of saddle dropped by dead pet (trunk only)

From a bug report, you could obtain
a saddle for free if it was dropped (while worn) by a dying pet inside a
shop.  That's intentional, but it was happening even when the hero was
not in the shop, which doesn't seem right.  Change things to only set it
no_charge if hero is within the same shop (including standing in the
doorway or a temporary wall breach, not just when all the way inside) at
the time of the drop.
This commit is contained in:
nethack.rankin
2011-07-09 02:56:38 +00:00
parent ae1d8af5f3
commit 6a53009069
2 changed files with 7 additions and 2 deletions

View File

@@ -631,9 +631,12 @@ boolean verbosely;
mon->misc_worn_check &= ~obj->owornmask;
update_mon = TRUE;
#ifdef STEED
/* don't charge for an owned saddle on dead steed */
/* don't charge for an owned saddle on dead steed (provided
that the hero is within the same shop at the time) */
} else if (mon->mtame && (obj->owornmask & W_SADDLE) &&
!obj->unpaid && costly_spot(omx, omy)) {
!obj->unpaid && costly_spot(omx, omy) &&
/* being at a costly_spot guarantees lev->roomno is not 0 */
index(in_rooms(u.ux, u.uy, SHOPBASE), levl[omx][omy].roomno)) {
obj->no_charge = 1;
#endif
}