blank perm_invent after repeating spell cast

add mechanics to ensure display_inventory() refreshes perm_invent as
expected when update_inventory() is called from a repeat command.

Resolves #1454
This commit is contained in:
nhmall
2025-11-06 01:34:52 -05:00
parent 58c7d2fb3e
commit 7763f4c5b0
2 changed files with 4 additions and 1 deletions

View File

@@ -2703,10 +2703,12 @@ update_inventory(void)
* attempt in the shop code handled it for unpaid items but not for
* paying for used-up shop items; that follows a different code path.)
*/
program_state.in_update_inventory = TRUE;
save_suppress_price = iflags.suppress_price;
iflags.suppress_price = 0;
(*windowprocs.win_update_inventory)(0);
iflags.suppress_price = save_suppress_price;
program_state.in_update_inventory = FALSE;
}
/* the #perminv command - call interface's persistent inventory routine */
@@ -4024,7 +4026,7 @@ display_inventory(const char *lets, boolean want_reply)
{
struct _cmd_queue *cmdq = cmdq_pop();
if (cmdq) {
if (cmdq && !program_state.in_update_inventory) {
if (cmdq->typ == CMDQ_KEY) {
struct obj *otmp;