* Change Regions, Areas and Connections to dataclasses/NamedTuples
* Move to new file
* we do a little renaming
* Purge the 'lambda' naming in favor of 'rule' or 'WitnessRule'
* missed one
* unnecessary change
* omega oops
* NOOOOOOOO
* Merge error
* mypy thing
* don't allow one-way and two-way entrances to be connected to each other
* add special handling for the tower hq nodes since they share the same parent region
* Change the logic for the 3 Zora's Domain Beehives to support new rule
Implement new logic changes to these 3 locations
* Update LogicHelpers.json with new rule for beehives that only appear for child link
Added below the "can_break_upper_beehive" a new helper called "can_break_upper_beehive_child" which removes the requirement for hookshot to avoid a logic error in the Zora Domain Beehives where it checks whether child or adult can break beehives, even though these beehives do not appear as an adult.
* Update LogicHelpers.json moving the call for is_child
As is_child is already called for can_use (Boomerang), it's a bit redundant to include the check for using the Boomerang, so it's being moved to be with the Bombchu check to ensure that it's not expected if the Bombchu Logic Rule is turned on that Adult can use bombchus to break the beehives. This effectively does the same thing, but should be better on performance.
* - Add requirement on Aurora Vineyard tablet to start the quest
* - Add rule for using the aurora vineyard staircase
* - Added a test for the tablet
* - Add a few missing items to the test
* - Introduce a new item to split the quest from the door and avoir ER issues
* - Optimize imports
* - Forgot to generate the item
* fix Aurora mess
# Conflicts:
# worlds/stardew_valley/rules.py
# worlds/stardew_valley/test/mods/TestMods.py
* fix a couple errors in the cherry picked commit, added a method to improve readability and reduce chance of human error on story quest conditions
* - remove blank line
* - Code review comments
* - fixed weird assert name
* - fixed accidentally surviving line
* - Fixed imports
---------
Co-authored-by: Jouramie <16137441+Jouramie@users.noreply.github.com>
* Landstalker: Fixed duplicate entrance names when using the "No teleport tree requirements" option
* Landstalker: Fixed more cases of duplicate entrance names when using "Shuffle Trees" with open trees
* Landstalker: Fixed endgame locations being present in "Reach Kazalt" goal
* Landstalker: Fixed Lithograph hint pointing at the wrong player
* Landstalker: Updated docs to remove the link to Steam since game got delisted
* Landstalker: Fixed high value hint_count rarely failing at generation
* Landstalker: Fixed dynamic shop prices being potentially invalid in case of a progression balancing (changes by ExemptMedic)
* Bottom to central path sealed off
* Bottom-to-left-path to right path sealed off
* Central opening (r4444): Left unsealed, paths seperated
* Top right half rocks fixed
* Middle to top opening sealed
* Right hallway seal correctly positioned
* Top right ladder: Fixed overlapping walls
A new `Subcon Forest - Behind Boss Firewall` region is added for
`Subcon Village - Snatcher Statue Chest`. `Subcon Forest Area` connects
to this new region, requiring either the first
`Progressive Painting Unlock`, or Expert logic +
`NoPaintingSkips: false`.
A new `Subcon Forest Boss Arena` region is added for
`Subcon Forest - Boss Arena Chest` because this is immediately
accessible from YCHE. There are connections to this region from
`Your Contract has Expired` (no requirements) and from
`Subcon Forest - Behind Boss Firewall` (requiring either Hard logic or
`Hookshot Badge` + `TOD Access`).
A reverse connection is also added to Expert logic, for
`Subcon Forest Boss Arena` -> `Subcon Forest - Behind Boss Firewall`.
This could be extended to include Hard logic if there is a reasonable
Cherry Bridge setup.
A reverse connection is also added to Expert logic, for
`Subcon Forest - Behind Boss Firewall` -> `Subcon Forest Area`, so long
as `NoPaintingSkips: false` because it is impossible to burn the
paintings to remove the firewall, from behind the firewall.
A new `Your Contract has Expired - Post Fight` region is added for the
Snatcher post fight cutscene to prevent the Snatcher Hover trick giving
access to YCHE, which would otherwise also give access to the new
`Subcon Forest Boss Arena` Region.
The paintings and boss arena gap logic for `Snatcher Statue Chest` and
`Boss Arena Chest` are now handled using the connections to/from these
new regions rather than being on the locations themselves.
The logic for `Act Completion (Toilet of Doom)` remains unchanged
because it has to be in the `Toilet of Doom` region.
In Expert logic, with `NoPaintingSkips: false`, YCHE is added as a rift
access region to Subcon Forest Time Rift entrances.
The `YCHE Access` event is no longer used and has been removed.
- Fixes painting skips logic for Subcon Village - Snatcher Statue Chest
- Fixes Subcon Forest - Boss Arena Chest being inaccessible from YCHE
- Adds Expert logic to reach `Snatcher Statue Chest` from YCHE
- Adds Expert logic to skip the boss firewall in reverse from YCHE so
long as painting skips are not removed from logic
- Adds Expert logic to access Subcon Forest Time Rift entrances from
YCHE so long as painting skips are not removed from logic
* The Messenger: transition rando
* remove unused import
* always link both directions for plando when using coupled transitions
* er_type was renamed to randomization_type
* use frozenset for things that shouldn't change
* review suggestions
* do portal and transition shuffle in `connect_entrances`
* remove some unnecessary connections that were causing entrance caching collisions
* add test for strictest possible ER settings
* use unittest.skip on the skipped test, so we don't waste time doing setUp and tearDown
* use the world helpers
* make the plando connection description more verbose
* always add searing crags portal if portal shuffle is disabled
* guarantee an arbitrary number of locations with first connection
* make the constraints more lenient for a bit more variety
* Init
* remove submodule
* Init
* Update docs
* Fix tests
* Update to use apcivvi
* Update Readme and codeowners
* Minor changes
* Remove .value from options (except starting hint)
* Minor updates
* remove unnecessary property
* Cleanup Rules and Region
* Fix output file generation
* Implement feedback
* Remove 'AP' tag and fix issue with format strings and using same quotes
* Update worlds/civ_6/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Minor docs changes
* minor updates
* Small rework of create items
* Minor updates
* Remove unused variable
* Move client to Launcher Components with rest of similar clients
* Revert "Move client to Launcher Components with rest of similar clients"
This reverts commit f9fd5df9fdf19eaf4f1de54e21e3c33a74f02364.
* modify component
* Fix generation issues
* Fix tests
* Minor change
* Add improvement and test case
* Minor options changes
* .
* Preliminary Review
* Fix failing test due to slot data serialization
* Format json
* Remove exclude missable boosts
* Update options (update goody hut text, make research multiplier a range)
* Update docs punctuation and slot data init
* Move priority/excluded locations into options
* Implement docs PR feedback
* PR Feedback for options
* PR feedback misc
* Update location classification and fix client type
* Fix typings
* Update research cost multiplier
* Remove unnecessary location priority code
* Remove extrenous use of items()
* WIP PR Feedback
* WIP PR Feedback
* Add victory event
* Add option set for death link effect
* PR improvements
* Update post fill hint to support items with multiple classifications
* remove unnecessary len
* Move location exclusion logic
* Update test to use set instead of accidental dict
* Update docs around progressive eras and boost locations
* Update docs for options to be more readable
* Fix issue with filler items and prehints
* Update filler_data to be static
* Update links in docs
* Minor updates and PR feedback
* Update boosts data
* Update era required items
* Update existing techs
* Update existing techs
* move boost data class
* Update reward data
* Update prereq data
* Update new items and progressive districts
* Remove unused code
* Make filler item name func more efficient
* Update death link text
* Move Civ6 to the end of readme
* Fix bug with hidden locations and location.name
* Partial PR Feedback Implementation
* Format changes
* Minor review feedback
* Modify access rules to use list created in generate_early
* Modify boost rules to precalculate requirements
* Remove option checks from access rules
* Fix issue with pre initialized dicts
* Add inno setup for civ6 client
* Update inno_setup.iss
---------
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Co-authored-by: Exempt-Medic <ExemptMedic@Gmail.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
* merge group options so specific handling is not needed when generating filler pool
* fix
* remove unneeded imports
* self review
* remove unneeded imports
* looks like typing was missing woopsi
* sm64ex: use item data class
* rearrange imports
* Dict to dict
* remove optional typing
* bonus item descriptions since we can also add stuff for webworld easily
* remove item descriptions (rip) and decrease verbosity for classifications
* formatting
* Timespinner: Add "no hell spiders" enemy rando option that is present in upstream settings
* Timespinner: Prism Break support tweaks (including tracker support)
* Timespinner: Add support for upstream Lock Key Amadeus flag
* Timespinner: Add support for upstream Risky Warps flag
* Timespinner: Add support for upstream Pyramid Start flag
* Timespinner: fix error in lab connectivity logic
* Timespinner: use has_all to simplify one check
Per PR suggestion.
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Timespinner: fix apparent logic error inherited from in-rando logic
* Timespinner: adjust "Origins" location logic slightly further to account for a Risky Warps case
* Timespinner: remove the backward compat options for the recent flag additions
* Timespinner: add newly added Gate Keep option from rando
* Timespinner: adjust the laser access colours in the tracker
* Timespinner: fix an item description in the tracker
* Timespinner: based on testing feedback, put Laser Access items in their own category
* Timespinner: add support for new upstream flag Royal Roadblock
* Timespinner: also ensure the new flag gets put in slot data
* Timespinner: fix bug in universal tracker support indicating castle basement is accessible at the lower Rising Tides flooding level
* Timespinner: exclude Talaria Attachment and Timespinner Wheel from pyramid start starter progression items
* Timespinner: fix region logic for the left pyramid warp
* Timespinner: fix main Gyre access logic when Risky Warps warps you behind the lasers
* Timespinner: apply suggested spacing fix
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
---------
Co-authored-by: sgrunt <sgrunt1987@gmail.com>
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Starting out
* Rules for breakable regions
* make the rest of it work, it's pr ready, boom
* Make it work in not pot shuffle
* Fix after merge
* Fix item id overlap
* Move breakable, grass, and local fill options in yaml
* Fix groups getting overwritten
* Rename, add new breakables
* Rename more stuff
* Time to rename them again
* Make it actually default for breakable shuffle
* Burn the signs down
* Fix west courtyard pot regions
* Fix fortress courtyard and beneath the fortress loc groups again
* More missing loc group conversions
* Replace instances of world.player with player, same for multiworld
* Update worlds/tunic/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Remove unused import
* create tool progression feature and unwrap option
* replace option usage with calling feature
* add comment explaining why some logic is a weird place
* replace item creation logic with feature
* self review and add unit tests
* rename test cuz I named them too long
* add a test for the trash can useful stuff cuz I thought there was a bug but turns out it works
* self review again
* remove price_multiplier, turns out it's unused during generation
* damn it 3.11 why are you like this
* use blacksmith region when checking vanilla tools
* fix rule
* move can mine using in tool logic
* remove changes to performance test
* properly set the option I guess
* properly set options 2
* that's what happen when you code too late
* Doom, Doom 2, Heretic: customizable ammo capacity
* Do not progression balance capacity up items
* Prog fill still doesn't agree, just go with our original idea
* Clean up the new options a bit
- Gave all options a consistent and easily readable naming scheme
(`max_ammo_<type>` and `added_ammo_<type>`)
- Don't show the new options in the spoiler log,
as they do not affect logic
- Fix the Doom games' Split Backpack option accidentally referring to
Heretic's Bag of Holding
The logging change across all three games is incidental, as at some
point I did run into that condition by happenstance and it turns out
that it throws an exception due to bad formatting if it's reached
* Do the visibility change for Heretic as well
* Update required client version
* Remove spoiler log restriction on options
* Remove Visibility import now made redundant
* Pokemon Emerald: Change some dexsanity vanilla items to evo items
If a species evolves via item use (Fire Stone, Metal Coat, etc.), use that as it's vanilla item instead of a ball
* Pokemon Emerald: Remove accidentally added print
* Pokemon Emerald: Update changelog
* Pokemon Emerald: Adjust changelog
* Pokemon Emerald: Remove unnecessary else
* Pokemon Emerald: Fix changelog
* adding qwints suggestions
* add stat increase protection and ingame yml stuff
* idk how I forgot these
* reword things
* Update worlds/kh2/Client.py
Co-authored-by: qwint <qwint.42@gmail.com>
* 3.12 compat
* too long of a line
* why didnt I do this before lol
* reading is hard
* missed one
* forgot the self
* fix crash if you get datapackage that isnt kh2
* update to main?
* update to use 0.10 as base and fix violet's base 0 on hex values
* reverting this because I'm bad at my job
---------
Co-authored-by: qwint <qwint.42@gmail.com>
* Expand and validate the RAM cache
* Part way through location improvement
* Fixed location tracking
* Preliminary entrance tracking support
* Actually send entrance messages
* Store found entrances on the server
* Bit of cleanup
* Added rupee count, items linked to checks
* Send Magpie a handshAck
* Got my own version wrong
* Remove the Beta name
* Only send slot_data if there's something in it
* Ask the server for entrance updates
* Small fix to stabilize Link's location when changing rooms
* Oops, server storage is shared between worlds
* Deal with null responses from the server
* Added UNUSED_KEY item
This was causing confusion and Discord support requests because the
instructions there are no longer compatible with the latest version of
Archipelago.
This also lists me as the primary author of the new setup guide.
* Secret Feature
* Fixes
* Fixes and unit tests
* renaming some variables
* Fix the thing
* unit test for elevator egg
* Docstring
* reword
* Fix duplicate locations I think?
* Remove debug thing
* Add the tests back lol
* Make it so that you can exclude an egg to disable it
* Improve hint text for easter eggs
* Update worlds/witness/options.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/witness/player_logic.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/witness/options.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/witness/player_logic.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/witness/rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update test_easter_egg_shuffle.py
* This was actually not necessary, since this is the Egg requirements, nothing to do with location names
* Move one of them
* Improve logic
* Lol
* Moar
* Adjust unit tests
* option docstring adjustment
* Recommend door shuffle
* Don't overlap IDs
* Option description idk
* Change the way the difficulties work to reward playing higher modes
* Fix merge
* add some stuff to generate_data_file (this file is not imported during gen, don't review it :D)
* oop
* space
* This can be earlier than I thought, apparently.
* buffer
* Comment
* Make sure the option is VERY visible
* Some mypy stuff
* apparently ruff wants this
* .
* durinig
* Update options.py
* Explain the additional effects of each difficulty
* Fix logic of flood room secret
* Add Southern Peninsula Area
* oop
---------
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* More hex quest updates
- Implement page ability shuffle for hex quest
- Fix keys behind bosses if hex goal is less than 3
- Added check to fix conflicting hex quest options
- Add option to slot data
* Change option comparison
* Change option checking and fix some stuff
- also keep prayer first on low hex counts
* Update option defaulting
* Update option checking
* Fix option assignment again
* Show player name in option warning
* Add new option to universal tracker stuff
* Update __init__.py
* Make helper method for getting total hexagons in itempool
* Update options.py
* Update option value passthrough
* Change ability shuffle to default on
* Check for hexagons option when writing spoiler
* add groups and a preset
* formatting
* pull zig's tarin's gift improvements
* typing
* alias groups for progressive items
* change tarins gift option a bit
* add bush breakers item group
* fix typo
* bush_breaker option, respect non_local_items
* review suggestions
* cleaner
thx exempt
* Update worlds/ladx/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* fix gen failures for dungeon shuffle
* exclude shovel based on entrance mapping
---------
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* marin text
* Adds lots of Marin Flavour Text (#32)
* Updates of Splash text 24-09-18
* Re-Adds '
* use pkgutil
* Adds all community suggestions up until 20/09/2024 (#33)
* Adds all community suggestions up until 20/09/2024
* cutting deathlink jokes
---------
Co-authored-by: Alex Nordstrom <a.l.nordstrom@gmail.com>
* drop piracy-adjacent jokes
* marin text was too long
* more submissions
* no longer looking for new maintainer
---------
Co-authored-by: palex00 <32203971+palex00@users.noreply.github.com>
* Move a couple locations to monastery
* Connect Quarry Back to Monastery
* Quarry Back -> Monastery with laurels, Monastery -> Monastery Back with wand/sword
* Add Monastery Back region
* Move a couple non-ER locations to monastery back
* Monastery front -> back with sword, wand, or laurels zip
* also laurels zip for non-ER