Merge pull request #483 from espeon65536/oot
Ocarina of Time: V6.2 updates
This commit is contained in:
		
						commit
						76663f819b
					
				| 
						 | 
				
			
			@ -634,7 +634,8 @@ def __renderOoTTracker(multisave: Dict[str, Any], room: Room, locations: Dict[in
 | 
			
		|||
        "Shadow Temple":            (67485, 67532),
 | 
			
		||||
        "Spirit Temple":            (67533, 67582),
 | 
			
		||||
        "Ice Cavern":               (67583, 67596),
 | 
			
		||||
        "Gerudo Training Grounds":  (67597, 67635),
 | 
			
		||||
        "Gerudo Training Ground":   (67597, 67635),
 | 
			
		||||
        "Thieves' Hideout":         (67259, 67263),
 | 
			
		||||
        "Ganon's Castle":           (67636, 67673),
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -642,7 +643,7 @@ def __renderOoTTracker(multisave: Dict[str, Any], room: Room, locations: Dict[in
 | 
			
		|||
        full_name = lookup_any_location_id_to_name[id]
 | 
			
		||||
        if id == 67673:
 | 
			
		||||
            return full_name[13:]  # Ganons Tower Boss Key Chest
 | 
			
		||||
        if area != 'Overworld':
 | 
			
		||||
        if area not in ["Overworld", "Thieves' Hideout"]:
 | 
			
		||||
            # trim dungeon name. leaves an extra space that doesn't display, or trims fully for DC/Jabu/GC
 | 
			
		||||
            return full_name[len(area):]
 | 
			
		||||
        return full_name
 | 
			
		||||
| 
						 | 
				
			
			@ -653,6 +654,13 @@ def __renderOoTTracker(multisave: Dict[str, Any], room: Room, locations: Dict[in
 | 
			
		|||
    checks_done = {area: len(list(filter(lambda x: x, location_info[area].values()))) for area in area_id_ranges}
 | 
			
		||||
    checks_in_area = {area: len([id for id in range(min_id, max_id+1) if id in locations[player]]) 
 | 
			
		||||
        for area, (min_id, max_id) in area_id_ranges.items()}
 | 
			
		||||
 | 
			
		||||
    # Remove Thieves' Hideout checks from Overworld, since it's in the middle of the range
 | 
			
		||||
    checks_in_area["Overworld"] -= checks_in_area["Thieves' Hideout"]
 | 
			
		||||
    checks_done["Overworld"] -= checks_done["Thieves' Hideout"]
 | 
			
		||||
    for loc in location_info["Thieves' Hideout"]:
 | 
			
		||||
        del location_info["Overworld"][loc]
 | 
			
		||||
 | 
			
		||||
    checks_done['Total'] = sum(checks_done.values())
 | 
			
		||||
    checks_in_area['Total'] = sum(checks_in_area.values())
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -670,7 +678,8 @@ def __renderOoTTracker(multisave: Dict[str, Any], room: Room, locations: Dict[in
 | 
			
		|||
        "Spirit Temple":            inventory[66178],
 | 
			
		||||
        "Shadow Temple":            inventory[66179],
 | 
			
		||||
        "Bottom of the Well":       inventory[66180],
 | 
			
		||||
        "Gerudo Training Grounds":  inventory[66181],
 | 
			
		||||
        "Gerudo Training Ground":   inventory[66181],
 | 
			
		||||
        "Thieves' Hideout":         inventory[66182],
 | 
			
		||||
        "Ganon's Castle":           inventory[66183],
 | 
			
		||||
    }
 | 
			
		||||
    boss_key_counts = {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1546,7 +1546,7 @@ local player_names_address  = coop_context + 20
 | 
			
		|||
local player_name_length    = 8 -- 8 bytes
 | 
			
		||||
local rom_name_location     = player_names_address + 0x800
 | 
			
		||||
 | 
			
		||||
local master_quest_table_address = rando_context + 0xB220
 | 
			
		||||
local master_quest_table_address = rando_context + 0xB5A8
 | 
			
		||||
 | 
			
		||||
local save_context_addr = 0x11A5D0
 | 
			
		||||
local internal_count_addr = save_context_addr + 0x90
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -87,8 +87,8 @@ dungeon_table = [
 | 
			
		|||
        'dungeon_item': 1,
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        'name': 'Gerudo Training Grounds',
 | 
			
		||||
        'hint': 'the Gerudo Training Grounds',
 | 
			
		||||
        'name': 'Gerudo Training Ground',
 | 
			
		||||
        'hint': 'the Gerudo Training Ground',
 | 
			
		||||
        'font_color': 'Yellow',
 | 
			
		||||
        'boss_key':     0, 
 | 
			
		||||
        'small_key':    9,
 | 
			
		||||
| 
						 | 
				
			
			@ -122,7 +122,7 @@ def create_dungeons(ootworld):
 | 
			
		|||
        hint = dungeon_info['hint'] if 'hint' in dungeon_info else name
 | 
			
		||||
        font_color = dungeon_info['font_color'] if 'font_color' in dungeon_info else 'White'
 | 
			
		||||
        
 | 
			
		||||
        if ootworld.logic_rules == 'glitchless':
 | 
			
		||||
        if ootworld.logic_rules == 'glitchless' or ootworld.logic_rules == 'no_logic':  # ER + NL
 | 
			
		||||
            if not ootworld.dungeon_mq[name]:
 | 
			
		||||
                dungeon_json = os.path.join(data_path('World'), name + '.json')
 | 
			
		||||
            else:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -93,8 +93,8 @@ entrance_shuffle_table = [
 | 
			
		|||
                        ('Bottom of the Well -> Kakariko Village',                          { 'index': 0x02A6 })),
 | 
			
		||||
    ('Dungeon',         ('ZF Ice Ledge -> Ice Cavern Beginning',                            { 'index': 0x0088 }),
 | 
			
		||||
                        ('Ice Cavern Beginning -> ZF Ice Ledge',                            { 'index': 0x03D4 })),
 | 
			
		||||
    ('Dungeon',         ('Gerudo Fortress -> Gerudo Training Grounds Lobby',                { 'index': 0x0008 }),
 | 
			
		||||
                        ('Gerudo Training Grounds Lobby -> Gerudo Fortress',                { 'index': 0x03A8 })),
 | 
			
		||||
    ('Dungeon',         ('Gerudo Fortress -> Gerudo Training Ground Lobby',                 { 'index': 0x0008 }),
 | 
			
		||||
                        ('Gerudo Training Ground Lobby -> Gerudo Fortress',                 { 'index': 0x03A8 })),
 | 
			
		||||
 | 
			
		||||
    ('Interior',        ('Kokiri Forest -> KF Midos House',                                 { 'index': 0x0433 }),
 | 
			
		||||
                        ('KF Midos House -> Kokiri Forest',                                 { 'index': 0x0443 })),
 | 
			
		||||
| 
						 | 
				
			
			@ -251,8 +251,8 @@ entrance_shuffle_table = [
 | 
			
		|||
                        ('Graveyard Shield Grave -> Graveyard',                             { 'index': 0x035D })),
 | 
			
		||||
    ('Grave',           ('Graveyard -> Graveyard Heart Piece Grave',                        { 'index': 0x031C }),
 | 
			
		||||
                        ('Graveyard Heart Piece Grave -> Graveyard',                        { 'index': 0x0361 })),
 | 
			
		||||
    ('Grave',           ('Graveyard -> Graveyard Composers Grave',                          { 'index': 0x002D }),
 | 
			
		||||
                        ('Graveyard Composers Grave -> Graveyard',                          { 'index': 0x050B })),
 | 
			
		||||
    ('Grave',           ('Graveyard -> Graveyard Royal Familys Tomb',                       { 'index': 0x002D }),
 | 
			
		||||
                        ('Graveyard Royal Familys Tomb -> Graveyard',                       { 'index': 0x050B })),
 | 
			
		||||
    ('Grave',           ('Graveyard -> Graveyard Dampes Grave',                             { 'index': 0x044F }),
 | 
			
		||||
                        ('Graveyard Dampes Grave -> Graveyard',                             { 'index': 0x0359 })),
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,7 +6,7 @@ from BaseClasses import LocationProgressType
 | 
			
		|||
#       DMC     Death Mountain Crater
 | 
			
		||||
#       DMT     Death Mountain Trail
 | 
			
		||||
#       GC      Goron City
 | 
			
		||||
#       GF      Gerudo Fortress
 | 
			
		||||
#       GF      Gerudo's Fortress
 | 
			
		||||
#       GS      Gold Skulltula
 | 
			
		||||
#       GV      Gerudo Valley
 | 
			
		||||
#       HC      Hyrule Castle
 | 
			
		||||
| 
						 | 
				
			
			@ -17,6 +17,7 @@ from BaseClasses import LocationProgressType
 | 
			
		|||
#       LW      Lost Woods
 | 
			
		||||
#       OGC     Outside Ganon's Castle
 | 
			
		||||
#       SFM     Sacred Forest Meadow
 | 
			
		||||
#       TH      Thieves' Hideout
 | 
			
		||||
#       ZD      Zora's Domain
 | 
			
		||||
#       ZF      Zora's Fountain
 | 
			
		||||
#       ZR      Zora's River
 | 
			
		||||
| 
						 | 
				
			
			@ -247,7 +248,7 @@ hintTable = {
 | 
			
		|||
    'BossKey':                                                  (["a master of unlocking", "a dungeon's master pass"], "a Boss Key", 'item'),
 | 
			
		||||
    'GanonBossKey':                                             (["a master of unlocking", "a dungeon's master pass"], "a Boss Key", 'item'),
 | 
			
		||||
    'SmallKey':                                                 (["a tool for unlocking", "a dungeon pass", "a lock remover", "a lockpick"], "a Small Key", 'item'),
 | 
			
		||||
    'FortressSmallKey':                                         (["a get out of jail free card"], "a Jail Key", 'item'),
 | 
			
		||||
    'HideoutSmallKey':                                          (["a get out of jail free card"], "a Jail Key", 'item'),
 | 
			
		||||
    'KeyError':                                                 (["something mysterious", "an unknown treasure"], "An Error (Please Report This)", 'item'),
 | 
			
		||||
    'Arrows (5)':                                               (["a few danger darts", "a few sharp shafts"], "Arrows (5 pieces)", 'item'),
 | 
			
		||||
    'Arrows (10)':                                              (["some danger darts", "some sharp shafts"], "Arrows (10 pieces)", 'item'),
 | 
			
		||||
| 
						 | 
				
			
			@ -271,7 +272,7 @@ hintTable = {
 | 
			
		|||
    'KF Links House Cow':                                          ("the #bovine bounty of a horseback hustle# gifts", "#Malon's obstacle course# leads to", 'always'),
 | 
			
		||||
 | 
			
		||||
    'Song from Ocarina of Time':                                   ("the #Ocarina of Time# teaches", None, ['song', 'sometimes']),
 | 
			
		||||
    'Song from Composers Grave':                                   (["#ReDead in the Composers' Grave# guard", "the #Composer Brothers wrote#"], None, ['song', 'sometimes']),
 | 
			
		||||
    'Song from Royal Familys Tomb':                                (["#ReDead in the royal tomb# guard", "the #Composer Brothers wrote#"], None, ['song', 'sometimes']),
 | 
			
		||||
    'Sheik in Forest':                                             ("#in a meadow# Sheik teaches", None, ['song', 'sometimes']),
 | 
			
		||||
    'Sheik at Temple':                                             ("Sheik waits at a #monument to time# to teach", None, ['song', 'sometimes']),
 | 
			
		||||
    'Sheik in Crater':                                             ("the #crater's melody# is", None, ['song', 'sometimes']),
 | 
			
		||||
| 
						 | 
				
			
			@ -304,7 +305,7 @@ hintTable = {
 | 
			
		|||
    'ZF GS Hidden Cave':                                           ("a spider high #above the icy waters# holds", None, ['overworld', 'sometimes']),
 | 
			
		||||
    'Wasteland Chest':                                             (["#deep in the wasteland# is", "beneath #the sands#, flames reveal"], None, ['overworld', 'sometimes']),
 | 
			
		||||
    'Wasteland GS':                                                ("a #spider in the wasteland# holds", None, ['overworld', 'sometimes']),
 | 
			
		||||
    'Graveyard Composers Grave Chest':                             (["#flames in the Composers' Grave# reveal", "the #Composer Brothers hid#"], None, ['overworld', 'sometimes']),
 | 
			
		||||
    'Royal Familys Tomb Chest':                                    (["#flames in the royal tomb# reveal", "the #Composer Brothers hid#"], None, ['overworld', 'sometimes']),
 | 
			
		||||
    'ZF Bottom Freestanding PoH':                                  ("#under the icy waters# lies", None, ['overworld', 'sometimes']),
 | 
			
		||||
    'GC Pot Freestanding PoH':                                     ("spinning #Goron pottery# contains", None, ['overworld', 'sometimes']),
 | 
			
		||||
    'ZD King Zora Thawed':                                         ("a #defrosted dignitary# gifts", "unfreezing #King Zora# grants", ['overworld', 'sometimes']),
 | 
			
		||||
| 
						 | 
				
			
			@ -327,10 +328,10 @@ hintTable = {
 | 
			
		|||
    'Water Temple MQ Freestanding Key':                            ("hidden in a #box under the lake# lies", "hidden in a #box in the Water Temple# lies", ['dungeon', 'sometimes']),
 | 
			
		||||
    'Water Temple MQ GS Freestanding Key Area':                    ("the #locked spider under the lake# holds", "the #locked spider in the Water Temple# holds", ['dungeon', 'sometimes']),
 | 
			
		||||
    'Water Temple MQ GS Triple Wall Torch':                        ("a spider behind a #gate under the lake# holds", "a spider behind a #gate in the Water Temple# holds", ['dungeon', 'sometimes']),
 | 
			
		||||
    'Gerudo Training Grounds Underwater Silver Rupee Chest':       (["those who seek #sunken silver rupees# will find", "the #thieves' underwater training# rewards"], None, ['dungeon', 'sometimes']),
 | 
			
		||||
    'Gerudo Training Grounds MQ Underwater Silver Rupee Chest':    (["those who seek #sunken silver rupees# will find", "the #thieves' underwater training# rewards"], None, ['dungeon', 'sometimes']),
 | 
			
		||||
    'Gerudo Training Grounds Maze Path Final Chest':               ("the final prize of #the thieves' training# is", None, ['dungeon', 'sometimes']),
 | 
			
		||||
    'Gerudo Training Grounds MQ Ice Arrows Chest':                 ("the final prize of #the thieves' training# is", None, ['dungeon', 'sometimes']),
 | 
			
		||||
    'Gerudo Training Ground Underwater Silver Rupee Chest':        (["those who seek #sunken silver rupees# will find", "the #thieves' underwater training# rewards"], None, ['dungeon', 'sometimes']),
 | 
			
		||||
    'Gerudo Training Ground MQ Underwater Silver Rupee Chest':     (["those who seek #sunken silver rupees# will find", "the #thieves' underwater training# rewards"], None, ['dungeon', 'sometimes']),
 | 
			
		||||
    'Gerudo Training Ground Maze Path Final Chest':                ("the final prize of #the thieves' training# is", None, ['dungeon', 'sometimes']),
 | 
			
		||||
    'Gerudo Training Ground MQ Ice Arrows Chest':                  ("the final prize of #the thieves' training# is", None, ['dungeon', 'sometimes']),
 | 
			
		||||
    'Bottom of the Well Lens of Truth Chest':                      (["the well's #grasping ghoul# hides", "a #nether dweller in the well# holds"], "#Dead Hand in the well# holds", ['dungeon', 'sometimes']),
 | 
			
		||||
    'Bottom of the Well MQ Compass Chest':                         (["the well's #grasping ghoul# hides", "a #nether dweller in the well# holds"], "#Dead Hand in the well# holds", ['dungeon', 'sometimes']),
 | 
			
		||||
    'Spirit Temple Silver Gauntlets Chest':                        ("the treasure #sought by Nabooru# is", "upon the #Colossus's right hand# is", ['dungeon', 'sometimes']),
 | 
			
		||||
| 
						 | 
				
			
			@ -402,7 +403,7 @@ hintTable = {
 | 
			
		|||
    'LLR Talons Chickens':                                         ("#finding Super Cuccos# is rewarded with", None, 'exclude'),
 | 
			
		||||
    'GC Rolling Goron as Child':                                   ("the prize offered by a #large rolling Goron# is", None, 'exclude'),
 | 
			
		||||
    'LH Underwater Item':                                          ("the #sunken treasure in a lake# is", None, 'exclude'),
 | 
			
		||||
    'GF Gerudo Membership Card':                                   ("#rescuing captured carpenters# is rewarded with", None, 'exclude'),
 | 
			
		||||
    'Hideout Gerudo Membership Card':                              ("#rescuing captured carpenters# is rewarded with", None, 'exclude'),
 | 
			
		||||
    'Wasteland Bombchu Salesman':                                  ("a #carpet guru# sells", None, 'exclude'),
 | 
			
		||||
 | 
			
		||||
    'Kak Impas House Freestanding PoH':                            ("#imprisoned in a house# lies", None, 'exclude'),
 | 
			
		||||
| 
						 | 
				
			
			@ -422,10 +423,10 @@ hintTable = {
 | 
			
		|||
    'DMT Freestanding PoH':                                        ("above a #mountain cavern entrance# is", None, 'exclude'),
 | 
			
		||||
    'DMC Wall Freestanding PoH':                                   ("nestled in a #volcanic wall# is", None, 'exclude'),
 | 
			
		||||
    'DMC Volcano Freestanding PoH':                                ("obscured by #volcanic ash# is", None, 'exclude'),
 | 
			
		||||
    'GF North F1 Carpenter':                                       ("#defeating Gerudo guards# reveals", None, 'exclude'),
 | 
			
		||||
    'GF North F2 Carpenter':                                       ("#defeating Gerudo guards# reveals", None, 'exclude'),
 | 
			
		||||
    'GF South F1 Carpenter':                                       ("#defeating Gerudo guards# reveals", None, 'exclude'),
 | 
			
		||||
    'GF South F2 Carpenter':                                       ("#defeating Gerudo guards# reveals", None, 'exclude'),
 | 
			
		||||
    'Hideout Jail Guard (1 Torch)':                                ("#defeating Gerudo guards# reveals", None, 'exclude'),
 | 
			
		||||
    'Hideout Jail Guard (2 Torches)':                              ("#defeating Gerudo guards# reveals", None, 'exclude'),
 | 
			
		||||
    'Hideout Jail Guard (3 Torches)':                              ("#defeating Gerudo guards# reveals", None, 'exclude'),
 | 
			
		||||
    'Hideout Jail Guard (4 Torches)':                              ("#defeating Gerudo guards# reveals", None, 'exclude'),
 | 
			
		||||
 | 
			
		||||
    'Deku Tree Map Chest':                                         ("in the #center of the Deku Tree# lies", None, 'exclude'),
 | 
			
		||||
    'Deku Tree Slingshot Chest':                                   ("the #treasure guarded by a scrub# in the Deku Tree is", None, 'exclude'),
 | 
			
		||||
| 
						 | 
				
			
			@ -641,42 +642,42 @@ hintTable = {
 | 
			
		|||
    'Ice Cavern MQ Map Chest':                                     ("a #wall of ice# protects", None, 'exclude'),
 | 
			
		||||
    'Ice Cavern MQ Freestanding PoH':                              ("#winds of ice# surround", None, 'exclude'),
 | 
			
		||||
 | 
			
		||||
    'Gerudo Training Grounds Lobby Left Chest':                    ("a #blinded eye in the Gerudo Training Grounds# drops", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds Lobby Right Chest':                   ("a #blinded eye in the Gerudo Training Grounds# drops", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds Stalfos Chest':                       ("#soldiers walking on shifting sands# in the Gerudo Training Grounds guard", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds Beamos Chest':                        ("#reptilian warriors# in the Gerudo Training Grounds protect", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds Hidden Ceiling Chest':                ("the #Eye of Truth# in the Gerudo Training Grounds reveals", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds Maze Path First Chest':               ("the first prize of #the thieves' training# is", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds Maze Path Second Chest':              ("the second prize of #the thieves' training# is", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds Maze Path Third Chest':               ("the third prize of #the thieves' training# is", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds Maze Right Central Chest':            ("the #Song of Time# in the Gerudo Training Grounds leads to", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds Maze Right Side Chest':               ("the #Song of Time# in the Gerudo Training Grounds leads to", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds Hammer Room Clear Chest':             ("#fiery foes# in the Gerudo Training Grounds guard", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds Hammer Room Switch Chest':            ("#engulfed in flame# where thieves train lies", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds Eye Statue Chest':                    ("thieves #blind four faces# to find", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds Near Scarecrow Chest':                ("thieves #blind four faces# to find", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds Before Heavy Block Chest':            ("#before a block of silver# thieves can find", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds Heavy Block First Chest':             ("a #feat of strength# rewards thieves with", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds Heavy Block Second Chest':            ("a #feat of strength# rewards thieves with", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds Heavy Block Third Chest':             ("a #feat of strength# rewards thieves with", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds Heavy Block Fourth Chest':            ("a #feat of strength# rewards thieves with", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds Freestanding Key':                    ("the #Song of Time# in the Gerudo Training Grounds leads to", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground Lobby Left Chest':                     ("a #blinded eye in the Gerudo Training Ground# drops", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground Lobby Right Chest':                    ("a #blinded eye in the Gerudo Training Ground# drops", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground Stalfos Chest':                        ("#soldiers walking on shifting sands# in the Gerudo Training Ground guard", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground Beamos Chest':                         ("#reptilian warriors# in the Gerudo Training Ground protect", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground Hidden Ceiling Chest':                 ("the #Eye of Truth# in the Gerudo Training Ground reveals", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground Maze Path First Chest':                ("the first prize of #the thieves' training# is", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground Maze Path Second Chest':               ("the second prize of #the thieves' training# is", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground Maze Path Third Chest':                ("the third prize of #the thieves' training# is", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground Maze Right Central Chest':             ("the #Song of Time# in the Gerudo Training Ground leads to", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground Maze Right Side Chest':                ("the #Song of Time# in the Gerudo Training Ground leads to", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground Hammer Room Clear Chest':              ("#fiery foes# in the Gerudo Training Ground guard", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground Hammer Room Switch Chest':             ("#engulfed in flame# where thieves train lies", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground Eye Statue Chest':                     ("thieves #blind four faces# to find", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground Near Scarecrow Chest':                 ("thieves #blind four faces# to find", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground Before Heavy Block Chest':             ("#before a block of silver# thieves can find", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground Heavy Block First Chest':              ("a #feat of strength# rewards thieves with", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground Heavy Block Second Chest':             ("a #feat of strength# rewards thieves with", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground Heavy Block Third Chest':              ("a #feat of strength# rewards thieves with", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground Heavy Block Fourth Chest':             ("a #feat of strength# rewards thieves with", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground Freestanding Key':                     ("the #Song of Time# in the Gerudo Training Ground leads to", None, 'exclude'),
 | 
			
		||||
 | 
			
		||||
    'Gerudo Training Grounds MQ Lobby Right Chest':                ("#thieves prepare for training# with", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds MQ Lobby Left Chest':                 ("#thieves prepare for training# with", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds MQ First Iron Knuckle Chest':         ("#soldiers walking on shifting sands# in the Gerudo Training Grounds guard", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds MQ Before Heavy Block Chest':         ("#before a block of silver# thieves can find", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds MQ Eye Statue Chest':                 ("thieves #blind four faces# to find", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds MQ Flame Circle Chest':               ("#engulfed in flame# where thieves train lies", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds MQ Second Iron Knuckle Chest':        ("#fiery foes# in the Gerudo Training Grounds guard", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds MQ Dinolfos Chest':                   ("#reptilian warriors# in the Gerudo Training Grounds protect", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds MQ Maze Right Central Chest':         ("a #path of fire# leads thieves to", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds MQ Maze Path First Chest':            ("the first prize of #the thieves' training# is", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds MQ Maze Right Side Chest':            ("a #path of fire# leads thieves to", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds MQ Maze Path Third Chest':            ("the third prize of #the thieves' training# is", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds MQ Maze Path Second Chest':           ("the second prize of #the thieves' training# is", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds MQ Hidden Ceiling Chest':             ("the #Eye of Truth# in the Gerudo Training Grounds reveals", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Grounds MQ Heavy Block Chest':                ("a #feat of strength# rewards thieves with", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground MQ Lobby Right Chest':                 ("#thieves prepare for training# with", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground MQ Lobby Left Chest':                  ("#thieves prepare for training# with", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground MQ First Iron Knuckle Chest':          ("#soldiers walking on shifting sands# in the Gerudo Training Ground guard", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground MQ Before Heavy Block Chest':          ("#before a block of silver# thieves can find", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground MQ Eye Statue Chest':                  ("thieves #blind four faces# to find", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground MQ Flame Circle Chest':                ("#engulfed in flame# where thieves train lies", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground MQ Second Iron Knuckle Chest':         ("#fiery foes# in the Gerudo Training Ground guard", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground MQ Dinolfos Chest':                    ("#reptilian warriors# in the Gerudo Training Ground protect", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground MQ Maze Right Central Chest':          ("a #path of fire# leads thieves to", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground MQ Maze Path First Chest':             ("the first prize of #the thieves' training# is", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground MQ Maze Right Side Chest':             ("a #path of fire# leads thieves to", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground MQ Maze Path Third Chest':             ("the third prize of #the thieves' training# is", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground MQ Maze Path Second Chest':            ("the second prize of #the thieves' training# is", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground MQ Hidden Ceiling Chest':              ("the #Eye of Truth# in the Gerudo Training Ground reveals", None, 'exclude'),
 | 
			
		||||
    'Gerudo Training Ground MQ Heavy Block Chest':                 ("a #feat of strength# rewards thieves with", None, 'exclude'),
 | 
			
		||||
 | 
			
		||||
    'Ganons Tower Boss Key Chest':                                 ("the #Evil King# hoards", None, 'exclude'),
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1038,7 +1039,7 @@ hintTable = {
 | 
			
		|||
    'GV Fortress Side -> GV Carpenter Tent':                    ("a #tent in the valley# covers", None, 'entrance'),
 | 
			
		||||
    'Graveyard Warp Pad Region -> Shadow Temple Entryway':      ("at the #back of the Graveyard#, there is", None, 'entrance'),
 | 
			
		||||
    'Lake Hylia -> Water Temple Lobby':                         ("deep #under a vast lake#, one can find", None, 'entrance'),
 | 
			
		||||
    'Gerudo Fortress -> Gerudo Training Grounds Lobby':         ("paying a #fee to the Gerudos# grants access to", None, 'entrance'),
 | 
			
		||||
    'Gerudo Fortress -> Gerudo Training Ground Lobby':          ("paying a #fee to the Gerudos# grants access to", None, 'entrance'),
 | 
			
		||||
    'Zoras Fountain -> Jabu Jabus Belly Beginning':             ("inside #Jabu Jabu#, one can find", None, 'entrance'),
 | 
			
		||||
    'Kakariko Village -> Bottom of the Well':                   ("a #village well# leads to", None, 'entrance'),
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1085,7 +1086,7 @@ hintTable = {
 | 
			
		|||
    'ZF Great Fairy Fountain':                                  ("a #Great Fairy Fountain#", None, 'region'),
 | 
			
		||||
    'Graveyard Shield Grave':                                   ("a #grave with a free chest#", None, 'region'),
 | 
			
		||||
    'Graveyard Heart Piece Grave':                              ("a chest spawned by #Sun's Song#", None, 'region'),
 | 
			
		||||
    'Graveyard Composers Grave':                                ("the #Composers' Grave#", None, 'region'),
 | 
			
		||||
    'Royal Familys Tomb':                                       ("the #Royal Family's Tomb#", None, 'region'),
 | 
			
		||||
    'Graveyard Dampes Grave':                                   ("Dampé's Grave", None, 'region'),
 | 
			
		||||
    'DMT Cow Grotto':                                           ("a solitary #Cow#", None, 'region'),
 | 
			
		||||
    'HC Storms Grotto':                                         ("a sandy grotto with #fragile walls#", None, 'region'),
 | 
			
		||||
| 
						 | 
				
			
			@ -1198,7 +1199,7 @@ hintTable = {
 | 
			
		|||
    'Spirit Temple':                                            ("the goddess of the sand", "Spirit Temple", 'dungeonName'),
 | 
			
		||||
    'Ice Cavern':                                               ("a frozen maze", "Ice Cavern", 'dungeonName'),
 | 
			
		||||
    'Bottom of the Well':                                       ("a shadow\'s prison", "Bottom of the Well", 'dungeonName'),
 | 
			
		||||
    'Gerudo Training Grounds':                                  ("the test of thieves", "Gerudo Training Grounds", 'dungeonName'),
 | 
			
		||||
    'Gerudo Training Ground':                                   ("the test of thieves", "Gerudo Training Ground", 'dungeonName'),
 | 
			
		||||
    'Ganons Castle':                                            ("a conquered citadel", "Inside Ganon's Castle", 'dungeonName'),
 | 
			
		||||
    
 | 
			
		||||
    'Queen Gohma':                                              ("One inside an #ancient tree#...", "One in the #Deku Tree#...", 'boss'),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -636,7 +636,7 @@ def buildWorldGossipHints(world, checkedLocations=None):
 | 
			
		|||
    world.woth_dungeon = 0
 | 
			
		||||
 | 
			
		||||
    if checkedLocations is None:
 | 
			
		||||
        checkedLocations = {player: set() for player in world.world.player_ids}
 | 
			
		||||
        checkedLocations = {player: set() for player in world.world.get_all_ids()}
 | 
			
		||||
 | 
			
		||||
    # If Ganondorf hints Light Arrows and is reachable without them, add to checkedLocations to prevent extra hinting
 | 
			
		||||
    # Can only be forced with vanilla bridge or trials
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -570,15 +570,15 @@ vanillaSK = {
 | 
			
		|||
    'Forest Temple Well Chest': 'Small Key (Forest Temple)',
 | 
			
		||||
    'Ganons Castle Light Trial Invisible Enemies Chest': 'Small Key (Ganons Castle)',
 | 
			
		||||
    'Ganons Castle Light Trial Lullaby Chest': 'Small Key (Ganons Castle)',
 | 
			
		||||
    'Gerudo Training Grounds Beamos Chest': 'Small Key (Gerudo Training Grounds)',
 | 
			
		||||
    'Gerudo Training Grounds Eye Statue Chest': 'Small Key (Gerudo Training Grounds)',
 | 
			
		||||
    'Gerudo Training Grounds Hammer Room Switch Chest': 'Small Key (Gerudo Training Grounds)',
 | 
			
		||||
    'Gerudo Training Grounds Heavy Block Third Chest': 'Small Key (Gerudo Training Grounds)',
 | 
			
		||||
    'Gerudo Training Grounds Hidden Ceiling Chest': 'Small Key (Gerudo Training Grounds)',
 | 
			
		||||
    'Gerudo Training Grounds Near Scarecrow Chest': 'Small Key (Gerudo Training Grounds)',
 | 
			
		||||
    'Gerudo Training Grounds Stalfos Chest': 'Small Key (Gerudo Training Grounds)',
 | 
			
		||||
    'Gerudo Training Grounds Underwater Silver Rupee Chest': 'Small Key (Gerudo Training Grounds)',
 | 
			
		||||
    'Gerudo Training Grounds Freestanding Key': 'Small Key (Gerudo Training Grounds)',
 | 
			
		||||
    'Gerudo Training Ground Beamos Chest': 'Small Key (Gerudo Training Ground)',
 | 
			
		||||
    'Gerudo Training Ground Eye Statue Chest': 'Small Key (Gerudo Training Ground)',
 | 
			
		||||
    'Gerudo Training Ground Hammer Room Switch Chest': 'Small Key (Gerudo Training Ground)',
 | 
			
		||||
    'Gerudo Training Ground Heavy Block Third Chest': 'Small Key (Gerudo Training Ground)',
 | 
			
		||||
    'Gerudo Training Ground Hidden Ceiling Chest': 'Small Key (Gerudo Training Ground)',
 | 
			
		||||
    'Gerudo Training Ground Near Scarecrow Chest': 'Small Key (Gerudo Training Ground)',
 | 
			
		||||
    'Gerudo Training Ground Stalfos Chest': 'Small Key (Gerudo Training Ground)',
 | 
			
		||||
    'Gerudo Training Ground Underwater Silver Rupee Chest': 'Small Key (Gerudo Training Ground)',
 | 
			
		||||
    'Gerudo Training Ground Freestanding Key': 'Small Key (Gerudo Training Ground)',
 | 
			
		||||
    'Shadow Temple After Wind Hidden Chest': 'Small Key (Shadow Temple)',
 | 
			
		||||
    'Shadow Temple Early Silver Rupee Chest': 'Small Key (Shadow Temple)',
 | 
			
		||||
    'Shadow Temple Falling Spikes Switch Chest': 'Small Key (Shadow Temple)',
 | 
			
		||||
| 
						 | 
				
			
			@ -612,9 +612,9 @@ vanillaSK = {
 | 
			
		|||
    'Ganons Castle MQ Shadow Trial Eye Switch Chest': 'Small Key (Ganons Castle)',
 | 
			
		||||
    'Ganons Castle MQ Spirit Trial Sun Back Left Chest': 'Small Key (Ganons Castle)',
 | 
			
		||||
    'Ganons Castle MQ Forest Trial Freestanding Key': 'Small Key (Ganons Castle)',
 | 
			
		||||
    'Gerudo Training Grounds MQ Dinolfos Chest': 'Small Key (Gerudo Training Grounds)',
 | 
			
		||||
    'Gerudo Training Grounds MQ Flame Circle Chest': 'Small Key (Gerudo Training Grounds)',
 | 
			
		||||
    'Gerudo Training Grounds MQ Underwater Silver Rupee Chest': 'Small Key (Gerudo Training Grounds)',
 | 
			
		||||
    'Gerudo Training Ground MQ Dinolfos Chest': 'Small Key (Gerudo Training Ground)',
 | 
			
		||||
    'Gerudo Training Ground MQ Flame Circle Chest': 'Small Key (Gerudo Training Ground)',
 | 
			
		||||
    'Gerudo Training Ground MQ Underwater Silver Rupee Chest': 'Small Key (Gerudo Training Ground)',
 | 
			
		||||
    'Shadow Temple MQ Falling Spikes Switch Chest': 'Small Key (Shadow Temple)',
 | 
			
		||||
    'Shadow Temple MQ Invisible Blades Invisible Chest': 'Small Key (Shadow Temple)',
 | 
			
		||||
    'Shadow Temple MQ Early Gibdos Chest': 'Small Key (Shadow Temple)',
 | 
			
		||||
| 
						 | 
				
			
			@ -1031,7 +1031,7 @@ def get_pool_core(world):
 | 
			
		|||
            pool.extend(['Bombchus'] * 2)
 | 
			
		||||
        if not world.dungeon_mq['Bottom of the Well']:
 | 
			
		||||
            pool.extend(['Bombchus'])
 | 
			
		||||
        if world.dungeon_mq['Gerudo Training Grounds']:
 | 
			
		||||
        if world.dungeon_mq['Gerudo Training Ground']:
 | 
			
		||||
            pool.extend(['Bombchus'])
 | 
			
		||||
        if world.shuffle_medigoron_carpet_salesman:
 | 
			
		||||
            pool.append('Bombchus')
 | 
			
		||||
| 
						 | 
				
			
			@ -1044,7 +1044,7 @@ def get_pool_core(world):
 | 
			
		|||
                pool.extend(['Bombchus (10)'] * 2)
 | 
			
		||||
        if not world.dungeon_mq['Bottom of the Well']:
 | 
			
		||||
                pool.extend(['Bombchus (10)'])
 | 
			
		||||
        if world.dungeon_mq['Gerudo Training Grounds']:
 | 
			
		||||
        if world.dungeon_mq['Gerudo Training Ground']:
 | 
			
		||||
                pool.extend(['Bombchus (10)'])
 | 
			
		||||
        if world.dungeon_mq['Ganons Castle']:
 | 
			
		||||
            pool.extend(['Bombchus (10)'])
 | 
			
		||||
| 
						 | 
				
			
			@ -1058,49 +1058,49 @@ def get_pool_core(world):
 | 
			
		|||
        skip_in_spoiler_locations.append('Wasteland Bombchu Salesman')
 | 
			
		||||
 | 
			
		||||
    pool.extend(['Ice Trap'])
 | 
			
		||||
    if not world.dungeon_mq['Gerudo Training Grounds']:
 | 
			
		||||
    if not world.dungeon_mq['Gerudo Training Ground']:
 | 
			
		||||
        pool.extend(['Ice Trap'])
 | 
			
		||||
    if not world.dungeon_mq['Ganons Castle']:
 | 
			
		||||
        pool.extend(['Ice Trap'] * 4)
 | 
			
		||||
 | 
			
		||||
    if world.gerudo_fortress == 'open':
 | 
			
		||||
        placed_items['GF North F1 Carpenter'] = 'Recovery Heart'
 | 
			
		||||
        placed_items['GF North F2 Carpenter'] = 'Recovery Heart'
 | 
			
		||||
        placed_items['GF South F1 Carpenter'] = 'Recovery Heart'
 | 
			
		||||
        placed_items['GF South F2 Carpenter'] = 'Recovery Heart'
 | 
			
		||||
        skip_in_spoiler_locations.extend(['GF North F1 Carpenter', 'GF North F2 Carpenter', 'GF South F1 Carpenter', 'GF South F2 Carpenter'])
 | 
			
		||||
        placed_items['Hideout Jail Guard (1 Torch)'] = 'Recovery Heart'
 | 
			
		||||
        placed_items['Hideout Jail Guard (2 Torches)'] = 'Recovery Heart'
 | 
			
		||||
        placed_items['Hideout Jail Guard (3 Torches)'] = 'Recovery Heart'
 | 
			
		||||
        placed_items['Hideout Jail Guard (4 Torches)'] = 'Recovery Heart'
 | 
			
		||||
        skip_in_spoiler_locations.extend(['Hideout Jail Guard (1 Torch)', 'Hideout Jail Guard (2 Torches)', 'Hideout Jail Guard (3 Torches)', 'Hideout Jail Guard (4 Torches)'])
 | 
			
		||||
    elif world.shuffle_fortresskeys in ['any_dungeon', 'overworld', 'keysanity']:
 | 
			
		||||
        if world.gerudo_fortress == 'fast':
 | 
			
		||||
            pool.append('Small Key (Gerudo Fortress)')
 | 
			
		||||
            placed_items['GF North F2 Carpenter'] = 'Recovery Heart'
 | 
			
		||||
            placed_items['GF South F1 Carpenter'] = 'Recovery Heart'
 | 
			
		||||
            placed_items['GF South F2 Carpenter'] = 'Recovery Heart'
 | 
			
		||||
            skip_in_spoiler_locations.extend(['GF North F2 Carpenter', 'GF South F1 Carpenter', 'GF South F2 Carpenter'])
 | 
			
		||||
            pool.append('Small Key (Thieves Hideout)')
 | 
			
		||||
            placed_items['Hideout Jail Guard (2 Torches)'] = 'Recovery Heart'
 | 
			
		||||
            placed_items['Hideout Jail Guard (3 Torches)'] = 'Recovery Heart'
 | 
			
		||||
            placed_items['Hideout Jail Guard (4 Torches)'] = 'Recovery Heart'
 | 
			
		||||
            skip_in_spoiler_locations.extend(['Hideout Jail Guard (2 Torches)', 'Hideout Jail Guard (3 Torches)', 'Hideout Jail Guard (4 Torches)'])
 | 
			
		||||
        else:
 | 
			
		||||
            pool.extend(['Small Key (Gerudo Fortress)'] * 4)
 | 
			
		||||
            pool.extend(['Small Key (Thieves Hideout)'] * 4)
 | 
			
		||||
        if world.item_pool_value == 'plentiful':
 | 
			
		||||
            pending_junk_pool.append('Small Key (Gerudo Fortress)')
 | 
			
		||||
            pending_junk_pool.append('Small Key (Thieves Hideout)')
 | 
			
		||||
    else:
 | 
			
		||||
        if world.gerudo_fortress == 'fast':
 | 
			
		||||
            placed_items['GF North F1 Carpenter'] = 'Small Key (Gerudo Fortress)'
 | 
			
		||||
            placed_items['GF North F2 Carpenter'] = 'Recovery Heart'
 | 
			
		||||
            placed_items['GF South F1 Carpenter'] = 'Recovery Heart'
 | 
			
		||||
            placed_items['GF South F2 Carpenter'] = 'Recovery Heart'
 | 
			
		||||
            skip_in_spoiler_locations.extend(['GF North F2 Carpenter', 'GF South F1 Carpenter', 'GF South F2 Carpenter'])
 | 
			
		||||
            placed_items['Hideout Jail Guard (1 Torch)']   = 'Small Key (Thieves Hideout)'
 | 
			
		||||
            placed_items['Hideout Jail Guard (2 Torches)'] = 'Recovery Heart'
 | 
			
		||||
            placed_items['Hideout Jail Guard (3 Torches)'] = 'Recovery Heart'
 | 
			
		||||
            placed_items['Hideout Jail Guard (4 Torches)'] = 'Recovery Heart'
 | 
			
		||||
            skip_in_spoiler_locations.extend(['Hideout Jail Guard (2 Torches)', 'Hideout Jail Guard (3 Torches)', 'Hideout Jail Guard (4 Torches)'])
 | 
			
		||||
        else:
 | 
			
		||||
            placed_items['GF North F1 Carpenter'] = 'Small Key (Gerudo Fortress)'
 | 
			
		||||
            placed_items['GF North F2 Carpenter'] = 'Small Key (Gerudo Fortress)'
 | 
			
		||||
            placed_items['GF South F1 Carpenter'] = 'Small Key (Gerudo Fortress)'
 | 
			
		||||
            placed_items['GF South F2 Carpenter'] = 'Small Key (Gerudo Fortress)'
 | 
			
		||||
            placed_items['Hideout Jail Guard (1 Torch)']   = 'Small Key (Gerudo Fortress)'
 | 
			
		||||
            placed_items['Hideout Jail Guard (2 Torches)'] = 'Small Key (Gerudo Fortress)'
 | 
			
		||||
            placed_items['Hideout Jail Guard (3 Torches)'] = 'Small Key (Gerudo Fortress)'
 | 
			
		||||
            placed_items['Hideout Jail Guard (4 Torches)'] = 'Small Key (Gerudo Fortress)'
 | 
			
		||||
 | 
			
		||||
    if world.shuffle_gerudo_card and world.gerudo_fortress != 'open':
 | 
			
		||||
        pool.append('Gerudo Membership Card')
 | 
			
		||||
    elif world.shuffle_gerudo_card:
 | 
			
		||||
        pending_junk_pool.append('Gerudo Membership Card')
 | 
			
		||||
        placed_items['GF Gerudo Membership Card'] = 'Ice Trap'
 | 
			
		||||
        skip_in_spoiler_locations.append('GF Gerudo Membership Card')
 | 
			
		||||
        placed_items['Hideout Gerudo Membership Card'] = 'Ice Trap'
 | 
			
		||||
        skip_in_spoiler_locations.append('Hideout Gerudo Membership Card')
 | 
			
		||||
    else:
 | 
			
		||||
        placed_items['GF Gerudo Membership Card'] = 'Gerudo Membership Card'
 | 
			
		||||
        placed_items['Hideout Gerudo Membership Card'] = 'Gerudo Membership Card'
 | 
			
		||||
    if world.shuffle_gerudo_card and world.item_pool_value == 'plentiful':
 | 
			
		||||
        pending_junk_pool.append('Gerudo Membership Card')
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1111,7 +1111,7 @@ def get_pool_core(world):
 | 
			
		|||
        pending_junk_pool.append('Small Key (Water Temple)')
 | 
			
		||||
        pending_junk_pool.append('Small Key (Shadow Temple)')
 | 
			
		||||
        pending_junk_pool.append('Small Key (Spirit Temple)')
 | 
			
		||||
        pending_junk_pool.append('Small Key (Gerudo Training Grounds)')
 | 
			
		||||
        pending_junk_pool.append('Small Key (Gerudo Training Ground)')
 | 
			
		||||
        pending_junk_pool.append('Small Key (Ganons Castle)')
 | 
			
		||||
 | 
			
		||||
    if world.item_pool_value == 'plentiful' and world.shuffle_bosskeys in ['any_dungeon', 'overworld', 'keysanity']:
 | 
			
		||||
| 
						 | 
				
			
			@ -1250,7 +1250,7 @@ def get_pool_core(world):
 | 
			
		|||
        pool.extend(ShT_vanilla)
 | 
			
		||||
    if not world.dungeon_mq['Bottom of the Well']:
 | 
			
		||||
        pool.extend(BW_vanilla)
 | 
			
		||||
    if world.dungeon_mq['Gerudo Training Grounds']:
 | 
			
		||||
    if world.dungeon_mq['Gerudo Training Ground']:
 | 
			
		||||
        pool.extend(GTG_MQ)
 | 
			
		||||
    else:
 | 
			
		||||
        pool.extend(GTG_vanilla)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,7 +6,7 @@ def oot_data_to_ap_id(data, event):
 | 
			
		|||
    if event or data[2] is None or data[0] == 'Shop': 
 | 
			
		||||
        return None
 | 
			
		||||
    offset = 66000
 | 
			
		||||
    if data[0] in ['Item', 'BossKey', 'Compass', 'Map', 'SmallKey', 'Token', 'GanonBossKey', 'FortressSmallKey', 'Song']:
 | 
			
		||||
    if data[0] in ['Item', 'BossKey', 'Compass', 'Map', 'SmallKey', 'Token', 'GanonBossKey', 'HideoutSmallKey', 'Song']:
 | 
			
		||||
        return offset + data[2]
 | 
			
		||||
    else: 
 | 
			
		||||
        raise Exception(f'Unexpected OOT item type found: {data[0]}')
 | 
			
		||||
| 
						 | 
				
			
			@ -53,7 +53,7 @@ class OOTItem(Item):
 | 
			
		|||
 | 
			
		||||
    @property
 | 
			
		||||
    def dungeonitem(self) -> bool:
 | 
			
		||||
        return self.type in ['SmallKey', 'FortressSmallKey', 'BossKey', 'GanonBossKey', 'Map', 'Compass']
 | 
			
		||||
        return self.type in ['SmallKey', 'HideoutSmallKey', 'BossKey', 'GanonBossKey', 'Map', 'Compass']
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -193,8 +193,8 @@ item_table = {
 | 
			
		|||
    'Small Key (Spirit Temple)':                       ('SmallKey', True,  0xB2, {'progressive': float('Inf')}),
 | 
			
		||||
    'Small Key (Shadow Temple)':                       ('SmallKey', True,  0xB3, {'progressive': float('Inf')}),
 | 
			
		||||
    'Small Key (Bottom of the Well)':                  ('SmallKey', True,  0xB4, {'progressive': float('Inf')}),
 | 
			
		||||
    'Small Key (Gerudo Training Grounds)':             ('SmallKey',True, 0xB5, {'progressive': float('Inf')}),
 | 
			
		||||
    'Small Key (Gerudo Fortress)':                     ('FortressSmallKey',True, 0xB6, {'progressive': float('Inf')}),
 | 
			
		||||
    'Small Key (Gerudo Training Ground)':              ('SmallKey',True, 0xB5, {'progressive': float('Inf')}),
 | 
			
		||||
    'Small Key (Thieves Hideout)':                     ('HideoutSmallKey',True, 0xB6, {'progressive': float('Inf')}),
 | 
			
		||||
    'Small Key (Ganons Castle)':                       ('SmallKey', True,  0xB7, {'progressive': float('Inf')}),
 | 
			
		||||
    'Double Defense':                                  ('Item',     True,  0xB8, None),
 | 
			
		||||
    'Magic Bean Pack':                                 ('Item',     True,  0xC9, None),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,6 +19,7 @@ def shop_address(shop_id, shelf_id):
 | 
			
		|||
#       LW      Lost Woods
 | 
			
		||||
#       OGC     Outside Ganon's Castle
 | 
			
		||||
#       SFM     Sacred Forest Meadow
 | 
			
		||||
#       TH      Thieves' Hideout
 | 
			
		||||
#       ToT     Temple of Time
 | 
			
		||||
#       ZD      Zora's Domain
 | 
			
		||||
#       ZF      Zora's Fountain
 | 
			
		||||
| 
						 | 
				
			
			@ -52,7 +53,7 @@ location_table = OrderedDict([
 | 
			
		|||
    ("Song from Impa",                                               ("Song",         0xFF,  0x26, (0x2E8E925, 0x2E8E925),      'Zeldas Lullaby',                        ("Hyrule Castle", "Market", "Songs"))),
 | 
			
		||||
    ("Song from Malon",                                              ("Song",         0xFF,  0x27, (0x0D7EB53, 0x0D7EBCF),      'Eponas Song',                           ("Lon Lon Ranch", "Songs",))),
 | 
			
		||||
    ("Song from Saria",                                              ("Song",         0xFF,  0x28, (0x20B1DB1, 0x20B1DB1),      'Sarias Song',                           ("Sacred Forest Meadow", "Forest", "Songs"))),
 | 
			
		||||
    ("Song from Composers Grave",                                    ("Song",         0xFF,  0x29, (0x332A871, 0x332A871),      'Suns Song',                             ("the Graveyard", "Kakariko", "Songs"))),
 | 
			
		||||
    ("Song from Royal Familys Tomb",                                 ("Song",         0xFF,  0x29, (0x332A871, 0x332A871),      'Suns Song',                             ("the Graveyard", "Kakariko", "Songs"))),
 | 
			
		||||
    ("Song from Ocarina of Time",                                    ("Song",         0xFF,  0x2A, (0x252FC89, 0x252FC89),      'Song of Time',                          ("Hyrule Field", "Songs", "Need Spiritual Stones"))),
 | 
			
		||||
    ("Song from Windmill",                                           ("Song",         0xFF,  0x2B, (0x0E42C07, 0x0E42B8B),      'Song of Storms',                        ("Kakariko Village", "Kakariko", "Songs"))),
 | 
			
		||||
    ("Sheik in Forest",                                              ("Song",         0xFF,  0x20, (0x20B0809, 0x20B0809),      'Minuet of Forest',                      ("Sacred Forest Meadow", "Forest", "Songs"))),
 | 
			
		||||
| 
						 | 
				
			
			@ -70,7 +71,7 @@ location_table = OrderedDict([
 | 
			
		|||
    ("KF Midos Bottom Right Chest",                                  ("Chest",        0x28,  0x03, None,                        'Recovery Heart',                        ("Kokiri Forest", "Forest",))),
 | 
			
		||||
    ("KF Kokiri Sword Chest",                                        ("Chest",        0x55,  0x00, None,                        'Kokiri Sword',                          ("Kokiri Forest", "Forest",))),
 | 
			
		||||
    ("KF Storms Grotto Chest",                                       ("Chest",        0x3E,  0x0C, None,                        'Rupees (20)',                           ("Kokiri Forest", "Forest", "Grottos"))),
 | 
			
		||||
    ("KF Links House Cow",                                           ("NPC",          0x34,  0x15, None,                        'Milk',                                  ("KF Links House", "Forest", "Cow", "Minigames"))),
 | 
			
		||||
    ("KF Links House Cow",                                           ("NPC",          0x34,  0x15, None,                        'Milk',                                  ("Kokiri Forest", "Forest", "Cow", "Minigames"))),
 | 
			
		||||
    ("KF GS Know It All House",                                      ("GS Token",     0x0C,  0x02, None,                        'Gold Skulltula Token',                  ("Kokiri Forest", "Skulltulas",))),
 | 
			
		||||
    ("KF GS Bean Patch",                                             ("GS Token",     0x0C,  0x01, None,                        'Gold Skulltula Token',                  ("Kokiri Forest", "Skulltulas",))),
 | 
			
		||||
    ("KF GS House of Twins",                                         ("GS Token",     0x0C,  0x04, None,                        'Gold Skulltula Token',                  ("Kokiri Forest", "Skulltulas",))),
 | 
			
		||||
| 
						 | 
				
			
			@ -163,7 +164,7 @@ location_table = OrderedDict([
 | 
			
		|||
    ("HC GS Storms Grotto",                                          ("GS Token",     0x0E,  0x02, None,                        'Gold Skulltula Token',                  ("Hyrule Castle", "Skulltulas", "Grottos"))),
 | 
			
		||||
 | 
			
		||||
    # Lon Lon Ranch
 | 
			
		||||
    ("LLR Talons Chickens",                                          ("NPC",          0x4C,  0x14, None,                        'Bottle with Milk',                      ("Lon Lon Ranch", "Kakariko", "Minigames"))),
 | 
			
		||||
    ("LLR Talons Chickens",                                          ("NPC",          0x4C,  0x14, None,                        'Bottle with Milk',                      ("Lon Lon Ranch", "Minigames"))),
 | 
			
		||||
    ("LLR Freestanding PoH",                                         ("Collectable",  0x4C,  0x01, None,                        'Piece of Heart',                        ("Lon Lon Ranch",))),
 | 
			
		||||
    ("LLR Deku Scrub Grotto Left",                                   ("GrottoNPC",    0xFC,  0x30, None,                        'Buy Deku Nut (5)',                      ("Lon Lon Ranch", "Deku Scrub", "Grottos"))),
 | 
			
		||||
    ("LLR Deku Scrub Grotto Center",                                 ("GrottoNPC",    0xFC,  0x33, None,                        'Buy Deku Seeds (30)',                   ("Lon Lon Ranch", "Deku Scrub", "Grottos"))),
 | 
			
		||||
| 
						 | 
				
			
			@ -218,7 +219,7 @@ location_table = OrderedDict([
 | 
			
		|||
    # Graveyard
 | 
			
		||||
    ("Graveyard Shield Grave Chest",                                 ("Chest",        0x40,  0x00, None,                        'Hylian Shield',                         ("the Graveyard", "Kakariko",))),
 | 
			
		||||
    ("Graveyard Heart Piece Grave Chest",                            ("Chest",        0x3F,  0x00, None,                        'Piece of Heart',                        ("the Graveyard", "Kakariko",))),
 | 
			
		||||
    ("Graveyard Composers Grave Chest",                              ("Chest",        0x41,  0x00, None,                        'Bombs (5)',                             ("the Graveyard", "Kakariko",))),
 | 
			
		||||
    ("Graveyard Royal Familys Tomb Chest",                           ("Chest",        0x41,  0x00, None,                        'Bombs (5)',                             ("the Graveyard", "Kakariko",))),
 | 
			
		||||
    ("Graveyard Freestanding PoH",                                   ("Collectable",  0x53,  0x04, None,                        'Piece of Heart',                        ("the Graveyard", "Kakariko",))),
 | 
			
		||||
    ("Graveyard Dampe Gravedigging Tour",                            ("Collectable",  0x53,  0x08, None,                        'Piece of Heart',                        ("the Graveyard", "Kakariko",))),
 | 
			
		||||
    ("Graveyard Hookshot Chest",                                     ("Chest",        0x48,  0x00, None,                        'Progressive Hookshot',                  ("the Graveyard", "Kakariko",))),
 | 
			
		||||
| 
						 | 
				
			
			@ -337,12 +338,14 @@ location_table = OrderedDict([
 | 
			
		|||
    ("GV GS Behind Tent",                                            ("GS Token",     0x13,  0x08, None,                        'Gold Skulltula Token',                  ("Gerudo Valley", "Skulltulas",))),
 | 
			
		||||
    ("GV GS Pillar",                                                 ("GS Token",     0x13,  0x04, None,                        'Gold Skulltula Token',                  ("Gerudo Valley", "Skulltulas",))),
 | 
			
		||||
 | 
			
		||||
    # Thieves' Hideout
 | 
			
		||||
    ("Hideout Jail Guard (1 Torch)",                                 ("Collectable",  0x0C,  0x0C, None,                        'Small Key (Thieves Hideout)',           ("Thieves' Hideout", "Gerudo",))),
 | 
			
		||||
    ("Hideout Jail Guard (2 Torches)",                               ("Collectable",  0x0C,  0x0F, None,                        'Small Key (Thieves Hideout)',           ("Thieves' Hideout", "Gerudo",))),
 | 
			
		||||
    ("Hideout Jail Guard (3 Torches)",                               ("Collectable",  0x0C,  0x0A, None,                        'Small Key (Thieves Hideout)',           ("Thieves' Hideout", "Gerudo",))),
 | 
			
		||||
    ("Hideout Jail Guard (4 Torches)",                               ("Collectable",  0x0C,  0x0E, None,                        'Small Key (Thieves Hideout)',           ("Thieves' Hideout", "Gerudo",))),
 | 
			
		||||
    ("Hideout Gerudo Membership Card",                               ("NPC",          0x0C,  0x3A, None,                        'Gerudo Membership Card',                ("Thieves' Hideout", "Gerudo",))),
 | 
			
		||||
 | 
			
		||||
    # Gerudo's Fortress
 | 
			
		||||
    ("GF North F1 Carpenter",                                        ("Collectable",  0x0C,  0x0C, None,                        'Small Key (Gerudo Fortress)',           ("Gerudo's Fortress", "Gerudo",))),
 | 
			
		||||
    ("GF North F2 Carpenter",                                        ("Collectable",  0x0C,  0x0A, None,                        'Small Key (Gerudo Fortress)',           ("Gerudo's Fortress", "Gerudo",))),
 | 
			
		||||
    ("GF South F1 Carpenter",                                        ("Collectable",  0x0C,  0x0E, None,                        'Small Key (Gerudo Fortress)',           ("Gerudo's Fortress", "Gerudo",))),
 | 
			
		||||
    ("GF South F2 Carpenter",                                        ("Collectable",  0x0C,  0x0F, None,                        'Small Key (Gerudo Fortress)',           ("Gerudo's Fortress", "Gerudo",))),
 | 
			
		||||
    ("GF Gerudo Membership Card",                                    ("NPC",          0x0C,  0x3A, None,                        'Gerudo Membership Card',                ("Gerudo's Fortress", "Gerudo",))),
 | 
			
		||||
    ("GF Chest",                                                     ("Chest",        0x5D,  0x00, None,                        'Piece of Heart',                        ("Gerudo's Fortress", "Gerudo",))),
 | 
			
		||||
    ("GF HBA 1000 Points",                                           ("NPC",          0x5D,  0x3E, None,                        'Piece of Heart',                        ("Gerudo's Fortress", "Gerudo", "Minigames"))),
 | 
			
		||||
    ("GF HBA 1500 Points",                                           ("NPC",          0x5D,  0x30, None,                        'Bow',                                   ("Gerudo's Fortress", "Gerudo", "Minigames"))),
 | 
			
		||||
| 
						 | 
				
			
			@ -364,8 +367,8 @@ location_table = OrderedDict([
 | 
			
		|||
    ("Colossus GS Hill",                                             ("GS Token",     0x15,  0x04, None,                        'Gold Skulltula Token',                  ("Desert Colossus", "Skulltulas",))),
 | 
			
		||||
 | 
			
		||||
    # Outside Ganon's Castle
 | 
			
		||||
    ("OGC Great Fairy Reward",                                       ("Cutscene",     0xFF,  0x15, None,                        'Double Defense',                        ("outside Ganon's Castle", "Market", "Fairies"))),
 | 
			
		||||
    ("OGC GS",                                                       ("GS Token",     0x0E,  0x01, None,                        'Gold Skulltula Token',                  ("outside Ganon's Castle", "Skulltulas",))),
 | 
			
		||||
    ("OGC Great Fairy Reward",                                       ("Cutscene",     0xFF,  0x15, None,                        'Double Defense',                        ("Outside Ganon's Castle", "Market", "Fairies"))),
 | 
			
		||||
    ("OGC GS",                                                       ("GS Token",     0x0E,  0x01, None,                        'Gold Skulltula Token',                  ("Outside Ganon's Castle", "Skulltulas",))),
 | 
			
		||||
 | 
			
		||||
    ## Dungeons
 | 
			
		||||
    # Deku Tree vanilla
 | 
			
		||||
| 
						 | 
				
			
			@ -725,47 +728,47 @@ location_table = OrderedDict([
 | 
			
		|||
    ("Ice Cavern MQ GS Ice Block",                                   ("GS Token",     0x09,  0x04, None,                        'Gold Skulltula Token',                  ("Ice Cavern", "Master Quest", "Skulltulas",))),
 | 
			
		||||
    ("Ice Cavern MQ GS Scarecrow",                                   ("GS Token",     0x09,  0x01, None,                        'Gold Skulltula Token',                  ("Ice Cavern", "Master Quest", "Skulltulas",))),
 | 
			
		||||
 | 
			
		||||
    # Gerudo Training Grounds vanilla
 | 
			
		||||
    ("Gerudo Training Grounds Lobby Left Chest",                     ("Chest",        0x0B,  0x13, None,                        'Rupees (5)',                            ("Gerudo Training Grounds", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Grounds Lobby Right Chest",                    ("Chest",        0x0B,  0x07, None,                        'Arrows (10)',                           ("Gerudo Training Grounds", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Grounds Stalfos Chest",                        ("Chest",        0x0B,  0x00, None,                        'Small Key (Gerudo Training Grounds)',   ("Gerudo Training Grounds", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Grounds Before Heavy Block Chest",             ("Chest",        0x0B,  0x11, None,                        'Arrows (30)',                           ("Gerudo Training Grounds", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Grounds Heavy Block First Chest",              ("Chest",        0x0B,  0x0F, None,                        'Rupees (200)',                          ("Gerudo Training Grounds", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Grounds Heavy Block Second Chest",             ("Chest",        0x0B,  0x0E, None,                        'Rupees (5)',                            ("Gerudo Training Grounds", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Grounds Heavy Block Third Chest",              ("Chest",        0x0B,  0x14, None,                        'Small Key (Gerudo Training Grounds)',   ("Gerudo Training Grounds", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Grounds Heavy Block Fourth Chest",             ("Chest",        0x0B,  0x02, None,                        'Ice Trap',                              ("Gerudo Training Grounds", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Grounds Eye Statue Chest",                     ("Chest",        0x0B,  0x03, None,                        'Small Key (Gerudo Training Grounds)',   ("Gerudo Training Grounds", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Grounds Near Scarecrow Chest",                 ("Chest",        0x0B,  0x04, None,                        'Small Key (Gerudo Training Grounds)',   ("Gerudo Training Grounds", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Grounds Hammer Room Clear Chest",              ("Chest",        0x0B,  0x12, None,                        'Arrows (10)',                           ("Gerudo Training Grounds", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Grounds Hammer Room Switch Chest",             ("Chest",        0x0B,  0x10, None,                        'Small Key (Gerudo Training Grounds)',   ("Gerudo Training Grounds", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Grounds Freestanding Key",                     ("Collectable",  0x0B,  0x01, None,                        'Small Key (Gerudo Training Grounds)',   ("Gerudo Training Grounds", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Grounds Maze Right Central Chest",             ("Chest",        0x0B,  0x05, None,                        'Bombchus (5)',                          ("Gerudo Training Grounds", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Grounds Maze Right Side Chest",                ("Chest",        0x0B,  0x08, None,                        'Arrows (30)',                           ("Gerudo Training Grounds", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Grounds Underwater Silver Rupee Chest",        ("Chest",        0x0B,  0x0D, None,                        'Small Key (Gerudo Training Grounds)',   ("Gerudo Training Grounds", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Grounds Beamos Chest",                         ("Chest",        0x0B,  0x01, None,                        'Small Key (Gerudo Training Grounds)',   ("Gerudo Training Grounds", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Grounds Hidden Ceiling Chest",                 ("Chest",        0x0B,  0x0B, None,                        'Small Key (Gerudo Training Grounds)',   ("Gerudo Training Grounds", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Grounds Maze Path First Chest",                ("Chest",        0x0B,  0x06, None,                        'Rupees (50)',                           ("Gerudo Training Grounds", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Grounds Maze Path Second Chest",               ("Chest",        0x0B,  0x0A, None,                        'Rupees (20)',                           ("Gerudo Training Grounds", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Grounds Maze Path Third Chest",                ("Chest",        0x0B,  0x09, None,                        'Arrows (30)',                           ("Gerudo Training Grounds", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Grounds Maze Path Final Chest",                ("Chest",        0x0B,  0x0C, None,                        'Ice Arrows',                            ("Gerudo Training Grounds", "Vanilla",))),
 | 
			
		||||
    # Gerudo Training Grounds MQ
 | 
			
		||||
    ("Gerudo Training Grounds MQ Lobby Left Chest",                  ("Chest",        0x0B,  0x13, None,                        'Arrows (10)',                           ("Gerudo Training Grounds", "Master Quest",))),
 | 
			
		||||
    ("Gerudo Training Grounds MQ Lobby Right Chest",                 ("Chest",        0x0B,  0x07, None,                        'Bombchus (5)',                          ("Gerudo Training Grounds", "Master Quest",))),
 | 
			
		||||
    ("Gerudo Training Grounds MQ First Iron Knuckle Chest",          ("Chest",        0x0B,  0x00, None,                        'Rupees (5)',                            ("Gerudo Training Grounds", "Master Quest",))),
 | 
			
		||||
    ("Gerudo Training Grounds MQ Before Heavy Block Chest",          ("Chest",        0x0B,  0x11, None,                        'Arrows (10)',                           ("Gerudo Training Grounds", "Master Quest",))),
 | 
			
		||||
    ("Gerudo Training Grounds MQ Heavy Block Chest",                 ("Chest",        0x0B,  0x02, None,                        'Rupees (50)',                           ("Gerudo Training Grounds", "Master Quest",))),
 | 
			
		||||
    ("Gerudo Training Grounds MQ Eye Statue Chest",                  ("Chest",        0x0B,  0x03, None,                        'Bombchus (10)',                         ("Gerudo Training Grounds", "Master Quest",))),
 | 
			
		||||
    ("Gerudo Training Grounds MQ Ice Arrows Chest",                  ("Chest",        0x0B,  0x04, None,                        'Ice Arrows',                            ("Gerudo Training Grounds", "Master Quest",))),
 | 
			
		||||
    ("Gerudo Training Grounds MQ Second Iron Knuckle Chest",         ("Chest",        0x0B,  0x12, None,                        'Arrows (10)',                           ("Gerudo Training Grounds", "Master Quest",))),
 | 
			
		||||
    ("Gerudo Training Grounds MQ Flame Circle Chest",                ("Chest",        0x0B,  0x0E, None,                        'Small Key (Gerudo Training Grounds)',   ("Gerudo Training Grounds", "Master Quest",))),
 | 
			
		||||
    ("Gerudo Training Grounds MQ Maze Right Central Chest",          ("Chest",        0x0B,  0x05, None,                        'Rupees (5)',                            ("Gerudo Training Grounds", "Master Quest",))),
 | 
			
		||||
    ("Gerudo Training Grounds MQ Maze Right Side Chest",             ("Chest",        0x0B,  0x08, None,                        'Rupee (Treasure Chest Game)',           ("Gerudo Training Grounds", "Master Quest",))),
 | 
			
		||||
    ("Gerudo Training Grounds MQ Underwater Silver Rupee Chest",     ("Chest",        0x0B,  0x0D, None,                        'Small Key (Gerudo Training Grounds)',   ("Gerudo Training Grounds", "Master Quest",))),
 | 
			
		||||
    ("Gerudo Training Grounds MQ Dinolfos Chest",                    ("Chest",        0x0B,  0x01, None,                        'Small Key (Gerudo Training Grounds)',   ("Gerudo Training Grounds", "Master Quest",))),
 | 
			
		||||
    ("Gerudo Training Grounds MQ Hidden Ceiling Chest",              ("Chest",        0x0B,  0x0B, None,                        'Rupees (50)',                           ("Gerudo Training Grounds", "Master Quest",))),
 | 
			
		||||
    ("Gerudo Training Grounds MQ Maze Path First Chest",             ("Chest",        0x0B,  0x06, None,                        'Rupee (1)',                             ("Gerudo Training Grounds", "Master Quest",))),
 | 
			
		||||
    ("Gerudo Training Grounds MQ Maze Path Third Chest",             ("Chest",        0x0B,  0x09, None,                        'Rupee (Treasure Chest Game)',           ("Gerudo Training Grounds", "Master Quest",))),
 | 
			
		||||
    ("Gerudo Training Grounds MQ Maze Path Second Chest",            ("Chest",        0x0B,  0x0A, None,                        'Rupees (20)',                           ("Gerudo Training Grounds", "Master Quest",))),
 | 
			
		||||
    # Gerudo Training Ground vanilla
 | 
			
		||||
    ("Gerudo Training Ground Lobby Left Chest",                      ("Chest",        0x0B,  0x13, None,                        'Rupees (5)',                            ("Gerudo Training Ground", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Ground Lobby Right Chest",                     ("Chest",        0x0B,  0x07, None,                        'Arrows (10)',                           ("Gerudo Training Ground", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Ground Stalfos Chest",                         ("Chest",        0x0B,  0x00, None,                        'Small Key (Gerudo Training Ground)',    ("Gerudo Training Ground", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Ground Before Heavy Block Chest",              ("Chest",        0x0B,  0x11, None,                        'Arrows (30)',                           ("Gerudo Training Ground", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Ground Heavy Block First Chest",               ("Chest",        0x0B,  0x0F, None,                        'Rupees (200)',                          ("Gerudo Training Ground", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Ground Heavy Block Second Chest",              ("Chest",        0x0B,  0x0E, None,                        'Rupees (5)',                            ("Gerudo Training Ground", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Ground Heavy Block Third Chest",               ("Chest",        0x0B,  0x14, None,                        'Small Key (Gerudo Training Ground)',    ("Gerudo Training Ground", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Ground Heavy Block Fourth Chest",              ("Chest",        0x0B,  0x02, None,                        'Ice Trap',                              ("Gerudo Training Ground", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Ground Eye Statue Chest",                      ("Chest",        0x0B,  0x03, None,                        'Small Key (Gerudo Training Ground)',    ("Gerudo Training Ground", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Ground Near Scarecrow Chest",                  ("Chest",        0x0B,  0x04, None,                        'Small Key (Gerudo Training Ground)',    ("Gerudo Training Ground", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Ground Hammer Room Clear Chest",               ("Chest",        0x0B,  0x12, None,                        'Arrows (10)',                           ("Gerudo Training Ground", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Ground Hammer Room Switch Chest",              ("Chest",        0x0B,  0x10, None,                        'Small Key (Gerudo Training Ground)',    ("Gerudo Training Ground", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Ground Freestanding Key",                      ("Collectable",  0x0B,  0x01, None,                        'Small Key (Gerudo Training Ground)',    ("Gerudo Training Ground", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Ground Maze Right Central Chest",              ("Chest",        0x0B,  0x05, None,                        'Bombchus (5)',                          ("Gerudo Training Ground", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Ground Maze Right Side Chest",                 ("Chest",        0x0B,  0x08, None,                        'Arrows (30)',                           ("Gerudo Training Ground", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Ground Underwater Silver Rupee Chest",         ("Chest",        0x0B,  0x0D, None,                        'Small Key (Gerudo Training Ground)',    ("Gerudo Training Ground", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Ground Beamos Chest",                          ("Chest",        0x0B,  0x01, None,                        'Small Key (Gerudo Training Ground)',    ("Gerudo Training Ground", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Ground Hidden Ceiling Chest",                  ("Chest",        0x0B,  0x0B, None,                        'Small Key (Gerudo Training Ground)',    ("Gerudo Training Ground", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Ground Maze Path First Chest",                 ("Chest",        0x0B,  0x06, None,                        'Rupees (50)',                           ("Gerudo Training Ground", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Ground Maze Path Second Chest",                ("Chest",        0x0B,  0x0A, None,                        'Rupees (20)',                           ("Gerudo Training Ground", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Ground Maze Path Third Chest",                 ("Chest",        0x0B,  0x09, None,                        'Arrows (30)',                           ("Gerudo Training Ground", "Vanilla",))),
 | 
			
		||||
    ("Gerudo Training Ground Maze Path Final Chest",                 ("Chest",        0x0B,  0x0C, None,                        'Ice Arrows',                            ("Gerudo Training Ground", "Vanilla",))),
 | 
			
		||||
    # Gerudo Training Ground MQ
 | 
			
		||||
    ("Gerudo Training Ground MQ Lobby Left Chest",                   ("Chest",        0x0B,  0x13, None,                        'Arrows (10)',                           ("Gerudo Training Ground", "Master Quest",))),
 | 
			
		||||
    ("Gerudo Training Ground MQ Lobby Right Chest",                  ("Chest",        0x0B,  0x07, None,                        'Bombchus (5)',                          ("Gerudo Training Ground", "Master Quest",))),
 | 
			
		||||
    ("Gerudo Training Ground MQ First Iron Knuckle Chest",           ("Chest",        0x0B,  0x00, None,                        'Rupees (5)',                            ("Gerudo Training Ground", "Master Quest",))),
 | 
			
		||||
    ("Gerudo Training Ground MQ Before Heavy Block Chest",           ("Chest",        0x0B,  0x11, None,                        'Arrows (10)',                           ("Gerudo Training Ground", "Master Quest",))),
 | 
			
		||||
    ("Gerudo Training Ground MQ Heavy Block Chest",                  ("Chest",        0x0B,  0x02, None,                        'Rupees (50)',                           ("Gerudo Training Ground", "Master Quest",))),
 | 
			
		||||
    ("Gerudo Training Ground MQ Eye Statue Chest",                   ("Chest",        0x0B,  0x03, None,                        'Bombchus (10)',                         ("Gerudo Training Ground", "Master Quest",))),
 | 
			
		||||
    ("Gerudo Training Ground MQ Ice Arrows Chest",                   ("Chest",        0x0B,  0x04, None,                        'Ice Arrows',                            ("Gerudo Training Ground", "Master Quest",))),
 | 
			
		||||
    ("Gerudo Training Ground MQ Second Iron Knuckle Chest",          ("Chest",        0x0B,  0x12, None,                        'Arrows (10)',                           ("Gerudo Training Ground", "Master Quest",))),
 | 
			
		||||
    ("Gerudo Training Ground MQ Flame Circle Chest",                 ("Chest",        0x0B,  0x0E, None,                        'Small Key (Gerudo Training Ground)',    ("Gerudo Training Ground", "Master Quest",))),
 | 
			
		||||
    ("Gerudo Training Ground MQ Maze Right Central Chest",           ("Chest",        0x0B,  0x05, None,                        'Rupees (5)',                            ("Gerudo Training Ground", "Master Quest",))),
 | 
			
		||||
    ("Gerudo Training Ground MQ Maze Right Side Chest",              ("Chest",        0x0B,  0x08, None,                        'Rupee (Treasure Chest Game)',           ("Gerudo Training Ground", "Master Quest",))),
 | 
			
		||||
    ("Gerudo Training Ground MQ Underwater Silver Rupee Chest",      ("Chest",        0x0B,  0x0D, None,                        'Small Key (Gerudo Training Ground)',    ("Gerudo Training Ground", "Master Quest",))),
 | 
			
		||||
    ("Gerudo Training Ground MQ Dinolfos Chest",                     ("Chest",        0x0B,  0x01, None,                        'Small Key (Gerudo Training Ground)',    ("Gerudo Training Ground", "Master Quest",))),
 | 
			
		||||
    ("Gerudo Training Ground MQ Hidden Ceiling Chest",               ("Chest",        0x0B,  0x0B, None,                        'Rupees (50)',                           ("Gerudo Training Ground", "Master Quest",))),
 | 
			
		||||
    ("Gerudo Training Ground MQ Maze Path First Chest",              ("Chest",        0x0B,  0x06, None,                        'Rupee (1)',                             ("Gerudo Training Ground", "Master Quest",))),
 | 
			
		||||
    ("Gerudo Training Ground MQ Maze Path Third Chest",              ("Chest",        0x0B,  0x09, None,                        'Rupee (Treasure Chest Game)',           ("Gerudo Training Ground", "Master Quest",))),
 | 
			
		||||
    ("Gerudo Training Ground MQ Maze Path Second Chest",             ("Chest",        0x0B,  0x0A, None,                        'Rupees (20)',                           ("Gerudo Training Ground", "Master Quest",))),
 | 
			
		||||
 | 
			
		||||
    # Ganon's Castle vanilla
 | 
			
		||||
    ("Ganons Castle Forest Trial Chest",                             ("Chest",        0x0D,  0x09, None,                        'Rupees (5)',                            ("Ganon's Castle", "Vanilla",))),
 | 
			
		||||
| 
						 | 
				
			
			@ -902,7 +905,7 @@ business_scrubs = [
 | 
			
		|||
    (0x79, 40,   0x10DD, ["enable you to pick up more \x05\x41Deku\x01Nuts", "sell you a \x05\x42mysterious item"]),
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
dungeons = ('Deku Tree', 'Dodongo\'s Cavern', 'Jabu Jabu\'s Belly', 'Forest Temple', 'Fire Temple', 'Water Temple', 'Spirit Temple', 'Shadow Temple', 'Ice Cavern', 'Bottom of the Well', 'Gerudo Training Grounds', 'Ganon\'s Castle')
 | 
			
		||||
dungeons = ('Deku Tree', 'Dodongo\'s Cavern', 'Jabu Jabu\'s Belly', 'Forest Temple', 'Fire Temple', 'Water Temple', 'Spirit Temple', 'Shadow Temple', 'Ice Cavern', 'Bottom of the Well', 'Gerudo Training Ground', 'Ganon\'s Castle')
 | 
			
		||||
location_groups = {
 | 
			
		||||
    'Song': [name for (name, data) in location_table.items() if data[0] == 'Song'],
 | 
			
		||||
    'Chest': [name for (name, data) in location_table.items() if data[0] == 'Chest'],
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
known_logic_tricks = {
 | 
			
		||||
    'Fewer Tunic Requirements': {
 | 
			
		||||
        'name'    : 'logic_fewer_tunic_requirements',
 | 
			
		||||
        'tags'    : ("General", "Fire Temple", "Water Temple", "Gerudo Training Grounds", "Zora's Fountain",),
 | 
			
		||||
        'tags'    : ("General", "Fire Temple", "Water Temple", "Gerudo Training Ground", "Zora's Fountain",),
 | 
			
		||||
        'tooltip' : '''\
 | 
			
		||||
                    Allows the following possible without Tunics:
 | 
			
		||||
                    - Enter Water Temple. The key below the center
 | 
			
		||||
| 
						 | 
				
			
			@ -10,7 +10,7 @@ known_logic_tricks = {
 | 
			
		|||
                    accessible, and not Volvagia.
 | 
			
		||||
                    - Zora's Fountain Bottom Freestanding PoH.
 | 
			
		||||
                    Might not have enough health to resurface.
 | 
			
		||||
                    - Gerudo Training Grounds Underwater
 | 
			
		||||
                    - Gerudo Training Ground Underwater
 | 
			
		||||
                    Silver Rupee Chest. May need to make multiple
 | 
			
		||||
                    trips.
 | 
			
		||||
                    '''},
 | 
			
		||||
| 
						 | 
				
			
			@ -73,9 +73,9 @@ known_logic_tricks = {
 | 
			
		|||
                    from below, by shooting it through the vines,
 | 
			
		||||
                    bypassing the need to lower the staircase.
 | 
			
		||||
                    '''},
 | 
			
		||||
    'Gerudo Fortress "Kitchen" with No Additional Items': {
 | 
			
		||||
    'Thieves\' Hideout "Kitchen" with No Additional Items': {
 | 
			
		||||
        'name'    : 'logic_gerudo_kitchen',
 | 
			
		||||
        'tags'    : ("Gerudo's Fortress",),
 | 
			
		||||
        'tags'    : ("Thieves' Hideout", "Gerudo's Fortress"),
 | 
			
		||||
        'tooltip' : '''\
 | 
			
		||||
                    The logic normally guarantees one of Bow, Hookshot,
 | 
			
		||||
                    or Hover Boots.
 | 
			
		||||
| 
						 | 
				
			
			@ -185,9 +185,9 @@ known_logic_tricks = {
 | 
			
		|||
                    a particularly egregious example. Logic normally
 | 
			
		||||
                    expects Din's Fire and Song of Time.
 | 
			
		||||
                    '''},
 | 
			
		||||
    'Gerudo Training Grounds MQ Left Side Silver Rupees with Hookshot': {
 | 
			
		||||
    'Gerudo Training Ground MQ Left Side Silver Rupees with Hookshot': {
 | 
			
		||||
        'name'    : 'logic_gtg_mq_with_hookshot',
 | 
			
		||||
        'tags'    : ("Gerudo Training Grounds",),
 | 
			
		||||
        'tags'    : ("Gerudo Training Ground",),
 | 
			
		||||
        'tooltip' : '''\
 | 
			
		||||
                    The highest silver rupee can be obtained by
 | 
			
		||||
                    hookshotting the target and then immediately jump
 | 
			
		||||
| 
						 | 
				
			
			@ -239,14 +239,6 @@ known_logic_tricks = {
 | 
			
		|||
                    or hit the shortcut switch at the top of the
 | 
			
		||||
                    room and jump from the glass blocks that spawn.
 | 
			
		||||
                    '''},
 | 
			
		||||
    'Forest Temple MQ Twisted Hallway Switch with Hookshot': {
 | 
			
		||||
        'name'    : 'logic_forest_mq_hallway_switch_hookshot',
 | 
			
		||||
        'tags'    : ("Forest Temple",),
 | 
			
		||||
        'tooltip' : '''\
 | 
			
		||||
                    There's a very small gap between the glass block
 | 
			
		||||
                    and the wall. Through that gap you can hookshot
 | 
			
		||||
                    the target on the ceiling.
 | 
			
		||||
                    '''},
 | 
			
		||||
    'Death Mountain Trail Chest with Strength': {
 | 
			
		||||
        'name'    : 'logic_dmt_bombable',
 | 
			
		||||
        'tags'    : ("Death Mountain Trail",),
 | 
			
		||||
| 
						 | 
				
			
			@ -907,9 +899,9 @@ known_logic_tricks = {
 | 
			
		|||
                    Skulltula and obtain the token by having the Boomerang
 | 
			
		||||
                    interact with it along the return path.
 | 
			
		||||
                    '''},
 | 
			
		||||
    'Gerudo Training Grounds Left Side Silver Rupees without Hookshot': {
 | 
			
		||||
    'Gerudo Training Ground Left Side Silver Rupees without Hookshot': {
 | 
			
		||||
        'name'    : 'logic_gtg_without_hookshot',
 | 
			
		||||
        'tags'    : ("Gerudo Training Grounds",),
 | 
			
		||||
        'tags'    : ("Gerudo Training Ground",),
 | 
			
		||||
        'tooltip' : '''\
 | 
			
		||||
                    After collecting the rest of the silver rupees in the room,
 | 
			
		||||
                    you can reach the final silver rupee on the ceiling by being
 | 
			
		||||
| 
						 | 
				
			
			@ -919,9 +911,9 @@ known_logic_tricks = {
 | 
			
		|||
                    the edge of a flame wall before it can rise up to block you.
 | 
			
		||||
                    To do so without taking damage is more precise.
 | 
			
		||||
                    '''},
 | 
			
		||||
    'Gerudo Training Grounds MQ Left Side Silver Rupees without Hookshot': {
 | 
			
		||||
    'Gerudo Training Ground MQ Left Side Silver Rupees without Hookshot': {
 | 
			
		||||
        'name'    : 'logic_gtg_mq_without_hookshot',
 | 
			
		||||
        'tags'    : ("Gerudo Training Grounds",),
 | 
			
		||||
        'tags'    : ("Gerudo Training Ground",),
 | 
			
		||||
        'tooltip' : '''\
 | 
			
		||||
                    After collecting the rest of the silver rupees in the room,
 | 
			
		||||
                    you can reach the final silver rupee on the ceiling by being
 | 
			
		||||
| 
						 | 
				
			
			@ -932,18 +924,18 @@ known_logic_tricks = {
 | 
			
		|||
                    Also included with this trick is that fact that the switch
 | 
			
		||||
                    that unbars the door to the final chest of GTG can be hit
 | 
			
		||||
                    without a projectile, using a precise jump slash.
 | 
			
		||||
                    This trick supersedes "Gerudo Training Grounds MQ Left Side
 | 
			
		||||
                    This trick supersedes "Gerudo Training Ground MQ Left Side
 | 
			
		||||
                    Silver Rupees with Hookshot".
 | 
			
		||||
                    '''},
 | 
			
		||||
    'Reach Gerudo Training Grounds Fake Wall Ledge with Hover Boots': {
 | 
			
		||||
    'Reach Gerudo Training Ground Fake Wall Ledge with Hover Boots': {
 | 
			
		||||
        'name'    : 'logic_gtg_fake_wall',
 | 
			
		||||
        'tags'    : ("Gerudo Training Grounds",),
 | 
			
		||||
        'tags'    : ("Gerudo Training Ground",),
 | 
			
		||||
        'tooltip' : '''\
 | 
			
		||||
                    A precise Hover Boots use from the top of the chest can allow
 | 
			
		||||
                    you to grab the ledge without needing the usual requirements.
 | 
			
		||||
                    In Master Quest, this always skips a Song of Time requirement.
 | 
			
		||||
                    In Vanilla, this skips a Hookshot requirement, but is only
 | 
			
		||||
                    relevant if "Gerudo Training Grounds Left Side Silver Rupees
 | 
			
		||||
                    relevant if "Gerudo Training Ground Left Side Silver Rupees
 | 
			
		||||
                    without Hookshot" is enabled.
 | 
			
		||||
                    '''},
 | 
			
		||||
    'Water Temple Cracked Wall with No Additional Items': {
 | 
			
		||||
| 
						 | 
				
			
			@ -1299,19 +1291,19 @@ known_logic_tricks = {
 | 
			
		|||
                    Removes the requirements for the Lens of Truth
 | 
			
		||||
                    in Ganon's Castle.
 | 
			
		||||
                    '''},
 | 
			
		||||
    'Gerudo Training Grounds MQ without Lens of Truth': {
 | 
			
		||||
    'Gerudo Training Ground MQ without Lens of Truth': {
 | 
			
		||||
        'name'    : 'logic_lens_gtg_mq',
 | 
			
		||||
        'tags'    : ("Lens of Truth","Gerudo Training Grounds",),
 | 
			
		||||
        'tags'    : ("Lens of Truth","Gerudo Training Ground",),
 | 
			
		||||
        'tooltip' : '''\
 | 
			
		||||
                    Removes the requirements for the Lens of Truth
 | 
			
		||||
                    in Gerudo Training Grounds MQ.
 | 
			
		||||
                    in Gerudo Training Ground MQ.
 | 
			
		||||
                    '''},
 | 
			
		||||
    'Gerudo Training Grounds without Lens of Truth': {
 | 
			
		||||
    'Gerudo Training Ground without Lens of Truth': {
 | 
			
		||||
        'name'    : 'logic_lens_gtg',
 | 
			
		||||
        'tags'    : ("Lens of Truth","Gerudo Training Grounds",),
 | 
			
		||||
        'tags'    : ("Lens of Truth","Gerudo Training Ground",),
 | 
			
		||||
        'tooltip' : '''\
 | 
			
		||||
                    Removes the requirements for the Lens of Truth
 | 
			
		||||
                    in Gerudo Training Grounds.
 | 
			
		||||
                    in Gerudo Training Ground.
 | 
			
		||||
                    '''},
 | 
			
		||||
    'Jabu MQ without Lens of Truth': {
 | 
			
		||||
        'name'    : 'logic_lens_jabu_mq',
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -308,7 +308,7 @@ KEYSANITY_MESSAGES = {
 | 
			
		|||
    0x0095: "\x13\x77\x08You found a \x05\x41Small Key\x05\x40\x01for the \x05\x43Water Temple\x05\x40!\x09",
 | 
			
		||||
    0x009B: "\x13\x77\x08You found a \x05\x41Small Key\x05\x40\x01for the \x05\x45Bottom of the Well\x05\x40!\x09",
 | 
			
		||||
    0x009F: "\x13\x77\x08You found a \x05\x41Small Key\x05\x40\x01for the \x05\x46Gerudo Training\x01Grounds\x05\x40!\x09",
 | 
			
		||||
    0x00A0: "\x13\x77\x08You found a \x05\x41Small Key\x05\x40\x01for the \x05\x46Gerudo's Fortress\x05\x40!\x09",
 | 
			
		||||
    0x00A0: "\x13\x77\x08You found a \x05\x41Small Key\x05\x40\x01for the \x05\x46Thieves' Hideout\x05\x40!\x09",
 | 
			
		||||
    0x00A1: "\x13\x77\x08You found a \x05\x41Small Key\x05\x40\x01for \x05\x41Ganon's Castle\x05\x40!\x09",
 | 
			
		||||
    0x00A2: "\x13\x75\x08You found the \x05\x41Compass\x05\x40\x01for the \x05\x45Bottom of the Well\x05\x40!\x09",
 | 
			
		||||
    0x00A3: "\x13\x76\x08You found the \x05\x41Dungeon Map\x05\x40\x01for the \x05\x45Shadow Temple\x05\x40!\x09",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -421,8 +421,8 @@ class ShuffleKeys(Choice):
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
class ShuffleGerudoKeys(Choice): 
 | 
			
		||||
    """Control where to shuffle the Gerudo Fortress small keys."""
 | 
			
		||||
    display_name = "Gerudo Fortress Keys"
 | 
			
		||||
    """Control where to shuffle the Thieves' Hideout small keys."""
 | 
			
		||||
    display_name = "Thieves' Hideout Keys"
 | 
			
		||||
    option_vanilla = 0
 | 
			
		||||
    option_overworld = 1
 | 
			
		||||
    option_any_dungeon = 2
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -710,7 +710,7 @@ def patch_rom(world, rom):
 | 
			
		|||
        rom.write_byte(address,0x01)
 | 
			
		||||
 | 
			
		||||
    # Allow Warp Songs in additional places
 | 
			
		||||
    rom.write_byte(0xB6D3D2, 0x00) # Gerudo Training Grounds
 | 
			
		||||
    rom.write_byte(0xB6D3D2, 0x00) # Gerudo Training Ground
 | 
			
		||||
    rom.write_byte(0xB6D42A, 0x00) # Inside Ganon's Castle
 | 
			
		||||
 | 
			
		||||
    #Tell Sheik at Ice Cavern we are always an Adult
 | 
			
		||||
| 
						 | 
				
			
			@ -719,10 +719,10 @@ def patch_rom(world, rom):
 | 
			
		|||
    rom.write_int32(0xc7BCA4, 0x00000000)
 | 
			
		||||
 | 
			
		||||
    # Allow Farore's Wind in dungeons where it's normally forbidden
 | 
			
		||||
    rom.write_byte(0xB6D3D3, 0x00) # Gerudo Training Grounds
 | 
			
		||||
    rom.write_byte(0xB6D3D3, 0x00) # Gerudo Training Ground
 | 
			
		||||
    rom.write_byte(0xB6D42B, 0x00) # Inside Ganon's Castle
 | 
			
		||||
 | 
			
		||||
    # Remove disruptive text from Gerudo Training Grounds and early Shadow Temple (vanilla)
 | 
			
		||||
    # Remove disruptive text from Gerudo Training Ground and early Shadow Temple (vanilla)
 | 
			
		||||
    Wonder_text = [0x27C00BC, 0x27C00CC, 0x27C00DC, 0x27C00EC, 0x27C00FC, 0x27C010C, 0x27C011C, 0x27C012C, 0x27CE080,
 | 
			
		||||
                   0x27CE090, 0x2887070, 0x2887080, 0x2887090, 0x2897070, 0x28C7134, 0x28D91BC, 0x28A60F4, 0x28AE084,
 | 
			
		||||
                   0x28B9174, 0x28BF168, 0x28BF178, 0x28BF188, 0x28A1144, 0x28A6104, 0x28D0094]
 | 
			
		||||
| 
						 | 
				
			
			@ -826,10 +826,6 @@ def patch_rom(world, rom):
 | 
			
		|||
 | 
			
		||||
    exit_table = generate_exit_lookup_table()
 | 
			
		||||
 | 
			
		||||
    if world.entrance_shuffle:
 | 
			
		||||
        # Disable the fog state entirely to avoid fog glitches
 | 
			
		||||
        rom.write_byte(rom.sym('NO_FOG_STATE'), 1)
 | 
			
		||||
 | 
			
		||||
    if world.disable_trade_revert:
 | 
			
		||||
        # Disable trade quest timers and prevent trade items from ever reverting
 | 
			
		||||
        rom.write_byte(rom.sym('DISABLE_TIMERS'), 0x01)
 | 
			
		||||
| 
						 | 
				
			
			@ -1202,7 +1198,7 @@ def patch_rom(world, rom):
 | 
			
		|||
    if world.dungeon_mq['Ice Cavern']:
 | 
			
		||||
        mq_scenes.append(9)
 | 
			
		||||
    # Scene 10 has no layout changes, so it doesn't need to be patched
 | 
			
		||||
    if world.dungeon_mq['Gerudo Training Grounds']:
 | 
			
		||||
    if world.dungeon_mq['Gerudo Training Ground']:
 | 
			
		||||
        mq_scenes.append(11)
 | 
			
		||||
    if world.dungeon_mq['Ganons Castle']:
 | 
			
		||||
        mq_scenes.append(13)
 | 
			
		||||
| 
						 | 
				
			
			@ -1378,7 +1374,7 @@ def patch_rom(world, rom):
 | 
			
		|||
                rom.write_byte(0x2E8E931, special['text_id']) #Fix text box
 | 
			
		||||
            elif location.name == 'Song from Malon':
 | 
			
		||||
                rom.write_byte(rom.sym('MALON_TEXT_ID'), special['text_id'])
 | 
			
		||||
            elif location.name == 'Song from Composers Grave':
 | 
			
		||||
            elif location.name == 'Song from Royal Familys Tomb':
 | 
			
		||||
                rom.write_int16(0xE09F66, bit_mask_pointer)
 | 
			
		||||
                rom.write_byte(0x332A87D, special['text_id']) #Fix text box
 | 
			
		||||
            elif location.name == 'Song from Saria':
 | 
			
		||||
| 
						 | 
				
			
			@ -1685,7 +1681,7 @@ def patch_rom(world, rom):
 | 
			
		|||
                        'Shadow Temple':      ("the \x05\x45Shadow Temple", 'Bongo Bongo', 0x7f, 0xa3),
 | 
			
		||||
        }
 | 
			
		||||
        for dungeon in world.dungeon_mq:
 | 
			
		||||
            if dungeon in ['Gerudo Training Grounds', 'Ganons Castle']:
 | 
			
		||||
            if dungeon in ['Gerudo Training Ground', 'Ganons Castle']:
 | 
			
		||||
                pass
 | 
			
		||||
            elif dungeon in ['Bottom of the Well', 'Ice Cavern']:
 | 
			
		||||
                dungeon_name, boss_name, compass_id, map_id = dungeon_list[dungeon]
 | 
			
		||||
| 
						 | 
				
			
			@ -2184,7 +2180,7 @@ def configure_dungeon_info(rom, world):
 | 
			
		|||
    codes = ['Deku Tree', 'Dodongos Cavern', 'Jabu Jabus Belly', 'Forest Temple',
 | 
			
		||||
             'Fire Temple', 'Water Temple', 'Spirit Temple', 'Shadow Temple',
 | 
			
		||||
             'Bottom of the Well', 'Ice Cavern', 'Tower (N/A)',
 | 
			
		||||
             'Gerudo Training Grounds', 'Hideout (N/A)', 'Ganons Castle']
 | 
			
		||||
             'Gerudo Training Ground', 'Hideout (N/A)', 'Ganons Castle']
 | 
			
		||||
    dungeon_is_mq = [1 if world.dungeon_mq.get(c) else 0 for c in codes]
 | 
			
		||||
 | 
			
		||||
    rom.write_int32(rom.sym('cfg_dungeon_info_enable'), 1)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -81,7 +81,7 @@ class OOTWorld(World):
 | 
			
		|||
    remote_items: bool = False
 | 
			
		||||
    remote_start_inventory: bool = False
 | 
			
		||||
 | 
			
		||||
    data_version = 1
 | 
			
		||||
    data_version = 2
 | 
			
		||||
 | 
			
		||||
    required_client_version = (0, 3, 2)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -167,12 +167,20 @@ class OOTWorld(World):
 | 
			
		|||
        self.dungeon_mq = {item['name']: (item in mq_dungeons) for item in dungeon_table}
 | 
			
		||||
 | 
			
		||||
        # Determine tricks in logic
 | 
			
		||||
        for trick in self.logic_tricks:
 | 
			
		||||
            normalized_name = trick.casefold()
 | 
			
		||||
            if normalized_name in normalized_name_tricks:
 | 
			
		||||
                setattr(self, normalized_name_tricks[normalized_name]['name'], True)
 | 
			
		||||
            else:
 | 
			
		||||
                raise Exception(f'Unknown OOT logic trick for player {self.player}: {trick}')
 | 
			
		||||
        if self.logic_rules == 'glitchless':
 | 
			
		||||
            for trick in self.logic_tricks:
 | 
			
		||||
                normalized_name = trick.casefold()
 | 
			
		||||
                if normalized_name in normalized_name_tricks:
 | 
			
		||||
                    setattr(self, normalized_name_tricks[normalized_name]['name'], True)
 | 
			
		||||
                else:
 | 
			
		||||
                    raise Exception(f'Unknown OOT logic trick for player {self.player}: {trick}')
 | 
			
		||||
 | 
			
		||||
        # No Logic forces all tricks on, prog balancing off and beatable-only
 | 
			
		||||
        elif self.logic_rules == 'no_logic':
 | 
			
		||||
            self.world.progression_balancing[self.player].value = False
 | 
			
		||||
            self.world.accessibility[self.player] = self.world.accessibility[self.player].from_text("minimal")
 | 
			
		||||
            for trick in normalized_name_tricks.values():
 | 
			
		||||
                setattr(self, trick['name'], True)
 | 
			
		||||
 | 
			
		||||
        # Not implemented for now, but needed to placate the generator. Remove as they are implemented
 | 
			
		||||
        self.mq_dungeons_random = False  # this will be a deprecated option later
 | 
			
		||||
| 
						 | 
				
			
			@ -295,8 +303,7 @@ class OOTWorld(World):
 | 
			
		|||
                        continue
 | 
			
		||||
                    new_location.parent_region = new_region
 | 
			
		||||
                    new_location.rule_string = rule
 | 
			
		||||
                    if self.world.logic_rules != 'none':
 | 
			
		||||
                        self.parser.parse_spot_rule(new_location)
 | 
			
		||||
                    self.parser.parse_spot_rule(new_location)
 | 
			
		||||
                    if new_location.never:
 | 
			
		||||
                        # We still need to fill the location even if ALR is off.
 | 
			
		||||
                        logger.debug('Unreachable location: %s', new_location.name)
 | 
			
		||||
| 
						 | 
				
			
			@ -308,8 +315,7 @@ class OOTWorld(World):
 | 
			
		|||
                    lname = '%s from %s' % (event, new_region.name)
 | 
			
		||||
                    new_location = OOTLocation(self.player, lname, type='Event', parent=new_region)
 | 
			
		||||
                    new_location.rule_string = rule
 | 
			
		||||
                    if self.world.logic_rules != 'none':
 | 
			
		||||
                        self.parser.parse_spot_rule(new_location)
 | 
			
		||||
                    self.parser.parse_spot_rule(new_location)
 | 
			
		||||
                    if new_location.never:
 | 
			
		||||
                        logger.debug('Dropping unreachable event: %s', new_location.name)
 | 
			
		||||
                    else:
 | 
			
		||||
| 
						 | 
				
			
			@ -433,7 +439,7 @@ class OOTWorld(World):
 | 
			
		|||
        return item
 | 
			
		||||
 | 
			
		||||
    def create_regions(self):  # create and link regions
 | 
			
		||||
        if self.logic_rules == 'glitchless':
 | 
			
		||||
        if self.logic_rules == 'glitchless' or self.logic_rules == 'no_logic':  # enables ER + NL
 | 
			
		||||
            world_type = 'World'
 | 
			
		||||
        else:
 | 
			
		||||
            world_type = 'Glitched World'
 | 
			
		||||
| 
						 | 
				
			
			@ -503,6 +509,8 @@ class OOTWorld(World):
 | 
			
		|||
                        raise e
 | 
			
		||||
                    # Restore original state and delete assumed entrances
 | 
			
		||||
                    for entrance in self.get_shuffled_entrances():
 | 
			
		||||
                        if entrance.connected_region is not None:
 | 
			
		||||
                            entrance.disconnect()
 | 
			
		||||
                        entrance.connect(self.world.get_region(entrance.vanilla_connected_region, self.player))
 | 
			
		||||
                        if entrance.assumed:
 | 
			
		||||
                            assumed_entrance = entrance.assumed
 | 
			
		||||
| 
						 | 
				
			
			@ -580,7 +588,7 @@ class OOTWorld(World):
 | 
			
		|||
            # only one exists
 | 
			
		||||
            "Bottom of the Well Lens of Truth Chest", "Bottom of the Well MQ Lens of Truth Chest",
 | 
			
		||||
            # only one exists
 | 
			
		||||
            "Gerudo Training Grounds Maze Path Final Chest", "Gerudo Training Grounds MQ Ice Arrows Chest",
 | 
			
		||||
            "Gerudo Training Ground Maze Path Final Chest", "Gerudo Training Ground MQ Ice Arrows Chest",
 | 
			
		||||
        ]
 | 
			
		||||
 | 
			
		||||
        # Place/set rules for dungeon items
 | 
			
		||||
| 
						 | 
				
			
			@ -616,32 +624,33 @@ class OOTWorld(World):
 | 
			
		|||
 | 
			
		||||
        # Now fill items that can go into any dungeon. Retrieve the Gerudo Fortress keys from the pool if necessary
 | 
			
		||||
        if self.shuffle_fortresskeys == 'any_dungeon':
 | 
			
		||||
            fortresskeys = filter(lambda item: item.player == self.player and item.type == 'FortressSmallKey',
 | 
			
		||||
            fortresskeys = filter(lambda item: item.player == self.player and item.type == 'HideoutSmallKey',
 | 
			
		||||
                                  self.world.itempool)
 | 
			
		||||
            itempools['any_dungeon'].extend(fortresskeys)
 | 
			
		||||
        if itempools['any_dungeon']:
 | 
			
		||||
            for item in itempools['any_dungeon']:
 | 
			
		||||
                self.world.itempool.remove(item)
 | 
			
		||||
            itempools['any_dungeon'].sort(key=lambda item:
 | 
			
		||||
            {'GanonBossKey': 4, 'BossKey': 3, 'SmallKey': 2, 'FortressSmallKey': 1}.get(item.type, 0))
 | 
			
		||||
            {'GanonBossKey': 4, 'BossKey': 3, 'SmallKey': 2, 'HideoutSmallKey': 1}.get(item.type, 0))
 | 
			
		||||
            self.world.random.shuffle(any_dungeon_locations)
 | 
			
		||||
            fill_restrictive(self.world, self.world.get_all_state(False), any_dungeon_locations,
 | 
			
		||||
                             itempools['any_dungeon'], True, True)
 | 
			
		||||
 | 
			
		||||
        # If anything is overworld-only, fill into local non-dungeon locations
 | 
			
		||||
        if self.shuffle_fortresskeys == 'overworld':
 | 
			
		||||
            fortresskeys = filter(lambda item: item.player == self.player and item.type == 'FortressSmallKey',
 | 
			
		||||
            fortresskeys = filter(lambda item: item.player == self.player and item.type == 'HideoutSmallKey',
 | 
			
		||||
                                  self.world.itempool)
 | 
			
		||||
            itempools['overworld'].extend(fortresskeys)
 | 
			
		||||
        if itempools['overworld']:
 | 
			
		||||
            for item in itempools['overworld']:
 | 
			
		||||
                self.world.itempool.remove(item)
 | 
			
		||||
            itempools['overworld'].sort(key=lambda item:
 | 
			
		||||
            {'GanonBossKey': 4, 'BossKey': 3, 'SmallKey': 2, 'FortressSmallKey': 1}.get(item.type, 0))
 | 
			
		||||
            {'GanonBossKey': 4, 'BossKey': 3, 'SmallKey': 2, 'HideoutSmallKey': 1}.get(item.type, 0))
 | 
			
		||||
            non_dungeon_locations = [loc for loc in self.get_locations() if
 | 
			
		||||
                                     not loc.item and loc not in any_dungeon_locations
 | 
			
		||||
                                     and loc.type != 'Shop' and (
 | 
			
		||||
                                                 loc.type != 'Song' or self.shuffle_song_items != 'song')]
 | 
			
		||||
                                     not loc.item and loc not in any_dungeon_locations and
 | 
			
		||||
                                     (loc.type != 'Shop' or loc.name in self.shop_prices) and
 | 
			
		||||
                                     (loc.type != 'Song' or self.shuffle_song_items != 'song') and
 | 
			
		||||
                                     (loc.name not in dungeon_song_locations or self.shuffle_song_items != 'dungeon')]
 | 
			
		||||
            self.world.random.shuffle(non_dungeon_locations)
 | 
			
		||||
            fill_restrictive(self.world, self.world.get_all_state(False), non_dungeon_locations,
 | 
			
		||||
                             itempools['overworld'], True, True)
 | 
			
		||||
| 
						 | 
				
			
			@ -840,7 +849,7 @@ class OOTWorld(World):
 | 
			
		|||
                    if loc.game == "Ocarina of Time" and loc.item.code and (not loc.locked or
 | 
			
		||||
                        (loc.item.type == 'Song' or
 | 
			
		||||
                            (loc.item.type == 'SmallKey'         and world.worlds[loc.player].shuffle_smallkeys     == 'any_dungeon') or
 | 
			
		||||
                            (loc.item.type == 'FortressSmallKey' and world.worlds[loc.player].shuffle_fortresskeys  == 'any_dungeon') or
 | 
			
		||||
                            (loc.item.type == 'HideoutSmallKey'  and world.worlds[loc.player].shuffle_fortresskeys  == 'any_dungeon') or
 | 
			
		||||
                            (loc.item.type == 'BossKey'          and world.worlds[loc.player].shuffle_bosskeys      == 'any_dungeon') or
 | 
			
		||||
                            (loc.item.type == 'GanonBossKey'     and world.worlds[loc.player].shuffle_ganon_bosskey == 'any_dungeon'))):
 | 
			
		||||
                        if loc.player in barren_hint_players:
 | 
			
		||||
| 
						 | 
				
			
			@ -885,14 +894,29 @@ class OOTWorld(World):
 | 
			
		|||
            if len(entrance) > 2:
 | 
			
		||||
                hint_entrances.add(entrance[2][0])
 | 
			
		||||
 | 
			
		||||
        # Get main hint entrance to region.
 | 
			
		||||
        # If the region is directly adjacent to a hint-entrance, we return that one.
 | 
			
		||||
        # If it's in a dungeon, scan all the entrances for all the regions in the dungeon.
 | 
			
		||||
        #   This should terminate on the first region anyway, but we scan everything to be safe.
 | 
			
		||||
        # If it's one of the special cases, go one level deeper.
 | 
			
		||||
        # Otherwise return None.
 | 
			
		||||
        def get_entrance_to_region(region):
 | 
			
		||||
            if region.name == 'Root':
 | 
			
		||||
                return None
 | 
			
		||||
            special_case_regions = {
 | 
			
		||||
                "Beyond Door of Time",
 | 
			
		||||
                "Kak Impas House Near Cow",
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            for entrance in region.entrances:
 | 
			
		||||
                if entrance.name in hint_entrances:
 | 
			
		||||
                    return entrance
 | 
			
		||||
            for entrance in region.entrances:
 | 
			
		||||
                return get_entrance_to_region(entrance.parent_region)
 | 
			
		||||
            if region.dungeon is not None:
 | 
			
		||||
                for r in region.dungeon.regions:
 | 
			
		||||
                    for e in r.entrances:
 | 
			
		||||
                        if e.name in hint_entrances:
 | 
			
		||||
                            return e
 | 
			
		||||
            if region.name in special_case_regions:
 | 
			
		||||
                return get_entrance_to_region(region.entrances[0].parent_region)
 | 
			
		||||
            return None
 | 
			
		||||
 | 
			
		||||
        # Remove undesired items from start_inventory
 | 
			
		||||
        for item_name in self.remove_from_start_inventory:
 | 
			
		||||
| 
						 | 
				
			
			@ -907,6 +931,8 @@ class OOTWorld(World):
 | 
			
		|||
        if self.shuffle_interior_entrances != 'off' or self.shuffle_dungeon_entrances or self.shuffle_grotto_entrances:
 | 
			
		||||
            er_hint_data = {}
 | 
			
		||||
            for region in self.regions:
 | 
			
		||||
                if not any(bool(loc.address) for loc in region.locations): # check if region has any non-event locations
 | 
			
		||||
                    continue
 | 
			
		||||
                main_entrance = get_entrance_to_region(region)
 | 
			
		||||
                if main_entrance is not None and main_entrance.shuffled:
 | 
			
		||||
                    for location in region.locations:
 | 
			
		||||
| 
						 | 
				
			
			@ -955,7 +981,7 @@ class OOTWorld(World):
 | 
			
		|||
            return False
 | 
			
		||||
        if item.type == 'SmallKey' and self.shuffle_smallkeys in ['dungeon', 'vanilla']:
 | 
			
		||||
            return False
 | 
			
		||||
        if item.type == 'FortressSmallKey' and self.shuffle_fortresskeys == 'vanilla':
 | 
			
		||||
        if item.type == 'HideoutSmallKey' and self.shuffle_fortresskeys == 'vanilla':
 | 
			
		||||
            return False
 | 
			
		||||
        if item.type == 'BossKey' and self.shuffle_bosskeys in ['dungeon', 'vanilla']:
 | 
			
		||||
            return False
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,79 @@
 | 
			
		|||
[
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Ground Lobby",
 | 
			
		||||
        "dungeon": "Gerudo Training Ground",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Ground MQ Lobby Left Chest": "True",
 | 
			
		||||
            "Gerudo Training Ground MQ Lobby Right Chest": "True",
 | 
			
		||||
            "Gerudo Training Ground MQ Hidden Ceiling Chest": "logic_lens_gtg_mq or can_use(Lens_of_Truth)",
 | 
			
		||||
            "Gerudo Training Ground MQ Maze Path First Chest": "True",
 | 
			
		||||
            "Gerudo Training Ground MQ Maze Path Second Chest": "True",
 | 
			
		||||
            "Gerudo Training Ground MQ Maze Path Third Chest": "(Small_Key_Gerudo_Training_Ground, 1)"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Fortress": "True",
 | 
			
		||||
            "Gerudo Training Ground Left Side": "has_fire_source",
 | 
			
		||||
            "Gerudo Training Ground Right Side": "Bow"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Ground Right Side",
 | 
			
		||||
        "dungeon": "Gerudo Training Ground",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Ground MQ Dinolfos Chest": "True",
 | 
			
		||||
            "Gerudo Training Ground MQ Underwater Silver Rupee Chest": "
 | 
			
		||||
                (Hover_Boots or at('Gerudo Training Ground Central Maze Right', can_use(Longshot) or Bow)) and 
 | 
			
		||||
                has_fire_source and Iron_Boots and (logic_fewer_tunic_requirements or can_use(Zora_Tunic)) and 
 | 
			
		||||
                can_take_damage",
 | 
			
		||||
            "Wall Fairy": "has_bottle and can_use(Bow)" #in the Dinalfos room shoot the Gerudo symbol above the door to the lava room.
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Ground Left Side",
 | 
			
		||||
        "dungeon": "Gerudo Training Ground",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Ground MQ First Iron Knuckle Chest": "True"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Ground Stalfos Room": "can_use(Longshot) or (logic_gtg_mq_with_hookshot and can_use(Hookshot))"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Ground Stalfos Room",
 | 
			
		||||
        "dungeon": "Gerudo Training Ground",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Ground MQ Before Heavy Block Chest": "True",
 | 
			
		||||
            "Gerudo Training Ground MQ Heavy Block Chest": "can_use(Silver_Gauntlets)",
 | 
			
		||||
            "Blue Fire": "has_bottle"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Ground Back Areas": "can_play(Song_of_Time) and (logic_lens_gtg_mq or can_use(Lens_of_Truth)) and Blue_Fire"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Ground Back Areas",
 | 
			
		||||
        "dungeon": "Gerudo Training Ground",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Ground MQ Eye Statue Chest": "Bow",
 | 
			
		||||
            "Gerudo Training Ground MQ Second Iron Knuckle Chest": "True",
 | 
			
		||||
            "Gerudo Training Ground MQ Flame Circle Chest": "True"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Ground Central Maze Right": "Megaton_Hammer",
 | 
			
		||||
            "Gerudo Training Ground Right Side": "can_use(Longshot)"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Ground Central Maze Right",
 | 
			
		||||
        "dungeon": "Gerudo Training Ground",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Ground MQ Maze Right Central Chest": "True",
 | 
			
		||||
            "Gerudo Training Ground MQ Maze Right Side Chest": "True",
 | 
			
		||||
            "Gerudo Training Ground MQ Ice Arrows Chest": "
 | 
			
		||||
                (Small_Key_Gerudo_Training_Ground, 3)"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Ground Right Side": "True"
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
]
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,112 @@
 | 
			
		|||
[
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Ground Lobby",
 | 
			
		||||
        "dungeon": "Gerudo Training Ground",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Ground Lobby Left Chest": "can_use(Bow) or can_use(Slingshot)",
 | 
			
		||||
            "Gerudo Training Ground Lobby Right Chest": "can_use(Bow) or can_use(Slingshot)",
 | 
			
		||||
            "Gerudo Training Ground Stalfos Chest": "can_jumpslash",
 | 
			
		||||
            "Gerudo Training Ground Beamos Chest": "has_explosives and can_jumpslash",
 | 
			
		||||
            "Wall Fairy": "has_bottle and can_use(Bow)" #in the Beamos room shoot the Gerudo symbol above the door to the lava room.
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Ground Heavy Block Room": "True",
 | 
			
		||||
            "Gerudo Training Ground Lava Room": "
 | 
			
		||||
                here(has_explosives and can_jumpslash)",
 | 
			
		||||
            "Gerudo Training Ground Central Maze": "True"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Ground Central Maze",
 | 
			
		||||
        "dungeon": "Gerudo Training Ground",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Ground Hidden Ceiling Chest": "(Small_Key_Gerudo_Training_Ground, 3)
 | 
			
		||||
                or (can_use(Hookshot) and can_mega) or (is_child and has_explosives and (can_live_dmg(0.5) or can_use(Nayrus_Love)))",
 | 
			
		||||
            "Gerudo Training Ground Maze Path First Chest": "(Small_Key_Gerudo_Training_Ground, 4)
 | 
			
		||||
                or (can_use(Hookshot) and can_mega) or (is_child and has_explosives and (can_live_dmg(1.0) or can_use(Nayrus_Love)))",
 | 
			
		||||
            "Gerudo Training Ground Maze Path Second Chest": "(Small_Key_Gerudo_Training_Ground, 6)
 | 
			
		||||
                or (can_use(Hookshot) and can_mega) or (is_child and has_explosives and (can_live_dmg(1.0) or can_use(Nayrus_Love)))",
 | 
			
		||||
            "Gerudo Training Ground Maze Path Third Chest": "(Small_Key_Gerudo_Training_Ground, 7)
 | 
			
		||||
                or (can_use(Hookshot) and can_mega) or (is_child and has_explosives and (can_live_dmg(0.5) or can_use(Nayrus_Love)))",
 | 
			
		||||
            "Gerudo Training Ground Maze Path Final Chest": "(Small_Key_Gerudo_Training_Ground, 9)
 | 
			
		||||
                or (can_use(Hookshot) and can_mega) or (is_child and has_explosives and (can_live_dmg(0.5) or can_use(Nayrus_Love)))"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Ground Central Maze Right": "(Small_Key_Gerudo_Training_Ground, 9)
 | 
			
		||||
                or (can_use(Hookshot) and can_mega) or (is_child and has_explosives)"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Ground Central Maze Right",
 | 
			
		||||
        "dungeon": "Gerudo Training Ground",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Ground Maze Right Central Chest": "True",
 | 
			
		||||
            "Gerudo Training Ground Maze Right Side Chest": "True",
 | 
			
		||||
            "Gerudo Training Ground Freestanding Key": "True"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Ground Lava Room": "True"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Ground Lava Room",
 | 
			
		||||
        "dungeon": "Gerudo Training Ground",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Ground Underwater Silver Rupee Chest": "
 | 
			
		||||
                can_use(Hookshot) and (can_play(Song_of_Time) or can_mega) and Iron_Boots"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Ground Central Maze Right": "can_play(Song_of_Time) or is_child
 | 
			
		||||
                or (can_use(Hookshot) and can_use(Hover_Boots) and can_shield and Bombs)",
 | 
			
		||||
            "Gerudo Training Ground Hammer Room": "can_use(Hookshot)"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Ground Hammer Room",
 | 
			
		||||
        "dungeon": "Gerudo Training Ground",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Ground Hammer Room Clear Chest": "True",
 | 
			
		||||
            "Gerudo Training Ground Hammer Room Switch Chest": "can_use(Megaton_Hammer) or 
 | 
			
		||||
                can_live_dmg(0.5) or can_use(Nayrus_Love)"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Ground Eye Statue Lower": "can_use(Bow)",
 | 
			
		||||
            "Gerudo Training Ground Lava Room": "True"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Ground Eye Statue Lower",
 | 
			
		||||
        "dungeon": "Gerudo Training Ground",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Ground Eye Statue Chest": "can_use(Bow)"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Ground Hammer Room": "True"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Ground Eye Statue Upper",
 | 
			
		||||
        "dungeon": "Gerudo Training Ground",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Ground Near Scarecrow Chest": "can_use(Bow)"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Ground Eye Statue Lower": "True"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Ground Heavy Block Room",
 | 
			
		||||
        "dungeon": "Gerudo Training Ground",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Ground Before Heavy Block Chest": "True",
 | 
			
		||||
            "Gerudo Training Ground Heavy Block First Chest": "can_use(Silver_Gauntlets)",
 | 
			
		||||
            "Gerudo Training Ground Heavy Block Second Chest": "can_use(Silver_Gauntlets)",
 | 
			
		||||
            "Gerudo Training Ground Heavy Block Third Chest": "can_use(Silver_Gauntlets)",
 | 
			
		||||
            "Gerudo Training Ground Heavy Block Fourth Chest": "can_use(Silver_Gauntlets)"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Ground Eye Statue Upper": "can_use(Hookshot) or can_hover or
 | 
			
		||||
                (is_adult and (Hover_Boots or (can_shield and Bombs)))"
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
]
 | 
			
		||||
| 
						 | 
				
			
			@ -1,79 +0,0 @@
 | 
			
		|||
[
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Grounds Lobby",
 | 
			
		||||
        "dungeon": "Gerudo Training Grounds",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Grounds MQ Lobby Left Chest": "True",
 | 
			
		||||
            "Gerudo Training Grounds MQ Lobby Right Chest": "True",
 | 
			
		||||
            "Gerudo Training Grounds MQ Hidden Ceiling Chest": "logic_lens_gtg_mq or can_use(Lens_of_Truth)",
 | 
			
		||||
            "Gerudo Training Grounds MQ Maze Path First Chest": "True",
 | 
			
		||||
            "Gerudo Training Grounds MQ Maze Path Second Chest": "True",
 | 
			
		||||
            "Gerudo Training Grounds MQ Maze Path Third Chest": "(Small_Key_Gerudo_Training_Grounds, 1)"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Fortress": "True",
 | 
			
		||||
            "Gerudo Training Grounds Left Side": "has_fire_source",
 | 
			
		||||
            "Gerudo Training Grounds Right Side": "Bow"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Grounds Right Side",
 | 
			
		||||
        "dungeon": "Gerudo Training Grounds",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Grounds MQ Dinolfos Chest": "True",
 | 
			
		||||
            "Gerudo Training Grounds MQ Underwater Silver Rupee Chest": "
 | 
			
		||||
                (Hover_Boots or at('Gerudo Training Grounds Central Maze Right', can_use(Longshot) or Bow)) and 
 | 
			
		||||
                has_fire_source and Iron_Boots and (logic_fewer_tunic_requirements or can_use(Zora_Tunic)) and 
 | 
			
		||||
                can_take_damage",
 | 
			
		||||
            "Wall Fairy": "has_bottle and can_use(Bow)" #in the Dinalfos room shoot the Gerudo symbol above the door to the lava room.
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Grounds Left Side",
 | 
			
		||||
        "dungeon": "Gerudo Training Grounds",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Grounds MQ First Iron Knuckle Chest": "True"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Grounds Stalfos Room": "can_use(Longshot) or (logic_gtg_mq_with_hookshot and can_use(Hookshot))"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Grounds Stalfos Room",
 | 
			
		||||
        "dungeon": "Gerudo Training Grounds",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Grounds MQ Before Heavy Block Chest": "True",
 | 
			
		||||
            "Gerudo Training Grounds MQ Heavy Block Chest": "can_use(Silver_Gauntlets)",
 | 
			
		||||
            "Blue Fire": "has_bottle"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Grounds Back Areas": "can_play(Song_of_Time) and (logic_lens_gtg_mq or can_use(Lens_of_Truth)) and Blue_Fire"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Grounds Back Areas",
 | 
			
		||||
        "dungeon": "Gerudo Training Grounds",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Grounds MQ Eye Statue Chest": "Bow",
 | 
			
		||||
            "Gerudo Training Grounds MQ Second Iron Knuckle Chest": "True",
 | 
			
		||||
            "Gerudo Training Grounds MQ Flame Circle Chest": "True"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Grounds Central Maze Right": "Megaton_Hammer",
 | 
			
		||||
            "Gerudo Training Grounds Right Side": "can_use(Longshot)"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Grounds Central Maze Right",
 | 
			
		||||
        "dungeon": "Gerudo Training Grounds",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Grounds MQ Maze Right Central Chest": "True",
 | 
			
		||||
            "Gerudo Training Grounds MQ Maze Right Side Chest": "True",
 | 
			
		||||
            "Gerudo Training Grounds MQ Ice Arrows Chest": "
 | 
			
		||||
                (Small_Key_Gerudo_Training_Grounds, 3)"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Grounds Right Side": "True"
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
]
 | 
			
		||||
| 
						 | 
				
			
			@ -1,112 +0,0 @@
 | 
			
		|||
[
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Grounds Lobby",
 | 
			
		||||
        "dungeon": "Gerudo Training Grounds",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Grounds Lobby Left Chest": "can_use(Bow) or can_use(Slingshot)",
 | 
			
		||||
            "Gerudo Training Grounds Lobby Right Chest": "can_use(Bow) or can_use(Slingshot)",
 | 
			
		||||
            "Gerudo Training Grounds Stalfos Chest": "can_jumpslash",
 | 
			
		||||
            "Gerudo Training Grounds Beamos Chest": "has_explosives and can_jumpslash",
 | 
			
		||||
            "Wall Fairy": "has_bottle and can_use(Bow)" #in the Beamos room shoot the Gerudo symbol above the door to the lava room.
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Grounds Heavy Block Room": "True",
 | 
			
		||||
            "Gerudo Training Grounds Lava Room": "
 | 
			
		||||
                here(has_explosives and can_jumpslash)",
 | 
			
		||||
            "Gerudo Training Grounds Central Maze": "True"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Grounds Central Maze",
 | 
			
		||||
        "dungeon": "Gerudo Training Grounds",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Grounds Hidden Ceiling Chest": "(Small_Key_Gerudo_Training_Grounds, 3)
 | 
			
		||||
                or (can_use(Hookshot) and can_mega) or (is_child and has_explosives and (can_live_dmg(0.5) or can_use(Nayrus_Love)))",
 | 
			
		||||
            "Gerudo Training Grounds Maze Path First Chest": "(Small_Key_Gerudo_Training_Grounds, 4)
 | 
			
		||||
                or (can_use(Hookshot) and can_mega) or (is_child and has_explosives and (can_live_dmg(1.0) or can_use(Nayrus_Love)))",
 | 
			
		||||
            "Gerudo Training Grounds Maze Path Second Chest": "(Small_Key_Gerudo_Training_Grounds, 6)
 | 
			
		||||
                or (can_use(Hookshot) and can_mega) or (is_child and has_explosives and (can_live_dmg(1.0) or can_use(Nayrus_Love)))",
 | 
			
		||||
            "Gerudo Training Grounds Maze Path Third Chest": "(Small_Key_Gerudo_Training_Grounds, 7)
 | 
			
		||||
                or (can_use(Hookshot) and can_mega) or (is_child and has_explosives and (can_live_dmg(0.5) or can_use(Nayrus_Love)))",
 | 
			
		||||
            "Gerudo Training Grounds Maze Path Final Chest": "(Small_Key_Gerudo_Training_Grounds, 9)
 | 
			
		||||
                or (can_use(Hookshot) and can_mega) or (is_child and has_explosives and (can_live_dmg(0.5) or can_use(Nayrus_Love)))"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Grounds Central Maze Right": "(Small_Key_Gerudo_Training_Grounds, 9)
 | 
			
		||||
                or (can_use(Hookshot) and can_mega) or (is_child and has_explosives)"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Grounds Central Maze Right",
 | 
			
		||||
        "dungeon": "Gerudo Training Grounds",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Grounds Maze Right Central Chest": "True",
 | 
			
		||||
            "Gerudo Training Grounds Maze Right Side Chest": "True",
 | 
			
		||||
            "Gerudo Training Grounds Freestanding Key": "True"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Grounds Lava Room": "True"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Grounds Lava Room",
 | 
			
		||||
        "dungeon": "Gerudo Training Grounds",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Grounds Underwater Silver Rupee Chest": "
 | 
			
		||||
                can_use(Hookshot) and (can_play(Song_of_Time) or can_mega) and Iron_Boots"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Grounds Central Maze Right": "can_play(Song_of_Time) or is_child
 | 
			
		||||
                or (can_use(Hookshot) and can_use(Hover_Boots) and can_shield and Bombs)",
 | 
			
		||||
            "Gerudo Training Grounds Hammer Room": "can_use(Hookshot)"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Grounds Hammer Room",
 | 
			
		||||
        "dungeon": "Gerudo Training Grounds",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Grounds Hammer Room Clear Chest": "True",
 | 
			
		||||
            "Gerudo Training Grounds Hammer Room Switch Chest": "can_use(Megaton_Hammer) or 
 | 
			
		||||
                can_live_dmg(0.5) or can_use(Nayrus_Love)"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Grounds Eye Statue Lower": "can_use(Bow)",
 | 
			
		||||
            "Gerudo Training Grounds Lava Room": "True"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Grounds Eye Statue Lower",
 | 
			
		||||
        "dungeon": "Gerudo Training Grounds",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Grounds Eye Statue Chest": "can_use(Bow)"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Grounds Hammer Room": "True"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Grounds Eye Statue Upper",
 | 
			
		||||
        "dungeon": "Gerudo Training Grounds",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Grounds Near Scarecrow Chest": "can_use(Bow)"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Grounds Eye Statue Lower": "True"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Grounds Heavy Block Room",
 | 
			
		||||
        "dungeon": "Gerudo Training Grounds",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Grounds Before Heavy Block Chest": "True",
 | 
			
		||||
            "Gerudo Training Grounds Heavy Block First Chest": "can_use(Silver_Gauntlets)",
 | 
			
		||||
            "Gerudo Training Grounds Heavy Block Second Chest": "can_use(Silver_Gauntlets)",
 | 
			
		||||
            "Gerudo Training Grounds Heavy Block Third Chest": "can_use(Silver_Gauntlets)",
 | 
			
		||||
            "Gerudo Training Grounds Heavy Block Fourth Chest": "can_use(Silver_Gauntlets)"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Grounds Eye Statue Upper": "can_use(Hookshot) or can_hover or
 | 
			
		||||
                (is_adult and (Hover_Boots or (can_shield and Bombs)))"
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
]
 | 
			
		||||
| 
						 | 
				
			
			@ -324,18 +324,18 @@
 | 
			
		|||
                Gerudo_Membership_Card and can_ride_epona and Bow and is_adult",
 | 
			
		||||
            "GF HBA 1500 Points": "
 | 
			
		||||
                Gerudo_Membership_Card and can_ride_epona and Bow and is_adult",
 | 
			
		||||
            "GF North F1 Carpenter": "is_adult or (is_child and can_child_damage)",
 | 
			
		||||
            "GF North F2 Carpenter": "is_adult or (is_child and can_child_damage)",
 | 
			
		||||
            "GF South F1 Carpenter": "is_adult or (is_child and can_child_damage)",
 | 
			
		||||
            "GF South F2 Carpenter": "is_adult or (is_child and can_child_damage)",
 | 
			
		||||
            "GF Gerudo Membership Card": "can_finish_GerudoFortress",
 | 
			
		||||
            "Hideout Jail Guard (1 Torch)": "is_adult or (is_child and can_child_damage)",
 | 
			
		||||
            "Hideout Jail Guard (2 Torches)": "is_adult or (is_child and can_child_damage)",
 | 
			
		||||
            "Hideout Jail Guard (3 Torches)": "is_adult or (is_child and can_child_damage)",
 | 
			
		||||
            "Hideout Jail Guard (4 Torches)": "is_adult or (is_child and can_child_damage)",
 | 
			
		||||
            "Hideout Gerudo Membership Card": "can_finish_GerudoFortress",
 | 
			
		||||
            "GF GS Archery Range": "can_use(Hookshot) and at_night",
 | 
			
		||||
            "GF GS Top Floor": "at_night and is_adult"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Haunted Wasteland": "is_child or 'GF Gate Open' or
 | 
			
		||||
                ((Progressive_Hookshot and (Hover_Boots or can_mega)) or (can_isg and Bombs) )",
 | 
			
		||||
            "Gerudo Training Grounds Lobby": "True"
 | 
			
		||||
            "Gerudo Training Ground Lobby": "True"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
| 
						 | 
				
			
			@ -707,7 +707,7 @@
 | 
			
		|||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Graveyard Shield Grave": "True",
 | 
			
		||||
            "Graveyard Composers Grave": "can_play(Zeldas_Lullaby) or at('Graveyard Warp Pad Region', True)",
 | 
			
		||||
            "Graveyard Royal Familys Tomb": "can_play(Zeldas_Lullaby) or at('Graveyard Warp Pad Region', True)",
 | 
			
		||||
            "Graveyard Heart Piece Grave": "True",
 | 
			
		||||
            "Graveyard Dampes Grave": "is_adult or at('Graveyard Warp Pad Region', True)",
 | 
			
		||||
            "Graveyard Dampes House": "True",
 | 
			
		||||
| 
						 | 
				
			
			@ -728,10 +728,10 @@
 | 
			
		|||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Graveyard Composers Grave",
 | 
			
		||||
        "region_name": "Graveyard Royal Familys Tomb",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Graveyard Composers Grave Chest": "has_fire_source or (is_child and Sticks and (can_live_dmg(0.75) or can_use(Nayrus_Love)))",
 | 
			
		||||
            "Song from Composers Grave": "
 | 
			
		||||
            "Graveyard Royal Familys Tomb Chest": "has_fire_source or (is_child and Sticks and (can_live_dmg(0.75) or can_use(Nayrus_Love)))",
 | 
			
		||||
            "Song from Royal Familys Tomb": "
 | 
			
		||||
                is_adult or 
 | 
			
		||||
                (Slingshot or Boomerang or Sticks or 
 | 
			
		||||
                    has_explosives or Kokiri_Sword)"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -83,8 +83,8 @@
 | 
			
		|||
    "has_fire_source_with_torch": "has_fire_source or (is_child and Sticks)",
 | 
			
		||||
 | 
			
		||||
    # Gerudo Fortress
 | 
			
		||||
    "can_finish_GerudoFortress": "(gerudo_fortress == 'normal' and (Small_Key_Gerudo_Fortress, 4) and (is_adult or Kokiri_Sword or is_glitched) and (is_adult and (Bow or Hookshot or Hover_Boots) or Gerudo_Membership_Card or logic_gerudo_kitchen or is_glitched))
 | 
			
		||||
            or (gerudo_fortress == 'fast' and Small_Key_Gerudo_Fortress and (is_adult or Kokiri_Sword or is_glitched))
 | 
			
		||||
    "can_finish_GerudoFortress": "(gerudo_fortress == 'normal' and (Small_Key_Thieves_Hideout, 4) and (is_adult or Kokiri_Sword or is_glitched) and (is_adult and (Bow or Hookshot or Hover_Boots) or Gerudo_Membership_Card or logic_gerudo_kitchen or is_glitched))
 | 
			
		||||
            or (gerudo_fortress == 'fast' and Small_Key_Thieves_Hideout and (is_adult or Kokiri_Sword or is_glitched))
 | 
			
		||||
            or (gerudo_fortress != 'normal' and gerudo_fortress != 'fast')",
 | 
			
		||||
    # Mirror shield does not count because it cannot reflect scrub attack.
 | 
			
		||||
    "has_shield": "(is_adult and Hylian_Shield) or (is_child and Deku_Shield)",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,7 +32,7 @@
 | 
			
		|||
                (can_use(Hookshot) or can_use(Boomerang)) and
 | 
			
		||||
                here(has_bombchus or
 | 
			
		||||
                    (Bombs and (can_play(Song_of_Time) or is_adult)) or
 | 
			
		||||
                    (can_use(Hammer) and (can_play(Song_of_Time) or logic_deku_mq_compass_gs)))"
 | 
			
		||||
                    (can_use(Megaton_Hammer) and (can_play(Song_of_Time) or logic_deku_mq_compass_gs)))"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Deku Tree Lobby": "True"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -41,7 +41,7 @@
 | 
			
		|||
                (logic_dc_mq_eyes and Progressive_Strength_Upgrade and
 | 
			
		||||
                    (is_adult or logic_dc_mq_child_back) and
 | 
			
		||||
                    (here(can_use(Sticks)) or can_use(Dins_Fire) or
 | 
			
		||||
                        (is_adult and (logic_dc_jump or Hammer or Hover_Boots or Hookshot))))"
 | 
			
		||||
                        (is_adult and (logic_dc_jump or Megaton_Hammer or Hover_Boots or Hookshot))))"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -33,8 +33,7 @@
 | 
			
		|||
                is_adult and (Progressive_Strength_Upgrade or
 | 
			
		||||
                    (logic_forest_mq_block_puzzle and has_bombchus and can_use(Hookshot)))",
 | 
			
		||||
            "Forest Temple Outdoor Ledge": "
 | 
			
		||||
                (logic_forest_mq_hallway_switch_jumpslash and can_use(Hover_Boots)) or
 | 
			
		||||
                (logic_forest_mq_hallway_switch_hookshot and can_use(Hookshot))",
 | 
			
		||||
                (logic_forest_mq_hallway_switch_jumpslash and can_use(Hover_Boots))",
 | 
			
		||||
            "Forest Temple Boss Region": "
 | 
			
		||||
                Forest_Temple_Jo_and_Beth and Forest_Temple_Amy_and_Meg"
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,98 @@
 | 
			
		|||
[
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Ground Lobby",
 | 
			
		||||
        "dungeon": "Gerudo Training Ground",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Ground MQ Lobby Left Chest": "True",
 | 
			
		||||
            "Gerudo Training Ground MQ Lobby Right Chest": "True",
 | 
			
		||||
            "Gerudo Training Ground MQ Hidden Ceiling Chest": "logic_lens_gtg_mq or can_use(Lens_of_Truth)",
 | 
			
		||||
            "Gerudo Training Ground MQ Maze Path First Chest": "True",
 | 
			
		||||
            "Gerudo Training Ground MQ Maze Path Second Chest": "True",
 | 
			
		||||
            "Gerudo Training Ground MQ Maze Path Third Chest": "(Small_Key_Gerudo_Training_Ground, 1)"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Fortress": "True",
 | 
			
		||||
            "Gerudo Training Ground Left Side": "here(has_fire_source)",
 | 
			
		||||
            "Gerudo Training Ground Right Side": "here(can_use(Bow) or can_use(Slingshot))"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Ground Right Side",
 | 
			
		||||
        "dungeon": "Gerudo Training Ground",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Ground MQ Dinolfos Chest": "is_adult",
 | 
			
		||||
            "Wall Fairy": "has_bottle and can_use(Bow)" #in the Dinalfos room shoot the Gerudo symbol above the door to the lava room.
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            # Still requires has_fire_source in the room
 | 
			
		||||
            "Gerudo Training Ground Underwater": "
 | 
			
		||||
                (Bow or can_use(Longshot)) and can_use(Hover_Boots)"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Ground Underwater",
 | 
			
		||||
        "dungeon": "Gerudo Training Ground",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Ground MQ Underwater Silver Rupee Chest": "
 | 
			
		||||
                has_fire_source and can_use(Iron_Boots) and
 | 
			
		||||
                (logic_fewer_tunic_requirements or can_use(Zora_Tunic)) and can_take_damage"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Ground Left Side",
 | 
			
		||||
        "dungeon": "Gerudo Training Ground",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Ground MQ First Iron Knuckle Chest": "is_adult or Kokiri_Sword or has_explosives"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Ground Stalfos Room": "
 | 
			
		||||
                can_use(Longshot) or logic_gtg_mq_without_hookshot or
 | 
			
		||||
                (logic_gtg_mq_with_hookshot and can_use(Hookshot))"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Ground Stalfos Room",
 | 
			
		||||
        "dungeon": "Gerudo Training Ground",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            # Very difficult to fight the Stalfos and Stulltulas under the time limit as child.
 | 
			
		||||
            "Gerudo Training Ground MQ Before Heavy Block Chest": "is_adult",
 | 
			
		||||
            "Gerudo Training Ground MQ Heavy Block Chest": "can_use(Silver_Gauntlets)",
 | 
			
		||||
            "Blue Fire": "has_bottle"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Ground Back Areas": "
 | 
			
		||||
                is_adult and (logic_lens_gtg_mq or can_use(Lens_of_Truth)) and Blue_Fire and
 | 
			
		||||
                (can_play(Song_of_Time) or (logic_gtg_fake_wall and can_use(Hover_Boots)))"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Ground Back Areas",
 | 
			
		||||
        "dungeon": "Gerudo Training Ground",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Ground MQ Eye Statue Chest": "Bow",
 | 
			
		||||
            "Gerudo Training Ground MQ Second Iron Knuckle Chest": "True",
 | 
			
		||||
            "Gerudo Training Ground MQ Flame Circle Chest": "can_use(Hookshot) or Bow or has_explosives"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Ground Central Maze Right": "Megaton_Hammer",
 | 
			
		||||
            "Gerudo Training Ground Right Side": "can_use(Longshot)"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Ground Central Maze Right",
 | 
			
		||||
        "dungeon": "Gerudo Training Ground",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Ground MQ Maze Right Central Chest": "True",
 | 
			
		||||
            "Gerudo Training Ground MQ Maze Right Side Chest": "True",
 | 
			
		||||
            # The switch that opens the door to the Ice Arrows chest can be hit with a precise jumpslash.
 | 
			
		||||
            "Gerudo Training Ground MQ Ice Arrows Chest": "
 | 
			
		||||
                (Small_Key_Gerudo_Training_Ground, 3)"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            # guarantees fire with torch
 | 
			
		||||
            "Gerudo Training Ground Underwater": "
 | 
			
		||||
                can_use(Longshot) or (can_use(Hookshot) and Bow)",
 | 
			
		||||
            "Gerudo Training Ground Right Side": "can_use(Hookshot)"
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
]
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,120 @@
 | 
			
		|||
[
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Ground Lobby",
 | 
			
		||||
        "dungeon": "Gerudo Training Ground",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Ground Lobby Left Chest": "can_use(Bow) or can_use(Slingshot)",
 | 
			
		||||
            "Gerudo Training Ground Lobby Right Chest": "can_use(Bow) or can_use(Slingshot)",
 | 
			
		||||
            "Gerudo Training Ground Stalfos Chest": "is_adult or Kokiri_Sword",
 | 
			
		||||
            "Gerudo Training Ground Beamos Chest": "has_explosives and (is_adult or Kokiri_Sword)",
 | 
			
		||||
            "Wall Fairy": "has_bottle and can_use(Bow)" #in the Beamos room shoot the Gerudo symbol above the door to the lava room.
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Fortress": "True",
 | 
			
		||||
            "Gerudo Training Ground Heavy Block Room": "
 | 
			
		||||
                (is_adult or Kokiri_Sword) and
 | 
			
		||||
                (can_use(Hookshot) or logic_gtg_without_hookshot)",
 | 
			
		||||
            "Gerudo Training Ground Lava Room": "
 | 
			
		||||
                here(has_explosives and (is_adult or Kokiri_Sword))",
 | 
			
		||||
            "Gerudo Training Ground Central Maze": "True"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Ground Central Maze",
 | 
			
		||||
        "dungeon": "Gerudo Training Ground",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Ground Hidden Ceiling Chest": "(Small_Key_Gerudo_Training_Ground, 3) and (logic_lens_gtg or can_use(Lens_of_Truth))",
 | 
			
		||||
            "Gerudo Training Ground Maze Path First Chest": "(Small_Key_Gerudo_Training_Ground, 4)",
 | 
			
		||||
            "Gerudo Training Ground Maze Path Second Chest": "(Small_Key_Gerudo_Training_Ground, 6)",
 | 
			
		||||
            "Gerudo Training Ground Maze Path Third Chest": "(Small_Key_Gerudo_Training_Ground, 7)",
 | 
			
		||||
            "Gerudo Training Ground Maze Path Final Chest": "(Small_Key_Gerudo_Training_Ground, 9)"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Ground Central Maze Right": "(Small_Key_Gerudo_Training_Ground, 9)"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Ground Central Maze Right",
 | 
			
		||||
        "dungeon": "Gerudo Training Ground",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Ground Maze Right Central Chest": "True",
 | 
			
		||||
            "Gerudo Training Ground Maze Right Side Chest": "True",
 | 
			
		||||
            "Gerudo Training Ground Freestanding Key": "True"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Ground Hammer Room": "can_use(Hookshot)",
 | 
			
		||||
            "Gerudo Training Ground Lava Room": "True"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Ground Lava Room",
 | 
			
		||||
        "dungeon": "Gerudo Training Ground",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Ground Underwater Silver Rupee Chest": "
 | 
			
		||||
                can_use(Hookshot) and can_play(Song_of_Time) and Iron_Boots and 
 | 
			
		||||
                    (logic_fewer_tunic_requirements or can_use(Zora_Tunic))"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Ground Central Maze Right": "can_play(Song_of_Time) or is_child",
 | 
			
		||||
            "Gerudo Training Ground Hammer Room": "
 | 
			
		||||
                can_use(Longshot) or (can_use(Hookshot) and can_use(Hover_Boots))"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Ground Hammer Room",
 | 
			
		||||
        "dungeon": "Gerudo Training Ground",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Ground Hammer Room Clear Chest": "True",
 | 
			
		||||
            "Gerudo Training Ground Hammer Room Switch Chest": "can_use(Megaton_Hammer)"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Ground Eye Statue Lower": "can_use(Megaton_Hammer) and Bow",
 | 
			
		||||
            "Gerudo Training Ground Lava Room": "True"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Ground Eye Statue Lower",
 | 
			
		||||
        "dungeon": "Gerudo Training Ground",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Ground Eye Statue Chest": "can_use(Bow)"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Ground Hammer Room": "True"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Ground Eye Statue Upper",
 | 
			
		||||
        "dungeon": "Gerudo Training Ground",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Ground Near Scarecrow Chest": "can_use(Bow)"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Ground Eye Statue Lower": "True"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Ground Heavy Block Room",
 | 
			
		||||
        "dungeon": "Gerudo Training Ground",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Ground Before Heavy Block Chest": "True"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Ground Eye Statue Upper": "
 | 
			
		||||
                (logic_lens_gtg or can_use(Lens_of_Truth)) and
 | 
			
		||||
                (can_use(Hookshot) or (logic_gtg_fake_wall and can_use(Hover_Boots)))",
 | 
			
		||||
            "Gerudo Training Ground Like Like Room": "
 | 
			
		||||
                can_use(Silver_Gauntlets) and (logic_lens_gtg or can_use(Lens_of_Truth)) and
 | 
			
		||||
                (can_use(Hookshot) or (logic_gtg_fake_wall and can_use(Hover_Boots)))"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Ground Like Like Room",
 | 
			
		||||
        "dungeon": "Gerudo Training Ground",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Ground Heavy Block First Chest": "True",
 | 
			
		||||
            "Gerudo Training Ground Heavy Block Second Chest": "True",
 | 
			
		||||
            "Gerudo Training Ground Heavy Block Third Chest": "True",
 | 
			
		||||
            "Gerudo Training Ground Heavy Block Fourth Chest": "True"
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
]
 | 
			
		||||
| 
						 | 
				
			
			@ -1,98 +0,0 @@
 | 
			
		|||
[
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Grounds Lobby",
 | 
			
		||||
        "dungeon": "Gerudo Training Grounds",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Grounds MQ Lobby Left Chest": "True",
 | 
			
		||||
            "Gerudo Training Grounds MQ Lobby Right Chest": "True",
 | 
			
		||||
            "Gerudo Training Grounds MQ Hidden Ceiling Chest": "logic_lens_gtg_mq or can_use(Lens_of_Truth)",
 | 
			
		||||
            "Gerudo Training Grounds MQ Maze Path First Chest": "True",
 | 
			
		||||
            "Gerudo Training Grounds MQ Maze Path Second Chest": "True",
 | 
			
		||||
            "Gerudo Training Grounds MQ Maze Path Third Chest": "(Small_Key_Gerudo_Training_Grounds, 1)"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Fortress": "True",
 | 
			
		||||
            "Gerudo Training Grounds Left Side": "here(has_fire_source)",
 | 
			
		||||
            "Gerudo Training Grounds Right Side": "here(can_use(Bow) or can_use(Slingshot))"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Grounds Right Side",
 | 
			
		||||
        "dungeon": "Gerudo Training Grounds",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Grounds MQ Dinolfos Chest": "is_adult",
 | 
			
		||||
            "Wall Fairy": "has_bottle and can_use(Bow)" #in the Dinalfos room shoot the Gerudo symbol above the door to the lava room.
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            # Still requires has_fire_source in the room
 | 
			
		||||
            "Gerudo Training Grounds Underwater": "
 | 
			
		||||
                (Bow or can_use(Longshot)) and can_use(Hover_Boots)"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Grounds Underwater",
 | 
			
		||||
        "dungeon": "Gerudo Training Grounds",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Grounds MQ Underwater Silver Rupee Chest": "
 | 
			
		||||
                has_fire_source and can_use(Iron_Boots) and
 | 
			
		||||
                (logic_fewer_tunic_requirements or can_use(Zora_Tunic)) and can_take_damage"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Grounds Left Side",
 | 
			
		||||
        "dungeon": "Gerudo Training Grounds",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Grounds MQ First Iron Knuckle Chest": "is_adult or Kokiri_Sword or has_explosives"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Grounds Stalfos Room": "
 | 
			
		||||
                can_use(Longshot) or logic_gtg_mq_without_hookshot or
 | 
			
		||||
                (logic_gtg_mq_with_hookshot and can_use(Hookshot))"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Grounds Stalfos Room",
 | 
			
		||||
        "dungeon": "Gerudo Training Grounds",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            # Very difficult to fight the Stalfos and Stulltulas under the time limit as child.
 | 
			
		||||
            "Gerudo Training Grounds MQ Before Heavy Block Chest": "is_adult",
 | 
			
		||||
            "Gerudo Training Grounds MQ Heavy Block Chest": "can_use(Silver_Gauntlets)",
 | 
			
		||||
            "Blue Fire": "has_bottle"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Grounds Back Areas": "
 | 
			
		||||
                is_adult and (logic_lens_gtg_mq or can_use(Lens_of_Truth)) and Blue_Fire and
 | 
			
		||||
                (can_play(Song_of_Time) or (logic_gtg_fake_wall and can_use(Hover_Boots)))"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Grounds Back Areas",
 | 
			
		||||
        "dungeon": "Gerudo Training Grounds",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Grounds MQ Eye Statue Chest": "Bow",
 | 
			
		||||
            "Gerudo Training Grounds MQ Second Iron Knuckle Chest": "True",
 | 
			
		||||
            "Gerudo Training Grounds MQ Flame Circle Chest": "can_use(Hookshot) or Bow or has_explosives"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Grounds Central Maze Right": "Megaton_Hammer",
 | 
			
		||||
            "Gerudo Training Grounds Right Side": "can_use(Longshot)"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Grounds Central Maze Right",
 | 
			
		||||
        "dungeon": "Gerudo Training Grounds",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Grounds MQ Maze Right Central Chest": "True",
 | 
			
		||||
            "Gerudo Training Grounds MQ Maze Right Side Chest": "True",
 | 
			
		||||
            # The switch that opens the door to the Ice Arrows chest can be hit with a precise jumpslash.
 | 
			
		||||
            "Gerudo Training Grounds MQ Ice Arrows Chest": "
 | 
			
		||||
                (Small_Key_Gerudo_Training_Grounds, 3)"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            # guarantees fire with torch
 | 
			
		||||
            "Gerudo Training Grounds Underwater": "
 | 
			
		||||
                can_use(Longshot) or (can_use(Hookshot) and Bow)",
 | 
			
		||||
            "Gerudo Training Grounds Right Side": "can_use(Hookshot)"
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
]
 | 
			
		||||
| 
						 | 
				
			
			@ -1,120 +0,0 @@
 | 
			
		|||
[
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Grounds Lobby",
 | 
			
		||||
        "dungeon": "Gerudo Training Grounds",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Grounds Lobby Left Chest": "can_use(Bow) or can_use(Slingshot)",
 | 
			
		||||
            "Gerudo Training Grounds Lobby Right Chest": "can_use(Bow) or can_use(Slingshot)",
 | 
			
		||||
            "Gerudo Training Grounds Stalfos Chest": "is_adult or Kokiri_Sword",
 | 
			
		||||
            "Gerudo Training Grounds Beamos Chest": "has_explosives and (is_adult or Kokiri_Sword)",
 | 
			
		||||
            "Wall Fairy": "has_bottle and can_use(Bow)" #in the Beamos room shoot the Gerudo symbol above the door to the lava room.
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Fortress": "True",
 | 
			
		||||
            "Gerudo Training Grounds Heavy Block Room": "
 | 
			
		||||
                (is_adult or Kokiri_Sword) and
 | 
			
		||||
                (can_use(Hookshot) or logic_gtg_without_hookshot)",
 | 
			
		||||
            "Gerudo Training Grounds Lava Room": "
 | 
			
		||||
                here(has_explosives and (is_adult or Kokiri_Sword))",
 | 
			
		||||
            "Gerudo Training Grounds Central Maze": "True"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Grounds Central Maze",
 | 
			
		||||
        "dungeon": "Gerudo Training Grounds",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Grounds Hidden Ceiling Chest": "(Small_Key_Gerudo_Training_Grounds, 3) and (logic_lens_gtg or can_use(Lens_of_Truth))",
 | 
			
		||||
            "Gerudo Training Grounds Maze Path First Chest": "(Small_Key_Gerudo_Training_Grounds, 4)",
 | 
			
		||||
            "Gerudo Training Grounds Maze Path Second Chest": "(Small_Key_Gerudo_Training_Grounds, 6)",
 | 
			
		||||
            "Gerudo Training Grounds Maze Path Third Chest": "(Small_Key_Gerudo_Training_Grounds, 7)",
 | 
			
		||||
            "Gerudo Training Grounds Maze Path Final Chest": "(Small_Key_Gerudo_Training_Grounds, 9)"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Grounds Central Maze Right": "(Small_Key_Gerudo_Training_Grounds, 9)"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Grounds Central Maze Right",
 | 
			
		||||
        "dungeon": "Gerudo Training Grounds",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Grounds Maze Right Central Chest": "True",
 | 
			
		||||
            "Gerudo Training Grounds Maze Right Side Chest": "True",
 | 
			
		||||
            "Gerudo Training Grounds Freestanding Key": "True"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Grounds Hammer Room": "can_use(Hookshot)",
 | 
			
		||||
            "Gerudo Training Grounds Lava Room": "True"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Grounds Lava Room",
 | 
			
		||||
        "dungeon": "Gerudo Training Grounds",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Grounds Underwater Silver Rupee Chest": "
 | 
			
		||||
                can_use(Hookshot) and can_play(Song_of_Time) and Iron_Boots and 
 | 
			
		||||
                    (logic_fewer_tunic_requirements or can_use(Zora_Tunic))"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Grounds Central Maze Right": "can_play(Song_of_Time) or is_child",
 | 
			
		||||
            "Gerudo Training Grounds Hammer Room": "
 | 
			
		||||
                can_use(Longshot) or (can_use(Hookshot) and can_use(Hover_Boots))"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Grounds Hammer Room",
 | 
			
		||||
        "dungeon": "Gerudo Training Grounds",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Grounds Hammer Room Clear Chest": "True",
 | 
			
		||||
            "Gerudo Training Grounds Hammer Room Switch Chest": "can_use(Megaton_Hammer)"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Grounds Eye Statue Lower": "can_use(Megaton_Hammer) and Bow",
 | 
			
		||||
            "Gerudo Training Grounds Lava Room": "True"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Grounds Eye Statue Lower",
 | 
			
		||||
        "dungeon": "Gerudo Training Grounds",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Grounds Eye Statue Chest": "can_use(Bow)"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Grounds Hammer Room": "True"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Grounds Eye Statue Upper",
 | 
			
		||||
        "dungeon": "Gerudo Training Grounds",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Grounds Near Scarecrow Chest": "can_use(Bow)"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Grounds Eye Statue Lower": "True"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Grounds Heavy Block Room",
 | 
			
		||||
        "dungeon": "Gerudo Training Grounds",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Grounds Before Heavy Block Chest": "True"
 | 
			
		||||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Gerudo Training Grounds Eye Statue Upper": "
 | 
			
		||||
                (logic_lens_gtg or can_use(Lens_of_Truth)) and
 | 
			
		||||
                (can_use(Hookshot) or (logic_gtg_fake_wall and can_use(Hover_Boots)))",
 | 
			
		||||
            "Gerudo Training Grounds Like Like Room": "
 | 
			
		||||
                can_use(Silver_Gauntlets) and (logic_lens_gtg or can_use(Lens_of_Truth)) and
 | 
			
		||||
                (can_use(Hookshot) or (logic_gtg_fake_wall and can_use(Hover_Boots)))"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Gerudo Training Grounds Like Like Room",
 | 
			
		||||
        "dungeon": "Gerudo Training Grounds",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Gerudo Training Grounds Heavy Block First Chest": "True",
 | 
			
		||||
            "Gerudo Training Grounds Heavy Block Second Chest": "True",
 | 
			
		||||
            "Gerudo Training Grounds Heavy Block Third Chest": "True",
 | 
			
		||||
            "Gerudo Training Grounds Heavy Block Fourth Chest": "True"
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
]
 | 
			
		||||
| 
						 | 
				
			
			@ -589,14 +589,14 @@
 | 
			
		|||
                Gerudo_Membership_Card and can_ride_epona and Bow and at_day",
 | 
			
		||||
            "GF HBA 1500 Points": "
 | 
			
		||||
                Gerudo_Membership_Card and can_ride_epona and Bow and at_day",
 | 
			
		||||
            "GF North F1 Carpenter": "is_adult or Kokiri_Sword",
 | 
			
		||||
            "GF North F2 Carpenter": "
 | 
			
		||||
            "Hideout Jail Guard (1 Torch)": "is_adult or Kokiri_Sword",
 | 
			
		||||
            "Hideout Jail Guard (2 Torches)": "is_adult or Kokiri_Sword",
 | 
			
		||||
            "Hideout Jail Guard (3 Torches)": "
 | 
			
		||||
                (is_adult or Kokiri_Sword) and 
 | 
			
		||||
                (Gerudo_Membership_Card or can_use(Bow) or can_use(Hookshot)
 | 
			
		||||
                    or can_use(Hover_Boots) or logic_gerudo_kitchen)",
 | 
			
		||||
            "GF South F1 Carpenter": "is_adult or Kokiri_Sword",
 | 
			
		||||
            "GF South F2 Carpenter": "is_adult or Kokiri_Sword",
 | 
			
		||||
            "GF Gerudo Membership Card": "can_finish_GerudoFortress",
 | 
			
		||||
            "Hideout Jail Guard (4 Torches)": "is_adult or Kokiri_Sword",
 | 
			
		||||
            "Hideout Gerudo Membership Card": "can_finish_GerudoFortress",
 | 
			
		||||
            "GF GS Archery Range": "
 | 
			
		||||
                can_use(Hookshot) and Gerudo_Membership_Card and at_night",
 | 
			
		||||
            "GF GS Top Floor": "
 | 
			
		||||
| 
						 | 
				
			
			@ -607,7 +607,7 @@
 | 
			
		|||
        "exits": {
 | 
			
		||||
            "GV Fortress Side": "True",
 | 
			
		||||
            "GF Outside Gate": "'GF Gate Open'",
 | 
			
		||||
            "Gerudo Training Grounds Lobby": "Gerudo_Membership_Card and is_adult",
 | 
			
		||||
            "Gerudo Training Ground Lobby": "Gerudo_Membership_Card and is_adult",
 | 
			
		||||
            "GF Storms Grotto": "is_adult and can_open_storm_grotto" # Not there as child
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
| 
						 | 
				
			
			@ -1290,7 +1290,7 @@
 | 
			
		|||
        },
 | 
			
		||||
        "exits": {
 | 
			
		||||
            "Graveyard Shield Grave": "is_adult or at_night",
 | 
			
		||||
            "Graveyard Composers Grave": "can_play(Zeldas_Lullaby)",
 | 
			
		||||
            "Graveyard Royal Familys Tomb": "can_play(Zeldas_Lullaby)",
 | 
			
		||||
            "Graveyard Heart Piece Grave": "is_adult or at_night",
 | 
			
		||||
            "Graveyard Dampes Grave": "is_adult",
 | 
			
		||||
            "Graveyard Dampes House": "is_adult or at_dampe_time",
 | 
			
		||||
| 
						 | 
				
			
			@ -1321,12 +1321,12 @@
 | 
			
		|||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "region_name": "Graveyard Composers Grave",
 | 
			
		||||
        "pretty_name": "the Composers' Grave",
 | 
			
		||||
        "scene": "Graveyard Composers Grave",
 | 
			
		||||
        "region_name": "Graveyard Royal Familys Tomb",
 | 
			
		||||
        "pretty_name": "the Royal Family's Tomb",
 | 
			
		||||
        "scene": "Graveyard Royal Familys Tomb",
 | 
			
		||||
        "locations": {
 | 
			
		||||
            "Graveyard Composers Grave Chest": "has_fire_source",
 | 
			
		||||
            "Song from Composers Grave": "
 | 
			
		||||
            "Graveyard Royal Familys Tomb Chest": "has_fire_source",
 | 
			
		||||
            "Song from Royal Familys Tomb": "
 | 
			
		||||
                is_adult or 
 | 
			
		||||
                (Slingshot or Boomerang or Sticks or 
 | 
			
		||||
                    has_explosives or Kokiri_Sword)"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
				
			
			@ -1,11 +1,11 @@
 | 
			
		|||
{
 | 
			
		||||
    "ADULT_INIT_ITEMS": "03481D40",
 | 
			
		||||
    "ADULT_VALID_ITEMS": "03481D48",
 | 
			
		||||
    "ADULT_INIT_ITEMS": "03481D3C",
 | 
			
		||||
    "ADULT_VALID_ITEMS": "03481D44",
 | 
			
		||||
    "AP_PLAYER_NAME": "03480834",
 | 
			
		||||
    "AUDIO_THREAD_INFO": "03482FC0",
 | 
			
		||||
    "AUDIO_THREAD_INFO_MEM_SIZE": "03482FDC",
 | 
			
		||||
    "AUDIO_THREAD_INFO_MEM_START": "03482FD8",
 | 
			
		||||
    "AUDIO_THREAD_MEM_START": "0348EF80",
 | 
			
		||||
    "AUDIO_THREAD_INFO": "03482F98",
 | 
			
		||||
    "AUDIO_THREAD_INFO_MEM_SIZE": "03482FB4",
 | 
			
		||||
    "AUDIO_THREAD_INFO_MEM_START": "03482FB0",
 | 
			
		||||
    "AUDIO_THREAD_MEM_START": "0348F310",
 | 
			
		||||
    "BOMBCHUS_IN_LOGIC": "03480CBC",
 | 
			
		||||
    "CFG_A_BUTTON_COLOR": "03480854",
 | 
			
		||||
    "CFG_A_NOTE_COLOR": "03480872",
 | 
			
		||||
| 
						 | 
				
			
			@ -16,7 +16,7 @@
 | 
			
		|||
    "CFG_B_BUTTON_COLOR": "0348085A",
 | 
			
		||||
    "CFG_C_BUTTON_COLOR": "03480860",
 | 
			
		||||
    "CFG_C_NOTE_COLOR": "03480878",
 | 
			
		||||
    "CFG_DAMAGE_MULTIPLYER": "03482CB0",
 | 
			
		||||
    "CFG_DAMAGE_MULTIPLYER": "03482C88",
 | 
			
		||||
    "CFG_DISPLAY_DPAD": "0348088A",
 | 
			
		||||
    "CFG_HEART_COLOR": "0348084E",
 | 
			
		||||
    "CFG_MAGIC_COLOR": "03480848",
 | 
			
		||||
| 
						 | 
				
			
			@ -36,149 +36,151 @@
 | 
			
		|||
    "CFG_RAINBOW_SWORD_OUTER_ENABLED": "0348088C",
 | 
			
		||||
    "CFG_SHOP_CURSOR_COLOR": "0348086C",
 | 
			
		||||
    "CFG_TEXT_CURSOR_COLOR": "03480866",
 | 
			
		||||
    "CHAIN_HBA_REWARDS": "03483950",
 | 
			
		||||
    "CHEST_SIZE_MATCH_CONTENTS": "034826F0",
 | 
			
		||||
    "COMPLETE_MASK_QUEST": "0348B201",
 | 
			
		||||
    "CHAIN_HBA_REWARDS": "03483928",
 | 
			
		||||
    "CHEST_SIZE_MATCH_CONTENTS": "034826EC",
 | 
			
		||||
    "COMPLETE_MASK_QUEST": "0348B585",
 | 
			
		||||
    "COOP_CONTEXT": "03480020",
 | 
			
		||||
    "COOP_VERSION": "03480020",
 | 
			
		||||
    "COSMETIC_CONTEXT": "03480844",
 | 
			
		||||
    "COSMETIC_FORMAT_VERSION": "03480844",
 | 
			
		||||
    "CURRENT_GROTTO_ID": "03482E82",
 | 
			
		||||
    "CURRENT_GROTTO_ID": "03482E5A",
 | 
			
		||||
    "DEATH_LINK": "0348002A",
 | 
			
		||||
    "DEBUG_OFFSET": "034828A0",
 | 
			
		||||
    "DEBUG_OFFSET": "03482878",
 | 
			
		||||
    "DISABLE_TIMERS": "03480CDC",
 | 
			
		||||
    "DPAD_TEXTURE": "0348D780",
 | 
			
		||||
    "DUNGEONS_SHUFFLED": "03480CDE",
 | 
			
		||||
    "DPAD_TEXTURE": "0348DB08",
 | 
			
		||||
    "DUNGEONS_SHUFFLED": "03480CDD",
 | 
			
		||||
    "EXTENDED_OBJECT_TABLE": "03480C9C",
 | 
			
		||||
    "EXTERN_DAMAGE_MULTIPLYER": "03482CB1",
 | 
			
		||||
    "FAST_BUNNY_HOOD_ENABLED": "03480CE0",
 | 
			
		||||
    "EXTERN_DAMAGE_MULTIPLYER": "03482C89",
 | 
			
		||||
    "FAST_BUNNY_HOOD_ENABLED": "03480CDF",
 | 
			
		||||
    "FAST_CHESTS": "03480CD6",
 | 
			
		||||
    "FONT_TEXTURE": "0348C2B8",
 | 
			
		||||
    "FONT_TEXTURE": "0348C640",
 | 
			
		||||
    "FREE_SCARECROW_ENABLED": "03480CCC",
 | 
			
		||||
    "GET_CHEST_OVERRIDE_COLOR_WRAPPER": "03482720",
 | 
			
		||||
    "GET_CHEST_OVERRIDE_SIZE_WRAPPER": "034826F4",
 | 
			
		||||
    "GET_ITEM_TRIGGERED": "0348140C",
 | 
			
		||||
    "GANON_BOSS_KEY_CONDITION": "0348B550",
 | 
			
		||||
    "GANON_BOSS_KEY_CONDITION_COUNT": "0348B54E",
 | 
			
		||||
    "GET_CHEST_OVERRIDE_WRAPPER": "034826F0",
 | 
			
		||||
    "GET_ITEM_TRIGGERED": "03481408",
 | 
			
		||||
    "GOSSIP_HINT_CONDITION": "03480CC8",
 | 
			
		||||
    "GROTTO_EXIT_LIST": "03482E40",
 | 
			
		||||
    "GROTTO_LOAD_TABLE": "03482DBC",
 | 
			
		||||
    "GROTTO_EXIT_LIST": "03482E18",
 | 
			
		||||
    "GROTTO_LOAD_TABLE": "03482D94",
 | 
			
		||||
    "INCOMING_ITEM": "03480028",
 | 
			
		||||
    "INCOMING_PLAYER": "03480026",
 | 
			
		||||
    "INITIAL_SAVE_DATA": "0348089C",
 | 
			
		||||
    "JABU_ELEVATOR_ENABLE": "03480CD4",
 | 
			
		||||
    "KAKARIKO_WEATHER_FORECAST": "0348B5A4",
 | 
			
		||||
    "LACS_CONDITION": "03480CC4",
 | 
			
		||||
    "LACS_CONDITION_COUNT": "03480CD2",
 | 
			
		||||
    "MALON_GAVE_ICETRAP": "0348368C",
 | 
			
		||||
    "MALON_GAVE_ICETRAP": "03483664",
 | 
			
		||||
    "MALON_TEXT_ID": "03480CDB",
 | 
			
		||||
    "MAX_RUPEES": "0348B203",
 | 
			
		||||
    "MOVED_ADULT_KING_ZORA": "03482FFC",
 | 
			
		||||
    "NO_ESCAPE_SEQUENCE": "0348B1CC",
 | 
			
		||||
    "NO_FOG_STATE": "03480CDD",
 | 
			
		||||
    "MAX_RUPEES": "0348B587",
 | 
			
		||||
    "MOVED_ADULT_KING_ZORA": "03482FD4",
 | 
			
		||||
    "NO_ESCAPE_SEQUENCE": "0348B54C",
 | 
			
		||||
    "OCARINAS_SHUFFLED": "03480CD5",
 | 
			
		||||
    "OPEN_KAKARIKO": "0348B202",
 | 
			
		||||
    "OPEN_KAKARIKO": "0348B586",
 | 
			
		||||
    "OUTGOING_ITEM": "03480030",
 | 
			
		||||
    "OUTGOING_KEY": "0348002C",
 | 
			
		||||
    "OUTGOING_PLAYER": "03480032",
 | 
			
		||||
    "OVERWORLD_SHUFFLED": "03480CDF",
 | 
			
		||||
    "PAYLOAD_END": "0348EF80",
 | 
			
		||||
    "OVERWORLD_SHUFFLED": "03480CDE",
 | 
			
		||||
    "PAYLOAD_END": "0348F310",
 | 
			
		||||
    "PAYLOAD_START": "03480000",
 | 
			
		||||
    "PLAYED_WARP_SONG": "03481210",
 | 
			
		||||
    "PLAYED_WARP_SONG": "0348120C",
 | 
			
		||||
    "PLAYER_ID": "03480024",
 | 
			
		||||
    "PLAYER_NAMES": "03480034",
 | 
			
		||||
    "PLAYER_NAME_ID": "03480025",
 | 
			
		||||
    "RAINBOW_BRIDGE_CONDITION": "03480CC0",
 | 
			
		||||
    "RAINBOW_BRIDGE_COUNT": "03480CD0",
 | 
			
		||||
    "RANDO_CONTEXT": "03480000",
 | 
			
		||||
    "SHUFFLE_BEANS": "03482D18",
 | 
			
		||||
    "SHUFFLE_CARPET_SALESMAN": "03483A08",
 | 
			
		||||
    "SHUFFLE_BEANS": "03482CF0",
 | 
			
		||||
    "SHUFFLE_CARPET_SALESMAN": "034839E0",
 | 
			
		||||
    "SHUFFLE_COWS": "03480CD7",
 | 
			
		||||
    "SHUFFLE_MEDIGORON": "03483A64",
 | 
			
		||||
    "SHUFFLE_MEDIGORON": "03483A3C",
 | 
			
		||||
    "SONGS_AS_ITEMS": "03480CD8",
 | 
			
		||||
    "SOS_ITEM_GIVEN": "034814D8",
 | 
			
		||||
    "SPEED_MULTIPLIER": "03482760",
 | 
			
		||||
    "START_TWINROVA_FIGHT": "0348307C",
 | 
			
		||||
    "TIME_TRAVEL_SAVED_EQUIPS": "03481A64",
 | 
			
		||||
    "TRIFORCE_ICON_TEXTURE": "0348DF80",
 | 
			
		||||
    "TWINROVA_ACTION_TIMER": "03483080",
 | 
			
		||||
    "SOS_ITEM_GIVEN": "034814D4",
 | 
			
		||||
    "SPEED_MULTIPLIER": "03482738",
 | 
			
		||||
    "START_TWINROVA_FIGHT": "03483054",
 | 
			
		||||
    "TIME_TRAVEL_SAVED_EQUIPS": "03481A60",
 | 
			
		||||
    "TRIFORCE_ICON_TEXTURE": "0348E308",
 | 
			
		||||
    "TWINROVA_ACTION_TIMER": "03483058",
 | 
			
		||||
    "WINDMILL_SONG_ID": "03480CD9",
 | 
			
		||||
    "WINDMILL_TEXT_ID": "03480CDA",
 | 
			
		||||
    "a_button": "0348B190",
 | 
			
		||||
    "a_note_b": "0348B17C",
 | 
			
		||||
    "a_note_font_glow_base": "0348B164",
 | 
			
		||||
    "a_note_font_glow_max": "0348B160",
 | 
			
		||||
    "a_note_g": "0348B180",
 | 
			
		||||
    "a_note_glow_base": "0348B16C",
 | 
			
		||||
    "a_note_glow_max": "0348B168",
 | 
			
		||||
    "a_note_r": "0348B184",
 | 
			
		||||
    "active_item_action_id": "0348B1E4",
 | 
			
		||||
    "active_item_fast_chest": "0348B1D4",
 | 
			
		||||
    "active_item_graphic_id": "0348B1D8",
 | 
			
		||||
    "active_item_object_id": "0348B1DC",
 | 
			
		||||
    "active_item_row": "0348B1E8",
 | 
			
		||||
    "active_item_text_id": "0348B1E0",
 | 
			
		||||
    "active_override": "0348B1F0",
 | 
			
		||||
    "active_override_is_outgoing": "0348B1EC",
 | 
			
		||||
    "b_button": "0348B18C",
 | 
			
		||||
    "beating_dd": "0348B198",
 | 
			
		||||
    "beating_no_dd": "0348B1A0",
 | 
			
		||||
    "c_button": "0348B188",
 | 
			
		||||
    "c_note_b": "0348B170",
 | 
			
		||||
    "c_note_font_glow_base": "0348B154",
 | 
			
		||||
    "c_note_font_glow_max": "0348B150",
 | 
			
		||||
    "c_note_g": "0348B174",
 | 
			
		||||
    "c_note_glow_base": "0348B15C",
 | 
			
		||||
    "c_note_glow_max": "0348B158",
 | 
			
		||||
    "c_note_r": "0348B178",
 | 
			
		||||
    "cfg_dungeon_info_enable": "0348B11C",
 | 
			
		||||
    "cfg_dungeon_info_mq_enable": "0348B1C0",
 | 
			
		||||
    "cfg_dungeon_info_mq_need_map": "0348B1BC",
 | 
			
		||||
    "cfg_dungeon_info_reward_enable": "0348B118",
 | 
			
		||||
    "cfg_dungeon_info_reward_need_altar": "0348B1B4",
 | 
			
		||||
    "cfg_dungeon_info_reward_need_compass": "0348B1B8",
 | 
			
		||||
    "cfg_dungeon_is_mq": "0348B220",
 | 
			
		||||
    "cfg_dungeon_rewards": "03489F14",
 | 
			
		||||
    "cfg_file_select_hash": "0348B1C8",
 | 
			
		||||
    "cfg_item_overrides": "0348B274",
 | 
			
		||||
    "defaultDDHeart": "0348B1A4",
 | 
			
		||||
    "defaultHeart": "0348B1AC",
 | 
			
		||||
    "dpad_sprite": "0348A088",
 | 
			
		||||
    "dummy_actor": "0348B1F8",
 | 
			
		||||
    "dungeon_count": "0348B120",
 | 
			
		||||
    "dungeons": "03489F38",
 | 
			
		||||
    "empty_dlist": "0348B138",
 | 
			
		||||
    "extern_ctxt": "03489FD4",
 | 
			
		||||
    "font_sprite": "0348A098",
 | 
			
		||||
    "freecam_modes": "03489C90",
 | 
			
		||||
    "hash_sprites": "0348B12C",
 | 
			
		||||
    "hash_symbols": "03489FE8",
 | 
			
		||||
    "heap_next": "0348B21C",
 | 
			
		||||
    "heart_sprite": "0348A028",
 | 
			
		||||
    "icon_sprites": "03489E54",
 | 
			
		||||
    "item_digit_sprite": "0348A048",
 | 
			
		||||
    "item_overrides_count": "0348B1FC",
 | 
			
		||||
    "item_table": "0348A110",
 | 
			
		||||
    "items_sprite": "0348A0B8",
 | 
			
		||||
    "key_rupee_clock_sprite": "0348A058",
 | 
			
		||||
    "last_fog_distance": "0348B124",
 | 
			
		||||
    "linkhead_skull_sprite": "0348A038",
 | 
			
		||||
    "medal_colors": "03489F24",
 | 
			
		||||
    "medals_sprite": "0348A0C8",
 | 
			
		||||
    "normal_dd": "0348B194",
 | 
			
		||||
    "normal_no_dd": "0348B19C",
 | 
			
		||||
    "object_slots": "0348C274",
 | 
			
		||||
    "pending_freezes": "0348B200",
 | 
			
		||||
    "pending_item_queue": "0348B25C",
 | 
			
		||||
    "quest_items_sprite": "0348A0A8",
 | 
			
		||||
    "rupee_colors": "03489E60",
 | 
			
		||||
    "satisified_pending_frames": "0348B1D0",
 | 
			
		||||
    "scene_fog_distance": "0348B128",
 | 
			
		||||
    "setup_db": "0348A0E8",
 | 
			
		||||
    "song_note_sprite": "0348A068",
 | 
			
		||||
    "stones_sprite": "0348A0D8",
 | 
			
		||||
    "text_cursor_border_base": "0348B144",
 | 
			
		||||
    "text_cursor_border_max": "0348B140",
 | 
			
		||||
    "text_cursor_inner_base": "0348B14C",
 | 
			
		||||
    "text_cursor_inner_max": "0348B148",
 | 
			
		||||
    "triforce_hunt_enabled": "0348B210",
 | 
			
		||||
    "triforce_pieces_requied": "0348B1B2",
 | 
			
		||||
    "triforce_sprite": "0348A078"
 | 
			
		||||
    "a_button": "0348B510",
 | 
			
		||||
    "a_note_b": "0348B4FC",
 | 
			
		||||
    "a_note_font_glow_base": "0348B4E4",
 | 
			
		||||
    "a_note_font_glow_max": "0348B4E0",
 | 
			
		||||
    "a_note_g": "0348B500",
 | 
			
		||||
    "a_note_glow_base": "0348B4EC",
 | 
			
		||||
    "a_note_glow_max": "0348B4E8",
 | 
			
		||||
    "a_note_r": "0348B504",
 | 
			
		||||
    "active_item_action_id": "0348B568",
 | 
			
		||||
    "active_item_fast_chest": "0348B558",
 | 
			
		||||
    "active_item_graphic_id": "0348B55C",
 | 
			
		||||
    "active_item_object_id": "0348B560",
 | 
			
		||||
    "active_item_row": "0348B56C",
 | 
			
		||||
    "active_item_text_id": "0348B564",
 | 
			
		||||
    "active_override": "0348B574",
 | 
			
		||||
    "active_override_is_outgoing": "0348B570",
 | 
			
		||||
    "b_button": "0348B50C",
 | 
			
		||||
    "beating_dd": "0348B518",
 | 
			
		||||
    "beating_no_dd": "0348B520",
 | 
			
		||||
    "c_button": "0348B508",
 | 
			
		||||
    "c_note_b": "0348B4F0",
 | 
			
		||||
    "c_note_font_glow_base": "0348B4D4",
 | 
			
		||||
    "c_note_font_glow_max": "0348B4D0",
 | 
			
		||||
    "c_note_g": "0348B4F4",
 | 
			
		||||
    "c_note_glow_base": "0348B4DC",
 | 
			
		||||
    "c_note_glow_max": "0348B4D8",
 | 
			
		||||
    "c_note_r": "0348B4F8",
 | 
			
		||||
    "cfg_dungeon_info_enable": "0348B49C",
 | 
			
		||||
    "cfg_dungeon_info_mq_enable": "0348B540",
 | 
			
		||||
    "cfg_dungeon_info_mq_need_map": "0348B53C",
 | 
			
		||||
    "cfg_dungeon_info_reward_enable": "0348B498",
 | 
			
		||||
    "cfg_dungeon_info_reward_need_altar": "0348B534",
 | 
			
		||||
    "cfg_dungeon_info_reward_need_compass": "0348B538",
 | 
			
		||||
    "cfg_dungeon_is_mq": "0348B5A8",
 | 
			
		||||
    "cfg_dungeon_rewards": "0348A254",
 | 
			
		||||
    "cfg_file_select_hash": "0348B548",
 | 
			
		||||
    "cfg_item_overrides": "0348B5FC",
 | 
			
		||||
    "defaultDDHeart": "0348B524",
 | 
			
		||||
    "defaultHeart": "0348B52C",
 | 
			
		||||
    "dpad_sprite": "0348A408",
 | 
			
		||||
    "dummy_actor": "0348B57C",
 | 
			
		||||
    "dungeon_count": "0348B4A0",
 | 
			
		||||
    "dungeons": "0348A278",
 | 
			
		||||
    "empty_dlist": "0348B4B8",
 | 
			
		||||
    "extern_ctxt": "0348A314",
 | 
			
		||||
    "font_sprite": "0348A418",
 | 
			
		||||
    "freecam_modes": "03489FD0",
 | 
			
		||||
    "hash_sprites": "0348B4AC",
 | 
			
		||||
    "hash_symbols": "0348A328",
 | 
			
		||||
    "heap_next": "0348B5A0",
 | 
			
		||||
    "heart_sprite": "0348A3A8",
 | 
			
		||||
    "icon_sprites": "0348A194",
 | 
			
		||||
    "item_digit_sprite": "0348A3C8",
 | 
			
		||||
    "item_overrides_count": "0348B580",
 | 
			
		||||
    "item_table": "0348A490",
 | 
			
		||||
    "items_sprite": "0348A438",
 | 
			
		||||
    "key_rupee_clock_sprite": "0348A3D8",
 | 
			
		||||
    "last_fog_distance": "0348B4A4",
 | 
			
		||||
    "linkhead_skull_sprite": "0348A3B8",
 | 
			
		||||
    "medal_colors": "0348A264",
 | 
			
		||||
    "medals_sprite": "0348A448",
 | 
			
		||||
    "normal_dd": "0348B514",
 | 
			
		||||
    "normal_no_dd": "0348B51C",
 | 
			
		||||
    "num_to_bits": "0348A368",
 | 
			
		||||
    "object_slots": "0348C5FC",
 | 
			
		||||
    "pending_freezes": "0348B584",
 | 
			
		||||
    "pending_item_queue": "0348B5E4",
 | 
			
		||||
    "quest_items_sprite": "0348A428",
 | 
			
		||||
    "rupee_colors": "0348A1A0",
 | 
			
		||||
    "satisified_pending_frames": "0348B554",
 | 
			
		||||
    "scene_fog_distance": "0348B4A8",
 | 
			
		||||
    "setup_db": "0348A468",
 | 
			
		||||
    "song_note_sprite": "0348A3E8",
 | 
			
		||||
    "stones_sprite": "0348A458",
 | 
			
		||||
    "text_cursor_border_base": "0348B4C4",
 | 
			
		||||
    "text_cursor_border_max": "0348B4C0",
 | 
			
		||||
    "text_cursor_inner_base": "0348B4CC",
 | 
			
		||||
    "text_cursor_inner_max": "0348B4C8",
 | 
			
		||||
    "triforce_hunt_enabled": "0348B594",
 | 
			
		||||
    "triforce_pieces_requied": "0348B532",
 | 
			
		||||
    "triforce_sprite": "0348A3F8"
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue