From 8734f38335bfffcac756f8f9906f29e56bcd320e Mon Sep 17 00:00:00 2001 From: gaithern Date: Thu, 25 Jan 2024 22:55:34 -0600 Subject: [PATCH] Added Final Ansem Goal --- worlds/kh1/Locations.py | 5 +++-- worlds/kh1/Options.py | 19 ++++++++++++------- worlds/kh1/Regions.py | 3 +++ worlds/kh1/Rules.py | 4 +++- worlds/kh1/__init__.py | 3 ++- worlds/kh1/test/test_goal.py | 5 +++++ 6 files changed, 28 insertions(+), 11 deletions(-) diff --git a/worlds/kh1/Locations.py b/worlds/kh1/Locations.py index 399a2495e7c9..f806145c952b 100644 --- a/worlds/kh1/Locations.py +++ b/worlds/kh1/Locations.py @@ -452,8 +452,9 @@ def get_locations_by_category(category: str) -> Dict[str, KH1LocationData]: "Hades Cup Defeat Cerberus Event": KH1LocationData("Cups", 265_9015), "Hades Cup Defeat Behemoth Event": KH1LocationData("Cups", 265_9016), "Hades Cup Defeat Hades Event": KH1LocationData("Cups", 265_9017), - "Hercules Cup Defeat Cloud Event": KH1LocationData("Cups", 265_9018), - "Hercules Cup Yellow Trinity Event": KH1LocationData("Cups", 265_9019) + "Hercules Cup Defeat Cloud Event": KH1LocationData("Cups", 265_9018), + "Hercules Cup Yellow Trinity Event": KH1LocationData("Cups", 265_9019), + "Final Ansem": KH1LocationData("Final", 265_9999) } event_location_table: Dict[str, KH1LocationData] = { diff --git a/worlds/kh1/Options.py b/worlds/kh1/Options.py index 6c1ca530c31b..25c0e7751698 100644 --- a/worlds/kh1/Options.py +++ b/worlds/kh1/Options.py @@ -80,7 +80,8 @@ class Goal(Choice): option_sephiroth = 8 option_unknown = 9 option_postcards = 10 - default = 0 + option_final_ansem = 11 + default = 11 class EXPMultiplier(NamedRange): """ @@ -88,13 +89,17 @@ class EXPMultiplier(NamedRange): """ display_name = "EXP Multiplier" default = 16 - range_start = default / 2 - range_end = 48 + range_start = default / 4 + range_end = 160 special_range_names = { - "half": default / 2, - "normal": default, - "double": default * 2, - "triple": default * 3, + "0.25x": default / 4, + "0.5x": default / 2, + "1x": default, + "2x": default * 2, + "3x": default * 3, + "4x": default * 4, + "8x": default * 8, + "10x": default * 10, } @dataclass diff --git a/worlds/kh1/Regions.py b/worlds/kh1/Regions.py index e5f3fe253a6b..7269d75719c4 100644 --- a/worlds/kh1/Regions.py +++ b/worlds/kh1/Regions.py @@ -374,6 +374,9 @@ def create_regions(multiworld: MultiWorld, player: int, goal: str, atlantica: bo regions["Olympus Coliseum"].locations.append("Hades Cup Defeat Hades Event") regions["Olympus Coliseum"].locations.append("Hercules Cup Defeat Cloud Event") regions["Olympus Coliseum"].locations.append("Hercules Cup Yellow Trinity Event") + + if goal == "final_ansem": + regions["End of the World"].locations.append("Final Ansem") # Set up the regions correctly. for name, data in regions.items(): diff --git a/worlds/kh1/Rules.py b/worlds/kh1/Rules.py index 7ae250e7708f..fbb1896e6306 100644 --- a/worlds/kh1/Rules.py +++ b/worlds/kh1/Rules.py @@ -179,7 +179,7 @@ def set_rules(multiworld: MultiWorld, player: int, goal: str, atlantica: bool): #multiworld.get_location("Monstro Mouth Boat Deck Chest" , player).access_rule = lambda state: has_item(state, player, "") multiworld.get_location("Monstro Mouth High Platform Boat Side Chest" , player).access_rule = lambda state: has_item(state, player, "High Jump") or can_glide(state, player) multiworld.get_location("Monstro Mouth High Platform Across from Boat Chest" , player).access_rule = lambda state: has_item(state, player, "High Jump") or can_glide(state, player) - multiworld.get_location("Monstro Mouth Near Ship Chest" , player).access_rule = lambda state: has_item(state, player, "High Jump") or can_glide(state, player) + #multiworld.get_location("Monstro Mouth Near Ship Chest" , player).access_rule = lambda state: has_item(state, player, "High Jump") or can_glide(state, player) multiworld.get_location("Monstro Mouth Green Trinity Top of Boat Chest" , player).access_rule = lambda state: (has_item(state, player, "High Jump") or can_glide(state, player)) and has_item(state, player, "Green Trinity") #multiworld.get_location("Monstro Chamber 2 Ground Chest" , player).access_rule = lambda state: has_item(state, player, "") #multiworld.get_location("Monstro Chamber 2 Platform Chest" , player).access_rule = lambda state: has_item(state, player, "") @@ -377,6 +377,8 @@ def set_rules(multiworld: MultiWorld, player: int, goal: str, atlantica: bool): multiworld.get_location("Hades Cup Defeat Hades Event" , player).access_rule = lambda state: has_item(state, player, "Phil Cup") and has_item(state, player, "Pegasus Cup") and has_item(state, player, "Hercules Cup") multiworld.get_location("Hercules Cup Defeat Cloud Event" , player).access_rule = lambda state: has_item(state, player, "Hercules Cup") multiworld.get_location("Hercules Cup Yellow Trinity Event" , player).access_rule = lambda state: has_item(state, player, "Hercules Cup") + + #multiworld.get_location("Final Ansem" , player).access_rule = lambda state: has_item(state, player, "") # Region rules. multiworld.get_entrance("Wonderland" , player).access_rule = lambda state: has_item(state, player,"Wonderland") diff --git a/worlds/kh1/__init__.py b/worlds/kh1/__init__.py index 8c1097dda44d..5696f5245c60 100644 --- a/worlds/kh1/__init__.py +++ b/worlds/kh1/__init__.py @@ -123,7 +123,8 @@ def pre_fill(self) -> None: "neverland": "Neverland Fairy Harp Event", "unknown": "Ansem's Secret Report 13", "final_rest": "End of the World Final Rest Chest", - "postcards": "Traverse Town Mail Postcard 10 Event" + "postcards": "Traverse Town Mail Postcard 10 Event", + "final_ansem": "Final Ansem" } self.multiworld.get_location(goal_dict[self.options.goal.current_key], self.player).place_locked_item(self.create_item("Victory")) diff --git a/worlds/kh1/test/test_goal.py b/worlds/kh1/test/test_goal.py index 5edfe29e4019..d2932326113f 100644 --- a/worlds/kh1/test/test_goal.py +++ b/worlds/kh1/test/test_goal.py @@ -57,3 +57,8 @@ class TestPostcards(KH1TestBase): options = { "Goal": 10, } + +class TestFinalRest(KH1TestBase): + options = { + "Goal": 11, + } \ No newline at end of file