fix #H7205, #H7120, #H5216 - sortloot
H7205 - full-pack identify might skip items if perm_invent is on
because updating the inventory window might reorder 'invent'
while the identify code is in the midst of traversing it;
H7120 - pickup that doesn't pick anything up can change the glyph
shown on the map because the pile might be reordered such
that a different item is on top;
H5216 - performing a sortloot operation on a pile and then switching
back to sortloot:none doesn't restore pile's original order.
The 'revamp' that changed the contributed sortloot feature to switch
to simpler usage (object list itself was sorted rather than having a
parallel array that needed to be constructed, sorted, traversed, and
discarded) turns out to have too many problems. This reverts to a
hybrid solution that constructs an array for traversal, leaving the
linked list in its original order, but hides most of the details of
that from sortloot() callers. The 'revamp' benefit of being able to
use normal list traversal is lost, as is the potential to skip
sorting when the list turns out to already be in the desired order.
This could stand to have a lot more testing than it's had so far.
This commit is contained in:
@@ -32,6 +32,10 @@ when finishing using 'O' to examine or set hilite_status rules, if the
|
||||
reminder about setting it to non-zero to activate highlighting
|
||||
end of game disclosure was exercising Wisdom when revealing inventory and
|
||||
also repeatedly updating persistent inventory window if enabled
|
||||
internals for 'sortloot' option have been changed to not reorder the actual
|
||||
list of objects, so changing it to 'n'one will get the original order
|
||||
back and having a persistent inventory window open when performing
|
||||
full-pack identify won't result in possibly skipping some items
|
||||
|
||||
|
||||
Fixes to Post-3.6.1 Problems that Were Exposed Via git Repository
|
||||
|
||||
Reference in New Issue
Block a user