Shivers: Adds ixupi captures priority option (#4403)

This commit is contained in:
Kory Dondzila 2025-01-02 10:12:00 -05:00 committed by GitHub
parent 917335ec54
commit a7b483e4b7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 29 additions and 10 deletions

View File

@ -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

View File

@ -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:

View File

@ -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