Skip to content

Fix switching from advanced to glitchless keeping tricks cached.#2521

Open
dotzo wants to merge 4 commits intoOoTRandomizer:Devfrom
dotzo:trick_list_refresh_issue_fix
Open

Fix switching from advanced to glitchless keeping tricks cached.#2521
dotzo wants to merge 4 commits intoOoTRandomizer:Devfrom
dotzo:trick_list_refresh_issue_fix

Conversation

@dotzo
Copy link

@dotzo dotzo commented Jan 29, 2026

Issues have been popping up of otherwise impossible glitchless seeds nonetheless being generated. After extensive testing using a plando file to force Jabu Jabu's Belly into Water Temple with otherwise S9 settings, I tracked the issue down to either the GUI or the settings, world, or main not properly updating the distribution file before creating the seed.

In resolve_settings in Main.py, it came to my attention that the tricks were being rechecked on top of the old distribution file, which didn't properly flush the list if one of the trick lists was disabled. Up until the creation of advanced logic this was not an issue, as the only way to disable a trick list otherwise to enable No Logic, which already ignores them by setting the logic to every location simply to True.

By just moving the call to the remove_disabled() method to before the trick lists are populated again, the issue is resolved.

This PR also includes setting a disabled_default to the advanced_allowed_tricks list and updating the error check for duplicated trick lists to check glitchless and advanced tricks separately.

@fenhl
Copy link
Collaborator

fenhl commented Jan 29, 2026

This PR also includes setting a disabled_default to the advanced_allowed_tricks list

Pretty sure this isn't required, as disabled_default defaults to the value of default.

@fenhl fenhl added Type: Bug Something isn't working Status: Needs Review Someone should be looking at it Component: Setting specific to setting(s) Status: Needs Testing Probably should be tested labels Jan 29, 2026
@dotzo
Copy link
Author

dotzo commented Jan 29, 2026

In my testing that wasn't enough and it appeared the disabled_default either wasn't being applied, or was being overridden with stale data.

The test parameter was simply to load S9 preset, apply a plandomizer which placed Jabu into Water Temple, and then observe 4 distinct states all with the same fail or succeed conditions - failure being the inability to reach the HF Song of Time check or Saria's song, both due to being unable to beat Jabu as access was prohibited to child.

  1. attempting to generate the seed as-is - failure
  2. atttmpted to generate the seed after changing to Advanced logic - failure
  3. attempting to generate the seed after enabling the Equip Swap glitch and staying on Advance dlogic - success
  4. attempting to generat the seed after switching back to glitchless logic without removing the trick - success

With only disabled_default in place, the same results happened. Only when I moved the refresh line up in that function did #4 fail to generate properly, which is the correct outcome in this scenario.

@dotzo
Copy link
Author

dotzo commented Jan 29, 2026

Adding one more safeguard. I tested r0b's hypothesis that if you were to add the trick via a plando, the seed would generate as before due to the shared LogicHelper can_use. Now the advanced trick list will only populate and be available if you're on Advanced logic. Otherwise it will error out that the trick you were attempt to use doesn't exist.

@dotzo
Copy link
Author

dotzo commented Jan 29, 2026

Sorry, this PR got a little weird. I misread how the settings_dict was working entirely which caused A LOT of confusion on my end. Also apparently adding the disabled_default wasn't working for me locally because I needed to recompile Angular.

After chatting with RealRob, the disabled_default value alone was enough to fix it, but I'm reverting the change of moving the call to the remove_disabled() method, and adding a safeguard for plando by populating the trick list with False if the logic is anything other than advanced.

This should resolve all the issues once and for all.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Component: Setting specific to setting(s) Status: Needs Review Someone should be looking at it Status: Needs Testing Probably should be tested Type: Bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants