## 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>
* __init__.py: Add fill_slot_data function
Add fill_slot_data function.
Used by StripesOO7's pop-tracker pack to auto populate settings as convenience for the user
* LTTP__init__.py added race condition to fill_slot_data
* added missing self to multiworl.is_race
* changed filling of slot_data to fill from static list instead of pulling all alttp_options.
additional options needed to be done separately cause they are not stored the same way as the rest. "mode", "goal", etc. are simple values as the rest are key:value pairs so `.value` is not supported and I didn't want to introduce an if-statement.
* changed filling of slot_data to fill from static list instead of pulling all alttp_options.
additional options needed to be done separately cause they are not stored the same way as the rest. "mode", "goal", etc. are simple values as the rest are key:value pairs so `.value` is not supported and I didn't want to introduce an if-statement.
* added a comment to describe the use for the option added to slot_data
---------
Co-authored-by: StripesOO7 <54711792+StripeesOO7@users.noreply.github.com>
* 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>
* LTTP: do the enemizer check in `stage_assert_generate` and break after checking any world for enemizer succeeds
* use multiworld
* catch a missed `used_enemizer` check and add typing
* more typing
* 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>
* First Pass removal of game-specific code
* SMW, DKC3, and SM hooked into AutoClient
* All SNES autoclients functional
* Fix ALttP Deathlink
* Don't default to being ALttP, and properly error check ctx.game
* Adjust variable naming
* In response to:
> we should probably document usage somewhere. I'm open to suggestions of where this should be documented.
I think the most valuable documentation for APIs is docstrings and full typing.
about websockets change in imports - from websockets documentation:
> For convenience, many public APIs can be imported from the websockets package. However, this feature is incompatible with static code analysis. It breaks autocompletion in an IDE or type checking with mypy. If you’re using such tools, use the real import paths.
* todo note for python 3.11
typing.NotRequired
* missed staging in previous commit
* added missing death Game States for DeathLink
Co-authored-by: beauxq <beauxq@users.noreply.github.com>
Co-authored-by: lordlou <87331798+lordlou@users.noreply.github.com>
* 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>
* 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>