TS: Starting with Jewelrybox, Talaria or Meyef in your starting inventory will now set the corresponding flag
This commit is contained in:
parent
5a2e477dba
commit
13036539b7
|
@ -24,19 +24,32 @@ class TimespinnerWorld(World):
|
|||
location_name_to_id = {location.name: location.code for location in get_locations(None, None)}
|
||||
item_name_groups = get_item_names_per_category()
|
||||
|
||||
locked_locations: Dict[int, List[str]] = {}
|
||||
pyramid_keys_unlock: Dict[int, str] = {}
|
||||
location_cache: Dict[int, List[Location]] = {}
|
||||
locked_locations: List[str]
|
||||
pyramid_keys_unlock: str
|
||||
location_cache: List[Location]
|
||||
|
||||
def __init__(self, world: MultiWorld, player: int):
|
||||
super().__init__(world, player)
|
||||
|
||||
self.locked_locations = []
|
||||
self.location_cache = []
|
||||
self.pyramid_keys_unlock = get_pyramid_keys_unlock(world, player)
|
||||
|
||||
# for item in self.world.precollected_items[self.player]:
|
||||
# if item.name in self.remove_from_start_inventory:
|
||||
|
||||
def generate_early(self):
|
||||
self.locked_locations[self.player] = []
|
||||
self.location_cache[self.player] = []
|
||||
self.pyramid_keys_unlock[self.player] = get_pyramid_keys_unlock(self.world, self.player)
|
||||
if self.world.start_inventory[self.player].value.pop('Meyef', 0) > 0:
|
||||
self.world.StartWithMeyef[self.player].value = self.world.StartWithMeyef[self.player].option_true
|
||||
if self.world.start_inventory[self.player].value.pop('Talaria Attachment', 0) > 0:
|
||||
self.world.QuickSeed[self.player].value = self.world.QuickSeed[self.player].option_true
|
||||
if self.world.start_inventory[self.player].value.pop('Jewelry Box', 0) > 0:
|
||||
self.world.StartWithJewelryBox[self.player].value = self.world.StartWithJewelryBox[self.player].option_true
|
||||
|
||||
|
||||
def create_regions(self):
|
||||
create_regions(self.world, self.player, get_locations(self.world, self.player),
|
||||
self.location_cache[self.player], self.pyramid_keys_unlock[self.player])
|
||||
self.location_cache, self.pyramid_keys_unlock)
|
||||
|
||||
|
||||
def create_item(self, name: str) -> Item:
|
||||
|
@ -44,7 +57,7 @@ class TimespinnerWorld(World):
|
|||
|
||||
|
||||
def set_rules(self):
|
||||
setup_events(self.world, self.player, self.locked_locations[self.player], self.location_cache[self.player])
|
||||
setup_events(self.world, self.player, self.locked_locations, self.location_cache)
|
||||
|
||||
self.world.completion_condition[self.player] = lambda state: state.has('Killed Nightmare', self.player)
|
||||
|
||||
|
@ -52,14 +65,14 @@ class TimespinnerWorld(World):
|
|||
def generate_basic(self):
|
||||
excluded_items = get_excluded_items_based_on_options(self.world, self.player)
|
||||
|
||||
assign_starter_items(self.world, self.player, excluded_items, self.locked_locations[self.player])
|
||||
assign_starter_items(self.world, self.player, excluded_items, self.locked_locations)
|
||||
|
||||
if not is_option_enabled(self.world, self.player, "QuickSeed") and not is_option_enabled(self.world, self.player, "Inverted"):
|
||||
place_first_progression_item(self.world, self.player, excluded_items, self.locked_locations[self.player])
|
||||
place_first_progression_item(self.world, self.player, excluded_items, self.locked_locations)
|
||||
|
||||
pool = get_item_pool(self.world, self.player, excluded_items)
|
||||
|
||||
fill_item_pool_with_dummy_items(self.world, self.player, self.locked_locations[self.player], self.location_cache[self.player], pool)
|
||||
fill_item_pool_with_dummy_items(self.world, self.player, self.locked_locations, self.location_cache, pool)
|
||||
|
||||
self.world.itempool += pool
|
||||
|
||||
|
@ -73,15 +86,15 @@ class TimespinnerWorld(World):
|
|||
slot_data["StinkyMaw"] = True
|
||||
slot_data["ProgressiveVerticalMovement"] = False
|
||||
slot_data["ProgressiveKeycards"] = False
|
||||
slot_data["PyramidKeysGate"] = self.pyramid_keys_unlock[self.player]
|
||||
slot_data["PersonalItems"] = get_personal_items(self.player, self.location_cache[self.player])
|
||||
slot_data["PyramidKeysGate"] = self.pyramid_keys_unlock
|
||||
slot_data["PersonalItems"] = get_personal_items(self.player, self.location_cache)
|
||||
|
||||
return slot_data
|
||||
|
||||
|
||||
def write_spoiler_header(self, spoiler_handle: TextIO):
|
||||
spoiler_handle.write('Twin Pyramid Keys unlock: %s\n' % (self.pyramid_keys_unlock[self.player]))
|
||||
|
||||
spoiler_handle.write('Twin Pyramid Keys unlock: %s\n' % (self.pyramid_keys_unlock))
|
||||
|
||||
|
||||
def get_excluded_items_based_on_options(world: MultiWorld, player: int) -> Set[str]:
|
||||
excluded_items: Set[str] = set()
|
||||
|
|
Loading…
Reference in New Issue