fix #H7156 - perm_invent

Bug report #H7156 listed three items, all relating to perm_invent:
1) it shouldn't persist across save/restore since restore might be
   on a system which doesn't have enough room to display it (report
   actually complained that config file setting was ignored when
   restoring old games, which is an expected side-effect for options
   that persist across save/restore);
2) permanent inventory wasn't updated when using scroll of charging;
3) attempts to update permanent inventory during restore could lead
   to crash if it tries to access shop cost for unpaid items.
Items (2) and (3) have already been fixed.  This fixes (1).

Replace 'flags.perm_invent' with a dummy flag, preserving save files
while removing it from flags.  Add 'iflags.perm_invent' to hold the
value of the perm_invent option.

The win32 files that are updated here haven't been tested.  Whichever
branch contains the curses interface needs to be updated; ditto for
any other pending/potential interfaces which support perm_invent.
This commit is contained in:
PatR
2018-09-14 17:34:33 -07:00
parent 2c231f57bd
commit 3eded06669
12 changed files with 27 additions and 21 deletions

View File

@@ -40,7 +40,7 @@ struct flag {
boolean lit_corridor; /* show a dark corr as lit if it is in sight */
boolean nap; /* `timed_delay' option for display effects */
boolean null; /* OK to send nulls to the terminal */
boolean perm_invent; /* keep full inventories up until dismissed */
boolean p__obsolete; /* [3.6.2: perm_invent moved to iflags] */
boolean pickup; /* whether you pickup or move and look */
boolean pickup_thrown; /* auto-pickup items you threw */
boolean pushweapon; /* When wielding, push old weapon into second slot */
@@ -292,6 +292,7 @@ struct instance_flags {
boolean menu_tab_sep; /* Use tabs to separate option menu fields */
boolean news; /* print news */
boolean num_pad; /* use numbers for movement commands */
boolean perm_invent; /* keep full inventories up until dismissed */
boolean renameallowed; /* can change hero name during role selection */
boolean renameinprogress; /* we are changing hero name */
boolean status_updates; /* allow updates to bottom status lines;