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

Allow user to exclude locations #389

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

tanjo3
Copy link
Contributor

@tanjo3 tanjo3 commented Jun 6, 2024

This PR adds a new tab to the randomizer called "Excluded Locations", which allows users to specify that the randomizer should ignore particular locations for progression.

The interface here is similar to selecting starting items from randomized items. On the "Excluded Locations" tab, the user can view all the progression locations for the settings selected from the main tab. They can use the buttons to move locations to the "Excluded Locations" side; locations here will be considered nonprogress locations by the randomizer.

A few things to note:

  • If you have randomized charts on, all 49 sunken treasure locations will be considered progression locations since we have yet to determine which chart will map where. If you select sunken treasure locations to be excluded, they will contain nonprogress items, and the charts leading to those locations will also be considered nonprogress.
  • Building on that, items solely required to unlock excluded locations will be considered nonprogress. For example, even if Miscellaneous is on, if the Ankle check is excluded, Tingle statues will be regarded as nonprogress. This means they will be in wooden chests for the purposes of chest type matches contents.
  • Since excluded locations are considered nonprogress, they are not factored into hint generation. For example, if you exclude Ganon's Maze chest, it will never be hinted as a location hint.
  • If you have dungeons on but exclude too many checks in a dungeon so the randomizer can't place dungeon items, you will get an error.
  • This is not meant to be an interface for selecting which bosses are required for required bosses mode.

I've also included a change to use zlib compression in addition to base64 encoding for permalinks. This is not necessary but since the bitstring will contain an additional bit for every location, it becomes rather long. For the default settings and a seed name of A:
Before: MS4xMC4wX2Y4NjM0ZDAAQQBJEFAAAAAAAACA/NwFAAAAAAAAAAAAAAIAAAAAAgAQQAAAAAAAAAAAAAAAGAAA+wLoEgAAAAAIAAQBAAI=
After: eJwz1DM00DOIT7MwMzZJMWBwZPAUCGAAg4Y/d1gZ4IAJQgg4IIQYJBgYfjO9EAIxORhYGBmYALjbCQY=

If any other changes are necessary, let me know!

@tanjo3
Copy link
Contributor Author

tanjo3 commented Jun 9, 2024

I've added 10 tests that hopefully cover a sufficient number of setting combos to test this feature.

@tanjo3 tanjo3 marked this pull request as ready for review June 9, 2024 20:15
test/test_dry.py Outdated
@@ -41,6 +42,8 @@ def enable_all_progression_location_options(options: Options):

def enable_all_options(options: Options):
enable_all_progression_location_options(options)
# options.progression_locations
# options.excluded_locations
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you mean to leave these comments in?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I figured it was in the style of the test function to have all the options there, but the unmodified ones commented out. Like with randomized_gear/starting_gear.

@wooferzfg
Copy link
Contributor

I got an error when running the Windows build:

Wind_Waker_Randomizer_4CZGSuPJp1

@LagoLunatic
Copy link
Owner

I fixed the pkg error on master, you can revert the workaround in wwrando.spec

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants