Add 'pickup_stolen' option

Add pickup_stolen option to autopick items stolen from you by a nymph or
monkey, even if they don't match your normal autopickup settings.
Replace was_dropped, was_thrown with a 2-bit bitfield that can contain
values LOST_DROPPED, LOST_THROWN, and LOST_STOLEN (or 0), since they
should all be mutually exclusive anyway as they track the most recent
way the item left the hero's inventory.

[Rebase/merge conflict fixed up.  PR]
This commit is contained in:
Michael Meyer
2023-11-17 09:37:16 -05:00
committed by PatR
parent ecda85cc32
commit 1736f3caaa
15 changed files with 54 additions and 23 deletions

View File

@@ -2863,9 +2863,10 @@ objlist_sanity(struct obj *objlist, int wheretype, const char *mesg)
for (obj = objlist; obj; obj = obj->nobj) {
if (obj->where != wheretype)
insane_object(obj, ofmt0, mesg, (struct monst *) 0);
if (obj->was_thrown && obj->was_dropped) {
insane_object(obj, "%s obj is both thrown and dropped! %s %s: %s",
mesg, obj->ocarry);
if (obj->where == OBJ_INVENT && obj->how_lost != LOST_NONE) {
char lostbuf[40];
Sprintf(lostbuf, "how_lost=%d obj in inventory!", obj->how_lost);
insane_object(obj, ofmt0, lostbuf, (struct monst *) 0);
}
if (Has_contents(obj)) {
if (wheretype == OBJ_ONBILL)