🤞
* map option objects to a `World.options` dict
* convert RoR2 to options dict system for testing
* add temp behavior for lttp with notes
* copy/paste bad
* convert `set_default_common_options` to a namespace property
* reorganize test call order
* have fill_restrictive use the new options system
* update world api
* update soe tests
* fix world api
* core: auto initialize a dataclass on the World class with the option results
* core: auto initialize a dataclass on the World class with the option results: small tying improvement
* add `as_dict` method to the options dataclass
* fix namespace issues with tests
* have current option updates use `.value` instead of changing the option
* update ror2 to use the new options system again
* revert the junk pool dict since it's cased differently
* fix begin_with_loop typo
* write new and old options to spoiler
* change factorio option behavior back
* fix comparisons
* move common and per_game_common options to new system
* core: automatically create missing options_dataclass from legacy option_definitions
* remove spoiler special casing and add back the Factorio option changing but in new system
* give ArchipIDLE the default options_dataclass so its options get generated and spoilered properly
* reimplement `inspect.get_annotations`
* move option info generation for webhost to new system
* need to include Common and PerGame common since __annotations__ doesn't include super
* use get_type_hints for the options dictionary
* typing.get_type_hints returns the bases too.
* forgot to sweep through generate
* sweep through all the tests
* swap to a metaclass property
* move remaining usages from get_type_hints to metaclass property
* move remaining usages from __annotations__ to metaclass property
* move remaining usages from legacy dictionaries to metaclass property
* remove legacy dictionaries
* cache the metaclass property
* clarify inheritance in world api
* move the messenger to new options system
* add an assert for my dumb
* update the doc
* rename o to options
* missed a spot
* update new messenger options
* comment spacing
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
* fix tests
* fix missing import
* make the documentation definition more accurate
* use options system for loc creation
* type cast MessengerWorld
* fix typo and use quotes for cast
* LTTP: set random seed in tests
* ArchipIdle: remove change here as it's default on AutoWorld
* Stardew: Need to set state because `set_default_common_options` used to
* The Messenger: update shop rando and helpers to new system; optimize imports
* Add a kwarg to `as_dict` to do the casing for you
* RoR2: use new kwarg for less code
* RoR2: revert some accidental reverts
* The Messenger: remove an unnecessary variable
* remove TypeVar that isn't used
* CommonOptions not abstract
* Docs: fix mistake in options api.md
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
* create options for item link worlds
* revert accidental doc removals
* Item Links: set default options on group
* change Zillion to new options dataclass
* remove unused parameter to function
* use TypeGuard for Literal narrowing
* move dlc quest to new api
* move overcooked 2 to new api
* fixed some missed code in oc2
* - Tried to be compliant with 993 (WIP?)
* - I think it all works now
* - Removed last trace of me touching core
* typo
* It now passes all tests!
* Improve options, fix all issues I hope
* - Fixed init options
* dlcquest: fix bad imports
* missed a file
* - Reduce code duplication
* add as_dict documentation
* - Use .items(), get option name more directly, fix slot data content
* - Remove generic options from the slot data
* improve slot data documentation
* remove `CommonOptions.get_value` (#21)
* better slot data description
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
---------
Co-authored-by: el-u <109771707+el-u@users.noreply.github.com>
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
Co-authored-by: Doug Hoskisson <beauxq@yahoo.com>
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
Co-authored-by: Alex Gilbert <alexgilbert@yahoo.com>
* The Messenger: Don't generate Figurines
* The Messenger: add prerequisite shop cost requirements
* The Messenger: don't double the cost anymore
* The Messenger: remove centered mind prereq instead of checking for it
* The Messenger: use cost as a property to cache it and gain back speed
* The Messenger: hardcode the prereqs for more speed
* make the linter and mypy happier
* use cached_property
* 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
* The Messenger: strip generated filler items for a sufficiently small remaining item pool
* rewrite the test for the small chance there's no large currency shards
* add shop shuffle options and items
* add logic for the shop slots
* write cost tests
* start on shop item logic
* make strike and second wind early items
* some cleanup
* remove 5 shards
* double cost requirement for really expensive items and raise the rates
* add test for shop shuffle with minimum other locations
* put power seal in front of shards
* rename locations and items
* update rules, regions, and shop
* update tests and misc fixes
* minor cleanup
* implement money wrench and figurines
* clean out now unneeded info from slot_data
* docs update and fix a failure when not shuffling shops
* remove shop shuffle option
* Finish out shop rules
* make seals generation easier to read and fix tests
* rule adjustments
* oop
* adjust the prices to be a bit more generous
* add max price to slot data for tracker
* update the hard rules a bit
* remove unnecessary test
* update data_version
* bump version and remove info for fixed issues
* remove now unneeded assert
* review updates
* minor bug fix
* add a test for minimum locations shop costing
* minor optimizations and cleanup
* remove whitespace
* implement mega shards
* create the option and locations, add to slot data and tests
* add boss refights as locations
* remove barma'thazel. it's apparently impossible to get to him
* remove barma'thazel again
* up max shard count to 85
* increment version
* dynamically alter the power seal pool
* revert host.yaml change
* two mega shards were missing from the maps
* add new checks to the info page
* add some more rules to skylands
* forgot to update my tests
* explicit imports, remove unnecessary typing, lower required client ver
* use generators for shard and seal creation
* change links to point to my fork
* Add documentation about reconnecting because that's necessary apparently
* change the bug report link
* be non ambiguous
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
---------
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* initial commit of messenger integration
* setup no_logic and needed slot_data
* fix some typos and determinism
* make all of it deterministic
* add documentation
* swapped to non local items so change the fed data
* ~~deathlink~~
* satisfy the docs test
* update doc test to show expected name
* split custom classes into a separate file and fix an errant rule
* make access dependency test give more useful errors
* implement tests
* remove some unneccessary back entrances and make names clearer
* fix some big dumbs
* successful unit tests are good also some slight reorganizing
* add astral tea quest line, and potentially power seals as items
* if TYPE_CHECKING... aahhhhhh
* oop forgot to remove legacy code
* having the seed and leaves as actual items doesn't seem to do anything so remove them. locations still work though
* update setup guide with some changes
* Tower HQ was creating duplicate locations
* allow self locking items
* cleanup
* move self_locking_items function to core
* docstring
* implement choice of notes needed for music box
* test the default value
* don't create any starting inventory items
* make item creation faster
* change default accessibility and power seals options
* improve documentation
* precollected_items is a dict of Items...
* implement shop chest goal
* tests
* always assign total and required seals
* add new goals and set music box as requiring shop chest on shop chest goals instead of just setting it as the completion
* fix dumb test quirk
* implement music box skip as an option
* world rewrite/cleanup
* default to apworld and add game to readme
* revert bleeding commits from other PRs
* more bleeds
* fix some errors in options docstrings
* ???
* make my set rules method not have an awful name
* test cleanup
* add a test for item accessibility
* fix issues with tests
* make the self locking item behavior work correctly
* misc cleanup
* more general cleanup to be a good example
* quick rules rewrite
* more general cleanup and typing
* more speed, more clean
* bump data version
* make sure the locked item belongs to current player
* fix bad name and indent. call MessengerItem directly for events
* add poptracker pack to docs
* doc cleanup and "known issues" section that I probably won't be able to fix any time soon.
* missed some spots
* add another bug i forgot about
* be consistently wrong