From 326071680d57ea8b953f17a3524f2fdc00736697 Mon Sep 17 00:00:00 2001 From: backwardsEric Date: Wed, 4 Sep 2019 08:16:33 -0700 Subject: [PATCH] Adjust so eating an unidentified piece of food from the pack removes that piece of food and not something else. --- src/cmd-eat.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/cmd-eat.c b/src/cmd-eat.c index 9a0b7a49..4cd71a17 100644 --- a/src/cmd-eat.c +++ b/src/cmd-eat.c @@ -22,6 +22,7 @@ void do_cmd_eat_food_aux(INVENTORY_IDX item) { int ident, lev; + BIT_FLAGS inventory_flags; object_type *o_ptr; if (music_singing_any()) stop_singing(p_ptr); @@ -300,7 +301,16 @@ void do_cmd_eat_food_aux(INVENTORY_IDX item) } } - p_ptr->update |= (PU_COMBINE | PU_REORDER); + /* + * Store what may have to be updated for the inventory (including + * autodestroy if set by something else). Then turn off those flags + * so that updates triggered by calling gain_exp() below do not + * rearrange the inventory before the food item is destroyed in the + * pack. + */ + inventory_flags = (PU_COMBINE | PU_REORDER | + (p_ptr->update & PU_AUTODESTROY)); + p_ptr->update &= ~(PU_COMBINE | PU_REORDER | PU_AUTODESTROY); if (!(object_is_aware(o_ptr))) { @@ -320,7 +330,7 @@ void do_cmd_eat_food_aux(INVENTORY_IDX item) } p_ptr->window |= (PW_INVEN | PW_EQUIP | PW_PLAYER); - + p_ptr->update |= inventory_flags; /* Food can feed the player */ if (prace_is_(RACE_VAMPIRE) || (p_ptr->mimic_form == MIMIC_VAMPIRE)) -- 2.20.1 (Apple Git-117)