From 1ca2a90bbb2dcbb634130902f1662d210eddeb28 Mon Sep 17 00:00:00 2001 From: Zunawe Date: Mon, 17 Jul 2023 10:01:05 -0700 Subject: [PATCH 1/2] DS3: Add path of the dragon event --- worlds/dark_souls_3/Locations.py | 1 + worlds/dark_souls_3/__init__.py | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/worlds/dark_souls_3/Locations.py b/worlds/dark_souls_3/Locations.py index 53a39f51a6da..d6bbdac8a965 100644 --- a/worlds/dark_souls_3/Locations.py +++ b/worlds/dark_souls_3/Locations.py @@ -16,6 +16,7 @@ class DS3LocationCategory(IntEnum): MISC = 8 HEALTH = 9 PROGRESSIVE_ITEM = 10 + EVENT = 11 class DS3LocationData(NamedTuple): diff --git a/worlds/dark_souls_3/__init__.py b/worlds/dark_souls_3/__init__.py index 1f6a7a484b2b..e49370890738 100644 --- a/worlds/dark_souls_3/__init__.py +++ b/worlds/dark_souls_3/__init__.py @@ -100,7 +100,7 @@ def create_regions(self): progressive_location_table += location_tables["Progressive Items DLC"] # Create Vanilla Regions - regions = {} + regions: Dict[str, Region] = {} regions["Menu"] = self.create_region("Menu", progressive_location_table) regions.update({region_name: self.create_region(region_name, location_tables[region_name]) for region_name in [ "Firelink Shrine", @@ -124,6 +124,11 @@ def create_regions(self): "Kiln of the First Flame", ]}) + # Adds Path of the Dragon as an event item for Archdragon Peak access + potd_location = DarkSouls3Location(self.player, "CKG: Path of the Dragon", DS3LocationCategory.EVENT, "Path of the Dragon", None, regions["Consumed King's Garden"]) + potd_location.place_locked_item(Item("Path of the Dragon", ItemClassification.progression, None, self.player)) + regions["Consumed King's Garden"].locations.append(potd_location) + # Create DLC Regions if self.multiworld.enable_dlc[self.player]: regions.update({region_name: self.create_region(region_name, location_tables[region_name]) for region_name in [ @@ -354,7 +359,7 @@ def set_rules(self) -> None: set_rule(self.multiworld.get_entrance("Go To Irithyll of the Boreal Valley", self.player), lambda state: state.has("Small Doll", self.player)) set_rule(self.multiworld.get_entrance("Go To Archdragon Peak", self.player), - lambda state: state.can_reach("Go To Untended Graves", "Entrance", self.player)) + lambda state: state.has("Path of the Dragon", self.player)) set_rule(self.multiworld.get_entrance("Go To Grand Archives", self.player), lambda state: state.has("Grand Archives Key", self.player)) set_rule(self.multiworld.get_entrance("Go To Kiln of the First Flame", self.player), From 2ef187c9fbc79528296377c1971c97d8eed8aedb Mon Sep 17 00:00:00 2001 From: Zunawe Date: Mon, 17 Jul 2023 10:04:26 -0700 Subject: [PATCH 2/2] DS3: Move late dlc small doll requirement to first dlc area --- worlds/dark_souls_3/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/worlds/dark_souls_3/__init__.py b/worlds/dark_souls_3/__init__.py index e49370890738..5de481359237 100644 --- a/worlds/dark_souls_3/__init__.py +++ b/worlds/dark_souls_3/__init__.py @@ -377,14 +377,14 @@ def set_rules(self) -> None: set_rule(self.multiworld.get_entrance("Go To Ringed City", self.player), lambda state: state.has("Small Envoy Banner", self.player)) - # If key items are randomized, must have contraption key to enter DLC + # If key items are randomized, must have contraption key to enter second half of Ashes DLC # If key items are not randomized, Contraption Key is guaranteed to be accessible before it is needed if self.multiworld.enable_key_locations[self.player] == Toggle.option_true: add_rule(self.multiworld.get_entrance("Go To Painted World of Ariandel 2", self.player), lambda state: state.has("Contraption Key", self.player)) if self.multiworld.late_dlc[self.player] == Toggle.option_true: - add_rule(self.multiworld.get_entrance("Go To Painted World of Ariandel 2", self.player), + add_rule(self.multiworld.get_entrance("Go To Painted World of Ariandel 1", self.player), lambda state: state.has("Small Doll", self.player)) # Define the access rules to some specific locations