* Fully functional DeathLink implementation. But it's always on right now :D
* Death Link options. Last commit: All entity names being sent through slot_data
* Tutorial Gate Close logic fix
* Improved option tooltip wording
* Fixed shuffle_postgame: false not excluding some locations
* Link to latest stable client rather than full releases page
* add ability to choose custom characters in STS
* bump required protocol (client?) version.
* fix slot data fill.
* add downfall mode, as well as characters.
* small change in documentation for character choice as it now uses internal ID's instead of visible titles... because other languages are a thing.
* Minecraft: rewrite to modern AP standards
* Fix gitignore to not try to ignore the entire minecraft world
* minecraft: clean up MC-specific tests
* minecraft: use pkgutil instead of open
* minecraft: ship as apworld
* mc: update region to new api
* Increase upper limit on advancement and egg shard goals
* mc: reduce egg shard count by 5 for structure compasses
* Minecraft: add more tests
Ensures data loading works; tests beatability with various options at their max setting; new tests for 1.19 advancements
* test improvements
* mc: typing and imports cleanup
* parens
* mc: condense filler item code and override get_filler_item_name
- consolidated declaration and population of level location lists
- moved floor_location_game_ids_late declaration for consistency
- moved generate_itempool to create_items, where it belongs
- mention that expanded pool includes take any caves in the option description again
- removed unnecessary StartingPosition check regarding Take Any Caves (leftover from older StartingPosition behavior I believe)
- use proper comparisons to option keys instead of hardcoded ints
Originally, short generations used an artificial cull to create balanced mission distributions. This resulted in campaigns that were somewhat too consistent, and on some standard settings combinations, this resulted in campaigns having The Outlaws as the second mission 100% of the time. It also caused generation to fail a bit too easily if the player excluded too many missions.
This removes the cull and adds an additional early Easy mission slot to all of the reduced sized campaigns.
When playing on No Build settings, this also pushes many of the missions down a difficulty level to ensure greater variety, and pushes additional missions down on Advanced Tactics.
Additional small fixes:
The in-world Excluded Missions validation check is replaced by the core OptionSet check.
Fixed issue with Existing Items not getting their upgrades locked with Units Always Have Upgrades on.
Settings combination:
- EP Shuffle
- disable_non_randomized
- doors: panels or doors: none
An Event Item was being created that is inaccessible. This is fixed now.
(The fix makes sure that player_logic is not trying to create events for the sake of EPs that are disabled)
Note: These two sets should probably be merged anyway, they used to behave differenty but no longer really do. But that will require some extra care on the client side as well.
* 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>
* - Can Catch every fish doesn't need fishing rods if they are not shuffled
* add has_max_fishing_rod
* add test for master angler + vanilla tools
---------
Co-authored-by: Alex Gilbert <alexgilbert@yahoo.com>
* Make all Keep Pressure Plates logically required for the Laser Panel
* Added more Tutorial checks
* Added the remaining two Shipwreck Boat EPs to the exclude list for normal
* Improved itempool filling system, added warning if usefuls had to be eaten
* Moved creation of said warning string to utils
* Fixed logic bug causing broken seeds on Mountain Floor 2
* Hints system change
* Expert Logic Fix
* Fixed typo
* Better wording
* Added missing games to junk hints
* Made sure Entrance names are unique
* Fixed missing Obelisk Side
* Disable Non Randomized + EP Shuffle fix
* Fixed disable_non_randomized precompleted EPs being 'disabled' instead of 'precompleted'
* Fixed if/elif error
* Tutorial Gate Open local symbol item becomes local_early_item in expert instead
* Bump required client version. There is a beta client that sends 0.3.9.
* Removed print statement, oops
* Fixed itempool manipulation in pre_fill
* Replaced string concats with fstrings
* Improved make_warning_string function signature
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* Improved performance on removing multiple items from multiworld itempool
* Comment
* Fixed errors with the code
* Made removal from itempool not fail unit test for multiple references
* Moved all item creation to create_items, got rid of itempool modifying system
* Colored Squares is no longer a good item, that's outdated
* Removed double if
* React to from_pool: false by removing a junk item
* Fixed warning if only Fnc Brain was removed
* Make use of string truthiness instead
* Made reading of plandoed items safer
---------
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* Stardew Valley Archipelago implementation
* fix breaking changes
* - Added and Updated Documentation for the game
* Removed fun
* Remove entire idea of step, due to possible inconsistency with the main AP core
* Commented out the desired steps, fix renaming after rebase
* Fixed wording
* tests now passes on 3.8
* run flake8
* remove dependency so apworld work again
* remove dependency for real
* - Fix Formatting in the Game Page
- Removed disabled Option Descriptions for Entrance Randomizer
- Improved Game Page's description of the Arcade Machine buffs
- Trimmed down the text on the Options page for Arcade Machines, so that it is smaller
* - Removed blankspace
* remove player field
* remove None check in options
* document the scripts
* fix pytest warning
* use importlib.resources.files
* fix
* add version requirement to importlib_resources
* remove __init__.py from data folder
* increment data version
* let the __init__.py for 3.9
* use sorted() instead of list()
* replace frozenset from fish_data with tuples
* remove dependency on pytest
* - Add a bit of text to the guide to tell them about how to redeem some received items
* - Added a comment about which mod version to use
* change single quotes for double quotes
* Minimum client version both ways
* Changed version number to be more specific. The mod will handle deciding
---------
Co-authored-by: Alex Gilbert <alexgilbert@yahoo.com>
- Added more progressive locations and associated items.
- Added an option to enable materials/consumables/estus randomization, some players complain about the number of locations and the randomness of those items.
- Added an option to add DLC Items and Locations to the pool, the player must own both the ASHES OF ARIANDEL and the RINGED CITY DLC.
Co-authored-by: Br00ty <83629348+Br00ty@users.noreply.github.com>
Co-authored-by: Friðberg Reynir Traustason <fridberg.traustason@gmail.com>
This adds Wargroove to the list of supported games. Wargroove uses a custom non-linear campaign over the vanilla and double trouble campaigns. A Wargroove client has been added which does a lot of heavy lifting for the Wargroove implementation and must be always on during gameplay. The mod source files can be found here: https://github.com/FlySniper/WargrooveArchipelagoMod
* Make RisingTidesOverrides consistent with normal yaml behaviour.
* Each of the options can be either string directly specifying the option, or dictionary.
* If dictionary, ensure that at least one of the options is greater than zero.
* Made keys optional
* A lot less copy/pasta.
---------
Co-authored-by: Jarno Westhof <jarnowesthof@gmail.com>
* Tests: check that Regions are reachable
try to prevent errors from unconnected/never reachable Regions
* Test region access (#1039)
* Tests: note oot's default unreachable regions
* [SM] Fixed failing testAllStateCanReachEverything (#1087)
* [SM] Fixed failing testAllStateCanReachEverything
- by adding exclusion for Regions used only when corresponding Starting Location is used
- by removing unnecessary VARIA Regions used only for EscapeRando (not supported in AP anyway)
* Update worlds/sm/Regions.py
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* Update worlds/sm/Rules.py
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* Update worlds/sm/Regions.py
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* Update test/general/TestReachability.py
---------
Co-authored-by: espeon65536 <81029175+espeon65536@users.noreply.github.com>
Co-authored-by: lordlou <87331798+lordlou@users.noreply.github.com>
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* Timespinner: added RisingTides and DadPercent flags
* Implemented logic for DadPercent and RisingTides
* Fixed TODO's
* Logic fixes
* Fixed + removed LogicMixins
* Fixes
* More Fixes
* Added UnchainedKeys flag
* Fixed available items in pool with UnchainedKeys
* Fixed typing callable
* Fixed generation failures
* More refactorings
* Implemented traps
* Fixed more typo
* Fixed copy paste bug
* Fixed teleporter logic
* Fixed traps from pool
* Fixed pyramid gates bug that causes a crash on connecting
* Fixed seed reproduceability
* Fixed logic eye for eye spy
Now consider warp beacons as starter progression items
* Attempt to add tracker icons using table
* Replaced table layout with css grid
* Fixed tracker + added Timespinner was apworld capatible
* Updated archipelago items description
* updated URL
* Cleared up text
* Fixed based on self review of PR
* Fixed unit tests
* Fixed seed reproduceability when the traps yaml option is not provided
* Fixed logic for flooded basement
* Implemented Beserkers review result
I am not sure why, i guess this is just to make adding future games less conflicting?
Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
* Added two new options (thanks to WeffJebster)
* Apply suggestions from code review
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
* Addition review results
---------
Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
Before: 1 item activates all 4
After: 7 items activate 7 buttons, creating more divergent routes
Also, I consolidated the 6 filler emotes into a single "Emote Wheel" item to make space in the item pool.
I bumped my data version and min AP version to indicate this change.
The corresponding oc2-modding update is **v1.6.0**
* Tests: add a test that created items and locations exist in the datapackage
* move FF validation to `assert_generate` and remove test exclusion
* test created location addresses are correct
* make the assertion proper and more verbose
* make item count test ~~a bit faster~~ a lot nicer
* 120 blaze it
* name test multiworld setup better and fix another over 120 line in FFR
* 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
## Adding in Explore Mode:
Features include:
* Added in `environments` to be items.
* `Location checks` are now `environment based` instead of being able to get them from anywhere.
* Added in support for the `DLC Survivors of the void` which include `Void Items` and `3 new maps` that come with it. (option added to use DLC)
---------
Co-authored-by: Dogpetkid <dogpetkid@gmail.com>
## New Features:
- EP Shuffle (Individual or Obelisk Sides, with varying difficulty levels)
- Ability to play without Puzzle Randomization (I.e. vanilla + AP layer)
- Pet the Dog to get a Puzzle Skip :) (No, really.)
## Changes:
- Starting inventory behavior improved (Consider starting items like doors and lasers logically even if they aren't part of the mode)
- Audio Log hint system improved (On low hint counts, you will no longer get the same locations hinted every time, i.e. always hints are shuffled)
## Fixes:
- Many fixes to symbol requirements
- Fixes to "shuffle_postgame" (What checks are evaluated as "postgame" in specific modes)
- Logically irrelevant doors are now "useful" instead of "progression"
* Make Bowser unkillable on Egg Hunt
* Increment Data Package version
Changed a location name.
* Baseline for Bowser Rooms shuffling
* Add boss shuffle
* Remove extra space
* Overworld Palette Shuffle
* Fix Literature Trap typo
* Handle Queuing traps and new Timer Trap
* Fix trap name and actually create them
* Early Climb and Overworld Speed
* Add correct tooltip for Early Climb
* Tooltip text edit
* Address unconnected regions
* Add option to fully exclude Special Zone levels from the seed
* Fix Chocolate Island 4 Dragon Coins logic
* Update worlds/smw/Client.py to use `getattr`
Fixed DW Chest Game always sending checks for the 2 chests. The checks sent were the proper "Chest Game" location for the first time the player would open the second chest but all other times, it would send either the last check that was done or default to sending location 0x00 which is SM "Power Bomb (Crateria surface)".
* 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.
The issue at hand is fixing impossible seeds generated by a lack of properly checking if the player can come back to its previous region after reaching for a new location, as reported here: https://discord.com/channels/731205301247803413/1050529825212874763/1050529825212874763
The previous attempt at checking for comeback was only done against "Landing Site" and the custom start region which is a partial solution at best. For exemple, generating a single player plando seed with a custom starting location at "red_brinstar_elevator" with a forced red door at "RedTowerElevatorBottomLeft" and 2 Missiles set at "Morphing Ball" and "Energy Tank, Brinstar Ceiling" would generate an impossible seed where the player is expected to go through the green door "LandingSiteRight" with no Supers to go to the only possible next location "Power Bomb (red Brinstar spike room)". This is because the comeback check would pass because it would consider coming back to "Landing Site" enough.
The proposed solution is keeping a record of the last accessed region when collecting items. It would then be used as the source of the comeback check with the destination being the new location. This check had to be moved from can_fill() to can_reach() because the maximum_exploration_state of the AP filler only use can_reach().
Its still not perfect because collect() can be called in batch for many items at a time so the last accessed region will be set as the last collected item and will be used for the next comeback checks.
This was tested a bit with the given exemple above (its now failing generation) and by generating some 8 SM players seed with many door color rando, area rando and boss rando enabled.
* Added cerulean_cave_condition to fill_slot_data
Added `cerulean_cave_condition` to the `fill_slot_data` function, for a poptracker feature being worked on as it was missing
* Added the potential for any traps to be disabled
Adding the ability to disable any kind of trap, for example if you want any status trap except being Poisoned. Will add a contingency to not try and roll a trap if they are all set to disabled.
* Added contingency to if all traps are disabled
Added a contingency to creating items such that it doesn't try to create a trap if all the traps are disabled
* Updated variable name
Edited name of variable to follow PEP 8 variable naming conventions
* oot: repair closed forest + dungeon ER
* oot: finally skip triforce pieces in balancing
* oot: fix mq_dungeons_mode set to mq or count
* oot: force 0.3.7 client
hopefully this makes people update
* oot: temp fix for skip-child-zelda crash
eventually I want to decide on a better fix for this though
* oot: remove skip-child-zelda item inside if tree
* oot: fix classification of some thieves hideout locations in tracker
* oot: fix regional shuffle for hideout keys and ganon boss key
* oot: properly attach hints to dungeon locations
* Fix entrance shuffle flag not being set correctly due to new dungeon shuffle option format
- Since multiprocessing and exceptions apparently don't interact well, any exceptions in `generate_output` are handled more gracefully now. The event is always set as well, so the process will no longer hang on an exception there.
- The triforce object file was renamed in 7.0. I didn't change the filename in the code, so it would crash on non-Windows systems.
- Some hint distributions just crash, so I'm temporarily removing them. It will take a while to port the relevant functionality and I'd rather not hold up the next version release.
* SC2: Fixed nondeterminism resulting from early unit placement
* SC2: Renamed "world" arguments to "multiworld"
* SC2: Fixed All-In Ground including anti-air in defense score, fixed error in beats_protoss_deathball
* SC2: Fixed No Logic using logic on Beat events
* SC2: Fixed /unfinished command failing when All-In available
## What is this fixing or adding?
- Adds the majority of OoTR 7.0 features:
- Pot shuffle, Freestanding item shuffle, Crate shuffle, Beehive shuffle
- Key rings mode
- Dungeon shortcuts to speed up dungeons
- "Regional" shuffle for dungeon items
- New options for shop pricing in shopsanity
- Expanded Ganon's Boss Key shuffle options
- Pre-planted beans
- Improved Chest Appearance Matches Contents mode
- Blue Fire Arrows
- Bonk self-damage
- Finer control over MQ dungeons and spawn position randomization
- Several bugfixes as a result of the update:
- Items recognized by the server and valid starting items are now in a 1-to-1 correspondence. In particular, starting with keys is now supported.
- Entrance randomization success rate improved. Hopefully it is now at 100%.
Co-authored-by: Zach Parks <zach@alliware.com>
- Pokemon guide was missing a point about changing the Lua option in Bizhawk.
- The same point in the OoT guide was missing a step about restarting Bizhawk after changing the Lua option, so updated that as well.
Adds Trainersanity option (Each non-scripted trainer has a location check, adding 317 locations)
Adds Randomize Pokedex option. It is required to obtain items from Oak's Aides.
Adds option to add all normal shop items to all normal shops.
Adds DeathLink option.
Adds traps.
Improves Type Chart randomization.
Items can be received during battle.
Stores start inventory in ROM. Only requests remote start inventory if patch is from v1.
Fixes logic bugs.
Various other improvements.
Changelog:
Features:
- Completely reworked mission progression system
- Control of which mission types can be active per-gameplay-style
- Control of how many missions are active per-gameplay-style
- Mission order shuffle
- Two new Chaos Emerald Hunt goals
- `Chaos Emerald Hunt` involves finding the seven Chaos Emeralds and beating Green Hill
- `FinalHazard Chaos Emerald Hunt` is the same, but with the FinalHazard fight at the end of Green Hill
- New optional Location Checks
- Keysanity (Chao Containers)
- Whistlesanity (Animal Pipes and hidden whistle spots)
- Beetlesanity (Destroying Gold Beetles)
- Option to require clearing all active Cannon's Core Missions for access to the Biolizard fight in `Biolizard` goal
- Hard Logic option
- More Music Options
- Option to use SADX music
- New `Singularity` music shuffle option
- Option to choose the Narrator theme
- New Traps
- Tiny Trap is now permanent within a level
- Gravity Trap
- Exposition Trap
Quality of Life:
- Significant revamp to Stage Select screen information conveyance
- Icons are displayed for:
- Relevant character's upgrades
- Which location checks are active/checked
- Chaos Emeralds found (if relevant)
- Gate and Cannon's Core emblem costs
- The above stage-specific info can also be viewed when paused in-level
- The current mission is also displayed when paused
- Emblem Symbol on Mission Select subscreen now only displays if a high enough rank has been gotten on that mission to send the location check
- Hints including SA2B locations will now specify which Gate that level is located in
- Save file now stores slot name to help prevent false location checks in the case of one player having multiple SA2B slots in the same seed
- Chao Intermediate and Expert race sets are now swapped, per player feedback
- Intermediate now includes Beginner + Challenge + Hero + Dark
- Expert now includes Beginner + Challenge + Hero + Dark + Jewel
- New mod config option for the color of the Message Queue text
Bug Fixes:
- Fixed bug where game stops properly tracking items after 127 have been received.
- Several logic fixes
- Game now refers to `Knuckles - Shovel Claws` correctly
- Minor AP World code cleanup
* Rogue Legacy: More refactoring and clean up.
* Also marked Blacksmith as Progression as it's used in a rule.
* Remove extra newline.
* Prevent divide by zero type error.
* Scratch last commit, got the math mixed in my head.
* Clarified name of rule regarding percentage of stat upgrades.
* Move early vendors/architect creation into `create_items` logic.
* Rename parameter in `create_region`.
* Rename local var in `create_region`.
* Removed accidental links in Markdown docs.
* Refactor `create_region` signature and caller.
* Remove redundant if-else.
* Revert change to if-else, and moved item_pool to function instead of obj var.
* Rename LegacyLogic to RLLogic.
* Remove LogicMixin for rules.
Added Juice Ranch and Worm Pod to logic
Extra parenthesis removed
* Delete log.txt
Not used
Transitioned all whitespace characters to Linux /n from Windows /r/n
Updated rules for Rescue Blerol 1 and 2 to avoid impossible seed generation. Fixed member requirements for Vault Bomb. Added Juice Ranch: Fridge for consistency with other checks behind combat. Added party_shuffle rules to vault medallions, removed jail key requirement (not needed)
* Docs/Factorio: Flesh out lacking option descriptions.
* Docs/Factorio: Added instructions on peaceful mode.
* Docs/Factorio: Use subheadings for each "other setting".
* Docs/Factorio: Mention that `tech_tree_information: full` grants hints.
* Docs/Factorio: Instructions to use .yaml checker after editing your .yaml manually.
Early Unit: Now respects Excluded Items when selecting a random unit.
Units Always Have Upgrades: Changed removal cascade behavior; now additionally checks to see if an associated item is already locked when attempting to remove, and locks associated items if so. Occasionally caused issues with starter items in the past, frequently caused issues with yaml-defined Locked Items.
* Fix wrapping too early if docstring is within 120 characters and re-indent other lines.
* Remove auto-word wrapping and tweaked all worlds' option docstrings formatting.
Options should wrap around the 120 character mark to prevent template files from being too long horizontally. This also allows manual-indentation to work again.
* Fix missing '#' on empty lines in output from docstring.
* Generated patch includes base patch
* location ID range start match item ID start
* remove unused import
* Change Oak's Aides defaults to be more sync-friendly
* Baseline patching and logic for DKC3
* Client can send, but not yet receive
* Alpha Test Baseline
* Bug Fixes and Starting Lives Option
* Finish BBH, add world hints
* Add music shuffle
* Boomer Costs Text
* Stubbed in Collect behaviour
* Adjust Gyrocopter option
* Add Bonus Coin junk replacement and tracker support
* Delete bad logs
* Undo host.yaml change
* Refactored SNIClient
* Make Swanky Free
* Fix Typo
* Undo SNIClient run_game hack
* Fix Typo
* Remove Bosses from Level Shuffle
* Remove duplicate kivy Data
* Add DKC3 Docs and increment Data version
* Remove dead code
* Fix mislabeled region
* Add Dark Souls 3 to README
* Always force Cog on Rocket Rush Flag
* Fix Single Ski lock and too many DK Coins
* Update Retroarch version number
* Don't send DKC3 through LttP Adjuster
* Comment Location ROM Table
* Change ROM Hash prefix to D3
* Remove redundant constructor
* Add ROM Change Safeguards
* Properly mark WRAM accesses
* Remove outdated region connect
* Fix syntax error
* Fix Game description
* Fix SNES Bank Access
* Add isso_setup for DKC3
* Double Quote strings
* Escape single quotes I guess
* Add two locations to Trade Sequence List
* Remove trace sequence locations from ROM data dict
* Prevent Krematoa Crash, add crash robustness
* Remove print statements
* Don't remove ctx.rom if save file dies
* Consolidate logic for readability
* Add link to tracker on DKC3 Setup doc
* Remove false information from setup guide
* Fix file extension in setup doc
* Bug Fixes
* Add KONGsanity and cheat options
* First Pass Collect behavior
* Fix level unlock data
* Make ! only indicate KONG letters on KONGsanity
* Fix Level Name in locations
* Adjust junk pool logic
* Fix Knautilus Connections
* Fix Wrinkly Softlock
* Fix missed world reference