pickup.c bits
This started out as just some minor reformatting but ended up including a couple of new comments and a revision in how the use_container() decides whether it is feasible to put something into the container. Behavior isn't changing.
This commit is contained in:
+25
-14
@@ -1024,7 +1024,8 @@ query_objlist(const char *qstr, /* query string */
|
|||||||
(qflags & USE_INVLET) ? curr->invlet
|
(qflags & USE_INVLET) ? curr->invlet
|
||||||
: (first && curr->oclass == COIN_CLASS) ? '$' : 0,
|
: (first && curr->oclass == COIN_CLASS) ? '$' : 0,
|
||||||
def_oc_syms[(int) objects[curr->otyp].oc_class].sym,
|
def_oc_syms[(int) objects[curr->otyp].oc_class].sym,
|
||||||
ATR_NONE, doname_with_price(curr), MENU_ITEMFLAGS_NONE);
|
ATR_NONE, doname_with_price(curr),
|
||||||
|
MENU_ITEMFLAGS_NONE);
|
||||||
first = FALSE;
|
first = FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1039,8 +1040,8 @@ query_objlist(const char *qstr, /* query string */
|
|||||||
if (sorted && n > 1) {
|
if (sorted && n > 1) {
|
||||||
Sprintf(buf, "%s Creatures",
|
Sprintf(buf, "%s Creatures",
|
||||||
is_animal(u.ustuck->data) ? "Swallowed" : "Engulfed");
|
is_animal(u.ustuck->data) ? "Swallowed" : "Engulfed");
|
||||||
add_menu(win, &nul_glyphinfo, &any, 0, 0, iflags.menu_headings, buf,
|
add_menu(win, &nul_glyphinfo, &any, 0, 0, iflags.menu_headings,
|
||||||
MENU_ITEMFLAGS_NONE);
|
buf, MENU_ITEMFLAGS_NONE);
|
||||||
}
|
}
|
||||||
fake_hero_object = cg.zeroobj;
|
fake_hero_object = cg.zeroobj;
|
||||||
fake_hero_object.quan = 1L; /* not strictly necessary... */
|
fake_hero_object.quan = 1L; /* not strictly necessary... */
|
||||||
@@ -1447,7 +1448,7 @@ carry_count(struct obj *obj, /* object to pick up... */
|
|||||||
wt = iw + (int) GOLD_WT(umoney + qq);
|
wt = iw + (int) GOLD_WT(umoney + qq);
|
||||||
} else if (count > 1 || count < obj->quan) {
|
} else if (count > 1 || count < obj->quan) {
|
||||||
/*
|
/*
|
||||||
* Ugh. Calc num to lift by changing the quan of of the
|
* Ugh. Calc num to lift by changing the quan of the
|
||||||
* object and calling weight.
|
* object and calling weight.
|
||||||
*
|
*
|
||||||
* This works for containers only because containers
|
* This works for containers only because containers
|
||||||
@@ -2755,11 +2756,15 @@ use_container(struct obj **objp,
|
|||||||
You("owe %ld %s for lost merchandise.", loss, currency(loss));
|
You("owe %ld %s for lost merchandise.", loss, currency(loss));
|
||||||
g.current_container->owt = weight(g.current_container);
|
g.current_container->owt = weight(g.current_container);
|
||||||
}
|
}
|
||||||
inokay = (g.invent != 0
|
/* might put something in if carring anything other than just the
|
||||||
&& !(g.invent == g.current_container && !g.current_container->nobj));
|
container itself (invent is not the container or has a next object) */
|
||||||
|
inokay = (g.invent != 0 && (g.invent != g.current_container
|
||||||
|
|| g.invent->nobj));
|
||||||
|
/* might take something out if container isn't empty */
|
||||||
outokay = Has_contents(g.current_container);
|
outokay = Has_contents(g.current_container);
|
||||||
if (!outokay) /* preformat the empty-container message */
|
if (!outokay) /* preformat the empty-container message */
|
||||||
Sprintf(emptymsg, "%s is %sempty.", Ysimple_name2(g.current_container),
|
Sprintf(emptymsg, "%s is %sempty.",
|
||||||
|
Ysimple_name2(g.current_container),
|
||||||
(quantum_cat || cursed_mbag) ? "now " : "");
|
(quantum_cat || cursed_mbag) ? "now " : "");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -2770,7 +2775,8 @@ use_container(struct obj **objp,
|
|||||||
* that it's empty (latter can change on subsequent
|
* that it's empty (latter can change on subsequent
|
||||||
* iterations if player picks ':' response);
|
* iterations if player picks ':' response);
|
||||||
* include the put-in choices ('i','s') if hero
|
* include the put-in choices ('i','s') if hero
|
||||||
* carries any inventory (including gold);
|
* carries any inventory (including gold) aside from
|
||||||
|
* the container itself;
|
||||||
* include do-both when 'o' is available, even if
|
* include do-both when 'o' is available, even if
|
||||||
* inventory is empty--taking out could alter that;
|
* inventory is empty--taking out could alter that;
|
||||||
* include do-both-reversed when 'i' is available,
|
* include do-both-reversed when 'i' is available,
|
||||||
@@ -2805,7 +2811,8 @@ use_container(struct obj **objp,
|
|||||||
trying to do both will yield proper feedback */
|
trying to do both will yield proper feedback */
|
||||||
c = 'b';
|
c = 'b';
|
||||||
} else {
|
} else {
|
||||||
c = in_or_out_menu(qbuf, g.current_container, outmaybe, inokay,
|
c = in_or_out_menu(qbuf, g.current_container,
|
||||||
|
outmaybe, inokay,
|
||||||
(boolean) (used != 0), more_containers);
|
(boolean) (used != 0), more_containers);
|
||||||
}
|
}
|
||||||
} else { /* TRADITIONAL or COMBINATION */
|
} else { /* TRADITIONAL or COMBINATION */
|
||||||
@@ -2863,10 +2870,13 @@ use_container(struct obj **objp,
|
|||||||
used |= (menu_loot(0, FALSE) > 0);
|
used |= (menu_loot(0, FALSE) > 0);
|
||||||
add_valid_menu_class(0);
|
add_valid_menu_class(0);
|
||||||
}
|
}
|
||||||
|
/* recalculate 'inokay' in case something was just taken out and
|
||||||
|
inventory is no longer empty or no longer just the container */
|
||||||
|
inokay = (g.invent && (g.invent != g.current_container
|
||||||
|
|| g.invent->nobj));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((loot_in || stash_one)
|
if ((loot_in || stash_one) && !inokay) {
|
||||||
&& (!g.invent || (g.invent == g.current_container && !g.invent->nobj))) {
|
|
||||||
You("don't have anything%s to %s.", g.invent ? " else" : "",
|
You("don't have anything%s to %s.", g.invent ? " else" : "",
|
||||||
stash_one ? "stash" : "put in");
|
stash_one ? "stash" : "put in");
|
||||||
loot_in = stash_one = FALSE;
|
loot_in = stash_one = FALSE;
|
||||||
@@ -3181,8 +3191,8 @@ tip_ok(struct obj *obj)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* include horn of plenty if sufficiently discovered */
|
/* include horn of plenty if sufficiently discovered */
|
||||||
if (obj->otyp == HORN_OF_PLENTY && obj->dknown &&
|
if (obj->otyp == HORN_OF_PLENTY && obj->dknown
|
||||||
objects[obj->otyp].oc_name_known)
|
&& objects[obj->otyp].oc_name_known)
|
||||||
return GETOBJ_SUGGEST;
|
return GETOBJ_SUGGEST;
|
||||||
|
|
||||||
/* allow trying anything else in inventory */
|
/* allow trying anything else in inventory */
|
||||||
@@ -3242,7 +3252,8 @@ dotip(void)
|
|||||||
containers that it's already being used */
|
containers that it's already being used */
|
||||||
i = (i <= 'i' - 'a' && !flags.lootabc) ? 'i' : 0;
|
i = (i <= 'i' - 'a' && !flags.lootabc) ? 'i' : 0;
|
||||||
add_menu(win, &nul_glyphinfo, &any, i, 0, ATR_NONE,
|
add_menu(win, &nul_glyphinfo, &any, i, 0, ATR_NONE,
|
||||||
"tip something being carried", MENU_ITEMFLAGS_SELECTED);
|
"tip something being carried",
|
||||||
|
MENU_ITEMFLAGS_SELECTED);
|
||||||
}
|
}
|
||||||
end_menu(win, "Tip which container?");
|
end_menu(win, "Tip which container?");
|
||||||
n = select_menu(win, PICK_ONE, &pick_list);
|
n = select_menu(win, PICK_ONE, &pick_list);
|
||||||
|
|||||||
Reference in New Issue
Block a user