[WIP] Fixed "Auto-sort infinite loop/game hang #29573" (rebased) #33710
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
SUMMARY: Bugfixes "Auto-sort infinite loop/game hang #29573"
Purpose of change
Fixes #29573
Rebased from PR #32876
Describe the solution
The solution was adopted for new
generic_multi_activity_handler
.The sorting loop was still reproducible even after this fix "Zone Sorting Loop #31895".
I have tried to rewrite
activity_on_turn_move_loot
with the idea of different sorting stages:Note that this algorithm relies completely on the activity instance and does not require any cache from
zone_manager
.So in theory now it could be safely applied to multiple NPC & player in parallel.
Added save/load for
coord_set
inplayer_activity
(required in generic handler and other places likefish_do_turn
).TODO: Test on the save provided in #29573.
Describe alternatives you've considered
I have tried to keep the original code intact as much as possible. But it would probably be better to use separate activities instead of stages for the same activity?
Additional context
This fix should improve performance of the sorting process.