* Adds a new class allowing TextFields to be resized
* Resizes most CommonClient components to be more in-line with pre-KivyMD
* Change the color of SelectableLabels and TooltipLabels to white
* Fixed ClientTabs not correctly showing the current tab indicator
* The server label now features a (i) icon to indicate that it can be hovered over.
* Changed the default `primary_palette` to `Lightsteelblue` and the default `dynamic_scheme_name` to `VIBRANT`
* Properly set attributes on `KivyJSONToTextParser.TextColors` so that proper typing can be utilized if an individual value is needed
* Fixed some buttons being discolored permanently once pressed
* Sped up the animations of button ripples and tab switching
* Added the ability to insert a new tab to `GameManager.add_client_tab`
* Hovering over the "Command" button in CommonClient will now display the contents of `/help` as a popup (note: this popup can be too large on default height for adequately large /help (SC2 Client), but should always fit fine on fullscreen).
* Fixed invalid sizing of MessageBox errors, and changed their text color to white
* Terraria integration
* Precollected items for debugging
* Fix item classification
* Golem requires Plantera's Bulb
* Pumpkin Moon requires Dungeon
* Progressive Dungeon
* Reorg, Options.py work
* Items are boss flags
* Removed unused option
* Removed nothing
* Wall, Plantera, and Zenith goals
* Achievements and items
* Fixed The Cavalry and Completely Awesome achievements
* Made "Dead Men Tell No Tales" a grindy achievement
* Some docs, Python 3.8 compat
* docs
* Fix extra item and "Head in the Clouds" being included when achievements are disabled
* Requested changes
* Fix potential thread unsafety, replace Nothing with 50 Silver
* Remove a log
* Corrected heading
* Added incompatible mods list
* In-progress calamity integration
* Terraria events progress
* Rules use events
* Removed an intentional crash I accidentally left in
* Fixed infinite loop
* Moved rules to data file
* Moved item rewards to data file
* Generating from data file
* Fixed broken Mech Boss goal
* Changes Calamity makes to vanilla rules, Calamity final bosses goal
* Added Deerclops, fixed Zenith goal
* Final detailed vanilla pass
* Disable calamity goals
* Typo
* Fixed some reward items not adding to item pool
* In-progress unit test fixes
* Unit test fixes
* `.apworld` compat
* Organized rewards file, made Frog Leg and Fllpper available in vanilla
* Water Walking Boots and Titan Glove rewards
* Add goals to slot data
* Fixed Hammush logic in Post-Mech goal
* Fixed coin rewards
* Updated Terraria docs
* Formatted
* Deathlink in-progress
* Boots of the Hero is grindy
* Fixed zenith goal not placing an item
* Address review
* Gelatin World Tour is grindy
* Difficulty notice
* Switched some achievements' grindiness
* Added "Hey! Listen!" achievement
* Terarria Python 3.8 compat
* Fixed Terraria You and What Army logic
* Calamity minion accessories
* Typo
* Calamity integration
* `deathlink` -> `death_link`
Co-authored-by: Zach Parks <zach@alliware.com>
* Missing `.`
Co-authored-by: Zach Parks <zach@alliware.com>
* Incorrect type annotation
Co-authored-by: Zach Parks <zach@alliware.com>
* `deathlink` -> `death_link` 2
Co-authored-by: Zach Parks <zach@alliware.com>
* Style
Co-authored-by: Zach Parks <zach@alliware.com>
* Markdown style
Co-authored-by: Zach Parks <zach@alliware.com>
* Markdown style 2
Co-authored-by: Zach Parks <zach@alliware.com>
* Address review
* Fix bad merge
* Terraria utility mod recommendations
* Calamity minion armor logic
* ArmorMinions -> Armor Minions, boss rush goal, fixed unplaced item
* Fixed unplaced item
* Started on Terraria 1.4.4
* Crate logic
* getfixedboi, 1.4.4 achievements, shimmer, town slimes, `Rule`, `Condition`, etc
* More clam getfixedboi logic, bar decraft logic, `NotGetfixedboi` -> `Not Getfixedboi`
* Calamity fixes
* Calamity crate ore logic
* Fixed item accessibility not generating in getfixedboi, fixed not generating with incompatible options, fixed grindy function
* Early achievements, separate achievement category options
* Infinity +1 Sword achievement can be location in later goals
* The Frequent Flyer is impossible in Calamity getfixedboi
* Add Enchanted Sword and Starfury for starting inventories
* Don't Dread on Me is redundant in Calamity
* In Calamity getfixedboi, Queen Bee summons enemies who drop Plague Cell Canisters
* Can't use Gelatin Crystal outside Hallow
* You can't get the Terminus without flags
* Typo
* Options difficult warnings
* Robbing the Grave is Hardmode
* Don't reserve an ID for unused Victory item
* Plantera is accessible early in Calamity via Giant Plantera's Bulbs
* Unshuffled Life Crystal and Defender Medal items
* Comment about Midas' Blessing
* Update worlds/terraria/Options.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Remove stray expression
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Review suggestions
* Option naming caps consistency, add Laser Drill, Lunatic Cultist alt reqs, fix Eldritch Soul Artifact, Ceaseless Void reqs Dungeon
* Cal Clone doesn't drop Broken Hero Sword anymore, Laser Drill is weaker in Calamity
Co-authored-by: Seatori <92278897+Seatori@users.noreply.github.com>
* Fix Acid Rain logic
* Fix XB-∞ Hekate failing accessibility checks (by commenting it out bc it doesn't affect logic)
* Hardmode ores being fishable early in Calamity is not a bug anymore
* Mecha Mayhem is inaccessible in getfixedboi
* Update worlds/terraria/Rules.dsv
Co-authored-by: Seafo <92278897+Seatori@users.noreply.github.com>
---------
Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
Co-authored-by: Zach Parks <zach@alliware.com>
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
Co-authored-by: Seatori <92278897+Seatori@users.noreply.github.com>
* Unroll tests for better parallelization
* fix ut test
* self review
* bro it's the second time today I have to commit some garbage to have a github action rerun because messenger fails what is this
* my god can the tests plz pass
* code reviews
* code reviews
* move TestRandomWorlds out of long module
* Pokemon Red and Blue PC Item fix
* Respect non_local_items for PC Item
* prefer exclude if also in priority locations
---------
Co-authored-by: alchav <alchav@jalchavware.com>
* Core: Speed up fill_restrictive item_pool pop loop
Items from `reachable_items` are placed in last-in-first-out order, so
items being placed will be towards the end of `item_pool`, but the
iteration to find the item was iterating from the start of `item_pool`.
Now also uses `del` instead of `.pop()` for an additional, tiny,
performance increase.
It is unlikely for there to be a noticeable difference in most cases.
Only generating with many worlds with a high percentage of progression
items and fast access rules is likely to see a difference with this
change.
--skip_output generation of 400 template A Hat in Time yamls with
progression balancing disabled goes from 76s to 43s (43% reduction) for
me with this patch. This placed 43200 progression items out of 89974
items total (48% progression items).
* Fix comment typo
"be" was missing.
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* create building data object and rename ItemSource to Source to be more generic
# Conflicts:
# worlds/stardew_valley/content/game_content.py
# Conflicts:
# worlds/stardew_valley/data/artisan.py
# worlds/stardew_valley/data/game_item.py
# worlds/stardew_valley/data/harvest.py
# worlds/stardew_valley/data/shop.py
* remove compound sources, replace by other requirements which already handle this usecase
* add coops to content packs
* add building progression in game features
* add shippping bin to starting building; remove has_house
* replace config check with feature
* add other buildings in content packs
* not passing
* tests passes, unbelievable
* use newly create methods more
* use new assets to ease readability
* self review
* fix flake8 maybe
* properly split rule for mapping cave systems
* fix tractor garage name
* self review
* add upgrade_from to farm house buldings
* don't override building name variable in logic
* remove has_group from buildings
* mark some items easy in grinding logic so blueprints buildings can be in more early spheres
* move stuff around to maybe avoid future conflicts cuz I have like 10 PRs opened right now
* remove price_multiplier, turns out it's unused during generation
* disable shop source for mapping cave systems
* bunch of code review changes
* add petbowl and farmhouse to autobuilding
* set min easy items to 300
* fix farm type
* Removed now unused imports from Launcher
* Moved ImageIcon and ImageButton to use ApAsyncImage for compatibility with apworlds
* Adjusted image size in the Launcher from 40x40 to 48x48. This is already larger than the size in previous versions, and a docs update is soon to follow.
* Expose `dynamic_scheme_contrast` to user.kv, allowing users to set high contrast.
* ScrollBox's default scroll_type was set to only content, so the scrollbar in Launcher was nonfunctional.
* Adjusted the spacing of the title of a component when a description is present to be closer to the center.
* Launcher now scrolls to the top automatically when changing between filters
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.
* Core: Prevent people from using LogicMixin incorrectly
There's a world that ran into some issues because it defined its custom LogicMixin variables at the class level.
This caused "instance bleed" when new CollectionState objects were created.
I don't think there is ever a reason to have a non-function class variable on LogicMixin without also having `init_mixin`, so this asserts that this is the case.
Tested:
Doesn't fail any current worlds
Correctly fails the world in question
Also, not gonna call out that world because it was literally my fault for explaining it to them wrong :D
* Verbose af
* Update AutoWorld.py
`Location` does not override `__eq__` so should not override `__hash__`.
With this patch, this makes operations on sets of locations slightly
faster because they will use `object.__hash__` rather than
`Location.__hash__`.
`object.__hash__` is about 4 to 5 times faster than `Location.__hash__`
for me. Generation often uses sets of locations, so this slightly speeds
up generation.
The only place I could find that was hashing locations directly was
`WitnessLocationHint.__hash__`, but it has implemented a matching
`__eq__`, so is fine.
For security reasons, Python randomizes its hash seed each time it is
started, so the result of the `hash()` function is nondeterministic and
can't have been used by worlds for anything that needed to be
deterministic and can't have been used to compare information hashed at
generation time to information hashed by a client.
The base state passed to fill_restrictive should be as maximal as
possible otherwise fill_restrictive has to repeatedly re-sweep and
collect from advancement locations that were reachable from before
fill_restrictive has placed a single item.
This is not added within fill_restrictive itself because it is common
for fills to be performed using a partial 'all_state', which is already
a maximum exploration state.
With --skip_output generation of every template yaml, except FF, KH
and Shivers, this prevented repeatedly re-sweeping 576 advancement
locations in every sweep within progression fill, reducing the
generation time from 124s to 113s for me (8.8% reduction, averaged over
5 generations each).