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

Bug: OOT entrance shuffle checks if the game is beatable before setting its completion_condition #3716

Open
Mysteryem opened this issue Jul 30, 2024 · 0 comments
Labels
is: bug/fix Issues that are reporting bugs or pull requests that are fixing bugs.

Comments

@Mysteryem
Copy link
Contributor

What happened?

At the very end of EntranceShuffle.shuffle_random_entrances(), OOT checks if it can beat the game with how the entrances were shuffled:

if not world.has_beaten_game(new_all_state, player):

But, the completion condition is set in Rules.set_rules(), which is run after EntranceShuffle.shuffle_random_entrances() in OOTWorld.set_rules()

From a debugger, it can be seen that the completion_condition function is still set to the lambda state: True lambda that gets set by default in MultiWorld.__init__().
image


Modifying the code to set the completion condition first also results in the beatable check failing every time when the completion conditions requires getting the "Triforce" event item because the new_all_state returned by new_all_state = ootworld.get_state_with_complete_itempool() specifically does not collect event items:

# Specifically ensures that only real items are gotten, not any events.

The beatable check seems to be irrelevant in general because the state created by get_state_with_complete_itempool() is an empty state that has been made to collect all items in the OOT item pool and pre-fill items, which is unaffected by shuffling entrances.

What were the expected results?

The completion condition should be set before checking if the game is beatable.

If the intent is to check if the arrangement of entrances results in a beatable seed, the check for the seed being beatable shouldn't be entirely independent from how the entrances were shuffled.

Software

Local generation

@ScipioWright ScipioWright added the is: bug/fix Issues that are reporting bugs or pull requests that are fixing bugs. label Jul 31, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
is: bug/fix Issues that are reporting bugs or pull requests that are fixing bugs.
Projects
None yet
Development

No branches or pull requests

2 participants