* 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>
* Docs: Don't serve non-static files in example_nginx.conf
`try_files` will serve the file as long as it exists, which means I could `GET /autolauncher.py` and be served the file.
* Use root instead of alias, add route for favicon
* Update deploy/example_nginx.conf
* fix(undertale): prevent massive bounce msg spam for position updates
* make sure player is removed on leaving / timing out
* do not check for tags: online, as bounce evaluation is or'd
* Core: Better scaling explicit indirect conditions
When the number of connections to retry was large and `queue` was large
`new_entrance not in queue` would get slow.
For the average supported world, the difference this change makes is
negligible.
For a game like Blasphemous, with a lot of explicit indirect conditions,
generation of 10 template Blasphemous yamls with
`--skip_output --seed 1` and progression balancing disabled went from
19.0s to 17.9s (5.9% reduction in generation duration).
* Create a new variable for the new set created from the intersection
HK's `get_filler_item_name` was writing lists into a ClassVar[dict] on
the `HKWorld` class. This dict would not be cleaned out between
generations on the same process, leaving behind cached data from
previous generations.
I confirmed the issue when running single-slot generations on a local
webhost, where `self.cached_filler_items` could be already populated
during `HKWorld.__init__()`.
This has been fixed by putting an individual cache list on each HKWorld
instance, instead of a shared cached on the class.
`music_table` was initialized on the `SavingPrincessWorld` *class*, so
was being shared by each Saving Princess slot in the multiworld.
This has been fixed by initializing the `music_table` attribute on each
`SavingPrincessWorld` *instance* in `generate_early()` instead.