* New solution to that plando issue
* better
* Another warning
* better comment
* Best of both worlds I guess?
* oops
* Smarter code reuse
* better comment
* oop
* lint
* mypy
* player_name
* add unit test
* oh
* Rebrand time baby
* This fits on one line
* oop
* Update worlds/witness/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* mypy
* Reorganize some doors according to medic's suggestions
* This should make it much faster (Thanks Medic)
* Town Doors works because of Church being a check always, Church Entry feels really bad tho
* Only add Desert Entry if there are no control panels stopping you
* No overlap here, so why is it a set
* Idk everything's kinda good without symbol shuffle
* Just make sure, I guess
* This makes way more sense doesn't it
* Oh, this is probably important
* oop
* loc
* oops 2
* ruff
* that was already in there
* Change the door picking a bit further
* some renaming
* slight wording change
* Fix
* Move it all to a new file
* ruff
* mypy
* .
* Make sure we're only adding as many tutorial checks as necessary
* ruff
* These checks aren't necessary, as the final list gets culled to only existing items anyway. It saves CPU cycles, but this is nicer for future compatibility
* Special handling for caves shortcuts
* 120 chars
* Update worlds/witness/place_early_item.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Clean up Windmill & Theater cases
* Make early_symbol_item removed instead
* Add early_good_item to presets
* replace double None checks with casts
* That doesn't exist anymore
* Mypy thing
* Update the doors again a bit
* Pycharm pls
* ruff
* forgot one
* oop
* Is it finally right?
* Update options.py
* Fix with new Panel Keys
* Hopefully fix crash when one of the types runs out when the others haven't yet
* oops
* Medic suggestion
* unused import
* Update place_early_item.py
* Update __init__.py
* Update __init__.py
* Update options.py
* Add possible types to option desc
* Make that include all Tutorial (Inside) checks
* Update __init__.py
* Update test_early_good_item.py
* Update test_early_good_item.py
* Slight cleanup
* fix no tutorial locations being picked up by tutorial location size check
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* CachedRuleBuilderWorld
* CachedRuleBuilderWorld
* APQuest Rule Builder finished
* Added comment
Add a rule to check if the player has a Sword to destroy bushes.
* Bump version + typo fix
* Update worlds/apquest/rules.py
Co-authored-by: Ian Robinson <drtchops@users.noreply.github.com>
* Address Tchops' review comments
---------
Co-authored-by: Ian Robinson <drtchops@users.noreply.github.com>
- The Shane and Sebastian Portrait filler items werent tagged properly.
- The Beach Farm adds one secretsanity check, so it needs to be in the allsanity preset
- The Allsanity preset is renamed to "Maxsanity" to encourage better defined terminology and Allsanity means something else
- The "All Random" preset has been removed entirely. It has been the cause of too many beginner footguns over the years. People can still achieve the effect manually, but at least they'll have to try a little bit to ruin their own experience.
* Import Buffer from typing_extensions instead of collections.abc for 3.11 compat
* always re-set sound volumes before playing
* fix game window scaling if parent is vertical
* make default volume lower
* - Improved the dynamic locations count algorithm to take into account the nature of various heavy settings in both directions
* - Fixes from Code Review
* - We're only testing for sunday locations, might as well only take sunday locations in the list to test
* - One more slight optimization
* - Added consideration for bundles per room in filler locations counting
* - Registered some more IDs to handle items up to 10
* - Fixed the Dr Seuss Bundle asking for tigerseye (mineral) instead of tiger trout (fish)
* - Made blue grass starter more consistent
* - Fragments of the past does not rely on ginger island
* - Removed legacy hard coded strange bun recipe that messed with chefsanity logic
The include_songs option is an OptionSet, whose value is a set, but was being iterated to produce self.included_songs. Sets are unordered and may have a different iteration order each time a python process is run. This meant that the order of the elements in self.included_songs could differ even when generating with a fixed seed.
This caused nondeterministic generation with the same seed because create_song_pool() deterministically randomly picks songs from self.included_songs, which could be in a different order each time, so different songs could be picked.
When CasualBounties was enabled, the location names in
`exclusion_table["HitlistCasual"]` would be iterated into
`self.random_super_boss_list` in `generate_early`, but
`exclusion_table["HitlistCasual"]` was a `set`, so its iteration order
would vary on each generation, even with same seed.
Random location names would be picked from `self.random_super_boss_list`
to place Bounty items at, so different locations could be picked on each
generation with the same seed.
`exclusion_table["Hitlist"]` is similar and was already a `list`,
avoiding the issue of nondeterministic iteration order, so
`exclusion_table["HitlistCasual"]` has been changed to a `list` to
match.
* Update plando_en.md with item group example
Added example YAML block for item placement using an item group, including recommendation of use of `true` value with item groups to avoid unintended behaviors, with an example of the same. Adjustments more than welcome!
* Made clarifying revision to description of Generator handling of item groups
Clarified the behavior of the Generator regarding item creation when item groups are used in plando.
* Saving Princess: absolute paths on suprocess.run
* Saving Princess: more error handling for downloads
* Saving Princess: rework launch_command setting
Apparently subprocess.Popen requires a list for args instead of a string everywhere but in Windows, so the change was preventing the game from running on Linux. Additionally, the game is now launched using absolute paths.
* Saving Princess: prevent bandit warnings
* Saving Princess: remove unnecessary compare_digest
* Saving Princess: fix Linux paths by using which
* Saving Princess: rename launch command setting
Previously, launch_command held a string. Now it holds a list of strings. Additionally, the defaults have changed.
To prevent the wrong type from being used, the setting has been renamed, effectively abandoning the original launch_command setting.
* Saving Princess: fix Linux default command return type
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
---------
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>