forked from mirror/Archipelago
Some checks failed
Analyze modified files / flake8 (push) Failing after 2m28s
Build / build-win (push) Has been cancelled
Build / build-ubuntu2204 (push) Has been cancelled
ctest / Test C++ ubuntu-latest (push) Has been cancelled
ctest / Test C++ windows-latest (push) Has been cancelled
Analyze modified files / mypy (push) Has been cancelled
Build and Publish Docker Images / Push Docker image to Docker Hub (push) Successful in 5m4s
Native Code Static Analysis / scan-build (push) Failing after 5m2s
type check / pyright (push) Successful in 1m7s
unittests / Test Python 3.11.2 ubuntu-latest (push) Failing after 16m23s
unittests / Test Python 3.12 ubuntu-latest (push) Failing after 28m19s
unittests / Test Python 3.13 ubuntu-latest (push) Failing after 14m49s
unittests / Test hosting with 3.13 on ubuntu-latest (push) Successful in 5m0s
unittests / Test Python 3.13 macos-latest (push) Has been cancelled
unittests / Test Python 3.11 windows-latest (push) Has been cancelled
unittests / Test Python 3.13 windows-latest (push) Has been cancelled
1366 lines
53 KiB
Python
1366 lines
53 KiB
Python
from .Addresses import *
|
|
|
|
"""
|
|
"Dynamic Flag Name": {
|
|
"on_scenes": list[int],
|
|
"not_last_scenes": list[int],
|
|
"has_items": list[tuple[str, int]], item_name, min count (0 for not have item)
|
|
"has_locations": list[str],
|
|
"not_has_locations": list[str],
|
|
"any_not_has_locations": list[str],
|
|
"set_if_true": list[tuple[int, int or str]], address, value (if value is an item name, value becomes the
|
|
"unset_if_true": list[tuple[int, int]], address, value
|
|
"has_slot_data": list[list[str, any]] slot_data, ==value
|
|
"goal_requirement": bool checks dungeon requirement if true
|
|
}
|
|
"""
|
|
DYNAMIC_FLAGS = {
|
|
# Treasure Maps don't spawn if you have them in your inventory, remove from inventory on scenes with maps, and give
|
|
# them back on the next scene
|
|
"Astrid's Basement Treasure Map": {
|
|
"on_scenes": [0xD14],
|
|
"not_has_locations": ["Astrid's Basement Dig"],
|
|
"unset_if_true": [(PHAddr.treasure_maps_1, 0x20)],
|
|
"reset_flags": ["RESET Astrid's Basement Treasure Map"]
|
|
},
|
|
"RESET Astrid's Basement Treasure Map": {
|
|
# "on_scenes": [0xD0A],
|
|
"has_items": [("Treasure Map #3 (Gusts SW)", 1)],
|
|
"set_if_true": [(PHAddr.treasure_maps_1, 0x20)]
|
|
},
|
|
"Ember summit treasure map": {
|
|
"on_scenes": [0xD01],
|
|
"not_has_locations": ["Isle of Ember East Summit Dig"],
|
|
"unset_if_true": [(PHAddr.treasure_maps_1, 0x80)],
|
|
"reset_flags": ["RESET Ember summit treasure map"]
|
|
},
|
|
"RESET Ember summit treasure map": {
|
|
# "on_scenes": [0xD00, 0x1C0],
|
|
"has_items": [("Treasure Map #4 (Bannan SE)", 1)],
|
|
"set_if_true": [(PHAddr.treasure_maps_1, 0x80)]
|
|
},
|
|
"Mercay yellow guy treasure map": {
|
|
"on_scenes": [0xB03],
|
|
"not_has_locations": ["Mercay SE Ojibe (Docks Guy) Item"],
|
|
"unset_if_true": [(PHAddr.treasure_maps_0, 0x02)],
|
|
"reset_flags": ["RESET Mercay yellow guy treasure map"]
|
|
},
|
|
"RESET Mercay yellow guy treasure map": {
|
|
# "on_scenes": [0x000, 0xB00, 0xB02, 0xB0C, 0xB0D, 0xB0E, 0xB0F, 0xB11, 0x2701],
|
|
"has_items": [("Treasure Map #9 (Cannon W)", 1)],
|
|
"set_if_true": [(PHAddr.treasure_maps_0, 0x02)]
|
|
},
|
|
"Mercay freedle gift treasure map": {
|
|
"on_scenes": [0xB02],
|
|
"not_has_locations": ["Mercay NE Freedle Gift Item"],
|
|
"unset_if_true": [(PHAddr.treasure_maps_2, 0x20)],
|
|
"reset_flags": ["RESET Mercay freedle gift treasure map"]
|
|
},
|
|
"RESET Mercay freedle gift treasure map": {
|
|
# "on_scenes": [0xB01, 0xB03, 0xB12],
|
|
"has_items": [("Treasure Map #12 (Dee Ess N)", 1)],
|
|
"set_if_true": [(PHAddr.treasure_maps_2, 0x20)]
|
|
},
|
|
"Mercay oshus dig treasure map": {
|
|
"on_scenes": [0xB00],
|
|
"not_has_locations": ["Mercay SW Tree Dig"],
|
|
"unset_if_true": [(PHAddr.treasure_maps_1, 0x10)],
|
|
"reset_flags": ["RESET Mercay oshus dig treasure map"]
|
|
},
|
|
"RESET Mercay oshus dig treasure map": {
|
|
# "on_scenes": [0xB01, 0xB03, 0xB13, 0xB01, 0xB0A, 0xB0B],
|
|
"has_items": [("Treasure Map #10 (Gusts SE)", 1)],
|
|
"set_if_true": [(PHAddr.treasure_maps_1, 0x10)]
|
|
},
|
|
"Molida Cuccoo dig map": {
|
|
"on_scenes": [0xC00],
|
|
"not_has_locations": ["Molida Island South Cucco Grapple Tree Dig"],
|
|
"unset_if_true": [(PHAddr.treasure_maps_1, 0x40)],
|
|
"reset_flags": ["RESET Molida Cuccoo dig map"]
|
|
},
|
|
"RESET Molida Cuccoo dig map": {
|
|
# "on_scenes": [0x000, 0xC01, 0xC0A, 0xC0B, 0xC0C, 0xC0D, 0xC0E,],
|
|
"has_items": [("Treasure Map #20 (Bannan E)", 1)],
|
|
"set_if_true": [(PHAddr.treasure_maps_1, 0x40)]
|
|
},
|
|
"Zauz Map": {
|
|
"on_scenes": [0x1600],
|
|
"not_has_locations": ["Zauz's Island Secret Dig"],
|
|
"unset_if_true": [(PHAddr.treasure_maps_0, 0x40)],
|
|
"reset_flags": ["RESET Zauz Map"]
|
|
},
|
|
"RESET Zauz Map": {
|
|
# "on_scenes": [0x1],
|
|
"has_items": [("Treasure Map #5 (Molida N)", 1)],
|
|
"set_if_true": [(PHAddr.treasure_maps_0, 0x40)]
|
|
},
|
|
"Uncharted Island Map": {
|
|
"on_scenes": [0x1A00],
|
|
"not_has_locations": ["Uncharted Island Eye Dig"],
|
|
"unset_if_true": [(PHAddr.treasure_maps_1, 0x1)],
|
|
"reset_flags": ["RESET Uncharted Island Map"]
|
|
},
|
|
"RESET Uncharted Island Map": {
|
|
# "on_scenes": [0x1],
|
|
"has_items": [("Treasure Map #6 (Bannan W)", 1)],
|
|
"set_if_true": [(PHAddr.treasure_maps_1, 0x1)]
|
|
},
|
|
"Frost Island Map": {
|
|
"on_scenes": [0xF02],
|
|
"not_has_locations": ["Isle of Frost NW Island Dig SW"],
|
|
"unset_if_true": [(PHAddr.treasure_maps_1, 0x4)],
|
|
"reset_flags": ["RESET Frost Island Map"]
|
|
},
|
|
"RESET Frost Island Map": {
|
|
# "on_scenes": [0xF00],
|
|
"has_items": [("Treasure Map #19 (Gusts NE)", 1)],
|
|
"set_if_true": [(PHAddr.treasure_maps_1, 0x4)]
|
|
},
|
|
"Bannan Wayfarer Map": {
|
|
"on_scenes": [0x1400],
|
|
"not_has_locations": ["Bannan Island West Wayfarer Dig"],
|
|
"unset_if_true": [(PHAddr.treasure_maps_0, 0x20)],
|
|
"reset_flags": ["RESET Bannan Wayfarer Map"]
|
|
},
|
|
"RESET Bannan Wayfarer Map": {
|
|
# "on_scenes": [0x1],
|
|
"has_items": [("Treasure Map #21 (Molida NW)", 1)],
|
|
"set_if_true": [(PHAddr.treasure_maps_0, 0x20)]
|
|
},
|
|
"Bannan Island Map": {
|
|
"on_scenes": [0x1400],
|
|
"not_has_locations": ["Bannan Island East Grapple Dig"],
|
|
"unset_if_true": [(PHAddr.treasure_maps_2, 0x8)],
|
|
"reset_flags": ["RESET Bannan Island Map"]
|
|
},
|
|
"RESET Bannan Island Map": {
|
|
# "on_scenes": [0x1],
|
|
"has_items": [("Treasure Map #22 (Harrow S)", 1)],
|
|
"set_if_true": [(PHAddr.treasure_maps_2, 0x8)]
|
|
},
|
|
"Rupoor cave map": {
|
|
"on_scenes": [0x1502],
|
|
"not_has_locations": ["Rupoor Cave 2"],
|
|
"unset_if_true": [(PHAddr.treasure_maps_3, 0x1)],
|
|
"reset_flags": ["RESET Rupoor cave map"]
|
|
},
|
|
"RESET Rupoor cave map": {
|
|
# "on_scenes": [0x1501],
|
|
"has_items": [("Treasure Map #28 (Ruins NW)", 1)],
|
|
"set_if_true": [(PHAddr.treasure_maps_3, 0x1)]
|
|
},
|
|
"Goron Chu Map": {
|
|
"on_scenes": [0x1002],
|
|
"not_has_locations": ["Goron Island SW Yellow Chu Item"],
|
|
"unset_if_true": [(PHAddr.treasure_maps_2, 0x10)],
|
|
"reset_flags": ["RESET Goron Chu Map"]
|
|
},
|
|
"RESET Goron Chu Map": {
|
|
"has_items": [("Treasure Map #16 (Goron NE)", 1)],
|
|
"set_if_true": [(PHAddr.treasure_maps_2, 0x10)]
|
|
},
|
|
# TotoK 1F
|
|
"TotoK Don't open key door": {
|
|
"on_scenes": [0x2500],
|
|
"not_has_locations": ["TotOK 1F Sea Chart Chest"],
|
|
"unset_if_true": [(PHAddr.adv_flags_1, 0x02)]
|
|
},
|
|
"TotoK remove linebeck": {
|
|
"on_scenes": [0x2500],
|
|
"has_locations": ["TotOK 1F Sea Chart Chest"],
|
|
"set_if_true": [(PHAddr.adv_flags_1, 0x02)]
|
|
},
|
|
|
|
# Cannon Island
|
|
"Enter Cannon: Not Bought Cannon": {
|
|
"on_scenes": [0x130B],
|
|
"not_has_locations": ["Eddo's Cannon"],
|
|
"unset_if_true": [(PHAddr.adv_flags_6, 0x1), (PHAddr.adv_flags_17, 0x10)]
|
|
},
|
|
"Enter Cannon: Not Bought Salvage": {
|
|
"on_scenes": [0x130B],
|
|
"not_has_locations": ["Eddo's Salvage Arm"],
|
|
"has_locations": ["Eddo's Cannon"],
|
|
"set_if_true": [(PHAddr.adv_flags_6, 0x1)],
|
|
"unset_if_true": [(PHAddr.inventory_6, 0x10), (PHAddr.adv_flags_17, 0x10)]
|
|
},
|
|
"Exit Cannon": {
|
|
"on_scenes": [0x130B],
|
|
"reset_flags": ["Exit Cannon: Have Cannon", "Exit Cannon: Have Salvage",
|
|
"Exit Cannon: Not Have Cannon", "Exit Cannon: Not Have Salvage"]
|
|
},
|
|
"Exit Cannon: Have Cannon": {
|
|
# "on_scenes": [0x1300, 0x130A],
|
|
"has_items": [("Cannon", 1)],
|
|
"set_if_true": [(PHAddr.adv_flags_6, 0x1)]
|
|
},
|
|
"Exit Cannon: Have Salvage": {
|
|
#"on_scenes": [0x1300, 0x130A],
|
|
"has_items": [("Salvage Arm", 1)],
|
|
"set_if_true": [(PHAddr.inventory_6, 0x10), (PHAddr.adv_flags_17, 0x10)]
|
|
},
|
|
"Exit Cannon: Not Have Cannon": {
|
|
# "on_scenes": [0x1300, 0x130A],
|
|
"has_items": [("Cannon", 0)],
|
|
"unset_if_true": [(PHAddr.adv_flags_6, 0x1)]
|
|
},
|
|
"Exit Cannon: Not Have Salvage": {
|
|
# "on_scenes": [0x1300, 0x130A],
|
|
"has_items": [("Salvage Arm", 0)],
|
|
"unset_if_true": [(PHAddr.inventory_6, 0x10), (PHAddr.adv_flags_17, 0x10)]
|
|
},
|
|
"Cannon Open Door": {
|
|
"on_scenes": [0x130B],
|
|
"set_if_true": [(PHAddr.adv_flags_6, 0x2)]
|
|
},
|
|
|
|
# Spirit Island
|
|
"Spirit of Power 1": {
|
|
"on_scenes": [0x1701],
|
|
"not_has_locations": ["Spirit Shrine Power Upgrade Level 1"],
|
|
"unset_if_true": [(PHAddr.fairies_1, 0x9)],
|
|
},
|
|
"Spirit of Wisdom 1": {
|
|
"on_scenes": [0x1701],
|
|
"not_has_locations": ["Spirit Shrine Wisdom Upgrade Level 1"],
|
|
"unset_if_true": [(PHAddr.fairies_1, 0x12)],
|
|
},
|
|
"Spirit of Courage 1": {
|
|
"on_scenes": [0x1701],
|
|
"not_has_locations": ["Spirit Shrine Courage Upgrade Level 1"],
|
|
"unset_if_true": [(PHAddr.fairies_0, 0x80), (PHAddr.fairies_1, 0x04)],
|
|
},
|
|
"Spirit of Power 2": {
|
|
"on_scenes": [0x1701],
|
|
"has_locations": ["Spirit Shrine Power Upgrade Level 1"],
|
|
"not_has_locations": ["Spirit Shrine Power Upgrade Level 2"],
|
|
"unset_if_true": [(PHAddr.fairies_1, 0x8)],
|
|
"set_if_true": [(PHAddr.fairies_1, 0x1)],
|
|
},
|
|
"Spirit of Wisdom 2": {
|
|
"on_scenes": [0x1701],
|
|
"has_locations": ["Spirit Shrine Wisdom Upgrade Level 1"],
|
|
"not_has_locations": ["Spirit Shrine Wisdom Upgrade Level 2"],
|
|
"unset_if_true": [(PHAddr.fairies_1, 0x10)],
|
|
"set_if_true": [(PHAddr.fairies_1, 0x2)],
|
|
},
|
|
"Spirit of Courage 2": {
|
|
"on_scenes": [0x1701],
|
|
"has_locations": ["Spirit Shrine Courage Upgrade Level 1"],
|
|
"not_has_locations": ["Spirit Shrine Courage Upgrade Level 2"],
|
|
"unset_if_true": [(PHAddr.fairies_1, 0x4)],
|
|
"set_if_true": [(PHAddr.fairies_0, 0x80)],
|
|
},
|
|
"Always reset spirit island": {
|
|
"on_scenes": [0x1701],
|
|
"reset_flags": ["RESET Spirit of power 0", "RESET Spirit of power 1", "RESET Spirit of power 2",
|
|
"RESET Spirit of wisdom 0", "RESET Spirit of wisdom 1", "RESET Spirit of wisdom 2",
|
|
"RESET Spirit of courage 0", "RESET Spirit of courage 1", "RESET Spirit of courage 2",
|
|
"RESET Spirit of Wisdom boss flag", "RESET Spirit of Courage boss flag"]
|
|
},
|
|
"RESET Spirit of power 0": {
|
|
# "on_scenes": [0x1700],
|
|
"has_items": [("Spirit of Power (Progressive)", 1, "has_exact")],
|
|
"unset_if_true": [(PHAddr.fairies_1, 0x9)]
|
|
},
|
|
"RESET Spirit of power 1": {
|
|
# "on_scenes": [0x1700],
|
|
"has_items": [("Spirit of Power (Progressive)", 2, "has_exact")],
|
|
"set_if_true": [(PHAddr.fairies_1, 0x1)],
|
|
"unset_if_true": [(PHAddr.fairies_1, 0x8)]
|
|
},
|
|
"RESET Spirit of power 2": {
|
|
# "on_scenes": [0x1700],
|
|
"has_items": [("Spirit of Power (Progressive)", 3)],
|
|
"set_if_true": [(PHAddr.fairies_1, 0x9)]
|
|
},
|
|
"RESET Spirit of wisdom 0": {
|
|
# "on_scenes": [0x1700],
|
|
"has_items": [("Spirit of Wisdom (Progressive)", 1, "has_exact")],
|
|
"unset_if_true": [(PHAddr.fairies_1, 0x12)]
|
|
},
|
|
"RESET Spirit of wisdom 1": {
|
|
# "on_scenes": [0x1700],
|
|
"has_items": [("Spirit of Wisdom (Progressive)", 2, "has_exact")],
|
|
"set_if_true": [(PHAddr.fairies_1, 0x02)],
|
|
"unset_if_true": [(PHAddr.fairies_1, 0x10)]
|
|
},
|
|
"RESET Spirit of wisdom 2": {
|
|
# "on_scenes": [0x1700],
|
|
"has_items": [("Spirit of Wisdom (Progressive)", 3)],
|
|
"set_if_true": [(PHAddr.fairies_1, 0x12)]
|
|
},
|
|
"RESET Spirit of courage 0": {
|
|
# "on_scenes": [0x1700],
|
|
"has_items": [("Spirit of Courage (Progressive)", 1, "has_exact")],
|
|
"unset_if_true": [(PHAddr.fairies_0, 0x80), (PHAddr.fairies_1, 0x04)]
|
|
},
|
|
"RESET Spirit of courage 1": {
|
|
# "on_scenes": [0x1700],
|
|
"has_items": [("Spirit of Courage (Progressive)", 2, "has_exact")],
|
|
"set_if_true": [(PHAddr.fairies_0, 0x80)],
|
|
"unset_if_true": [(PHAddr.fairies_1, 0x4)]
|
|
},
|
|
"RESET Spirit of courage 2": {
|
|
# "on_scenes": [0x1700],
|
|
"has_items": [("Spirit of Courage (Progressive)", 3)],
|
|
"set_if_true": [(PHAddr.fairies_0, 0x80), (PHAddr.fairies_1, 0x04)]
|
|
},
|
|
"Spirit of Wisdom boss flag": {
|
|
"on_scenes": [0x1701],
|
|
"has_items": [("Spirit of Wisdom (Progressive)", 1)],
|
|
"set_if_true": [(PHAddr.adv_flags_3, 0x40)],
|
|
"reset_flags": ["RESET Spirit of Wisdom boss flag"]
|
|
},
|
|
"Spirit of Courage boss flag": {
|
|
"on_scenes": [0x1701],
|
|
"has_items": [("Spirit of Courage (Progressive)", 1)],
|
|
"set_if_true": [(PHAddr.adv_flags_3, 0xC0)],
|
|
"reset_flags": ["RESET Spirit of Wisdom boss flag", "RESET Spirit of Courage boss flag"]
|
|
},
|
|
"RESET Spirit of Wisdom boss flag": {
|
|
# "on_scenes": [0x1700],
|
|
"not_has_locations": ["Cyclok Boss Reward"],
|
|
"unset_if_true": [(PHAddr.adv_flags_3, 0x40)]
|
|
},
|
|
"RESET Spirit of Courage boss flag": {
|
|
# "on_scenes": [0x1700],
|
|
"not_has_locations": ["Crayk Boss Reward"],
|
|
"unset_if_true": [(PHAddr.adv_flags_3, 0x80)]
|
|
},
|
|
# Spirit Island cap spirit gems to 20 on enter
|
|
"Power Gem cap": {
|
|
"on_scenes": [0x1701],
|
|
"has_items": [("Power Gem", 20)],
|
|
"overwrite_if_true": [(PHAddr.power_gem_count, 0x14)],
|
|
"reset_flags": ["RESET Power Gem cap"]
|
|
},
|
|
"Courage Gem cap": {
|
|
"on_scenes": [0x1701],
|
|
"has_items": [("Courage Gem", 20)],
|
|
"overwrite_if_true": [(PHAddr.courage_gem_count, 0x14)],
|
|
"reset_flags": ["RESET Courage Gem cap"]
|
|
},
|
|
"Wisdom Gem cap": {
|
|
"on_scenes": [0x1701],
|
|
"has_items": [("Wisdom Gem", 20)],
|
|
"overwrite_if_true": [(PHAddr.wisdom_gem_count, 0x14)],
|
|
"reset_flags": ["RESET Wisdom Gem cap"]
|
|
},
|
|
"Power Gem cap packs": {
|
|
"on_scenes": [0x1701],
|
|
"count_gems": "Power",
|
|
"overwrite_if_true": [(PHAddr.power_gem_count, 0x14)],
|
|
},
|
|
"Courage Gem cap packs": {
|
|
"on_scenes": [0x1701],
|
|
"count_gems": "Courage",
|
|
"overwrite_if_true": [(PHAddr.courage_gem_count, 0x14)],
|
|
},
|
|
"Wisdom Gem cap packs": {
|
|
"on_scenes": [0x1701],
|
|
"count_gems": "Wisdom",
|
|
"overwrite_if_true": [(PHAddr.wisdom_gem_count, 0x14)],
|
|
},
|
|
"RESET Power Gem cap": {
|
|
"overwrite_if_true": [(PHAddr.power_gem_count, "Power Gem")],
|
|
},
|
|
"RESET Courage Gem cap": {
|
|
"overwrite_if_true": [(PHAddr.courage_gem_count, "Courage Gem")]
|
|
},
|
|
"RESET Wisdom Gem cap": {
|
|
"overwrite_if_true": [(PHAddr.wisdom_gem_count, "Wisdom Gem")]
|
|
},
|
|
# Courage Crest Room
|
|
"Courage Crest room not salvaged it": {
|
|
"on_scenes": [0x2508],
|
|
"has_locations": ["Ocean SW Salvage Courage Crest"],
|
|
"unset_if_true": [(PHAddr.adv_flags_2, 0x40)],
|
|
},
|
|
"Courage Crest room remove crest": {
|
|
"on_scenes": [0x2508],
|
|
"unset_if_true": [(PHAddr.adv_flags_16, 0x04)],
|
|
"not_has_locations": ["TotOK B6 Courage Crest"]
|
|
},
|
|
"Courage Crest room allow leaving": {
|
|
"on_scenes": [0x2508],
|
|
"has_locations": ["TotOK B6 Courage Crest"],
|
|
"set_if_true": [(PHAddr.adv_flags_16, 0x04)]
|
|
},
|
|
"Reset cc room": {
|
|
"on_scenes": [0x2508],
|
|
"reset_flags": ["RESET Courage Crest room not salvaged it", "RESET Courage Crest room remove crest",
|
|
"RESET Courage Crest room remove crest if not got it"]
|
|
},
|
|
"RESET Courage Crest room not salvaged it": {
|
|
# "on_scenes": [0x2600, 0x2507],
|
|
"has_locations": ["Ocean SW Salvage Courage Crest"],
|
|
"set_if_true": [(PHAddr.adv_flags_2, 0x40)]
|
|
},
|
|
"RESET Courage Crest room remove crest": {
|
|
# "on_scenes": [0x2600, 0x2507],
|
|
"has_items": [("Courage Crest", 1)],
|
|
"set_if_true": [(PHAddr.adv_flags_16, 0x04)]
|
|
},
|
|
"RESET Courage Crest room remove crest if not got it": {
|
|
# "on_scenes": [0x2600, 0x2507],
|
|
"has_items": [("Courage Crest", 0)],
|
|
"unset_if_true": [(PHAddr.adv_flags_16, 0x04)]
|
|
},
|
|
# Endgame
|
|
"Spawn Phantoms in Totok B13": {
|
|
"on_scenes": [0x2511],
|
|
"has_items": [("Sword (Progressive)", 2)],
|
|
"has_slot_data": [["bellum_access", 1]],
|
|
"set_if_true": [(PHAddr.adv_flags_22, 0x40)],
|
|
"reset_flags": ["RESET Spawn Phantoms in Totok B13"]
|
|
},
|
|
"Spawn Phantoms in Totok B13 2": {
|
|
"on_scenes": [0x2511],
|
|
"has_items": [("Sword (Progressive)", 2)],
|
|
"has_slot_data": [["bellum_access", 2]],
|
|
"set_if_true": [(PHAddr.adv_flags_22, 0x40)],
|
|
"reset_flags": ["RESET Spawn Phantoms in Totok B13"]
|
|
},
|
|
"Spawn Phantoms in Totok B13 3": {
|
|
"on_scenes": [0x2511],
|
|
"has_items": [("Sword (Progressive)", 2)],
|
|
"has_slot_data": [["bellum_access", 3]],
|
|
"set_if_true": [(PHAddr.adv_flags_22, 0x40)],
|
|
"reset_flags": ["RESET Spawn Phantoms in Totok B13"]
|
|
},
|
|
"Spawn Phantoms in Totok B13 door option": {
|
|
"on_scenes": [0x2511],
|
|
"has_items": [("Sword (Progressive)", 2)],
|
|
"goal_requirement": True,
|
|
"has_slot_data": [["bellum_access", 0]],
|
|
"set_if_true": [(PHAddr.adv_flags_22, 0x40)],
|
|
"reset_flags": ["RESET Spawn Phantoms in Totok B13"]
|
|
},
|
|
"RESET Spawn Phantoms in Totok B13": {
|
|
# "on_scenes": [0x2600],
|
|
"unset_if_true": [(PHAddr.adv_flags_22, 0x40)]
|
|
},
|
|
"Block Bellum Staircase": {
|
|
"on_scenes": [0x2600],
|
|
"set_if_true": [(PHAddr.adv_flags_25, 0x2)],
|
|
# "reset_flags": ["RESET Block Bellum Staircase"]
|
|
},
|
|
"RESET Block Bellum Staircase": {
|
|
# "on_scenes": [0xB01],
|
|
"unset_if_true": [(PHAddr.adv_flags_25, 0x2)]
|
|
},
|
|
"Unblock bellum staircase": {
|
|
"on_scenes": [0x2512],
|
|
"goal_requirement": True,
|
|
"unset_if_true": [(PHAddr.adv_flags_25, 0x2)]
|
|
},
|
|
"Spawn bellum warp": {
|
|
"on_scenes": [0x2600],
|
|
"goal_requirement": True,
|
|
"set_if_true": [(PHAddr.adv_flags_29, 0x4)],
|
|
"has_slot_data": [["bellum_access", 2]],
|
|
"has_locations": ["TotOK Lobby Phantom Hourglass"]
|
|
},
|
|
"Spawn phantom wreckage": {
|
|
"on_scenes": [0x0],
|
|
"goal_requirement": True,
|
|
"has_items": [("Sword (Progressive)", 2), ("Spirit of Courage (Progressive)", 1)],
|
|
"set_if_true": [(PHAddr.adv_flags_31, 0x1)],
|
|
"has_slot_data": [["bellum_access", 3]],
|
|
},
|
|
"Not Triforce Crest Rando": {
|
|
"on_scenes": [0x2507],
|
|
"set_if_true": [(PHAddr.adv_flags_4, 0x2)],
|
|
"has_slot_data": [["randomize_triforce_crest", 0]],
|
|
},
|
|
"Triforce Crest Rando safety": {
|
|
"on_scenes": [0x2507],
|
|
"set_if_true": [(PHAddr.adv_flags_4, 0x2)],
|
|
"has_slot_data": [["randomize_triforce_crest", 1]],
|
|
"has_items": [("Triforce Crest", 1)]
|
|
},
|
|
|
|
# boat requires sea chart
|
|
"Always Despawn Linebeck 1": {
|
|
"on_scenes": [0xB03],
|
|
"unset_if_true": [(PHAddr.adv_flags_2, 0x8)]
|
|
},
|
|
"Always Spawn linebeck 2 setting": {
|
|
"on_scenes": [0xB03],
|
|
"has_slot_data": [["boat_requires_sea_chart", 0]],
|
|
"set_if_true": [(PHAddr.adv_flags_4, 0x4)],
|
|
},
|
|
"Always Spawn linebeck 2 port rando": {
|
|
"on_scenes": [0xB03],
|
|
"has_slot_data": [["boat_requires_sea_chart", 0], ["shuffle_island_entrances", 1]],
|
|
"set_if_true": [(PHAddr.adv_flags_4, 0x4)],
|
|
},
|
|
"Spawn Linebeck if setting": {
|
|
"on_scenes": [0xB03],
|
|
"has_slot_data": [["boat_requires_sea_chart", 1], ["shuffle_island_entrances", 0]],
|
|
"has_items": [("SW Sea Chart", 1)],
|
|
"set_if_true": [(PHAddr.adv_flags_4, 0x4)],
|
|
},
|
|
"Despawn Linebeck if setting": {
|
|
"on_scenes": [0xB03],
|
|
"has_slot_data": [["boat_requires_sea_chart", 1], ["shuffle_island_entrances", 0]],
|
|
"has_items": [("SW Sea Chart", 0)],
|
|
"unset_if_true": [(PHAddr.adv_flags_4, 0x4)],
|
|
},
|
|
"reset mercay": {
|
|
"on_scenes": [0xB03],
|
|
"reset_flags": ["RESET Despawn Linebeck setting", "RESET despawn linebeck 2",
|
|
"RESET yellow guy fog to settings", "RESET yellow guy beat gs"]
|
|
},
|
|
"RESET Despawn Linebeck setting": {
|
|
# "on_scenes": [0xB02],
|
|
"set_if_true": [(PHAddr.adv_flags_2, 0x8)]
|
|
},
|
|
"RESET despawn linebeck 2": {
|
|
# "on_scenes": [0xB02, 0xB00],
|
|
"set_if_true": [(PHAddr.adv_flags_4, 0x4)],
|
|
},
|
|
# Other linebeck settings
|
|
"Mercay skip blow on map for Linebeck": {
|
|
"on_scenes": [0xB03],
|
|
"unset_if_true": [(PHAddr.adv_flags_1, 0x2)]
|
|
},
|
|
"mercay Safety Shipyard": {
|
|
"on_scenes": [0xB03],
|
|
"has_locations": ["Blaaz Boss Reward"],
|
|
"set_if_true": [(PHAddr.adv_flags_3, 0x20)]
|
|
},
|
|
# Fog
|
|
"No fog add fog if spirits": {
|
|
"on_scenes": [0x01],
|
|
"not_last_scenes": [0x2903],
|
|
"not_on_entrance": [5],
|
|
"has_items": [("Spirit of Power (Progressive)", 1),
|
|
("Spirit of Wisdom (Progressive)", 1),
|
|
("Spirit of Courage (Progressive)", 1)],
|
|
"not_has_locations": ["Ghost Ship Rescue Tetra"],
|
|
"has_slot_data": [("fog_settings", 0)],
|
|
"unset_if_true": [(PHAddr.flags_clear_fog, 0x80)],
|
|
"set_if_true": [(PHAddr.flags_fog_done, 0x10)]
|
|
},
|
|
"Remove fog on ghost ship if no fog": {
|
|
"on_scenes": [0x2903],
|
|
"has_slot_data": [("fog_settings", 0)],
|
|
"not_has_locations": ["Ghost Ship Rescue Tetra"],
|
|
"set_if_true": [(PHAddr.flags_clear_fog, 0x80), (PHAddr.flags_fog_done, 0x10)],
|
|
},
|
|
"Spawn Spirits in fog": {
|
|
"on_scenes": [0x1],
|
|
"not_last_scenes": [0x2903],
|
|
"not_on_entrance": [5],
|
|
"has_items": [("Spirit of Power (Progressive)", 1),
|
|
("Spirit of Wisdom (Progressive)", 1),
|
|
("Spirit of Courage (Progressive)", 1)],
|
|
"not_has_locations": ["Ghost Ship Rescue Tetra"],
|
|
"set_if_true": [(PHAddr.flags_fog_spirits, 0x10)],
|
|
},
|
|
"Remove spirit flag on GS": {
|
|
"on_scenes": [0x2903],
|
|
"unset_if_true": [(PHAddr.flags_fog_spirits, 0x10)]
|
|
},
|
|
"Remove fog on GS if saved tetra": {
|
|
"on_scenes": [0x2903],
|
|
"has_locations": ["Ghost Ship Rescue Tetra"],
|
|
"set_if_true": [(PHAddr.flags_clear_fog, 0x80), (PHAddr.flags_fog_done, 0x10)]
|
|
},
|
|
"Respawn ghost ship": {
|
|
"on_scenes": [0x1], # NW quadrant
|
|
"not_last_scenes": [0x2903, 0x400], # from ghost ship
|
|
"not_on_entrance": [5], # prevent respawning if coming from ghost ship
|
|
"has_locations": ["Ghost Ship Rescue Tetra"],
|
|
"any_not_has_locations": ["Ghost Ship B1 Entrance Chest",
|
|
"Ghost Ship B1 Second Sister Chest",
|
|
"Ghost Ship B2 Third Sister Left Chest",
|
|
"Ghost Ship B2 Third Sister Right Chest",
|
|
"Ghost Ship B2 Spike Chest",
|
|
"Ghost Ship B3 Chest",
|
|
"Cubus Sisters Ghost Key",
|
|
"Cubus Sisters Heart Container"],
|
|
"has_slot_data": [("shuffle_dungeon_entrances", 0), ("shuffle_bosses", 0)],
|
|
"set_if_true": [(PHAddr.flags_fog_spirits, 0x10), (PHAddr.flags_fog_done, 0x10)], # Spawn spirits, remove fog
|
|
"unset_if_true": [(PHAddr.flags_clear_fog, 0x80)] # Respawn ghost ship
|
|
},
|
|
"Always Respawn ghost ship with dungeon rando": {
|
|
"on_scenes": [0x1], # NW quadrant
|
|
"not_on_entrance": [5], # prevent respawning if coming from ghost ship
|
|
"not_last_scenes": [0x2903, 0x400], # from ghost ship
|
|
"has_locations": ["Ghost Ship Rescue Tetra"],
|
|
"has_slot_data": [("shuffle_dungeon_entrances", [1, 2])],
|
|
"set_if_true": [(PHAddr.flags_fog_spirits, 0x10), (PHAddr.flags_fog_done, 0x10)], # Spawn spirits, remove fog
|
|
"unset_if_true": [(PHAddr.flags_clear_fog, 0x80)], # Respawn ghost ship
|
|
},
|
|
"Always Respawn ghost ship with boss rando": {
|
|
"on_scenes": [0x1], # NW quadrant
|
|
"not_on_entrance": [5], # prevent respawning if coming from ghost ship
|
|
"not_last_scenes": [0x2903, 0x400], # from ghost ship
|
|
"has_locations": ["Ghost Ship Rescue Tetra"],
|
|
"has_slot_data": [("shuffle_bosses", [1, 2])],
|
|
"set_if_true": [(PHAddr.flags_fog_spirits, 0x10), (PHAddr.flags_fog_done, 0x10)], # Spawn spirits, remove fog
|
|
"unset_if_true": [(PHAddr.flags_clear_fog, 0x80)], # Respawn ghost ship
|
|
},
|
|
"Spawn ghost ship Open GS removed fog": {
|
|
"on_scenes": [0x1], # NW quadrant
|
|
"not_on_entrance": [5],
|
|
"has_slot_data": [("fog_settings", 2)],
|
|
"has_locations": ["Ghost Ship Rescue Tetra"],
|
|
"set_if_true": [(PHAddr.flags_fog_spirits, 0x10)], # Spawn spirits, remove fog
|
|
"unset_if_true": [(PHAddr.flags_clear_fog, 0x80)], # Respawn ghost ship
|
|
},
|
|
"Spawn ghost ship Open GS": {
|
|
"on_scenes": [0x1], # NW quadrant
|
|
"has_slot_data": [("fog_settings", 2)],
|
|
"not_has_locations": ["Ghost Ship Rescue Tetra"],
|
|
"set_if_true": [(PHAddr.flags_fog_spirits, 0x10)], # Spawn spirits,
|
|
"unset_if_true": [(PHAddr.flags_clear_fog, 0x80), (PHAddr.flags_fog_done, 0x10)], # Respawn ghost ship, add fog
|
|
},
|
|
"Dungeon rando remove spirit from GS": {
|
|
"on_scenes": [0x1],
|
|
"on_entrance": [5],
|
|
"unset_if_true": [(PHAddr.flags_fog_spirits, 0x10)],
|
|
"set_if_true": [(PHAddr.flags_clear_fog, 0x80), (PHAddr.flags_fog_done, 0x10)]
|
|
},
|
|
"Dungeon rando dummy spirit flag removal": {
|
|
"on_scenes": [0x1],
|
|
"reset_flags": ["Dungeon rando resest spirit flags"]
|
|
},
|
|
"Dungeon rando resest spirit flags": {
|
|
"unset_if_true": [(PHAddr.flags_fog_spirits, 0x10)],
|
|
"set_if_true": [(PHAddr.flags_clear_fog, 0x80), (PHAddr.flags_fog_done, 0x10)]
|
|
},
|
|
"RESET Respawn ghost ship": {
|
|
"on_scenes": [0x1],
|
|
"has_locations": ["Ghost Ship B1 Entrance Chest",
|
|
"Ghost Ship B1 Second Sister Chest",
|
|
"Ghost Ship B2 Third Sister Left Chest",
|
|
"Ghost Ship B2 Third Sister Right Chest",
|
|
"Ghost Ship B2 Spike Chest",
|
|
"Ghost Ship B3 Chest",
|
|
"Cubus Sisters Ghost Key",
|
|
"Cubus Sisters Heart Container",
|
|
"Ghost Ship Rescue Tetra"],
|
|
"has_slot_data": [("shuffle_dungeon_entrances", 0)],
|
|
"set_if_true": [(PHAddr.flags_clear_fog, 0x80), (PHAddr.flags_fog_spirits, 0x10), (PHAddr.flags_fog_done, 0x10)]
|
|
},
|
|
"Yellow Guy moves after ghost ship": {
|
|
"on_scenes": [0xB03],
|
|
"unset_if_true": [(PHAddr.flags_clear_fog, 0x80)]
|
|
},
|
|
"RESET yellow guy fog to settings": {
|
|
# "on_scenes": [0x0],
|
|
"has_slot_data": [("fog_settings", 0)],
|
|
"set_if_true": [(PHAddr.flags_clear_fog, 0x80)]
|
|
},
|
|
"RESET yellow guy beat gs": {
|
|
# "on_scenes": [0x0],
|
|
"has_locations": ["Ghost Ship Rescue Tetra"],
|
|
"unset_if_true": [(PHAddr.flags_clear_fog, 0x80)]
|
|
},
|
|
"Spawn swift phantoms, despawn oshus on Molida": {
|
|
"on_scenes": [0x2600, 0xC00],
|
|
"set_if_true": [(PHAddr.flags_fog_spirits, 0x10)]
|
|
},
|
|
"Remove Spirit flag": {
|
|
"on_scenes": [0x0],
|
|
"has_slot_data": [["fog_settings", 0]],
|
|
"not_has_locations": ["Ghost Ship Rescue Tetra"],
|
|
"unset_if_true": [(PHAddr.flags_fog_spirits, 0x10)]
|
|
},
|
|
"Remove Spirit flag 2": {
|
|
"on_scenes": [0x0],
|
|
"has_slot_data": [["fog_settings", 1]],
|
|
"not_has_locations": ["Ghost Ship Rescue Tetra"],
|
|
"unset_if_true": [(PHAddr.flags_fog_spirits, 0x10)]
|
|
},
|
|
# Goron Chief
|
|
"Beat goron temple goron chief": {
|
|
"on_scenes": [0x100A],
|
|
"not_has_locations": ["Goron Chief Post Dungeon Item"],
|
|
"unset_if_true": [(PHAddr.adv_flags_23, 0x2)],
|
|
"reset_flags": ["RESET Beat goron temple goron chief"]
|
|
},
|
|
"Beat goron temple goron chief metal": {
|
|
"on_scenes": [0x100A],
|
|
"not_has_locations": ["Goron Chief Post Dungeon Item"],
|
|
"has_locations": ["Dongorongo Boss Reward", "Goron Chief Goron Quiz"],
|
|
"set_if_true": [(PHAddr.flags_metals, 0x40)],
|
|
"reset_flags": ["RESET remove Crimzonine"]
|
|
},
|
|
"Goron Island Crimzonine": {
|
|
"on_scenes": [0x1002, 0x1003],
|
|
"unset_if_true": [(PHAddr.flags_metals, 0x40)],
|
|
"reset_flags": ["RESET give Crimzonine"]
|
|
},
|
|
"RESET remove Crimzonine": {
|
|
# "on_scenes": [0x1003],
|
|
"has_items": [("Crimzonine", 0)],
|
|
"unset_if_true": [(PHAddr.flags_metals, 0x40)]
|
|
},
|
|
"RESET give Crimzonine": {
|
|
# "on_scenes": [0x1003],
|
|
"has_items": [("Crimzonine", 1)],
|
|
"set_if_true": [(PHAddr.flags_metals, 0x40)]
|
|
},
|
|
"RESET Beat goron temple goron chief": {
|
|
# "on_scenes": [0x1003],
|
|
"set_if_true": [(PHAddr.adv_flags_23, 0x2)]
|
|
},
|
|
"Play goron game on dee ess after temple": {
|
|
"on_scenes": [0x1B00],
|
|
"has_locations": ["Dongorongo Boss Reward"],
|
|
"set_if_true": [(PHAddr.adv_flags_27, 0x20)]
|
|
},
|
|
|
|
# Harrow Island
|
|
"Harrow island Map 1": {
|
|
"on_scenes": [0x1800],
|
|
"not_has_locations": ["Harrow Island Dig 1"],
|
|
"unset_if_true": [(PHAddr.treasure_maps_2, 0x1)],
|
|
"reset_flags": ["RESET Harrow island Map 1"]
|
|
},
|
|
"Harrow island Map 1 got": {
|
|
"on_scenes": [0x1800],
|
|
"has_locations": ["Harrow Island Dig 1"],
|
|
"set_if_true": [(PHAddr.treasure_maps_2, 0x1)],
|
|
"reset_flags": ["RESET Harrow island Map 1 got"]
|
|
},
|
|
"Harrow island Map 2": {
|
|
"on_scenes": [0x1800],
|
|
"not_has_locations": ["Harrow Island Dig 2"],
|
|
"unset_if_true": [(PHAddr.treasure_maps_2, 0x2)],
|
|
"reset_flags": ["RESET Harrow island Map 2"]
|
|
},
|
|
"Harrow island Map 2 got": {
|
|
"on_scenes": [0x1800],
|
|
"has_locations": ["Harrow Island Dig 2"],
|
|
"set_if_true": [(PHAddr.treasure_maps_2, 0x2)],
|
|
"reset_flags": ["RESET Harrow island Map 2 got"]
|
|
},
|
|
"Harrow island Map 3": {
|
|
"on_scenes": [0x1800],
|
|
"not_has_locations": ["Harrow Island Dig 3"],
|
|
"unset_if_true": [(PHAddr.treasure_maps_3, 2)],
|
|
"reset_flags": ["RESET Harrow island Map 3"]
|
|
},
|
|
"Harrow island Map 3 got": {
|
|
"on_scenes": [0x1800],
|
|
"has_locations": ["Harrow Island Dig 3"],
|
|
"set_if_true": [(PHAddr.treasure_maps_3, 2)],
|
|
"reset_flags": ["RESET Harrow island Map 3 got"]
|
|
},
|
|
"Harrow island Map 4": {
|
|
"on_scenes": [0x1800],
|
|
"not_has_locations": ["Harrow Island Dig 4"],
|
|
"unset_if_true": [(PHAddr.treasure_maps_3, 4)],
|
|
"reset_flags": ["RESET Harrow island Map 4"]
|
|
},
|
|
"Harrow island Map 4 got": {
|
|
"on_scenes": [0x1800],
|
|
"has_locations": ["Harrow Island Dig 4"],
|
|
"set_if_true": [(PHAddr.treasure_maps_3, 4)],
|
|
"reset_flags": ["RESET Harrow island Map 4 got"]
|
|
},
|
|
"RESET Harrow island Map 1": {
|
|
# "on_scenes": [0x2],
|
|
"has_items": [("Treasure Map #14 (Goron NW)", 1)],
|
|
"set_if_true": [(PHAddr.treasure_maps_2, 0x1)]
|
|
},
|
|
"RESET Harrow island Map 1 got": {
|
|
# "on_scenes": [0x2],
|
|
"has_items": [("Treasure Map #14 (Goron NW)", 0)],
|
|
"unset_if_true": [(PHAddr.treasure_maps_2, 0x1)]
|
|
},
|
|
"RESET Harrow island Map 2": {
|
|
#"on_scenes": [0x2],
|
|
"has_items": [("Treasure Map #15 (Goron W)", 1)],
|
|
"set_if_true": [(PHAddr.treasure_maps_2, 0x2)]
|
|
},
|
|
"RESET Harrow island Map 2 got": {
|
|
# "on_scenes": [0x2],
|
|
"has_items": [("Treasure Map #15 (Goron W)", 0)],
|
|
"unset_if_true": [(PHAddr.treasure_maps_2, 0x2)]
|
|
},
|
|
"RESET Harrow island Map 3": {
|
|
# "on_scenes": [0x2],
|
|
"has_items": [("Treasure Map #24 (Ruins W)", 1)],
|
|
"set_if_true": [(PHAddr.treasure_maps_3, 2)]
|
|
},
|
|
"RESET Harrow island Map 3 got": {
|
|
# "on_scenes": [0x2],
|
|
"has_items": [("Treasure Map #24 (Ruins W)", 0)],
|
|
"unset_if_true": [(PHAddr.treasure_maps_3, 2)]
|
|
},
|
|
"RESET Harrow island Map 4": {
|
|
# "on_scenes": [0x2],
|
|
"has_items": [("Treasure Map #25 (Dead E)", 1)],
|
|
"set_if_true": [(PHAddr.treasure_maps_3, 0x4)]
|
|
},
|
|
"RESET Harrow island Map 4 got": {
|
|
# "on_scenes": [0x2],
|
|
"has_items": [("Treasure Map #25 (Dead E)", 0)],
|
|
"unset_if_true": [(PHAddr.treasure_maps_3, 0x4)]
|
|
},
|
|
"Harrow have NE sea chart": {
|
|
"on_scenes": [0x1800],
|
|
"has_items": [("NE Sea Chart", 1)],
|
|
"set_if_true": [(PHAddr.adv_flags_1, 0x10)]
|
|
},
|
|
"Harrow not have NE sea chart": {
|
|
"on_scenes": [0x1800],
|
|
"has_items": [("NE Sea Chart", 0)],
|
|
"unset_if_true": [(PHAddr.adv_flags_1, 0x10)]
|
|
},
|
|
"SE spawn pirate ship": {
|
|
"on_scenes": [0x2, 0x3],
|
|
"not_has_locations": ["Ocean Miniblin Pirate Ambush Item"],
|
|
"has_locations": ["Ghost Ship Rescue Tetra"],
|
|
"set_if_true": [(PHAddr.flags_fog_spirits, 0x10), (PHAddr.flags_clear_fog, 0x80), (PHAddr.flags_fog_done, 0x10)]
|
|
},
|
|
"SE despawn pirate ship": {
|
|
"on_scenes": [0x2, 0x3],
|
|
"not_has_locations": ["Ghost Ship Rescue Tetra"],
|
|
"unset_if_true": [(PHAddr.flags_fog_spirits, 0x10), (PHAddr.flags_clear_fog, 0x80), (PHAddr.flags_fog_done, 0x10)]
|
|
|
|
},
|
|
|
|
# Zauz
|
|
"Zauz remove phantom blade": {
|
|
"on_scenes": [0x160A],
|
|
"not_has_locations": ["Zauz's House Phantom Blade"],
|
|
"unset_if_true": [(PHAddr.adv_flags_22, 0x20)],
|
|
"reset_flags": ["RESET Zauz remove phantom blade"]
|
|
},
|
|
"RESET Zauz remove phantom blade": {
|
|
# "on_scenes": [0x1600],
|
|
"has_items": [("Phantom Blade", 1)],
|
|
"set_if_true": [(PHAddr.adv_flags_22, 0x20)]
|
|
},
|
|
"Zauz remove triforce crest": {
|
|
"on_scenes": [0x160A],
|
|
"not_has_locations": ["Ghost Ship Rescue Tetra"],
|
|
"unset_if_true": [(PHAddr.flags_fog_done, 0x10), (PHAddr.adv_flags_4, 2), (PHAddr.flags_clear_fog, 0x80)],
|
|
"reset_flags": ["RESET Zauz remove triforce crest"]
|
|
},
|
|
"Zauz add triforce crest": {
|
|
"on_scenes": [0x160A],
|
|
"has_locations": ["Ghost Ship Rescue Tetra"],
|
|
"set_if_true": [(PHAddr.flags_fog_done, 0x10), (PHAddr.adv_flags_4, 2), (PHAddr.flags_clear_fog, 0x80)],
|
|
"reset_flags": ["RESET add triforce crest"]
|
|
},
|
|
"RESET Zauz remove triforce crest": {
|
|
# "on_scenes": [0x1600],
|
|
"has_items": [("Triforce Crest", 1)],
|
|
"set_if_true": [(PHAddr.adv_flags_4, 2)]
|
|
},
|
|
"RESET add triforce crest": {
|
|
# "on_scenes": [0x1600],
|
|
"has_items": [("Triforce Crest", 0)],
|
|
"unset_if_true": [(PHAddr.adv_flags_4, 2)]
|
|
},
|
|
"RESET Zauz remove triforce crest fog": {
|
|
"on_scenes": [0x1600],
|
|
"has_slot_data": [("fog_settings", 0)],
|
|
"set_if_true": [(PHAddr.flags_fog_done, 0x10), (PHAddr.flags_clear_fog, 0x80)]
|
|
},
|
|
"Zauz remove oshus flag": {
|
|
"on_scenes": [0x160A],
|
|
"not_has_location": ["Zauz's House Phantom Blade"],
|
|
"unset_if_true": [(PHAddr.adv_flags_22, 0x40)],
|
|
# "reset_flags": ["RESET Zauz remove oshus flag"]
|
|
},
|
|
# "RESET Zauz remove oshus flag": {
|
|
# # "on_scenes": [0x1600],
|
|
# "has_locations": ["Oshus Phantom Sword"],
|
|
# "set_if_true": [(0x1B5592, 0x40)]
|
|
# },
|
|
# Jolene
|
|
"Remove Jolene": {
|
|
"on_scenes": [0x0, 0x2, 0x3],
|
|
"unset_if_true": [(PHAddr.adv_flags_3, 0x80)],
|
|
"reset_flags": ["RESET Remove Jolene"]
|
|
},
|
|
"RESET Remove Jolene": {
|
|
# "on_scenes": [0xC00],
|
|
"has_locations": ["Crayk Boss Reward"],
|
|
"set_if_true": [(PHAddr.adv_flags_3, 0x80)]
|
|
},
|
|
"Zauz has enough metals": {
|
|
"on_scenes": [0x160A],
|
|
"zauz_metals": True,
|
|
"set_if_true": [(PHAddr.adv_flags_36, 0x10), (PHAddr.adv_flags_16, 1)]
|
|
},
|
|
"Zauz not has enough metals": {
|
|
"on_scenes": [0x160A],
|
|
"zauz_metals": False,
|
|
"unset_if_true": [(PHAddr.adv_flags_36, 0x10), (PHAddr.adv_flags_16, 1)]
|
|
},
|
|
# Dungeons and metals
|
|
"Goron temple metals": {
|
|
"on_scenes": [0x2000, 0x2E00, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006],
|
|
"unset_if_true": [(PHAddr.adv_flags_15, 0x40)],
|
|
"reset_flags": ["RESET Goron temple metals"]
|
|
},
|
|
"RESET Goron temple metals": {
|
|
# "on_scenes": [0x1000],
|
|
"has_items": [("Crimzonine", 1)],
|
|
"set_if_true": [(PHAddr.adv_flags_15, 0x40)]
|
|
},
|
|
"Ice temple metals": {
|
|
"on_scenes": [0x1F00, 0x1F03, 0x1F06],
|
|
"unset_if_true": [(PHAddr.adv_flags_15, 0x20)],
|
|
"reset_flags": ["RESET Ice Field pre-dungeon",
|
|
"RESET Ice Field post-dungeon"]
|
|
},
|
|
"Mutoh temple metals": {
|
|
"on_scenes": [0x2106, 0x2100],
|
|
"unset_if_true": [(PHAddr.adv_flags_15, 0x80)],
|
|
"reset_flags": ["RESET Mutoh temple metals"]
|
|
},
|
|
"RESET Mutoh temple metals": {
|
|
# "on_scenes": [0x1202],
|
|
"has_items": [("Aquanine", 1)],
|
|
"set_if_true": [(PHAddr.adv_flags_15, 0x80)]
|
|
},
|
|
# Oshus Items
|
|
"Block phantom sword crafting blade": {
|
|
"on_scenes": [0xB0A],
|
|
"has_items": [("Phantom Blade", 0)],
|
|
"not_has_locations": ["Oshus Phantom Sword"],
|
|
"unset_if_true": [(PHAddr.adv_flags_22, 0x20), (PHAddr.inventory_5, 0x20)]
|
|
},
|
|
"Block phantom sword crafting ph": {
|
|
"on_scenes": [0xB0A],
|
|
"has_items": [("Phantom Hourglass", 0)],
|
|
"not_has_locations": ["Oshus Phantom Sword"],
|
|
"unset_if_true": [(PHAddr.adv_flags_22, 0x20), (PHAddr.inventory_5, 0x20)]
|
|
},
|
|
"Oshus Allow Sword Craft": {
|
|
"on_scenes": [0xB0A],
|
|
"has_items": [("Phantom Hourglass", 1), ("Phantom Blade", 1)],
|
|
"unset_if_true": [(PHAddr.adv_flags_22, 0x40)]
|
|
},
|
|
"Reset Oshus": {
|
|
"on_scenes": [0xB0A],
|
|
"reset_flags": ["RESET Block phantom sword crafting",
|
|
"RESET Oshus have phantom sword",
|
|
"Oshus not have phantom sword",
|
|
"RESET Block Oshus Gem", "RESET Oshus Gem hourglass",
|
|
"RESET Oshus Gem chart",
|
|
"RESET Oshus Wind Temple",
|
|
"RESET Oshus spawn B13 Phantoms",
|
|
"RESET Oshus Have Phantom Blade"]
|
|
},
|
|
"RESET Oshus spawn B13 Phantoms": {
|
|
"set_if_true": [(PHAddr.adv_flags_22, 0x40)]
|
|
},
|
|
"RESET Oshus Have Phantom Blade": {
|
|
"has_items": [("Phantom Blade", 1)],
|
|
"set_if_true": [(PHAddr.adv_flags_22, 0x20)]
|
|
},
|
|
"RESET Block phantom sword crafting": {
|
|
# "on_scenes": [0xB00],
|
|
"has_items": [("Sword (Progressive)", 2)],
|
|
"set_if_true": [(PHAddr.inventory_5, 0x20)]
|
|
},
|
|
"Oshus not have phantom sword": {
|
|
# "on_scenes": [0xB00],
|
|
"has_items": [("Sword (Progressive)", 2, "not_has")],
|
|
"unset_if_true": [(PHAddr.inventory_5, 0x20)],
|
|
},
|
|
"Oshus have phantom sword": {
|
|
"on_scenes": [0xB0A],
|
|
"has_items": [("Sword (Progressive)", 2)],
|
|
"not_has_locations": ["Oshus Phantom Sword"],
|
|
"unset_if_true": [(PHAddr.inventory_5, 0x20)]
|
|
},
|
|
"RESET Oshus have phantom sword": {
|
|
# "on_scenes": [0xB00],
|
|
"has_items": [("Sword (Progressive)", 2)],
|
|
"set_if_true": [(PHAddr.inventory_5, 0x20)]
|
|
},
|
|
"Block Oshus Gem": {
|
|
"on_scenes": [0xB0A],
|
|
"not_has_locations": ["Cyclok Boss Reward"],
|
|
"unset_if_true": [(PHAddr.adv_flags_36, 0x4), (PHAddr.adv_flags_1, 0x2)]
|
|
},
|
|
"RESET Block Oshus Gem": {
|
|
# "on_scenes": [0xB00],
|
|
"has_locations": ["TotOK Lobby Phantom Hourglass"],
|
|
"set_if_true": [(PHAddr.adv_flags_36, 0x4)]
|
|
},
|
|
"Oshus Gem": {
|
|
"on_scenes": [0xB0A],
|
|
"not_has_locations": ["Oshus Spirit Gem"],
|
|
"has_locations": ["Cyclok Boss Reward"],
|
|
"set_if_true": [(PHAddr.adv_flags_36, 0x4), (PHAddr.adv_flags_1, 0x2), (PHAddr.adv_flags_3, 0x40)]
|
|
},
|
|
"RESET Oshus Gem hourglass": {
|
|
# "on_scenes": [0xB00],
|
|
"not_has_locations": ["TotOK Lobby Phantom Hourglass"],
|
|
"unset_if_true": [(PHAddr.adv_flags_36, 0x4)]
|
|
},
|
|
"RESET Oshus Gem chart": {
|
|
# "on_scenes": [0xB00],
|
|
"unset_if_true": [(PHAddr.adv_flags_1, 0x2)]
|
|
},
|
|
"RESET Oshus Wind Temple": {
|
|
# "on_scenes": [0xB00],
|
|
"not_has_locations": ["Cyclok Boss Reward"],
|
|
"unset_if_true": [(PHAddr.adv_flags_3, 0x40)]
|
|
},
|
|
"Oshus absent backup gem": {
|
|
"on_scenes": [0xB0A],
|
|
"has_locations": ["Cyclok Boss Reward", "Blaaz Boss Reward"],
|
|
"set_if_true": [(PHAddr.adv_flags_41, 0x2)]
|
|
},
|
|
"Oshus absent backup sword": {
|
|
"on_scenes": [0xB0A],
|
|
"has_items": [("Phantom Hourglass", 1), ("Phantom Blade", 1)],
|
|
"has_locations": ["Blaaz Boss Reward"],
|
|
"set_if_true": [(PHAddr.adv_flags_41, 0x2), (PHAddr.inventory_5, 0x20)]
|
|
},
|
|
# Trade Quest
|
|
"PoRL Trade Quest": {
|
|
"on_scenes": [0x700],
|
|
"not_has_locations": ["Prince of Red Lions Trade Quest Item"],
|
|
"unset_if_true": [(PHAddr.flags_trade_quest, 0x98), (PHAddr.inventory_6, 0x20)],
|
|
"reset_flags": ["RESET Swordsmans Scroll", "RESET Guard Notebook", "RESET Kaleidoscope", "RESET Wood Heart"]
|
|
},
|
|
"Nyave Trade Quest": {
|
|
"on_scenes": [0xA00],
|
|
"not_has_locations": ["Nyave Trade Quest Item"],
|
|
"unset_if_true": [(PHAddr.flags_trade_quest, 0x80), (PHAddr.inventory_6, 0x20)],
|
|
"reset_flags": ["RESET Swordsmans Scroll", "RESET Wood Heart"]
|
|
},
|
|
"Hoiger Trade Quest": {
|
|
"on_scenes": [0x900],
|
|
"not_has_locations": ["Hoiger Howgendoogen Trade Quest Item"],
|
|
"unset_if_true": [(PHAddr.flags_trade_quest, 0x90), (PHAddr.inventory_6, 0x20)],
|
|
"reset_flags": ["RESET Swordsmans Scroll", "RESET Guard Notebook", "RESET Wood Heart"]
|
|
},
|
|
"Wayfarer Trade Quest": {
|
|
"on_scenes": [0x800],
|
|
"not_has_locations": ["Wayfarer Trade Quest Chest"],
|
|
"unset_if_true": [(PHAddr.inventory_6, 0x20)],
|
|
"reset_flags": ["RESET Swordsmans Scroll"]
|
|
},
|
|
"Wayfarer Hut Trade Quest": {
|
|
"on_scenes": [0x1401],
|
|
"not_has_locations": ["Wayfarer Trade Quest Chest"],
|
|
"unset_if_true": [(PHAddr.flags_trade_quest, 0x80)],
|
|
"reset_flags": ["RESET Wood Heart"]
|
|
},
|
|
# "Wayfarer Hut Trade Quest Bannan Flag": {
|
|
# "on_scenes": [0x1401],
|
|
# "not_has_locations": ["Wayfarer Trade Quest Chest"],
|
|
# "set_if_true": [(0x20DAA1, 0x80)],
|
|
# "check_bits": [(0x1B5592, 0x8)],
|
|
# },
|
|
"RESET Swordsmans Scroll": {
|
|
# "on_scenes": [0x0, 0x1, 0x2, 0x3],
|
|
"has_items": [("Swordsman's Scroll", 1)],
|
|
"set_if_true": [(PHAddr.inventory_6, 0x20)]
|
|
},
|
|
"RESET Wood Heart": {
|
|
# "on_scenes": [0x0, 0x1, 0x2, 0x3],
|
|
"has_items": [("Wood Heart", 1)],
|
|
"not_has_locations": ["Wayfarer Trade Quest Chest"],
|
|
"set_if_true": [(PHAddr.flags_trade_quest, 0x80)]
|
|
},
|
|
"RESET Guard Notebook": {
|
|
# "on_scenes": [0x0, 0x1, 0x2, 0x3],
|
|
"has_items": [("Guard Notebook", 1)],
|
|
"not_has_locations": ["Nyave Trade Quest Item"],
|
|
"set_if_true": [(PHAddr.flags_trade_quest, 0x10)]
|
|
},
|
|
"RESET Kaleidoscope": {
|
|
# "on_scenes": [0x1, 0x2, 0x3],
|
|
"has_items": [("Kaleidoscope", 1)],
|
|
"not_has_locations": ["Hoiger Howgendoogen Trade Quest Item"],
|
|
"set_if_true": [(PHAddr.flags_trade_quest, 0x8)]
|
|
},
|
|
# Ghost Ship HC
|
|
"Ghost Ship HC": {
|
|
"on_scenes": [0x3000],
|
|
"not_has_locations": ["Cubus Sisters Heart Container"],
|
|
"unset_if_true": [(PHAddr.flags_fog_done, 0x8)],
|
|
"reset_flags": ["RESET Ghost Ship HC"]
|
|
},
|
|
"RESET Ghost Ship HC": {
|
|
"set_if_true": [(PHAddr.flags_fog_done, 0x8)]
|
|
},
|
|
"Ghost ship spawn warp": {
|
|
"on_scenes": [0x2900],
|
|
"check_bits": [(PHAddr.flags_clear_fog, 0x10)],
|
|
"set_if_true": [(PHAddr.adv_flags_7, 0x40)]
|
|
},
|
|
# Vanilla frogs
|
|
"Frogs show glyph": {
|
|
"on_scenes": [0, 1, 2, 3],
|
|
"has_slot_data": [("randomize_frogs", 0)],
|
|
"set_if_true": [(PHAddr.adv_flags_38, 0x40)]
|
|
},
|
|
"Uncharted unset frog flag": {
|
|
"on_scenes": [0x1a0b, 0x1a00],
|
|
"unset_if_true": [(PHAddr.adv_flags_38, 0x40)]
|
|
},
|
|
# Doyland
|
|
"Doyland lower water": {
|
|
"on_scenes": [0x2201],
|
|
"not_has_locations": ["Doylan's Gift"],
|
|
"unset_if_true": [(PHAddr.adv_flags_6, 0x4), (PHAddr.adv_flags_45, 0x30)],
|
|
"reset_flags": ["RESET Doyland lowered water"]
|
|
},
|
|
"RESET Doyland lowered water": {
|
|
"has_lowered_water": True,
|
|
"set_if_true": [(PHAddr.adv_flags_6, 0x4)], # Water level
|
|
},
|
|
"Ice Field pre-dungeon": {
|
|
"on_scenes": [0xF03],
|
|
"not_has_locations": ["Gleeok Boss Reward"],
|
|
"unset_if_true": [(PHAddr.flags_metals, 0x20)],
|
|
"reset_flags": ["RESET Ice Field pre-dungeon"]
|
|
},
|
|
"Frost Arena Always remove Azurine": {
|
|
"on_scenes": [0xF01],
|
|
"unset_if_true": [(PHAddr.flags_metals, 0x20)],
|
|
"reset_flags": ["RESET Ice Field pre-dungeon", "RESET Ice Field post-dungeon"]
|
|
},
|
|
"Frost Port Azurine for Peg lol": {
|
|
"on_scenes": [0xF00],
|
|
"not_has_locations": ["Isle of Frost SW Stand on Peg Gift"],
|
|
"unset_if_true": [(PHAddr.flags_metals, 0x20)],
|
|
"reset_flags": ["RESET Ice Field pre-dungeon", "RESET Ice Field post-dungeon"]
|
|
},
|
|
"Ice Field post-dungeon": {
|
|
"on_scenes": [0xF03],
|
|
"has_locations": ["Gleeok Boss Reward"],
|
|
"set_if_true": [(PHAddr.flags_metals, 0x20)],
|
|
"reset_flags": ["RESET Ice Field post-dungeon"]
|
|
},
|
|
"RESET Ice Field pre-dungeon": {
|
|
# "on_scenes": [0xF13, 0x1F00],
|
|
"has_items": [("Azurine", 1)],
|
|
"set_if_true": [(PHAddr.flags_metals, 0x20)]
|
|
},
|
|
"RESET Ice Field post-dungeon": {
|
|
# "on_scenes": [0xF13, 0x1F00],
|
|
"has_items": [("Azurine", 0)],
|
|
"unset_if_true": [(PHAddr.flags_metals, 0x20)]
|
|
},
|
|
# Wayfarer fishing checks
|
|
"RESET Swordfish Shadow": {
|
|
"on_scenes": [0x1400],
|
|
"has_items": [("Swordfish Shadows", 0)],
|
|
"unset_if_true": [(PHAddr.adv_flags_43, 0x10)]
|
|
},
|
|
"Fishing remove Fish": {
|
|
"on_scenes": [0x200],
|
|
"unset_if_true": [(PHAddr.skippyjack_count, 0xFF), (PHAddr.toona_count, 0xFF),
|
|
(PHAddr.loovar_count, 0xFF), (PHAddr.rsf_count, 0xFF),
|
|
(PHAddr.neptoona_count, 0xFF), (PHAddr.stowfish_count, 0xFF)],
|
|
"reset_flags": ["RESET Fishing remove Stowfish", "RESET Fishing skippy",
|
|
"RESET Fishing toona", "RESET Fishing loovar",
|
|
"RESET Fishing rsf", "RESET Fishing neptoona"]
|
|
},
|
|
|
|
"RESET Fishing remove Stowfish": {
|
|
# "on_scenes": [0, 1, 2, 3],
|
|
"last_scenes": [0x200],
|
|
"has_items": [("Fish: Stowfish", 1)],
|
|
"set_if_true": [(PHAddr.stowfish_count, "Fish: Stowfish")]
|
|
},
|
|
"RESET Fishing skippy": {
|
|
# "on_scenes": [0, 1, 2, 3],
|
|
"last_scenes": [0x200],
|
|
"has_items": [("Fish: Skippyjack", 1)],
|
|
"set_if_true": [(PHAddr.skippyjack_count, "Fish: Skippyjack")]
|
|
},
|
|
"RESET Fishing toona": {
|
|
# "on_scenes": [0, 1, 2, 3],
|
|
"last_scenes": [0x200],
|
|
"has_items": [("Fish: Toona", 1)],
|
|
"set_if_true": [(PHAddr.toona_count, "Fish: Toona")]
|
|
},
|
|
"RESET Fishing loovar": {
|
|
# "on_scenes": [0, 1, 2, 3],
|
|
"last_scenes": [0x200],
|
|
"has_items": [("Fish: Loovar", 1)],
|
|
"set_if_true": [(PHAddr.loovar_count, "Fish: Loovar")]
|
|
},
|
|
"RESET Fishing rsf": {
|
|
# "on_scenes": [0, 1, 2, 3],
|
|
"last_scenes": [0x200],
|
|
"has_items": [("Fish: Rusty Swordfish", 1)],
|
|
"set_if_true": [(PHAddr.rsf_count, "Fish: Rusty Swordfish")]
|
|
},
|
|
"RESET Fishing neptoona": {
|
|
# "on_scenes": [0, 1, 2, 3],
|
|
"last_scenes": [0x200],
|
|
"has_items": [("Fish: Legendary Neptoona", 1)],
|
|
"set_if_true": [(PHAddr.neptoona_count, 0x1)]
|
|
},
|
|
"Safety give sword cause silly": {
|
|
"on_scenes": [0, 1, 2, 3, 0xB03],
|
|
"has_items": [("Sword (Progressive)", 1)],
|
|
"set_if_true": [(PHAddr.inventory_1, 1)]
|
|
},
|
|
# Salvage
|
|
"Salvage has no hitbox until you get cannon...": {
|
|
"on_scenes": [0x300, 0xB0D],
|
|
"set_if_true": [(PHAddr.flags_cannon, 1), (PHAddr.adv_flags_17, 0x10)],
|
|
"reset_flags": ["RESET Salvage has no hitbox until you get cannon...", "RESET Salvage salvage"]
|
|
},
|
|
"RESET Salvage has no hitbox until you get cannon...": {
|
|
# "on_scenes": [0, 1, 2, 3, 0xB03],
|
|
"unset_if_true": [(PHAddr.flags_cannon, 1)],
|
|
"has_items": [("Cannon", 0)]
|
|
},
|
|
"RESET Salvage salvage": {
|
|
# "on_scenes": [0xD00],
|
|
"unset_if_true": [(PHAddr.adv_flags_17, 0x10)],
|
|
"not_has_locations": ["Eddo's Salvage Arm"]
|
|
},
|
|
# Man of smiles prize postcard
|
|
"Man of smiles prize postcard removal": {
|
|
"on_scenes": [0x600],
|
|
"unset_if_true": [(PHAddr.adv_flags_19, 0x08)],
|
|
"not_has_locations": ["Man of Smiles' Prize Postcard"]
|
|
},
|
|
# Heal on bellumbeck
|
|
"Full heal on bellumbeck": {
|
|
"on_scenes": [0x3300],
|
|
"full_heal": True
|
|
},
|
|
# Skippyjack protection
|
|
"Remove big catch lure if no skippyjack": {
|
|
"on_scenes": [0, 1, 2, 3],
|
|
"not_has_locations": ["Fishing Catch Skippyjack"],
|
|
"unset_if_true": [(PHAddr.inventory_6, 0x80)],
|
|
"reset_flags": ["RESET Remove big catch lure if no skippyjack"]
|
|
},
|
|
"RESET Remove big catch lure if no skippyjack": {
|
|
# "on_scenes": [0, 1, 2, 3],
|
|
"has_locations": ["Fishing Catch Skippyjack"],
|
|
"has_items": [("Big Catch Lure", 1)],
|
|
"set_if_true": [(PHAddr.inventory_6, 0x80)]
|
|
},
|
|
# Beedle Point Thresholds
|
|
"Beedle points bronze": {
|
|
"on_scenes": [0x500],
|
|
"beedle_points": 1,
|
|
"set_if_true": [(PHAddr.adv_flags_12, 0x40)]
|
|
},
|
|
"Beedle points silver": {
|
|
"on_scenes": [0x500],
|
|
"beedle_points": 20,
|
|
"set_if_true": [(PHAddr.adv_flags_18, 0x20)]
|
|
},
|
|
"Beedle points gold": {
|
|
"on_scenes": [0x500],
|
|
"beedle_points": 50,
|
|
"set_if_true": [(PHAddr.adv_flags_18, 0x40)]
|
|
},
|
|
"Beedle points plat": {
|
|
"on_scenes": [0x500],
|
|
"beedle_points": 100,
|
|
"set_if_true": [(PHAddr.adv_flags_18, 0x80)]
|
|
},
|
|
"Beedle points vip": {
|
|
"on_scenes": [0x500],
|
|
"beedle_points": 200,
|
|
"set_if_true": [(PHAddr.adv_flags_19, 0x1)]
|
|
},
|
|
# Ember Stuff
|
|
"Ember remove double linebeck": {
|
|
"on_scenes": [0xD00],
|
|
"set_if_true": [(PHAddr.flags_bosses_0, 0x20)],
|
|
"reset_flags": ["RESET Ember double linebeck"],
|
|
},
|
|
"RESET Ember double linebeck": {
|
|
"not_has_locations": ["Blaaz Boss Reward"],
|
|
"unset_if_true": [(PHAddr.flags_bosses_0, 0x20)],
|
|
},
|
|
"Astrid after fire temple": {
|
|
"on_scenes": [0xD0A],
|
|
"has_locations": ["Blaaz Boss Reward"],
|
|
"set_if_true": [(PHAddr.flags_bosses_0, 0x20)]
|
|
},
|
|
"Astrid before fire temple": {
|
|
"on_scenes": [0xD0A],
|
|
"not_has_locations": ["Blaaz Boss Reward"],
|
|
"unset_if_true": [(PHAddr.flags_bosses_0, 0x20)]
|
|
},
|
|
"Ember respawn blaaz": {
|
|
"on_scenes": [0x2B00],
|
|
"not_has_locations": ["Blaaz Boss Reward"],
|
|
"unset_if_true": [(PHAddr.flags_bosses_0, 0x20)],
|
|
},
|
|
"Molida respawn crayk": {
|
|
"on_scenes": [0x2C00],
|
|
"not_has_locations": ["Crayk Boss Reward"],
|
|
"unset_if_true": [(PHAddr.flags_bosses_0, 0x80)],
|
|
},
|
|
# Regal necklace backup removal
|
|
"Regal necklace backup removal dummy": {
|
|
"on_scenes": [0x1500],
|
|
"reset_flags": ["Regal necklace backup removal"]
|
|
},
|
|
"Regal necklace backup removal": {
|
|
"has_items": [("Regal Necklace", 0)],
|
|
"unset_if_true": [(PHAddr.adv_flags_6, 0x8)]
|
|
},
|
|
# TotOK shortcuts
|
|
"Spawn yellow warp early": {
|
|
"has_slot_data": [("totok_checkpoints", 1)],
|
|
"has_locations": ["TotOK B3.5 Sea Chart Chest"],
|
|
"on_scenes": [0x2600],
|
|
"set_if_true": [(PHAddr.adv_flags_46, 0x20)]
|
|
},
|
|
"TotOK Elevator down": {
|
|
"on_scenes": [0x250D],
|
|
"last_scenes": [0x250C],
|
|
"set_if_true": [(PHAddr.totok_b9_elevator, 0x10)]
|
|
},
|
|
"TotOK Elevator up": {
|
|
"on_scenes": [0x250D],
|
|
"last_scenes": [0x250E],
|
|
"unset_if_true": [(PHAddr.totok_b9_elevator, 0x10)]
|
|
},
|
|
# Map warping setup
|
|
"Reset sea charts": {
|
|
"on_scenes": [0, 1, 2, 3],
|
|
"reset_flags": ["RESET Give all sea charts if map warping"]
|
|
},
|
|
"RESET Give all sea charts if map warping": {
|
|
"has_slot_data": [("map_warp_options", [1, 2, 3, 4])],
|
|
"set_if_true": [(PHAddr.inventory_5, 0x1E)]
|
|
},
|
|
"Map warp remove sw chart": {
|
|
"on_scenes": [0, 1, 2, 3],
|
|
"has_items": [("SW Sea Chart", 0)],
|
|
"unset_if_true": [(PHAddr.inventory_5, 0x2)]
|
|
},
|
|
"Map warp remove nw chart": {
|
|
"on_scenes": [0, 1, 2, 3],
|
|
"has_items": [("NW Sea Chart", 0)],
|
|
"unset_if_true": [(PHAddr.inventory_5, 0x4)]
|
|
},
|
|
"Map warp remove se chart": {
|
|
"on_scenes": [0, 1, 2, 3],
|
|
"has_items": [("SE Sea Chart", 0)],
|
|
"unset_if_true": [(PHAddr.inventory_5, 0x8)]
|
|
},
|
|
"Map warp remove ne chart": {
|
|
"on_scenes": [0, 1, 2, 3],
|
|
"has_items": [("NE Sea Chart", 0)],
|
|
"unset_if_true": [(PHAddr.inventory_5, 0x10)]
|
|
},
|
|
}
|
|
|