* Fixed shop changes
* Update option description
* Apply suggestions from Vi's review (thank you)
* Fix for plando connections on a full scene
* Plando connections should work better now for complicated paths
* Even more good plando connections yes
* Starting to move the info over
* Fixing up formatting a bit
* Remove unneeded item info
* Put in updated_reachable_regions, to replace add_dependent_regions
* Updated to match ladder shuffle
* More stuff I guess
* It functions!
* It mostly works with plando now, some slight issues still
* Fixed minor logic bug
* Fixed world leakage
* Change exception message
* Make exception message better for troubleshooting failed connections
* Merged with main
* technically a logic fix but it would never matter cause no start shuffle
* Add a couple more alias item groups cause yeah
* Rename beneath the vault front -> beneath the vault main
* Flip lantern access rule to the region
* Add missing connection to traversal reqs
* Move start_inventory_from_pool to the top so that it's next to start_inventory
* Reword the fixed shop description slightly
* Refactor per ixrec's comments
* Greatly reduced an overcomplicated block because Vi is cool and smart and also cool
* Rewrite traversal reqs thing per Vi's comments
* Remove outdated header change for ROM verification
* Update Connections to be compatible with python ver. 3.8
* Update inno_setup.iss
* Update inno_setup.iss
* Implement support for option groups. WebHost options pages still need to be updated.
* Remove debug output
* In-progress conversion of player-options to Jinja rendering
* Support "Randomize" button without JS, transpile SCSS to CSS, include map file for later editors
* Un-alphabetize options, add default group name for item/location Option classes, implement more option types
* Re-flow UI generation to avoid printing rows with unsupported or invalid option types, add support for TextChoice options
* Support all remaining option types
* Rendering improvements and CSS fixes for prettiness
* Wrap options in a form, update button styles, fix labels, disable inputs where the default is random, nuke the JS
* Minor CSS tweaks, as recommended by the designer
* Hide JS-required elements in noscript tag. Add JS reactivity to range, named-range, and randomize buttons.
* Fix labels, add JS handling for TextChoice
* Make option groups collapsable
* PEP8 current option_groups progress (#2604)
* Make the python more PEP8 and remove unneeded imports
* remove LocationSet from `Item & Location Options` group
* It's ugly, but YAML generation is working
* Stop generating JSON files for player-options pages
* Do not include ItemDict entries whose values are zero
* Properly format yaml output
* Save options when form is submitted, load options on page load
* Fix options being omitted from the page if a group has an even number of options
* Implement generate-game, escape option descriptions
* Fix "randomize" checkboxes not properly setting YAML options to "random"
* Add a separator between item/location groups and items/locations in their respective lists
* Implement option presets
* Fix docs to detail what actually ended up happening
* implement option groups on webworld to allow dev sorting (#2616)
* Force extremely long item/location/option names with no spaces to text-wrap
* Fix "randomize" button being too wide in single-column display, change page header to include game name
* Update preset select to read "custom" when updating form inputs. Show error message if the user doesn't input a name
* Un-break weighted-options, add option group names to weighted options
* Nuke weighted-options. Set up framework to rebuild it in Jinja.
* Generate styles with scss, remove styles which will be replaced, add placeholders for worlds
* Support Toggle, DefaultOnToggle, and Choice options in weighted-options
* Implement expand/collapse without JS for worlds and option groups
* Properly style set options
* Implement Range and NamedRange. Also, CSS is hard.
* Add support for remaining option types. JS and backend still forthcoming.
* Add JS functionality for collapsing game divs, populating span values on range updates. Add <noscript> tag to warn users with JS disabled.
* Support showing/hiding game divs based on range value for game
* Add support for adding/deleting range rows
* Save settings to localStorage on form submission
* Save deleted options on form submission
* Break weighted-options into a per-game page.
- Break weighted-options into a per-game page
- Add "advanced options" links to supported games page
- Use details/summary tags on supported games, player-options, and weighted-options
- Fix bug preventing previously deleted rows from being removed on page load if JS is enabled
- Move route handling for options pages to options.py
- Remove world handling from weighted-options
* Implement loading previous settings from localStorage on page load if JS is enabled
* Weighted options can now generate YAML files and single-player games
* options pages now respect option visibility settings for simple and complex pages
* Remove `/weighted-settings` redirect, fix weighted-options link on player-options page
* Fix instance of AutoWorld not having access to proper `random`
* Catch instances of frozenset along with set
* Restore word-wrap in tooltips
* Fix word wrap in player-options labels
* Add `dedent` filter to help with formatting tooltips in player-options
* Do not change the ordering of keys when printing yaml files
* Move necessary import out of conditional statement
* Expand only the first option group by default on both options pages
* Respect option visibility when generating yaml template files
* Swap to double quotes
* Replace instances of `/weighted-settings` with `/weighted-options`, swap out incomplete links
* Strip newlines and spaces after applying dedent filter
* Fix documentation for option groups
* Update site map
* Update various docs
* Sort OptionSet lists alphabetically
* Minor style tweak
* Fix extremely long text overflowing tooltips
* Convert player-options to use CSS grid instead of tables
* Do not display link to weighted-options page on supported games if the options page is an external link
* Update worlds/AutoWorld.py
Bugfix by @alwaysintreble
Co-authored-by: Aaron Wagener <mmmcheese158@gmail.com>
* Fix NamedRange options not being properly set if a preset it loaded
* Move option-presets route into options.py
* Include preset name in YAML if not "default" and not "custom"
* Removed macros for PlandoBosses and DefaultOnToggle, as they were handled by their parent classes
* Fix not disabling custom inputs when the randomize button is clicked
* Only sort OptionList and OptionSet valid_keys if they are unordered
* Quick style fixes for player-settings to give `select` elements `text-overflow: ellipsis` and increase base size of left-column
* Prevent showing a horizontal scroll bar on player-options if the browser width was beneath a certain threshold
* Fix a bug in weighted-options which prevented inputting a negative value for new range inputs
---------
Co-authored-by: Aaron Wagener <mmmcheese158@gmail.com>
* player property on world class
* Remove dat shi from overcooked
* Update worlds/AutoWorld.py
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
---------
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
* some worlds: some typing in `LocalRom`
### `read_bytes`
It's not safe to return `bytearray` when we think it's `bytes`
```python
a = rom.read_bytes(8, 3)
hash(a) # This won't crash, right?
```
### `write_bytes`
`Iterable[SupportsIndex]` is what's required for `bytearray.__setitem__(slice, values)`
We need to add `__len__` for the `len(values)` in this function.
* remove `object` inheritance
* Initial implementation of Yu-Gi-Oh! WC 2006
* Added Opponents and banlists
* Initial implementation of Yu-Gi-Oh! WC 2006
* Added Opponents and banlists
* Added Campaign Logic
* Added Bonuses Logic
* Added challenge logic
* fixed yugioh client
* ygo06 rom cleanup and include lua
* ygo06 patch cleanup
* ygo06 move client to world folder
* lots of small changes
* bug fixes
* implemented filler item for yugioh06
* BizHawkClient: Add client and connector
* BizHawkClient: Add launcher component and inno_setup lines
* BizHawkClient: Misc stability updates and small improvements
Bad commit organization a consequence of working with two different branches and not keeping the commits separated
* BizHawkClient: Add docstrings
* BizHawkClient: Pull in changes from other branch
* BizHawkClient: Fix no handler message not displaying after changed ROMs
* BizHawkClient: Remove extra print statement from lua
* BizHawkClient: Change version command to use raw strings
* BizHawkClient: Change script version to single integer
* YGO06: added logic for "all expect type forbidden" limited duels
* YGO06: Structure Deck choice now affects logic. Fixed a bug with tier 5 campaign opponents. Added logic for TD16 Union.
* BizHawkClient: Add newline to version for lua script
* BizHawkClient: Call send_connect from BizHawkClient's watcher loop
* BizHawkClient: Add handling for failed request getting script version
* BizHawkClient: Have base64.lua check lua version explicitly for bit operations
On 2.9, it would detect LuaJIT and flood the console with deprecation warnings
* BizHawkClient: Update connector script for slightly better errors and address Gambatte frame sync issue
* BizHawkClient: Remove accidentally added print statements
* BizHawkClient: Fix connector server not closing correctly
* BizHawkClient: Move some connector code around, some linting
* BizHawkClient: Small cleanup in lua
* BizHawkClient: Lua linting
* BizHawkClient: Remove outdated sentences in docstrings
* YGO06: Logic additions and bug fixes
* BizHawkClient: Correctly null check patch file arg
* BizHawkClient: Initialize logging
* BizHawkClient: Move code to worlds/_bizhawk
Also splits out BizHawk communication functions to their own file for use outside this client
* BizHawkClient: Add license to connector lua, add types to docs
* BizHawkClient: Add module docstrings
* YGO06: Logic additions
* BizHawkClient: Allow clients to define multiple systems
* BizHawkClient: Better logging and handling of interruptions to connection to script
* YGO06: Logic additions
* YGO06: Added text to options
* YGO06: Ported to bizhawk client
* YGO06: fix goal not being detected
* YGO06: fix access item rule for tier 5 column 1 and 2
* YGO06: docu and bug fixes
* YGO06: change name
* YGO06: some fixes
* YGO06: fix starting opponent and booster not applying
* YGO06: added option to reduce the amount of challenges and remove the no ban list from pool.
* YGO06: added rom being asked for on first use
* YGO06: fix rules for challenges
* YGO06: create proper rules for TD04 Ritual Summon
* YGO06: mark most banlists as usefull instead of progression
* YGO06: reduce the required core boosters across the board
* YGO06: fix client not loading if another game already loaded the bizhawk client
* YGO06: fix client not finding the bizhawk client.
* YGO06: fix TD08 Draw not giving out an item
* YGO06: small text changes
* YGO06: update to version 0.4.4
* YGO06: logic mixin clean-up
* YGO06: added option for campaign opponents as goal
* Pokemon Emerald add encounter table randomization
* Pokemon Emerald: Item ball randomization working
* Pokemon Emerald: Clean up code a little
* Pokemon Emerald: Partial rework of region/location creation
* Pokemon Emerald: Dedupe items and add more readable names
* Refactor region creation to manually defined regions
* Split region json
* Use new data.json with flattened constants and add HM locations
* YGO06: bug fixes
* YGO06: bug fix
* YGO06: changes default options to be more beginner friendly
* YGO06: attempt at universal tracker support. Settings are stored in slot data now.
* YGO06: fix for older python versions
* YGO06: fix slot data
* YGO06: added diiferent opponents to the campaign
* YGO06: fix small bug with opponent icons
* YGO06: fix unwanted changes
* YGO06: repair merge with main
* YGO06: map out all of the opponents
* YGO06: added opponent shuffle
* YGO06: added logic to opponent shuffle
* YGO06: added option to use ocg art
* YGO06: bug_fixes
* YGO06: removed todos, since they are not needed anymore
* YGO06: added draft mode
* YGO06: added logic to draft mode
* YGO06: Added Money multiplier when you lose
* YGO06: Fixed Unit Test errors
* YGO06: Added Random deck option
* YGO06: Bug fix with registering client
* YGO06: client clean-up
* YGO06: fixed card misspellings
* YGO06: removed unused imports and other small changes
* YGO06: small changes
* YGO06: fix generation error when the combination of starting with "No Banlist" and not adding "No Banlist" to the pool is selected
* YGO06: fix ocg art path overwriting Huge Revolution bugfix
* YGO06: added comments and other minor changes
* YGO06: fixed byte length in client for money
* YGO06: fixes for webhost and options
* YGO06: use the proper random function
* YGO06: change settings to options
* YGO06: move to procedure patch
* YGO06: fix imports
* YGO06: fix download link for patch not showing
* YGO06: remove unnecessary Optional
* YGO06: fix universal tracker stuff
* YGO06: add typings
* YGO06: small cleanup
* yugioh06: small change to setup
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* YGO06: remove logic mixin
* YGO06: fix create item and implement create filler and get filler item name
* YGO06: remove double lambdas
* YGO06: use pkgutil.get_data instaed pf zipFile
* YGO06: fix starting items being duplicated
* YGO06: lots of small changes
* YGO06: moved functions to match execution order
* YGO06: run ruff
* YGO06: run ruff format
* YGO06: fix ruff errors
* YGO06: undo ruff format for rules
* YGO06: move import to prevent circular dependency
* YGO06: remove unused class
* YGO06: optimizing rules
* YGO06: some optimization and small bug fix
---------
Co-authored-by: Zunawe <gyroscope15@gmail.com>
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Hylics 2: Remove Random Start option and replace it with Start Location option
* remove choice
* Readd random start to slot data
* newlines
* Add random_start as a Removed option
* Update advanced yaml guide wording
* Update options api as well
* Update exclude locations description slightly to use more current verbiage
* Update priority locations in options api.md to note what happens if it runs out
* Remove auto-added bullet points
* Slightly mess with wording to make it more succinct
* Pokemon Emerald: Add event ticket locations to client data store flags
* Pokemon Emerald: Add regi doors event flag
* Pokemon Emerald: Add more tracker flags
* Cleanup and new option support
* Handle new locations
* Support higher Strawberry counts
* Don't add start inventory items to the pool
* Support Move Shuffle functionality and items
* Hard and Move Shuffle Logic
* Fix Options
* Update CHANGELOG.md
* Add standard moves logic for signs 3 and 4
* Fix Option Tooltip
* Add tracker link to setup guide
* Fix unit test
* Fix option tooltips
* Missing Space
* Move option checking out of rule function
* Delete just_gen500.bat
* Core: allow for single player state sweeping
* Fill: have distribute items use single_player fill when it can
* oop
* pass locations to sweep_for_events instead of the player
* finally found the diff that was breaking swap
* LTTP fills everyone's dungeons at once, not just a single player's
---------
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
* Fixed Logic in Rules.py
As of easy logic of this goal is
set_rule(world.multiworld.get_location("GO! GO! MARIO!!: Stars", player), lambda state: logic.has_midring(state) or (state.has("Tulip", player) and logic.cansee_clouds(state)))
normal logic shouldn't need any collectable.
* Corrected Logic Rules.py
* Update entrance rando description to discuss seed groups
* Starting off, setting up some names
* It lives
* Some preliminary plando connection handling, probably has errors
* Add missed comma
* if -> elif
* I think this is working properly to handle plando connections
* Update comments
* Fix up shop -> shop portal stuff
* Add back comma that got removed for no reason in the ladder PR
* Remove unnecessary if else
* add back the actually necessary if but not the else
* okay they were both necessary
* Update entrance rando description
* blasphemy
Co-authored-by: Silent <110704408+silent-destroyer@users.noreply.github.com>
* Rename other instances of tunc -> tunic
* Update per Vi's review (thank you)
* Fix a not that shouldn't have been
* Rearrange, update per Vi's comments (thank you)
* Fix indent
* Add a .value
* Add .values
* Fix bad comparison
* Add a not that was supposed to be there
* Replace another isinstance
* Revise option description
* Fix per Kaito's comment
Co-authored-by: Kaito Sinclaire <ks@rosenthalcastle.org>
---------
Co-authored-by: Silent <110704408+silent-destroyer@users.noreply.github.com>
Co-authored-by: Kaito Sinclaire <ks@rosenthalcastle.org>
* Add location groups for each region
* Capitalize existing location groups
* Capitalize new boss location group names
* Update comment with capitalization
* Capitalize location_type in reigons.py
* Replaced the outdated Tracker Pack with a new one that is also pinned in the Discord channel
* Same change but for Spanish
* Update setup_en.md
* catching the bottom link as well
* See English Setupguide
* huzzah, location groups
* scope creep pog
* Apply suggestion to the other spot it is applicable at too
* apply berserker's suggestion
Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
* Remove extra location group for shops
* Fire rod for magic wand
* Capitalize itme name groups
* Update docs to capitalize item name groups, remove the little section on aliases
since the aliases bit is really more for someone misremembering the name than anything else, like "fire rod" is because you played a lot of LttP, or Orb instead of Magic Orb is clear.
* Fix rule with item group name
* Capitalization is cool
* Fix merge mistake
* Add Flask group, remove Potions group
* Update docs to detail how to find item and location groups
* Revise per Vi's comment
* Fix test
* fuzzy matching please stop
* Remove test change that was meant for a different branch
---------
Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
Properly name the Book to Book of Magic in Rules.py so you can actually possibly be expected to use Magical Rod plus Book of Magic to get through dark rooms. No wonder we tend to see candles so early oops.
Also adding a rule that you need candles for access to Level 8 so you aren't required to time a Rod+Book shot against a moblin to burn the bush. Might make this a logic trick or something later.
* An option was added to enable or disable the pilgrimage, and it defaults to disabled. When disabled, the client will prevent you from performing a pilgrimage (i.e. the yellow border will not appear when you enter the 1 sunwarp). The sun painting is added to the item pool when pilgrimage is disabled, as otherwise there is no way into the Pilgrim Antechamber. Inversely, the sun painting is no longer in the item pool when pilgrimage is enabled (even if door shuffle is on), requiring you to perform a pilgrimage to get to that room.
* The canonical pilgrimage has been deprecated. Instead, there is logic for determining whether a pilgrimage is possible.
* Two options were added that allow the player to decide whether paintings and/or Crossroads - Roof Access are permitted during the pilgrimage. Both default to disabled. These options apply both to logical expectations in the generator, and are also enforced by the game client.
* An option was added to control how sunwarps are accessed. The default is for them to always be accessible, like in the base game. It is also possible to disable them entirely (which is not possible when pilgrimage is enabled), or lock them behind items similar to door shuffle. It can either be one item that unlocks all sunwarps at the same time, six progressive items that unlock the sunwarps from 1 to 6, or six individual items that unlock the sunwarps in any order. This option is independent from door shuffle.
* An option was added that shuffles sunwarps. This acts similarly to painting shuffle. The 12 sunwarps are re-ordered and re-paired. Sunwarps that were previously entrances or exits do not need to stay entrances or exits. Performing a pilgrimage requires proceeding through the sunwarps in the new order, rather than the original one.
* Pilgrimage was added as a win condition. It requires you to solve the blue PILGRIM panel in the Pilgrim Antechamber.
* CI: strict mypy check in github actions
mypy_files.txt is a list of files that will fail the CI if mypy finds errors in them
* don't need these
* `Any` should be a way to silence the type checker
* restrict return Any
* CI: pyright in github actions
* fix mistake in translating from mypy
* missed another change from mypy to pyright
* pin pyright version
* add more paths that should trigger check
* use Python instead of bash
* type error for testing CI
* Revert "type error for testing CI"
This reverts commit 99f65f3dadf67fb18b6bbee90bd77d8dbd10f9f9.
* oops
* don't need to redirect output
A world's player_logic is accessible from the LingoWorld object, so it's not necessary to also pass the LingoPlayerLogic object through every function that uses both.
* Update item pool to include 25 jokes and videos as progression items, as well as a progression GeroCities profile
* Fix a bug in Items.py causing item names to be appended inappropriately
* Remove unnecessary import
* Change item pool to have 50 jokes and 20 motivational videos
* Adjust item pool to have 40 of both jokes and videos
* Fix imports to allow compressing for distribution as a .apworld
* Replace all usages of player settings
* Fixed line break error
* Attempt to fix line break again
* Finally figure out what Pycharm did to this file
* Pycharm search failed me
* Remove duplicate s
* Update ArchipIdle
* Revert random newline changes from Pycharm
* Remove player settings from fstrings and rename --samesettings to --sameoptions
* Finally get PyCharm to not auto-format my commits, randomly inserting the newlines
* Removing player-settings
* Missed one
* Remove final line break error
Co-authored-by: Exempt-Medic <60412657+exempt-medic@users.noreply.github.com>
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Co-authored-by: Exempt-Medic <ExemptMedic@Gmail.com>
* put constants in a bit more sensical order
* fix accidental incorrect scoping
* fix plando rules not being respected
* add docstrings for the plando functions
* fix the portal output pools being overwritten
* use shuffle and pop instead of removing by content so plando can go to the same area twice
* move portal pool rebuilding outside mapping creation
* remove plando_connection cleansing since it isn't shared with transition shuffle
* fix cloudy park 4 rule, zero deathlink message
* remove redundant door_shuffle bool
when generic ER gets in, this whole function gets rewritten. So just clean it a little now.
* properly fix deathlink messages, fix fill error
* update docs
* fix vanilla tool fishing rod requiring metal bars
fix vanilla skill requiring previous level (it's always the same rule or more restrictive)
* add test to ensure fishing rod need fish shop
* fishing rod should be indexed from 0 like a mentally sane person would do.
* fishing rod 0 isn't real, but it definitely can hurt you.
* reeeeeeeee
* Update contributing.md
* Update contributing.md
* Update contributing.md
* Update contributing.md
* Update contributing.md
* Update contributing.md
Added non-AP World specific information
* Update contributing.md
Fixed broken link
* Some minor touchups
* Update Contributing.md
Draft for version with picture
* Update contributing.md
Small word change
* Minor updates for conciseness, mostly
* Changed all instances of settings to options in info and setup guides
I combed through all world docs and swapped "setting" to "option" when this was refering to yaml options.
I also changed a leftover "setting" in option.py
* Update contributing.md
* Update contributing.md
* Update setup_en.md
Woops I forgot one
* Update Options.py
Reverted changes regarding options.py
* Update worlds/noita/docs/en_Noita.md
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/sc2wol/docs/en_Starcraft 2 Wings of Liberty.md
revert change waiting for that page to be updated
* Update worlds/witness/docs/setup_en.md
* Update worlds/witness/docs/en_The Witness.md
* Update worlds/soe/docs/multiworld_en.md
Fixed Typo
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* Update worlds/witness/docs/en_The Witness.md
* Update worlds/adventure/docs/en_Adventure.md
* Update worlds/witness/docs/setup_en.md
* Updated Stardew valley to hopefully get rid of the merge conflicts
* Didn't work :dismay:
* Delete worlds/sc2wol/docs/setup_en.md
I think this will fix the merge issue
* Now it should work
* Woops
---------
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* initial work on procedure patch
* more flexibility
load default procedure for version 5 patches
add args for procedure
add default extension for tokens and bsdiff
allow specifying additional required extensions for generation
* pushing current changes to go fix tloz bug
* move tokens into a separate inheritable class
* forgot the commit to remove token from ProcedurePatch
* further cleaning from bad commit
* start on docstrings
* further work on docstrings and typing
* improve docstrings
* fix incorrect docstring
* cleanup
* clean defaults and docstring
* define interface that has only the bare minimum required
for `Patch.create_rom_file`
* change to dictionary.get
* remove unnecessary if statement
* update to explicitly check for procedure, restore compatible version and manual override
* Update Files.py
* remove struct uses
* ensure returning bytes, add token type checking
* Apply suggestions from code review
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
* pep8
---------
Co-authored-by: beauxq <beauxq@yahoo.com>
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
Adds Archipelago support for Zork Grand Inquisitor, the 1997 point-and-click PC adventure game.
The client (based on `CommonClient`), on top of its regular Archipelago duties, fully handles the randomization of the game and the monitoring / modification of the game state. No game modding needed at all; the player is ready to play an Archipelago seed if they can play the vanilla game through ScummVM.
The "reverse engineering" (there's likely a better term for this...) of the game is my own original work and I included an MIT license at the root of my world directory.
A PopTracker pack was also created to help people learn the game: https://github.com/SerpentAI/ZorkGrandInquisitorAPTracker
Adds HotS, LotV and NCO campaigns to SC2 game.
The world's name has changed to reflect that (it's not only Wings of Liberty now)
The client was patched in a way that can still join to games generated prior this change
---------
Co-authored-by: Magnemania <magnemight@gmail.com>
Co-authored-by: EnvyDragon <138727357+EnvyDragon@users.noreply.github.com>
Co-authored-by: Matthew <matthew.marinets@gmail.com>
Co-authored-by: hopop201 <benjy.hopop201@gmail.com>
Co-authored-by: Salzkorn <salzkitty@gmail.com>
Co-authored-by: genderdruid <pallyoffail@gmail.com>
Co-authored-by: MadiMadsen <137329235+MadiMadsen@users.noreply.github.com>
Co-authored-by: neocerber <neocerber@gmail.com>
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
Major Content update for Stardew Valley, including the following features
- Major performance improvements all across the Stardew Valley apworld, including a significant reduction in the test time
- Randomized Farm Type
- Bundles rework (Remixed Bundles and Missing Bundle!)
- New Settings:
* Shipsanity - Shipping individual items
* Monstersanity - Slaying monsters
* Cooksanity - Cooking individual recipes
* Chefsanity - Learning individual recipes
* Craftsanity - Crafting individual items
- New Goals:
* Protector of the Valley - Complete every monster slayer goal
* Full Shipment - Ship every item
* Craftmaster - Craft every item
* Gourmet Chef - Cook every recipe
* Legend - Earn 10 000 000g
* Mystery of the Stardrops - Find every stardrop (Maguffin Hunt)
* Allsanity - Complete every check in your slot
- Building Shuffle: Cheaper options
- Tool Shuffle: Cheaper options
- Money rework
- New traps
- New isolated checks and items, including the farm cave, the movie theater, etc
- Mod Support: SVE [Albrekka]
- Mod Support: Distant Lands [Albrekka]
- Mod Support: Hat Mouse Lacey [Albrekka]
- Mod Support: Boarding House [Albrekka]
Co-authored-by: Witchybun <elnendil@gmail.com>
Co-authored-by: Witchybun <96719127+Witchybun@users.noreply.github.com>
Co-authored-by: Jouramie <jouramie@hotmail.com>
Co-authored-by: Alchav <59858495+Alchav@users.noreply.github.com>
* Core: add layer for patches that don't use `Patch.py`
* bump container version
* APAutoPatchInterface name
* mystic quest change
* OoT and Adventure changes
* missed name in docstring
* container version compatibility
* Moves plaque location to front for better tracker referencing.
* Tiki should be Shaman.
* Hanging should be Gallows.
* Merrick spelling.
* Clarity change.
* proof of concept
* add dict support, block top/game level merge
* prevent key error when option being merged is new
* update triggers guide
* Add documentation about add/remove/replace
* move to trailing name instead of proper tag
* update docs
* confirm types
* Update Utils.py
* Update Generate.py
* pep8
* move to + syntax
* forgot to support sets
* specify received type of type error
* Update Generate.py
Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
* Apply suggestion from review
* add test for update weights
* move test to new test case
* Apply suggestions from code review
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
---------
Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* Core: typing for `Option.default` and a few other `Option` class variables
This is a replacement for https://github.com/ArchipelagoMW/Archipelago/pull/2173
You can read discussion there for issues we found for why we can't have more specific typing on `default`
instead of setting a default in `Option` (where we don't know the type), we check in the metaclass to make sure they have a default.
* NumericOption doesn't need the type annotation that brings out the mypy bug
* SoE default ClassVar
Changelog:
Features:
- New optional Location Checks
- 3-Up Moons
- Hidden 1-Ups
- Bonus Blocks
- Blocksanity
- All blocks that contain coins or items are included, with the exception of:
- Blocks in Top Secret Area & Front Door/Bowser Castle
- Blocks that are unreachable without glitches/unreasonable movement
- New Items
- Special Zone Clear
- New Filler Items
- 1 Coin
- 5 Coins
- 10 Coins
- 50 Coins
- New Trap Items
- Reverse Trap
- Thwimp Trap
- SFX Shuffle
- Palette Shuffle Overhaul
- New Curated Palette can now be used for the Overworld and Level Palette Shuffle options
- Foreground and Background Shuffle options have been merged into a single setting
- Max possible Yoshi Egg value is 255
- UI in-game is updated to handle 3-digits
- New `Display Received Item Popups` option: `progression_minus_yoshi_eggs`
Quality of Life:
- In-Game Indicators are now displayed on the map screen for location checks and received items
- In-level sprites are displayed upon receiving certain items
- The Camera Scroll unlocking is now only enabled on levels where it needs to be
- SMW can now handle receiving more than 255 items
- Significant World Code cleanup
- New Options API
- Removal of `world: MultiWorld` across the world
- The PopTracker pack now has tabs for every level/sublevel, and can automatically swap tabs while playing if connected to the server
Bug Fixes:
- Several logic tweaks/fixes
"Major credit to @TheLX5 for being the driving force for almost all of this update. We've been collaborating on design and polish of the features for the last few months, but all of the heavy lifting was all @TheLX5."
* Added snes9x-nwa as recommended emulator to the setup guides
* Removed snes9x-nwa from the setup guides of DKC3 and SMW
* Update worlds/alttp/docs/multiworld_en.md
Co-authored-by: Aaron Wagener <mmmcheese158@gmail.com>
* Removed duplicate text
Minor grammar and spelling fixes
* Unified required software for SM, SMZ3 and SoE with ALTTP
* Added instructions for usage of BSNES-Plus for ALTTP, SM and SMZ3
---------
Co-authored-by: Aaron Wagener <mmmcheese158@gmail.com>
* 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
* Messenger: Limited Movement option first draft
* The Messenger: add automated setup through the launcher
* drop tomllib
* don't uselessly import launcher
* The Messenger: fix missing goal requirement for power seal hunt
* make hard mode goal harder
* make fire seal a bit more lenient
* have limited movement force minimal accessibility
* add an early meditation option
* clean up precollected notes tests a bit
* add linux support
* add steam deck support
* await monokickstart
* minor styling cleanup
* more minor styling cleanup
* Initial implementation of Generic ER
* Move ERType to Entrance.Type, fix typing imports
* updates based on testing (read: flailing)
* Updates from feedback
* Various bug fixes in ERCollectionState
* Use deque instead of queue.Queue
* Allow partial entrances in collection state earlier, doc improvements
* Prevent early loops in region graph, improve reusability of ER stage code
* Typos, grammar, PEP8, and style "fixes"
* use RuntimeError instead of bare Exceptions
* return tuples from connect since it's slightly faster for our purposes
* move the shuffle to the beginning of find_pairing
* do er_state placements within pairing lookups to remove code duplication
* requested adjustments
* Add some temporary performance logging
* Use CollectionState to track available exits and placed regions
* remove seal shuffle option
* some cleanup stuff
* portal rando progress
* pre-emptive region creation
* seals need to be in the datapackage
* put mega shards in old order
* fix typos and make it actually work
* fix more missed connections and add portal events
* fix all the portal rando code
* finish initial logic implementation
* remove/comment out debug stuff
* does not actually support plando yet
* typos and fix a crash when 3 available portals was selected
* finish initial logic for all connections and remove/rename as necessary
* fix typos and add some more leniency
* move item classification determination to its own method rather than split between two spots
* super complicated solution for handling installing the alpha builds
* fix logic bugs and add a test
* implement logic to shuffle the cutscene portals even though it's probably not possible
* just use the one list
* fix some issues with the mod checking/downloading
* Core: have webhost slot name links go through the launcher so that components can use them
* add uri support to the launcher component function
* generate output file under specific conditions
* cleanup connections.py
* set topology_present to true when portals are shuffled
* add requirement for ghost pit loc since it's pretty hard without movement
* bring hard logic back
* misc cleanup
* fix asset grabbing of latest version
* implement ER
* just use the entrances for the spoiler instead of manipulating the cache
* remove test defaults
* remove excessive comprehension
* cleanup and cater data for the client
* add elemental skylands to the shuffle pools
* initial attempts at hint text
* use network items for offline seeds
* change around the offline seed data again
* move er after portal shuffle and ensure a minimal sphere 1
* Add a method to automatically disconnect entrances in a coupled-compliant way
Update docs and cleanup todos
* Make find_placeable_exits deterministic by sorting blocked_connections set
* add more ER transitions
* fix spoiler output of portal warps
* add path to hint_data
* rename entrance to tot to be a bit clearer
* cleanup imports and update description for hard logic
* cleanup for PR to main
* missed a spot
* cleanup monokickstart
* add location_name_groups
* update docs for new setup
* client can reconnect on its own now, no need for a button.
* fix mod download link grabbing the wrong assets
* cleanup mod pulling a bit and display version it's trying to update to
* plando support
* comment out broken steam deck support
* supports plando
* satisfy flake for currently unused file
* fix the items accessibility test
* review comments
* add searing crags portal to starting portals when disabled like option says
* address sliver comments
* rip out currently unused transition shuffle
* add aerobatics warrior requirement to fire seal
---------
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: Sean Dempsey <dempsey.sean@outlook.com>
Co-authored-by: qwint <qwint.42@gmail.com>