Merge remote-tracking branch 'origin/OverworldShuffle' into GwaaKiwi

This commit is contained in:
2025-05-04 15:24:08 -05:00
37 changed files with 542 additions and 164 deletions

18
Main.py
View File

@@ -27,7 +27,7 @@ from Dungeons import create_dungeons
from Fill import distribute_items_restrictive, promote_dungeon_items, fill_dungeons_restrictive, ensure_good_items
from Fill import dungeon_tracking
from Fill import sell_potions, sell_keys, balance_multiworld_progression, balance_money_progression, lock_shop_locations, set_prize_drops
from ItemList import generate_itempool, difficulties, fill_prizes, customize_shops, fill_specific_items, create_farm_locations
from ItemList import generate_itempool, difficulties, fill_prizes, customize_shops, fill_specific_items, create_farm_locations, shuffle_event_items, follower_pickups
from UnderworldGlitchRules import connect_hmg_entrances_regions, create_hmg_entrances_regions
from Utils import output_path, parse_player_names
@@ -40,7 +40,7 @@ from source.enemizer.DamageTables import DamageTable
from source.enemizer.Enemizer import randomize_enemies
from source.rom.DataTables import init_data_tables
version_number = '1.4.8.1'
version_number = '1.4.9'
version_branch = '-u'
__version__ = f'{version_number}{version_branch}'
@@ -245,6 +245,7 @@ def main(args, seed=None, fish=None):
sell_keys(world, player)
else:
lock_shop_locations(world, player)
shuffle_event_items(world, player)
massage_item_pool(world)
logger.info(world.fish.translate("cli", "cli", "placing.dungeon.prizes"))
@@ -435,6 +436,9 @@ def export_yaml(args, fish):
for k,v in {"DR":__version__,"OR":ORVersion}.items():
logger.info((k + ' Version:').ljust(16) + '%s' % v)
for player in range(1, world.players + 1):
world.difficulty_requirements[player] = difficulties[world.difficulty[player]]
set_starting_inventory(world, args)
world.settings = CustomSettings()
@@ -479,6 +483,7 @@ def init_world(args, fish):
world.owKeepSimilar = args.ow_keepsimilar.copy()
world.owWhirlpoolShuffle = args.ow_whirlpool.copy()
world.owFluteShuffle = args.ow_fluteshuffle.copy()
world.shuffle_followers = args.shuffle_followers.copy()
world.shuffle_bonk_drops = args.bonk_drops.copy()
world.open_pyramid = args.openpyramid.copy()
world.boss_shuffle = args.shufflebosses.copy()
@@ -535,6 +540,7 @@ def set_starting_inventory(world, args):
if world.customizer and world.customizer.get_start_inventory():
for p, inv_list in world.customizer.get_start_inventory().items():
if inv_list:
follower_added = False
for inv_item in inv_list:
name = inv_item.strip()
if inv_item == 'RandomWeapon':
@@ -548,7 +554,13 @@ def set_starting_inventory(world, args):
item = ItemFactory(e, p)
if item:
world.push_precollected(item)
elif inv_item == 'RandomFollower':
name = random.choice([f for f in follower_pickups if f != 'Zelda Herself' or world.mode[p] == 'standard'])
name = name if name != 'Ocarina' or world.flute_mode[p] != 'active' else 'Ocarina (Activated)'
if name in follower_pickups:
if not world.shuffle_followers[p] or follower_added:
continue
follower_added = True
item = ItemFactory(name, p)
if item:
world.push_precollected(item)
@@ -596,6 +608,7 @@ def copy_world(world):
ret.owKeepSimilar = world.owKeepSimilar.copy()
ret.owWhirlpoolShuffle = world.owWhirlpoolShuffle.copy()
ret.owFluteShuffle = world.owFluteShuffle.copy()
ret.shuffle_followers = world.shuffle_followers.copy()
ret.shuffle_bonk_drops = world.shuffle_bonk_drops.copy()
ret.open_pyramid = world.open_pyramid.copy()
ret.shufflelinks = world.shufflelinks.copy()
@@ -818,6 +831,7 @@ def copy_world_premature(world, player):
ret.owKeepSimilar = world.owKeepSimilar.copy()
ret.owWhirlpoolShuffle = world.owWhirlpoolShuffle.copy()
ret.owFluteShuffle = world.owFluteShuffle.copy()
ret.shuffle_followers = world.shuffle_followers.copy()
ret.shuffle_bonk_drops = world.shuffle_bonk_drops.copy()
ret.open_pyramid = world.open_pyramid.copy()
ret.shufflelinks = world.shufflelinks.copy()