From 5a9bc60a25312126244bdb0eef47b06e929b62ae Mon Sep 17 00:00:00 2001 From: GodlFire <46984098+GodlFire@users.noreply.github.com> Date: Sat, 2 Dec 2023 23:32:11 -0700 Subject: [PATCH] Adds an option to have pot pieces placed local/non-local/anywhere Shivers nearly always finishes last in multiworld games due to the fact you need all 20 pot pieces to win and the pot pieces open very few location checks. This option allows the pieces to be placed locally. This should allow Shivers to be finished earlier. --- worlds/shivers/Options.py | 11 +++++++++++ worlds/shivers/__init__.py | 6 ++++++ 2 files changed, 17 insertions(+) diff --git a/worlds/shivers/Options.py b/worlds/shivers/Options.py index 6d18804069..5a1b3211ef 100644 --- a/worlds/shivers/Options.py +++ b/worlds/shivers/Options.py @@ -38,6 +38,16 @@ class EarlyLightning(Toggle): """Allows lightning to be captured at any point in the game. You will still need to capture all ten Ixupi for victory.""" display_name = "Early Lightning" +class LocationPotPieces(Choice): + """Chooses where pot pieces will be located within the multiworld. + - Own World: Pot pieces will be located within your own world + - Different World: Pot pieces will be located in another world + - Any World: Pot pieces will be located in any world""" + display_name = "Location of Pot Pieces" + option_own_world = 0 + option_different_world = 1 + option_any_world = 2 + @dataclass class ShiversOptions(PerGameCommonOptions): @@ -48,3 +58,4 @@ class ShiversOptions(PerGameCommonOptions): elevators_stay_solved: ElevatorsStaySolved early_beth: EarlyBeth early_lightning: EarlyLightning + location_pot_pieces: LocationPotPieces diff --git a/worlds/shivers/__init__.py b/worlds/shivers/__init__.py index e43e91fb5a..9f4d025370 100644 --- a/worlds/shivers/__init__.py +++ b/worlds/shivers/__init__.py @@ -138,6 +138,12 @@ class ShiversWorld(World): elif lobby_access_keys == 2: self.multiworld.local_early_items[self.player]["Key for Front Door"] = 1 + #Pot piece shuffle location: + if self.options.location_pot_pieces == 0: + self.multiworld.local_items[self.player].value.update({name for name, data in item_table.items() if data.type == "pot"}) + if self.options.location_pot_pieces == 1: + self.multiworld.non_local_items[self.player].value.update({name for name, data in item_table.items() if data.type == "pot"}) + def pre_fill(self) -> None: # Prefills event storage locations with duplicate pots storagelocs = []