simplify picking item up while swallowed
This commit is contained in:
+7
-17
@@ -1897,27 +1897,17 @@ struct obj *
|
|||||||
pick_obj(struct obj *otmp)
|
pick_obj(struct obj *otmp)
|
||||||
{
|
{
|
||||||
struct obj *result;
|
struct obj *result;
|
||||||
int ox, oy;
|
coordxy ox, oy;
|
||||||
boolean robshop = FALSE;
|
boolean robshop, fromfloor = otmp->where == OBJ_FLOOR;
|
||||||
|
|
||||||
if (otmp->ox == 0 && otmp->oy == 0) {
|
/* otmp is either on the floor or in an engulfer's inventory; for the
|
||||||
if (u.uswallow && u.ustuck && otmp->where == OBJ_MINVENT
|
latter, its <ox,oy> probably won't be set */
|
||||||
&& otmp->ocarry == u.ustuck) {
|
(void) get_obj_location(otmp, &ox, &oy, 0);
|
||||||
otmp->ox = u.ustuck->mx;
|
|
||||||
otmp->oy = u.ustuck->my;
|
|
||||||
} else {
|
|
||||||
/* this will be a problem for newsym below */
|
|
||||||
impossible("otmp has no location coordinates <%d, %d> where=%d.",
|
|
||||||
otmp->ox, otmp->oy, otmp->where);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ox = otmp->ox;
|
|
||||||
oy = otmp->oy;
|
|
||||||
robshop = (!u.uswallow && otmp != uball && costly_spot(ox, oy));
|
robshop = (!u.uswallow && otmp != uball && costly_spot(ox, oy));
|
||||||
|
|
||||||
obj_extract_self(otmp);
|
obj_extract_self(otmp);
|
||||||
newsym(ox, oy);
|
if (fromfloor)
|
||||||
|
newsym(ox, oy);
|
||||||
|
|
||||||
/* for shop items, addinv() needs to be after addtobill() (so that
|
/* for shop items, addinv() needs to be after addtobill() (so that
|
||||||
object merger can take otmp->unpaid into account) but before
|
object merger can take otmp->unpaid into account) but before
|
||||||
|
|||||||
Reference in New Issue
Block a user