* core: typing for MultiWorld.get_regions
* core: utility method for visualizing worlds as PlantUML
* core: utility method for visualizing worlds as PlantUML: update docs
* Region.create_exit and Region.connect helpers
* reduce code duplication and better naming in Region.connect
* thank you tests
* reorder class definition
* define entrance_type on Region
* document helpers
* drop __class_getitem__ for now
* review changes
* add a random object to the World
* use it in The Messenger
* the worlds don't exist until the end of set options
* set seed in lttp tests
* use world.random for shop shuffle
* Core: Add support for non dictionary iterables for `Region.add_exits`
* some cleanup and duplicate code removal
* add unit test for non dict iterable
* use more consistent naming
* sometimes i just make stuff harder on myself :)
* Core: Band-aid fixes `start_inventory_from_pool` causing generation failures if any world does utilize it.
* Core: Slightly better(?) solution
* Set default so it doesn't fail on WebHost.
* implement function to allow self locking items for items accessibility
* swap some lttp locations to use new functionality
* lambda capture `item_name` and `location`
* don't lambda capture location
* Revert weird visual indent
* make location.always_allow additive
* fix always_allow rule for multiple items
* don't need to lambda capture item_names
* oop
* move player assignment to the beginning
* always_allow should only be for that player so prevent non_local_items
* messenger got merged so have it use this
* Core: fix doc string indentation for allow_self_locking_items
* Core: fix doc string indentation for allow_self_locking_items, number two
---------
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* Options.py cleanup
* TextChoice cleanup
* make Option.current_option_name a property
* title the TextChoce option names
* satisfy the linter
* a little more options cleanup
* move the typing import
* typing should be PlandoSettings
* fix incorrect conflict merging
* make imports local
* the tests seem to want me to import these twice though i hate it.
* changes from review. Make the various Location verifying Options `LocationSet`
* remove unnecessary fluff
* begrudgingly support get_current_option_name. Leave a comment that worlds shouldn't be touching this
* log a deprecation warning and return the property for `get_current_option_name()`
---------
Co-authored-by: beauxq <beauxq@yahoo.com>
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* ALttP: Fix hint tile hints being potentially useless with item links.
* use the set returned from world.get_player_groups(player)
* Move the group resolving to BaseClasses. Fix silver arrow hints as well.
* WebHost: On uploads, infer player name if missing in file name.
* Remove conditional logic for not including player name in file name.
* quick readability tweak to "fix"
* Refactored `upload_zip_to_db` to clean up redundancies and fix issues
* Rename `patches` to `files`
* fix comment
Currently there can be locations that are marked as excluded,
but don't have rules to enforce it, while fill has special handling
for excluded locations already.
This change removes special rules, and adds a generic rule instead.
* rename references to `Multiworld` in core to `multiworld` instead of `world`
* fix smz3
* fix oot
* fix low hanging fruit
* revert mysteriously broken spacing in world api.md
* fix more randomly broken spacing
* hate
* that better be all of it
* begrudgingly move over smw
* ._.
* missed some worlds
* this is getting tedious now
* Missed some self.world definitions
Co-authored-by: espeon65536 <espeon65536@gmail.com>
Co-authored-by: Zach Parks <zach@alliware.com>
* Early Items option
* Early Items description update
* Change Early Items to dict
* Rewrite early items as extra fill steps
* Move if statement up
* Document early_items
* Move early_items handling before fill_hook
* Apply suggestions from code review
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
* Subnautica pre-fill moved to early_items
* Subnautica early items fix
* Remove unit test bug workaround
* beauxq's pr
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
* world test base class
* game not instance property
* I would have guessed that this only collected 1.
* game property
* move SoE tests into worlds
* don't force auto world setup
* move output file name logic into core
I see the same logic with small variations in each different world implementation.
It seems to me, it would be better in the core to keep it consistent.
* missed a few
* remove review comment
* + smw
* double quote strings
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* revert change to DS3 output file name
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* some typing and docs in various parts of the interface
* fix whitespace in docstring
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* suggested changes from discussion
* remove redundant import
* adjust type for json messages
* for options module detection:
module.lower().endswith("options")
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* add freetext and freetextchoice options
* fix textchoice. create plando_bosses bool so worlds can check if boss plando is enabled
* remove strange unneccessary \ escapes
* lttp: rip boss plando out of core
* fix broken text methods so they read the data correctly
* revert `None` key in boss_shuffle_options. fix failing tests
* lttp: rewrite boss plando
* lttp: rewrite boss shuffle
* add generic verification step and allow options to set a plando module
* add default typing to plando_options set
* use PlandoSettings intflag for lttp boss plando
* fix plandosettings boss flag check
* minor lttp init cleanup
* make suggested changes. account for "random" existing within plando boss options
* override eq operator
* Please document me!
* Forgot to mention it supports plando
* remove auto_display_name
* Throw warning alerting user to which shuffle is being used if plando is off. Set the remaining boss shuffle in init and boss placement cleanup
* move the convoluted string matching to `from_text`
* remove unneccessary text lowering and actually turn off plando option when it's disabled
* typing
* strong typing for verify method and reorder
* typing is your friend
* log warning correctly
* 3.8 support :(
* also list apparently
* rip out old boss shuffle spoiler code
* verification step for plando bosses and locations
* update plando guide to reference new supported behavior
* empty string is not `None`. remove unneccessary error throw
* Fix bad ordering
* validate boss_shuffle only contains a normal boss option at the end
* get random choice from a list dummy
* >:(
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* minor textchoice cleanup
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>