Add "Start With" option

This commit is contained in:
Alchav 2021-12-23 12:32:16 -05:00 committed by Fabian Dill
parent b7676a3da2
commit c0f95755ff
1 changed files with 74 additions and 5 deletions

View File

@ -1,15 +1,15 @@
from collections import namedtuple
import logging
from collections import namedtuple
from BaseClasses import Region, RegionType
from worlds.alttp.SubClasses import ALttPLocation
from worlds.alttp.Shops import TakeAny, total_shop_slots, set_up_shops, shuffle_shops
from Fill import FillError
from worlds.alttp.Bosses import place_bosses
from worlds.alttp.Dungeons import get_dungeon_item_pool_player
from worlds.alttp.EntranceShuffle import connect_entrance
from Fill import FillError
from worlds.alttp.Items import ItemFactory, GetBeemizerItem
from worlds.alttp.Options import smallkey_shuffle
from worlds.alttp.Options import smallkey_shuffle, compass_shuffle, bigkey_shuffle, map_shuffle
from worlds.alttp.Shops import TakeAny, total_shop_slots, set_up_shops, shuffle_shops
from worlds.alttp.SubClasses import ALttPLocation
# This file sets the item pools for various modes. Timed modes and triforce hunt are enforced first, and then extra items are specified per mode to fill in the remaining space.
# Some basic items that various modes require are placed here, including pendants and crystals. Medallion requirements for the two relevant entrances are also decided.
@ -226,6 +226,7 @@ for diff in {'easy', 'normal', 'hard', 'expert'}:
def generate_itempool(world):
player = world.player
world = world.world
if world.difficulty[player] not in difficulties:
raise NotImplementedError(f"Diffulty {world.difficulty[player]}")
if world.goal[player] not in {'ganon', 'pedestal', 'bosses', 'triforcehunt', 'localtriforcehunt', 'icerodhunt',
@ -651,6 +652,74 @@ def get_pool_core(world, player: int):
place_item(key_location, item_to_place)
else:
pool.extend([item_to_place])
if world.smallkey_shuffle[player] == smallkey_shuffle.option_start_with:
precollected_items.append('Small Key (Hyrule Castle)')
precollected_items.append('Small Key (Desert Palace)')
precollected_items.append('Small Key (Tower of Hera)')
precollected_items.extend(['Small Key (Palace of Darkness)'] * 6)
precollected_items.append('Small Key (Thieves Town)')
precollected_items.extend(['Small Key (Skull Woods)'] * 3)
precollected_items.append('Small Key (Swamp Palace)')
precollected_items.extend(['Small Key (Ice Palace)'] * 2)
precollected_items.extend(['Small Key (Misery Mire)'] * 3)
precollected_items.extend(['Small Key (Turtle Rock)'] * 4)
precollected_items.extend(['Small Key (Agahnims Tower)'] * 2)
precollected_items.extend(['Small Key (Ganons Tower)'] * 4)
pool.extend(['Rupees (20)'] * 23)
pool.extend(['Arrows (10)'] * 3)
pool.extend(['Bombs (10)'] * 3)
if world.compass_shuffle[player] == compass_shuffle.option_start_with:
precollected_items.append('Compass (Eastern Palace)')
precollected_items.append('Compass (Desert Palace)')
precollected_items.append('Compass (Tower of Hera)')
precollected_items.append('Compass (Palace of Darkness)')
precollected_items.append('Compass (Thieves Town)')
precollected_items.append('Compass (Skull Woods)')
precollected_items.append('Compass (Swamp Palace)')
precollected_items.append('Compass (Ice Palace)')
precollected_items.append('Compass (Misery Mire)')
precollected_items.append('Compass (Turtle Rock)')
precollected_items.append('Compass (Ganons Tower)')
pool.extend(['Rupees (20)'] * 9)
pool.append('Arrows (10)')
pool.append('Bombs (10)')
if world.map_shuffle[player] == map_shuffle.option_start_with:
precollected_items.append('Map (Hyrule Castle)')
precollected_items.append('Map (Eastern Palace)')
precollected_items.append('Map (Desert Palace)')
precollected_items.append('Map (Tower of Hera)')
precollected_items.append('Map (Palace of Darkness)')
precollected_items.append('Map (Thieves Town)')
precollected_items.append('Map (Skull Woods)')
precollected_items.append('Map (Swamp Palace)')
precollected_items.append('Map (Ice Palace)')
precollected_items.append('Map (Misery Mire)')
precollected_items.append('Map (Turtle Rock)')
precollected_items.append('Map (Ganons Tower)')
pool.extend(['Rupees (20)'] * 10)
pool.append('Arrows (10)')
pool.append('Bombs (10)')
if world.bigkey_shuffle[player] == bigkey_shuffle.option_start_with:
precollected_items.append('Big Key (Eastern Palace)')
precollected_items.append('Big Key (Desert Palace)')
precollected_items.append('Big Key (Tower of Hera)')
precollected_items.append('Big Key (Palace of Darkness)')
precollected_items.append('Big Key (Thieves Town)')
precollected_items.append('Big Key (Skull Woods)')
precollected_items.append('Big Key (Swamp Palace)')
precollected_items.append('Big Key (Ice Palace)')
precollected_items.append('Big Key (Misery Mire)')
precollected_items.append('Big Key (Turtle Rock)')
precollected_items.append('Big Key (Ganons Tower)')
pool.extend(['Rupees (20)'] * 9)
pool.append('Arrows (10)')
pool.append('Bombs (10)')
return (pool, placed_items, precollected_items, clock_mode, treasure_hunt_count, treasure_hunt_icon,
additional_pieces_to_place)