Shifts the contents of `kvui.py`, and thus all CommonClient-based clients as well as Launcher, to using KivyMD. KivyMD is an extension for Kivy that is almost fully compatible with pre-existing Kivy components, while providing Material Design support for theming and overall visual design as well as useful pre-existing built in components such as Snackbars, Tooltips, and a built-in File Manager (not currently being used).
As a part of this shift, the launcher was completely overhauled, adding the ability to filter the list of components down to each type of component, the ability to define favorite components and filter to them, and add shortcuts for launcher components to the desktop. An optional description field was added to Component for display within the new launcher.
The theme (Light/Dark) and primary palette have also been exposed to users via client/user.kv.
## What is this fixing or adding?
Adds Bombless Start option, along with proper bomb logic. This involves updating `can_kill_most_things` to include checking how many bombs can be held. Many places where the ability to kill enemies was assumed, now have logic. This fixes some possible existing logic issues, for example: Mini Moldorm cave checks currently are always in logic despite the fact that on expert enemy health it would require 12 bombs to kill each mini moldorm.
Overhauls options, pulling them out of core and in particular making large changes to how the shop options work.
Co-authored-by: espeon65536 <81029175+espeon65536@users.noreply.github.com>
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
Co-authored-by: Bondo <38083232+BadmoonzZ@users.noreply.github.com>
Co-authored-by: espeon65536 <espeon65536@gmail.com>
Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
* SoE: new file naming
also fixes test base deprecation
* SoE: use options_dataclass
* SoE: moar typing
* SoE: no more multiworld.random
* SoE: replace LogicMixin by SoEPlayerLogic object
* SoE: add test that rocket parts always exist
* SoE: Even moar typing
* SoE: can haz apworld now
* SoE: pep up test naming
* SoE: use self.options for trap chances
* SoE: remove unused import with outdated comment
* SoE: move flag and trap extraction to dataclass
as suggested by beauxq
* SoE: test trap option parsing and item generation
orjson has a .py entry point that imports `from .orjson` (from the DLL), which does not work on 3.8 if the DLL is not in the same folder as the .py. The changed import system in 3.9+ seems to allow this. Excluding it from libraries.zip will put both files into the same folder.
- Fix generation failing with certain gesture shuffle options
- Fixed passing ItemDict to multidata instead of item code
- Don't allow CHARGE UP to be placed at Foglast: TV
- APWorld support by removing LogicMixin from Rules.py
Migrates SC2 WoL world to the new mod with new items and locations. The new mod has a different architecture making it more future proof (with planned adding of other campaigns). Also gets rid of several old bugs
Adds new short game formats intended for sync games (Tiny Grid, Mini Gauntlet). The final mission isn't decided by campaign length anymore but it's configurable instead. Allow excluding missions for Vanilla Shuffled, corrected some documentation.
NOTE: This is a squashed commit with Salz' HotS excluded (not ready for the release and I plan multi-campaign instead)
---------
Co-authored-by: Matthew <matthew.marinets@gmail.com>
## What is this fixing or adding?
Adds a large number of new options, including:
- Door Shuffle
- Sphere-based level scaling
- Key Item and Pokedex requirement options to reach the Elite Four
- Split Card Key option
- Dexsanity option can be set to a percentage of Pokémon that will be checks
- Stonesanity: remove the stones from the Celadon Department Store and shuffle them into the item pool, replacing 4 of the 5 Moon Stone items
- Sleep Trap items option
- Randomize Move Types option
- Town Map Fly Location option, to unlock a flight location when finding/receiving the Town Map
Many enhancements have been made, including:
- Game allows you to continue your save file _from Pallet Town_ as a way to save warp back to the beginning of the game. The one-way drop from Diglett's Cave to north Route 2 that had been added to the randomizer has been removed.
- Client auto-hints some locations when you are able to see the item before you can obtain it (but would only show AP Item if it is for another player), including Bike Shop, Oak's Aides, Celadon Prize Corner, and the unchosen Fossil location.
Various bugs have been fixed, including:
- Route 13 wild Pokémon not correctly logically requiring Cut
- Vanilla tm/hm compatibility options giving compatibility for many TMs/HMs erroneously
- If an item that exists in multiple quantities in the item pool is chosen for one of the locations that are pre-filled with local items, it will continue placing that same item in the remaining locations as long as more of that item exist
- `start_with` option for `randomize_pokedex` still shuffling a Pokédex into the item pool
- The obedience threshold levels being incorrect with 0-2 badges, with Pokémon up to level 30 obeying with 0-1 badges and up to 10 with 2 badges
- Receiving a DeathLink trigger in the Safari Zone causing issues. Now, you will have your steps remaining set to 0 instead of blacking out when you're in the Safari Zone.
Many location names have been changed, as location names are automatically prepended using the Region name and a large number of areas have been split into new regions as part of the overhaul to add Door Shuffle.
* Add settings API ("auto settings") for host.yaml
* settings: no BOM when saving
* settings: fix saving / groups resetting themselves
* settings: fix AutoWorldRegister import
Co-authored-by: el-u <109771707+el-u@users.noreply.github.com>
* Lufia2: settings: clean up imports
* settings: more consistent class naming
* Docs: update world api for settings api refactor
* settings: fix access from World instance
* settings: update migration timeline
* Docs: Apply suggestions from code review
Co-authored-by: Zach Parks <zach@alliware.com>
* Settings: correctly resolve .exe in UserPath and LocalPath
---------
Co-authored-by: el-u <109771707+el-u@users.noreply.github.com>
Co-authored-by: Zach Parks <zach@alliware.com>
* MultiServer: speed up location commands
Adds optimized pure python wrapper around locations dict
Adds optimized cython implementation of the wrapper, saving cpu time and 80% memory use
* Speedups: auto-build on import and build during setup
* Speedups: add requirements
* CI: don't break with build_ext
* Speedups: use C++ compiler for pyximport
* Speedups: cleanup and more validation
* Speedups: add tests for LocationStore
* Setup: delete temp in-place build modules
* Speedups: more tests and safer indices
The change has no security implications, but ensures that entries[IndexEntry.start] is always valid.
* Speedups: add cython3 compatibility
* Speedups: remove unused import
* Speedups: reformat
* Speedup: fix empty set in test
* Speedups: use regular dict in Locations.get_for_player
* CI: run unittests with beta cython
now with 2x nicer names
* fix estus shard/bone shard numbers
there are only 11 estus shards in the pool, so fixed number of estus shards so everything can be collected, and upped the number of bone shards in the pool to fix datapackage numbers. new counts went from: 15(estus) + 5(bones) = 20(total) TO 11(estus) + 9(bones) = 20(total)
* Update locations_data.py
changed estus shard/bone shard counts to match the counts in items_data.py. same reasoning as the commit for that, only 11 estus in game
* added new options "Late DLC"
revampled "Late Basin of Vows" option
added the Fire Demon location in Undead Sanctuary
* first file dump
added new settings for customizing pool options
sorted all the item pools
code clean up
fixed estus/bone shard counts
still need to figure out location excluding
* bunch of changes
added new locations
put locations into specific lists
made DarkSouls3Locations for each list of items
still need to figure out how to exclude
* excluded locations from generating without options, created gotthard_region, update how the pool fills additional items, update location/item tables, create more tables
* code cleanup, remove extra tables, add grave key/eyes of a firekeeper back to key pool
* fixed some logging
* add more detailed options descriptions
* forgot to update progressive locations updates too whoops
* remove irina's tower key from items/location list. the current ID's dont work to shuffle
* fixed item-to-locations, added new weapons, added new armors, added new rings, added "eyes of a fire keeper" to key locations list to balance, adjusted tables
* added HWL: broken straight sword location, moved Greirat's ashes to NPC items
* remove hwl: broken short sword location/item from pool (does not exist), fix item/location counts in options, general code clean up
* more code cleanup, fix Havels Ring +3 location/properly renamed item, changed Estus/Bone Shard names to not include a +| added a missing undead bone shard
* fixed npc rule, added a bunch of ring locations, fixed ring tables
* updated options
* cleaned up more code, edited some option names
* start of new items system
* DS3: Major refactor (allows for defining more items than those in vanilla locations)
* DS3: Repair changes overwritten by refactor
* DS3: Re-implement new options for location categories
* DS3: Make replacement item lists for most unique item types
* DS3: Remove accidentally added apworld
* DS3: Make option names more consistent
* DS3: Fix Pyromancer's Parting Flame location category
* DS3: Add new items
* DS3: Fix access rule for DLC/Contraption Key
* DS3: Only replace unrandomized progression items with events
Also fix some location names/categories
* DS3: Change some location names to be in line with their items
* DS3: Add randomized infusion code (only works for Broadsword)
* DS3: Make varied item pool an option
* added remaining weapons, shields, armors, rings, spells, dlc equivalents | added remaining dlc ring locations (2 in dreg heap, 5 in ringed city)
* adjusted 'Progressive Locations' counts and added new table
* added more souls + upgrade gems
* added the rest of consumables
* reverted adding an additional 'progressive location 4' table and added bulk progression locations to prog. location 3 table
* DS3: Add infusion categories and some cleanup of items
* DS3: Fix item ordering
* DS3: Fix infusion/upgrade code extra if
* DS3: Disable some unmarked cut content items
* DS3: Rename blessed red and white shield+1
* DS3: Implement guaranteed_items option
* DS3: Remove print statement
* DS3: Add extra check for trying to remove items from an empty list
* add unused content item id's
* DS3: Move cut content to its own list
* DS3: Classify spells and healing upgrades as useful
* DS3: Implement get_filler_item_name
* DS3: Change lower bounds for upgrades from +1 to +0
* DS3: Move Ancient Dragon Greatshield back to vanilla and recategorize some useful consumables
* DS3: Guaranteed items checks for number of existing items before replacing
* added remaining progressive items, fixed npc rules, adjusted option location counts
* delete extra items, add rule for dancer/late basin
* seperate PW into two parts (can access first half w/o contraption key | SKIP more unused items
* DS3: Minor linting changes
* DS3: Update required_client_version
* DS3: Remove rule for bell tower access
The key can always be purchased from the shop
* DS3: Move location category option checks to generate_early
* added "Boss Soul" option to pool
* DS3: Fix rules for boss souls and update misc location count
* DS3: Address minor review comments
* DS3: Change category enums to IntEnum
* DS3: Make apworld
---------
Co-authored-by: Brooty Johnson <83629348+Br00ty@users.noreply.github.com>