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

Expanded Late Basin of Vows and Late DLC #6

Merged
merged 12 commits into from
Apr 3, 2024
24 changes: 20 additions & 4 deletions worlds/dark_souls_3/Options.py
Original file line number Diff line number Diff line change
Expand Up @@ -308,14 +308,30 @@ class EarlySmallLothricBanner(Choice):
default = option_off


class LateBasinOfVowsOption(Toggle):
"""This option makes it so the Basin of Vows is still randomized, but guarantees you that you wont have to venture into Lothric Castle to find your Small Lothric Banner to get out of High Wall of Lothric. So you may find Basin of Vows early, but you wont have to fight Dancer to find your Small Lothric Banner."""
class LateBasinOfVowsOption(Choice):
"""This option makes it so the Basin of Vows is still randomized, but you can choose the requirements to venture into Lothric Castle.
"Off": You may have to enter Lothric Castle and the areas beyond it before finding your Small Lothric Banner.
"After Small Lothric Banner": You are guaranteed to find your Small Lothric Banner before needing to enter Lothric Castle.
"After Small Doll": You are guaranteed to find your Small Lothric Banner and your Small Doll before needing to enter Lothric Castle."""
display_name = "Late Basin of Vows"
option_off = 0
alias_false = 0
option_after_small_lothric_banner = 1
alias_true = 1
option_after_small_doll = 2


class LateDLCOption(Toggle):
"""This option makes it so you are guaranteed to find your Small Doll without having to venture off into the DLC, effectively putting anything in the DLC in logic after finding both Contraption Key and Small Doll, and being able to get into Irithyll of the Boreal Valley."""
class LateDLCOption(Choice):
"""This option makes it so the Small Doll is still randomized, but you can choose the requirements to venture into Painted World of Ariandel.
"Off": You may have to enter Ariandel and the areas beyond it before finding your Small Doll.
"After Small Doll": You are guaranteed to find your Small Doll before needing to enter Ariandel.
"After Basin": You are guaranteed to find your Small Doll and your Basin of Vows before needing to enter Ariandel."""
display_name = "Late DLC"
option_off = 0
alias_false = 0
option_after_small_doll = 1
alias_true = 1
option_after_basin = 2


class EnableDLCOption(Toggle):
Expand Down
9 changes: 9 additions & 0 deletions worlds/dark_souls_3/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -505,6 +505,9 @@ def set_rules(self) -> None:
and self._has_any_scroll(state)
))

if self.options.late_basin_of_vows > 1: # After Small Doll
self._add_entrance_rule("Lothric Castle", "Small Doll")

# DLC Access Rules Below
if self.options.enable_dlc:
self._add_entrance_rule("Painted World of Ariandel (Before Contraption)", "CD -> PW1")
Expand All @@ -523,6 +526,9 @@ def set_rules(self) -> None:
"Painted World of Ariandel (Before Contraption)",
lambda state: state.has("Small Doll") and self._has_any_scroll(state))

if self.options.late_dlc > 1: # After Basin
self._add_entrance_rule("Painted World of Ariandel (Before Contraption)", "Basin of Vows")

# Define the access rules to some specific locations
if self._is_location_available("FS: Lift Chamber Key - Leonhard"):
self._add_location_rule("HWL: Red Eye Orb - wall tower, miniboss",
Expand Down Expand Up @@ -568,6 +574,9 @@ def set_rules(self) -> None:
and self._has_any_scroll(state)
))

if self.options.late_basin_of_vows > 1: # After Small Doll
self._add_location_rule("HWL: Soul of the Dancer", "Small Doll")

self._add_location_rule([
"LC: Grand Archives Key - by Grand Archives door, after PC and AL bosses",
"LC: Gotthard Twinswords - by Grand Archives door, after PC and AL bosses"
Expand Down