convert potion_shop_shuffle into 'w' shop_shuffle flag
This commit is contained in:
parent
aed763c58f
commit
9fcb317aca
|
@ -135,7 +135,6 @@ class World(object):
|
||||||
set_player_attr('triforce_pieces_required', 20)
|
set_player_attr('triforce_pieces_required', 20)
|
||||||
set_player_attr('shop_shuffle', 'off')
|
set_player_attr('shop_shuffle', 'off')
|
||||||
set_player_attr('shop_shuffle_slots', 0)
|
set_player_attr('shop_shuffle_slots', 0)
|
||||||
set_player_attr('potion_shop_shuffle', '')
|
|
||||||
set_player_attr('shuffle_prizes', "g")
|
set_player_attr('shuffle_prizes', "g")
|
||||||
set_player_attr('sprite_pool', [])
|
set_player_attr('sprite_pool', [])
|
||||||
set_player_attr('dark_room_logic', "lamp")
|
set_player_attr('dark_room_logic', "lamp")
|
||||||
|
@ -1339,7 +1338,6 @@ class Spoiler(object):
|
||||||
'triforce_pieces_required': self.world.triforce_pieces_required,
|
'triforce_pieces_required': self.world.triforce_pieces_required,
|
||||||
'shop_shuffle': self.world.shop_shuffle,
|
'shop_shuffle': self.world.shop_shuffle,
|
||||||
'shop_shuffle_slots': self.world.shop_shuffle_slots,
|
'shop_shuffle_slots': self.world.shop_shuffle_slots,
|
||||||
'potion_shop_shuffle': self.world.potion_shop_shuffle,
|
|
||||||
'shuffle_prizes': self.world.shuffle_prizes,
|
'shuffle_prizes': self.world.shuffle_prizes,
|
||||||
'sprite_pool': self.world.sprite_pool,
|
'sprite_pool': self.world.sprite_pool,
|
||||||
'restrict_dungeon_item_on_boss': self.world.restrict_dungeon_item_on_boss
|
'restrict_dungeon_item_on_boss': self.world.restrict_dungeon_item_on_boss
|
||||||
|
|
|
@ -337,10 +337,6 @@ def parse_arguments(argv, no_defaults=False):
|
||||||
help='''
|
help='''
|
||||||
Maximum amount of shop slots able to be filled by items from the item pool.
|
Maximum amount of shop slots able to be filled by items from the item pool.
|
||||||
''')
|
''')
|
||||||
parser.add_argument('--potion_shop_shuffle', default=defval(''), choices=['', 'a'], help='''\
|
|
||||||
Determine if potion shop shuffle items should be affected by the rules of shop shuffle.
|
|
||||||
Value `none` will only allow prices to be shuffled, `a` will allow any items to be shuffled.
|
|
||||||
''')
|
|
||||||
parser.add_argument('--shuffle_prizes', default=defval('g'), choices=['', 'g', 'b', 'gb'])
|
parser.add_argument('--shuffle_prizes', default=defval('g'), choices=['', 'g', 'b', 'gb'])
|
||||||
parser.add_argument('--sprite_pool', help='''\
|
parser.add_argument('--sprite_pool', help='''\
|
||||||
Specifies a colon separated list of sprites used for random/randomonevent. If not specified, the full sprite pool is used.''')
|
Specifies a colon separated list of sprites used for random/randomonevent. If not specified, the full sprite pool is used.''')
|
||||||
|
@ -401,7 +397,7 @@ def parse_arguments(argv, no_defaults=False):
|
||||||
'shufflebosses', 'enemy_shuffle', 'enemy_health', 'enemy_damage', 'shufflepots',
|
'shufflebosses', 'enemy_shuffle', 'enemy_health', 'enemy_damage', 'shufflepots',
|
||||||
'ow_palettes', 'uw_palettes', 'sprite', 'disablemusic', 'quickswap', 'fastmenu', 'heartcolor',
|
'ow_palettes', 'uw_palettes', 'sprite', 'disablemusic', 'quickswap', 'fastmenu', 'heartcolor',
|
||||||
'heartbeep', "skip_progression_balancing", "triforce_pieces_available",
|
'heartbeep', "skip_progression_balancing", "triforce_pieces_available",
|
||||||
"triforce_pieces_required", "shop_shuffle", "shop_shuffle_slots", "potion_shop_shuffle",
|
"triforce_pieces_required", "shop_shuffle", "shop_shuffle_slots",
|
||||||
"required_medallions",
|
"required_medallions",
|
||||||
"plando_items", "plando_texts", "plando_connections",
|
"plando_items", "plando_texts", "plando_connections",
|
||||||
'remote_items', 'progressive', 'dungeon_counters', 'glitch_boots', 'killable_thieves',
|
'remote_items', 'progressive', 'dungeon_counters', 'glitch_boots', 'killable_thieves',
|
||||||
|
|
|
@ -481,15 +481,14 @@ def shuffle_shops(world, items, player: int):
|
||||||
shops = []
|
shops = []
|
||||||
upgrade_shops = []
|
upgrade_shops = []
|
||||||
total_inventory = []
|
total_inventory = []
|
||||||
potion_option = world.potion_shop_shuffle[player]
|
|
||||||
for shop in world.shops:
|
for shop in world.shops:
|
||||||
if shop.region.player == player:
|
if shop.region.player == player:
|
||||||
if shop.type == ShopType.UpgradeShop:
|
if shop.type == ShopType.UpgradeShop:
|
||||||
upgrade_shops.append(shop)
|
upgrade_shops.append(shop)
|
||||||
elif shop.type == ShopType.Shop:
|
elif shop.type == ShopType.Shop:
|
||||||
if shop.region.name == 'Potion Shop' and not potion_option:
|
if shop.region.name == 'Potion Shop' and not 'w' in option:
|
||||||
upgrade_shops.append(
|
# don't modify potion shop
|
||||||
shop) # just put it with the upgrade shops/caves so we don't shuffle the items, just prices
|
pass
|
||||||
else:
|
else:
|
||||||
shops.append(shop)
|
shops.append(shop)
|
||||||
total_inventory.extend(shop.inventory)
|
total_inventory.extend(shop.inventory)
|
||||||
|
|
1
Main.py
1
Main.py
|
@ -84,7 +84,6 @@ def main(args, seed=None):
|
||||||
world.triforce_pieces_required = args.triforce_pieces_required.copy()
|
world.triforce_pieces_required = args.triforce_pieces_required.copy()
|
||||||
world.shop_shuffle = args.shop_shuffle.copy()
|
world.shop_shuffle = args.shop_shuffle.copy()
|
||||||
world.shop_shuffle_slots = args.shop_shuffle_slots.copy()
|
world.shop_shuffle_slots = args.shop_shuffle_slots.copy()
|
||||||
world.potion_shop_shuffle = args.potion_shop_shuffle.copy()
|
|
||||||
world.progression_balancing = {player: not balance for player, balance in args.skip_progression_balancing.items()}
|
world.progression_balancing = {player: not balance for player, balance in args.skip_progression_balancing.items()}
|
||||||
world.shuffle_prizes = args.shuffle_prizes.copy()
|
world.shuffle_prizes = args.shuffle_prizes.copy()
|
||||||
world.sprite_pool = args.sprite_pool.copy()
|
world.sprite_pool = args.sprite_pool.copy()
|
||||||
|
|
|
@ -411,10 +411,6 @@ def roll_settings(weights, plando_options: typing.Set[str] = frozenset(("bosses"
|
||||||
if not ret.shop_shuffle:
|
if not ret.shop_shuffle:
|
||||||
ret.shop_shuffle = ''
|
ret.shop_shuffle = ''
|
||||||
|
|
||||||
ret.potion_shop_shuffle = get_choice('potion_shop_shuffle', weights, '')
|
|
||||||
if not ret.potion_shop_shuffle:
|
|
||||||
ret.potion_shop_shuffle = ''
|
|
||||||
|
|
||||||
ret.mode = get_choice('world_state', weights, None) # legacy support
|
ret.mode = get_choice('world_state', weights, None) # legacy support
|
||||||
if ret.mode == 'retro':
|
if ret.mode == 'retro':
|
||||||
ret.mode = 'open'
|
ret.mode = 'open'
|
||||||
|
|
29
Regions.py
29
Regions.py
|
@ -370,7 +370,6 @@ def create_shops(world, player: int):
|
||||||
ShopType.Shop: Shop,
|
ShopType.Shop: Shop,
|
||||||
ShopType.TakeAny: TakeAny}
|
ShopType.TakeAny: TakeAny}
|
||||||
option = world.shop_shuffle[player]
|
option = world.shop_shuffle[player]
|
||||||
potion_option = world.potion_shop_shuffle[player]
|
|
||||||
my_shop_table = dict(shop_table)
|
my_shop_table = dict(shop_table)
|
||||||
|
|
||||||
num_slots = int(world.shop_shuffle_slots[player])
|
num_slots = int(world.shop_shuffle_slots[player])
|
||||||
|
@ -385,21 +384,19 @@ def create_shops(world, player: int):
|
||||||
new_dark_shop = world.random.sample(shop_generation_types['default'], k=3)
|
new_dark_shop = world.random.sample(shop_generation_types['default'], k=3)
|
||||||
for name, shop in my_shop_table.items():
|
for name, shop in my_shop_table.items():
|
||||||
typ, shop_id, keeper, custom, locked, items = shop
|
typ, shop_id, keeper, custom, locked, items = shop
|
||||||
new_items = world.random.sample(shop_generation_types['default'], k=3)
|
|
||||||
if 'f' not in option:
|
|
||||||
if items == _basic_shop_defaults:
|
|
||||||
new_items = new_basic_shop
|
|
||||||
elif items == _dark_world_shop_defaults:
|
|
||||||
new_items = new_dark_shop
|
|
||||||
if name == 'Capacity Upgrade':
|
if name == 'Capacity Upgrade':
|
||||||
continue
|
pass
|
||||||
if name == 'Potion Shop':
|
elif name == 'Potion Shop' and not "w" in option:
|
||||||
if 'b' in potion_option:
|
pass
|
||||||
new_items = world.random.sample(shop_generation_types['potion_discount'] + shop_generation_types['bottle'], k=3)
|
else:
|
||||||
elif 'a' not in potion_option:
|
new_items = world.random.sample(shop_generation_types['default'], k=3)
|
||||||
new_items = items
|
if 'f' not in option:
|
||||||
keeper = world.random.choice([0xA0, 0xC1, 0xFF])
|
if items == _basic_shop_defaults:
|
||||||
my_shop_table[name] = (typ, shop_id, keeper, custom, locked, new_items)
|
new_items = new_basic_shop
|
||||||
|
elif items == _dark_world_shop_defaults:
|
||||||
|
new_items = new_dark_shop
|
||||||
|
keeper = world.random.choice([0xA0, 0xC1, 0xFF])
|
||||||
|
my_shop_table[name] = (typ, shop_id, keeper, custom, locked, new_items)
|
||||||
|
|
||||||
for region_name, (room_id, type, shopkeeper, custom, locked, inventory) in my_shop_table.items():
|
for region_name, (room_id, type, shopkeeper, custom, locked, inventory) in my_shop_table.items():
|
||||||
if world.mode[player] == 'inverted' and region_name == 'Dark Lake Hylia Shop':
|
if world.mode[player] == 'inverted' and region_name == 'Dark Lake Hylia Shop':
|
||||||
|
@ -411,7 +408,7 @@ def create_shops(world, player: int):
|
||||||
world.shops.append(shop)
|
world.shops.append(shop)
|
||||||
for index, item in enumerate(inventory):
|
for index, item in enumerate(inventory):
|
||||||
shop.add_inventory(index, *item)
|
shop.add_inventory(index, *item)
|
||||||
if region_name == 'Potion Shop' and 'a' not in potion_option:
|
if region_name == 'Potion Shop' and 'w' not in option:
|
||||||
pass
|
pass
|
||||||
elif region_name == 'Capacity Upgrade':
|
elif region_name == 'Capacity Upgrade':
|
||||||
pass
|
pass
|
||||||
|
|
|
@ -227,6 +227,7 @@ shop_shuffle:
|
||||||
i: 0 # Shuffle default inventories of the shops around
|
i: 0 # Shuffle default inventories of the shops around
|
||||||
p: 0 # Randomize the prices of the items in shop inventories
|
p: 0 # Randomize the prices of the items in shop inventories
|
||||||
u: 0 # Shuffle capacity upgrades into the item pool (and allow them to traverse the multiworld)
|
u: 0 # Shuffle capacity upgrades into the item pool (and allow them to traverse the multiworld)
|
||||||
|
w: 0 # Consider witch's hut like any other shop and shuffle/randomize it too
|
||||||
ip: 0 # Shuffle inventories and randomize prices
|
ip: 0 # Shuffle inventories and randomize prices
|
||||||
fpu: 0 # Generate new inventories, randomize prices and shuffle capacity upgrades into item pool
|
fpu: 0 # Generate new inventories, randomize prices and shuffle capacity upgrades into item pool
|
||||||
uip: 0 # Shuffle inventories, randomize prices and shuffle capacity upgrades into the item pool
|
uip: 0 # Shuffle inventories, randomize prices and shuffle capacity upgrades into the item pool
|
||||||
|
|
Loading…
Reference in New Issue