* Core/Utils: Use correct env for save_filename from AppImage
* OptionsCreator: run export on a separate thread
Running a blocking call from kivy misbehaves on Linux.
This also changes '*.yaml' to '.yaml' for Utils.save_filename,
which is the correct way to call it.
* Core/Utils: destroy Tk root after save/open_filename
This allows using those functions from multiple threads.
Note that pure Tk apps should not use those functions from Utils.
* OptionsCreator: show snack when save_filename fails
* OptionsCreator: disable window while exporting
* OptionsCreator: fixing typing of added stuff
* Docs (DS3): Fix the documentation for the Simple Early Bosses option
This option changed in the client a while ago, but we forgot to update
the server.
* Update Options.py
* Adding json/python to codeblocks to make it pretty, fixed spelling mistakes, swapped uuids for suuids in the examples, and expanded on /tracker and /static_tracker, and /slot_data_tracker giving the details of the API calls endpoints
* Add in API Cacheing timers and related text blurb
* updated for merged edit to /static_tracker
* Removed timer from /datapackage/checksum
* Doc: WebHost living standard
* Docs: update style guide for HTML, CSS and JS
* Unblame phar
* Too many words
* The better choice
* More rules
* Removed too much
* Docs: add recommendations for script defer and async
* first draft
* second draft
* fix indentation of bullet point wrapped lines
* move quote
* explicitly discuss all three item handling flags, since the start inventory one is easily forgotten
* rewrite to avoid a 'debate between two camps' framing
* tweak the wording to allow for the possibility that some games can 'just' do both local and remote items without exposing this detail to the player
* relative links
* Docs: add dev FAQ for 'should I start with the APWorld or the client?'
* fix indentation of bullet point wrapped lines
* use %20 for spaces in links
* link to adding games.md and add #ap-modding-help to adding games.md
* make APQuest a link
* also linkify 'run a local server'
* reword the 'judging client is easier' point to reflect a broader range of first-timers
* move the 'not 100%' point into the introductory sentences, and tweak related wording
* correct link
* APQuest: Explain game_name and supports_uri more in components.py
Hopefully this can lead to more games implementing support for the "click on slot name -> everything launches automatically" functionality.
* Update components.py
* Update components.py
* sc2: Fixing a discrepancy between slot data and logic
where story tech would not be granted for supreme if zerg was not a selected race.
* sc2: Fixed an issue where Kinetic Blast was not listed as a vanilla Kerrigan ability
* sc2: Fixing some functions that could force Kerrigan items into the pool when playing Kerriganless
* sc2: excluding zerg excludes hots for vanilla-like mission order
* Preprocessing options
* Moving general empty selection handling to option preprocessing
* Adding a unit test for empty race/campaign selection
* sc2: Properly handling non-raceswapped campaigns when excluding campaigns based on race exclusions
* sc2: Adding an explicit error message if a user excludes all missions in a way with no obvious resolution
In single-player multiworlds with small item pools, Noita was manually
placing some items into Shop Item locations, but was only setting
location.item, and not also setting item.location so that the item and
location refer to one another.
This has been fixed by using the MultiWorld.push_item() helper method to
place the items instead of manually placing the items.
* explicitly document why 2^53-1 is the max size, not ^31 or ^63
* explicitly recommend 32-bit ids
* make description correct by explicitly mentioning and linking to a description of 'safe'
* Process all player files before reporting errors
Full tracebacks will still be in the console and in the logs, but this creates a relatively compact summary at the bottom.
* Include full typename in output
* Update module access and address style comments
* Annotate variables
* multi-errors: Revert to while loop
* Core: Handle each roll in its own try-catch
* multi-errors: Updated style and comments
* Undo accidental index change
* multi-errors: fix last remaining ref to erargs
`goofy_pre_fill` and `donald_pre_fill` would pick a random `Item` from a
`list[Item]` and then use `list.remove()` to remove the picked `Item`,
but the lists (at least `donald_weapon_abilities`) could contain
multiple items with the same name, so `list.remove()` could remove a
different `Item` to the picked `Item`, allowing an `Item` in the list to
be picked and placed more than once.
This happens because `Item.__eq__` only compares the item's `.name` and
`.player`, and `list.remove()` compares by equality, meaning it can
remove a different, but equal, instance from the list.
This results in `old_location.item` not being cleared, so
`old_location.item` and `new_location.item` would refer to the same
item.