Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fill chokes on itself on the last meters in games with both minimal players and full players #4224

Open
NewSoupVi opened this issue Nov 22, 2024 · 1 comment · May be fixed by #4225
Open
Labels
affects: core Issues/PRs that touch core and may need additional validation. is: bug/fix Issues that are reporting bugs or pull requests that are fixing bugs.

Comments

@NewSoupVi
Copy link
Member

NewSoupVi commented Nov 22, 2024

What happened?

When an accessibility: full player's item ends up on an unreachable accessibility: minimal player's location during progression fill, it is supposed to be left there and re-placed by accessibility_corrections. That is the express purpose of accessibility_corrections.

Now, consider the following scenario in a generation with a full player and a minimal player.

The gen goes into swap during progression fill. As a result, cleanup_required will be set to True. (Even if safe swap)
If cleanup_required is set, all unreachable locations containing prog items for the full player will have their items forcefully ripped out then and there
Fill then runs a check for whether there are any unplaced items. This errors because there is an unplaced item.

But had this "required cleanup" not happened, the unreachable item would have been properly corrected by accessibility_corrections on the very next line.
In fact, if you comment out the cleanup, the seed actually generates just fine.

Reproduction Steps

Be on this #4188
Use these yamls: players (1).zip
Set seed to 95140043061228385161

Generate -> Fail
Generate with if cleanup_required changed to if False -> Success.

What were the expected results?

The item should've been left on its check so that accessibility_corrections can correct it properly.

Software

Local generation

@NewSoupVi NewSoupVi changed the title Fill: Fill chokes on itself on the last meters in games with both minimal players and full players Fill chokes on itself on the last meters in games with both minimal players and full players Nov 22, 2024
@NewSoupVi NewSoupVi added is: bug/fix Issues that are reporting bugs or pull requests that are fixing bugs. affects: core Issues/PRs that touch core and may need additional validation. labels Nov 22, 2024
@NewSoupVi
Copy link
Member Author

NewSoupVi commented Nov 22, 2024

Fixing this is a bit hard to think about. But I think a good approach is:

The "cleanup" step should not clean up any case that accessibility_corrections can correct.

So, a place to start would be: In the "cleanup" step, add an additional if not condition whose content expresses "this placement can be cleaned up by accessibility_corrections", which is probably gonna be some combination of checking the location's player's accessibility and the item's player's accessibility that happens in accesibility_corrections.

This new condition might then reveal itself to cancel with parts of the existing condition via boolean logic identities.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
affects: core Issues/PRs that touch core and may need additional validation. is: bug/fix Issues that are reporting bugs or pull requests that are fixing bugs.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant