From 64ce55e7604fb8188a22d2de15b8a164fa2738f2 Mon Sep 17 00:00:00 2001 From: backwardsEric Date: Tue, 3 Sep 2019 23:36:04 -0700 Subject: [PATCH] Adjust so reading an unidentified scroll from the pack removes that scroll and not another scroll. --- src/cmd-read.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/cmd-read.c b/src/cmd-read.c index 7d85fbcf..ff31e04f 100644 --- a/src/cmd-read.c +++ b/src/cmd-read.c @@ -35,6 +35,7 @@ void do_cmd_read_scroll_aux(INVENTORY_IDX item, bool known) { int k, used_up, ident, lev; + BIT_FLAGS inventory_flags; object_type *o_ptr; @@ -553,7 +554,15 @@ void do_cmd_read_scroll_aux(INVENTORY_IDX item, bool known) used_up=FALSE; } - 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 destroying the scroll 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))) { @@ -573,7 +582,7 @@ void do_cmd_read_scroll_aux(INVENTORY_IDX item, bool known) } p_ptr->window |= (PW_INVEN | PW_EQUIP | PW_PLAYER); - + p_ptr->update |= inventory_flags; /* Hack -- allow certain scrolls to be "preserved" */ if (!used_up) -- 2.20.1 (Apple Git-117)