Fix: Encountering two-way red signals could prune unrelated branches. #9271
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.
Motivation / Problem
The pathfinder sometimes makes weird decisions when encountering a two-way red signal (with
yapf.rail_firstred_twoway_eol
on). Most recently spotted in this game: prune_bug.zipThis problem has also been reported in #6637
Description
The core of the issue is that when the pathfinder encounters a two-way red signal, it starts pruning the branch leading to the best intermediate node. However, this does not work in two cases:
The 1. case is self-explanatory. For the 2. case, you can take a look at the attached savegame. The pathfinder:
The PR solves these issues by first checking whether the intermediate node lays on the path between the two-way signal node and the preceding "choice follows" node and only prunes if that is the case.
Limitations
No known limitations.
Checklist for review
Some things are not automated, and forgotten often. This list is a reminder for the reviewers.