Archipelago/worlds
Natalie Weizenbaum 5efb3fd2b0
DS3: Version 3.0.0 (#3128)
* Update worlds/dark_souls_3/Locations.py

Co-authored-by: Scipio Wright <scipiowright@gmail.com>

* Fix Covetous Silver Serpent Ring location

* Update location groups

This should cover pretty much all of the seriously hidden items. It
also splits out miniboss drops, mimic drops, and hostile NPC drops.

* Remove the "Guarded by Keys" group

On reflection, I don't think this is actually that useful. It'll also
get a lot muddier once we can randomize shops and ashes become
pseudo-"keys".

* Restore Knight Slayer's Ring classification

* Support infusions/upgrades in the new DS3 mod system

* Support random starting loadouts

* Make an item's NPC status orthogonal to its category

* Track location groups with flags

* Track Archipelago/Offline mismatches on the server

Also fix a few incorrect item names.

* Add additional locations that are now randomizable

* Don't put soul and multiple items in shops

* Add an option to enable whether NG+ items/locations are included

* Clean up useful item categorization

There are so many weapons in the game now, it doesn't make sense to
treat them all as useful

* Add more variety to filler items

* Iron out a few bugs and incompatibilities

* Fix more silly bugs

* Get tests passing

* Update options to cover new item types

Also recategorize some items.

* Verify the default values of `Option`s.

Since `Option.verify()` can handle normalization of option names, this allows options  to define defaults which rely on that normalization. For example, it allows a world to exclude certain locations by default.

This also makes it easier to catch errors if a world author accidentally sets an invalid default.

* Make a few more improvements and fixes

* Randomize Path of the Dragon

* Mark items that unlock checks as useful

These items all unlock missable checks, but they're still good to ahve in the game for variety's sake.

* Guarantee more NPC quests are completable

* Fix a syntax error

* Fix rule definition

* Support enemy randomization

* Support online Yhorm randomization

* Remove a completed TODO

* Fix tests

* Fix force_unique

* Add an option to smooth out upgrade item progression

* Add helpers for setting location/entrance rules

* Support smoother soul item progression

* Fill extra smoothing items into conditional locations as well as other worlds

* Add health item smoothing

* Handle infusions at item generation time

* Handle item upgrades at genreation time

* Fix Grave Warden's Ashes

* Don't overwrite old rules

* Randomize items based on spheres instead of DS3 locations

* Add a smoothing option for weapon upgrades

* Add rules for crow trades

* Small fixes

* Fix a few more bugs

* Fix more bugs

* Try to prevent Path of the Dragon from going somewhere it doesn't work

* Add the ability to provide enemy presets

* Various fixes and features

* Bug fixes

* Better Coiled Sword placement

* Structure DarkSouls3Location more like DarkSouls3Item

* Add events to make DS3's spheres more even

* Restructure locations to work like items do now

* Add rules for more missable locations

* Don't add two Storm Rulers

* Place Hawk Ring in Farron Keep

* Mark the Grass Crest Shield as useful

* Mark new progression items

* Fix a bug

* Support newer better Path of the Dragon code

* Don't lock the player out of Coiled Sword

* Don't create events for missable locations

* Don't throw strings

* Don't smooth event items

* Properly categorize Butcher Knife

* Be more careful about placing Yhorm in low-randomization scenarios

* Don't try to smooth DLC items with DLC disabled

* Fix another Yhorm bug

* Fix upgrade/infusion logic

* Remove the PoolType option

This distinction is no longer meaningful now that every location in
the game of each type is randomized

* Categorize HWL: Red Eye Orb as an NPC location

* Don't place Storm Ruler on CA: Coiled Sword

* Define flatten() locally to make this APWorld capable

* Fix some more Leonhard weirdness

* Fix unique item randomization

* Don't double Twin Dragon Greatshield

* Remove debugging print

* Don't add double Storm Ruler

Also remove now-redundant item sorting by category in create_items.

* Don't add double Storm Ruler

Also remove now-redundant item sorting by category in create_items.

* Add a missing dlc_enabled check

* Use nicer options syntax

* Bump data_version

* Mention where Yhorm is in which world

* Better handle excluded events

* Add a newline to Yhorm location

* Better way of handling excluded unradomized progression locations

* Fix a squidge of nondeterminism

* Only smooth items from this world

* Don't smooth progression weapons

* Remove a location that doesn't actually exist in-game

* Classify Power Within as useful

* Clarify location names

* Fix location requirements

* Clean up randomization options

* Properly name Coiled Sword location

* Add an option for configuring how missable items are handled

* Fix some bugs from location name updates

* Fix location guide link

* Fix a couple locations that were busted offline

* Update detailed location descriptions

* Fix some bugs when generating for a multiworld

* Inject Large Leather Shield

* Fix a few location issues

* Don't allow progression_skip_balancing for unnecessary locs

* Update some location info

* Don't uniquify the wrong items

* Fix some more location issues

* More location fixes

* Use hyphens instead of parens for location descriptions

* Update and fix more locations

* Fix Soul of Cinder boss name

* Fix some logic issues

* Add item groups and document item/location groups

* Fix the display name for "Impatient Mimics"

* Properly handle Transposing Kiln and Pyromancer's Flame

* Testing

* Some fixes to NPC quests, late basin, and transposing kiln

* Improve a couple location names

* Split out and improve missable NPC item logic

* Don't allow crow trades to have foreign items

* Fix a variable capture bug

* Make sure early items are accessible early even with early Castle

* Mark ID giant slave drops as missable

* Make sure late basin means that early items aren't behind it

* Make is_location_available explicitly private

* Add an _add_item_rule utility that checks availability

* Clear excluded items if excluded_locations == "unnecessary"

* Don't allow upgrades/infusions in crow trades

* Fix the documentation for deprecated options

* Create events for all excluded locations

This allows `can_reach` logic to work even if the locations are
randomized.

* Fix up Patches' and Siegward's logic based on some manual testing

* Factor out more sub-methods for setting location rules

* Oops, left these in

* Fixing name

* Left that in too

* Changing to NamedRange to support special_range_names

* Alphabetizing

* Don't call _is_location_available on foreign locations

* Add missing Leonhard items

* Changing late basin to have a post-small-doll option

* Update basin option, add logic for some of Leonhard Hawkwood and Orbeck

* Simplifying an option, fixing a copy-paste error

* Removing trailing whitespace

* Changing lost items to go into start inventory

* Revert Basin changes

* Oops

* Update Options.py

* Reverting small doll changes

* Farron Keep boss requirement logic

* Add Scroll for late_dlc

* Fixing excluded unnecessary locations

* Adding Priestess Ring as being after UG boss

* Removing missable from Corvian Titanite Slab

* Adding KFF Yhorm boss locks

* Screams about Creighton

* Elite Knight Set isn't permanently missable

* Adding Kiln requirement to KFF

* fixing valid_keys and item groups

* Fixing an option-checker

* Throwing unplaceable Storm Ruler into start inventory

* Update locations

* Refactor item injection

* Update setup doc

* Small fixes

* Fix another location name

* Fix injection calculation

* Inject guaranteed items along with progression items

* Mark boss souls as required for access to regions

This allows us to set quest requirements for boss souls and have them
automatically propagated to regions, means we need less machinery for
Yhorm bosses, and allows us to get rid of a few region-transition
events.

* Make sure Sirris's quest can be completed before Pontiff

* Removing unused list

* Changing dict to list

* Removing unused test

* Update __init__.py

* self.multiworld.random -> self.random (#9)

* Fix some miscellaneous location issues

* Rewrite the DS3 intro page/FAQ

* Removing modifying the itempool after fill (#7)

Co-authored-by: Natalie Weizenbaum <nweiz@google.com>

* Small fixes to the setup guide (#10)

Small fixes, adding an example for connecting

* Expanded Late Basin of Vows and Late DLC (#6)

* Add proper requirements for CD: Black Eye Orb

* Fix Aldrich's name

* Document the differences with the 2.x.x branch

* Don't crash if there are more items than locations in smoothing

* Apply suggestions from code review

Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>

* Code review

* Fix _replace_with_filler

* Don't use the shared flatten function in SM

* Track local items separately rather than iterating the multiworld

* Various formatting/docs changes suggested by PyCharm (#12)

* Drop deprecated options

* Rename "offline randomizer" to "static randomizer" which is clearer

* Move `enable_*_locations` under removed options.

* Avoid excluded locations for locally-filled items

* Adding Removed options to error (#14)

* Changes for WebHost options display and the options overhaul

* unpack iterators in item list (#13)

* Allow worlds to add options to prebuilt groups

Previously, this crashed because `typing.NamedTuple` fields such as
`group.name` aren't assignable. Now it will only fail for group names
that are actually incorrectly cased, and will fail with a better error
message.

* Style changes, rename exclude behavior options, remove guaranteed items option

* Spacing/Formatting (#18)

* Various Fixes (#19)

* Universally Track Yhorm (#20)

* Account for excluded and missable

* These are behaviors now

* This is singular, apparently

* Oops

* Fleshing out the priority process

* Missable Titanite Lizards and excluded locations (#22)

* Small style/efficiency changes

* Final passthrough fixes (#24)

* Use rich option formatting

* Make the behavior option values actual behaviors (#25)

* Use !=

* Remove unused flatten utility

* Some changes from review (#28)

* Fixing determinism and making smooth faster (#29)

* Style change

* PyCharm and Mypy fixes (#26)

Co-authored-by: Scipio Wright <scipiowright@gmail.com>

* Change yhorm default (#30)

* Add indirect condition (#27)

* Update worlds/dark_souls_3/docs/locations_en.md

Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>

* Ship all item IDs to the client

This avoids issues where items might get skipped if, for instance,
they're only in the starting inventory.

* Make sure to send AP IDs for infused/upgraded weapons

* Make `RandomEnemyPresetOption` compatible with ArchipelagoMW/Archipelago#3280 (#31)

* Fix cast

* More typing and small fixes (#32)

---------

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: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
2024-08-09 12:14:26 +02:00
..
_bizhawk BizHawkClient: Reset finished_game if ROM changes (#3246) 2024-06-04 14:06:41 +02:00
_sc2common SC2: don't close all SC2 instances when one quits (#3507) 2024-06-12 02:14:30 +02:00
adventure Various worlds: Fix more absolute world imports (#3510) 2024-06-27 08:51:27 +02:00
ahit AHIT: Generation error fixes and some other bug fixes (#3663) 2024-07-27 19:16:52 +02:00
alttp Core: Rework accessibility (#1481) 2024-07-31 12:13:14 +02:00
apsudoku APSudoku: take over maintaining hintgame sudoku from bk_sudoku (#3432) 2024-06-02 11:45:46 -05:00
aquaria Aquaria: Logic bug fixes (#3679) 2024-08-08 00:19:52 +02:00
archipidle ArchipIDLE 2024 (#3079) 2024-04-12 00:32:10 -04:00
blasphemous Core: Remove Universally Unique ID Requirements (Per-Game Data Packages) (#1933) 2024-06-01 06:07:13 -05:00
bomb_rush_cyberfunk Bomb Rush Cyberfunk: Fix Coil quest being in glitched logic too early (#3720) 2024-07-31 17:32:51 +02:00
bumpstik Core: Remove Universally Unique ID Requirements (Per-Game Data Packages) (#1933) 2024-06-01 06:07:13 -05:00
celeste64 Celeste 64: Option Groups (#3321) 2024-05-21 18:22:39 -04:00
checksfinder ChecksFinder: Refactor/Cleaning (#3725) 2024-08-06 16:39:56 +02:00
clique Core: Remove Universally Unique ID Requirements (Per-Game Data Packages) (#1933) 2024-06-01 06:07:13 -05:00
cv64 Core: Rework accessibility (#1481) 2024-07-31 12:13:14 +02:00
dark_souls_3 DS3: Version 3.0.0 (#3128) 2024-08-09 12:14:26 +02:00
dkc3 Various worlds: Fix more absolute world imports (#3510) 2024-06-27 08:51:27 +02:00
dlcquest DLC Quest: Add options presets to DLC Quest (#3676) 2024-07-24 13:49:28 +02:00
doom_1993 Core: Remove Universally Unique ID Requirements (Per-Game Data Packages) (#1933) 2024-06-01 06:07:13 -05:00
doom_ii Doom 2, Heretic: fix missing items (Doom2 Megasphere, Heretic Torch) (#3561) 2024-06-19 12:59:10 +02:00
factorio Factorio: Fix ap-get-technology nil value crashes (#3517) 2024-07-28 20:57:10 +02:00
ff1 Core: Remove Universally Unique ID Requirements (Per-Game Data Packages) (#1933) 2024-06-01 06:07:13 -05:00
ffmq Docs: Add FFMQ French Setup Guide + Minor fixes to English Guide (#3590) 2024-07-31 17:40:45 +02:00
generic Docs: Missed Full Accessibility mention/conversion #3734 2024-08-06 00:00:33 +02:00
heretic Doom 2, Heretic: fix missing items (Doom2 Megasphere, Heretic Torch) (#3561) 2024-06-19 12:59:10 +02:00
hk HK: add grub hunt goal (#3203) 2024-08-08 20:33:13 +02:00
hylics2 Core: Remove Universally Unique ID Requirements (Per-Game Data Packages) (#1933) 2024-06-01 06:07:13 -05:00
kdl3 CommonClient: Use lookup_in_game instead of lookup_in_slot in case of own-game name lookup when disconnected from server. (#3514) 2024-06-16 05:37:05 -05:00
kh2 KH2: Update the docs to support steam in the setup guide (#3711) 2024-08-07 23:56:22 +02:00
ladx LADX: Add an item group for instruments (#3666) 2024-07-24 14:07:07 +02:00
landstalker Landstalker: Fixed rare generation issues (#3353) 2024-06-01 06:39:57 -05:00
lingo Lingo: Add warpless connection between Hedge Maze and The Incomparable (#3703) 2024-07-28 17:41:57 +02:00
lufia2ac CommonClient: Use lookup_in_game instead of lookup_in_slot in case of own-game name lookup when disconnected from server. (#3514) 2024-06-16 05:37:05 -05:00
meritous Core: Remove Universally Unique ID Requirements (Per-Game Data Packages) (#1933) 2024-06-01 06:07:13 -05:00
messenger Core: Rework accessibility (#1481) 2024-07-31 12:13:14 +02:00
minecraft Core: Rework accessibility (#1481) 2024-07-31 12:13:14 +02:00
mlss MLSS: Fix for missing cutscene trigger 2024-07-05 22:54:35 +02:00
mmbn3 Core: Remove Universally Unique ID Requirements (Per-Game Data Packages) (#1933) 2024-06-01 06:07:13 -05:00
musedash Muse Dash: 6th Anniversary Song update (#3593) 2024-06-30 01:15:13 +02:00
noita Core: Remove Universally Unique ID Requirements (Per-Game Data Packages) (#1933) 2024-06-01 06:07:13 -05:00
oot OOT: Add keys item_name_group (#3218) 2024-06-30 01:19:36 +02:00
osrs OSRS: Implement New Game (#1976) 2024-08-06 23:13:11 +02:00
overcooked2 Various worlds: Fix more absolute world imports (#3510) 2024-06-27 08:51:27 +02:00
pokemon_emerald Docs: Add Swedish Guide for Pokemon Emerald (#3252) 2024-07-25 09:30:23 +02:00
pokemon_rb Pokemon R/B: Removing Floats from NamedRange #3717 2024-08-05 23:40:16 +02:00
raft Raft: Move to new Options API (#3587) 2024-07-15 15:09:02 +02:00
rogue_legacy Various worlds: Fix more absolute world imports (#3510) 2024-06-27 08:51:27 +02:00
ror2 RoR2: Remove recursion from explore mode access rules (#3681) 2024-08-07 23:57:07 +02:00
sa2b Fix Incorrect Link Syntax in SA2B Linux Setup (#3524) 2024-06-13 06:53:01 +02:00
sc2 sc2: Removing unused dependency in requirements.txt (#3697) 2024-07-29 23:09:51 +02:00
shivers Shivers: New features and removes two missed options using the old options API (#3287) 2024-07-31 17:32:17 +02:00
shorthike A Short Hike: Fix Boat Rental purchase being incorrectly calculated (#3639) 2024-07-22 01:47:46 +02:00
sm CommonClient: Use lookup_in_game instead of lookup_in_slot in case of own-game name lookup when disconnected from server. (#3514) 2024-06-16 05:37:05 -05:00
sm64ex Core: Remove Universally Unique ID Requirements (Per-Game Data Packages) (#1933) 2024-06-01 06:07:13 -05:00
smw Various worlds: Fix more absolute world imports (#3510) 2024-06-27 08:51:27 +02:00
smz3 Core: Rework accessibility (#1481) 2024-07-31 12:13:14 +02:00
soe Core: Remove Universally Unique ID Requirements (Per-Game Data Packages) (#1933) 2024-06-01 06:07:13 -05:00
spire Spire: Convert options, clean up random calls, and add DeathLink (#3704) 2024-07-31 18:27:35 +02:00
stardew_valley Options: Always verify keys for VerifyKeys options (#3280) 2024-07-31 17:37:52 +02:00
subnautica Subnautica: Fix deprecated option getting (#3685) 2024-07-24 22:17:43 +02:00
terraria Core: Remove Universally Unique ID Requirements (Per-Game Data Packages) (#1933) 2024-06-01 06:07:13 -05:00
timespinner Timespinner: migrate to new options api and correct random (#2485) 2024-07-31 11:50:04 +02:00
tloz [TLOZ]: Fix determinism / Add Location Name Groups / Remove Level 9 Junk Fill (#3670) 2024-07-24 14:00:16 +02:00
tunic TUNIC: Sort entrances in the spoiler log (#3733) 2024-08-07 18:18:50 +02:00
undertale Undertale: Fixes a major logic bug, and updates Undertale to use the new Options API (#3528) 2024-06-21 18:21:46 +02:00
v6 Core: Remove Universally Unique ID Requirements (Per-Game Data Packages) (#1933) 2024-06-01 06:07:13 -05:00
wargroove Wargroove: Switched to options API. (#3306) 2024-05-16 18:46:13 +02:00
witness The Witness: Small naming inconsistencies (#3618) 2024-07-24 13:13:41 +02:00
yoshisisland Yoshi's Island: Fix client giving victory randomly (#3586) 2024-06-26 13:19:16 +02:00
yugioh06 YGO06: fixes non-deterministic bug by changing sets to lists (#3674) 2024-07-22 01:27:10 +02:00
zillion Zillion: more rooms added to map_gen option (#3634) 2024-07-10 23:11:47 -07:00
zork_grand_inquisitor Zork Grand Inquisitor: Fix Determinism Issues on Fixed Seeds (#3134) 2024-04-18 18:47:27 +02:00
AutoSNIClient.py SNIClient: dynamically generate patch file identifier (#2870) 2024-03-07 10:18:22 +01:00
AutoWorld.py Core: update required_server_version to 0.5.0 (#3580) 2024-06-23 07:50:00 +02:00
Files.py APProcedurePatch: fix RLE/COPY incorrect sizing (#3006) 2024-03-22 09:02:38 +01:00
LauncherComponents.py Core: hot reload components from installed apworld (#3480) 2024-06-06 20:36:14 +02:00
__init__.py WebHost/Core/Lingo: Render option documentation as reStructuredText in the WebView (#3511) 2024-06-14 18:53:42 -04:00