Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DS3: Version 3.0.0 #3128

Merged
merged 262 commits into from
Aug 9, 2024
Merged
Changes from all commits
Commits
Show all changes
262 commits
Select commit Hold shift + click to select a range
6be4ad3
Update worlds/dark_souls_3/Locations.py
nex3 Oct 19, 2023
21c2985
Fix Covetous Silver Serpent Ring location
nex3 Oct 19, 2023
a53dea3
Update location groups
nex3 Oct 24, 2023
2de3b25
Remove the "Guarded by Keys" group
nex3 Oct 24, 2023
4b9f65f
Restore Knight Slayer's Ring classification
nex3 Oct 24, 2023
150b0fe
Support infusions/upgrades in the new DS3 mod system
nex3 Oct 23, 2023
df0d254
Support random starting loadouts
nex3 Oct 23, 2023
a7d3358
Make an item's NPC status orthogonal to its category
nex3 Oct 23, 2023
129beb3
Track location groups with flags
nex3 Oct 24, 2023
653bbaf
Track Archipelago/Offline mismatches on the server
nex3 Oct 25, 2023
3f9ba46
Add additional locations that are now randomizable
nex3 Oct 25, 2023
0bc5cd2
Don't put soul and multiple items in shops
nex3 Oct 28, 2023
5363316
Add an option to enable whether NG+ items/locations are included
nex3 Oct 28, 2023
055619f
Clean up useful item categorization
nex3 Oct 28, 2023
af4fa8b
Add more variety to filler items
nex3 Oct 28, 2023
1039d7b
Iron out a few bugs and incompatibilities
nex3 Oct 29, 2023
6774be8
Fix more silly bugs
nex3 Oct 29, 2023
288526a
Get tests passing
nex3 Oct 29, 2023
834854f
Update options to cover new item types
nex3 Oct 29, 2023
2e89c2b
Verify the default values of `Option`s.
nex3 Oct 30, 2023
0969489
Merge branch 'option-verify-default' into ds3-full-rando
nex3 Oct 30, 2023
14f56ab
Make a few more improvements and fixes
nex3 Oct 30, 2023
4c21a89
Randomize Path of the Dragon
nex3 Oct 30, 2023
5b90763
Mark items that unlock checks as useful
nex3 Oct 31, 2023
e08ac9e
Guarantee more NPC quests are completable
nex3 Oct 31, 2023
8513de4
Fix a syntax error
nex3 Oct 31, 2023
bad85bf
Fix rule definition
nex3 Oct 31, 2023
a86d3f3
Support enemy randomization
nex3 Nov 1, 2023
a3a9c5e
Support online Yhorm randomization
nex3 Nov 1, 2023
a6e49f7
Remove a completed TODO
nex3 Nov 1, 2023
a74500c
Fix tests
nex3 Nov 1, 2023
aef06e9
Fix force_unique
nex3 Nov 1, 2023
7d1eb2c
Add an option to smooth out upgrade item progression
nex3 Nov 2, 2023
2165a23
Add helpers for setting location/entrance rules
nex3 Nov 2, 2023
3509530
Support smoother soul item progression
nex3 Nov 2, 2023
edb90fa
Fill extra smoothing items into conditional locations as well as othe…
nex3 Nov 2, 2023
52f7a4b
Add health item smoothing
nex3 Nov 2, 2023
1b988da
Handle infusions at item generation time
nex3 Nov 3, 2023
c3f9d3b
Handle item upgrades at genreation time
nex3 Nov 3, 2023
9a22cf0
Fix Grave Warden's Ashes
nex3 Nov 3, 2023
aba1288
Don't overwrite old rules
nex3 Nov 3, 2023
2aed022
Randomize items based on spheres instead of DS3 locations
nex3 Nov 3, 2023
b343539
Add a smoothing option for weapon upgrades
nex3 Nov 3, 2023
dfe3eae
Add rules for crow trades
nex3 Nov 3, 2023
0eb6728
Small fixes
nex3 Nov 3, 2023
00b1c3c
Merge branch 'ds3-full-rando' of https://github.com/nex3/Archipelago …
nex3 Nov 3, 2023
588872b
Fix a few more bugs
nex3 Nov 3, 2023
3ee41c8
Fix more bugs
nex3 Nov 3, 2023
e32c752
Try to prevent Path of the Dragon from going somewhere it doesn't work
nex3 Nov 3, 2023
a95eaf0
Add the ability to provide enemy presets
nex3 Nov 4, 2023
17ef3ac
Various fixes and features
nex3 Nov 5, 2023
06abc80
Bug fixes
nex3 Nov 5, 2023
9096975
Better Coiled Sword placement
nex3 Nov 5, 2023
9c08a38
Structure DarkSouls3Location more like DarkSouls3Item
nex3 Nov 5, 2023
1bca413
Add events to make DS3's spheres more even
nex3 Nov 5, 2023
0553fbe
Restructure locations to work like items do now
nex3 Nov 10, 2023
9333537
Add rules for more missable locations
nex3 Nov 10, 2023
c7d9d6c
Don't add two Storm Rulers
nex3 Nov 10, 2023
b44f574
Place Hawk Ring in Farron Keep
nex3 Nov 10, 2023
d761614
Mark the Grass Crest Shield as useful
nex3 Nov 10, 2023
0e2623f
Mark new progression items
nex3 Nov 10, 2023
2870656
Fix a bug
nex3 Nov 10, 2023
b7e9485
Support newer better Path of the Dragon code
nex3 Nov 13, 2023
c4a9b13
Don't lock the player out of Coiled Sword
nex3 Nov 29, 2023
0be59de
Don't create events for missable locations
nex3 Nov 30, 2023
7b2dff8
Don't throw strings
nex3 Nov 30, 2023
f8067ed
Don't smooth event items
nex3 Nov 30, 2023
b216c2f
Properly categorize Butcher Knife
nex3 Nov 30, 2023
e466b35
Be more careful about placing Yhorm in low-randomization scenarios
nex3 Nov 30, 2023
eb21802
Don't try to smooth DLC items with DLC disabled
nex3 Nov 30, 2023
aa94ec4
Fix another Yhorm bug
nex3 Nov 30, 2023
b0e8c9d
Fix upgrade/infusion logic
nex3 Nov 30, 2023
ac88c50
Remove the PoolType option
nex3 Nov 30, 2023
1157129
Categorize HWL: Red Eye Orb as an NPC location
nex3 Nov 30, 2023
5b0cff9
Merge branch 'main' of https://github.com/ArchipelagoMW/Archipelago i…
nex3 Nov 30, 2023
502cf19
Don't place Storm Ruler on CA: Coiled Sword
nex3 Nov 30, 2023
cdd8b48
Define flatten() locally to make this APWorld capable
nex3 Nov 30, 2023
9aa635a
Fix some more Leonhard weirdness
nex3 Nov 30, 2023
3604137
Fix unique item randomization
nex3 Dec 1, 2023
825c449
Don't double Twin Dragon Greatshield
nex3 Dec 1, 2023
d4d5d07
Remove debugging print
nex3 Dec 2, 2023
1abf6f3
Don't add double Storm Ruler
nex3 Dec 3, 2023
54d8d5c
Don't add double Storm Ruler
nex3 Dec 3, 2023
98018b6
Add a missing dlc_enabled check
nex3 Dec 3, 2023
55b0170
Use nicer options syntax
nex3 Dec 3, 2023
69daec4
Bump data_version
nex3 Dec 3, 2023
904a58d
Mention where Yhorm is in which world
nex3 Dec 3, 2023
9bb38a9
Better handle excluded events
nex3 Dec 3, 2023
f088082
Add a newline to Yhorm location
nex3 Dec 3, 2023
c29f651
Better way of handling excluded unradomized progression locations
nex3 Dec 3, 2023
5b33e79
Fix a squidge of nondeterminism
nex3 Dec 3, 2023
5dd3934
Only smooth items from this world
nex3 Dec 3, 2023
417181f
Don't smooth progression weapons
nex3 Dec 3, 2023
a9622a5
Remove a location that doesn't actually exist in-game
nex3 Dec 5, 2023
2d0c899
Classify Power Within as useful
nex3 Dec 5, 2023
fe75133
Clarify location names
nex3 Dec 1, 2023
68c7669
Merge remote-tracking branch 'origin/main' into ds3-full-rando
nex3 Dec 30, 2023
c11ca5c
Fix location requirements
nex3 Dec 30, 2023
edf476c
Clean up randomization options
nex3 Dec 30, 2023
8786768
Properly name Coiled Sword location
nex3 Dec 30, 2023
3ec651a
Add an option for configuring how missable items are handled
nex3 Dec 30, 2023
e5b369c
Merge branch 'ds3-full-rando' of https://github.com/nex3/Archipelago …
nex3 Jan 4, 2024
e1dbc8a
Merge branch 'ds3-full-rando' of https://github.com/nex3/Archipelago …
nex3 Jan 4, 2024
362d95b
Fix some bugs from location name updates
nex3 Jan 4, 2024
56833ed
Fix location guide link
nex3 Jan 4, 2024
7a6639c
Fix a couple locations that were busted offline
nex3 Jan 4, 2024
3d3fcfa
Update detailed location descriptions
nex3 Jan 4, 2024
529bcf6
Merge tag '0.4.4' into ds3-full-rando
nex3 Jan 5, 2024
d4b108d
Fix some bugs when generating for a multiworld
nex3 Jan 5, 2024
13ffa15
Inject Large Leather Shield
nex3 Jan 5, 2024
818ace2
Fix a few location issues
nex3 Jan 5, 2024
f878803
Don't allow progression_skip_balancing for unnecessary locs
nex3 Jan 7, 2024
a447251
Update some location info
nex3 Jan 9, 2024
ceb92a6
Don't uniquify the wrong items
nex3 Jan 9, 2024
f415dc8
Fix some more location issues
nex3 Jan 9, 2024
2bf1a68
More location fixes
nex3 Jan 9, 2024
a0976eb
Use hyphens instead of parens for location descriptions
nex3 Jan 9, 2024
7ed270e
Update and fix more locations
nex3 Jan 10, 2024
7155948
Fix Soul of Cinder boss name
nex3 Jan 18, 2024
1cf5265
Fix some logic issues
nex3 Jan 20, 2024
c87cb9b
Add item groups and document item/location groups
nex3 Jan 20, 2024
06c85c0
Fix the display name for "Impatient Mimics"
nex3 Jan 22, 2024
fd18079
Properly handle Transposing Kiln and Pyromancer's Flame
nex3 Jan 23, 2024
f9ac6ed
Testing
Exempt-Medic Feb 22, 2024
2d9b282
Some fixes to NPC quests, late basin, and transposing kiln
Exempt-Medic Feb 22, 2024
1790975
Improve a couple location names
nex3 Feb 26, 2024
f918a47
Split out and improve missable NPC item logic
nex3 Feb 26, 2024
c03c81e
Don't allow crow trades to have foreign items
nex3 Feb 26, 2024
3efee40
Fix a variable capture bug
nex3 Feb 26, 2024
991a62f
Make sure early items are accessible early even with early Castle
nex3 Feb 26, 2024
d6c68fc
Mark ID giant slave drops as missable
nex3 Mar 3, 2024
4f6094b
Make sure late basin means that early items aren't behind it
nex3 Mar 3, 2024
420a042
Make is_location_available explicitly private
nex3 Mar 3, 2024
84433da
Add an _add_item_rule utility that checks availability
nex3 Mar 3, 2024
ef4a792
Clear excluded items if excluded_locations == "unnecessary"
nex3 Mar 3, 2024
df06596
Don't allow upgrades/infusions in crow trades
nex3 Mar 4, 2024
418f34a
Fix the documentation for deprecated options
nex3 Mar 4, 2024
4a676e0
Create events for all excluded locations
nex3 Mar 4, 2024
1024c3a
Fix up Patches' and Siegward's logic based on some manual testing
nex3 Mar 4, 2024
aa13326
Factor out more sub-methods for setting location rules
nex3 Mar 4, 2024
8f517d2
Merge branch 'ds3-full-rando' into patch-34
Exempt-Medic Mar 4, 2024
21b171f
Oops, left these in
Exempt-Medic Mar 4, 2024
2177c6e
Fixing name
Exempt-Medic Mar 4, 2024
cef7a49
Left that in too
Exempt-Medic Mar 4, 2024
d881f43
Changing to NamedRange to support special_range_names
Exempt-Medic Mar 4, 2024
781acc5
Alphabetizing
Exempt-Medic Mar 4, 2024
da723d8
Merge pull request #1 from Exempt-Medic/patch-34
nex3 Mar 6, 2024
3010b79
Don't call _is_location_available on foreign locations
nex3 Mar 6, 2024
24f7c68
Add missing Leonhard items
nex3 Mar 6, 2024
a7fb284
Changing late basin to have a post-small-doll option
Exempt-Medic Mar 11, 2024
2935f86
Update basin option, add logic for some of Leonhard Hawkwood and Orbeck
Exempt-Medic Mar 11, 2024
88ac89b
Simplifying an option, fixing a copy-paste error
Exempt-Medic Mar 11, 2024
ca213e6
Removing trailing whitespace
Exempt-Medic Mar 11, 2024
2d83b14
Changing lost items to go into start inventory
Exempt-Medic Mar 16, 2024
3900c2e
Revert Basin changes
Exempt-Medic Mar 16, 2024
ed9b5b4
Oops
Exempt-Medic Mar 16, 2024
40d3174
Update Options.py
Exempt-Medic Mar 16, 2024
d0bb26a
Reverting small doll changes
Exempt-Medic Mar 16, 2024
faab4e3
Farron Keep boss requirement logic
Exempt-Medic Mar 17, 2024
36726f3
Add Scroll for late_dlc
Exempt-Medic Mar 18, 2024
8a5bb24
Fixing excluded unnecessary locations
Exempt-Medic Mar 19, 2024
13bde30
Adding Priestess Ring as being after UG boss
Exempt-Medic Mar 19, 2024
2f9f6af
Removing missable from Corvian Titanite Slab
Exempt-Medic Mar 19, 2024
abce3c4
Adding KFF Yhorm boss locks
Exempt-Medic Mar 20, 2024
015b993
Screams about Creighton
Exempt-Medic Mar 20, 2024
e39813d
Elite Knight Set isn't permanently missable
Exempt-Medic Mar 21, 2024
460ebbc
Adding Kiln requirement to KFF
Exempt-Medic Mar 21, 2024
2db5991
fixing valid_keys and item groups
Exempt-Medic Mar 21, 2024
64257fd
Fixing an option-checker
Exempt-Medic Mar 22, 2024
5175934
Throwing unplaceable Storm Ruler into start inventory
Exempt-Medic Mar 22, 2024
b0fff00
Update locations
nex3 Mar 26, 2024
2a5c08c
Tweaks and adjustments
nex3 Mar 26, 2024
ce0ac32
Merge branch 'ds3-full-rando' into ds3-excess-prog-items
nex3 Mar 26, 2024
aca2dbe
Refactor item injection
nex3 Mar 26, 2024
93ef22f
Update setup doc
nex3 Mar 26, 2024
6bd5107
Small fixes
Exempt-Medic Mar 26, 2024
207fe45
Fix another location name
nex3 Mar 30, 2024
d1b1a7c
Fix injection calculation
nex3 Mar 30, 2024
35c32b2
Inject guaranteed items along with progression items
nex3 Mar 30, 2024
23deb3f
Mark boss souls as required for access to regions
nex3 Mar 30, 2024
0528713
Make sure Sirris's quest can be completed before Pontiff
nex3 Mar 30, 2024
3f3a81b
Merge branch 'ds3-full-rando' into patch-34
Exempt-Medic Mar 31, 2024
9c28ef7
Removing unused list
Exempt-Medic Mar 31, 2024
356b9eb
Changing dict to list
Exempt-Medic Mar 31, 2024
57537dd
Removing unused test
Exempt-Medic Mar 31, 2024
4094159
Update __init__.py
Exempt-Medic Apr 1, 2024
0cc83f1
Merge pull request #8 from Exempt-Medic/patch-34
nex3 Apr 3, 2024
7261d9a
self.multiworld.random -> self.random (#9)
Exempt-Medic Apr 3, 2024
f246c69
Fix some miscellaneous location issues
nex3 Apr 2, 2024
3c4a237
Rewrite the DS3 intro page/FAQ
nex3 Apr 3, 2024
980daff
Removing modifying the itempool after fill (#7)
Exempt-Medic Apr 3, 2024
5bb391b
Small fixes to the setup guide (#10)
Exempt-Medic Apr 3, 2024
6c79f7d
Expanded Late Basin of Vows and Late DLC (#6)
Exempt-Medic Apr 3, 2024
9131e91
Add proper requirements for CD: Black Eye Orb
nex3 Apr 3, 2024
15d73a9
Merge branch 'main' of https://github.com/ArchipelagoMW/Archipelago i…
nex3 Apr 3, 2024
7a1ac5f
Fix Aldrich's name
nex3 Apr 8, 2024
153c46a
Document the differences with the 2.x.x branch
nex3 Apr 11, 2024
a36d915
Merge branch 'main' of https://github.com/ArchipelagoMW/Archipelago i…
nex3 Apr 11, 2024
d3ba319
Don't crash if there are more items than locations in smoothing
nex3 Apr 12, 2024
2d15ccd
Apply suggestions from code review
nex3 Apr 13, 2024
44cd572
Code review
nex3 Apr 13, 2024
1913aba
Fix _replace_with_filler
nex3 Apr 13, 2024
c5ce224
Don't use the shared flatten function in SM
nex3 Apr 13, 2024
947d18c
Track local items separately rather than iterating the multiworld
nex3 Apr 17, 2024
7d1d9b3
Various formatting/docs changes suggested by PyCharm (#12)
Exempt-Medic Apr 22, 2024
e5a1cdb
Merge branch 'main' into ds3-full-rando
nex3 Apr 29, 2024
bf17d82
Drop deprecated options
nex3 Apr 29, 2024
e4b4daa
Rename "offline randomizer" to "static randomizer" which is clearer
nex3 Apr 29, 2024
e14dd5e
Move `enable_*_locations` under removed options.
nex3 Apr 29, 2024
bf0cd05
Avoid excluded locations for locally-filled items
nex3 Apr 29, 2024
079f992
Adding Removed options to error (#14)
Exempt-Medic May 11, 2024
9596bea
Merge branch 'main' into ds3-full-rando
nex3 May 11, 2024
a69a6b0
Merge remote-tracking branch 'origin/main' into ds3-full-rando
nex3 Jun 10, 2024
9daed63
Changes for WebHost options display and the options overhaul
Exempt-Medic Jun 10, 2024
a61f3a8
unpack iterators in item list (#13)
beauxq Jun 10, 2024
ac1d2ea
Allow worlds to add options to prebuilt groups
nex3 Jun 10, 2024
d50f334
Style changes, rename exclude behavior options, remove guaranteed ite…
nex3 Jun 11, 2024
104c529
Merge branch 'ds3-options' into ds3-full-rando
nex3 Jun 11, 2024
67f1335
Spacing/Formatting (#18)
Exempt-Medic Jun 11, 2024
d506136
Various Fixes (#19)
Exempt-Medic Jun 11, 2024
9e7cd1f
Universally Track Yhorm (#20)
Exempt-Medic Jun 11, 2024
0e07c37
Account for excluded and missable
Exempt-Medic Jun 19, 2024
8c3ca69
These are behaviors now
Exempt-Medic Jun 19, 2024
434580a
This is singular, apparently
Exempt-Medic Jun 19, 2024
130fe26
Oops
Exempt-Medic Jun 19, 2024
71fdc65
Fleshing out the priority process
Exempt-Medic Jun 19, 2024
20de5a4
Missable Titanite Lizards and excluded locations (#22)
Exempt-Medic Jul 6, 2024
6ed17b8
Small style/efficiency changes
nex3 Jul 6, 2024
18d4b47
Merge branch 'ds3-full-rando' of github.com:nex3/Archipelago into ds3…
nex3 Jul 6, 2024
a131bc1
Final passthrough fixes (#24)
Exempt-Medic Jul 6, 2024
8e93798
Merge tag '0.5.0' into ds3-full-rando
nex3 Jul 6, 2024
dacd4fd
Use rich option formatting
nex3 Jul 6, 2024
d2ee8d2
Merge branch 'ds3-full-rando' of github.com:nex3/Archipelago into ds3…
nex3 Jul 6, 2024
763fd0e
Make the behavior option values actual behaviors (#25)
nex3 Jul 8, 2024
5311cb1
Use !=
nex3 Jul 20, 2024
4f96496
Remove unused flatten utility
nex3 Jul 20, 2024
7e0c09f
Some changes from review (#28)
Exempt-Medic Jul 27, 2024
3650679
Fixing determinism and making smooth faster (#29)
Exempt-Medic Jul 27, 2024
2417b50
Style change
nex3 Jul 27, 2024
99ae362
PyCharm and Mypy fixes (#26)
Exempt-Medic Jul 27, 2024
a438bf7
Change yhorm default (#30)
Exempt-Medic Jul 27, 2024
e4d2b65
Add indirect condition (#27)
Exempt-Medic Jul 27, 2024
94682ff
Update worlds/dark_souls_3/docs/locations_en.md
nex3 Jul 29, 2024
4601402
Ship all item IDs to the client
nex3 Jul 29, 2024
a58a6c5
Merge branch 'main' into ds3-full-rando
NewSoupVi Jul 29, 2024
a3881e9
Merge branch 'main' of https://github.com/ArchipelagoMW/Archipelago i…
nex3 Aug 6, 2024
3776c35
Make sure to send AP IDs for infused/upgraded weapons
nex3 Aug 6, 2024
5374f51
Make `RandomEnemyPresetOption` compatible with ArchipelagoMW/Archipel…
nex3 Aug 6, 2024
27d4c41
Fix cast
nex3 Aug 6, 2024
443a285
More typing and small fixes (#32)
Exempt-Medic Aug 8, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
264 changes: 264 additions & 0 deletions worlds/dark_souls_3/Bosses.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,264 @@
# In almost all cases, we leave boss and enemy randomization up to the static randomizer. But for
# Yhorm specifically we need to know where he ends up in order to ensure that the Storm Ruler is
# available before his fight.

from dataclasses import dataclass, field
from typing import Set


@dataclass
class DS3BossInfo:
"""The set of locations a given boss location blocks access to."""

name: str
"""The boss's name."""

id: int
"""The game's ID for this particular boss."""

dlc: bool = False
"""This boss appears in one of the game's DLCs."""

before_storm_ruler: bool = False
"""Whether this location appears before it's possible to get Storm Ruler in vanilla.

This is used to determine whether it's safe to place Yhorm here if weapons
aren't randomized.
"""

locations: Set[str] = field(default_factory=set)
"""Additional individual locations that can't be accessed until the boss is dead."""


# Note: the static randomizer splits up some bosses into separate fights for separate phases, each
# of which can be individually replaced by Yhorm.
all_bosses = [
DS3BossInfo("Iudex Gundyr", 4000800, before_storm_ruler = True, locations = {
"CA: Coiled Sword - boss drop"
}),
DS3BossInfo("Vordt of the Boreal Valley", 3000800, before_storm_ruler = True, locations = {
"HWL: Soul of Boreal Valley Vordt"
}),
DS3BossInfo("Curse-rotted Greatwood", 3100800, locations = {
"US: Soul of the Rotted Greatwood",
"US: Transposing Kiln - boss drop",
"US: Wargod Wooden Shield - Pit of Hollows",
"FS: Hawkwood's Shield - gravestone after Hawkwood leaves",
"FS: Sunset Shield - by grave after killing Hodrick w/Sirris",
"US: Sunset Helm - Pit of Hollows after killing Hodrick w/Sirris",
"US: Sunset Armor - pit of hollows after killing Hodrick w/Sirris",
"US: Sunset Gauntlets - pit of hollows after killing Hodrick w/Sirris",
"US: Sunset Leggings - pit of hollows after killing Hodrick w/Sirris",
"FS: Sunless Talisman - Sirris, kill GA boss",
"FS: Sunless Veil - shop, Sirris quest, kill GA boss",
"FS: Sunless Armor - shop, Sirris quest, kill GA boss",
"FS: Sunless Gauntlets - shop, Sirris quest, kill GA boss",
"FS: Sunless Leggings - shop, Sirris quest, kill GA boss",
}),
DS3BossInfo("Crystal Sage", 3300850, locations = {
"RS: Soul of a Crystal Sage",
"FS: Sage's Big Hat - shop after killing RS boss",
"FS: Hawkwood's Shield - gravestone after Hawkwood leaves",
}),
DS3BossInfo("Deacons of the Deep", 3500800, locations = {
"CD: Soul of the Deacons of the Deep",
"CD: Small Doll - boss drop",
"FS: Hawkwood's Shield - gravestone after Hawkwood leaves",
}),
DS3BossInfo("Abyss Watchers", 3300801, before_storm_ruler = True, locations = {
"FK: Soul of the Blood of the Wolf",
"FK: Cinders of a Lord - Abyss Watcher",
"FS: Undead Legion Helm - shop after killing FK boss",
"FS: Undead Legion Armor - shop after killing FK boss",
"FS: Undead Legion Gauntlet - shop after killing FK boss",
"FS: Undead Legion Leggings - shop after killing FK boss",
"FS: Farron Ring - Hawkwood",
"FS: Hawkwood's Shield - gravestone after Hawkwood leaves",
}),
DS3BossInfo("High Lord Wolnir", 3800800, before_storm_ruler = True, locations = {
"CC: Soul of High Lord Wolnir",
"FS: Wolnir's Crown - shop after killing CC boss",
"CC: Homeward Bone - Irithyll bridge",
"CC: Pontiff's Right Eye - Irithyll bridge, miniboss drop",
}),
DS3BossInfo("Pontiff Sulyvahn", 3700850, locations = {
"IBV: Soul of Pontiff Sulyvahn",
}),
DS3BossInfo("Old Demon King", 3800830, locations = {
"SL: Soul of the Old Demon King",
}),
DS3BossInfo("Aldrich, Devourer of Gods", 3700800, locations = {
"AL: Soul of Aldrich",
"AL: Cinders of a Lord - Aldrich",
"FS: Smough's Helm - shop after killing AL boss",
"FS: Smough's Armor - shop after killing AL boss",
"FS: Smough's Gauntlets - shop after killing AL boss",
"FS: Smough's Leggings - shop after killing AL boss",
"AL: Sun Princess Ring - dark cathedral, after boss",
"FS: Leonhard's Garb - shop after killing Leonhard",
"FS: Leonhard's Gauntlets - shop after killing Leonhard",
"FS: Leonhard's Trousers - shop after killing Leonhard",
}),
DS3BossInfo("Dancer of the Boreal Valley", 3000899, locations = {
"HWL: Soul of the Dancer",
"FS: Dancer's Crown - shop after killing LC entry boss",
"FS: Dancer's Armor - shop after killing LC entry boss",
"FS: Dancer's Gauntlets - shop after killing LC entry boss",
"FS: Dancer's Leggings - shop after killing LC entry boss",
}),
DS3BossInfo("Dragonslayer Armour", 3010800, locations = {
"LC: Soul of Dragonslayer Armour",
"FS: Morne's Helm - shop after killing Eygon or LC boss",
"FS: Morne's Armor - shop after killing Eygon or LC boss",
"FS: Morne's Gauntlets - shop after killing Eygon or LC boss",
"FS: Morne's Leggings - shop after killing Eygon or LC boss",
"LC: Titanite Chunk - down stairs after boss",
}),
DS3BossInfo("Consumed King Oceiros", 3000830, locations = {
"CKG: Soul of Consumed Oceiros",
"CKG: Titanite Scale - tomb, chest #1",
"CKG: Titanite Scale - tomb, chest #2",
"CKG: Drakeblood Helm - tomb, after killing AP mausoleum NPC",
"CKG: Drakeblood Armor - tomb, after killing AP mausoleum NPC",
"CKG: Drakeblood Gauntlets - tomb, after killing AP mausoleum NPC",
"CKG: Drakeblood Leggings - tomb, after killing AP mausoleum NPC",
}),
DS3BossInfo("Champion Gundyr", 4000830, locations = {
"UG: Soul of Champion Gundyr",
"FS: Gundyr's Helm - shop after killing UG boss",
"FS: Gundyr's Armor - shop after killing UG boss",
"FS: Gundyr's Gauntlets - shop after killing UG boss",
"FS: Gundyr's Leggings - shop after killing UG boss",
"UG: Hornet Ring - environs, right of main path after killing FK boss",
"UG: Chaos Blade - environs, left of shrine",
"UG: Blacksmith Hammer - shrine, Andre's room",
"UG: Eyes of a Fire Keeper - shrine, Irina's room",
"UG: Coiled Sword Fragment - shrine, dead bonfire",
"UG: Soul of a Crestfallen Knight - environs, above shrine entrance",
"UG: Life Ring+3 - shrine, behind big throne",
"UG: Ring of Steel Protection+1 - environs, behind bell tower",
"FS: Ring of Sacrifice - Yuria shop",
"UG: Ember - shop",
"UG: Priestess Ring - shop",
"UG: Wolf Knight Helm - shop after killing FK boss",
"UG: Wolf Knight Armor - shop after killing FK boss",
"UG: Wolf Knight Gauntlets - shop after killing FK boss",
"UG: Wolf Knight Leggings - shop after killing FK boss",
}),
DS3BossInfo("Ancient Wyvern", 3200800),
DS3BossInfo("King of the Storm", 3200850, locations = {
"AP: Soul of the Nameless King",
"FS: Golden Crown - shop after killing AP boss",
"FS: Dragonscale Armor - shop after killing AP boss",
"FS: Golden Bracelets - shop after killing AP boss",
"FS: Dragonscale Waistcloth - shop after killing AP boss",
"AP: Titanite Slab - plaza",
"AP: Covetous Gold Serpent Ring+2 - plaza",
"AP: Dragonslayer Helm - plaza",
"AP: Dragonslayer Armor - plaza",
"AP: Dragonslayer Gauntlets - plaza",
"AP: Dragonslayer Leggings - plaza",
}),
DS3BossInfo("Nameless King", 3200851, locations = {
"AP: Soul of the Nameless King",
"FS: Golden Crown - shop after killing AP boss",
"FS: Dragonscale Armor - shop after killing AP boss",
"FS: Golden Bracelets - shop after killing AP boss",
"FS: Dragonscale Waistcloth - shop after killing AP boss",
"AP: Titanite Slab - plaza",
"AP: Covetous Gold Serpent Ring+2 - plaza",
"AP: Dragonslayer Helm - plaza",
"AP: Dragonslayer Armor - plaza",
"AP: Dragonslayer Gauntlets - plaza",
"AP: Dragonslayer Leggings - plaza",
}),
DS3BossInfo("Lothric, Younger Prince", 3410830, locations = {
"GA: Soul of the Twin Princes",
"GA: Cinders of a Lord - Lothric Prince",
}),
DS3BossInfo("Lorian, Elder Prince", 3410832, locations = {
"GA: Soul of the Twin Princes",
"GA: Cinders of a Lord - Lothric Prince",
"FS: Lorian's Helm - shop after killing GA boss",
"FS: Lorian's Armor - shop after killing GA boss",
"FS: Lorian's Gauntlets - shop after killing GA boss",
"FS: Lorian's Leggings - shop after killing GA boss",
}),
DS3BossInfo("Champion's Gravetender and Gravetender Greatwolf", 4500860, dlc = True,
locations = {"PW1: Valorheart - boss drop"}),
DS3BossInfo("Sister Friede", 4500801, dlc = True, locations = {
"PW2: Soul of Sister Friede",
"PW2: Titanite Slab - boss drop",
"PW1: Titanite Slab - Corvian",
"FS: Ordained Hood - shop after killing PW2 boss",
"FS: Ordained Dress - shop after killing PW2 boss",
"FS: Ordained Trousers - shop after killing PW2 boss",
}),
DS3BossInfo("Blackflame Friede", 4500800, dlc = True, locations = {
"PW2: Soul of Sister Friede",
"PW1: Titanite Slab - Corvian",
"FS: Ordained Hood - shop after killing PW2 boss",
"FS: Ordained Dress - shop after killing PW2 boss",
"FS: Ordained Trousers - shop after killing PW2 boss",
}),
DS3BossInfo("Demon Prince", 5000801, dlc = True, locations = {
"DH: Soul of the Demon Prince",
"DH: Small Envoy Banner - boss drop",
}),
DS3BossInfo("Halflight, Spear of the Church", 5100800, dlc = True, locations = {
"RC: Titanite Slab - mid boss drop",
"RC: Titanite Slab - ashes, NPC drop",
"RC: Titanite Slab - ashes, mob drop",
"RC: Filianore's Spear Ornament - mid boss drop",
"RC: Crucifix of the Mad King - ashes, NPC drop",
"RC: Shira's Crown - Shira's room after killing ashes NPC",
"RC: Shira's Armor - Shira's room after killing ashes NPC",
"RC: Shira's Gloves - Shira's room after killing ashes NPC",
"RC: Shira's Trousers - Shira's room after killing ashes NPC",
}),
DS3BossInfo("Darkeater Midir", 5100850, dlc = True, locations = {
"RC: Soul of Darkeater Midir",
"RC: Spears of the Church - hidden boss drop",
}),
DS3BossInfo("Slave Knight Gael 1", 5110801, dlc = True, locations = {
"RC: Soul of Slave Knight Gael",
"RC: Blood of the Dark Soul - end boss drop",
# These are accessible before you trigger the boss, but once you do you
# have to beat it before getting them.
"RC: Titanite Slab - ashes, mob drop",
"RC: Titanite Slab - ashes, NPC drop",
"RC: Sacred Chime of Filianore - ashes, NPC drop",
"RC: Crucifix of the Mad King - ashes, NPC drop",
"RC: Shira's Crown - Shira's room after killing ashes NPC",
"RC: Shira's Armor - Shira's room after killing ashes NPC",
"RC: Shira's Gloves - Shira's room after killing ashes NPC",
"RC: Shira's Trousers - Shira's room after killing ashes NPC",
}),
DS3BossInfo("Slave Knight Gael 2", 5110800, dlc = True, locations = {
"RC: Soul of Slave Knight Gael",
"RC: Blood of the Dark Soul - end boss drop",
# These are accessible before you trigger the boss, but once you do you
# have to beat it before getting them.
"RC: Titanite Slab - ashes, mob drop",
"RC: Titanite Slab - ashes, NPC drop",
"RC: Sacred Chime of Filianore - ashes, NPC drop",
"RC: Crucifix of the Mad King - ashes, NPC drop",
"RC: Shira's Crown - Shira's room after killing ashes NPC",
"RC: Shira's Armor - Shira's room after killing ashes NPC",
"RC: Shira's Gloves - Shira's room after killing ashes NPC",
"RC: Shira's Trousers - Shira's room after killing ashes NPC",
}),
DS3BossInfo("Lords of Cinder", 4100800, locations = {
"KFF: Soul of the Lords",
"FS: Billed Mask - Yuria after killing KFF boss",
"FS: Black Dress - Yuria after killing KFF boss",
"FS: Black Gauntlets - Yuria after killing KFF boss",
"FS: Black Leggings - Yuria after killing KFF boss"
}),
]

default_yhorm_location = DS3BossInfo("Yhorm the Giant", 3900800, locations = {
"PC: Soul of Yhorm the Giant",
"PC: Cinders of a Lord - Yhorm the Giant",
"PC: Siegbräu - Siegward after killing boss",
})
Loading