* Test: add test for unpickling NetUtils enums
This verifies that Utils.ByValue either works or is not required,
and once we drop ByValue, this validates that future Python
versions do not break our Enums again.
* Test: NetUtils enum switch to more direct pickle.dumps
It's probably better to use the direct interface in case
restricted_dumps does some funky stuff in the future.
Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>
* Test: NetUtils enum fix import for change
---------
Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>
* WebHost: disallow '=' and whitespace in SUUID and append the correct number of '='
This makes Room IDs unambiguous and avoids breaking if b64decode ever becomes strict.
* Tests, WebHost: add SUUID tests
* Tests, WebHost: add edge cases to SUUID tests
- 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.
* CI: reduce default permissions to minimum
* CI: update pin actions
Most of them. CodeQL and action-gh-release is untouched for now.
Immutable actions and actions/* are pinned to version,
other actions are pinned to hash.
* CI: make use of archive: false in upload-artifact
also set compression level and error behavior for scan-build upload.
* CI: update codeql and enable scanning actions
* 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.