Initial Prize Shuffle Implementation

commit c89c5d3798e2a777011e90d565d74af792330d9f
commit 4159f2e7097fca648828a60d8f6878211d0ded9e
commit a80e3a4301d69146ccfffe0f2f375adac381e165
commit d8ac588cb904152831f514d8276be4e39a43dcd0
commit 68eb75e3391631355b4f56f1dcb7e9dadadf1fdf
commit ba241b47964eadfb40ad323f87b1117598dd91a6
commit aed2821c7165822f5fd5cc1ff3f58f2af095d915
commit bd1c5d8d35ae3cae5f27f236346fff057b7b8cd7
commit f034e31cc585a1648657fc2c4850ebc0c1d8bf78

Author: codemann8 <codemann8@gmail.com>
This commit is contained in:
codemann8
2024-05-23 18:39:02 -05:00
parent 8b295a74ad
commit 103e098a2e
25 changed files with 573 additions and 331 deletions

View File

@@ -1124,8 +1124,8 @@ def _create_region(player, name, type, hint='Hyrule', locations=None, exits=None
ko_hint = key_drop_data[location][2]
ret.locations.append(Location(player, location, None, False, ko_hint, ret, key_drop_data[location][3]))
else:
address, player_address, crystal, hint_text = location_table[location]
ret.locations.append(Location(player, location, address, crystal, hint_text, ret, None, player_address))
address, player_address, prize, hint_text = location_table[location]
ret.locations.append(Location(player, location, address, prize, hint_text, ret, None, player_address))
return ret
def mark_light_dark_world_regions(world, player):
@@ -1240,14 +1240,14 @@ def adjust_locations(world, player):
# player address? it is in the shop table
index += 1
setup_enemy_locations(world, player)
# disable forced prize locations
if world.prizeshuffle[player] != 'none':
for l in [name for name, data in location_table.items() if data[2]]:
location = world.get_location_unsafe(l, player)
if location:
location.prize = False
# unreal events:
for l in ['Ganon', 'Agahnim 1', 'Agahnim 2', 'Frog', 'Missing Smith', 'Dark Blacksmith Ruins', 'Middle Aged Man',
'Floodgate', 'Trench 1 Switch', 'Trench 2 Switch', 'Swamp Drain', 'Turtle Medallion Pad',
'Attic Cracked Floor', 'Suspicious Maiden', 'Revealing Light', 'Big Bomb', 'Pyramid Crack',
'Ice Block Drop', 'Lost Old Man', 'Old Man Drop Off', 'Zelda Pickup', 'Zelda Drop Off', 'Skull Star Tile',
'Eastern Palace - Boss Kill', 'Desert Palace - Boss Kill', 'Tower of Hera - Boss Kill',
'Palace of Darkness - Boss Kill', 'Swamp Palace - Boss Kill', 'Skull Woods - Boss Kill',
'Thieves\' Town - Boss Kill', 'Ice Palace - Boss Kill', 'Misery Mire - Boss Kill', 'Turtle Rock - Boss Kill']:
for l in ['Ganon', 'Zelda Pickup', 'Zelda Drop Off'] + list(location_events):
location = world.get_location_unsafe(l, player)
if location:
location.type = LocationType.Logical
@@ -1397,18 +1397,42 @@ shop_table_by_location_id = {0x400000+cnt: x for cnt, x in enumerate(flat_normal
shop_table_by_location_id = {**shop_table_by_location_id, **{0x400020+cnt: x for cnt, x in enumerate(flat_retro_shops)}}
shop_table_by_location = {y: x for x, y in shop_table_by_location_id.items()}
dungeon_events = [
'Trench 1 Switch',
'Trench 2 Switch',
'Swamp Drain',
'Attic Cracked Floor',
'Suspicious Maiden',
'Revealing Light',
'Ice Block Drop',
'Skull Star Tile',
'Zelda Pickup',
'Zelda Drop Off'
]
location_events = {
'Agahnim 1': 'Beat Agahnim 1',
'Agahnim 2': 'Beat Agahnim 2',
'Eastern Palace - Boss Kill': 'Beat Boss',
'Desert Palace - Boss Kill': 'Beat Boss',
'Tower of Hera - Boss Kill': 'Beat Boss',
'Palace of Darkness - Boss Kill': 'Beat Boss',
'Swamp Palace - Boss Kill': 'Beat Boss',
'Skull Woods - Boss Kill': 'Beat Boss',
'Thieves\' Town - Boss Kill': 'Beat Boss',
'Ice Palace - Boss Kill': 'Beat Boss',
'Misery Mire - Boss Kill': 'Beat Boss',
'Turtle Rock - Boss Kill': 'Beat Boss',
'Lost Old Man': 'Escort Old Man',
'Old Man Drop Off': 'Return Old Man',
'Floodgate': 'Open Floodgate',
'Big Bomb': 'Pick Up Big Bomb',
'Pyramid Crack': 'Detonate Big Bomb',
'Frog': 'Get Frog',
'Missing Smith': 'Return Smith',
'Dark Blacksmith Ruins': 'Pick Up Purple Chest',
'Middle Aged Man': 'Deliver Purple Chest',
'Trench 1 Switch': 'Trench 1 Filled',
'Trench 2 Switch': 'Trench 2 Filled',
'Swamp Drain': 'Drained Swamp',
'Turtle Medallion Pad': 'Turtle Opened',
'Attic Cracked Floor': 'Shining Light',
'Suspicious Maiden': 'Maiden Rescued',
'Revealing Light': 'Maiden Unmasked',
'Ice Block Drop': 'Convenient Block',
'Skull Star Tile': 'Hidden Pits',
'Zelda Pickup': None,
'Zelda Drop Off': None
}
flooded_keys_reverse = {
'Swamp Palace - Trench 1 Pot Key': 'Trench 1 Switch',
@@ -1524,7 +1548,7 @@ location_table = {'Mushroom': (0x180013, 0x186df8, False, 'in the woods'),
'Pyramid Fairy - Right': (0xe983, 0x186c17, False, 'near a fairy'),
'Brewery': (0xe9ec, 0x186c80, False, 'alone in a home'),
'C-Shaped House': (0xe9ef, 0x186c83, False, 'alone in a home'),
'Chest Game': (0xeda8, 0x186e2b, False, 'as a prize'),
'Chest Game': (0xeda8, 0x186e2b, False, 'as a game reward'),
'Bumper Cave Ledge': (0x180146, 0x186e15, False, 'on a ledge'),
'Mire Shed - Left': (0xea73, 0x186d07, False, 'near sparks'),
'Mire Shed - Right': (0xea76, 0x186d0a, False, 'near sparks'),
@@ -1665,16 +1689,16 @@ location_table = {'Mushroom': (0x180013, 0x186df8, False, 'in the woods'),
'Skull Star Tile': (None, None, False, None),
'Zelda Pickup': (None, None, False, None),
'Zelda Drop Off': (None, None, False, None),
'Eastern Palace - Prize': ([0x1209D, 0x53E76, 0x53E77, 0x180052, 0x180070, 0xC6FE, 0x186FE2], None, True, 'Eastern Palace'),
'Desert Palace - Prize': ([0x1209E, 0x53E7A, 0x53E7B, 0x180053, 0x180072, 0xC6FF, 0x186FE3], None, True, 'Desert Palace'),
'Tower of Hera - Prize': ([0x120A5, 0x53E78, 0x53E79, 0x18005A, 0x180071, 0xC706, 0x186FEA], None, True, 'Tower of Hera'),
'Palace of Darkness - Prize': ([0x120A1, 0x53E7C, 0x53E7D, 0x180056, 0x180073, 0xC702, 0x186FE6], None, True, 'Palace of Darkness'),
'Swamp Palace - Prize': ([0x120A0, 0x53E88, 0x53E89, 0x180055, 0x180079, 0xC701, 0x186FE5], None, True, 'Swamp Palace'),
'Thieves\' Town - Prize': ([0x120A6, 0x53E82, 0x53E83, 0x18005B, 0x180076, 0xC707, 0x186FEB], None, True, 'Thieves Town'),
'Skull Woods - Prize': ([0x120A3, 0x53E7E, 0x53E7F, 0x180058, 0x180074, 0xC704, 0x186FE8], None, True, 'Skull Woods'),
'Ice Palace - Prize': ([0x120A4, 0x53E86, 0x53E87, 0x180059, 0x180078, 0xC705, 0x186FE9], None, True, 'Ice Palace'),
'Misery Mire - Prize': ([0x120A2, 0x53E84, 0x53E85, 0x180057, 0x180077, 0xC703, 0x186FE7], None, True, 'Misery Mire'),
'Turtle Rock - Prize': ([0x120A7, 0x53E80, 0x53E81, 0x18005C, 0x180075, 0xC708, 0x186FEC], None, True, 'Turtle Rock'),
'Eastern Palace - Prize': (0xC6FE, 0x186E2C, True, 'with the Armos'),
'Desert Palace - Prize': (0xC6FF, 0x186E2D, True, 'with Lanmolas'),
'Tower of Hera - Prize': (0xC706, 0x186E2E, True, 'with Moldorm'),
'Palace of Darkness - Prize': (0xC702, 0x186E2F, True, 'with Helmasaur King'),
'Swamp Palace - Prize': (0xC701, 0x186E30, True, 'with Arrghus'),
'Skull Woods - Prize': (0xC704, 0x186E31, True, 'with Mothula'),
'Thieves\' Town - Prize': (0xC707, 0x186E32, True, 'with Blind'),
'Ice Palace - Prize': (0xC705, 0x186E33, True, 'with Kholdstare'),
'Misery Mire - Prize': (0xC703, 0x186E34, True, 'with Vitreous'),
'Turtle Rock - Prize': (0xC708, 0x186E35, True, 'with Trinexx'),
'Kakariko Shop - Left': (None, None, False, 'for sale in Kakariko'),
'Kakariko Shop - Middle': (None, None, False, 'for sale in Kakariko'),
'Kakariko Shop - Right': (None, None, False, 'for sale in Kakariko'),