From a7b483e4b72e8a983875e660a2d92762baedbf62 Mon Sep 17 00:00:00 2001 From: Kory Dondzila Date: Thu, 2 Jan 2025 10:12:00 -0500 Subject: [PATCH] Shivers: Adds ixupi captures priority option (#4403) --- worlds/shivers/Options.py | 8 ++++++++ worlds/shivers/__init__.py | 24 +++++++++++++++--------- worlds/shivers/docs/setup_en.md | 7 ++++++- 3 files changed, 29 insertions(+), 10 deletions(-) diff --git a/worlds/shivers/Options.py b/worlds/shivers/Options.py index 5aa6c207..25b3cffe 100644 --- a/worlds/shivers/Options.py +++ b/worlds/shivers/Options.py @@ -110,6 +110,13 @@ class FullPots(Choice): option_mixed = 2 +class IxupiCapturesPriority(DefaultOnToggle): + """ + Ixupi captures are set to priority locations. This forces a progression item into these locations if possible. + """ + display_name = "Ixupi Captures are Priority" + + class PuzzleCollectBehavior(Choice): """ Defines what happens to puzzles on collect. @@ -177,6 +184,7 @@ class ShiversOptions(PerGameCommonOptions): early_lightning: EarlyLightning location_pot_pieces: LocationPotPieces full_pots: FullPots + ixupi_captures_priority: IxupiCapturesPriority puzzle_collect_behavior: PuzzleCollectBehavior local_items: ShiversLocalItems non_local_items: ShiversNonLocalItems diff --git a/worlds/shivers/__init__.py b/worlds/shivers/__init__.py index 6a41dce3..9e0330de 100644 --- a/worlds/shivers/__init__.py +++ b/worlds/shivers/__init__.py @@ -16,7 +16,7 @@ class ShiversWeb(WebWorld): "English", "setup_en.md", "setup/en", - ["GodlFire", "Mathx2"] + ["GodlFire", "Cynbel_Terreus"] )] option_groups = shivers_option_groups @@ -41,6 +41,20 @@ class ShiversWorld(World): def generate_early(self): self.pot_completed_list = [] + # Pot piece shuffle location: + if self.options.location_pot_pieces == "own_world": + self.options.local_items.value |= {name for name, data in item_table.items() if + data.type in [ItemType.POT, ItemType.POT_COMPLETE]} + elif self.options.location_pot_pieces == "different_world": + self.options.non_local_items.value |= {name for name, data in item_table.items() if + data.type in [ItemType.POT, ItemType.POT_COMPLETE]} + + # Ixupi captures priority locations: + if self.options.ixupi_captures_priority: + self.options.priority_locations.value |= ( + {name for name in self.location_names if name.startswith('Ixupi Captured')} + ) + def create_item(self, name: str) -> Item: data = item_table[name] return ShiversItem(name, data.classification, data.code, self.player) @@ -194,14 +208,6 @@ class ShiversWorld(World): ["Heal", "Easier Lyre"], weights=[95, 5], k=filler_needed )) - # Pot piece shuffle location: - if self.options.location_pot_pieces == "own_world": - self.options.local_items.value |= {name for name, data in item_table.items() if - data.type in [ItemType.POT, ItemType.POT_COMPLETE]} - elif self.options.location_pot_pieces == "different_world": - self.options.non_local_items.value |= {name for name, data in item_table.items() if - data.type in [ItemType.POT, ItemType.POT_COMPLETE]} - self.multiworld.itempool += item_pool def pre_fill(self) -> None: diff --git a/worlds/shivers/docs/setup_en.md b/worlds/shivers/docs/setup_en.md index c53edcdf..a495c87b 100644 --- a/worlds/shivers/docs/setup_en.md +++ b/worlds/shivers/docs/setup_en.md @@ -7,6 +7,11 @@ - [ScummVM](https://www.scummvm.org/downloads/) version 2.7.0 or later - [Shivers Randomizer](https://github.com/GodlFire/Shivers-Randomizer-CSharp/releases/latest) Latest release version +## Optional Software + +- [PopTracker](https://github.com/black-sliver/PopTracker/releases/) + - [Jax's Shivers PopTracker pack](https://github.com/blazik-barth/Shivers-Tracker/releases/) + ## Setup ScummVM for Shivers ### GOG version of Shivers @@ -57,4 +62,4 @@ validator page: [YAML Validation page](/mysterycheck) - Every puzzle - Every puzzle hint/solution - Every document that is considered a Flashback -- Optionally information plaques. +- Optionally information plaques