Initial Follower Shuffle Implementation

This commit is contained in:
codemann8
2025-04-30 06:41:43 -05:00
parent 267552bfee
commit fcaaab30a4
29 changed files with 316 additions and 50 deletions

View File

@@ -133,7 +133,7 @@ def create_regions(world, player):
create_lw_region(player, 'Ice Cave Area', None, ['Ice Rod Cave', 'Good Bee Cave', '20 Rupee Cave', 'Ice Cave Water Drop', 'Ice Cave SE']),
create_lw_region(player, 'Ice Cave Water', None, ['Ice Cave Pier', 'Ice Cave SW'], 'Light World', Terrain.Water),
create_lw_region(player, 'Desert Pass Area', ['Middle Aged Man'], ['Desert Fairy', '50 Rupee Cave', 'Middle Aged Man', 'Desert Pass Ladder (South)', 'Desert Pass Rocks (North)', 'Desert Pass WS', 'Desert Pass EC']),
create_lw_region(player, 'Middle Aged Man', ['Purple Chest'], None),
create_lw_region(player, 'Middle Aged Man', ['Purple Chest', 'Locksmith'], None),
create_lw_region(player, 'Desert Pass Southeast', None, ['Desert Pass Rocks (South)', 'Desert Pass ES']),
create_lw_region(player, 'Desert Pass Ledge', None, ['Desert Pass Ladder (North)', 'Desert Pass Ledge Drop', 'Desert Pass WC']),
create_lw_region(player, 'Dam Area', ['Sunken Treasure'], ['Dam', 'Dam WC', 'Dam WS', 'Dam NC', 'Dam EC']),
@@ -197,7 +197,8 @@ def create_regions(world, player):
create_dw_region(player, 'Broken Bridge Northeast', None, ['Broken Bridge Hammer Rock (North)', 'Broken Bridge Hookshot Gap', 'Broken Bridge Northeast Water Drop', 'Broken Bridge NE']),
create_dw_region(player, 'Broken Bridge West', None, ['Broken Bridge West Water Drop', 'Broken Bridge NW']),
create_dw_region(player, 'Broken Bridge Water', None, ['Broken Bridge NC'], 'Dark World', Terrain.Water),
create_dw_region(player, 'Palace of Darkness Area', None, ['Palace of Darkness Hint', 'Palace of Darkness', 'Palace of Darkness SW', 'Palace of Darkness SE']),
create_dw_region(player, 'Palace of Darkness Area', ['Kiki'], ['Palace of Darkness Hint', 'Palace of Darkness', 'Kiki Assistance', 'Palace of Darkness SW', 'Palace of Darkness SE']),
create_dw_region(player, 'Dark Palace Button', ['Kiki Assistance'], None),
create_dw_region(player, 'Darkness Cliff', None, ['Dark Dunes Cliff Ledge Drop', 'Hammer Bridge North Cliff Ledge Drop', 'Dark Tree Line Cliff Ledge Drop', 'Palace of Darkness Cliff Ledge Drop']),
create_dw_region(player, 'Hammer Pegs Area', ['Dark Blacksmith Ruins'], ['Hammer Peg Cave', 'Peg Area Rocks (East)']),
create_dw_region(player, 'Hammer Pegs Entry', None, ['Peg Area Rocks (West)', 'Hammer Pegs WS']),
@@ -436,7 +437,6 @@ def create_dungeon_regions(world, player):
create_dungeon_region(player, 'Hyrule Dungeon Staircase', 'Hyrule Castle', None, ['Hyrule Dungeon Staircase Up Stairs', 'Hyrule Dungeon Staircase Down Stairs']),
create_dungeon_region(player, 'Hyrule Dungeon Cellblock', 'Hyrule Castle', ['Hyrule Castle - Big Key Drop'], ['Hyrule Dungeon Cellblock Up Stairs', 'Hyrule Dungeon Cellblock Door']),
create_dungeon_region(player, 'Hyrule Dungeon Cell', 'Hyrule Castle',
["Hyrule Castle - Zelda's Chest"] if not std_flag else
["Hyrule Castle - Zelda's Chest", 'Zelda Pickup'],
['Hyrule Dungeon Cell Exit']),
@@ -1255,7 +1255,9 @@ def adjust_locations(world, player):
location.type = LocationType.Logical
location.real = False
if l not in ['Ganon', 'Agahnim 1', 'Agahnim 2']:
location.skip = True
from ItemList import follower_quests
if not world.shuffle_followers[player] or l not in follower_quests:
location.skip = True
def valid_pot_location(pot, pot_set, world, player):
@@ -1413,9 +1415,12 @@ location_events = {
'Ice Palace - Boss Kill': 'Beat Boss',
'Misery Mire - Boss Kill': 'Beat Boss',
'Turtle Rock - Boss Kill': 'Beat Boss',
'Locksmith': 'Sign Vandalized',
'Lost Old Man': 'Escort Old Man',
'Old Man Drop Off': 'Return Old Man',
'Floodgate': 'Open Floodgate',
'Kiki': 'Pick Up Kiki',
'Kiki Assistance': 'Dark Palace Opened',
'Big Bomb': 'Pick Up Big Bomb',
'Pyramid Crack': 'Detonate Big Bomb',
'Frog': 'Get Frog',
@@ -1671,9 +1676,12 @@ location_table = {'Mushroom': (0x180013, 0x186df8, False, 'in the woods'),
'Ice Palace - Boss Kill': (None, None, False, None),
'Misery Mire - Boss Kill': (None, None, False, None),
'Turtle Rock - Boss Kill': (None, None, False, None),
'Locksmith': (None, None, False, None),
'Lost Old Man': (None, None, False, None),
'Old Man Drop Off': (None, None, False, None),
'Floodgate': (None, None, False, None),
'Kiki': (None, None, False, None),
'Kiki Assistance': (None, None, False, None),
'Frog': (None, None, False, None),
'Missing Smith': (None, None, False, None),
'Dark Blacksmith Ruins': (None, None, False, None),