diff --git a/src/pickup.c b/src/pickup.c index 9c37428c5..185844455 100644 --- a/src/pickup.c +++ b/src/pickup.c @@ -2132,7 +2132,9 @@ boolean taking; && !which_armor(mtmp, W_ARMG) && !(resists_ston(mtmp) || defended(mtmp, AD_STON))); - + boolean unpaid = otmp->unpaid + || (!otmp->no_charge && costly_spot(otmp->ox, otmp->oy)); + /* Clear inapplicable wornmask bits */ unwornmask &= ~(W_ART | W_ARTI | W_QUIVER); @@ -2142,6 +2144,11 @@ boolean taking; weldmsg(otmp); continue; } + if (unpaid) { + pline("A mysterious force prevents you from giving away %s...", + yname(otmp)); + continue; + } if (otmp->otyp == LOADSTONE && cursed(otmp, TRUE) && maxquan < otmp->quan) { /* kludge for canletgo() feedback, also used in getobj() */