diff --git a/ootrando_overworldmap_hamsda.zip b/ootrando_overworldmap_hamsda.zip index 6c332171..80577f98 100644 Binary files a/ootrando_overworldmap_hamsda.zip and b/ootrando_overworldmap_hamsda.zip differ diff --git a/ootrando_overworldmap_hamsda/README.md b/ootrando_overworldmap_hamsda/README.md index 5c639d0d..7fdddc42 100644 --- a/ootrando_overworldmap_hamsda/README.md +++ b/ootrando_overworldmap_hamsda/README.md @@ -14,20 +14,26 @@ The pack offers 7 different variants: 6. Entrance Randomizer 7. Entrance Randomizer (Keysanity) -## Vanilla vs Master Quest Dungeons +## Dungeon Labels + +The small labels with the dungeon names serve two purposes in regards to logic. + +### Vanilla vs Master Quest Dungeons The randomizer has the option to switch some or all dungeons to their Master Quest equivalents. -To accomodate for this, you can click on the dungeon labels to change their current status: +To accomodate for this, you can left click on the dungeon labels to change their current status: - ![Vanilla](images/label_deku.png "Vanilla") The dungeons vanilla checks will be shown. - ![Master Quest](images/label_deku_mq.png "Master Quest") The dungeons MQ checks will be shown. - ![Unknown](images/label_deku_red.png "Unknown") Both versions of the dungeon will be shown. -You can use this in the non map variants as a reminder. - The small key maximum amounts in the keysanity variants will dynamically update according to what you selected for the corresponding dungeon. If you have a dungeon marked as unknown in non-keysanity, some of the checks in the dungeon might not show up correctly until you pick either vanilla or MQ. +### Dungeon Boss Shortcuts + +The randomizer also has the option to activate certain shortcuts to reach the boss faster in dungeons with blue warps. To mark that one of these is active, right clicking e.g. ![Label](images/label_deku.png "Label") will overlay it with ![Boss Shortcut](images/overlay_boss_icon.png "Boss Shortcut"). + ## Special items Some of this functionality might not be immediately obvious: diff --git a/ootrando_overworldmap_hamsda/SETTINGS.md b/ootrando_overworldmap_hamsda/SETTINGS.md index ea13618b..32eecb35 100644 --- a/ootrando_overworldmap_hamsda/SETTINGS.md +++ b/ootrando_overworldmap_hamsda/SETTINGS.md @@ -129,9 +129,10 @@ If you have selected ![Open Door](images/setting_door_open.png "Open Door") or c ### Randomize Overworld Spawns -- ![Spawn Shuffle Off](images/setting_entrance_spawn_off.png "Spawn Shuffle Off") Spawns are not shuffled. -- ![Spawn Shuffled](images/setting_entrance_spawn_shuffle.png "Spawn Shuffled") Spawns are shuffled. - +- ![Randomize Spawns: Off](images/setting_entrance_spawn_off.png "Randomize Spawns: Off") Spawns are not shuffled. +- ![Randomize Spawns: Child](images/setting_entrance_spawn_child.png "Randomize Spawns: Child") Child spawn is shuffled. +- ![Randomize Spawns: Adult](images/setting_entrance_spawn_adult.png "Randomize Spawns: Adult") Adult spawn is shuffled. +- ![Randomize Spawns: Both](images/setting_entrance_spawn_both.png "Randomize Spawns: Both") Both spawns are shuffled. ### Bombchus Are Considered in Logic @@ -209,12 +210,19 @@ This setting determines if Magic Beans are shuffled. - ![Magic Beans not shuffled](images/setting_shuffle_beans_no.png "Magic Beans not shuffled") Magic Beans are not shuffled and will be captured in the corresponding chest by default. - ![Magic Beans shuffled](images/setting_shuffle_beans_yes.png "Magic Beans shuffled") The Magic Beans are shuffled into the item pool and will not be captured. -### Shuffle Medigoron & Carpet Salesman +### Shuffle Expensive Merchants + +This setting determines if Medigoron, Granny's Potion Shop, and Carpet Salesman items are shuffled. + +- ![Expensive Merchants not shuffled](images/setting_shuffle_merchants_no.png "Expensive Merchants not shuffled") Expensive Merchants are not shuffled. +- ![Expensive Merchants shuffled](images/setting_shuffle_merchants_yes.png "Expensive Merchants shuffled") Expensive Merchants are shuffled and the merchants sell one randomized item each. + +### Shuffle Frog Song Rupees -This setting determines if Medigoron and Carpet Salesman items are shuffled. +This setting determines if the rewards for the five grey note songs (besides Song of Storms) are shuffled. -- ![Medigoron and Carpet Salesman not shuffled](images/setting_shuffle_merchants_no.png "Medigoron and Carpet Salesman not shuffled") Medigoron and Carpet Salesman items are not shuffled. -- ![Medigoron and Carpet Salesman shuffled](images/setting_shuffle_merchants_yes.png "Medigoron and Carpet Salesman shuffled") Medigoron and Carpet Salesman items are shuffled and the merchants sell one randomized item for 200 rupees each. +- ![Frog Song Rupees not shuffled](images/setting_shuffle_frogs_no.png "Frog Song Rupees not shuffled") Frog Song Rupees are not shuffled. +- ![Frog Song Rupees shuffled](images/setting_shuffle_frogs_yes.png "Frog Song Rupees shuffled") Frog Song Rupees are shuffled and playing the songs rewards one randomized item each. ## Main Rules: Shuffle Dungeon Items @@ -270,6 +278,10 @@ This setting determines if all masks will be available once the Happy Mask Shop - ![Mask Quest not complete](images/setting_masks_off.png "Mask Quest not complete") The mask quest has to be completed step by step like in the vanilla game. - ![Mask Quest complete](images/setting_masks_complete.png "Mask Quest complete") All the masks will be available once the Happy Mask Shop is open. +### Plant Magic Beans + +- ![Plant Magic Beans](images/setting_plant_beans.png "Plant Magic Beans") Plants all 10 magic beans in their soft soil spots and allows adult to ride them. + ### Hints This setting determines when hintable locations will show up on the map ([see wiki](https://wiki.ootrandomizer.com/index.php?title=Readme#Other)). @@ -289,6 +301,10 @@ This setting determines how much damage you take ([see wiki](https://wiki.ootran - ![Damage x4](images/setting_damage_quadruple.png "Damage x4") Damage is quadrupled. - ![OHKO](images/setting_damage_ohko.png "OHKO") Damage kills you in one hit. +### Blue Fire Arrows + +- ![Blue Fire Arrows](images/setting_blue_fire_arrows.png "Blue Fire Arrows") Changes Ice Arrows to Blue Fire Arrows and allows them to melt red ice (and mud walls out of logic). + ### Nighttime Skulltulas Expect Sun's Song This setting determines if logic expects the player to have an ocarina and the Sun’s Song to get Gold Skulltula locations that are only found at nighttime. diff --git a/ootrando_overworldmap_hamsda/changelog.md b/ootrando_overworldmap_hamsda/changelog.md index ca84923a..125f3a24 100644 --- a/ootrando_overworldmap_hamsda/changelog.md +++ b/ootrando_overworldmap_hamsda/changelog.md @@ -1,5 +1,19 @@ # Changelog +## 3.8.0.0 + +- fixed closed DoT logic for `DMT Freestanding PoH` +- changed `Randomize Spawns` setting to have separate options for child/adult/both +- added `Shuffle Frog Song Rupees` setting +- added `Blue Fire Arrows` setting +- added granny's blue potion to `Shuffle Expensive Merchants` setting +- added `Dungeon Boss Shortcuts` setting +- changed layouts to accomodate smaller resolutions better + - moved pinned locations between items and map in horizontal layout + - added scrollbar to pinned locations in horizontal layout +- added `Plant Magic Beans` setting and removed bean planting `user_setting` +- updated `user_presets` + ## 3.7.3.0 - updated `user_presets` diff --git a/ootrando_overworldmap_hamsda/images/logic_dc_mq_child_back.png b/ootrando_overworldmap_hamsda/images/logic_dc_mq_child_back.png deleted file mode 100644 index 425e1b7c..00000000 Binary files a/ootrando_overworldmap_hamsda/images/logic_dc_mq_child_back.png and /dev/null differ diff --git a/ootrando_overworldmap_hamsda/images/logic_dc_mq_eyes.png b/ootrando_overworldmap_hamsda/images/logic_dc_mq_eyes.png deleted file mode 100644 index 5ec0336e..00000000 Binary files a/ootrando_overworldmap_hamsda/images/logic_dc_mq_eyes.png and /dev/null differ diff --git a/ootrando_overworldmap_hamsda/images/logic_dc_mq_eyes_adult.png b/ootrando_overworldmap_hamsda/images/logic_dc_mq_eyes_adult.png new file mode 100644 index 00000000..755fc181 Binary files /dev/null and b/ootrando_overworldmap_hamsda/images/logic_dc_mq_eyes_adult.png differ diff --git a/ootrando_overworldmap_hamsda/images/logic_dc_mq_eyes_child.png b/ootrando_overworldmap_hamsda/images/logic_dc_mq_eyes_child.png new file mode 100644 index 00000000..f1f0d5bc Binary files /dev/null and b/ootrando_overworldmap_hamsda/images/logic_dc_mq_eyes_child.png differ diff --git a/ootrando_overworldmap_hamsda/images/logic_dc_mq_hammer_floor.png b/ootrando_overworldmap_hamsda/images/logic_dc_mq_hammer_floor.png new file mode 100644 index 00000000..00a0daec Binary files /dev/null and b/ootrando_overworldmap_hamsda/images/logic_dc_mq_hammer_floor.png differ diff --git a/ootrando_overworldmap_hamsda/images/logic_jabu_alcove_jump_dive.png b/ootrando_overworldmap_hamsda/images/logic_jabu_alcove_jump_dive.png new file mode 100644 index 00000000..fa8449cb Binary files /dev/null and b/ootrando_overworldmap_hamsda/images/logic_jabu_alcove_jump_dive.png differ diff --git a/ootrando_overworldmap_hamsda/images/logic_jabu_mq_rang_jump.png b/ootrando_overworldmap_hamsda/images/logic_jabu_mq_rang_jump.png new file mode 100644 index 00000000..9733f888 Binary files /dev/null and b/ootrando_overworldmap_hamsda/images/logic_jabu_mq_rang_jump.png differ diff --git a/ootrando_overworldmap_hamsda/images/logic_jabu_scrub_jump_dive.png b/ootrando_overworldmap_hamsda/images/logic_jabu_scrub_jump_dive.png deleted file mode 100644 index f7588cd9..00000000 Binary files a/ootrando_overworldmap_hamsda/images/logic_jabu_scrub_jump_dive.png and /dev/null differ diff --git a/ootrando_overworldmap_hamsda/images/logic_lens_shadow_back.png b/ootrando_overworldmap_hamsda/images/logic_lens_shadow_back.png deleted file mode 100644 index 495ea903..00000000 Binary files a/ootrando_overworldmap_hamsda/images/logic_lens_shadow_back.png and /dev/null differ diff --git a/ootrando_overworldmap_hamsda/images/logic_lens_shadow_mq_back.png b/ootrando_overworldmap_hamsda/images/logic_lens_shadow_mq_back.png deleted file mode 100644 index cbbc4340..00000000 Binary files a/ootrando_overworldmap_hamsda/images/logic_lens_shadow_mq_back.png and /dev/null differ diff --git a/ootrando_overworldmap_hamsda/images/logic_lens_shadow_mq_dead_hand.png b/ootrando_overworldmap_hamsda/images/logic_lens_shadow_mq_dead_hand.png new file mode 100644 index 00000000..36b11832 Binary files /dev/null and b/ootrando_overworldmap_hamsda/images/logic_lens_shadow_mq_dead_hand.png differ diff --git a/ootrando_overworldmap_hamsda/images/logic_lens_shadow_mq_invisible_blades.png b/ootrando_overworldmap_hamsda/images/logic_lens_shadow_mq_invisible_blades.png new file mode 100644 index 00000000..10a54486 Binary files /dev/null and b/ootrando_overworldmap_hamsda/images/logic_lens_shadow_mq_invisible_blades.png differ diff --git a/ootrando_overworldmap_hamsda/images/logic_lens_shadow_mq_platform.png b/ootrando_overworldmap_hamsda/images/logic_lens_shadow_mq_platform.png new file mode 100644 index 00000000..bea23543 Binary files /dev/null and b/ootrando_overworldmap_hamsda/images/logic_lens_shadow_mq_platform.png differ diff --git a/ootrando_overworldmap_hamsda/images/logic_lens_shadow_platform.png b/ootrando_overworldmap_hamsda/images/logic_lens_shadow_platform.png new file mode 100644 index 00000000..4af61841 Binary files /dev/null and b/ootrando_overworldmap_hamsda/images/logic_lens_shadow_platform.png differ diff --git a/ootrando_overworldmap_hamsda/images/logic_shadow_bongo.png b/ootrando_overworldmap_hamsda/images/logic_shadow_bongo.png new file mode 100644 index 00000000..31f02979 Binary files /dev/null and b/ootrando_overworldmap_hamsda/images/logic_shadow_bongo.png differ diff --git a/ootrando_overworldmap_hamsda/images/logic_shadow_mq_after_wind_gs.png b/ootrando_overworldmap_hamsda/images/logic_shadow_mq_after_wind_gs.png new file mode 100644 index 00000000..ea69dc63 Binary files /dev/null and b/ootrando_overworldmap_hamsda/images/logic_shadow_mq_after_wind_gs.png differ diff --git a/ootrando_overworldmap_hamsda/images/logic_shadow_mq_windy_walkway.png b/ootrando_overworldmap_hamsda/images/logic_shadow_mq_windy_walkway.png new file mode 100644 index 00000000..682fd730 Binary files /dev/null and b/ootrando_overworldmap_hamsda/images/logic_shadow_mq_windy_walkway.png differ diff --git a/ootrando_overworldmap_hamsda/images/logic_spirit_platform_hookshot.png b/ootrando_overworldmap_hamsda/images/logic_spirit_platform_hookshot.png new file mode 100644 index 00000000..a4ef767d Binary files /dev/null and b/ootrando_overworldmap_hamsda/images/logic_spirit_platform_hookshot.png differ diff --git a/ootrando_overworldmap_hamsda/images/overlay_boss_icon.png b/ootrando_overworldmap_hamsda/images/overlay_boss_icon.png new file mode 100644 index 00000000..b32057df Binary files /dev/null and b/ootrando_overworldmap_hamsda/images/overlay_boss_icon.png differ diff --git a/ootrando_overworldmap_hamsda/images/setting_blue_fire_arrows.png b/ootrando_overworldmap_hamsda/images/setting_blue_fire_arrows.png new file mode 100644 index 00000000..41e72da2 Binary files /dev/null and b/ootrando_overworldmap_hamsda/images/setting_blue_fire_arrows.png differ diff --git a/ootrando_overworldmap_hamsda/images/setting_entrance_spawn_adult.png b/ootrando_overworldmap_hamsda/images/setting_entrance_spawn_adult.png new file mode 100644 index 00000000..7aea1bb4 Binary files /dev/null and b/ootrando_overworldmap_hamsda/images/setting_entrance_spawn_adult.png differ diff --git a/ootrando_overworldmap_hamsda/images/setting_entrance_spawn_both.png b/ootrando_overworldmap_hamsda/images/setting_entrance_spawn_both.png new file mode 100644 index 00000000..5b9f5dfd Binary files /dev/null and b/ootrando_overworldmap_hamsda/images/setting_entrance_spawn_both.png differ diff --git a/ootrando_overworldmap_hamsda/images/setting_entrance_spawn_child.png b/ootrando_overworldmap_hamsda/images/setting_entrance_spawn_child.png new file mode 100644 index 00000000..a0070aed Binary files /dev/null and b/ootrando_overworldmap_hamsda/images/setting_entrance_spawn_child.png differ diff --git a/ootrando_overworldmap_hamsda/images/setting_entrance_spawn_off.png b/ootrando_overworldmap_hamsda/images/setting_entrance_spawn_off.png index f08e4140..6d7c9177 100644 Binary files a/ootrando_overworldmap_hamsda/images/setting_entrance_spawn_off.png and b/ootrando_overworldmap_hamsda/images/setting_entrance_spawn_off.png differ diff --git a/ootrando_overworldmap_hamsda/images/setting_entrance_spawn_shuffle.png b/ootrando_overworldmap_hamsda/images/setting_entrance_spawn_shuffle.png deleted file mode 100644 index 5c41a9ef..00000000 Binary files a/ootrando_overworldmap_hamsda/images/setting_entrance_spawn_shuffle.png and /dev/null differ diff --git a/ootrando_overworldmap_hamsda/images/setting_plant_beans.png b/ootrando_overworldmap_hamsda/images/setting_plant_beans.png new file mode 100644 index 00000000..92f14998 Binary files /dev/null and b/ootrando_overworldmap_hamsda/images/setting_plant_beans.png differ diff --git a/ootrando_overworldmap_hamsda/images/setting_shuffle_frogs_no.png b/ootrando_overworldmap_hamsda/images/setting_shuffle_frogs_no.png new file mode 100644 index 00000000..a10fc424 Binary files /dev/null and b/ootrando_overworldmap_hamsda/images/setting_shuffle_frogs_no.png differ diff --git a/ootrando_overworldmap_hamsda/images/setting_shuffle_frogs_yes.png b/ootrando_overworldmap_hamsda/images/setting_shuffle_frogs_yes.png new file mode 100644 index 00000000..ef01b40e Binary files /dev/null and b/ootrando_overworldmap_hamsda/images/setting_shuffle_frogs_yes.png differ diff --git a/ootrando_overworldmap_hamsda/items/dungeons.json b/ootrando_overworldmap_hamsda/items/dungeons.json index cefe7d8a..9803321d 100644 --- a/ootrando_overworldmap_hamsda/items/dungeons.json +++ b/ootrando_overworldmap_hamsda/items/dungeons.json @@ -27,6 +27,13 @@ } ] }, + { + "name": "Deku Tree Shortcut", + "type": "toggle_badged", + "base_item": "deku_label", + "img": "images/overlay_boss_icon.png", + "codes": "deku_shortcuts,deku_tree_shortcuts" + }, { "name": "Dodongos Cavern Label", "type": "progressive", @@ -49,6 +56,13 @@ } ] }, + { + "name": "Dodongos Cavern Shortcut", + "type": "toggle_badged", + "base_item": "dodongo_label", + "img": "images/overlay_boss_icon.png", + "codes": "dodongo_shortcuts,dodongos_cavern_shortcuts" + }, { "name": "Jabu Jabu Label", "type": "progressive", @@ -71,6 +85,13 @@ } ] }, + { + "name": "Jabu Jabu Shortcut", + "type": "toggle_badged", + "base_item": "jabu_label", + "img": "images/overlay_boss_icon.png", + "codes": "jabu_shortcuts" + }, { "name": "Forest Temple Label", "type": "progressive", @@ -93,6 +114,13 @@ } ] }, + { + "name": "Forest Temple Shortcut", + "type": "toggle_badged", + "base_item": "forest_label", + "img": "images/overlay_boss_icon.png", + "codes": "forest_shortcuts,forest_temple_shortcuts" + }, { "name": "Forest Temple Small Keys", "type": "consumable", @@ -128,6 +156,13 @@ } ] }, + { + "name": "Fire Temple Shortcut", + "type": "toggle_badged", + "base_item": "fire_label", + "img": "images/overlay_boss_icon.png", + "codes": "fire_shortcuts,fire_temple_shortcuts" + }, { "name": "Fire Temple Small Keys", "type": "consumable", @@ -198,6 +233,13 @@ } ] }, + { + "name": "Spirit Temple Shortcut", + "type": "toggle_badged", + "base_item": "spirit_label", + "img": "images/overlay_boss_icon.png", + "codes": "spirit_shortcuts,spirit_temple_shortcuts" + }, { "name": "Spirit Temple Small Keys", "type": "consumable", @@ -233,6 +275,13 @@ } ] }, + { + "name": "Shadow Temple Shortcut", + "type": "toggle_badged", + "base_item": "shadow_label", + "img": "images/overlay_boss_icon.png", + "codes": "shadow_shortcuts,shadow_temple_shortcuts" + }, { "name": "Shadow Temple Small Keys", "type": "consumable", diff --git a/ootrando_overworldmap_hamsda/items/items.json b/ootrando_overworldmap_hamsda/items/items.json index 69b4e102..0152b79b 100644 --- a/ootrando_overworldmap_hamsda/items/items.json +++ b/ootrando_overworldmap_hamsda/items/items.json @@ -678,11 +678,5 @@ "codes": "rutominimal" } ] - }, - { - "name": "Dummy", - "type": "toggle", - "img": "images/rupee.png", - "codes": "dummy" } ] \ No newline at end of file diff --git a/ootrando_overworldmap_hamsda/items/options.json b/ootrando_overworldmap_hamsda/items/options.json index 76cb546d..117aaf10 100644 --- a/ootrando_overworldmap_hamsda/items/options.json +++ b/ootrando_overworldmap_hamsda/items/options.json @@ -13,12 +13,12 @@ { "img": "images/setting_forest_deku.png", "codes": "setting_forest,setting_forest_deku", - "inherits_codes": false + "inherit_codes": false }, { "img": "images/setting_forest_open.png", "codes": "setting_forest,setting_forest_open", - "inherits_codes": false + "inherit_codes": false } ] }, @@ -196,7 +196,7 @@ { "img": "images/setting_entrance_interiors_simple.png", "codes": "setting_entrance_interiors,setting_entrance_interiors_simple", - "inherits_codes": false + "inherit_codes": false }, { "img": "images/setting_entrance_interiors_all.png", @@ -219,7 +219,7 @@ { "img": "images/setting_entrance_grottos_shuffle.png", "codes": "setting_entrance_grottos,setting_entrance_grottos_shuffle", - "inherits_codes": false + "inherit_codes": false } ] }, @@ -238,7 +238,7 @@ { "img": "images/setting_entrance_dungeons_shuffle.png", "codes": "setting_entrance_dungeons,setting_entrance_dungeons_shuffle", - "inherits_codes": false + "inherit_codes": false } ] }, @@ -257,7 +257,7 @@ { "img": "images/setting_entrance_overworld_shuffle.png", "codes": "setting_entrance_overworld,setting_entrance_overworld_shuffle", - "inherits_codes": false + "inherit_codes": false } ] }, @@ -276,7 +276,7 @@ { "img": "images/setting_entrance_mixed_indoor.png", "codes": "setting_entrance_mixed,setting_entrance_mixed_indoor", - "inherits_codes": false + "inherit_codes": false }, { "img": "images/setting_entrance_mixed_all.png", @@ -299,7 +299,7 @@ { "img": "images/setting_entrance_owl_shuffle.png", "codes": "setting_entrance_owl,setting_entrance_owl_shuffle", - "inherits_codes": false + "inherit_codes": false } ] }, @@ -318,7 +318,7 @@ { "img": "images/setting_entrance_warpsong_shuffle.png", "codes": "setting_entrance_warpsong,setting_entrance_warpsong_shuffle", - "inherits_codes": false + "inherit_codes": false } ] }, @@ -327,17 +327,26 @@ "type": "progressive", "allow_disabled": false, "loop": true, - "initial_stage_idx": 1, "stages": [ { "img": "images/setting_entrance_spawn_off.png", "img_mods": "@disabled", - "codes": "setting_entrance_spawn,setting_entrance_spawn_off" + "codes": "setting_entrance_spawn_off" + }, + { + "img": "images/setting_entrance_spawn_child.png", + "codes": "setting_entrance_spawn_child", + "inherit_codes": false + }, + { + "img": "images/setting_entrance_spawn_adult.png", + "codes": "setting_entrance_spawn_adult", + "inherit_codes": false }, { - "img": "images/setting_entrance_spawn_shuffle.png", - "codes": "setting_entrance_spawn,setting_entrance_spawn_shuffle", - "inherits_codes": false + "img": "images/setting_entrance_spawn_both.png", + "codes": "setting_entrance_spawn_child,setting_entrance_spawn_adult", + "inherit_codes": false } ] }, @@ -533,7 +542,7 @@ ] }, { - "name": "Shuffle Medigoron & Carpet Salesman", + "name": "Shuffle Expensive Merchants", "type": "progressive", "allow_disabled": false, "loop": true, @@ -550,6 +559,24 @@ } ] }, + { + "name": "Shuffle Frog Song Rupees", + "type": "progressive", + "allow_disabled": false, + "loop": true, + "stages": [ + { + "img": "images/setting_shuffle_frogs_no.png", + "img_mods": "@disabled", + "codes": "setting_shuffle_frogs,setting_shuffle_frogs_no" + }, + { + "img": "images/setting_shuffle_frogs_yes.png", + "codes": "setting_shuffle_frogs,setting_shuffle_frogs_yes", + "inherit_codes": false + } + ] + }, { "name": "Shuffle Small Keys", "type": "progressive", @@ -662,6 +689,24 @@ } ] }, + { + "name": "Plant Magic Beans", + "type": "progressive", + "allow_disabled": false, + "loop": true, + "stages": [ + { + "img": "images/setting_plant_beans.png", + "img_mods": "@disabled", + "codes": "setting_plant_beans,setting_plant_beans_off" + }, + { + "img": "images/setting_plant_beans.png", + "codes": "setting_plant_beans,setting_plant_beans_on", + "inherit_codes": false + } + ] + }, { "name": "Hints", "type": "progressive", @@ -724,6 +769,24 @@ } ] }, + { + "name": "Blue Fire Arrows", + "type": "progressive", + "allow_disabled": false, + "loop": true, + "stages": [ + { + "img": "images/setting_blue_fire_arrows.png", + "img_mods": "@disabled", + "codes": "setting_blue_fire_arrows,setting_blue_fire_arrows_off" + }, + { + "img": "images/setting_blue_fire_arrows.png", + "codes": "setting_blue_fire_arrows,setting_blue_fire_arrows_on", + "inherit_codes": false + } + ] + }, { "name": "Nighttime Skulltulas Expect Sun's Song", "type": "progressive", diff --git a/ootrando_overworldmap_hamsda/items/sequences.json b/ootrando_overworldmap_hamsda/items/sequences.json index a03f5b54..3188b9c4 100644 --- a/ootrando_overworldmap_hamsda/items/sequences.json +++ b/ootrando_overworldmap_hamsda/items/sequences.json @@ -1,100 +1,4 @@ [ - { - "name": "Forest Stage Bean", - "type": "progressive", - "allow_disabled": false, - "stages": [ - { - "img": "images/bean.png", - "img_mods": "@disabled", - "codes": "bean_stage_no" - }, - { - "img": "images/bean.png", - "codes": "bean_stage_yes" - } - ] - }, - { - "name": "Lake Hylia Bean", - "type": "progressive", - "allow_disabled": false, - "stages": [ - { - "img": "images/bean.png", - "img_mods": "@disabled", - "codes": "bean_lake_no" - }, - { - "img": "images/bean.png", - "codes": "bean_lake_yes" - } - ] - }, - { - "name": "Graveyard Bean", - "type": "progressive", - "allow_disabled": false, - "stages": [ - { - "img": "images/bean.png", - "img_mods": "@disabled", - "codes": "bean_graveyard_no" - }, - { - "img": "images/bean.png", - "codes": "bean_graveyard_yes" - } - ] - }, - { - "name": "DMT Bean", - "type": "progressive", - "allow_disabled": false, - "stages": [ - { - "img": "images/bean.png", - "img_mods": "@disabled", - "codes": "bean_trail_no" - }, - { - "img": "images/bean.png", - "codes": "bean_trail_yes" - } - ] - }, - { - "name": "DMC Bean", - "type": "progressive", - "allow_disabled": false, - "stages": [ - { - "img": "images/bean.png", - "img_mods": "@disabled", - "codes": "bean_crater_no" - }, - { - "img": "images/bean.png", - "codes": "bean_crater_yes" - } - ] - }, - { - "name": "Colossus Bean", - "type": "progressive", - "allow_disabled": false, - "stages": [ - { - "img": "images/bean.png", - "img_mods": "@disabled", - "codes": "bean_colossus_no" - }, - { - "img": "images/bean.png", - "codes": "bean_colossus_yes" - } - ] - }, { "name": "Scarecrow", "type": "progressive", diff --git a/ootrando_overworldmap_hamsda/items/tricks.json b/ootrando_overworldmap_hamsda/items/tricks.json index 690cbd11..20116b6d 100644 --- a/ootrando_overworldmap_hamsda/items/tricks.json +++ b/ootrando_overworldmap_hamsda/items/tricks.json @@ -1,4 +1,9 @@ [ + //paint.net 5.0+ + //BoltBait's Outlined / Gradient text v6.0 + //200 * 16, 96dpi + //Font: Hylia Serif Beta, not bold, not italic, size 9 + //Outline: width 3, round style { "name": "Fewer Tunic Requirements", "type": "toggle", @@ -244,6 +249,13 @@ "img": "images/logic_spirit_lobby_jump.png", "codes": "logic_spirit_lobby_jump" }, + { + "name": "Spirit Temple Main Room Hookshot to Boss Platform", + "type": "toggle", + "initial_active_state": false, + "img": "images/logic_spirit_platform_hookshot.png", + "codes": "logic_spirit_platform_hookshot" + }, { "name": "Spirit Temple MQ Sun Block Room GS with Boomerang", "type": "toggle", @@ -252,11 +264,18 @@ "codes": "logic_spirit_mq_sun_block_gs" }, { - "name": "Jabu Scrub as Adult with Jump Dive", + "name": "Jabu Underwater Alcove as Adult with Jump Dive", + "type": "toggle", + "initial_active_state": false, + "img": "images/logic_jabu_alcove_jump_dive.png", + "codes": "logic_jabu_alcove_jump_dive" + }, + { + "name": "Jabu MQ Compass Chest with Boomerang", "type": "toggle", "initial_active_state": false, - "img": "images/logic_jabu_scrub_jump_dive.png", - "codes": "logic_jabu_scrub_jump_dive" + "img": "images/logic_jabu_mq_rang_jump.png", + "codes": "logic_jabu_mq_rang_jump" }, { "name": "Jabu MQ Song of Time Block GS with Boomerang", @@ -363,6 +382,20 @@ "img": "images/logic_shadow_mq_huge_pit.png", "codes": "logic_shadow_mq_huge_pit" }, + { + "name": "Shadow Temple MQ Windy Walkway Reverse without Hover Boots", + "type": "toggle", + "initial_active_state": false, + "img": "images/logic_shadow_mq_windy_walkway.png", + "codes": "logic_shadow_mq_windy_walkway" + }, + { + "name": "Shadow Temple MQ After Wind Gold Skulltula with Nothing", + "type": "toggle", + "initial_active_state": false, + "img": "images/logic_shadow_mq_after_wind_gs.png", + "codes": "logic_shadow_mq_after_wind_gs" + }, { "name": "Backflip over Mido as Adult", "type": "toggle", @@ -587,6 +620,13 @@ "img": "images/logic_shadow_statue.png", "codes": "logic_shadow_statue" }, + { + "name": "Shadow Temple Bongo Bongo with Nothing", + "type": "toggle", + "initial_active_state": false, + "img": "images/logic_shadow_bongo.png", + "codes": "logic_shadow_bongo" + }, { "name": "Stop Link the Goron with Din's Fire", "type": "toggle", @@ -861,18 +901,25 @@ "codes": "logic_dc_slingshot_skip" }, { - "name": "Dodongo's Cavern MQ Light the Eyes with Strength", + "name": "Dodongo's Cavern MQ Light the Eyes with Strength as Adult", + "type": "toggle", + "initial_active_state": false, + "img": "images/logic_dc_mq_eyes_adult.png", + "codes": "logic_dc_mq_eyes_adult" + }, + { + "name": "Dodongo's Cavern MQ Smash the Boss Lobby Floor", "type": "toggle", "initial_active_state": false, - "img": "images/logic_dc_mq_eyes.png", - "codes": "logic_dc_mq_eyes" + "img": "images/logic_dc_mq_hammer_floor.png", + "codes": "logic_dc_mq_hammer_floor" }, { - "name": "Dodongo's Cavern MQ Back Areas as Child without Explosives", + "name": "Dodongo's Cavern MQ Light the Eyes with Strength as Child", "type": "toggle", "initial_active_state": false, - "img": "images/logic_dc_mq_child_back.png", - "codes": "logic_dc_mq_child_back" + "img": "images/logic_dc_mq_eyes_child.png", + "codes": "logic_dc_mq_eyes_child" }, { "name": "Rolling Goron (Hot Rodder Goron) as Child with Strength", @@ -1001,32 +1048,46 @@ "codes": "logic_lens_jabu_mq" }, { - "name": "Shadow Temple MQ before Invisible Moving Platform without Lens of Truth", + "name": "Shadow Temple MQ Stationary Objects without Lens of Truth", "type": "toggle", "initial_active_state": false, "img": "images/logic_lens_shadow_mq.png", "codes": "logic_lens_shadow_mq" }, { - "name": "Shadow Temple MQ beyond Invisible Moving Platform without Lens of Truth", + "name": "Shadow Temple MQ Invisible Moving Platform without Lens of Truth", + "type": "toggle", + "initial_active_state": false, + "img": "images/logic_lens_shadow_mq_platform.png", + "codes": "logic_lens_shadow_mq_platform" + }, + { + "name": "Shadow Temple MQ Invisible Blades Silver Rupees without Lens of Truth", + "type": "toggle", + "initial_active_state": false, + "img": "images/logic_lens_shadow_mq_invisible_blades.png", + "codes": "logic_lens_shadow_mq_invisible_blades" + }, + { + "name": "Shadow Temple MQ 2nd Dead Hand without Lens of Truth", "type": "toggle", "initial_active_state": false, - "img": "images/logic_lens_shadow_mq_back.png", - "codes": "logic_lens_shadow_mq_back" + "img": "images/logic_lens_shadow_mq_dead_hand.png", + "codes": "logic_lens_shadow_mq_dead_hand" }, { - "name": "Shadow Temple before Invisible Moving Platform without Lens of Truth", + "name": "Shadow Temple Stationary Objects without Lens of Truth", "type": "toggle", "initial_active_state": false, "img": "images/logic_lens_shadow.png", "codes": "logic_lens_shadow" }, { - "name": "Shadow Temple beyond Invisible Moving Platform without Lens of Truth", + "name": "Shadow Temple Invisible Moving Platform without Lens of Truth", "type": "toggle", "initial_active_state": false, - "img": "images/logic_lens_shadow_back.png", - "codes": "logic_lens_shadow_back" + "img": "images/logic_lens_shadow_platform.png", + "codes": "logic_lens_shadow_platform" }, { "name": "Spirit Temple MQ without Lens of Truth", diff --git a/ootrando_overworldmap_hamsda/layouts/dungeon_grids.json b/ootrando_overworldmap_hamsda/layouts/dungeon_grids.json index f166250e..57463c67 100644 --- a/ootrando_overworldmap_hamsda/layouts/dungeon_grids.json +++ b/ootrando_overworldmap_hamsda/layouts/dungeon_grids.json @@ -65,14 +65,14 @@ "content": [ { "type": "item", - "item": "forest_label", + "item": "forest_shortcuts", "canvas_depth": 1, "width": 32, "height": 12 }, { "type": "item", - "item": "deku_label", + "item": "deku_shortcuts", "canvas_depth": 1, "canvas_left": 0, "canvas_top": 20, @@ -89,14 +89,14 @@ "content": [ { "type": "item", - "item": "fire_label", + "item": "fire_shortcuts", "canvas_depth": 1, "width": 32, "height": 12 }, { "type": "item", - "item": "dodongo_label", + "item": "dodongo_shortcuts", "canvas_depth": 1, "canvas_left": 0, "canvas_top": 20, @@ -120,7 +120,7 @@ }, { "type": "item", - "item": "jabu_label", + "item": "jabu_shortcuts", "canvas_depth": 1, "canvas_left": 0, "canvas_top": 20, @@ -137,7 +137,7 @@ "content": [ { "type": "item", - "item": "spirit_label", + "item": "spirit_shortcuts", "canvas_depth": 1, "width": 32, "height": 12 @@ -161,7 +161,7 @@ "content": [ { "type": "item", - "item": "shadow_label", + "item": "shadow_shortcuts", "canvas_depth": 1, "width": 32, "height": 12 @@ -327,7 +327,7 @@ "content": [ { "type": "item", - "item": "forest_label", + "item": "forest_shortcuts", "canvas_depth": 1, "width": 32, "height": 12 @@ -342,7 +342,7 @@ "content": [ { "type": "item", - "item": "fire_label", + "item": "fire_shortcuts", "canvas_depth": 1, "width": 32, "height": 12 @@ -381,7 +381,7 @@ "content": [ { "type": "item", - "item": "spirit_label", + "item": "spirit_shortcuts", "canvas_depth": 1, "width": 32, "height": 12 @@ -405,7 +405,7 @@ "content": [ { "type": "item", - "item": "shadow_label", + "item": "shadow_shortcuts", "canvas_depth": 1, "width": 32, "height": 12 @@ -453,7 +453,7 @@ "content": [ { "type": "item", - "item": "deku_label", + "item": "deku_shortcuts", "canvas_depth": 1, "width": 32, "height": 12 @@ -468,7 +468,7 @@ "content": [ { "type": "item", - "item": "dodongo_label", + "item": "dodongo_shortcuts", "canvas_depth": 1, "width": 32, "height": 12 @@ -483,7 +483,7 @@ "content": [ { "type": "item", - "item": "jabu_label", + "item": "jabu_shortcuts", "canvas_depth": 1, "width": 32, "height": 12 @@ -518,7 +518,7 @@ }, { "type": "item", - "item": "forest_label", + "item": "forest_shortcuts", "canvas_depth": 1, "canvas_left": 0, "canvas_top": 34, @@ -542,7 +542,7 @@ }, { "type": "item", - "item": "fire_label", + "item": "fire_shortcuts", "canvas_depth": 1, "canvas_left": 0, "canvas_top": 34, @@ -590,7 +590,7 @@ }, { "type": "item", - "item": "spirit_label", + "item": "spirit_shortcuts", "canvas_depth": 1, "canvas_left": 0, "canvas_top": 34, @@ -614,7 +614,7 @@ }, { "type": "item", - "item": "shadow_label", + "item": "shadow_shortcuts", "canvas_depth": 1, "canvas_left": 0, "canvas_top": 34, @@ -670,7 +670,7 @@ }, { "type": "item", - "item": "deku_label", + "item": "deku_shortcuts", "canvas_depth": 1, "canvas_left": 0, "canvas_top": 34, @@ -694,7 +694,7 @@ }, { "type": "item", - "item": "dodongo_label", + "item": "dodongo_shortcuts", "canvas_depth": 1, "canvas_left": 0, "canvas_top": 34, @@ -718,7 +718,7 @@ }, { "type": "item", - "item": "jabu_label", + "item": "jabu_shortcuts", "canvas_depth": 1, "canvas_left": 0, "canvas_top": 34, diff --git a/ootrando_overworldmap_hamsda/layouts/dungeon_grids_keysanity.json b/ootrando_overworldmap_hamsda/layouts/dungeon_grids_keysanity.json index f1a2e918..d078f43a 100644 --- a/ootrando_overworldmap_hamsda/layouts/dungeon_grids_keysanity.json +++ b/ootrando_overworldmap_hamsda/layouts/dungeon_grids_keysanity.json @@ -65,7 +65,7 @@ "content": [ { "type": "item", - "item": "forest_label", + "item": "forest_shortcuts", "canvas_depth": 1, "width": 32, "height": 12 @@ -98,7 +98,7 @@ "content": [ { "type": "item", - "item": "fire_label", + "item": "fire_shortcuts", "canvas_depth": 1, "width": 32, "height": 12 @@ -164,7 +164,7 @@ "content": [ { "type": "item", - "item": "spirit_label", + "item": "spirit_shortcuts", "canvas_depth": 1, "width": 32, "height": 12 @@ -197,7 +197,7 @@ "content": [ { "type": "item", - "item": "shadow_label", + "item": "shadow_shortcuts", "canvas_depth": 1, "width": 32, "height": 12 @@ -347,21 +347,21 @@ "content": [ { "type": "item", - "item": "deku_label", + "item": "deku_shortcuts", "margin": "1,2", "width": 32, "height": 12 }, { "type": "item", - "item": "dodongo_label", + "item": "dodongo_shortcuts", "margin": "1,2", "width": 32, "height": 12 }, { "type": "item", - "item": "jabu_label", + "item": "jabu_shortcuts", "margin": "1,2", "width": 32, "height": 12 @@ -490,7 +490,7 @@ "content": [ { "type": "item", - "item": "forest_label", + "item": "forest_shortcuts", "canvas_depth": 1, "width": 32, "height": 12 @@ -523,7 +523,7 @@ "content": [ { "type": "item", - "item": "fire_label", + "item": "fire_shortcuts", "canvas_depth": 1, "width": 32, "height": 12 @@ -589,7 +589,7 @@ "content": [ { "type": "item", - "item": "spirit_label", + "item": "spirit_shortcuts", "canvas_depth": 1, "width": 32, "height": 12 @@ -622,7 +622,7 @@ "content": [ { "type": "item", - "item": "shadow_label", + "item": "shadow_shortcuts", "canvas_depth": 1, "width": 32, "height": 12 @@ -670,7 +670,7 @@ "content": [ { "type": "item", - "item": "deku_label", + "item": "deku_shortcuts", "canvas_depth": 1, "width": 32, "height": 12 @@ -685,7 +685,7 @@ "content": [ { "type": "item", - "item": "dodongo_label", + "item": "dodongo_shortcuts", "canvas_depth": 1, "width": 32, "height": 12 @@ -700,7 +700,7 @@ "content": [ { "type": "item", - "item": "jabu_label", + "item": "jabu_shortcuts", "canvas_depth": 1, "width": 32, "height": 12 diff --git a/ootrando_overworldmap_hamsda/layouts/layouts.json b/ootrando_overworldmap_hamsda/layouts/layouts.json index b4b424e3..ca9822fd 100644 --- a/ootrando_overworldmap_hamsda/layouts/layouts.json +++ b/ootrando_overworldmap_hamsda/layouts/layouts.json @@ -1,5 +1,5 @@ { - "tracker_right_map": { + "tracker_very_tall": { "type": "container", "background": "#212121", "content": { @@ -116,7 +116,7 @@ ] } }, - "tracker_top_map": { + "tracker_wide_with_scrollable_pins": { "type": "container", "background": "#212121", "content": { @@ -125,89 +125,96 @@ "content": [ { "type": "dock", - "dock": "bottom", + "dock": "left", + "margin": "0,0,3,0", + "content": [ + { + "type": "group", + "header": "Items", + "dock": "top", + "header_content": { + "type": "button_popup", + "style": "settings", + "popup_background": "#FF212121", + "layout": "options_popup" + }, + "content": { + "type": "layout", + "key": "item_grid_wide" + } + }, + { + "type": "group", + "header": "Counters", + "dock": "top", + "content": { + "type": "layout", + "key": "counters_wide" + } + }, + { + "type": "group", + "header": "Presets", + "dock": "top", + "content": { + "type": "item", + "item": "presets", + "h_alignment": "left", + "v_alignment": "top", + "margin": "5", + "width": 32, + "height": 32 + } + } + ] + }, + { + "type": "dock", "content": [ { - "type": "dock", + "type": "group", + "header": "Pinned Locations", "dock": "left", - "margin": "0,0,3,0", + "width": 200, "content": [ { - "type": "group", - "header": "Items", - "dock": "top", - "header_content": { - "type": "button_popup", - "style": "settings", - "popup_background": "#FF212121", - "layout": "options_popup" - }, + "type": "scroll", + "horizontal_scrollbar_visibility": "disabled", "content": { - "type": "layout", - "key": "item_grid_wide" + "type": "recentpins", + "style": "wrap", + "h_alignment": "stretch", + "v_alignment": "stretch", + "orientation": "vertical", + "compact": true } - }, + } + ] + }, + { + "type": "tabbed", + "tabs": [ { - "type": "group", - "header": "Counters", - "dock": "top", + "title": "Child", + "icon": "images/sword1.png", "content": { - "type": "layout", - "key": "counters_wide" + "type": "map", + "maps": [ + "child" + ] } }, { - "type": "group", - "header": "Presets", - "dock": "top", + "title": "Adult", + "icon": "images/sword2.png", "content": { - "type": "item", - "item": "presets", - "h_alignment": "left", - "v_alignment": "top", - "margin": "5", - "width": 32, - "height": 32 + "type": "map", + "maps": [ + "adult" + ] } } ] - }, - { - "type": "group", - "header": "Pinned Locations", - "content": { - "type": "recentpins", - "style": "wrap", - "h_alignment": "stretch", - "v_alignment": "stretch", - "orientation": "horizontal", - "compact": true - } - } - ] - }, - { - "type": "tabbed", - "tabs": [ - { - "title": "Child", - "icon": "images/sword1.png", - "content": { - "type": "map", - "maps": [ - "child" - ] - } - }, - { - "title": "Adult", - "icon": "images/sword2.png", - "content": { - "type": "map", - "maps": [ - "adult" - ] - } } ] } diff --git a/ootrando_overworldmap_hamsda/layouts/layouts_entrance.json b/ootrando_overworldmap_hamsda/layouts/layouts_entrance.json index 03abf7f0..3e4c2209 100644 --- a/ootrando_overworldmap_hamsda/layouts/layouts_entrance.json +++ b/ootrando_overworldmap_hamsda/layouts/layouts_entrance.json @@ -1,5 +1,5 @@ { - "tracker_right_map": { + "tracker_very_tall": { "type": "container", "background": "#212121", "content": { @@ -116,7 +116,7 @@ ] } }, - "tracker_top_map": { + "tracker_wide_with_scrollable_pins": { "type": "container", "background": "#212121", "content": { @@ -125,89 +125,96 @@ "content": [ { "type": "dock", - "dock": "bottom", + "dock": "left", + "margin": "0,0,3,0", + "content": [ + { + "type": "group", + "header": "Items", + "dock": "top", + "header_content": { + "type": "button_popup", + "style": "settings", + "popup_background": "#FF212121", + "layout": "options_popup" + }, + "content": { + "type": "layout", + "key": "item_grid_wide" + } + }, + { + "type": "group", + "header": "Counters", + "dock": "top", + "content": { + "type": "layout", + "key": "counters_wide" + } + }, + { + "type": "group", + "header": "Presets", + "dock": "top", + "content": { + "type": "item", + "item": "presets", + "h_alignment": "left", + "v_alignment": "top", + "margin": "5", + "width": 32, + "height": 32 + } + } + ] + }, + { + "type": "dock", "content": [ { - "type": "dock", + "type": "group", + "header": "Pinned Locations", "dock": "left", - "margin": "0,0,3,0", + "width": 200, "content": [ { - "type": "group", - "header": "Items", - "dock": "top", - "header_content": { - "type": "button_popup", - "style": "settings", - "popup_background": "#FF212121", - "layout": "options_popup" - }, + "type": "scroll", + "horizontal_scrollbar_visibility": "disabled", "content": { - "type": "layout", - "key": "item_grid_wide" + "type": "recentpins", + "style": "wrap", + "h_alignment": "stretch", + "v_alignment": "stretch", + "orientation": "vertical", + "compact": true } - }, + } + ] + }, + { + "type": "tabbed", + "tabs": [ { - "type": "group", - "header": "Counters", - "dock": "top", + "title": "Locations", + "icon": "images/chest_brown_closed.png", "content": { - "type": "layout", - "key": "counters_wide" + "type": "map", + "maps": [ + "locations" + ] } }, { - "type": "group", - "header": "Presets", - "dock": "top", + "title": "Exits", + "icon": "images/door.png", "content": { - "type": "item", - "item": "presets", - "h_alignment": "left", - "v_alignment": "top", - "margin": "5", - "width": 32, - "height": 32 + "type": "map", + "maps": [ + "exits" + ] } } ] - }, - { - "type": "group", - "header": "Pinned Locations", - "content": { - "type": "recentpins", - "style": "wrap", - "h_alignment": "stretch", - "v_alignment": "stretch", - "orientation": "horizontal", - "compact": true - } - } - ] - }, - { - "type": "tabbed", - "tabs": [ - { - "title": "Locations", - "icon": "images/chest_brown_closed.png", - "content": { - "type": "map", - "maps": [ - "locations" - ] - } - }, - { - "title": "Exits", - "icon": "images/door.png", - "content": { - "type": "map", - "maps": [ - "exits" - ] - } } ] } diff --git a/ootrando_overworldmap_hamsda/layouts/options.json b/ootrando_overworldmap_hamsda/layouts/options.json index 2aa05a96..a6a736d4 100644 --- a/ootrando_overworldmap_hamsda/layouts/options.json +++ b/ootrando_overworldmap_hamsda/layouts/options.json @@ -109,7 +109,7 @@ }, { "type": "item", - "item": "setting_entrance_spawn", + "item": "setting_entrance_spawn_off", "width": 200, "height": 16 }, @@ -185,6 +185,12 @@ "item": "setting_shuffle_merchants", "width": 200, "height": 16 + }, + { + "type": "item", + "item": "setting_shuffle_frogs", + "width": 200, + "height": 16 } ] }, @@ -236,6 +242,12 @@ "width": 200, "height": 16 }, + { + "type": "item", + "item": "setting_plant_beans", + "width": 200, + "height": 16 + }, { "type": "item", "item": "setting_hints", @@ -248,6 +260,12 @@ "width": 200, "height": 16 }, + { + "type": "item", + "item": "setting_blue_fire_arrows", + "width": 200, + "height": 16 + }, { "type": "item", "item": "setting_skulltulas_sun", @@ -471,6 +489,12 @@ "width": 200, "height": 16 }, + { + "type": "item", + "item": "logic_spirit_platform_hookshot", + "width": 200, + "height": 16 + }, { "type": "item", "item": "logic_spirit_mq_sun_block_gs", @@ -479,7 +503,13 @@ }, { "type": "item", - "item": "logic_jabu_scrub_jump_dive", + "item": "logic_jabu_alcove_jump_dive", + "width": 200, + "height": 16 + }, + { + "type": "item", + "item": "logic_jabu_mq_rang_jump", "width": 200, "height": 16 }, @@ -573,6 +603,18 @@ "width": 200, "height": 16 }, + { + "type": "item", + "item": "logic_shadow_mq_windy_walkway", + "width": 200, + "height": 16 + }, + { + "type": "item", + "item": "logic_shadow_mq_after_wind_gs", + "width": 200, + "height": 16 + }, { "type": "item", "item": "logic_mido_backflip", @@ -765,6 +807,12 @@ "width": 200, "height": 16 }, + { + "type": "item", + "item": "logic_shadow_bongo", + "width": 200, + "height": 16 + }, { "type": "item", "item": "logic_link_goron_dins", @@ -1001,13 +1049,19 @@ }, { "type": "item", - "item": "logic_dc_mq_eyes", + "item": "logic_dc_mq_eyes_adult", "width": 200, "height": 16 }, { "type": "item", - "item": "logic_dc_mq_child_back", + "item": "logic_dc_mq_hammer_floor", + "width": 200, + "height": 16 + }, + { + "type": "item", + "item": "logic_dc_mq_eyes_child", "width": 200, "height": 16 }, @@ -1127,7 +1181,19 @@ }, { "type": "item", - "item": "logic_lens_shadow_mq_back", + "item": "logic_lens_shadow_mq_platform", + "width": 200, + "height": 16 + }, + { + "type": "item", + "item": "logic_lens_shadow_mq_invisible_blades", + "width": 200, + "height": 16 + }, + { + "type": "item", + "item": "logic_lens_shadow_mq_dead_hand", "width": 200, "height": 16 }, @@ -1139,7 +1205,7 @@ }, { "type": "item", - "item": "logic_lens_shadow_back", + "item": "logic_lens_shadow_platform", "width": 200, "height": 16 }, diff --git a/ootrando_overworldmap_hamsda/layouts/tracker.json b/ootrando_overworldmap_hamsda/layouts/tracker.json index a3a0e562..fbc449cc 100644 --- a/ootrando_overworldmap_hamsda/layouts/tracker.json +++ b/ootrando_overworldmap_hamsda/layouts/tracker.json @@ -1,10 +1,10 @@ { "tracker_default": { "type": "layout", - "key": "tracker_right_map" + "key": "tracker_very_tall" }, "tracker_horizontal": { "type": "layout", - "key": "tracker_right_map" + "key": "tracker_wide_with_scrollable_pins" } } \ No newline at end of file diff --git a/ootrando_overworldmap_hamsda/locations/dungeons.json b/ootrando_overworldmap_hamsda/locations/dungeons.json index 0af02006..6d3ca4af 100644 --- a/ootrando_overworldmap_hamsda/locations/dungeons.json +++ b/ootrando_overworldmap_hamsda/locations/dungeons.json @@ -7,6 +7,43 @@ "deku_reg,$has_age|child,sword1,shield1" ], "sections": [ + { + "name": "Slingshot Room", + "access_rules": [ + "shield1" + ], + "visibility_rules": [ + "hidden_region" + ], + "item_count": 1 + }, + { + "name": "Basement Backroom", + "access_rules": [ + "sticks,sling", + "dinsfire,magic,sling", + "[logic_deku_b1_skip]", + "deku_tree_shortcuts" + ], + "visibility_rules": [ + "hidden_region" + ], + "item_count": 1 + }, + { + "name": "Boss Room", + "access_rules": [ + "sticks,[logic_deku_b1_skip]", + "sticks,sling", + "dinsfire,magic,[logic_deku_b1_skip]", + "dinsfire,magic,sling", + "deku_tree_shortcuts" + ], + "visibility_rules": [ + "hidden_region" + ], + "item_count": 1 + }, { "name": "Map Chest", "short_name": "Map", @@ -17,7 +54,7 @@ "name": "Slingshot Room Chests", "short_name": "Slingshot", "access_rules": [ - "shield1" + "@Deku Tree/Slingshot Room" ], "item_count": 2 }, @@ -45,7 +82,8 @@ "short_name": "Basement", "access_rules": [ "$can_child_attack", - "nuts" + "nuts", + "deku_tree_shortcuts" ], "item_count": 1 }, @@ -84,12 +122,10 @@ "name": "GS Basement Back Room", "short_name": "Back Room", "access_rules": [ - "$has_explosives,boomerang,sticks,sling", - "$has_explosives,boomerang,sticks,[logic_deku_b1_skip]", - "$has_explosives,boomerang,dinsfire,magic,sling", - "$has_explosives,boomerang,dinsfire,magic,[logic_deku_b1_skip]", - "{$has_explosives,sticks}", - "{$has_explosives,dinsfire,magic}" + "@Deku Tree/Basement Backroom,$has_explosives,sticks,boomerang", + "@Deku Tree/Basement Backroom,$has_explosives,dinsfire,magic,boomerang", + "{@Deku Tree/Basement Backroom,$has_explosives,sticks}", + "{@Deku Tree/Basement Backroom,$has_explosives,dinsfire,magic}" ], "visibility_rules": [ "setting_tokens_dungeons" @@ -102,10 +138,10 @@ { "name": "Queen Gohma", "access_rules": [ - "shield1,sticks,sling", - "shield1,sticks,nuts,[logic_deku_b1_skip]", - "shield1,sword1,dinsfire,magic,sling", - "shield1,sword1,dinsfire,magic,nuts,[logic_deku_b1_skip]" + "@Deku Tree/Boss Room,shield1,sword1", + "@Deku Tree/Boss Room,shield1,sticks", + "@Deku Tree/Boss Room,deku_tree_shortcuts,sword1", + "@Deku Tree/Boss Room,deku_tree_shortcuts,sticks" ], "hosted_item": "deku", "chest_unopened_img": "images/HC.png", @@ -153,7 +189,10 @@ //vvv reverse vvv "[logic_deku_b1_skip],sword1", "[logic_deku_b1_skip],$has_projectile|child", - "[logic_deku_b1_skip],sticks,nuts" + "[logic_deku_b1_skip],sticks,nuts", + "deku_tree_shortcuts,sword1", + "deku_tree_shortcuts,$has_projectile|child", + "deku_tree_shortcuts,sticks,nuts" ], "visibility_rules": [ "hidden_region" @@ -170,7 +209,10 @@ //vvv reverse vvv "[logic_deku_b1_skip],sword1", "[logic_deku_b1_skip],$has_projectile|child", - "[logic_deku_b1_skip],sticks,nuts" + "[logic_deku_b1_skip],sticks,nuts", + "deku_tree_shortcuts,sword1", + "deku_tree_shortcuts,$has_projectile|child", + "deku_tree_shortcuts,sticks,nuts" ], "visibility_rules": [ "hidden_region" @@ -187,7 +229,8 @@ "@Deku Tree MQ/Basement Water Room Back,dinsfire,magic,$has_projectile|child", //^^^ forward ^^^ //vvv reverse vvv - "[logic_deku_b1_skip]" + "[logic_deku_b1_skip]", + "deku_tree_shortcuts" ], "visibility_rules": [ "hidden_region" @@ -200,7 +243,8 @@ "@Deku Tree MQ/Basement Back Room", //^^^ forward ^^^ //vvv reverse vvv - "[logic_deku_b1_skip]" + "[logic_deku_b1_skip]", + "deku_tree_shortcuts" ], "visibility_rules": [ "hidden_region" @@ -347,7 +391,9 @@ "name": "Queen Gohma", "access_rules": [ "@Deku Tree MQ/Basement Ledge,sticks,shield1", - "@Deku Tree MQ/Basement Ledge,dinsfire,magic,sword1,shield1" + "@Deku Tree MQ/Basement Ledge,dinsfire,magic,sword1,shield1", + "@Deku Tree MQ/Basement Ledge,deku_tree_shortcuts,sticks", + "@Deku Tree MQ/Basement Ledge,deku_tree_shortcuts,sword1" ], "hosted_item": "deku", "chest_unopened_img": "images/HC.png", @@ -380,7 +426,8 @@ "name": "Lobby", "access_rules": [ "$can_blast", - "lift1" + "lift1", + "dodongos_cavern_shortcuts" ], "visibility_rules": [ "hidden_region" @@ -391,10 +438,14 @@ "name": "Staircase Room", "access_rules": [ "@Dodongos Cavern/Lobby,$has_age|adult", - "@Dodongos Cavern/Lobby,$has_age|child,sticks", - "@Dodongos Cavern/Lobby,$has_age|child,dinsfire,magic,sling", - "@Dodongos Cavern/Lobby,$has_age|child,dinsfire,magic,$has_explosives", - "@Dodongos Cavern/Lobby,$has_age|child,dinsfire,magic,sword1" + "@Dodongos Cavern/Lobby,$has_age|child,$has_explosives,sticks", + "@Dodongos Cavern/Lobby,$has_age|child,$has_explosives,dinsfire,magic,sling", + "@Dodongos Cavern/Lobby,$has_age|child,$has_explosives,dinsfire,magic,bombs", + "@Dodongos Cavern/Lobby,$has_age|child,$has_explosives,dinsfire,magic,sword1", + "@Dodongos Cavern/Lobby,$has_age|child,lift1,sticks", + "@Dodongos Cavern/Lobby,$has_age|child,lift1,dinsfire,magic,sling", + "@Dodongos Cavern/Lobby,$has_age|child,lift1,dinsfire,magic,bombs", + "@Dodongos Cavern/Lobby,$has_age|child,lift1,dinsfire,magic,sword1" ], "visibility_rules": [ "hidden_region" @@ -423,15 +474,18 @@ { "name": "Far Bridge", "access_rules": [ - "@Dodongos Cavern/Climb,$has_age|child,sling,$has_explosives", - "@Dodongos Cavern/Climb,$has_age|child,sling,lift1", - "@Dodongos Cavern/Climb,$has_age|child,[logic_dc_slingshot_skip],lift1,sticks", - "@Dodongos Cavern/Climb,$has_age|child,[logic_dc_slingshot_skip],$has_explosives", - "@Dodongos Cavern/Climb,$has_age|child,[logic_dc_slingshot_skip],lift1,sword1", - "@Dodongos Cavern/Climb,$has_age|adult,bow", "@Dodongos Cavern/Climb,$has_age|adult,hoverboots", "@Dodongos Cavern/Climb,$has_age|adult,longshot", - "@Dodongos Cavern/Climb,$has_age|adult,[logic_dc_jump]" + "@Dodongos Cavern/Climb,$has_age|adult,[logic_dc_jump]", + "@Dodongos Cavern/Climb,$can_blast,$has_age|child,sling", + "@Dodongos Cavern/Climb,$can_blast,$has_age|child,[logic_dc_slingshot_skip],sticks", + "@Dodongos Cavern/Climb,$can_blast,$has_age|child,[logic_dc_slingshot_skip],bombs", + "@Dodongos Cavern/Climb,$can_blast,$has_age|child,[logic_dc_slingshot_skip],sword1", + "@Dodongos Cavern/Climb,lift1,$has_age|child,sling", + "@Dodongos Cavern/Climb,lift1,$has_age|child,[logic_dc_slingshot_skip],sticks", + "@Dodongos Cavern/Climb,lift1,$has_age|child,[logic_dc_slingshot_skip],bombs", + "@Dodongos Cavern/Climb,lift1,$has_age|child,[logic_dc_slingshot_skip],sword1", + "@Dodongos Cavern/Climb,$has_age|adult,bow" ], "visibility_rules": [ "hidden_region" @@ -441,7 +495,8 @@ { "name": "Boss Area", "access_rules": [ - "@Dodongos Cavern/Far Bridge,$has_explosives" + "@Dodongos Cavern/Far Bridge,$has_explosives", + "@Dodongos Cavern/Lobby,dodongos_cavern_shortcuts" ], "visibility_rules": [ "hidden_region" @@ -454,10 +509,10 @@ "access_rules": [ "@Dodongos Cavern/Lobby,$has_explosives", "@Dodongos Cavern/Lobby,$has_age|adult", - "@Dodongos Cavern/Lobby,$has_age|child,sling", - "@Dodongos Cavern/Lobby,$has_age|child,boomerang", - "@Dodongos Cavern/Lobby,$has_age|child,sticks", - "@Dodongos Cavern/Lobby,$has_age|child,sword1" + "@Dodongos Cavern/Lobby,$has_age|child,lift1,sling", + "@Dodongos Cavern/Lobby,$has_age|child,lift1,boomerang", + "@Dodongos Cavern/Lobby,$has_age|child,lift1,sticks", + "@Dodongos Cavern/Lobby,$has_age|child,lift1,sword1" ], "visibility_rules": [ "setting_tokens_dungeons" @@ -473,7 +528,8 @@ "@Dodongos Cavern/Lobby,$has_age|adult,ocarina,scarecrow,hookshot", "@Dodongos Cavern/Lobby,$has_age|adult,longshot", "@Dodongos Cavern/Lobby,[logic_dc_scarecrow_gs],$has_age|adult", - "@Dodongos Cavern/Lobby,[logic_dc_scarecrow_gs],$can_child_attack" + "@Dodongos Cavern/Lobby,[logic_dc_scarecrow_gs],$can_child_attack,$can_blast", + "@Dodongos Cavern/Lobby,[logic_dc_scarecrow_gs],$can_child_attack,lift1" ], "visibility_rules": [ "setting_tokens_dungeons" @@ -487,11 +543,16 @@ "name": "Deku Scrub Side Room Near Dodongos", "short_name": "East Side", "access_rules": [ - "@Dodongos Cavern/Lobby,$has_age|adult", - "@Dodongos Cavern/Lobby,$has_age|child,sling", - "@Dodongos Cavern/Lobby,$has_age|child,sticks", - "@Dodongos Cavern/Lobby,$has_age|child,$has_explosives", - "@Dodongos Cavern/Lobby,$has_age|child,sword1" + "@Dodongos Cavern/Lobby,$can_blast,$has_age|adult", + "@Dodongos Cavern/Lobby,$can_blast,$has_age|child,sling", + "@Dodongos Cavern/Lobby,$can_blast,$has_age|child,sticks", + "@Dodongos Cavern/Lobby,$can_blast,$has_age|child,bombs", + "@Dodongos Cavern/Lobby,$can_blast,$has_age|child,sword1", + "@Dodongos Cavern/Lobby,lift1,$has_age|adult", + "@Dodongos Cavern/Lobby,lift1,$has_age|child,sling", + "@Dodongos Cavern/Lobby,lift1,$has_age|child,sticks", + "@Dodongos Cavern/Lobby,lift1,$has_age|child,bombs", + "@Dodongos Cavern/Lobby,lift1,$has_age|child,sword1" ], "visibility_rules": [ "setting_scrub_shuffle_yes" @@ -504,7 +565,8 @@ "name": "Map Chest", "short_name": "Map", "access_rules": [ - "@Dodongos Cavern/Lobby" + "@Dodongos Cavern/Lobby,$can_blast", + "@Dodongos Cavern/Lobby,lift1" ], "chest_unopened_img": "images/chest_brown_map.png", "item_count": 1 @@ -526,7 +588,8 @@ "name": "Compass Chest", "short_name": "Compass", "access_rules": [ - "@Dodongos Cavern/Staircase Room" + "@Dodongos Cavern/Staircase Room,$can_blast", + "@Dodongos Cavern/Staircase Room,lift1" ], "chest_unopened_img": "images/chest_brown_compass.png", "item_count": 1 @@ -609,7 +672,7 @@ "name": "GS Back Room", "short_name": "Back Room", "access_rules": [ - "@Dodongos Cavern/Boss Area" + "@Dodongos Cavern/Boss Area,$can_blast" ], "visibility_rules": [ "setting_tokens_dungeons" @@ -678,7 +741,19 @@ "name": "Lobby", "access_rules": [ "$can_blast", - "lift1" + "lift1", + "dodongos_cavern_shortcuts" + ], + "visibility_rules": [ + "hidden_region" + ], + "item_count": 1 + }, + { + "name": "Elevator", + "access_rules": [ + "@Dodongos Cavern MQ/Lobby,$can_blast", + "@Dodongos Cavern MQ/Lobby,lift1" ], "visibility_rules": [ "hidden_region" @@ -689,8 +764,8 @@ "name": "Lower Right Side", "access_rules": [ "@Dodongos Cavern MQ/Lobby,$can_blast", - "@Dodongos Cavern MQ/Lobby,$has_age|child,sticks,$damage_single_instance_ohko", - "@Dodongos Cavern MQ/Lobby,dinsfire,magic,$damage_single_instance_ohko" + "@Dodongos Cavern MQ/Elevator,$has_age|child,sticks,lift1,$damage_single_instance_ohko", + "@Dodongos Cavern MQ/Elevator,dinsfire,magic,lift1,$damage_single_instance_ohko" ], "visibility_rules": [ "hidden_region" @@ -701,8 +776,8 @@ "name": "Bomb Bag Area", "access_rules": [ "@Dodongos Cavern MQ/Lobby,$has_age|adult", - "@Dodongos Cavern MQ/Lobby,$has_age|child,[logic_dc_mq_child_bombs],sword1,$damage_single_instance_ohko", - "@Dodongos Cavern MQ/Lobby,$has_age|child,[logic_dc_mq_child_bombs],sticks,$damage_single_instance_ohko", + "@Dodongos Cavern MQ/Elevator,$has_age|child,[logic_dc_mq_child_bombs],sword1,$damage_single_instance_ohko", + "@Dodongos Cavern MQ/Elevator,$has_age|child,[logic_dc_mq_child_bombs],sticks,$damage_single_instance_ohko", "@Dodongos Cavern MQ/Lower Right Side,$has_age|child,sling,$has_age|adult,bow", "@Dodongos Cavern MQ/Lower Right Side,$has_age|child,sling,lift1", "@Dodongos Cavern MQ/Lower Right Side,$has_age|child,sling,dinsfire,magic", @@ -716,15 +791,38 @@ { "name": "Boss Area", "access_rules": [ - "@Dodongos Cavern MQ/Lobby,$has_explosives", - "@Dodongos Cavern MQ/Lobby,[logic_dc_mq_eyes],lift1,$has_age|both,sticks", - "@Dodongos Cavern MQ/Lobby,[logic_dc_mq_eyes],lift1,$has_age|child,[logic_dc_mq_child_back],sticks", - "@Dodongos Cavern MQ/Lobby,[logic_dc_mq_eyes],lift1,$has_age|child,[logic_dc_mq_child_back],dinsfire,magic", - "@Dodongos Cavern MQ/Lobby,[logic_dc_mq_eyes],lift1,$has_age|adult,dinsfire,magic", - "@Dodongos Cavern MQ/Lobby,[logic_dc_mq_eyes],lift1,$has_age|adult,[logic_dc_jump]", - "@Dodongos Cavern MQ/Lobby,[logic_dc_mq_eyes],lift1,$has_age|adult,hammer", - "@Dodongos Cavern MQ/Lobby,[logic_dc_mq_eyes],lift1,$has_age|adult,hoverboots", - "@Dodongos Cavern MQ/Lobby,[logic_dc_mq_eyes],lift1,$has_age|adult,hookshot" + "@Dodongos Cavern MQ/Lobby,dodongos_cavern_shortcuts", + "@Dodongos Cavern MQ/Elevator,$has_explosives", + "@Dodongos Cavern MQ/Elevator,lift1,[logic_dc_mq_eyes_child],$has_age|child,sticks", + "@Dodongos Cavern MQ/Elevator,lift1,[logic_dc_mq_eyes_child],dinsfire,magic", + "@Dodongos Cavern MQ/Elevator,lift1,[logic_dc_mq_eyes_child],$has_age|adult,[logic_dc_jump]", + "@Dodongos Cavern MQ/Elevator,lift1,[logic_dc_mq_eyes_child],$has_age|adult,hammer", + "@Dodongos Cavern MQ/Elevator,lift1,[logic_dc_mq_eyes_child],$has_age|adult,hoverboots", + "@Dodongos Cavern MQ/Elevator,lift1,[logic_dc_mq_eyes_child],$has_age|adult,hookshot", + "@Dodongos Cavern MQ/Elevator,lift1,[logic_dc_mq_eyes_adult],$has_age|child,sticks", + "@Dodongos Cavern MQ/Elevator,lift1,[logic_dc_mq_eyes_adult],dinsfire,magic", + "@Dodongos Cavern MQ/Elevator,lift1,[logic_dc_mq_eyes_adult],$has_age|adult,[logic_dc_jump]", + "@Dodongos Cavern MQ/Elevator,lift1,[logic_dc_mq_eyes_adult],$has_age|adult,hammer", + "@Dodongos Cavern MQ/Elevator,lift1,[logic_dc_mq_eyes_adult],$has_age|adult,hoverboots", + "@Dodongos Cavern MQ/Elevator,lift1,[logic_dc_mq_eyes_adult],$has_age|adult,hookshot" + ], + "visibility_rules": [ + "hidden_region" + ], + "item_count": 1 + }, + { + "name": "Boss Room", + "access_rules": [ + "@Dodongos Cavern MQ/Boss Area,$has_age|adult", + "@Dodongos Cavern MQ/Boss Area,$has_explosives", + "@Dodongos Cavern MQ/Boss Area,dinsfire,magic", + "@Dodongos Cavern MQ/Boss Area,dodongos_cavern_shortcuts", + "@Dodongos Cavern MQ/Boss Area,sticks", + "@Dodongos Cavern MQ/Boss Area,nuts,sword1", + "@Dodongos Cavern MQ/Boss Area,nuts,sling", + "@Dodongos Cavern MQ/Boss Area,boomerang,sword1", + "@Dodongos Cavern MQ/Boss Area,boomerang,sling" ], "visibility_rules": [ "hidden_region" @@ -735,7 +833,8 @@ "name": "Map Chest", "short_name": "Map", "access_rules": [ - "@Dodongos Cavern MQ/Lobby" + "@Dodongos Cavern MQ/Lobby,$can_blast", + "@Dodongos Cavern MQ/Lobby,lift1" ], "chest_unopened_img": "images/chest_brown_map.png", "item_count": 1 @@ -752,24 +851,17 @@ "name": "GS Scrub Room", "short_name": "Scrub", "access_rules": [ - "@Dodongos Cavern MQ/Bomb Bag Area,$has_age|child,sling,boomerang,lift1", - "@Dodongos Cavern MQ/Bomb Bag Area,$has_age|child,sling,boomerang,dinsfire,magic", - "@Dodongos Cavern MQ/Bomb Bag Area,$has_age|child,sling,boomerang,$has_explosives", - "@Dodongos Cavern MQ/Bomb Bag Area,$has_age|child,[sling],sticks,boomerang,lift1", - "@Dodongos Cavern MQ/Bomb Bag Area,$has_age|child,[sling],sticks,boomerang,dinsfire,magic", - "@Dodongos Cavern MQ/Bomb Bag Area,$has_age|child,[sling],sticks,boomerang,$has_explosives", - "@Dodongos Cavern MQ/Bomb Bag Area,$has_age|child,[sling],sword1,boomerang,lift1", - "@Dodongos Cavern MQ/Bomb Bag Area,$has_age|child,[sling],sword1,boomerang,dinsfire,magic", - "@Dodongos Cavern MQ/Bomb Bag Area,$has_age|child,[sling],sword1,boomerang,$has_explosives", + "@Dodongos Cavern MQ/Bomb Bag Area,$has_age|both,boomerang,bow", + "@Dodongos Cavern MQ/Bomb Bag Area,$has_age|child,boomerang,lift1", + "@Dodongos Cavern MQ/Bomb Bag Area,$has_age|child,boomerang,dinsfire,magic", + "@Dodongos Cavern MQ/Bomb Bag Area,$has_age|child,boomerang,$has_explosives", "@Dodongos Cavern MQ/Bomb Bag Area,$has_age|adult,hookshot,bow", "@Dodongos Cavern MQ/Bomb Bag Area,$has_age|adult,hookshot,lift1", "@Dodongos Cavern MQ/Bomb Bag Area,$has_age|adult,hookshot,dinsfire,magic", "@Dodongos Cavern MQ/Bomb Bag Area,$has_age|adult,hookshot,$has_explosives", - "{@Dodongos Cavern MQ/Bomb Bag Area,$has_age|child,sling,lift1}", - "{@Dodongos Cavern MQ/Bomb Bag Area,$has_age|child,sling,dinsfire,magic}", - "{@Dodongos Cavern MQ/Bomb Bag Area,$has_age|child,sling,$has_bombchus}", - "{@Dodongos Cavern MQ/Bomb Bag Area,$has_age|child,sticks,$has_bombchus}", - "{@Dodongos Cavern MQ/Bomb Bag Area,$has_age|child,sword1,$has_bombchus}", + "{@Dodongos Cavern MQ/Bomb Bag Area,$has_age|child,lift1,sling}", + "{@Dodongos Cavern MQ/Bomb Bag Area,$has_age|child,dinsfire,magic,sling}", + "{@Dodongos Cavern MQ/Bomb Bag Area,$has_age|child,$has_bombchus}", "{@Dodongos Cavern MQ/Bomb Bag Area,$has_age|adult,bow}", "{@Dodongos Cavern MQ/Bomb Bag Area,$has_age|adult,$has_bombchus}" ], @@ -785,7 +877,8 @@ "name": "Deku Scrub Side Room Near Lower Lizalfos", "short_name": "East Side", "access_rules": [ - "@Dodongos Cavern MQ/Lower Right Side,$can_stun_deku" + "@Dodongos Cavern MQ/Lower Right Side,$can_blast,$can_stun_deku", + "@Dodongos Cavern MQ/Lower Right Side,lift1,$can_stun_deku" ], "visibility_rules": [ "setting_scrub_shuffle_yes" @@ -798,12 +891,12 @@ "name": "Torch Puzzle Room Chest", "short_name": "Platform", "access_rules": [ - "@Dodongos Cavern MQ/Lobby,$can_blast", - "@Dodongos Cavern MQ/Lobby,$has_age|child,sticks", - "@Dodongos Cavern MQ/Lobby,dinsfire,magic", - "@Dodongos Cavern MQ/Lobby,$has_age|adult,[logic_dc_jump]", - "@Dodongos Cavern MQ/Lobby,$has_age|adult,hoverboots", - "@Dodongos Cavern MQ/Lobby,$has_age|adult,hookshot" + "@Dodongos Cavern MQ/Elevator,$can_blast", + "@Dodongos Cavern MQ/Elevator,$has_age|child,sticks", + "@Dodongos Cavern MQ/Elevator,dinsfire,magic", + "@Dodongos Cavern MQ/Elevator,$has_age|adult,[logic_dc_jump]", + "@Dodongos Cavern MQ/Elevator,$has_age|adult,hoverboots", + "@Dodongos Cavern MQ/Elevator,$has_age|adult,hookshot" ], "item_count": 1 }, @@ -811,7 +904,7 @@ "name": "GS Lizalfos Room", "short_name": "Lizalfos", "access_rules": [ - "@Dodongos Cavern MQ/Lobby,$can_blast" + "@Dodongos Cavern MQ/Elevator,$can_blast" ], "visibility_rules": [ "setting_tokens_dungeons" @@ -824,9 +917,9 @@ "name": "Larvae Room Chest", "short_name": "Larvae", "access_rules": [ - "@Dodongos Cavern MQ/Lobby,$has_fire", - "@Dodongos Cavern MQ/Lobby,$has_age|child,sticks,$has_explosives", - "@Dodongos Cavern MQ/Lobby,$has_age|child,sticks,lift1" + "@Dodongos Cavern MQ/Elevator,$has_fire", + "@Dodongos Cavern MQ/Elevator,$has_age|child,sticks", + "@Dodongos Cavern MQ/Elevator,$has_age|child,dinsfire,magic" ], "item_count": 1 }, @@ -847,9 +940,9 @@ "name": "Compass Chest", "short_name": "Compass", "access_rules": [ - "@Dodongos Cavern MQ/Lobby,$has_age|adult", - "@Dodongos Cavern MQ/Lobby,$can_child_attack", - "@Dodongos Cavern MQ/Lobby,nuts" + "@Dodongos Cavern MQ/Elevator,$has_age|adult", + "@Dodongos Cavern MQ/Elevator,$can_child_attack", + "@Dodongos Cavern MQ/Elevator,nuts" ], "chest_unopened_img": "images/chest_brown_compass.png", "item_count": 1 @@ -858,7 +951,7 @@ "name": "Deku Scrub Staircase", "short_name": "Above Stairs", "access_rules": [ - "@Dodongos Cavern MQ/Lobby,$can_stun_deku" + "@Dodongos Cavern MQ/Elevator,$can_stun_deku" ], "visibility_rules": [ "setting_scrub_shuffle_yes" @@ -871,8 +964,8 @@ "name": "GS Song of Time Block Room", "short_name": "Song of Time", "access_rules": [ - "@Dodongos Cavern MQ/Lobby,ocarina,time,$can_child_attack", - "@Dodongos Cavern MQ/Lobby,ocarina,time,$has_age|adult", + "@Dodongos Cavern MQ/Elevator,ocarina,time,$can_child_attack", + "@Dodongos Cavern MQ/Elevator,ocarina,time,$has_age|adult", "{$hintable}" ], "visibility_rules": [ @@ -901,7 +994,17 @@ "name": "GS Back Area", "short_name": "Back Area", "access_rules": [ - "@Dodongos Cavern MQ/Boss Area" + "@Dodongos Cavern MQ/Boss Area,$has_age|adult", + "@Dodongos Cavern MQ/Boss Area,$has_age|child,$has_explosives", + "@Dodongos Cavern MQ/Boss Area,$has_age|child,boomerang", + "@Dodongos Cavern MQ/Boss Area,$has_age|child,dinsfire,magic", + "@Dodongos Cavern MQ/Boss Area,$has_age|child,dodongos_cavern_shortcuts,$can_child_attack", + "@Dodongos Cavern MQ/Boss Area,$has_age|child,dodongos_cavern_shortcuts,lift1", + "@Dodongos Cavern MQ/Boss Area,$has_age|child,sticks", + "@Dodongos Cavern MQ/Boss Area,$has_age|child,nuts,sword1", + "@Dodongos Cavern MQ/Boss Area,$has_age|child,nuts,sling", + "@Dodongos Cavern MQ/Boss Area,$has_age|child,boomerang,sword1", + "@Dodongos Cavern MQ/Boss Area,$has_age|child,boomerang,sling" ], "visibility_rules": [ "setting_tokens_dungeons" @@ -922,21 +1025,29 @@ "name": "Boss Room Chest", "short_name": "Boss Room", "access_rules": [ - "@Dodongos Cavern MQ/Boss Area" + "@Dodongos Cavern MQ/Boss Room" ], "item_count": 1 }, { "name": "King Dodongo", "access_rules": [ - "@Dodongos Cavern MQ/Boss Area,lift1,$has_age|child,sticks", - "@Dodongos Cavern MQ/Boss Area,lift1,$has_age|child,sword1", - "@Dodongos Cavern MQ/Boss Area,lift1,$has_age|adult", - "@Dodongos Cavern MQ/Boss Area,bombs,$has_age|child,sticks", - "@Dodongos Cavern MQ/Boss Area,bombs,$has_age|child,sword1", - "@Dodongos Cavern MQ/Boss Area,bombs,$has_age|adult", - "@Dodongos Cavern MQ/Boss Area,bombchu,[bombs],$has_age|adult,shield2", - "@Dodongos Cavern MQ/Boss Area,bombchu,[bombs],$has_age|adult,shield3" + "@Dodongos Cavern MQ/Boss Room,$has_age|adult,hammer,[logic_dc_mq_hammer_floor],bombs", + "@Dodongos Cavern MQ/Boss Room,$has_age|adult,hammer,[logic_dc_mq_hammer_floor],lift1", + "@Dodongos Cavern MQ/Boss Room,$has_explosives,bombs,$has_age|adult", + "@Dodongos Cavern MQ/Boss Room,$has_explosives,bombs,$has_age|child,sticks", + "@Dodongos Cavern MQ/Boss Room,$has_explosives,bombs,$has_age|child,sword1", + "@Dodongos Cavern MQ/Boss Room,$has_explosives,lift1,$has_age|adult", + "@Dodongos Cavern MQ/Boss Room,$has_explosives,lift1,$has_age|child,sticks", + "@Dodongos Cavern MQ/Boss Room,$has_explosives,lift1,$has_age|child,sword1", + "@Dodongos Cavern MQ/Boss Room,dodongos_cavern_shortcuts,bombs,$has_age|adult", + "@Dodongos Cavern MQ/Boss Room,dodongos_cavern_shortcuts,bombs,$has_age|child,sticks", + "@Dodongos Cavern MQ/Boss Room,dodongos_cavern_shortcuts,bombs,$has_age|child,sword1", + "@Dodongos Cavern MQ/Boss Room,dodongos_cavern_shortcuts,lift1,$has_age|adult", + "@Dodongos Cavern MQ/Boss Room,dodongos_cavern_shortcuts,lift1,$has_age|child,sticks", + "@Dodongos Cavern MQ/Boss Room,dodongos_cavern_shortcuts,lift1,$has_age|child,sword1", + "@Dodongos Cavern MQ/Boss Room,bombchu,[bombs],$has_age|adult,shield2", + "@Dodongos Cavern MQ/Boss Room,bombchu,[bombs],$has_age|adult,shield3" ], "hosted_item": "dodongo", "chest_unopened_img": "images/HC.png", @@ -997,6 +1108,7 @@ { "name": "Boss Area", "access_rules": [ + "@Jabu Jabus Belly/Main,jabu_shortcuts", "@Jabu Jabus Belly/Depths,sticks", "@Jabu Jabus Belly/Depths,sword1" ], @@ -1106,7 +1218,8 @@ { "name": "Barinade", "access_rules": [ - "@Jabu Jabus Belly/Boss Area,boomerang" + "@Jabu Jabus Belly/Boss Area,boomerang,sticks", + "@Jabu Jabus Belly/Boss Area,boomerang,sword1" ], "hosted_item": "jabu", "chest_unopened_img": "images/HC.png", @@ -1136,7 +1249,18 @@ { "name": "Main", "access_rules": [ - "sling" + "sling", + "jabu_shortcuts" + ], + "visibility_rules": [ + "hidden_region" + ], + "item_count": 1 + }, + { + "name": "Elevator Room", + "access_rules": [ + "@Jabu Jabus Belly MQ/Main" ], "visibility_rules": [ "hidden_region" @@ -1146,7 +1270,7 @@ { "name": "Depths", "access_rules": [ - "@Jabu Jabus Belly MQ/Main,$has_explosives,boomerang" + "@Jabu Jabus Belly MQ/Main,$has_explosives,boomerang,sling" ], "visibility_rules": [ "hidden_region" @@ -1154,10 +1278,21 @@ "item_count": 1 }, { - "name": "Boss Area", + "name": "Past Big Octo", "access_rules": [ "@Jabu Jabus Belly MQ/Depths,sticks", - "@Jabu Jabus Belly MQ/Depths,sword1,dinsfire,magic" + "@Jabu Jabus Belly MQ/Depths,dinsfire,magic,sword1" + ], + "visibility_rules": [ + "hidden_region" + ], + "item_count": 1 + }, + { + "name": "Boss Area", + "access_rules": [ + "@Jabu Jabus Belly MQ/Elevator Room,jabu_shortcuts", + "@Jabu Jabus Belly MQ/Past Big Octo" ], "visibility_rules": [ "hidden_region" @@ -1185,7 +1320,7 @@ "name": "Second Room Lower Chest", "short_name": "Second Room Lower", "access_rules": [ - "@Jabu Jabus Belly MQ/Main" + "@Jabu Jabus Belly MQ/Elevator Room" ], "item_count": 1 }, @@ -1193,7 +1328,9 @@ "name": "Compass Chest", "short_name": "Compass", "access_rules": [ - "@Jabu Jabus Belly MQ/Main" + "@Jabu Jabus Belly MQ/Elevator Room,sling", + "@Jabu Jabus Belly MQ/Elevator Room,$has_bombchus", + "@Jabu Jabus Belly MQ/Elevator Room,[logic_jabu_mq_rang_jump],boomerang" ], "chest_unopened_img": "images/chest_brown_compass.png", "item_count": 1 @@ -1202,23 +1339,34 @@ "name": "Basement Chests", "short_name": "Basement", "access_rules": [ - "@Jabu Jabus Belly MQ/Main" + "@Jabu Jabus Belly MQ/Main,sling" ], "item_count": 2 }, { - "name": "Boomerang Room Chests", - "short_name": "Boomerang", + "name": "Boomerang Room Small Chest", + "short_name": "Boomerang Small", "access_rules": [ "@Jabu Jabus Belly MQ/Main" ], - "item_count": 2 + "item_count": 1 + }, + { + "name": "Boomerang Chest", + "short_name": "Boomerang", + "access_rules": [ + "@Jabu Jabus Belly MQ/Main,sword1", + "@Jabu Jabus Belly MQ/Main,sling", + "@Jabu Jabus Belly MQ/Main,bombs", + "@Jabu Jabus Belly MQ/Main,sticks" + ], + "item_count": 1 }, { "name": "GS Boomerang Chest Room", "short_name": "Boomerang", "access_rules": [ - "@Jabu Jabus Belly MQ/Main,ocarina,time", + "@Jabu Jabus Belly MQ/Main,ocarina,time,$can_child_attack", "@Jabu Jabus Belly MQ/Main,[logic_jabu_mq_sot_gs],boomerang" ], "visibility_rules": [ @@ -1254,8 +1402,8 @@ "name": "GS Invisible Enemies Room", "short_name": "Invis Enemies", "access_rules": [ - "@Jabu Jabus Belly MQ/Depths,[logic_lens_jabu_mq]", - "@Jabu Jabus Belly MQ/Depths,$can_use_lens", + "@Jabu Jabus Belly MQ/Main,@Jabu Jabus Belly MQ/Depths,[logic_lens_jabu_mq],sling,boomerang", + "@Jabu Jabus Belly MQ/Main,jabu_shortcuts,$can_use_lens,sling,boomerang", "{$hintable}" ], "visibility_rules": [ @@ -1269,7 +1417,7 @@ { "name": "Cow", "access_rules": [ - "@Jabu Jabus Belly MQ/Boss Area,ocarina,epona", + "@Jabu Jabus Belly MQ/Past Big Octo,ocarina,epona", "{$hintable}" ], "visibility_rules": [ @@ -1284,7 +1432,8 @@ "name": "Second Room Upper Chest", "short_name": "Second Room Upper", "access_rules": [ - "@Jabu Jabus Belly MQ/Boss Area" + "@Jabu Jabus Belly MQ/Elevator Room,sling,@Jabu Jabus Belly MQ/Boss Area", + "@Jabu Jabus Belly MQ/Elevator Room,sling,jabu_shortcuts" ], "item_count": 1 }, @@ -1292,7 +1441,7 @@ "name": "GS Near Boss", "short_name": "Near Boss", "access_rules": [ - "@Jabu Jabus Belly MQ/Boss Area" + "@Jabu Jabus Belly MQ/Boss Area,boomerang" ], "visibility_rules": [ "setting_tokens_dungeons" @@ -1305,14 +1454,15 @@ "name": "Near Boss Chest", "short_name": "Near Boss", "access_rules": [ - "@Jabu Jabus Belly MQ/Boss Area" + "@Jabu Jabus Belly MQ/Boss Area,sling" ], "item_count": 1 }, { "name": "Barinade", "access_rules": [ - "@Jabu Jabus Belly MQ/Boss Area" + "@Jabu Jabus Belly MQ/Boss Area,boomerang,sticks", + "@Jabu Jabus Belly MQ/Boss Area,boomerang,sword1" ], "hosted_item": "jabu", "chest_unopened_img": "images/HC.png", @@ -1336,7 +1486,8 @@ "name": "Ice Cavern", "parent": "Zoras Fountain", "access_rules": [ - "ice_reg,$adult_fountain,$has_bottle" + "ice_reg,$adult_fountain,$has_bottle", + "ice_reg,$adult_fountain,$can_BFA" ], "sections": [ { @@ -1415,6 +1566,7 @@ "short_name": "Iron Boots", "access_rules": [ "$has_bottle", + "$can_BFA", "{$hintable}" ], "capture_item": true, @@ -1425,6 +1577,7 @@ "short_name": "Song", "access_rules": [ "$has_bottle", + "$can_BFA", "{$hintable}" ], "capture_item": true, @@ -1449,7 +1602,8 @@ "name": "Ice Cavern MQ", "parent": "Zoras Fountain", "access_rules": [ - "ice_mq,$adult_fountain,$has_bottle" + "ice_mq,$adult_fountain,$has_bottle", + "ice_mq,$adult_fountain,$can_BFA" ], "sections": [ { @@ -1520,6 +1674,7 @@ "short_name": "Iron Boots", "access_rules": [ "$has_bottle", + "$can_BFA", "{$hintable}" ], "capture_item": true, @@ -1530,6 +1685,7 @@ "short_name": "Song", "access_rules": [ "$has_bottle", + "$can_BFA", "{$hintable}" ], "capture_item": true, @@ -1619,6 +1775,7 @@ { "name": "Boss Region", "access_rules": [ + "forest_temple_shortcuts", "@Forest Temple/Bow Region,@Forest Temple/Falling Room,$has_age|adult,bow" ], "visibility_rules": [ @@ -1845,7 +2002,8 @@ { "name": "Phantom Ganon", "access_rules": [ - "@Forest Temple/Boss Region,forest_boss_key" + "@Forest Temple/Boss Region,forest_boss_key,$has_age|adult,bow", + "@Forest Temple/Boss Region,forest_boss_key,$has_age|adult,hookshot" ], "hosted_item": "forest", "chest_unopened_img": "images/HC.png", @@ -1985,6 +2143,7 @@ { "name": "Boss Region", "access_rules": [ + "forest_temple_shortcuts", "@Forest Temple MQ/Falling Room,@Forest Temple MQ/Bow Region,bow,forest_small_keys:4,[forest_small_keys:6]" ], "visibility_rules": [ @@ -2170,7 +2329,8 @@ { "name": "Phantom Ganon", "access_rules": [ - "@Forest Temple MQ/Boss Region,forest_boss_key" + "@Forest Temple MQ/Boss Region,forest_boss_key,$has_age|adult,bow", + "@Forest Temple MQ/Boss Region,forest_boss_key,$has_age|adult,hookshot" ], "hosted_item": "forest", "chest_unopened_img": "images/HC.png", @@ -2467,6 +2627,7 @@ "access_rules": [ "[$goron_tunic],hammer,fire_boss_key,[logic_fire_boss_door_jump]", "[$goron_tunic],hammer,fire_boss_key,hoverboots", + "[$goron_tunic],hammer,fire_boss_key,fire_temple_shortcuts", "[$goron_tunic],hammer,fire_boss_key,@Fire Temple/West Tower,ocarina,time", "[$goron_tunic],hammer,fire_boss_key,@Fire Temple/West Tower,$has_explosives" ], @@ -2555,6 +2716,7 @@ "access_rules": [ "$has_age|adult,[$goron_tunic],hammer,fire_boss_key,$has_fire,[logic_fire_boss_door_jump]", "$has_age|adult,[$goron_tunic],hammer,fire_boss_key,$has_fire,hoverboots", + "$has_age|adult,[$goron_tunic],hammer,fire_boss_key,$has_fire,fire_temple_shortcuts", "$has_age|adult,[$goron_tunic],hammer,fire_boss_key,@Fire Temple MQ/West Top" ], "visibility_rules": [ @@ -3346,7 +3508,26 @@ { "name": "Huge Pit", "access_rules": [ - "@Shadow Temple/First Beamos,shadow_small_keys:1,$has_explosives" + "@Shadow Temple/First Beamos,$has_explosives,shadow_small_keys:1,$has_exact|shadow_temple_shortcuts|0", + "@Shadow Temple/First Beamos,$has_explosives,shadow_small_keys:5", + "@Shadow Temple/First Beamos,$has_explosives,shadow_small_keys:4,[logic_lens_shadow_platform]", + "@Shadow Temple/First Beamos,$has_explosives,shadow_small_keys:4,$can_use_lens", + //below resolves cyclic references + "@Shadow Temple/First Beamos,shadow_temple_shortcuts,shadow_small_keys:4,hookshot,[logic_lens_shadow_platform]", + "@Shadow Temple/First Beamos,shadow_temple_shortcuts,shadow_small_keys:4,hookshot,$can_use_lens" + ], + "visibility_rules": [ + "hidden_region" + ], + "item_count": 1 + }, + { + "name": "Invisible Spikes", + "access_rules": [ + "@Shadow Temple/Huge Pit,shadow_small_keys:2,[logic_lens_shadow_platform]", + "@Shadow Temple/Huge Pit,shadow_small_keys:2,$can_use_lens", + //below resolves cyclic references + "@Shadow Temple/First Beamos,shadow_temple_shortcuts,shadow_small_keys:4,hookshot" ], "visibility_rules": [ "hidden_region" @@ -3356,8 +3537,33 @@ { "name": "Wind Tunnel", "access_rules": [ - "@Shadow Temple/Huge Pit,shadow_small_keys:3,hookshot,[logic_lens_shadow_back]", - "@Shadow Temple/Huge Pit,shadow_small_keys:3,hookshot,$can_use_lens" + "@Shadow Temple/Invisible Spikes,hookshot,shadow_small_keys:3", + //below resolves cyclic references + "@Shadow Temple/First Beamos,shadow_temple_shortcuts,shadow_small_keys:4" + ], + "visibility_rules": [ + "hidden_region" + ], + "item_count": 1 + }, + { + "name": "After Wind", + "access_rules": [ + "@Shadow Temple/Wind Tunnel", + //below resolves cyclic references + "@Shadow Temple/First Beamos,shadow_temple_shortcuts,shadow_small_keys:4" + ], + "visibility_rules": [ + "hidden_region" + ], + "item_count": 1 + }, + { + "name": "Boat", + "access_rules": [ + "@Shadow Temple/After Wind,shadow_small_keys:4", + //below resolves cyclic references + "@Shadow Temple/First Beamos,shadow_temple_shortcuts" ], "visibility_rules": [ "hidden_region" @@ -3367,7 +3573,20 @@ { "name": "Beyond Boat", "access_rules": [ - "@Shadow Temple/Wind Tunnel,shadow_small_keys:4,ocarina,lullaby" + "@Shadow Temple/Boat,ocarina,lullaby" + ], + "visibility_rules": [ + "hidden_region" + ], + "item_count": 1 + }, + { + "name": "Boss Room", + "access_rules": [ + "@Shadow Temple/Beyond Boat,shadow_small_keys:5,shadow_boss_key,bow", + "@Shadow Temple/Beyond Boat,shadow_small_keys:5,shadow_boss_key,longshot,ocarina,scarecrow", + "@Shadow Temple/Beyond Boat,shadow_small_keys:5,shadow_boss_key,$has_bombchus,[logic_shadow_statue]", + "@Shadow Temple/Beyond Boat,shadow_small_keys:5,shadow_boss_key,shadow_temple_shortcuts" ], "visibility_rules": [ "hidden_region" @@ -3470,8 +3689,7 @@ "name": "Invisible Spikes Chest", "short_name": "Invisible Spikes", "access_rules": [ - "@Shadow Temple/Huge Pit,shadow_small_keys:2,[logic_lens_shadow_back]", - "@Shadow Temple/Huge Pit,shadow_small_keys:2,$can_use_lens" + "@Shadow Temple/Invisible Spikes" ], "item_count": 1 }, @@ -3479,12 +3697,9 @@ "name": "Freestanding Key", "short_name": "Skull Pot", "access_rules": [ - "@Shadow Temple/Huge Pit,shadow_small_keys:2,hookshot,[logic_lens_shadow_back],bombs", - "@Shadow Temple/Huge Pit,shadow_small_keys:2,hookshot,[logic_lens_shadow_back],lift1", - "@Shadow Temple/Huge Pit,shadow_small_keys:2,hookshot,[logic_lens_shadow_back],[logic_shadow_freestanding_key],$has_bombchus", - "@Shadow Temple/Huge Pit,shadow_small_keys:2,hookshot,$can_use_lens,bombs", - "@Shadow Temple/Huge Pit,shadow_small_keys:2,hookshot,$can_use_lens,lift1", - "@Shadow Temple/Huge Pit,shadow_small_keys:2,hookshot,$can_use_lens,[logic_shadow_freestanding_key],$has_bombchus", + "@Shadow Temple/Invisible Spikes,hookshot,bombs", + "@Shadow Temple/Invisible Spikes,hookshot,lift1", + "@Shadow Temple/Invisible Spikes,hookshot,[logic_shadow_freestanding_key],$has_bombchus", "{$hintable}" ], "capture_item": true, @@ -3496,8 +3711,7 @@ "name": "GS Single Giant Pot", "short_name": "Single Skull", "access_rules": [ - "@Shadow Temple/Huge Pit,shadow_small_keys:2,hookshot,[logic_lens_shadow_back]", - "@Shadow Temple/Huge Pit,shadow_small_keys:2,hookshot,$can_use_lens" + "@Shadow Temple/Invisible Spikes,hookshot" ], "visibility_rules": [ "setting_tokens_dungeons" @@ -3515,20 +3729,28 @@ "item_count": 1 }, { - "name": "After Wind Chests", - "short_name": "After Wind", + "name": "After Wind Enemy Chest", + "short_name": "After Wind Enemy", "access_rules": [ - "@Shadow Temple/Wind Tunnel" + "@Shadow Temple/After Wind" + ], + "item_count": 1 + }, + { + "name": "After Wind Hidden Chest", + "short_name": "After Wind Hidden", + "access_rules": [ + "@Shadow Temple/After Wind,$has_explosives" ], "chest_unopened_img": "images/chest_brown_small_key.png", - "item_count": 2 + "item_count": 1 }, { "name": "GS Near Ship", "short_name": "Near Boat", "access_rules": [ - "@Shadow Temple/Wind Tunnel,shadow_small_keys:4,longshot", - "{@Shadow Temple/Wind Tunnel,shadow_small_keys:4,bow}" + "@Shadow Temple/Boat,longshot", + "{@Shadow Temple/Boat,bow}" ], "visibility_rules": [ "setting_tokens_dungeons" @@ -3581,9 +3803,9 @@ { "name": "Bongo Bongo", "access_rules": [ - "@Shadow Temple/Beyond Boat,shadow_boss_key,shadow_small_keys:5,longshot,ocarina,scarecrow", - "@Shadow Temple/Beyond Boat,shadow_boss_key,shadow_small_keys:5,bow", - "@Shadow Temple/Beyond Boat,shadow_boss_key,shadow_small_keys:5,$has_bombchus,[logic_shadow_statue]" + "@Shadow Temple/Boss Room,[logic_shadow_bongo]", + "@Shadow Temple/Boss Room,bow", + "@Shadow Temple/Boss Room,hookshot" ], "hosted_item": "shadow", "chest_unopened_img": "images/HC.png", @@ -3639,6 +3861,7 @@ { "name": "First Beamos", "access_rules": [ + "@Shadow Temple MQ/Beginning,shadow_temple_shortcuts", "@Shadow Temple MQ/Beginning,bow,firearrow,magic", "@Shadow Temple MQ/Beginning,hoverboots", "@Shadow Temple MQ/Beginning,[logic_shadow_mq_gap],longshot" @@ -3651,7 +3874,38 @@ { "name": "Upper Huge Pit", "access_rules": [ - "@Shadow Temple MQ/First Beamos,$has_explosives,shadow_small_keys:1,[shadow_small_keys:2]" + "@Shadow Temple MQ/First Beamos,$has_explosives,shadow_small_keys:1,[shadow_small_keys:2],$has_exact|shadow_temple_shortcuts|0", + "@Shadow Temple MQ/First Beamos,$has_explosives,shadow_small_keys:1,[shadow_small_keys:5]", + //below resolves cyclic references + "@Shadow Temple MQ/First Beamos,shadow_temple_shortcuts,shadow_small_keys:3,[shadow_small_keys:5],hoverboots,longshot,[logic_lens_shadow_mq_platform]", + "@Shadow Temple MQ/First Beamos,shadow_temple_shortcuts,shadow_small_keys:3,[shadow_small_keys:5],hoverboots,longshot,$can_use_lens", + ], + "visibility_rules": [ + "hidden_region" + ], + "item_count": 1 + }, + { + "name": "Invisible Blades", + "access_rules": [ + "@Shadow Temple MQ/Upper Huge Pit,$has_exact|shadow_temple_shortcuts|0,ocarina,time,[logic_lens_shadow_mq_invisible_blades]", + "@Shadow Temple MQ/Upper Huge Pit,$has_exact|shadow_temple_shortcuts|0,ocarina,time,$can_use_lens", + "@Shadow Temple MQ/Upper Huge Pit,$has_exact|shadow_temple_shortcuts|0,ocarina,time,nayruslove,magic", + "@Shadow Temple MQ/Upper Huge Pit,$has_exact|shadow_temple_shortcuts|0,[logic_shadow_mq_invisible_blades],$damage_below_ohko,[logic_lens_shadow_mq_invisible_blades]", + "@Shadow Temple MQ/Upper Huge Pit,$has_exact|shadow_temple_shortcuts|0,[logic_shadow_mq_invisible_blades],$damage_below_ohko,$can_use_lens", + "@Shadow Temple MQ/Upper Huge Pit,$has_exact|shadow_temple_shortcuts|0,[logic_shadow_mq_invisible_blades],$damage_below_ohko,nayruslove,magic", + "@Shadow Temple MQ/Upper Huge Pit,[shadow_small_keys:6],ocarina,time,[logic_lens_shadow_mq_invisible_blades]", + "@Shadow Temple MQ/Upper Huge Pit,[shadow_small_keys:6],ocarina,time,$can_use_lens", + "@Shadow Temple MQ/Upper Huge Pit,[shadow_small_keys:6],ocarina,time,nayruslove,magic", + "@Shadow Temple MQ/Upper Huge Pit,[shadow_small_keys:6],[logic_shadow_mq_invisible_blades],$damage_below_ohko,[logic_lens_shadow_mq_invisible_blades]", + "@Shadow Temple MQ/Upper Huge Pit,[shadow_small_keys:6],[logic_shadow_mq_invisible_blades],$damage_below_ohko,$can_use_lens", + "@Shadow Temple MQ/Upper Huge Pit,[shadow_small_keys:6],[logic_shadow_mq_invisible_blades],$damage_below_ohko,nayruslove,magic", + "@Shadow Temple MQ/Upper Huge Pit,[logic_lens_shadow_mq_platform],hoverboots,ocarina,time,[logic_lens_shadow_mq_invisible_blades]", + "@Shadow Temple MQ/Upper Huge Pit,[logic_lens_shadow_mq_platform],hoverboots,ocarina,time,nayruslove,magic", + "@Shadow Temple MQ/Upper Huge Pit,[logic_lens_shadow_mq_platform],hoverboots,[logic_shadow_mq_invisible_blades],$damage_below_ohko,[logic_lens_shadow_mq_invisible_blades]", + "@Shadow Temple MQ/Upper Huge Pit,[logic_lens_shadow_mq_platform],hoverboots,[logic_shadow_mq_invisible_blades],$damage_below_ohko,nayruslove,magic", + "@Shadow Temple MQ/Upper Huge Pit,$can_use_lens,hoverboots,ocarina,time", + "@Shadow Temple MQ/Upper Huge Pit,$can_use_lens,hoverboots,[logic_shadow_mq_invisible_blades],$damage_below_ohko" ], "visibility_rules": [ "hidden_region" @@ -3662,7 +3916,39 @@ "name": "Lower Huge Pit", "access_rules": [ "@Shadow Temple MQ/Upper Huge Pit,$has_fire", - "@Shadow Temple MQ/Upper Huge Pit,[logic_shadow_mq_huge_pit]" + "@Shadow Temple MQ/Upper Huge Pit,[logic_shadow_mq_huge_pit]", + //below resolves cyclic references + "@Shadow Temple MQ/First Beamos,shadow_temple_shortcuts,shadow_small_keys:3,[shadow_small_keys:5],hoverboots,hookshot,[logic_lens_shadow_mq_platform]", + "@Shadow Temple MQ/First Beamos,shadow_temple_shortcuts,shadow_small_keys:3,[shadow_small_keys:5],hoverboots,hookshot,$can_use_lens", + ], + "visibility_rules": [ + "hidden_region" + ], + "item_count": 1 + }, + { + "name": "Falling Spikes", + "access_rules": [ + "@Shadow Temple MQ/Lower Huge Pit,$has_exact|shadow_temple_shortcuts|0", + "@Shadow Temple MQ/Lower Huge Pit,shadow_small_keys:1,[shadow_small_keys:6]", + "@Shadow Temple MQ/Lower Huge Pit,[logic_lens_shadow_mq_platform],hoverboots,$has_fire", + "@Shadow Temple MQ/Lower Huge Pit,[logic_lens_shadow_mq_platform],hoverboots,[logic_shadow_mq_huge_pit]", + "@Shadow Temple MQ/Lower Huge Pit,$can_use_lens,hoverboots,$has_fire", + "@Shadow Temple MQ/Lower Huge Pit,$can_use_lens,hoverboots,[logic_shadow_mq_huge_pit]" + ], + "visibility_rules": [ + "hidden_region" + ], + "item_count": 1 + }, + { + "name": "Invisible Spikes", + "access_rules": [ + "@Shadow Temple MQ/Lower Huge Pit,[logic_lens_shadow_mq_platform],hoverboots,shadow_small_keys:2,[shadow_small_keys:3]", + "@Shadow Temple MQ/Lower Huge Pit,$can_use_lens,hoverboots,shadow_small_keys:2,[shadow_small_keys:3]", + //below resolves cyclic references + "@Shadow Temple MQ/First Beamos,shadow_temple_shortcuts,shadow_small_keys:2,[shadow_small_keys:5],hoverboots,hookshot", + "@Shadow Temple MQ/First Beamos,shadow_temple_shortcuts,shadow_small_keys:2,[shadow_small_keys:5],[logic_shadow_mq_windy_walkway],hookshot", ], "visibility_rules": [ "hidden_region" @@ -3672,8 +3958,34 @@ { "name": "Wind Tunnel", "access_rules": [ - "@Shadow Temple MQ/Lower Huge Pit,hoverboots,hookshot,shadow_small_keys:3,[shadow_small_keys:4],[logic_lens_shadow_mq_back]", - "@Shadow Temple MQ/Lower Huge Pit,hoverboots,hookshot,shadow_small_keys:3,[shadow_small_keys:4],$can_use_lens" + "@Shadow Temple MQ/Invisible Spikes,hookshot,shadow_small_keys:3,[shadow_small_keys:4]", + //below resolves cyclic references + "@Shadow Temple MQ/First Beamos,shadow_temple_shortcuts,shadow_small_keys:1,[shadow_small_keys:5],hoverboots", + "@Shadow Temple MQ/First Beamos,shadow_temple_shortcuts,shadow_small_keys:1,[shadow_small_keys:5],[logic_shadow_mq_windy_walkway]", + ], + "visibility_rules": [ + "hidden_region" + ], + "item_count": 1 + }, + { + "name": "After Wind", + "access_rules": [ + "@Shadow Temple MQ/Wind Tunnel", + //below resolves cyclic references + "@Shadow Temple MQ/First Beamos,shadow_temple_shortcuts,shadow_small_keys:1,[shadow_small_keys:5]" + ], + "visibility_rules": [ + "hidden_region" + ], + "item_count": 1 + }, + { + "name": "Boat", + "access_rules": [ + "@Shadow Temple MQ/After Wind,shadow_small_keys:4,[shadow_small_keys:5]", + //below resolves cyclic references + "@Shadow Temple MQ/First Beamos,shadow_temple_shortcuts" ], "visibility_rules": [ "hidden_region" @@ -3683,7 +3995,7 @@ { "name": "Beyond Boat", "access_rules": [ - "@Shadow Temple MQ/Wind Tunnel,ocarina,lullaby,shadow_small_keys:4,[shadow_small_keys:5]" + "@Shadow Temple MQ/Boat,ocarina,lullaby" ], "visibility_rules": [ "hidden_region" @@ -3700,6 +4012,18 @@ ], "item_count": 1 }, + { + "name": "Near Boss", + "access_rules": [ + "@Shadow Temple MQ/Beyond Boat,bow,hoverboots", + "@Shadow Temple MQ/Beyond Boat,[logic_shadow_statue],$has_bombchus,hoverboots", + "@Shadow Temple MQ/Beyond Boat,shadow_temple_shortcuts,hoverboots" + ], + "visibility_rules": [ + "hidden_region" + ], + "item_count": 1 + }, { "name": "Compass Chest", "short_name": "Compass", @@ -3748,8 +4072,7 @@ "name": "Invisible Blades Chests", "short_name": "Like Like", "access_rules": [ - "@Shadow Temple MQ/Upper Huge Pit,ocarina,time", - "@Shadow Temple MQ/Upper Huge Pit,[logic_shadow_mq_invisible_blades],$damage_below_ohko" + "@Shadow Temple MQ/Invisible Blades" ], "chest_unopened_img": "images/chest_brown_small_key.png", "item_count": 2 @@ -3758,7 +4081,7 @@ "name": "Beamos Silver Rupees Chest", "short_name": "Beamos Silvers", "access_rules": [ - "@Shadow Temple MQ/Lower Huge Pit,longshot" + "@Shadow Temple MQ/Falling Spikes,longshot" ], "item_count": 1 }, @@ -3766,7 +4089,7 @@ "name": "Falling Spikes Lower Chest", "short_name": "Crusher Lower", "access_rules": [ - "@Shadow Temple MQ/Lower Huge Pit" + "@Shadow Temple MQ/Falling Spikes" ], "item_count": 1 }, @@ -3774,11 +4097,11 @@ "name": "GS Falling Spikes Room", "short_name": "Crusher", "access_rules": [ - "@Shadow Temple MQ/Lower Huge Pit,[logic_shadow_umbrella_gs],hoverboots", - "@Shadow Temple MQ/Lower Huge Pit,hookshot", - "@Shadow Temple MQ/Lower Huge Pit,[hookshot],bombs,shield2", - "@Shadow Temple MQ/Lower Huge Pit,[hookshot],bombs,shield3", - "{@Shadow Temple MQ/Lower Huge Pit}" + "@Shadow Temple MQ/Falling Spikes,[logic_shadow_umbrella_gs],hoverboots", + "@Shadow Temple MQ/Falling Spikes,hookshot", + "@Shadow Temple MQ/Falling Spikes,[hookshot],bombs,shield2", + "@Shadow Temple MQ/Falling Spikes,[hookshot],bombs,shield3", + "{@Shadow Temple MQ/Falling Spikes}" ], "visibility_rules": [ "setting_tokens_dungeons" @@ -3792,8 +4115,8 @@ "name": "Falling Spikes Upper Chests", "short_name": "Crusher Upper", "access_rules": [ - "@Shadow Temple MQ/Lower Huge Pit,[logic_shadow_umbrella],[hoverboots]", - "@Shadow Temple MQ/Lower Huge Pit,lift1" + "@Shadow Temple MQ/Falling Spikes,[logic_shadow_umbrella],[hoverboots]", + "@Shadow Temple MQ/Falling Spikes,lift1" ], "chest_unopened_img": "images/chest_brown_small_key.png", "item_count": 2 @@ -3802,8 +4125,7 @@ "name": "Invisible Spikes Chest", "short_name": "Invisible Spikes", "access_rules": [ - "@Shadow Temple MQ/Lower Huge Pit,hoverboots,shadow_small_keys:2,[shadow_small_keys:3],[logic_lens_shadow_mq_back]", - "@Shadow Temple MQ/Lower Huge Pit,hoverboots,shadow_small_keys:2,[shadow_small_keys:3],$can_use_lens" + "@Shadow Temple MQ/Invisible Spikes" ], "item_count": 1 }, @@ -3811,8 +4133,7 @@ "name": "Stalfos Room Chest", "short_name": "Stalfos", "access_rules": [ - "@Shadow Temple MQ/Lower Huge Pit,hoverboots,shadow_small_keys:2,[shadow_small_keys:3],hookshot,[logic_lens_shadow_mq_back]", - "@Shadow Temple MQ/Lower Huge Pit,hoverboots,shadow_small_keys:2,[shadow_small_keys:3],hookshot,$can_use_lens", + "@Shadow Temple MQ/Invisible Spikes,hookshot", "{$hintable}" ], "capture_item": true, @@ -3831,28 +4152,38 @@ "name": "GS Wind Hint Room", "short_name": "Wind Hint", "access_rules": [ - "@Shadow Temple MQ/Wind Tunnel" + "@Shadow Temple MQ/Wind Tunnel,hookshot" ], "visibility_rules": [ "setting_tokens_dungeons" ], + "capture_item": true, "chest_unopened_img": "images/skulltula.png", "chest_opened_img": "images/skulltula_token.png", "item_count": 1 }, { - "name": "After Wind Chests", - "short_name": "After Wind", + "name": "After Wind Enemy Chest", + "short_name": "After Wind Enemy", "access_rules": [ - "@Shadow Temple MQ/Wind Tunnel" + "@Shadow Temple MQ/After Wind" ], - "item_count": 2 + "item_count": 1 + }, + { + "name": "After Wind Hidden Chest", + "short_name": "After Wind Hidden", + "access_rules": [ + "@Shadow Temple MQ/After Wind,$has_explosives" + ], + "item_count": 1 }, { "name": "GS After Wind", "short_name": "After Wind", "access_rules": [ - "@Shadow Temple MQ/Wind Tunnel" + "@Shadow Temple MQ/After Wind,$has_explosives", + "@Shadow Temple MQ/After Wind,[logic_shadow_mq_after_wind_gs]" ], "visibility_rules": [ "setting_tokens_dungeons" @@ -3865,7 +4196,7 @@ "name": "GS After Ship", "short_name": "After Ship", "access_rules": [ - "@Shadow Temple MQ/Beyond Boat" + "@Shadow Temple MQ/Beyond Boat,hookshot" ], "visibility_rules": [ "setting_tokens_dungeons" @@ -3906,7 +4237,8 @@ "name": "Bomb Flower Chest", "short_name": "Dead Hand 2", "access_rules": [ - "@Shadow Temple MQ/Invisible Maze", + "@Shadow Temple MQ/Invisible Maze,[logic_lens_shadow_mq_dead_hand]", + "@Shadow Temple MQ/Invisible Maze,$can_use_lens", "{$hintable}" ], "capture_item": true, @@ -3916,8 +4248,8 @@ "name": "GS Near Boss", "short_name": "Near Boss", "access_rules": [ - "@Shadow Temple MQ/Beyond Boat,bow", - "@Shadow Temple MQ/Beyond Boat,$has_bombchus,[logic_shadow_statue]" + "@Shadow Temple MQ/Near Boss,$has_projectile|adult", + "@Shadow Temple MQ/Near Boss,dinsfire,magic" ], "visibility_rules": [ "setting_tokens_dungeons" @@ -3929,8 +4261,9 @@ { "name": "Bongo Bongo", "access_rules": [ - "@Shadow Temple MQ/Beyond Boat,shadow_boss_key,bow", - "@Shadow Temple MQ/Beyond Boat,shadow_boss_key,$has_bombchus,[logic_shadow_statue]" + "@Shadow Temple MQ/Near Boss,shadow_boss_key,[logic_shadow_bongo]", + "@Shadow Temple MQ/Near Boss,shadow_boss_key,bow", + "@Shadow Temple MQ/Near Boss,shadow_boss_key,hookshot" ], "hosted_item": "shadow", "chest_unopened_img": "images/HC.png", @@ -3989,7 +4322,8 @@ { "name": "Early Adult", "access_rules": [ - "$has_age|adult,lift2" + "$has_age|adult,lift2", + "$has_age|adult,spirit_temple_shortcuts,spirit_small_keys:2,[spirit_small_keys:5],hookshot" ], "visibility_rules": [ "hidden_region" @@ -4000,7 +4334,8 @@ "name": "Child Climb", "access_rules": [ "@Spirit Temple/Child Entry,spirit_small_keys:1", - "@Spirit Temple/Early Adult,spirit_small_keys:1" + "@Spirit Temple/Early Adult,spirit_small_keys:1", + "$has_age|adult,spirit_temple_shortcuts" ], "visibility_rules": [ "hidden_region" @@ -4011,7 +4346,8 @@ "name": "Central Chamber", "access_rules": [ "@Spirit Temple/Child Entry,spirit_small_keys:1,$has_explosives", - "@Spirit Temple/Early Adult,spirit_small_keys:1" + "@Spirit Temple/Early Adult,spirit_small_keys:1", + "$has_age|adult,spirit_temple_shortcuts" ], "visibility_rules": [ "hidden_region" @@ -4031,7 +4367,8 @@ { "name": "Beyond Central Locked Door", "access_rules": [ - "@Spirit Temple/Central Chamber,spirit_small_keys:2,[spirit_small_keys:4],$has_age|adult,lift2" + "@Spirit Temple/Central Chamber,spirit_small_keys:2,[spirit_small_keys:4],$has_age|adult,lift2", + "@Spirit Temple/Central Chamber,spirit_small_keys:1,[spirit_small_keys:4],$has_age|adult,hookshot,spirit_temple_shortcuts" ], "visibility_rules": [ "hidden_region" @@ -4059,6 +4396,18 @@ ], "item_count": 1 }, + { + "name": "Boss Platform", + "access_rules": [ + "$has_age|adult,spirit_temple_shortcuts,longshot", + "$has_age|adult,spirit_temple_shortcuts,[logic_spirit_platform_hookshot],hookshot", + "@Spirit Temple/Beyond Final Locked Door,shield3,$has_explosives" + ], + "visibility_rules": [ + "hidden_region" + ], + "item_count": 1 + }, { "name": "Child Bridge Chest", "short_name": "Child Left", @@ -4096,8 +4445,9 @@ "access_rules": [ "@Spirit Temple/Child Climb,$has_projectile|both", "@Spirit Temple/Child Climb,$has_projectile|child,[spirit_small_keys:5],$child_colossus", - "@Spirit Temple/Child Climb,$has_projectile|adult,[spirit_small_keys:3],lift2", - "@Spirit Temple/Child Climb,$has_projectile|adult,[spirit_small_keys:2],lift2,setting_logic_chus_yes" + "@Spirit Temple/Child Climb,$has_projectile|adult,spirit_temple_shortcuts,$has_age|adult", + "@Spirit Temple/Child Climb,$has_projectile|adult,[spirit_small_keys:3],$has_age|adult", + "@Spirit Temple/Child Climb,$has_projectile|adult,[spirit_small_keys:2],$has_age|adult,setting_logic_chus_yes" ], "item_count": 2 }, @@ -4111,10 +4461,12 @@ "@Spirit Temple/Child Climb,$damage_single_instance_ohko,sword1", "@Spirit Temple/Child Climb,$damage_single_instance_ohko,$has_projectile|child", "@Spirit Temple/Child Climb,$child_colossus,[spirit_small_keys:5],$has_projectile|child", - "@Spirit Temple/Child Climb,lift2,$has_projectile|adult,[spirit_small_keys:3]", - "@Spirit Temple/Child Climb,lift2,$has_projectile|adult,[spirit_small_keys:2],setting_logic_chus_yes", - "@Spirit Temple/Child Climb,lift2,$damage_single_instance_ohko,[spirit_small_keys:3]", - "@Spirit Temple/Child Climb,lift2,$damage_single_instance_ohko,[spirit_small_keys:2],setting_logic_chus_yes" + "@Spirit Temple/Child Climb,$has_age|adult,$has_projectile|adult,spirit_temple_shortcuts", + "@Spirit Temple/Child Climb,$has_age|adult,$has_projectile|adult,[spirit_small_keys:3]", + "@Spirit Temple/Child Climb,$has_age|adult,$has_projectile|adult,[spirit_small_keys:2],setting_logic_chus_yes", + "@Spirit Temple/Child Climb,$has_age|adult,$damage_single_instance_ohko,spirit_temple_shortcuts", + "@Spirit Temple/Child Climb,$has_age|adult,$damage_single_instance_ohko,[spirit_small_keys:3]", + "@Spirit Temple/Child Climb,$has_age|adult,$damage_single_instance_ohko,[spirit_small_keys:2],setting_logic_chus_yes" ], "visibility_rules": [ "setting_tokens_dungeons" @@ -4129,16 +4481,20 @@ "access_rules": [ "@Spirit Temple/Central Chamber,$has_explosives,dinsfire,magic", "@Spirit Temple/Central Chamber,$has_explosives,magic,firearrow,bow,sticks", - "@Spirit Temple/Central Chamber,$has_explosives,[logic_spirit_map_chest],bow,sticks", + "@Spirit Temple/Central Chamber,$has_explosives,[logic_spirit_sun_chest],bow,sticks", "@Spirit Temple/Central Chamber,[spirit_small_keys:3],dinsfire,magic", "@Spirit Temple/Central Chamber,[spirit_small_keys:3],magic,firearrow,bow,sticks", - "@Spirit Temple/Central Chamber,[spirit_small_keys:3],[logic_spirit_map_chest],bow,sticks", + "@Spirit Temple/Central Chamber,[spirit_small_keys:3],[logic_spirit_sun_chest],bow,sticks", "@Spirit Temple/Central Chamber,[spirit_small_keys:2],setting_logic_chus_yes,dinsfire,magic", "@Spirit Temple/Central Chamber,[spirit_small_keys:2],setting_logic_chus_yes,magic,firearrow,bow,sticks", - "@Spirit Temple/Central Chamber,[spirit_small_keys:2],setting_logic_chus_yes,[logic_spirit_map_chest],bow,sticks", + "@Spirit Temple/Central Chamber,[spirit_small_keys:2],setting_logic_chus_yes,[logic_spirit_sun_chest],bow,sticks", "@Spirit Temple/Central Chamber,$child_colossus,[spirit_small_keys:5],$has_explosives,sticks", - "@Spirit Temple/Central Chamber,[spirit_small_keys:3],magic,firearrow,bow,lift2", - "@Spirit Temple/Central Chamber,[spirit_small_keys:3],[logic_spirit_map_chest],bow,lift2" + "@Spirit Temple/Central Chamber,$has_age|adult,[spirit_small_keys:3],dinsfire,magic", + "@Spirit Temple/Central Chamber,$has_age|adult,[spirit_small_keys:3],magic,firearrow,bow", + "@Spirit Temple/Central Chamber,$has_age|adult,[spirit_small_keys:3],[logic_spirit_sun_chest],bow", + "@Spirit Temple/Central Chamber,$has_age|adult,spirit_temple_shortcuts,dinsfire,magic", + "@Spirit Temple/Central Chamber,$has_age|adult,spirit_temple_shortcuts,magic,firearrow,bow", + "@Spirit Temple/Central Chamber,$has_age|adult,spirit_temple_shortcuts,[logic_spirit_sun_chest],bow" ], "chest_unopened_img": "images/chest_brown_small_key.png", "item_count": 1 @@ -4149,10 +4505,11 @@ "access_rules": [ "@Spirit Temple/Central Chamber,$has_explosives,boomerang,hookshot", "@Spirit Temple/Central Chamber,$child_colossus,boomerang,[spirit_small_keys:5],$has_explosives", - "@Spirit Temple/Central Chamber,hookshot,$has_age|adult,lift2,[spirit_small_keys:3]", - "@Spirit Temple/Central Chamber,hookshot,$has_age|adult,lift2,[spirit_small_keys:2],boomerang,setting_logic_chus_yes", + "@Spirit Temple/Central Chamber,hookshot,$has_age|adult,spirit_temple_shortcuts", + "@Spirit Temple/Central Chamber,hookshot,$has_age|adult,[spirit_small_keys:3]", + "@Spirit Temple/Central Chamber,hookshot,$has_age|adult,[spirit_small_keys:2],boomerang,setting_logic_chus_yes", "{@Spirit Temple/Central Chamber,$child_colossus,sling,$has_explosives}", - "{@Spirit Temple/Central Chamber,bow,$has_age|adult,lift2}" + "{@Spirit Temple/Central Chamber,bow,$has_age|adult}" ], "visibility_rules": [ "setting_tokens_dungeons" @@ -4166,8 +4523,8 @@ "name": "Silver Gauntlets Chest", "short_name": "Right Hand", "access_rules": [ - "@Spirit Temple/Outdoor Hands,spirit_small_keys:2,[spirit_small_keys:3],longshot,$has_explosives", - "@Spirit Temple/Outdoor Hands,spirit_small_keys:2,[spirit_small_keys:5]", + "@Spirit Temple/Outdoor Hands,[spirit_small_keys:3],longshot,$has_explosives", + "@Spirit Temple/Outdoor Hands,[spirit_small_keys:5]", "{$hintable}" ], "capture_item": true, @@ -4179,16 +4536,20 @@ "access_rules": [ "@Spirit Temple/Central Chamber,$has_explosives,dinsfire,magic", "@Spirit Temple/Central Chamber,$has_explosives,magic,firearrow,bow,sticks", - "@Spirit Temple/Central Chamber,$has_explosives,[logic_spirit_sun_chest],bow,sticks", + "@Spirit Temple/Central Chamber,$has_explosives,[logic_spirit_map_chest],bow,sticks", "@Spirit Temple/Central Chamber,[spirit_small_keys:3],dinsfire,magic", "@Spirit Temple/Central Chamber,[spirit_small_keys:3],magic,firearrow,bow,sticks", - "@Spirit Temple/Central Chamber,[spirit_small_keys:3],[logic_spirit_sun_chest],bow,sticks", + "@Spirit Temple/Central Chamber,[spirit_small_keys:3],[logic_spirit_map_chest],bow,sticks", "@Spirit Temple/Central Chamber,[spirit_small_keys:2],setting_logic_chus_yes,dinsfire,magic", "@Spirit Temple/Central Chamber,[spirit_small_keys:2],setting_logic_chus_yes,magic,firearrow,bow,sticks", - "@Spirit Temple/Central Chamber,[spirit_small_keys:2],setting_logic_chus_yes,[logic_spirit_sun_chest],bow,sticks", + "@Spirit Temple/Central Chamber,[spirit_small_keys:2],setting_logic_chus_yes,[logic_spirit_map_chest],bow,sticks", "@Spirit Temple/Central Chamber,$child_colossus,[spirit_small_keys:5],$has_explosives,sticks", - "@Spirit Temple/Central Chamber,[spirit_small_keys:3],magic,firearrow,bow,lift2", - "@Spirit Temple/Central Chamber,[spirit_small_keys:3],[logic_spirit_sun_chest],bow,lift2" + "@Spirit Temple/Central Chamber,$has_age|adult,[spirit_small_keys:3],dinsfire,magic", + "@Spirit Temple/Central Chamber,$has_age|adult,[spirit_small_keys:3],magic,firearrow,bow", + "@Spirit Temple/Central Chamber,$has_age|adult,[spirit_small_keys:3],[logic_spirit_map_chest],bow", + "@Spirit Temple/Central Chamber,$has_age|adult,spirit_temple_shortcuts,dinsfire,magic", + "@Spirit Temple/Central Chamber,$has_age|adult,spirit_temple_shortcuts,magic,firearrow,bow", + "@Spirit Temple/Central Chamber,$has_age|adult,spirit_temple_shortcuts,[logic_spirit_map_chest],bow" ], "chest_unopened_img": "images/chest_brown_map.png", "item_count": 1 @@ -4197,21 +4558,24 @@ "name": "GS Lobby", "short_name": "Lobby", "access_rules": [ - "@Spirit Temple/Central Chamber,$has_explosives,[logic_spirit_lobby_gs],boomerang,$has_age|adult,lift2,hookshot", - "@Spirit Temple/Central Chamber,$has_explosives,[logic_spirit_lobby_gs],boomerang,$has_age|adult,lift2,hoverboots", - "@Spirit Temple/Central Chamber,$has_explosives,[logic_spirit_lobby_gs],boomerang,$has_age|adult,lift2,[logic_spirit_lobby_jump]", - "@Spirit Temple/Central Chamber,[spirit_small_keys:3],[logic_spirit_lobby_gs],boomerang,$has_age|adult,lift2,hookshot", - "@Spirit Temple/Central Chamber,[spirit_small_keys:3],[logic_spirit_lobby_gs],boomerang,$has_age|adult,lift2,hoverboots", - "@Spirit Temple/Central Chamber,[spirit_small_keys:3],[logic_spirit_lobby_gs],boomerang,$has_age|adult,lift2,[logic_spirit_lobby_jump]", - "@Spirit Temple/Central Chamber,[spirit_small_keys:2],setting_logic_chus_yes,[logic_spirit_lobby_gs],boomerang,$has_age|adult,lift2,hookshot", - "@Spirit Temple/Central Chamber,[spirit_small_keys:2],setting_logic_chus_yes,[logic_spirit_lobby_gs],boomerang,$has_age|adult,lift2,hoverboots", - "@Spirit Temple/Central Chamber,[spirit_small_keys:2],setting_logic_chus_yes,[logic_spirit_lobby_gs],boomerang,$has_age|adult,lift2,[logic_spirit_lobby_jump]", + "@Spirit Temple/Central Chamber,$has_explosives,[logic_spirit_lobby_gs],boomerang,hookshot", + "@Spirit Temple/Central Chamber,$has_explosives,[logic_spirit_lobby_gs],boomerang,hoverboots", + "@Spirit Temple/Central Chamber,$has_explosives,[logic_spirit_lobby_gs],boomerang,[logic_spirit_lobby_jump]", + "@Spirit Temple/Central Chamber,[spirit_small_keys:3],[logic_spirit_lobby_gs],boomerang,hookshot", + "@Spirit Temple/Central Chamber,[spirit_small_keys:3],[logic_spirit_lobby_gs],boomerang,hoverboots", + "@Spirit Temple/Central Chamber,[spirit_small_keys:3],[logic_spirit_lobby_gs],boomerang,[logic_spirit_lobby_jump]", + "@Spirit Temple/Central Chamber,[spirit_small_keys:2],setting_logic_chus_yes,[logic_spirit_lobby_gs],boomerang,hookshot", + "@Spirit Temple/Central Chamber,[spirit_small_keys:2],setting_logic_chus_yes,[logic_spirit_lobby_gs],boomerang,hoverboots", + "@Spirit Temple/Central Chamber,[spirit_small_keys:2],setting_logic_chus_yes,[logic_spirit_lobby_gs],boomerang,[logic_spirit_lobby_jump]", "@Spirit Temple/Central Chamber,[spirit_small_keys:5],[logic_spirit_lobby_gs],$has_explosives,$child_colossus,boomerang", "{@Spirit Temple/Central Chamber,$has_explosives,$child_colossus,sling}", - "@Spirit Temple/Central Chamber,[spirit_small_keys:3],$has_age|adult,lift2,hookshot", - "@Spirit Temple/Central Chamber,[spirit_small_keys:3],$has_age|adult,lift2,hoverboots", - "@Spirit Temple/Central Chamber,[spirit_small_keys:3],$has_age|adult,lift2,[logic_spirit_lobby_jump]", - "{@Spirit Temple/Central Chamber,$has_age|adult,lift2,bow}" + "@Spirit Temple/Central Chamber,$has_age|adult,[spirit_small_keys:3],hookshot", + "@Spirit Temple/Central Chamber,$has_age|adult,[spirit_small_keys:3],hoverboots", + "@Spirit Temple/Central Chamber,$has_age|adult,[spirit_small_keys:3],[logic_spirit_lobby_jump]", + "@Spirit Temple/Central Chamber,$has_age|adult,spirit_temple_shortcuts,hookshot", + "@Spirit Temple/Central Chamber,$has_age|adult,spirit_temple_shortcuts,hoverboots", + "@Spirit Temple/Central Chamber,$has_age|adult,spirit_temple_shortcuts,[logic_spirit_lobby_jump]", + "{@Spirit Temple/Central Chamber,$has_age|adult,bow}" ], "capture_item": true, "visibility_rules": [ @@ -4261,7 +4625,8 @@ "name": "First Mirror Chests", "short_name": "Mirror", "access_rules": [ - "@Spirit Temple/Early Adult,spirit_small_keys:1,[spirit_small_keys:3]" + "@Spirit Temple/Central Chamber,$has_age|adult,lift2,spirit_small_keys:1,[spirit_small_keys:3]", + "@Spirit Temple/Central Chamber,$has_age|adult,hookshot,spirit_temple_shortcuts" ], "item_count": 2 }, @@ -4269,7 +4634,8 @@ "name": "Statue Room Hand Chest", "short_name": "Statue Hand", "access_rules": [ - "@Spirit Temple/Central Chamber,[spirit_small_keys:3],$has_age|adult,lift2,ocarina,lullaby" + "@Spirit Temple/Central Chamber,$has_age|adult,lift2,spirit_small_keys:1,[spirit_small_keys:3],ocarina,lullaby", + "@Spirit Temple/Central Chamber,$has_age|adult,hookshot,spirit_temple_shortcuts,ocarina,lullaby" ], "chest_unopened_img": "images/chest_brown_small_key.png", "item_count": 1 @@ -4306,7 +4672,8 @@ "name": "Mirror Shield Chest", "short_name": "Left Hand", "access_rules": [ - "@Spirit Temple/Outdoor Hands,spirit_small_keys:2,[spirit_small_keys:4],$has_age|adult,lift2,$has_explosives", + "spirit_small_keys:2,[spirit_small_keys:4],$has_age|adult,lift2,$has_explosives", + "spirit_small_keys:1,[spirit_small_keys:4],$has_age|adult,spirit_temple_shortcuts,hookshot,$has_explosives", "{$hintable}" ], "capture_item": true, @@ -4333,7 +4700,7 @@ { "name": "Twinrova", "access_rules": [ - "@Spirit Temple/Beyond Final Locked Door,shield3,$has_explosives,hookshot,spirit_boss_key" + "@Spirit Temple/Boss Platform,shield3,hookshot,spirit_boss_key" ], "hosted_item": "spirit", "chest_unopened_img": "images/HC.png", @@ -4382,7 +4749,8 @@ { "name": "Adult", "access_rules": [ - "$has_bombchus,$has_age|adult,longshot,lift2" + "$has_age|adult,longshot,lift2,$has_bombchus", + "$has_age|adult,longshot,spirit_temple_shortcuts" ], "visibility_rules": [ "hidden_region" @@ -4421,6 +4789,17 @@ ], "item_count": 1 }, + { + "name": "Boss Platform", + "access_rules": [ + "@Spirit Temple MQ/Adult,spirit_temple_shortcuts", + "@Spirit Temple MQ/Boss Area,shield3" + ], + "visibility_rules": [ + "hidden_region" + ], + "item_count": 1 + }, { "name": "Mirror Shield Hand", "access_rules": [ @@ -4558,8 +4937,10 @@ "@Spirit Temple MQ/Shared,spirit_small_keys:3,[spirit_small_keys:7],ocarina,time", "@Spirit Temple MQ/Shared,spirit_small_keys:3,[spirit_small_keys:7],[logic_spirit_mq_sun_block_sot]", "@Spirit Temple MQ/Adult,spirit_small_keys:1,[spirit_small_keys:7],$has_age|adult", - "@Spirit Temple MQ/Adult,spirit_small_keys:1,[spirit_small_keys:4],ocarina,time,[logic_lens_spirit_mq]", - "@Spirit Temple MQ/Adult,spirit_small_keys:1,[spirit_small_keys:4],ocarina,time,$can_use_lens" + "@Spirit Temple MQ/Adult,spirit_small_keys:1,[spirit_small_keys:4],ocarina,time,$has_explosives,[logic_lens_spirit_mq]", + "@Spirit Temple MQ/Adult,spirit_small_keys:1,[spirit_small_keys:4],ocarina,time,$has_explosives,$can_use_lens", + "@Spirit Temple MQ/Adult,spirit_small_keys:1,[spirit_small_keys:4],ocarina,time,nuts,[logic_lens_spirit_mq]", + "@Spirit Temple MQ/Adult,spirit_small_keys:1,[spirit_small_keys:4],ocarina,time,nuts,$can_use_lens" ], "item_count": 1 }, @@ -4567,7 +4948,7 @@ "name": "Child Climb North Chest", "short_name": "Child Climb Ground", "access_rules": [ - "@Spirit Temple MQ/Shared,spirit_small_keys:1,[spirit_small_keys:6]" + "@Spirit Temple MQ/Shared,spirit_small_keys:1,[spirit_small_keys:6],$has_explosives" ], "item_count": 1 }, @@ -4575,7 +4956,7 @@ "name": "Child Climb South Chest", "short_name": "Child Climb Ledge", "access_rules": [ - "@Spirit Temple MQ/Adult,spirit_small_keys:1,[spirit_small_keys:7]" + "@Spirit Temple MQ/Adult,spirit_small_keys:1,[spirit_small_keys:7],$has_explosives" ], "chest_unopened_img": "images/chest_brown_small_key.png", "item_count": 1 @@ -4656,7 +5037,7 @@ "name": "Beamos Room Chest", "short_name": "Beamos", "access_rules": [ - "@Spirit Temple MQ/Adult,spirit_small_keys:1,[spirit_small_keys:5]" + "@Spirit Temple MQ/Adult,spirit_small_keys:1,[spirit_small_keys:5],$has_explosives" ], "item_count": 1 }, @@ -4664,7 +5045,8 @@ "name": "Chest Switch Chest", "short_name": "Chest Switch", "access_rules": [ - "@Spirit Temple MQ/Adult,spirit_small_keys:1,[spirit_small_keys:5],ocarina,time" + "@Spirit Temple MQ/Adult,spirit_small_keys:1,[spirit_small_keys:5],ocarina,time,$has_explosives", + "@Spirit Temple MQ/Adult,spirit_small_keys:1,[spirit_small_keys:5],ocarina,time,nuts" ], "item_count": 1 }, @@ -4672,7 +5054,8 @@ "name": "Boss Key Chest", "short_name": "Boss Key", "access_rules": [ - "@Spirit Temple MQ/Adult,spirit_small_keys:1,[spirit_small_keys:5],ocarina,time,shield3" + "@Spirit Temple MQ/Adult,spirit_small_keys:1,[spirit_small_keys:5],ocarina,time,shield3,$has_explosives", + "@Spirit Temple MQ/Adult,spirit_small_keys:1,[spirit_small_keys:5],ocarina,time,shield3,nuts" ], "chest_unopened_img": "images/chest_golden_closed.png", "chest_opened_img": "images/chest_golden_open.png", @@ -4682,8 +5065,10 @@ "name": "Mirror Shield Chest", "short_name": "Left Hand", "access_rules": [ - "@Spirit Temple MQ/Adult,spirit_small_keys:1,[spirit_small_keys:5],ocarina,time,[logic_lens_spirit_mq]", - "@Spirit Temple MQ/Adult,spirit_small_keys:1,[spirit_small_keys:5],ocarina,time,$can_use_lens" + "@Spirit Temple MQ/Adult,spirit_small_keys:1,[spirit_small_keys:5],ocarina,time,[logic_lens_spirit_mq],$has_explosives", + "@Spirit Temple MQ/Adult,spirit_small_keys:1,[spirit_small_keys:5],ocarina,time,[logic_lens_spirit_mq],nuts", + "@Spirit Temple MQ/Adult,spirit_small_keys:1,[spirit_small_keys:5],ocarina,time,$can_use_lens,$has_explosives", + "@Spirit Temple MQ/Adult,spirit_small_keys:1,[spirit_small_keys:5],ocarina,time,$can_use_lens,nuts" ], "item_count": 1 }, @@ -4726,7 +5111,7 @@ { "name": "Twinrova", "access_rules": [ - "@Spirit Temple MQ/Boss Area,shield3,spirit_boss_key" + "@Spirit Temple MQ/Boss Platform,shield3,spirit_boss_key" ], "hosted_item": "spirit", "chest_unopened_img": "images/HC.png", @@ -5100,7 +5485,8 @@ "name": "Water Trial Clear", "short_name": "Water Trial", "access_rules": [ - "$has_bottle,hammer,$can_LA" + "$has_bottle,hammer,$can_LA", + "$can_BFA,hammer,$can_LA" ], "visibility_rules": [ "setting_trials:1" @@ -5314,7 +5700,8 @@ "name": "Water Trial Chest", "short_name": "Water Trial", "access_rules": [ - "$has_bottle" + "$has_bottle", + "$can_BFA" ], "item_count": 1 }, @@ -5322,7 +5709,8 @@ "name": "Water Trial Clear", "short_name": "Water Trial", "access_rules": [ - "$has_bottle,$can_LA,gc_small_keys:1,[gc_small_keys:3]" + "$has_bottle,$can_LA,gc_small_keys:1,[gc_small_keys:3]", + "$can_BFA,$can_LA,gc_small_keys:1,[gc_small_keys:3]" ], "visibility_rules": [ "setting_trials:1" @@ -5794,12 +6182,12 @@ "access_rules": [ "@Gerudo Training Ground MQ/Stalfos Room,[logic_lens_gtg_mq],$has_bottle,ocarina,time", "@Gerudo Training Ground MQ/Stalfos Room,[logic_lens_gtg_mq],$has_bottle,[logic_gtg_fake_wall],hoverboots", - "@Gerudo Training Ground MQ/Stalfos Room,[logic_lens_gtg_mq],$has_bottle,[ocarina],[time],bombs,shield2", - "@Gerudo Training Ground MQ/Stalfos Room,[logic_lens_gtg_mq],$has_bottle,[ocarina],[time],bombs,shield3", + "@Gerudo Training Ground MQ/Stalfos Room,[logic_lens_gtg_mq],$can_BFA,ocarina,time", + "@Gerudo Training Ground MQ/Stalfos Room,[logic_lens_gtg_mq],$can_BFA,[logic_gtg_fake_wall],hoverboots", "@Gerudo Training Ground MQ/Stalfos Room,$can_use_lens,$has_bottle,ocarina,time", "@Gerudo Training Ground MQ/Stalfos Room,$can_use_lens,$has_bottle,[logic_gtg_fake_wall],hoverboots", - "@Gerudo Training Ground MQ/Stalfos Room,$can_use_lens,$has_bottle,[ocarina],[time],bombs,shield2", - "@Gerudo Training Ground MQ/Stalfos Room,$can_use_lens,$has_bottle,[ocarina],[time],bombs,shield3" + "@Gerudo Training Ground MQ/Stalfos Room,$can_use_lens,$can_BFA,ocarina,time", + "@Gerudo Training Ground MQ/Stalfos Room,$can_use_lens,$can_BFA,[logic_gtg_fake_wall],hoverboots" ], "visibility_rules": [ "hidden_region" diff --git a/ootrando_overworldmap_hamsda/locations/dungeons_entrance.json b/ootrando_overworldmap_hamsda/locations/dungeons_entrance.json index 12552329..c3c41021 100644 --- a/ootrando_overworldmap_hamsda/locations/dungeons_entrance.json +++ b/ootrando_overworldmap_hamsda/locations/dungeons_entrance.json @@ -2985,12 +2985,20 @@ "item_count": 2 }, { - "name": "Boomerang Room Chests", + "name": "Boomerang Room Small Chest", + "short_name": "Boomerang Small", + "access_rules": [ + "$access_location|Jabu Jabus Belly MQ Boomerang Room Small Chest" + ], + "item_count": 1 + }, + { + "name": "Boomerang Chest", "short_name": "Boomerang", "access_rules": [ - "$access_location|Jabu Jabus Belly MQ Boomerang Room Chests" + "$access_location|Jabu Jabus Belly MQ Boomerang Chest" ], - "item_count": 2 + "item_count": 1 }, { "name": "GS Boomerang Chest Room", @@ -3250,13 +3258,21 @@ "item_count": 1 }, { - "name": "After Wind Chests", - "short_name": "After Wind", + "name": "After Wind Enemy Chest", + "short_name": "After Wind Enemy", "access_rules": [ - "$access_location|Shadow Temple After Wind Chests" + "$access_location|Shadow Temple After Wind Enemy Chest" + ], + "item_count": 1 + }, + { + "name": "After Wind Hidden Chest", + "short_name": "After Wind Hidden", + "access_rules": [ + "$access_location|Shadow Temple After Wind Hidden Chest" ], "chest_unopened_img": "images/chest_brown_small_key.png", - "item_count": 2 + "item_count": 1 }, { "name": "GS Near Ship", @@ -3476,17 +3492,26 @@ "visibility_rules": [ "setting_tokens_dungeons" ], + "capture_item": true, "chest_unopened_img": "images/skulltula.png", "chest_opened_img": "images/skulltula_token.png", "item_count": 1 }, { - "name": "After Wind Chests", - "short_name": "After Wind", + "name": "After Wind Enemy Chest", + "short_name": "After Wind Enemy", "access_rules": [ - "$access_location|Shadow Temple MQ After Wind Chests" + "$access_location|Shadow Temple MQ After Wind Enemy Chest" ], - "item_count": 2 + "item_count": 1 + }, + { + "name": "After Wind Hidden Chest", + "short_name": "After Wind Hidden", + "access_rules": [ + "$access_location|Shadow Temple MQ After Wind Hidden Chest" + ], + "item_count": 1 }, { "name": "GS After Wind", diff --git a/ootrando_overworldmap_hamsda/locations/exits_entrance.json b/ootrando_overworldmap_hamsda/locations/exits_entrance.json index ecea6379..a103f073 100644 --- a/ootrando_overworldmap_hamsda/locations/exits_entrance.json +++ b/ootrando_overworldmap_hamsda/locations/exits_entrance.json @@ -18,7 +18,7 @@ "$access_exit|Child Spawn|KF Links House" ], "visibility_rules": [ - "setting_entrance_spawn_shuffle" + "setting_entrance_spawn_child" ], "capture_item": true, "capture_item_layout": "tracker_capture_ow_grotto_interior_dungeon", @@ -50,7 +50,7 @@ "$access_exit|Adult Spawn|Temple of Time" ], "visibility_rules": [ - "setting_entrance_spawn_shuffle" + "setting_entrance_spawn_adult" ], "capture_item": true, "capture_item_layout": "tracker_capture_ow_grotto_interior_dungeon", @@ -2824,7 +2824,7 @@ { "map": "exits", "badge_size": 50, - "x": 1860, + "x": 1865, "y": 360 } ] diff --git a/ootrando_overworldmap_hamsda/locations/overworld.json b/ootrando_overworldmap_hamsda/locations/overworld.json index cf4cf20b..7b6868b3 100644 --- a/ootrando_overworldmap_hamsda/locations/overworld.json +++ b/ootrando_overworldmap_hamsda/locations/overworld.json @@ -19,7 +19,7 @@ "$can_time_travel" ], "visibility_rules": [ - "setting_entrance_spawn_shuffle" + "setting_entrance_spawn_child" ], "capture_item": true, "capture_item_layout": "tracker_capture_spawn_child", @@ -52,7 +52,7 @@ "$can_time_travel" ], "visibility_rules": [ - "setting_entrance_spawn_shuffle" + "setting_entrance_spawn_adult" ], "capture_item": true, "capture_item_layout": "tracker_capture_spawn_adult", @@ -594,16 +594,6 @@ { "name": "LW Bean Patch Near Theater", "sections": [ - { - "name": "Plant Bean", - "access_rules": [ - "$has_age|child,beans,bean_stage_no" - ], - "visibility_rules": [ - "$bean_planting|yes" - ], - "hosted_item": "bean_stage_yes" - }, { "name": "LW GS Bean Patch Near Theater", "short_name": "GS", @@ -637,8 +627,8 @@ "name": "LW GS Above Theater (N)", "short_name": "GS", "access_rules": [ - "$has_age|child,$bean_planting|no,beans", - "$has_age|child,bean_stage_yes", + "setting_plant_beans_on", + "$has_age|child,beans", "[logic_lost_woods_gs_bean],longshot", "[logic_lost_woods_gs_bean],hookshot,bow", "[logic_lost_woods_gs_bean],hookshot,$has_bombchus", @@ -1189,8 +1179,8 @@ "$spawn_access|LH Fishing|adult", "$has_age|adult,ocarina,scarecrow,hookshot", "$has_age|adult,water", - "$has_age|adult,$bean_planting|no,beans", - "$has_age|adult,bean_lake_yes" + "$has_age|adult,setting_plant_beans_on", + "$has_age|both,beans" ], "item_count": 1 } @@ -1233,8 +1223,8 @@ "name": "LH Freestanding PoH", "short_name": "HP", "access_rules": [ - "$has_age|adult,$bean_planting|no,beans", - "$has_age|adult,bean_lake_yes", + "$has_age|adult,setting_plant_beans_on", + "$has_age|both,beans", "$has_age|adult,ocarina,scarecrow,hookshot" ], "chest_unopened_img": "images/HP.png", @@ -1378,16 +1368,6 @@ { "name": "LH Bean Patch", "sections": [ - { - "name": "Plant Bean", - "access_rules": [ - "$has_age|child,beans,bean_lake_no" - ], - "visibility_rules": [ - "$bean_planting|yes" - ], - "hosted_item": "bean_lake_yes" - }, { "name": "LH GS Bean Patch", "short_name": "GS", @@ -2009,12 +1989,28 @@ "mushroom" ], "hosted_item": "capture_oddpotion" + }, + { + "name": "Buy Potion", + "access_rules": [ + "$has_age|adult,wallet,oddpotion", + "$has_age|adult,wallet,poachersaw", + "$has_age|adult,wallet,brokensword", + "$has_age|adult,wallet,prescription", + "$has_age|adult,wallet,speedfrog", + "$has_age|adult,wallet,eyedrops", + "$has_age|adult,wallet,claimcheck" + ], + "visibility_rules": [ + "setting_shuffle_merchants_yes" + ], + "item_count": 1 } ], "map_locations": [ { "map": "adult", - "x": 1860, + "x": 1865, "y": 360 } ] @@ -2377,8 +2373,8 @@ "name": "Graveyard Freestanding PoH", "short_name": "Box HP", "access_rules": [ - "$has_age|adult,$bean_planting|no,beans", - "$has_age|adult,bean_graveyard_yes", + "$has_age|adult,setting_plant_beans_on", + "$has_age|both,beans", "$has_age|adult,longshot", "$has_age|child,boomerang,[logic_graveyard_poh]", "{}" @@ -2509,16 +2505,6 @@ { "name": "Graveyard Bean Patch", "sections": [ - { - "name": "Plant Bean", - "access_rules": [ - "$has_age|child,beans,bean_graveyard_no" - ], - "visibility_rules": [ - "$bean_planting|yes" - ], - "hosted_item": "bean_graveyard_yes" - }, { "name": "Graveyard GS Bean Patch", "short_name": "GS", @@ -2851,13 +2837,16 @@ "name": "DMT Freestanding PoH", "short_name": "HP", "access_rules": [ - "$damage_below_ohko", - "nayrus,magic", - "$has_bottle", + "$child_death_mountain,$damage_below_ohko", + "$child_death_mountain,nayrus,magic", + "$child_death_mountain,$has_bottle", + "$has_age|adult,$damage_below_ohko", + "$has_age|adult,nayrus,magic", + "$has_age|adult,$has_bottle", "$has_age|adult,hoverboots", - "$has_age|both,$bean_planting|no,beans,$has_explosives", - "$has_age|both,$bean_planting|no,beans,lift1,$child_death_mountain", - "$has_age|both,bean_trail_yes" + "$has_age|adult,setting_plant_beans_on", + "$has_age|both,beans,$has_explosives", + "$has_age|both,beans,lift1" ], "chest_unopened_img": "images/HP.png", "chest_opened_img": "images/HP_grey.png", @@ -3047,9 +3036,9 @@ "$has_age|adult,$night_gs,hammer", "$has_age|adult,$night_gs,[logic_trail_gs_lower_hookshot],hookshot", "$has_age|adult,$night_gs,[logic_trail_gs_lower_hovers],hoverboots", - "$has_age|both,$night_gs,[logic_trail_gs_lower_bean],$bean_planting|no,beans,$has_explosives", - "$has_age|both,$night_gs,[logic_trail_gs_lower_bean],$bean_planting|no,beans,lift1", - "$has_age|both,$night_gs,[logic_trail_gs_lower_bean],bean_trail_yes" + "$has_age|adult,$night_gs,[logic_trail_gs_lower_bean],setting_plant_beans_on", + "$has_age|both,$night_gs,[logic_trail_gs_lower_bean],beans,$has_explosives", + "$has_age|both,$night_gs,[logic_trail_gs_lower_bean],beans,lift1" ], "visibility_rules": [ "setting_tokens_overworld" @@ -3096,17 +3085,6 @@ { "name": "DMT Bean Patch", "sections": [ - { - "name": "Plant Bean", - "access_rules": [ - "$has_age|child,beans,bean_trail_no,$has_explosives", - "$child_death_mountain,beans,bean_trail_no,lift1" - ], - "visibility_rules": [ - "$bean_planting|yes" - ], - "hosted_item": "bean_trail_yes" - }, { "name": "DMT GS Bean Patch", "short_name": "GS", @@ -3229,8 +3207,8 @@ "name": "DMC Volcano Freestanding PoH", "short_name": "HP", "access_rules": [ - "$has_age|both,ocarina,bolero,$bean_planting|no,beans", - "$has_age|both,ocarina,bolero,bean_crater_yes", + "$has_age|adult,$dmc_central,setting_plant_beans_on", + "$has_age|both,ocarina,bolero,beans", "$dmc_lower,[logic_crater_bean_poh_with_hovers],hoverboots", "{ocarina,bolero}", "{$link_the_goron}", @@ -3398,16 +3376,6 @@ "$has_age|child,ocarina,bolero" ], "sections": [ - { - "name": "Plant Bean", - "access_rules": [ - "beans,bean_crater_no" - ], - "visibility_rules": [ - "$bean_planting|yes" - ], - "hosted_item": "bean_crater_yes" - }, { "name": "DMC GS Bean Patch", "short_name": "GS", @@ -4002,6 +3970,56 @@ { "name": "ZR Frogs", "sections": [ + { + "name": "ZR Frogs Zeldas Lullaby", + "access_rules": [ + "$child_river,ocarina,lullaby" + ], + "visibility_rules": [ + "setting_shuffle_frogs_yes" + ], + "item_count": 1 + }, + { + "name": "ZR Frogs Eponas Song", + "access_rules": [ + "$child_river,ocarina,epona" + ], + "visibility_rules": [ + "setting_shuffle_frogs_yes" + ], + "item_count": 1 + }, + { + "name": "ZR Frogs Sarias Song", + "access_rules": [ + "$child_river,ocarina,saria" + ], + "visibility_rules": [ + "setting_shuffle_frogs_yes" + ], + "item_count": 1 + }, + { + "name": "ZR Frogs Suns Song", + "access_rules": [ + "$child_river,ocarina,sun" + ], + "visibility_rules": [ + "setting_shuffle_frogs_yes" + ], + "item_count": 1 + }, + { + "name": "ZR Frogs Song of Time", + "access_rules": [ + "$child_river,ocarina,time" + ], + "visibility_rules": [ + "setting_shuffle_frogs_yes" + ], + "item_count": 1 + }, { "name": "ZR Frogs in the Rain", "access_rules": [ @@ -4340,7 +4358,8 @@ { "name": "King Zora", "access_rules": [ - "$has_blue_fire" + "$has_blue_fire", + "$can_BFA" ], "sections": [ { @@ -4409,6 +4428,7 @@ "access_rules": [ "$child_domain", "$adult_domain,$has_blue_fire", + "$adult_domain,$can_BFA", "$spawn_access|ZD Shop|adult" ], "sections": [ @@ -5247,8 +5267,8 @@ "name": "Colossus Freestanding PoH", "short_name": "HP", "access_rules": [ - "$child_colossus,$bean_planting|no,beans,$has_age|adult", - "$child_colossus,bean_colossus_yes,$has_age|adult", + "$has_age|adult,$adult_colossus,setting_plant_beans_on", + "$has_age|adult,$child_colossus,beans", "{$adult_colossus}" ], "capture_item": true, @@ -5330,16 +5350,6 @@ "$child_colossus" ], "sections": [ - { - "name": "Plant Bean", - "access_rules": [ - "beans,bean_colossus_no" - ], - "visibility_rules": [ - "$bean_planting|yes" - ], - "hosted_item": "bean_colossus_yes" - }, { "name": "Colossus GS Bean Patch", "short_name": "GS", @@ -5404,8 +5414,8 @@ "name": "Colossus GS Hill (N)", "short_name": "GS", "access_rules": [ - "$child_colossus,$bean_planting|no,beans", - "$child_colossus,bean_colossus_yes", + "$adult_colossus,setting_plant_beans_on", + "$child_colossus,beans", "$adult_colossus,longshot", "$adult_colossus,hookshot,[logic_colossus_gs]", "{$adult_colossus,bow}", diff --git a/ootrando_overworldmap_hamsda/locations/overworld_entrance.json b/ootrando_overworldmap_hamsda/locations/overworld_entrance.json index a4113737..57b038d2 100644 --- a/ootrando_overworldmap_hamsda/locations/overworld_entrance.json +++ b/ootrando_overworldmap_hamsda/locations/overworld_entrance.json @@ -2642,6 +2642,30 @@ } ] }, + { + "name": "Kak Odd Medicine Building", + "sections": [ + { + "name": "Kak Granny Buy Blue Potion", + "short_name": "Buy Potion", + "access_rules": [ + "$access_location|Kak Granny Buy Blue Potion" + ], + "item_count": 1 + } + ], + "map_locations": [ + { + "map": "locations", + "force_invisibility_rules": [ + "setting_shuffle_merchants_no", + "setting_entrance_interiors_simple" + ], + "x": 1865, + "y": 360 + } + ] + }, { "name": "Kak Bazaar", "sections": [ @@ -3820,6 +3844,56 @@ { "name": "ZR Frogs", "sections": [ + { + "name": "ZR Frogs Zeldas Lullaby", + "access_rules": [ + "$access_location|ZR Frogs Zeldas Lullaby" + ], + "visibility_rules": [ + "setting_shuffle_frogs_yes" + ], + "item_count": 1 + }, + { + "name": "ZR Frogs Eponas Song", + "access_rules": [ + "$access_location|ZR Frogs Eponas Song" + ], + "visibility_rules": [ + "setting_shuffle_frogs_yes" + ], + "item_count": 1 + }, + { + "name": "ZR Frogs Sarias Song", + "access_rules": [ + "$access_location|ZR Frogs Sarias Song" + ], + "visibility_rules": [ + "setting_shuffle_frogs_yes" + ], + "item_count": 1 + }, + { + "name": "ZR Frogs Suns Song", + "access_rules": [ + "$access_location|ZR Frogs Suns Song" + ], + "visibility_rules": [ + "setting_shuffle_frogs_yes" + ], + "item_count": 1 + }, + { + "name": "ZR Frogs Song of Time", + "access_rules": [ + "$access_location|ZR Frogs Song of Time" + ], + "visibility_rules": [ + "setting_shuffle_frogs_yes" + ], + "item_count": 1 + }, { "name": "ZR Frogs in the Rain", "access_rules": [ diff --git a/ootrando_overworldmap_hamsda/manifest.json b/ootrando_overworldmap_hamsda/manifest.json index 7fd389dd..04e7e6e6 100644 --- a/ootrando_overworldmap_hamsda/manifest.json +++ b/ootrando_overworldmap_hamsda/manifest.json @@ -1,7 +1,7 @@ { "name": "OoT Randomizer - Map and Item Tracker", "game_name": "Ocarina of Time Randomizer", - "package_version": "3.7.3.0", + "package_version": "3.8.0.0", "package_uid": "ootrando_overworldmap_hamsda", "platform": "n64", "author": "Hamsda", diff --git a/ootrando_overworldmap_hamsda/scripts/data_per_region.lua b/ootrando_overworldmap_hamsda/scripts/data_per_region.lua index 0af8dd78..4c1eb246 100644 --- a/ootrando_overworldmap_hamsda/scripts/data_per_region.lua +++ b/ootrando_overworldmap_hamsda/scripts/data_per_region.lua @@ -147,7 +147,7 @@ data_per_region = { ["pool"] = ER_POOL_TYPES.ROOT, ["exits"] = { ["KF Links House"] = { - ["setting"] = "setting_entrance_spawn_shuffle", + ["setting"] = "setting_entrance_spawn_child", ["child_access"] = function() return AccessibilityLevel.Normal end, @@ -162,7 +162,7 @@ data_per_region = { ["pool"] = ER_POOL_TYPES.ROOT, ["exits"] = { ["Temple of Time"] = { - ["setting"] = "setting_entrance_spawn_shuffle", + ["setting"] = "setting_entrance_spawn_adult", ["child_access"] = function() return AccessibilityLevel.Normal end, @@ -646,7 +646,7 @@ data_per_region = { end, ["adult_access"] = function() if - has("hoverboots") or has("longshot") or has("logic_lost_woods_bridge") or + has("hoverboots") or has("longshot") or has("logic_lost_woods_bridge") or has("setting_plant_beans_on") or (has("beans") and access_region("Lost Woods", "child") == AccessibilityLevel.Normal) then return AccessibilityLevel.Normal @@ -724,6 +724,9 @@ data_per_region = { return AccessibilityLevel.None end, ["adult_access"] = function() + if has("setting_plant_beans_on") then + return AccessibilityLevel.Normal + end local bean = AccessibilityLevel.None if has("beans") then bean = access_region("LW Beyond Mido", "child") @@ -1213,8 +1216,13 @@ data_per_region = { return AccessibilityLevel.None end, ["adult_access"] = function() + local plant = has("setting_plant_beans_on") and AccessibilityLevel.Normal or AccessibilityLevel.None local beans = has("beans") and AccessibilityLevel.Normal or AccessibilityLevel.None - return or_accessibility(can_use_scarecrow(), and_accessibility(beans, access_region("Lake Hylia", "child"))) + return or_accessibility( + can_use_scarecrow(), + plant, + and_accessibility(beans, access_region("Lake Hylia", "child")) + ) end }, ["LH GS Bean Patch"] = { @@ -1308,10 +1316,12 @@ data_per_region = { end, ["adult_access"] = function() local water = has("water") and AccessibilityLevel.Normal or AccessibilityLevel.None + local plant = has("setting_plant_beans_on") and AccessibilityLevel.Normal or AccessibilityLevel.None local beans = has("beans") and AccessibilityLevel.Normal or AccessibilityLevel.None return or_accessibility( water, can_use_scarecrow(), + plant, and_accessibility(beans, access_region("Lake Hylia", "child")) ) end @@ -2121,6 +2131,9 @@ data_per_region = { return AccessibilityLevel.Inspect end, ["adult_access"] = function() + if has("setting_plant_beans_on") then + return AccessibilityLevel.Normal + end if has("beans") then return access_region("Desert Colossus", "child") end @@ -2154,6 +2167,9 @@ data_per_region = { return AccessibilityLevel.None end, ["adult_access"] = function() + if has("setting_plant_beans_on") then + return AccessibilityLevel.Normal + end local bean = AccessibilityLevel.None if has("beans") then bean = access_region("Desert Colossus", "child") @@ -3704,6 +3720,23 @@ data_per_region = { ["Kak Odd Medicine Building"] = { ["scene"] = "Kak Odd Medicine Building", ["pool"] = ER_POOL_TYPES.INTERIOR, + ["locations"] = { + ["Kak Granny Buy Blue Potion"] = { + ["child_access"] = function() + return AccessibilityLevel.None + end, + ["adult_access"] = function() + local wallet = has("wallet") and AccessibilityLevel.Normal or AccessibilityLevel.None + local trade = + (has("oddpotion") or has("poachersaw") or has("brokensword") or has("prescription") or has("speedfrog") or + has("eyedrops") or + has("claimcheck")) and + AccessibilityLevel.Normal or + AccessibilityLevel.None + return and_accessibility(wallet, trade) + end + } + }, ["exits"] = { ["Kak Backyard"] = { ["child_access"] = function() @@ -3730,6 +3763,9 @@ data_per_region = { return AccessibilityLevel.Inspect end, ["adult_access"] = function() + if has("setting_plant_beans_on") then + return AccessibilityLevel.Normal + end local ls = has("longshot") and AccessibilityLevel.Normal or AccessibilityLevel.None local bean = AccessibilityLevel.None if has("beans") then @@ -4072,6 +4108,9 @@ data_per_region = { if has("hoverboots") then return AccessibilityLevel.Normal end + if has("setting_plant_beans_on") then + return AccessibilityLevel.Normal + end local bean = AccessibilityLevel.None if has("beans") then local lift = AccessibilityLevel.None @@ -4141,13 +4180,12 @@ data_per_region = { end local bean = AccessibilityLevel.None - if has("beans") then - local trick = - has("logic_trail_gs_lower_bean") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak - local lift = AccessibilityLevel.None - if has("lift1") then - lift = AccessibilityLevel.Normal - end + local trick = + has("logic_trail_gs_lower_bean") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak + if has("setting_plant_beans_on") then + bean = trick + elseif has("beans") then + local lift = has("lift1") and AccessibilityLevel.Normal or AccessibilityLevel.None bean = and_accessibility( trick, @@ -4186,6 +4224,7 @@ data_per_region = { return or_accessibility(has_explosives(), and_accessibility(hammer, access_region("Death Mountain", "adult"))) end, ["adult_access"] = function() + local plant = has("setting_plant_beans_on") and AccessibilityLevel.Normal or AccessibilityLevel.None local beans = has("beans") and AccessibilityLevel.Normal or AccessibilityLevel.None local lift = has("lift") and AccessibilityLevel.Normal or AccessibilityLevel.None local trick = has("logic_dmt_climb_hovers") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak @@ -4194,6 +4233,7 @@ data_per_region = { return or_accessibility( can_blast(), or_accessibility( + plant, and_accessibility(beans, lift, access_region("Death Mountain", "child")), and_accessibility(trick, hovers) ) @@ -4856,7 +4896,9 @@ data_per_region = { has("logic_crater_bean_poh_with_hovers") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak local bean = AccessibilityLevel.None - if has("beans") then + if has("setting_plant_beans_on") then + bean = AccessibilityLevel.Normal + elseif has("beans") then bean = access_region("DMC Central Nearby", "child") end @@ -4913,7 +4955,7 @@ data_per_region = { return AccessibilityLevel.None end, ["adult_access"] = function() - if has("hoverboots") or has("hookshot") then + if has("hoverboots") or has("hookshot") or has("setting_plant_beans_on") then return AccessibilityLevel.Normal end if has("beans") then @@ -4927,6 +4969,9 @@ data_per_region = { return AccessibilityLevel.None end, ["adult_access"] = function() + if has("setting_plant_beans_on") then + return AccessibilityLevel.Normal + end if has("beans") then return access_region("DMC Central Local", "child") end @@ -5102,6 +5147,61 @@ data_per_region = { return AccessibilityLevel.None end }, + ["ZR Frogs Zeldas Lullaby"] = { + ["child_access"] = function() + if has("ocarina") and has("lullaby") then + return AccessibilityLevel.Normal + end + return AccessibilityLevel.None + end, + ["adult_access"] = function() + return AccessibilityLevel.None + end + }, + ["ZR Frogs Eponas Song"] = { + ["child_access"] = function() + if has("ocarina") and has("epona") then + return AccessibilityLevel.Normal + end + return AccessibilityLevel.None + end, + ["adult_access"] = function() + return AccessibilityLevel.None + end + }, + ["ZR Frogs Sarias Song"] = { + ["child_access"] = function() + if has("ocarina") and has("saria") then + return AccessibilityLevel.Normal + end + return AccessibilityLevel.None + end, + ["adult_access"] = function() + return AccessibilityLevel.None + end + }, + ["ZR Frogs Suns Song"] = { + ["child_access"] = function() + if has("ocarina") and has("sun") then + return AccessibilityLevel.Normal + end + return AccessibilityLevel.None + end, + ["adult_access"] = function() + return AccessibilityLevel.None + end + }, + ["ZR Frogs Song of Time"] = { + ["child_access"] = function() + if has("ocarina") and has("time") then + return AccessibilityLevel.Normal + end + return AccessibilityLevel.None + end, + ["adult_access"] = function() + return AccessibilityLevel.None + end + }, ["ZR Near Open Grotto Freestanding PoH"] = { ["child_access"] = function() return AccessibilityLevel.Normal @@ -5299,7 +5399,7 @@ data_per_region = { return AccessibilityLevel.None end, ["adult_access"] = function() - return has_blue_fire() + return or_accessibility(can_BFA(), has_blue_fire()) end }, ["ZD GS Frozen Waterfall"] = { @@ -6260,7 +6360,6 @@ data_per_region = { ) end, ["adult_access"] = function() - --TODO: irrelevant inspect logic if has("hookshot") then return can_blast() end @@ -7148,7 +7247,7 @@ data_per_region = { }, ["Deku Tree Basement Chest"] = { ["child_access"] = function() - if has("nuts") then + if has("nuts") or has("deku_tree_shortcuts") then return AccessibilityLevel.Normal end return can_child_attack() @@ -7219,6 +7318,7 @@ data_per_region = { local sling = has("slingshot") and AccessibilityLevel.Normal or AccessibilityLevel.None local bow = has("bow") and AccessibilityLevel.Normal or AccessibilityLevel.None local trick = has("logic_deku_b1_skip") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak + local shortcut = has("deku_tree_shortcuts") and AccessibilityLevel.Normal or AccessibilityLevel.None local adult = access_region("Deku Tree Lobby", "adult") return or_accessibility( @@ -7226,7 +7326,7 @@ data_per_region = { or_accessibility(sticks, df, and_accessibility(adult, bow)), or_accessibility(sling, and_accessibility(adult, bow)) ), - or_accessibility(trick, adult) + or_accessibility(trick, adult, shortcut) ) end, ["adult_access"] = function() @@ -7244,6 +7344,10 @@ data_per_region = { }, ["Deku Tree Boss Room"] = { ["child_access"] = function() + if has("deku_tree_shortcuts") then + return AccessibilityLevel.Normal + end + local sticks = has("sticks") and AccessibilityLevel.Normal or AccessibilityLevel.None local df = (has("dinsfire") and has("magic")) and AccessibilityLevel.Normal or AccessibilityLevel.None local fa = @@ -7266,6 +7370,10 @@ data_per_region = { ) end, ["adult_access"] = function() + if has("deku_tree_shortcuts") then + return AccessibilityLevel.Normal + end + local sticks = has("sticks") and AccessibilityLevel.Normal or AccessibilityLevel.None local df = (has("dinsfire") and has("magic")) and AccessibilityLevel.Normal or AccessibilityLevel.None local fa = @@ -7352,13 +7460,13 @@ data_per_region = { ["locations"] = { ["Queen Gohma"] = { ["child_access"] = function() - if has("shield1") and (has("sword1") or has("sticks")) then + if (has("shield1") or has("deku_tree_shortcuts")) and (has("sword1") or has("sticks")) then return AccessibilityLevel.Normal end return AccessibilityLevel.None end, ["adult_access"] = function() - if has("shield2") then + if has("shield2") or has("deku_tree_shortcuts") then return AccessibilityLevel.Normal end return AccessibilityLevel.None @@ -7526,7 +7634,10 @@ data_per_region = { }, ["Deku Tree MQ Basement Ledge"] = { ["child_access"] = function() - if has("logic_deku_b1_skip") or (access_region("Deku Tree MQ Lobby", "adult") == AccessibilityLevel.Normal) then + if + has("logic_deku_b1_skip") or (access_region("Deku Tree MQ Lobby", "adult") == AccessibilityLevel.Normal) or + has("deku_tree_shortcuts") + then return AccessibilityLevel.Normal end return AccessibilityLevel.SequenceBreak @@ -7777,24 +7888,44 @@ data_per_region = { }, ["Queen Gohma"] = { ["child_access"] = function() - if has("shield1") and (has("sword1") or has("sticks")) then - if has("sticks") or (has("dinsfire") and has("magic")) then + if has("sword1") or has("sticks") then + if has("deku_tree_shortcuts") then return AccessibilityLevel.Normal - elseif has("bow") and has("firearrow") and has("magic") then - return access_region("Deku Tree MQ Basement Ledge", "adult") end + + local adult = access_region("Deku Tree MQ Basement Ledge", "adult") + local shield1 = has("shield1") and AccessibilityLevel.Normal or AccessibilityLevel.None + local shield2 = has("shield2") and AccessibilityLevel.Normal or AccessibilityLevel.None + local sticks = has("sticks") and AccessibilityLevel.Normal or AccessibilityLevel.None + local df = (has("dinsfire") and has("magic")) and AccessibilityLevel.Normal or AccessibilityLevel.None + local fa = + (has("bow") and has("firearrow") and has("magic")) and AccessibilityLevel.Normal or + AccessibilityLevel.None + + return and_accessibility( + or_accessibility(sticks, df, and_accessibility(fa, adult)), + or_accessibility(shield1, and_accessibility(shield2, adult)) + ) end return AccessibilityLevel.None end, ["adult_access"] = function() - if has("shield2") then - if (has("dinsfire") and has("magic")) or (has("bow") and has("firearrow") and has("magic")) then - return AccessibilityLevel.Normal - elseif has("sticks") then - return access_region("Deku Tree MQ Basement Ledge", "child") - end + if has("deku_tree_shortcuts") then + return AccessibilityLevel.Normal end - return AccessibilityLevel.None + + local child = access_region("Deku Tree MQ Basement Ledge", "child") + local shield1 = has("shield1") and AccessibilityLevel.Normal or AccessibilityLevel.None + local shield2 = has("shield2") and AccessibilityLevel.Normal or AccessibilityLevel.None + local sticks = has("sticks") and AccessibilityLevel.Normal or AccessibilityLevel.None + local df = (has("dinsfire") and has("magic")) and AccessibilityLevel.Normal or AccessibilityLevel.None + local fa = + (has("bow") and has("firearrow") and has("magic")) and AccessibilityLevel.Normal or AccessibilityLevel.None + + return and_accessibility( + or_accessibility(fa, df, and_accessibility(sticks, child)), + or_accessibility(shield2, and_accessibility(shield1, child)) + ) end } }, @@ -7865,7 +7996,7 @@ data_per_region = { }, ["Dodongos Cavern Lobby"] = { ["child_access"] = function() - if has("lift1") then + if has("lift1") or has("dodongos_cavern_shortcuts") then return AccessibilityLevel.Normal end @@ -7876,7 +8007,7 @@ data_per_region = { ) end, ["adult_access"] = function() - if has("lift1") then + if has("lift1") or has("dodongos_cavern_shortcuts") then return AccessibilityLevel.Normal end return can_blast() @@ -7890,15 +8021,21 @@ data_per_region = { ["locations"] = { ["Dodongos Cavern Map Chest"] = { ["child_access"] = function() - return AccessibilityLevel.Normal + if has("lift1") then + return AccessibilityLevel.Normal + end + return has_explosives() end, ["adult_access"] = function() - return AccessibilityLevel.Normal + if has("lift1") then + return AccessibilityLevel.Normal + end + return can_blast() end }, ["Dodongos Cavern GS Side Room Near Lower Lizalfos"] = { ["child_access"] = function() - if has("sling") or has("boomerang") or has("sticks") or has("sword1") then + if has("lift1") and (has("sling") or has("boomerang") or has("sticks") or has("sword1")) then return AccessibilityLevel.Normal end return has_explosives() @@ -7910,7 +8047,8 @@ data_per_region = { ["Dodongos Cavern GS Scarecrow"] = { ["child_access"] = function() local trick = has("logic_dc_scarecrow_gs") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak - return and_accessibility(trick, can_child_attack()) + local lift1 = has("lift1") and AccessibilityLevel.Normal or AccessibilityLevel.None + return and_accessibility(trick, can_child_attack(), or_accessibility(has_explosives(), lift1)) end, ["adult_access"] = function() local ls = has("longshot") and AccessibilityLevel.Normal or AccessibilityLevel.None @@ -7920,18 +8058,24 @@ data_per_region = { }, ["Dodongos Cavern Deku Scrub Side Room Near Dodongos"] = { ["child_access"] = function() - if has("sling") or has("sticks") or has("sword1") then - return AccessibilityLevel.Normal + if has("sling") or has("sticks") or has("bombs") or has("sword1") then + if has("lift1") then + return AccessibilityLevel.Normal + end + return has_explosives() end - return has_explosives() + return AccessibilityLevel.None end, ["adult_access"] = function() - return AccessibilityLevel.Normal + if has("lift1") then + return AccessibilityLevel.Normal + end + return can_blast() end }, ["Dodongos Cavern Deku Scrub Lobby"] = { ["child_access"] = function() - return AccessibilityLevel.Normal + return can_stun_deku() end, ["adult_access"] = function() return AccessibilityLevel.Normal @@ -7949,16 +8093,21 @@ data_per_region = { }, ["Dodongos Cavern Staircase Room"] = { ["child_access"] = function() - local explo = AccessibilityLevel.None - if has("sticks") then - return AccessibilityLevel.Normal - elseif has("dinsfire") and has("magic") then - if has("sling") or has("sword1") then - return AccessibilityLevel.Normal - end - explo = has_explosives() - end - return or_accessibility(explo, access_region("Dodongos Cavern Lobby", "adult")) + local adult = access_region("Dodongos Cavern Lobby", "adult") + local lift1 = has("lift1") and AccessibilityLevel.Normal or AccessibilityLevel.None + local sticks = has("sticks") and AccessibilityLevel.Normal or AccessibilityLevel.None + local df = (has("dinsfire") and has("magic")) and AccessibilityLevel.Normal or AccessibilityLevel.None + local sling = has("sling") and AccessibilityLevel.Normal or AccessibilityLevel.None + local bombs = has("bombs") and AccessibilityLevel.Normal or AccessibilityLevel.None + local sword1 = has("sword1") and AccessibilityLevel.Normal or AccessibilityLevel.None + + return or_accessibility( + adult, + and_accessibility( + or_accessibility(has_explosives(), lift1), + or_accessibility(sticks, and_accessibility(df, or_accessibility(sling, bombs, sword1))) + ) + ) end, ["adult_access"] = function() return AccessibilityLevel.Normal @@ -7971,6 +8120,20 @@ data_per_region = { ["adult_access"] = function() return access_region("Dodongos Cavern Far Bridge", "child") end + }, + ["Dodongos Cavern Boss Area"] = { + ["child_access"] = function() + if has("dodongos_cavern_shortcuts") then + return AccessibilityLevel.Normal + end + return AccessibilityLevel.None + end, + ["adult_access"] = function() + if has("dodongos_cavern_shortcuts") then + return AccessibilityLevel.Normal + end + return AccessibilityLevel.None + end } } }, @@ -7980,10 +8143,16 @@ data_per_region = { ["locations"] = { ["Dodongos Cavern Compass Chest"] = { ["child_access"] = function() - return AccessibilityLevel.Normal + if has("lift1") then + return AccessibilityLevel.Normal + end + return has_explosives() end, ["adult_access"] = function() - return AccessibilityLevel.Normal + if has("lift1") then + return AccessibilityLevel.Normal + end + return can_blast() end }, ["Dodongos Cavern GS Vines Above Stairs"] = { @@ -8090,20 +8259,32 @@ data_per_region = { }, ["Dodongos Cavern Far Bridge"] = { ["child_access"] = function() - if has("sling") then - return AccessibilityLevel.Normal - end - local trick = has("logic_dc_slingshot_skip") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak - if has("sticks") or has("sword1") then - return trick - end - return and_accessibility(trick, has_explosives()) + local lift1 = has("lift1") and AccessibilityLevel.Normal or AccessibilityLevel.None + local sling = has("slingshot") and AccessibilityLevel.Normal or AccessibilityLevel.None + local trick_sling = + has("logic_dc_slingshot_skip") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak + local sticks = has("sticks") and AccessibilityLevel.Normal or AccessibilityLevel.None + local bombs = has("bombs") and AccessibilityLevel.Normal or AccessibilityLevel.None + local sword1 = has("sword1") and AccessibilityLevel.Normal or AccessibilityLevel.None + + return and_accessibility( + or_accessibility(has_explosives(), lift1), + or_accessibility(sling, and_accessibility(trick_sling, or_accessibility(sticks, bombs, sword1))) + ) end, ["adult_access"] = function() - if has("bow") or has("hoverboots") or has("longshot") or has("logic_dc_jump") then - return AccessibilityLevel.Normal - end - return AccessibilityLevel.SequenceBreak + local hovers = has("hoverboots") and AccessibilityLevel.Normal or AccessibilityLevel.None + local longshot = has("longshot") and AccessibilityLevel.Normal or AccessibilityLevel.None + local trick_jump = has("logic_dc_jump") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak + local lift1 = has("lift1") and AccessibilityLevel.Normal or AccessibilityLevel.None + local bow = has("bow") and AccessibilityLevel.Normal or AccessibilityLevel.None + + return or_accessibility( + hovers, + longshot, + trick_jump, + and_accessibility(or_accessibility(can_blast(), lift1), bow) + ) end } } @@ -8182,10 +8363,10 @@ data_per_region = { }, ["Dodongos Cavern GS Back Room"] = { ["child_access"] = function() - return AccessibilityLevel.Normal + return has_explosives() end, ["adult_access"] = function() - return AccessibilityLevel.Normal + return can_blast() end }, ["King Dodongo"] = { @@ -8230,7 +8411,7 @@ data_per_region = { }, ["Dodongos Cavern MQ Lobby"] = { ["child_access"] = function() - if has("lift1") then + if has("lift1") or has("dodongos_cavern_shortcuts") then return AccessibilityLevel.Normal end @@ -8241,7 +8422,7 @@ data_per_region = { ) end, ["adult_access"] = function() - if has("lift1") then + if has("lift1") or has("dodongos_cavern_shortcuts") then return AccessibilityLevel.Normal end return can_blast() @@ -8255,43 +8436,118 @@ data_per_region = { ["locations"] = { ["Dodongos Cavern MQ Map Chest"] = { ["child_access"] = function() - return AccessibilityLevel.Normal - end, - ["adult_access"] = function() - return AccessibilityLevel.Normal - end - }, - ["Dodongos Cavern MQ Compass Chest"] = { - ["child_access"] = function() - if has("nuts") then + if has("lift1") then return AccessibilityLevel.Normal end - return can_child_attack() + return has_explosives() end, ["adult_access"] = function() - return AccessibilityLevel.Normal + if has("lift1") then + return AccessibilityLevel.Normal + end + return can_blast() end }, - ["Dodongos Cavern MQ Larvae Room Chest"] = { + ["Dodongos Cavern MQ Deku Scrubs Lobby"] = { ["child_access"] = function() - if has("sticks") or (has("dinsfire") and has("magic")) then - return AccessibilityLevel.Normal - end - return AccessibilityLevel.None + return can_stun_deku() end, ["adult_access"] = function() - return has_fire() + return AccessibilityLevel.Normal end - }, - ["Dodongos Cavern MQ Torch Puzzle Room Chest"] = { + } + }, + ["exits"] = { + ["Dodongos Cavern MQ Elevator"] = { ["child_access"] = function() - if has("sticks") or (has("dinsfire") and has("magic")) then + if has("lift1") then return AccessibilityLevel.Normal end - return has_explosives() + + local hammer = has("hammer") and AccessibilityLevel.Normal or AccessibilityLevel.None + return or_accessibility( + has_explosives(), + and_accessibility(hammer, access_region("Dodongos Cavern MQ Lobby", "adult")) + ) end, ["adult_access"] = function() - if has("dinsfire") and has("magic") then + if has("lift1") then + return AccessibilityLevel.Normal + end + return can_blast() + end + }, + ["Dodongos Cavern MQ Lower Right Side"] = { + ["child_access"] = function() + local hammer = has("hammer") and AccessibilityLevel.Normal or AccessibilityLevel.None + return or_accessibility( + has_explosives(), + and_accessibility(hammer, access_region("Dodongos Cavern MQ Lobby", "adult")) + ) + end, + ["adult_access"] = function() + return can_blast() + end + }, + ["Dodongos Cavern MQ Bomb Bag Area"] = { + ["child_access"] = function() + return AccessibilityLevel.None + end, + ["adult_access"] = function() + return AccessibilityLevel.Normal + end + }, + ["Dodongos Cavern MQ Boss Area"] = { + ["child_access"] = function() + if has("dodongos_cavern_shortcuts") then + return AccessibilityLevel.Normal + end + return AccessibilityLevel.None + end, + ["adult_access"] = function() + if has("dodongos_cavern_shortcuts") then + return AccessibilityLevel.Normal + end + return AccessibilityLevel.None + end + } + } + }, + ["Dodongos Cavern MQ Elevator"] = { + ["scene"] = "Dodongos Cavern", + ["pool"] = ER_POOL_TYPES.DUNGEON, + ["locations"] = { + ["Dodongos Cavern MQ Compass Chest"] = { + ["child_access"] = function() + if has("nuts") then + return AccessibilityLevel.Normal + end + return can_child_attack() + end, + ["adult_access"] = function() + return AccessibilityLevel.Normal + end + }, + ["Dodongos Cavern MQ Larvae Room Chest"] = { + ["child_access"] = function() + if has("sticks") or (has("dinsfire") and has("magic")) then + return AccessibilityLevel.Normal + end + return AccessibilityLevel.None + end, + ["adult_access"] = function() + return has_fire() + end + }, + ["Dodongos Cavern MQ Torch Puzzle Room Chest"] = { + ["child_access"] = function() + if has("sticks") or (has("dinsfire") and has("magic")) then + return AccessibilityLevel.Normal + end + return has_explosives() + end, + ["adult_access"] = function() + if has("dinsfire") and has("magic") then return AccessibilityLevel.Normal end if has("logic_dc_jump") or has("hoverboots") or has("hookshot") then @@ -8334,23 +8590,9 @@ data_per_region = { return can_blast() end }, - ["Dodongos Cavern MQ Deku Scrubs Lobby"] = { - ["child_access"] = function() - if has("nuts") or has("shield1") then - return AccessibilityLevel.Normal - end - return can_child_attack() - end, - ["adult_access"] = function() - return AccessibilityLevel.Normal - end - }, ["Dodongos Cavern MQ Deku Scrub Staircase"] = { ["child_access"] = function() - if has("nuts") or has("shield1") then - return AccessibilityLevel.Normal - end - return can_child_attack() + return can_stun_deku() end, ["adult_access"] = function() return AccessibilityLevel.Normal @@ -8360,41 +8602,34 @@ data_per_region = { ["exits"] = { ["Dodongos Cavern MQ Lower Right Side"] = { ["child_access"] = function() - local smash = AccessibilityLevel.None - if has("hammer") then - smash = access_region("Dodongos Cavern MQ Lobby", "adult") - end - local flower = AccessibilityLevel.None - if has("sticks") or (has("dinsfire") and has("magic")) then - flower = AccessibilityLevel.Normal - end - return or_accessibility( - or_accessibility(has_explosives(), smash), - and_accessibility(flower, damage_single_instance_ohko()) - ) + local sticks = has("sticks") and AccessibilityLevel.Normal or AccessibilityLevel.None + local df = (has("dinsfire") and has("magic")) and AccessibilityLevel.Normal or AccessibilityLevel.None + local lift1 = has("lift1") and AccessibilityLevel.Normal or AccessibilityLevel.None + + return and_accessibility(or_accessibility(sticks, df), lift1, damage_single_instance_ohko()) end, ["adult_access"] = function() - local flower = AccessibilityLevel.None - if has("dinsfire") and has("magic") then - flower = AccessibilityLevel.Normal - elseif has("sticks") then - flower = access_region("Dodongos Cavern MQ Lobby", "child") - end - return or_accessibility(can_blast(), and_accessibility(flower, damage_single_instance_ohko())) + local sticks = has("sticks") and AccessibilityLevel.Normal or AccessibilityLevel.None + local df = (has("dinsfire") and has("magic")) and AccessibilityLevel.Normal or AccessibilityLevel.None + local lift1 = has("lift1") and AccessibilityLevel.Normal or AccessibilityLevel.None + + return and_accessibility( + or_accessibility(and_accessibility(sticks, access_region("Dodongos Cavern MQ Elevator", "child")), df), + lift1, + damage_single_instance_ohko() + ) end }, ["Dodongos Cavern MQ Bomb Bag Area"] = { ["child_access"] = function() - local adult = access_region("Dodongos Cavern MQ Lobby", "adult") - local recoil = AccessibilityLevel.None - if has("sword1") or has("sticks") then - local trick = AccessibilityLevel.SequenceBreak - if has("logic_dc_mq_child_bombs") then - trick = AccessibilityLevel.Normal - end - recoil = and_accessibility(trick, damage_single_instance_ohko()) - end - return or_accessibility(and_accessibility(adult, has_explosives()), recoil) + local sword1 = has("sword1") and AccessibilityLevel.Normal or AccessibilityLevel.None + local sticks = has("sticks") and AccessibilityLevel.Normal or AccessibilityLevel.None + local trick = has("logic_dc_mq_child_bombs") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak + + return or_accessibility( + and_accessibility(access_region("Dodongos Cavern MQ Bomb Bag Area", "adult"), has_explosives()), + and_accessibility(trick, or_accessibility(sword1, sticks), damage_single_instance_ohko()) + ) end, ["adult_access"] = function() return AccessibilityLevel.Normal @@ -8402,41 +8637,48 @@ data_per_region = { }, ["Dodongos Cavern MQ Boss Area"] = { ["child_access"] = function() + local adult = access_region("Dodongos Cavern MQ Elevator", "adult") local lift = has("lift1") and AccessibilityLevel.Normal or AccessibilityLevel.None local sticks = has("sticks") and AccessibilityLevel.Normal or AccessibilityLevel.None + local hammer = has("hammer") and AccessibilityLevel.Normal or AccessibilityLevel.None + local hb = has("hoverboots") and AccessibilityLevel.Normal or AccessibilityLevel.None + local hs = has("hookshot") and AccessibilityLevel.Normal or AccessibilityLevel.None local df = (has("dinsfire") and has("magic")) and AccessibilityLevel.Normal or AccessibilityLevel.None - local trick_eyes = has("logic_dc_mq_eyes") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak + local trick_adult = + has("logic_dc_mq_eyes_adult") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak local trick_child = - has("logic_dc_mq_child_back") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak + has("logic_dc_mq_eyes_child") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak + local trick_jump = has("logic_dc_jump") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak return or_accessibility( has_explosives(), - and_accessibility(trick_eyes, lift, trick_child, or_accessibility(sticks, df)) + and_accessibility( + lift, + or_accessibility(and_accessibility(trick_adult, adult), trick_child), + or_accessibility(sticks, df, and_accessibility(adult, or_accessibility(trick_jump, hammer, hb, hs))) + ) ) end, ["adult_access"] = function() + local child = access_region("Dodongos Cavern MQ Elevator", "child") local lift = has("lift1") and AccessibilityLevel.Normal or AccessibilityLevel.None local sticks = has("sticks") and AccessibilityLevel.Normal or AccessibilityLevel.None local hammer = has("hammer") and AccessibilityLevel.Normal or AccessibilityLevel.None local hb = has("hoverboots") and AccessibilityLevel.Normal or AccessibilityLevel.None local hs = has("hookshot") and AccessibilityLevel.Normal or AccessibilityLevel.None local df = (has("dinsfire") and has("magic")) and AccessibilityLevel.Normal or AccessibilityLevel.None - local trick_eyes = has("logic_dc_mq_eyes") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak + local trick_adult = + has("logic_dc_mq_eyes_adult") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak + local trick_child = + has("logic_dc_mq_eyes_child") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak local trick_jump = has("logic_dc_jump") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak return or_accessibility( has_explosives(), and_accessibility( - trick_eyes, lift, - or_accessibility( - and_accessibility(sticks, access_region("Dodongos Cavern MQ Lobby", "child")), - df, - trick_jump, - hammer, - hb, - hs - ) + or_accessibility(trick_adult, and_accessibility(trick_child, child)), + or_accessibility(and_accessibility(sticks, child), df, trick_jump, hammer, hb, hs) ) ) end @@ -8449,13 +8691,14 @@ data_per_region = { ["locations"] = { ["Dodongos Cavern MQ Deku Scrub Side Room Near Lower Lizalfos"] = { ["child_access"] = function() - if has("nuts") or has("shield1") then - return AccessibilityLevel.Normal - end - return can_child_attack() + local lift1 = has("lift1") and AccessibilityLevel.Normal or AccessibilityLevel.None + return and_accessibility(or_accessibility(has_explosives(), lift1), can_stun_deku()) end, ["adult_access"] = function() - return AccessibilityLevel.Normal + if has("lift1") then + return AccessibilityLevel.Normal + end + return can_blast() end } }, @@ -8549,15 +8792,59 @@ data_per_region = { return AccessibilityLevel.Normal end }, - ["Dodongos Cavern MQ Boss Room Chest"] = { + ["Dodongos Cavern MQ GS Back Area"] = { ["child_access"] = function() + local rang = has("boomerang") and AccessibilityLevel.Normal or AccessibilityLevel.None + local df = (has("dinsfire") and has("magic")) and AccessibilityLevel.Normal or AccessibilityLevel.None + local shortcut = has("dodongos_cavern_shortcuts") and AccessibilityLevel.Normal or AccessibilityLevel.None + local lift1 = has("lift1") and AccessibilityLevel.Normal or AccessibilityLevel.None + local sticks = has("sticks") and AccessibilityLevel.Normal or AccessibilityLevel.None + local nuts = has("nuts") and AccessibilityLevel.Normal or AccessibilityLevel.None + local sword1 = has("sword1") and AccessibilityLevel.Normal or AccessibilityLevel.None + local sling = has("sling") and AccessibilityLevel.Normal or AccessibilityLevel.None + + return or_accessibility( + has_explosives(), + rang, + df, + and_accessibility(shortcut, or_accessibility(can_child_attack(), lift1)), + or_accessibility(sticks, and_accessibility(or_accessibility(nuts, rang), or_accessibility(sword1, sling))) + ) + end, + ["adult_access"] = function() return AccessibilityLevel.Normal + end + } + }, + ["exits"] = { + ["Dodongos Cavern MQ Boss Room"] = { + ["child_access"] = function() + local df = (has("dinsfire") and has("magic")) and AccessibilityLevel.Normal or AccessibilityLevel.None + local shortcut = has("dodongos_cavern_shortcuts") and AccessibilityLevel.Normal or AccessibilityLevel.None + local sticks = has("sticks") and AccessibilityLevel.Normal or AccessibilityLevel.None + local nuts = has("nuts") and AccessibilityLevel.Normal or AccessibilityLevel.None + local rang = has("boomerang") and AccessibilityLevel.Normal or AccessibilityLevel.None + local sword1 = has("sword1") and AccessibilityLevel.Normal or AccessibilityLevel.None + local sling = has("sling") and AccessibilityLevel.Normal or AccessibilityLevel.None + + return or_accessibility( + has_explosives(), + df, + shortcut, + or_accessibility(sticks, and_accessibility(or_accessibility(nuts, rang), or_accessibility(sword1, sling))) + ) end, ["adult_access"] = function() return AccessibilityLevel.Normal end - }, - ["Dodongos Cavern MQ GS Back Area"] = { + } + } + }, + ["Dodongos Cavern MQ Boss Room"] = { + ["scene"] = "Dodongos Cavern", + ["pool"] = ER_POOL_TYPES.DUNGEON, + ["locations"] = { + ["Dodongos Cavern MQ Boss Room Chest"] = { ["child_access"] = function() return AccessibilityLevel.Normal end, @@ -8567,18 +8854,34 @@ data_per_region = { }, ["King Dodongo"] = { ["child_access"] = function() - if (has("bombs") or has("lift1")) and (has("sticks") or has("sword1")) then - return has_explosives() - end - return AccessibilityLevel.None + local shortcut = has("dodongos_cavern_shortcuts") and AccessibilityLevel.Normal or AccessibilityLevel.None + local bombs = has("bombs") and AccessibilityLevel.Normal or AccessibilityLevel.None + local lift1 = has("lift1") and AccessibilityLevel.Normal or AccessibilityLevel.None + local sticks = has("sticks") and AccessibilityLevel.Normal or AccessibilityLevel.None + local sword1 = has("sword1") and AccessibilityLevel.Normal or AccessibilityLevel.None + + local floor = or_accessibility(has_explosives(), shortcut) + local stun = or_accessibility(bombs, lift1) + local damage = or_accessibility(sticks, sword1) + + return and_accessibility(floor, stun, damage) end, ["adult_access"] = function() - if has("bombs") or has("lift1") then - return can_blast() - elseif has("bombchu") and (has("shield2") or has("shield3")) then - return AccessibilityLevel.SequenceBreak - end - return AccessibilityLevel.None + local hammer = has("hammer") and AccessibilityLevel.Normal or AccessibilityLevel.None + local trick = + has("logic_dc_mq_hammer_floor") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak + local shortcut = has("dodongos_cavern_shortcuts") and AccessibilityLevel.Normal or AccessibilityLevel.None + local bombs = has("bombs") and AccessibilityLevel.Normal or AccessibilityLevel.None + local lift1 = has("lift1") and AccessibilityLevel.Normal or AccessibilityLevel.None + local bombchu = has("bombchu") and AccessibilityLevel.Normal or AccessibilityLevel.None + local shield = (has("shield2") or has("shield3")) and AccessibilityLevel.Normal or AccessibilityLevel.None + + local floor = or_accessibility(and_accessibility(hammer, trick), has_explosives(), shortcut) + local stun = + or_accessibility(bombs, lift1, and_accessibility(AccessibilityLevel.SequenceBreak, bombchu, shield)) + local damage = AccessibilityLevel.Normal + + return and_accessibility(floor, stun, damage) end } } @@ -8672,6 +8975,7 @@ data_per_region = { local trick = has("logic_fire_boss_door_jump") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak local hb = has("hoverboots") and AccessibilityLevel.Normal or AccessibilityLevel.None + local shortcut = has("fire_temple_shortcuts") and AccessibilityLevel.Normal or AccessibilityLevel.None local sot = (has("ocarina") and has("time")) and AccessibilityLevel.Normal or AccessibilityLevel.None return and_accessibility( @@ -8679,6 +8983,7 @@ data_per_region = { or_accessibility( trick, hb, + shortcut, and_accessibility(or_accessibility(sot, has_explosives()), access_region("Fire Temple Upper", "adult")) ) ) @@ -9055,13 +9360,17 @@ data_per_region = { ["adult_access"] = function() if has("hammer") and has("fire_boss_key") then local tunic = has("redtunic") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak - local jump = - (has("logic_fire_boss_door_jump") or has("hoverboots")) and AccessibilityLevel.Normal or - AccessibilityLevel.SequenceBreak + local trick = + has("logic_fire_boss_door_jump") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak + local hoverboots = has("hoverboots") and AccessibilityLevel.Normal or AccessibilityLevel.None + local shortcut = has("fire_temple_shortcuts") and AccessibilityLevel.Normal or AccessibilityLevel.None return and_accessibility( tunic, - or_accessibility(and_accessibility(has_fire(), jump), access_region("Fire Temple MQ Upper", "adult")) + or_accessibility( + and_accessibility(has_fire(), or_accessibility(trick, hoverboots, shortcut)), + access_region("Fire Temple MQ Upper", "adult") + ) ) end return AccessibilityLevel.None @@ -9532,9 +9841,15 @@ data_per_region = { }, ["Forest Temple Boss Region"] = { ["child_access"] = function() + if has("forest_temple_shortcuts") then + return AccessibilityLevel.Normal + end return poes_killed() end, ["adult_access"] = function() + if has("forest_temple_shortcuts") then + return AccessibilityLevel.Normal + end return poes_killed() end } @@ -9922,7 +10237,10 @@ data_per_region = { ["locations"] = { ["Forest Temple Basement Chest"] = { ["child_access"] = function() - return AccessibilityLevel.Normal + if has("nuts") then + return AccessibilityLevel.Normal + end + return can_child_attack() end, ["adult_access"] = function() return AccessibilityLevel.Normal @@ -9950,13 +10268,13 @@ data_per_region = { }, ["Phantom Ganon"] = { ["child_access"] = function() - if has("forest_boss_key") then + if has("forest_boss_key") and has("slingshot") and has("sword1") then return AccessibilityLevel.Normal end return AccessibilityLevel.None end, ["adult_access"] = function() - if has("forest_boss_key") then + if has("forest_boss_key") and (has("bow") or has("hookshot")) then return AccessibilityLevel.Normal end return AccessibilityLevel.None @@ -10125,9 +10443,15 @@ data_per_region = { }, ["Forest Temple MQ Boss Region"] = { ["child_access"] = function() + if has("forest_temple_shortcuts") then + return AccessibilityLevel.Normal + end return poes_killed_mq() end, ["adult_access"] = function() + if has("forest_temple_shortcuts") then + return AccessibilityLevel.Normal + end return poes_killed_mq() end } @@ -10522,13 +10846,13 @@ data_per_region = { }, ["Phantom Ganon"] = { ["child_access"] = function() - if has("forest_boss_key") then + if has("forest_boss_key") and has("slingshot") and has("sword1") then return AccessibilityLevel.Normal end return AccessibilityLevel.None end, ["adult_access"] = function() - if has("forest_boss_key") then + if has("forest_boss_key") and (has("bow") or has("hookshot")) then return AccessibilityLevel.Normal end return AccessibilityLevel.None @@ -10722,7 +11046,7 @@ data_per_region = { ["adult_access"] = function() local hammer = has("hammer") and AccessibilityLevel.Normal or AccessibilityLevel.None - return and_accessibility(has_blue_fire(), hammer, can_LA()) + return and_accessibility(or_accessibility(can_BFA(), has_blue_fire()), hammer, can_LA()) end }, ["Ganons Castle Water Trial Chests"] = { @@ -11082,7 +11406,7 @@ data_per_region = { keys = AccessibilityLevel.SequenceBreak end - return and_accessibility(has_blue_fire(), can_LA(), keys) + return and_accessibility(or_accessibility(can_BFA(), has_blue_fire()), can_LA(), keys) end }, ["Ganons Castle MQ Water Trial Chest"] = { @@ -11090,7 +11414,7 @@ data_per_region = { return AccessibilityLevel.None end, ["adult_access"] = function() - return has_bottle() + return or_accessibility(can_BFA(), has_bottle(), AccessibilityLevel.SequenceBreak) end } } @@ -12025,7 +12349,7 @@ data_per_region = { end end - return and_accessibility(lot, has_bottle(), or_accessibility(sot, wall)) + return and_accessibility(lot, or_accessibility(can_BFA(), has_bottle()), or_accessibility(sot, wall)) end } } @@ -12210,7 +12534,7 @@ data_per_region = { return AccessibilityLevel.None end, ["adult_access"] = function() - return has_bottle() + return or_accessibility(can_BFA(), has_bottle()) end }, ["Ice Cavern Compass Chest"] = { @@ -12218,7 +12542,7 @@ data_per_region = { return has_blue_fire() end, ["adult_access"] = function() - return has_bottle() + return or_accessibility(can_BFA(), has_bottle()) end }, ["Ice Cavern Iron Boots Chest"] = { @@ -12229,7 +12553,7 @@ data_per_region = { return AccessibilityLevel.None end, ["adult_access"] = function() - return has_bottle() + return or_accessibility(can_BFA(), has_bottle()) end }, ["Sheik in Ice Cavern"] = { @@ -12240,7 +12564,7 @@ data_per_region = { return AccessibilityLevel.None end, ["adult_access"] = function() - return has_bottle() + return or_accessibility(can_BFA(), has_bottle()) end }, ["Ice Cavern Freestanding PoH"] = { @@ -12248,7 +12572,7 @@ data_per_region = { return has_blue_fire() end, ["adult_access"] = function() - return has_bottle() + return or_accessibility(can_BFA(), has_bottle()) end }, ["Ice Cavern GS Spinning Scythe Room"] = { @@ -12288,7 +12612,7 @@ data_per_region = { end local collect = has("hookshot") and AccessibilityLevel.Normal or AccessibilityLevel.Inspect - return and_accessibility(has_bottle(), kill, collect) + return and_accessibility(or_accessibility(can_BFA(), has_bottle()), kill, collect) end }, ["Ice Cavern GS Push Block Room"] = { @@ -12303,7 +12627,7 @@ data_per_region = { end, ["adult_access"] = function() if has("hookshot") then - return has_bottle() + return or_accessibility(can_BFA(), has_bottle()) end local kill = has_explosives() @@ -12314,7 +12638,7 @@ data_per_region = { local trick = has("logic_ice_block_gs") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak return and_accessibility( - has_bottle(), + or_accessibility(can_BFA(), has_bottle()), or_accessibility(and_accessibility(hb, trick), and_accessibility(kill, AccessibilityLevel.Inspect)) ) end @@ -12352,7 +12676,7 @@ data_per_region = { return AccessibilityLevel.None end, ["adult_access"] = function() - return has_bottle() + return or_accessibility(can_BFA(), has_bottle()) end }, ["Ice Cavern MQ Iron Boots Region"] = { @@ -12360,7 +12684,7 @@ data_per_region = { return has_blue_fire() end, ["adult_access"] = function() - return has_bottle() + return or_accessibility(can_BFA(), has_bottle()) end } } @@ -12377,7 +12701,7 @@ data_per_region = { return and_accessibility(has_bottle(), has_projectile("child")) end, ["adult_access"] = function() - return has_bottle() + return or_accessibility(can_BFA(), has_bottle()) end } } @@ -12581,7 +12905,7 @@ data_per_region = { return AccessibilityLevel.Normal end, ["adult_access"] = function() - if has("scale") or has("logic_jabu_scrub_jump_dive") or has("ironboots") then + if has("scale") or has("logic_jabu_alcove_jump_dive") or has("ironboots") then return AccessibilityLevel.Normal end return AccessibilityLevel.SequenceBreak @@ -12610,9 +12934,15 @@ data_per_region = { }, ["Jabu Jabus Belly Boss Area"] = { ["child_access"] = function() + if has("jabu_shortcuts") then + return AccessibilityLevel.Normal + end return AccessibilityLevel.None end, ["adult_access"] = function() + if has("jabu_shortcuts") then + return AccessibilityLevel.Normal + end if has("hoverboots") then if has("logic_jabu_boss_gs_adult") then return AccessibilityLevel.Normal @@ -12673,7 +13003,7 @@ data_per_region = { ["locations"] = { ["Barinade"] = { ["child_access"] = function() - if has("boomerang") then + if has("boomerang") and (has("sticks") or has("sword1")) then return AccessibilityLevel.Normal end return AccessibilityLevel.None @@ -12737,12 +13067,18 @@ data_per_region = { }, ["Jabu Jabus Belly MQ Main"] = { ["child_access"] = function() + if has("jabu_shortcuts") then + return AccessibilityLevel.Normal + end if has("sling") then return AccessibilityLevel.Normal end return AccessibilityLevel.None end, ["adult_access"] = function() + if has("jabu_shortcuts") then + return AccessibilityLevel.Normal + end if has("sling") then return access_region("Jabu Jabus Belly MQ Beginning", "child") end @@ -12751,7 +13087,7 @@ data_per_region = { } } }, - ["Jabu Jabus Belly MQ Main"] = { + ["Jabu Jabus Belly MQ Elevator Room"] = { ["scene"] = "Jabu Jabus Belly", ["pool"] = ER_POOL_TYPES.DUNGEON, ["locations"] = { @@ -12765,32 +13101,105 @@ data_per_region = { }, ["Jabu Jabus Belly MQ Second Room Upper Chest"] = { ["child_access"] = function() - return access_region("Jabu Jabus Belly MQ Boss Area", "child") + local sling = has("sling") and AccessibilityLevel.Normal or AccessibilityLevel.None + local shortcut = has("jabu_shortcuts") and AccessibilityLevel.Normal or AccessibilityLevel.None + + return and_accessibility( + access_region("Jabu Jabus Belly MQ Elevator Room", "child"), + sling, + or_accessibility(access_region("Jabu Jabus Belly MQ Boss Area", "child"), shortcut) + ) end, ["adult_access"] = function() - if has("hoverboots") or has("hookshot") then - return AccessibilityLevel.Normal - end - return AccessibilityLevel.None + local sling = has("sling") and AccessibilityLevel.Normal or AccessibilityLevel.None + local hoverboots = has("hoverboots") and AccessibilityLevel.Normal or AccessibilityLevel.None + local hookshot = has("hookshot") and AccessibilityLevel.Normal or AccessibilityLevel.None + local shortcut = has("jabu_shortcuts") and AccessibilityLevel.Normal or AccessibilityLevel.None + + return and_accessibility( + access_region("Jabu Jabus Belly MQ Elevator Room", "child"), + sling, + or_accessibility(hoverboots, hookshot, access_region("Jabu Jabus Belly MQ Boss Area", "child"), shortcut) + ) end }, ["Jabu Jabus Belly MQ Compass Chest"] = { ["child_access"] = function() - return AccessibilityLevel.Normal + local sling = has("sling") and AccessibilityLevel.Normal or AccessibilityLevel.None + local trick = has("logic_jabu_mq_rang_jump") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak + local boomerang = has("boomerang") and AccessibilityLevel.Normal or AccessibilityLevel.None + + return or_accessibility(sling, has_bombchus(), and_accessibility(trick, boomerang)) end, ["adult_access"] = function() - return AccessibilityLevel.Normal - end - }, - ["Jabu Jabus Belly MQ Basement Chests"] = { - ["child_access"] = function() + local scale = has("scale") and AccessibilityLevel.Normal or AccessibilityLevel.None + local trick = + has("logic_jabu_alcove_jump_dive") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak + local ironboots = has("ironboots") and AccessibilityLevel.Normal or AccessibilityLevel.None + local bow = has("bow") and AccessibilityLevel.Normal or AccessibilityLevel.None + local hookshot = has("hookshot") and AccessibilityLevel.Normal or AccessibilityLevel.None + + return and_accessibility( + or_accessibility(scale, trick, ironboots), + or_accessibility(bow, hookshot, has_bombchus()) + ) + end + } + }, + ["exits"] = { + ["Jabu Jabus Belly MQ Beginning"] = { + ["child_access"] = function() return AccessibilityLevel.Normal end, ["adult_access"] = function() return AccessibilityLevel.Normal end }, - ["Jabu Jabus Belly MQ Boomerang Room Chests"] = { + ["Jabu Jabus Belly MQ Main"] = { + ["child_access"] = function() + return AccessibilityLevel.Normal + end, + ["adult_access"] = function() + local scale = has("scale") and AccessibilityLevel.Normal or AccessibilityLevel.None + local trick = + has("logic_jabu_alcove_jump_dive") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak + local ironboots = has("ironboots") and AccessibilityLevel.Normal or AccessibilityLevel.None + + return or_accessibility(scale, access_region("Jabu Jabus Belly MQ Elevator Room", "child"), trick, ironboots) + end + }, + ["Jabu Jabus Belly MQ Boss Area"] = { + ["child_access"] = function() + if has("jabu_shortcuts") then + return AccessibilityLevel.Normal + end + return AccessibilityLevel.None + end, + ["adult_access"] = function() + if has("jabu_shortcuts") then + return AccessibilityLevel.Normal + end + return AccessibilityLevel.None + end + } + } + }, + ["Jabu Jabus Belly MQ Main"] = { + ["scene"] = "Jabu Jabus Belly", + ["pool"] = ER_POOL_TYPES.DUNGEON, + ["locations"] = { + ["Jabu Jabus Belly MQ Basement Chests"] = { + ["child_access"] = function() + if has("sling") then + return AccessibilityLevel.Normal + end + return AccessibilityLevel.None + end, + ["adult_access"] = function() + return AccessibilityLevel.None + end + }, + ["Jabu Jabus Belly MQ Boomerang Room Small Chest"] = { ["child_access"] = function() return AccessibilityLevel.Normal end, @@ -12798,17 +13207,24 @@ data_per_region = { return AccessibilityLevel.Normal end }, - ["Jabu Jabus Belly MQ GS Boomerang Chest Room"] = { + ["Jabu Jabus Belly MQ Boomerang Chest"] = { ["child_access"] = function() - if has("ocarina") and has("time") then + if has("sword1") or has("sling") or has("bombs") or has("sticks") then return AccessibilityLevel.Normal - elseif has("boomerang") then - if has("logic_jabu_mq_sot_gs") then - return AccessibilityLevel.Normal - end - return AccessibilityLevel.SequenceBreak end - return AccessibilityLevel.Inspect + return AccessibilityLevel.None + end, + ["adult_access"] = function() + return AccessibilityLevel.Normal + end + }, + ["Jabu Jabus Belly MQ GS Boomerang Chest Room"] = { + ["child_access"] = function() + local sot = (has("ocarina") and has("time")) and AccessibilityLevel.Normal or AccessibilityLevel.None + local trick = has("logic_jabu_mq_sot_gs") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak + local boomerang = has("boomerang") and AccessibilityLevel.Normal or AccessibilityLevel.None + + return or_accessibility(and_accessibility(sot, can_child_attack()), and_accessibility(trick, boomerang)) end, ["adult_access"] = function() if has("ocarina") and has("time") then @@ -12816,10 +13232,75 @@ data_per_region = { end return AccessibilityLevel.Inspect end + }, + ["Jabu Jabus Belly MQ GS Invisible Enemies Room"] = { + ["child_access"] = function() + local shortcut = has("jabu_shortcuts") and AccessibilityLevel.Normal or AccessibilityLevel.None + local hookshot = has("hookshot") and AccessibilityLevel.Normal or AccessibilityLevel.None + local hoverboots = has("hoverboots") and AccessibilityLevel.Normal or AccessibilityLevel.None + local trick = has("logic_lens_jabu_mq") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak + local lens = (has("lens") and has("magic")) and AccessibilityLevel.Normal or AccessibilityLevel.None + local sling = has("sling") and AccessibilityLevel.Normal or AccessibilityLevel.None + local bow = has("bow") and AccessibilityLevel.Normal or AccessibilityLevel.None + local longshot = has("longshot") and AccessibilityLevel.Normal or AccessibilityLevel.None + local ironboots = has("ironboots") and AccessibilityLevel.Normal or AccessibilityLevel.None + local boomerang = has("boomerang") and AccessibilityLevel.Normal or AccessibilityLevel.None + + return and_accessibility( + or_accessibility(access_region("Jabu Jabus Belly MQ Depths"), shortcut), + or_accessibility( + and_accessibility(hookshot, hoverboots), + and_accessibility( + or_accessibility( + and_accessibility(or_accessibility(trick, lens), sling), + and_accessibility( + access_region("Jabu Jabus Belly MQ Main", "adult"), + or_accessibility(trick, lens), + or_accessibility(bow, longshot, and_accessibility(hookshot, ironboots, trick)) + ) + ), + or_accessibility(boomerang, and_accessibility(hookshot, ironboots)) + ) + ) + ) + end, + ["adult_access"] = function() + local shortcut = has("jabu_shortcuts") and AccessibilityLevel.Normal or AccessibilityLevel.None + local hookshot = has("hookshot") and AccessibilityLevel.Normal or AccessibilityLevel.None + local hoverboots = has("hoverboots") and AccessibilityLevel.Normal or AccessibilityLevel.None + local trick = has("logic_lens_jabu_mq") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak + local lens = (has("lens") and has("magic")) and AccessibilityLevel.Normal or AccessibilityLevel.None + local sling = has("sling") and AccessibilityLevel.Normal or AccessibilityLevel.None + local bow = has("bow") and AccessibilityLevel.Normal or AccessibilityLevel.None + local longshot = has("longshot") and AccessibilityLevel.Normal or AccessibilityLevel.None + local ironboots = has("ironboots") and AccessibilityLevel.Normal or AccessibilityLevel.None + local boomerang = has("boomerang") and AccessibilityLevel.Normal or AccessibilityLevel.None + + return and_accessibility( + or_accessibility(access_region("Jabu Jabus Belly MQ Depths"), shortcut), + or_accessibility( + and_accessibility(hookshot, hoverboots), + and_accessibility( + or_accessibility( + and_accessibility( + access_region("Jabu Jabus Belly MQ Main", "child"), + or_accessibility(trick, lens), + sling + ), + and_accessibility( + or_accessibility(trick, lens), + or_accessibility(bow, longshot, and_accessibility(hookshot, ironboots, trick)) + ) + ), + or_accessibility(boomerang, and_accessibility(hookshot, ironboots)) + ) + ) + ) + end } }, ["exits"] = { - ["Jabu Jabus Belly MQ Beginning"] = { + ["Jabu Jabus Belly MQ Elevator Room"] = { ["child_access"] = function() return AccessibilityLevel.Normal end, @@ -12829,7 +13310,7 @@ data_per_region = { }, ["Jabu Jabus Belly MQ Depths"] = { ["child_access"] = function() - if has("boomerang") then + if has("boomerang") and has("sling") then return has_explosives() end return AccessibilityLevel.None @@ -12849,7 +13330,7 @@ data_per_region = { return AccessibilityLevel.Normal end, ["adult_access"] = function() - return AccessibilityLevel.None + return AccessibilityLevel.Normal end }, ["Jabu Jabus Belly MQ GS Tailpasaran Room"] = { @@ -12862,18 +13343,6 @@ data_per_region = { ["adult_access"] = function() return AccessibilityLevel.None end - }, - ["Jabu Jabus Belly MQ GS Invisible Enemies Room"] = { - ["child_access"] = function() - local lot = - (has("logic_lens_jabu_mq") or (has("lens") and has("magic"))) and AccessibilityLevel.Normal or - AccessibilityLevel.SequenceBreak - local adult = (has("hoverboots") or has("hookshot")) and AccessibilityLevel.Normal or AccessibilityLevel.None - return or_accessibility(lot, and_accessibility(access_region("Jabu Jabus Belly MQ Main", "adult"), adult)) - end, - ["adult_access"] = function() - return AccessibilityLevel.None - end } }, ["exits"] = { @@ -12885,7 +13354,7 @@ data_per_region = { return AccessibilityLevel.Normal end }, - ["Jabu Jabus Belly MQ Boss Area"] = { + ["Jabu Jabus Belly MQ Past Big Octo"] = { ["child_access"] = function() if has("sticks") or (has("dinsfire") and has("magic") and has("sword1")) then return AccessibilityLevel.Normal @@ -12898,7 +13367,7 @@ data_per_region = { } } }, - ["Jabu Jabus Belly MQ Boss Area"] = { + ["Jabu Jabus Belly MQ Past Big Octo"] = { ["scene"] = "Jabu Jabus Belly", ["pool"] = ER_POOL_TYPES.DUNGEON, ["locations"] = { @@ -12910,20 +13379,53 @@ data_per_region = { return AccessibilityLevel.None end, ["adult_access"] = function() + if has("ocarina") and has("epona") then + return AccessibilityLevel.Normal + end return AccessibilityLevel.None end + } + }, + ["exits"] = { + ["Jabu Jabus Belly MQ Main"] = { + ["child_access"] = function() + return AccessibilityLevel.Normal + end, + ["adult_access"] = function() + return AccessibilityLevel.Normal + end }, - ["Jabu Jabus Belly MQ Near Boss Chest"] = { + ["Jabu Jabus Belly MQ Boss Area"] = { ["child_access"] = function() return AccessibilityLevel.Normal end, + ["adult_access"] = function() + return AccessibilityLevel.Normal + end + } + } + }, + ["Jabu Jabus Belly MQ Boss Area"] = { + ["scene"] = "Jabu Jabus Belly", + ["pool"] = ER_POOL_TYPES.DUNGEON, + ["locations"] = { + ["Jabu Jabus Belly MQ Near Boss Chest"] = { + ["child_access"] = function() + if has("sling") then + return AccessibilityLevel.Normal + end + return AccessibilityLevel.None + end, ["adult_access"] = function() return AccessibilityLevel.None end }, ["Barinade"] = { ["child_access"] = function() - return AccessibilityLevel.Normal + if has("boomerang") and (has("sticks") or has("sword1")) then + return AccessibilityLevel.Normal + end + return AccessibilityLevel.None end, ["adult_access"] = function() return AccessibilityLevel.None @@ -12931,9 +13433,15 @@ data_per_region = { }, ["Jabu Jabus Belly MQ GS Near Boss"] = { ["child_access"] = function() - return AccessibilityLevel.Normal + if has("boomerang") then + return AccessibilityLevel.Normal + end + return AccessibilityLevel.None end, ["adult_access"] = function() + if has("longshot") then + return AccessibilityLevel.Normal + end return AccessibilityLevel.None end } @@ -13081,8 +13589,31 @@ data_per_region = { return AccessibilityLevel.None end, ["adult_access"] = function() - if has("shadow_small_keys", 1) then - return has_explosives() + local keys1 = has("shadow_small_keys", 1) and AccessibilityLevel.Normal or AccessibilityLevel.None + local keys4 = has("shadow_small_keys", 4) and AccessibilityLevel.Normal or AccessibilityLevel.None + local keys5 = has("shadow_small_keys", 5) and AccessibilityLevel.Normal or AccessibilityLevel.None + local no_shortcut = has("shadow_temple_shortcuts") and AccessibilityLevel.None or AccessibilityLevel.Normal + local trick = + has("logic_lens_shadow_platform") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak + local lens = (has("lens") and has("magic")) and AccessibilityLevel.Normal or AccessibilityLevel.None + + return and_accessibility( + has_explosives(), + or_accessibility( + and_accessibility(keys1, no_shortcut), + keys5, + and_accessibility(keys4, or_accessibility(trick, lens)) + ) + ) + end + }, + ["Shadow Temple Boat"] = { + ["child_access"] = function() + return AccessibilityLevel.None + end, + ["adult_access"] = function() + if has("shadow_temple_shortcuts") then + return AccessibilityLevel.Normal end return AccessibilityLevel.None end @@ -13120,99 +13651,146 @@ data_per_region = { return AccessibilityLevel.SequenceBreak end }, - ["Shadow Temple Invisible Spikes Chest"] = { + ["Shadow Temple GS Like Like Room"] = { + ["child_access"] = function() + return AccessibilityLevel.None + end, + ["adult_access"] = function() + return AccessibilityLevel.Normal + end + }, + ["Shadow Temple GS Falling Spikes Room"] = { + ["child_access"] = function() + return AccessibilityLevel.None + end, + ["adult_access"] = function() + if has("logic_shadow_umbrella_gs") or has("hookshot") then + return AccessibilityLevel.Normal + end + return AccessibilityLevel.SequenceBreak + end + } + }, + ["exits"] = { + ["Shadow Temple Invisible Spikes"] = { ["child_access"] = function() return AccessibilityLevel.None end, ["adult_access"] = function() if has("shadow_small_keys", 2) then - if has("logic_lens_shadow_back") or (has("lens") and has("magic")) then + if has("logic_lens_shadow_platform") or (has("lens") and has("magic")) then return AccessibilityLevel.Normal end return AccessibilityLevel.SequenceBreak end return AccessibilityLevel.None end + } + } + }, + ["Shadow Temple Invisible Spikes"] = { + ["scene"] = "Shadow Temple", + ["pool"] = ER_POOL_TYPES.DUNGEON, + ["locations"] = { + ["Shadow Temple Invisible Spikes Chest"] = { + ["child_access"] = function() + return AccessibilityLevel.None + end, + ["adult_access"] = function() + return AccessibilityLevel.Normal + end }, ["Shadow Temple Freestanding Key"] = { ["child_access"] = function() return AccessibilityLevel.None end, ["adult_access"] = function() - local keys = has("shadow_small_keys", 2) and AccessibilityLevel.Normal or AccessibilityLevel.None - local lot = - (has("logic_lens_shadow_back") or (has("lens") and has("magic"))) and AccessibilityLevel.Normal or - AccessibilityLevel.SequenceBreak local hs = has("hookshot") and AccessibilityLevel.Normal or AccessibilityLevel.None local bombs = has("bombs") and AccessibilityLevel.Normal or AccessibilityLevel.None local lift1 = has("lift1") and AccessibilityLevel.Normal or AccessibilityLevel.None local trick = has("logic_shadow_freestanding_key") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak - return and_accessibility( - keys, - lot, - hs, - or_accessibility(bombs, lift1, and_accessibility(trick, has_bombchus())) - ) + return and_accessibility(hs, or_accessibility(bombs, lift1, and_accessibility(trick, has_bombchus()))) end }, - ["Shadow Temple GS Like Like Room"] = { + ["Shadow Temple GS Single Giant Pot"] = { ["child_access"] = function() return AccessibilityLevel.None end, ["adult_access"] = function() - return AccessibilityLevel.Normal + if has("hookshot") then + return AccessibilityLevel.Normal + end + return AccessibilityLevel.None + end + } + }, + ["exits"] = { + ["Shadow Temple Wind Tunnel"] = { + ["child_access"] = function() + return AccessibilityLevel.None + end, + ["adult_access"] = function() + if has("hookshot") and has("shadow_small_keys", 3) then + return AccessibilityLevel.Normal + end + return AccessibilityLevel.None end }, - ["Shadow Temple GS Falling Spikes Room"] = { + ["Shadow Temple Huge Pit"] = { ["child_access"] = function() return AccessibilityLevel.None end, ["adult_access"] = function() - if has("logic_shadow_umbrella_gs") or has("hookshot") then + if has("logic_lens_shadow_platform") or (has("lens") and has("magic")) then return AccessibilityLevel.Normal end return AccessibilityLevel.SequenceBreak end - }, - ["Shadow Temple GS Single Giant Pot"] = { + } + } + }, + ["Shadow Temple Wind Tunnel"] = { + ["scene"] = "Shadow Temple", + ["pool"] = ER_POOL_TYPES.DUNGEON, + ["locations"] = { + ["Shadow Temple Wind Hint Chest"] = { ["child_access"] = function() return AccessibilityLevel.None end, ["adult_access"] = function() - local keys = has("shadow_small_keys", 2) and AccessibilityLevel.Normal or AccessibilityLevel.None - local lot = - (has("logic_lens_shadow_back") or (has("lens") and has("magic"))) and AccessibilityLevel.Normal or - AccessibilityLevel.SequenceBreak - local hs = has("hookshot") and AccessibilityLevel.Normal or AccessibilityLevel.None - - return and_accessibility(keys, lot, hs) + return AccessibilityLevel.Normal end } }, ["exits"] = { - ["Shadow Temple Wind Tunnel"] = { + ["Shadow Temple After Wind"] = { ["child_access"] = function() return AccessibilityLevel.None end, ["adult_access"] = function() - if has("shadow_small_keys", 3) and has("hookshot") then - if has("logic_lens_shadow_back") or (has("lens") and has("magic")) then - return AccessibilityLevel.Normal - end - return AccessibilityLevel.SequenceBreak + return AccessibilityLevel.Normal + end + }, + ["Shadow Temple Invisible Spikes"] = { + ["child_access"] = function() + return AccessibilityLevel.None + end, + ["adult_access"] = function() + if has("hookshot") then + return AccessibilityLevel.Normal end return AccessibilityLevel.None end } } }, - ["Shadow Temple Wind Tunnel"] = { + ["Shadow Temple After Wind"] = { ["scene"] = "Shadow Temple", ["pool"] = ER_POOL_TYPES.DUNGEON, ["locations"] = { - ["Shadow Temple Wind Hint Chest"] = { + ["Shadow Temple After Wind Enemy Chest"] = { ["child_access"] = function() return AccessibilityLevel.None end, @@ -13220,37 +13798,71 @@ data_per_region = { return AccessibilityLevel.Normal end }, - ["Shadow Temple After Wind Chests"] = { + ["Shadow Temple After Wind Hidden Chest"] = { ["child_access"] = function() return AccessibilityLevel.None end, ["adult_access"] = function() - return AccessibilityLevel.Normal + return has_explosives() + end + } + }, + ["exits"] = { + ["Shadow Temple Boat"] = { + ["child_access"] = function() + return AccessibilityLevel.None + end, + ["adult_access"] = function() + if has("shadow_small_keys", 4) then + return AccessibilityLevel.Normal + end + return AccessibilityLevel.None end }, + ["Shadow Temple Wind Tunnel"] = { + ["child_access"] = function() + return AccessibilityLevel.None + end, + ["adult_access"] = function() + return AccessibilityLevel.Normal + end + } + } + }, + ["Shadow Temple Boat"] = { + ["scene"] = "Shadow Temple", + ["pool"] = ER_POOL_TYPES.DUNGEON, + ["locations"] = { ["Shadow Temple GS Near Ship"] = { ["child_access"] = function() return AccessibilityLevel.None end, ["adult_access"] = function() - local keys = has("shadow_small_keys", 4) and AccessibilityLevel.Normal or AccessibilityLevel.None local ls = has("longshot") and AccessibilityLevel.Normal or AccessibilityLevel.None local bow = has("bow") and AccessibilityLevel.Inspect or AccessibilityLevel.None - return and_accessibility( - keys, - or_accessibility(ls, bow, and_accessibility(can_use_scarecrow(), AccessibilityLevel.SequenceBreak)) - ) + return or_accessibility(ls, bow, and_accessibility(can_use_scarecrow(), AccessibilityLevel.SequenceBreak)) end } }, ["exits"] = { + ["Shadow Temple After Wind"] = { + ["child_access"] = function() + return AccessibilityLevel.None + end, + ["adult_access"] = function() + if has("shadow_small_keys", 4) then + return AccessibilityLevel.Normal + end + return AccessibilityLevel.None + end + }, ["Shadow Temple Beyond Boat"] = { ["child_access"] = function() return AccessibilityLevel.None end, ["adult_access"] = function() - if has("ocarina") and has("lullaby") and has("shadow_small_keys", 4) then + if has("ocarina") and has("lullaby") then return AccessibilityLevel.Normal end return AccessibilityLevel.None @@ -13292,27 +13904,51 @@ data_per_region = { return AccessibilityLevel.Normal end }, - ["Bongo Bongo"] = { + ["Shadow Temple GS Triple Giant Pot"] = { ["child_access"] = function() return AccessibilityLevel.None end, ["adult_access"] = function() - if has("shadow_small_keys", 5) and has("shadow_boss_key") then - if has("bow") or (can_use_scarecrow() and has("longshot")) then - return AccessibilityLevel.Normal - end - local trick = has("logic_shadow_statue") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak - return and_accessibility(trick, has_bombchus()) - end + return AccessibilityLevel.Normal + end + } + }, + ["exits"] = { + ["Shadow Temple Boss Room"] = { + ["child_access"] = function() return AccessibilityLevel.None + end, + ["adult_access"] = function() + local keys = has("shadow_small_keys", 5) and AccessibilityLevel.Normal or AccessibilityLevel.None + local bk = has("shadow_boss_key") and AccessibilityLevel.Normal or AccessibilityLevel.None + local bow = has("bow") and AccessibilityLevel.Normal or AccessibilityLevel.None + local scarecrow = + (can_use_scarecrow() and has("longshot")) and AccessibilityLevel.Normal or AccessibilityLevel.None + local trick = has("logic_shadow_statue") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak + local shortcut = has("logic_shadow_statue") and AccessibilityLevel.Normal or AccessibilityLevel.None + + return and_accessibility( + keys, + bk, + or_accessibility(bow, scarecrow, and_accessibility(trick, has_bombchus()), shortcut) + ) end - }, - ["Shadow Temple GS Triple Giant Pot"] = { + } + } + }, + ["Shadow Temple Boss Room"] = { + ["scene"] = "Shadow Temple", + ["pool"] = ER_POOL_TYPES.DUNGEON, + ["locations"] = { + ["Bongo Bongo"] = { ["child_access"] = function() return AccessibilityLevel.None end, ["adult_access"] = function() - return AccessibilityLevel.Normal + if has("logic_shadow_bongo") or has("bow") or has("hookshot") then + return AccessibilityLevel.Normal + end + return AccessibilityLevel.SequenceBreak end } } @@ -13349,20 +13985,12 @@ data_per_region = { ["scene"] = "Shadow Temple", ["pool"] = ER_POOL_TYPES.DUNGEON, ["exits"] = { - ["Shadow Temple MQ Entryway"] = { - ["child_access"] = function() - return AccessibilityLevel.Normal - end, - ["adult_access"] = function() - return AccessibilityLevel.Normal - end - }, ["Shadow Temple MQ First Beamos"] = { ["child_access"] = function() return AccessibilityLevel.None end, ["adult_access"] = function() - if (has("bow") and has("firearrow") and has("magic")) or has("hoverboots") then + if has("shadow_temple_shortcuts") or (has("bow") and has("firearrow") and has("magic")) or has("hoverboots") then return AccessibilityLevel.Normal elseif has("longshot") then if has("logic_shadow_mq_gap") then @@ -13449,18 +14077,75 @@ data_per_region = { return AccessibilityLevel.None end, ["adult_access"] = function() - local keys = AccessibilityLevel.None - if has("shadow_small_keys", 2) then - keys = AccessibilityLevel.Normal - elseif has("shadow_small_keys", 1) then - keys = AccessibilityLevel.SequenceBreak + local keys1 = has("shadow_small_keys", 1) and AccessibilityLevel.SequenceBreak or AccessibilityLevel.None + local keys2 = has("shadow_small_keys", 2) and AccessibilityLevel.Normal or AccessibilityLevel.None + local keys5 = has("shadow_small_keys", 5) and AccessibilityLevel.Normal or AccessibilityLevel.None + local no_shortcut = has("shadow_temple_shortcuts") and AccessibilityLevel.None or AccessibilityLevel.Normal + + return and_accessibility( + has_explosives(), + or_accessibility(keys1, and_accessibility(keys2, no_shortcut), keys5) + ) + end + }, + ["Shadow Temple MQ Boat"] = { + ["child_access"] = function() + return AccessibilityLevel.None + end, + ["adult_access"] = function() + if has("shadow_temple_shortcuts") then + return AccessibilityLevel.Normal end - return and_accessibility(has_explosives(), keys) + return AccessibilityLevel.None end } } }, ["Shadow Temple MQ Upper Huge Pit"] = { + ["scene"] = "Shadow Temple", + ["pool"] = ER_POOL_TYPES.DUNGEON, + ["exits"] = { + ["Shadow Temple MQ Invisible Blades"] = { + ["child_access"] = function() + return AccessibilityLevel.None + end, + ["adult_access"] = function() + local no_shortcut = has("shadow_temple_shortcuts") and AccessibilityLevel.None or AccessibilityLevel.Normal + local keys1 = has("shadow_small_keys", 1) and AccessibilityLevel.SequenceBreak or AccessibilityLevel.None + local keys6 = has("shadow_small_keys", 6) and AccessibilityLevel.Normal or AccessibilityLevel.None + local lens_platform = + (has("logic_lens_shadow_mq_platform") or (has("lens") and has("magic"))) and AccessibilityLevel.Normal or + AccessibilityLevel.SequenceBreak + local hoverboots = has("hoverboots") and AccessibilityLevel.Normal or AccessibilityLevel.None + local sot = (has("ocarina") and has("time")) and AccessibilityLevel.Normal or AccessibilityLevel.None + local trick_damage = + has("logic_shadow_mq_invisible_blades") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak + local lens_blades = + (has("logic_lens_shadow_mq_invisible_blades") or (has("lens") and has("magic"))) and + AccessibilityLevel.Normal or + AccessibilityLevel.SequenceBreak + local nl = (has("nayrus") and has("magic")) and AccessibilityLevel.Normal or AccessibilityLevel.None + + return and_accessibility( + or_accessibility(no_shortcut, keys1, keys6, and_accessibility(lens_platform, hoverboots)), + or_accessibility(sot, and_accessibility(trick_damage, damage_below_ohko())), + or_accessibility(lens_blades, nl) + ) + end + }, + ["Shadow Temple MQ Lower Huge Pit"] = { + ["child_access"] = function() + return AccessibilityLevel.None + end, + ["adult_access"] = function() + local trick = + has("logic_shadow_mq_huge_pit") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak + return or_accessibility(has_fire(), trick) + end + } + } + }, + ["Shadow Temple MQ Invisible Blades"] = { ["scene"] = "Shadow Temple", ["pool"] = ER_POOL_TYPES.DUNGEON, ["locations"] = { @@ -13469,29 +14154,67 @@ data_per_region = { return AccessibilityLevel.None end, ["adult_access"] = function() - if has("ocarina") and has("time") then - return AccessibilityLevel.Normal - end - local trick = - has("logic_shadow_mq_invisible_blades") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak - return and_accessibility(trick, damage_below_ohko()) + return AccessibilityLevel.Normal end } - }, + } + }, + ["Shadow Temple MQ Lower Huge Pit"] = { + ["scene"] = "Shadow Temple", + ["pool"] = ER_POOL_TYPES.DUNGEON, ["exits"] = { - ["Shadow Temple MQ Lower Huge Pit"] = { + ["Shadow Temple MQ Falling Spikes"] = { ["child_access"] = function() return AccessibilityLevel.None end, ["adult_access"] = function() + local no_shortcut = has("shadow_temple_shortcuts") and AccessibilityLevel.None or AccessibilityLevel.Normal + local keys1 = has("shadow_small_keys", 1) and AccessibilityLevel.SequenceBreak or AccessibilityLevel.None + local keys6 = has("shadow_small_keys", 6) and AccessibilityLevel.Normal or AccessibilityLevel.None + local lens_platform = + (has("logic_lens_shadow_mq_platform") or (has("lens") and has("magic"))) and AccessibilityLevel.Normal or + AccessibilityLevel.SequenceBreak + local hoverboots = has("hoverboots") and AccessibilityLevel.Normal or AccessibilityLevel.None local trick = has("logic_shadow_mq_huge_pit") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak - return or_accessibility(has_fire(), trick) + + return or_accessibility( + no_shortcut, + keys1, + keys6, + and_accessibility(lens_platform, hoverboots, or_accessibility(has_fire(), trick)) + ) + end + }, + ["Shadow Temple MQ Invisible Spikes"] = { + ["child_access"] = function() + return AccessibilityLevel.None + end, + ["adult_access"] = function() + local keys2 = has("shadow_small_keys", 2) and AccessibilityLevel.SequenceBreak or AccessibilityLevel.None + local keys3 = has("shadow_small_keys", 3) and AccessibilityLevel.Normal or AccessibilityLevel.None + local lens_platform = + (has("logic_lens_shadow_mq_platform") or (has("lens") and has("magic"))) and AccessibilityLevel.Normal or + AccessibilityLevel.SequenceBreak + local hoverboots = has("hoverboots") and AccessibilityLevel.Normal or AccessibilityLevel.None + + return and_accessibility(lens_platform, hoverboots, or_accessibility(keys2, keys3)) + end + }, + ["Shadow Temple MQ Upper Huge Pit"] = { + ["child_access"] = function() + return AccessibilityLevel.None + end, + ["adult_access"] = function() + if has("longshot") then + return AccessibilityLevel.Normal + end + return AccessibilityLevel.None end } } }, - ["Shadow Temple MQ Lower Huge Pit"] = { + ["Shadow Temple MQ Falling Spikes"] = { ["scene"] = "Shadow Temple", ["pool"] = ER_POOL_TYPES.DUNGEON, ["locations"] = { @@ -13525,65 +14248,49 @@ data_per_region = { if has("logic_shadow_umbrella") then return AccessibilityLevel.Normal end - return AccessibilityLevel.SequenceBreak end - return AccessibilityLevel.None + return AccessibilityLevel.SequenceBreak end }, - ["Shadow Temple MQ Invisible Spikes Chest"] = { + ["Shadow Temple MQ GS Falling Spikes Room"] = { ["child_access"] = function() return AccessibilityLevel.None end, ["adult_access"] = function() - if has("hoverboots") then - local keys = AccessibilityLevel.None - if has("shadow_small_keys", 3) then - keys = AccessibilityLevel.Normal - elseif has("shadow_small_keys", 2) then - keys = AccessibilityLevel.SequenceBreak + if has("hookshot") then + return AccessibilityLevel.Normal + elseif has("hoverboots") then + if has("logic_shadow_umbrella_gs") then + return AccessibilityLevel.Normal end - local lot = - (has("logic_lens_shadow_mq_back") or (has("lens") and has("magic"))) and AccessibilityLevel.Normal or - AccessibilityLevel.SequenceBreak - return and_accessibility(keys, lot) + return AccessibilityLevel.SequenceBreak end - return AccessibilityLevel.None + return AccessibilityLevel.Inspect end - }, - ["Shadow Temple MQ Stalfos Room Chest"] = { + } + } + }, + ["Shadow Temple MQ Invisible Spikes"] = { + ["scene"] = "Shadow Temple", + ["pool"] = ER_POOL_TYPES.DUNGEON, + ["locations"] = { + ["Shadow Temple MQ Invisible Spikes Chest"] = { ["child_access"] = function() return AccessibilityLevel.None end, ["adult_access"] = function() - if has("hoverboots") and has("hookshot") then - local keys = AccessibilityLevel.None - if has("shadow_small_keys", 3) then - keys = AccessibilityLevel.Normal - elseif has("shadow_small_keys", 2) then - keys = AccessibilityLevel.SequenceBreak - end - local lot = - (has("logic_lens_shadow_mq_back") or (has("lens") and has("magic"))) and AccessibilityLevel.Normal or - AccessibilityLevel.SequenceBreak - return and_accessibility(keys, lot) - end - return AccessibilityLevel.None + return AccessibilityLevel.Normal end }, - ["Shadow Temple MQ GS Falling Spikes Room"] = { + ["Shadow Temple MQ Stalfos Room Chest"] = { ["child_access"] = function() return AccessibilityLevel.None end, ["adult_access"] = function() if has("hookshot") then return AccessibilityLevel.Normal - elseif has("hoverboots") then - if has("logic_shadow_umbrella_gs") then - return AccessibilityLevel.Normal - end - return AccessibilityLevel.SequenceBreak end - return AccessibilityLevel.Inspect + return AccessibilityLevel.None end } }, @@ -13593,20 +14300,28 @@ data_per_region = { return AccessibilityLevel.None end, ["adult_access"] = function() - if has("hoverboots") and has("hookshot") then - local keys = AccessibilityLevel.None + if has("hookshot") then if has("shadow_small_keys", 4) then - keys = AccessibilityLevel.Normal + return AccessibilityLevel.Normal elseif has("shadow_small_keys", 3) then - keys = AccessibilityLevel.SequenceBreak + return AccessibilityLevel.SequenceBreak end - local lot = - (has("logic_lens_shadow_mq_back") or (has("lens") and has("magic"))) and AccessibilityLevel.Normal or - AccessibilityLevel.SequenceBreak - return and_accessibility(lot, keys) end return AccessibilityLevel.None end + }, + ["Shadow Temple MQ Lower Huge Pit"] = { + ["child_access"] = function() + return AccessibilityLevel.None + end, + ["adult_access"] = function() + local lens_platform = + (has("logic_lens_shadow_mq_platform") or (has("lens") and has("magic"))) and AccessibilityLevel.Normal or + AccessibilityLevel.SequenceBreak + local hoverboots = has("hoverboots") and AccessibilityLevel.Normal or AccessibilityLevel.None + + return and_accessibility(lens_platform, hoverboots) + end } } }, @@ -13622,7 +14337,20 @@ data_per_region = { return AccessibilityLevel.Normal end }, - ["Shadow Temple MQ After Wind Chests"] = { + ["Shadow Temple MQ GS Wind Hint Room"] = { + ["child_access"] = function() + return AccessibilityLevel.None + end, + ["adult_access"] = function() + if has("hookshot") then + return AccessibilityLevel.Normal + end + return AccessibilityLevel.None + end + } + }, + ["exits"] = { + ["Shadow Temple MQ After Wind"] = { ["child_access"] = function() return AccessibilityLevel.None end, @@ -13630,7 +14358,24 @@ data_per_region = { return AccessibilityLevel.Normal end }, - ["Shadow Temple MQ GS Wind Hint Room"] = { + ["Shadow Temple MQ Invisible Spikes"] = { + ["child_access"] = function() + return AccessibilityLevel.None + end, + ["adult_access"] = function() + if has("hookshot") then + return AccessibilityLevel.Normal + end + return AccessibilityLevel.None + end + } + } + }, + ["Shadow Temple MQ After Wind"] = { + ["scene"] = "Shadow Temple", + ["pool"] = ER_POOL_TYPES.DUNGEON, + ["locations"] = { + ["Shadow Temple MQ After Wind Enemy Chest"] = { ["child_access"] = function() return AccessibilityLevel.None end, @@ -13638,70 +14383,97 @@ data_per_region = { return AccessibilityLevel.Normal end }, + ["Shadow Temple MQ After Wind Hidden Chest"] = { + ["child_access"] = function() + return AccessibilityLevel.None + end, + ["adult_access"] = function() + return has_explosives() + end + }, ["Shadow Temple MQ GS After Wind"] = { ["child_access"] = function() return AccessibilityLevel.None end, ["adult_access"] = function() - return AccessibilityLevel.Normal + local trick = + has("logic_shadow_mq_after_wind_gs") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak + + return or_accessibility(has_explosives(), trick) end } }, ["exits"] = { - ["Shadow Temple MQ Beyond Boat"] = { + ["Shadow Temple MQ Boat"] = { ["child_access"] = function() return AccessibilityLevel.None end, ["adult_access"] = function() - if has("ocarina") and has("lullaby") then - if has("shadow_small_keys", 5) then - return AccessibilityLevel.Normal - elseif has("shadow_small_keys", 4) then - return AccessibilityLevel.SequenceBreak - end + if has("shadow_small_keys", 5) then + return AccessibilityLevel.Normal + elseif has("shadow_small_keys", 4) then + return AccessibilityLevel.SequenceBreak end return AccessibilityLevel.None end + }, + ["Shadow Temple MQ Wind Tunnel"] = { + ["child_access"] = function() + return AccessibilityLevel.None + end, + ["adult_access"] = function() + local hoverboots = has("hoverboots") and AccessibilityLevel.Normal or AccessibilityLevel.None + local trick = + has("logic_shadow_mq_windy_walkway") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak + + return or_accessibility(hoverboots, trick) + end } } }, - ["Shadow Temple MQ Beyond Boat"] = { + ["Shadow Temple MQ Boat"] = { ["scene"] = "Shadow Temple", ["pool"] = ER_POOL_TYPES.DUNGEON, - ["locations"] = { - ["Bongo Bongo"] = { + ["exits"] = { + ["Shadow Temple MQ After Wind"] = { ["child_access"] = function() return AccessibilityLevel.None end, ["adult_access"] = function() - if has("shadow_boss_key") then - if has("bow") then - return AccessibilityLevel.Normal - end - local trick = has("logic_shadow_statue") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak - return and_accessibility(trick, has_bombchus()) + if has("shadow_small_keys", 5) then + return AccessibilityLevel.Normal + elseif has("shadow_small_keys", 1) then + return AccessibilityLevel.SequenceBreak end return AccessibilityLevel.None end }, - ["Shadow Temple MQ GS After Ship"] = { + ["Shadow Temple MQ Beyond Boat"] = { ["child_access"] = function() return AccessibilityLevel.None end, ["adult_access"] = function() - return AccessibilityLevel.Normal + if has("ocarina") and has("lullaby") then + return AccessibilityLevel.Normal + end + return AccessibilityLevel.None end - }, - ["Shadow Temple MQ GS Near Boss"] = { + } + } + }, + ["Shadow Temple MQ Beyond Boat"] = { + ["scene"] = "Shadow Temple", + ["pool"] = ER_POOL_TYPES.DUNGEON, + ["locations"] = { + ["Shadow Temple MQ GS After Ship"] = { ["child_access"] = function() return AccessibilityLevel.None end, ["adult_access"] = function() - if has("bow") then + if has("hookshot") then return AccessibilityLevel.Normal end - local trick = has("logic_shadow_statue") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak - return and_accessibility(trick, has_bombchus()) + return AccessibilityLevel.None end } }, @@ -13716,6 +14488,22 @@ data_per_region = { end return AccessibilityLevel.None end + }, + ["Shadow Temple MQ Near Boss"] = { + ["child_access"] = function() + return AccessibilityLevel.None + end, + ["adult_access"] = function() + local bow = has("bow") and AccessibilityLevel.Normal or AccessibilityLevel.None + local trick = has("logic_shadow_statue") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak + local shortcut = has("shadow_temple_shortcuts") and AccessibilityLevel.Normal or AccessibilityLevel.None + local hoverboots = has("hoverboots") and AccessibilityLevel.Normal or AccessibilityLevel.None + + return and_accessibility( + or_accessibility(bow, and_accessibility(trick, has_bombchus()), shortcut), + hoverboots + ) + end } } }, @@ -13733,6 +14521,8 @@ data_per_region = { return AccessibilityLevel.Normal elseif has("shadow_small_keys", 5) then return AccessibilityLevel.SequenceBreak + elseif has("shadow_small_keys", 1) and has("shadow_temple_shortcuts") then + return AccessibilityLevel.SequenceBreak end end return AccessibilityLevel.None @@ -13748,6 +14538,8 @@ data_per_region = { return AccessibilityLevel.Normal elseif has("shadow_small_keys", 5) then return AccessibilityLevel.SequenceBreak + elseif has("shadow_small_keys", 1) and has("shadow_temple_shortcuts") then + return AccessibilityLevel.SequenceBreak end end return AccessibilityLevel.None @@ -13758,7 +14550,10 @@ data_per_region = { return AccessibilityLevel.None end, ["adult_access"] = function() - return AccessibilityLevel.Normal + if has("logic_lens_shadow_mq_dead_hand") or (has("lens") and has("magic")) then + return AccessibilityLevel.Normal + end + return AccessibilityLevel.SequenceBreak end }, ["Shadow Temple MQ Freestanding Key"] = { @@ -13771,6 +14566,37 @@ data_per_region = { } } }, + ["Shadow Temple MQ Near Boss"] = { + ["scene"] = "Shadow Temple", + ["pool"] = ER_POOL_TYPES.DUNGEON, + ["locations"] = { + ["Bongo Bongo"] = { + ["child_access"] = function() + return AccessibilityLevel.None + end, + ["adult_access"] = function() + if has("shadow_boss_key") then + if has("logic_shadow_bongo") or has("bow") or has("hookshot") then + return AccessibilityLevel.Normal + end + return AccessibilityLevel.SequenceBreak + end + return AccessibilityLevel.None + end + }, + ["Shadow Temple MQ GS Near Boss"] = { + ["child_access"] = function() + return AccessibilityLevel.None + end, + ["adult_access"] = function() + if has("dinsfire") and has("magic") then + return AccessibilityLevel.Normal + end + return has_projectile("adult") + end + } + } + }, ["Spirit Temple Split"] = { ["scene"] = "Spirit Temple", ["pool"] = ER_POOL_TYPES.DUNGEON, @@ -13835,6 +14661,17 @@ data_per_region = { end return AccessibilityLevel.None end + }, + ["Spirit Temple Central Chamber"] = { + ["child_access"] = function() + return AccessibilityLevel.None + end, + ["adult_access"] = function() + if has("spirit_temple_shortcuts") then + return AccessibilityLevel.Normal + end + return AccessibilityLevel.None + end } } }, @@ -13939,8 +14776,11 @@ data_per_region = { end, ["adult_access"] = function() local keys = has("spirit_small_keys", 3) and AccessibilityLevel.Normal or AccessibilityLevel.None - local lift2 = has("lift2") and AccessibilityLevel.Normal or AccessibilityLevel.None - return or_accessibility(has_projectile("both"), and_accessibility(keys, lift2, has_projectile("adult"))) + local shortcut = has("spirit_temple_shortcuts") and AccessibilityLevel.Normal or AccessibilityLevel.None + return or_accessibility( + has_projectile("both"), + and_accessibility(or_accessibility(shortcut, keys), has_projectile("adult")) + ) end }, ["Spirit Temple GS Sun on Floor Room"] = { @@ -13959,12 +14799,15 @@ data_per_region = { local df = (has("dinsfire") and has("magic")) and AccessibilityLevel.Normal or AccessibilityLevel.None local weapon = (has("sticks") or has("sword1")) and AccessibilityLevel.Normal or AccessibilityLevel.None local keys = has("spirit_small_keys", 3) and AccessibilityLevel.Normal or AccessibilityLevel.None - local lift2 = has("lift2") and AccessibilityLevel.Normal or AccessibilityLevel.None + local shortcut = has("spirit_temple_shortcuts") and AccessibilityLevel.Normal or AccessibilityLevel.None return or_accessibility( has_projectile("both"), df, and_accessibility(damage_single_instance_ohko(), or_accessibility(weapon, has_projectile("child"))), - and_accessibility(keys, lift2, or_accessibility(has_projectile("adult"), damage_single_instance_ohko())) + and_accessibility( + or_accessibility(shortcut, keys), + or_accessibility(has_projectile("adult"), damage_single_instance_ohko()) + ) ) end } @@ -14023,19 +14866,6 @@ data_per_region = { return or_accessibility(has_bombchus(), and_accessibility(bombs, trick)) end }, - ["Spirit Temple First Mirror Chests"] = { - ["child_access"] = function() - return AccessibilityLevel.None - end, - ["adult_access"] = function() - if has("spirit_small_keys", 3) then - return AccessibilityLevel.Normal - elseif has("spirit_small_keys", 1) then - return AccessibilityLevel.SequenceBreak - end - return AccessibilityLevel.None - end - }, ["Spirit Temple GS Boulder Room"] = { ["child_access"] = function() return AccessibilityLevel.None @@ -14077,7 +14907,13 @@ data_per_region = { local fa = (has("firearrow") and has("magic")) and AccessibilityLevel.Normal or AccessibilityLevel.None local trick = has("logic_spirit_map_chest") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak local sticks = has("sticks") and AccessibilityLevel.Normal or AccessibilityLevel.None - local keys5 = has("spirit_small_keys", 5) and AccessibilityLevel.Normal or AccessibilityLevel.None + local keys5 = AccessibilityLevel.None + if has("spirit_small_keys", 5) then + keys5 = AccessibilityLevel.Normal + elseif has("spirit_small_keys", 1) then + keys5 = AccessibilityLevel.SequenceBreak + end + return or_accessibility( and_accessibility( or_accessibility(has_explosives(), keys3), @@ -14093,13 +14929,17 @@ data_per_region = { local fa = (has("firearrow") and has("magic")) and AccessibilityLevel.Normal or AccessibilityLevel.None local trick = has("logic_spirit_map_chest") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak local sticks = has("sticks") and AccessibilityLevel.Normal or AccessibilityLevel.None - local lift2 = has("lift2") and AccessibilityLevel.Normal or AccessibilityLevel.None + local shortcut = has("spirit_temple_shortcuts") and AccessibilityLevel.Normal or AccessibilityLevel.None + return or_accessibility( and_accessibility( or_accessibility(has_explosives(), keys3), or_accessibility(df, and_accessibility(or_accessibility(fa, trick), bow, sticks)) ), - and_accessibility(keys3, bow, or_accessibility(fa, trick), lift2) + and_accessibility( + or_accessibility(keys3, shortcut), + or_accessibility(df, and_accessibility(bow, or_accessibility(fa, trick))) + ) ) end }, @@ -14111,7 +14951,13 @@ data_per_region = { local fa = (has("firearrow") and has("magic")) and AccessibilityLevel.Normal or AccessibilityLevel.None local trick = has("logic_spirit_sun_chest") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak local sticks = has("sticks") and AccessibilityLevel.Normal or AccessibilityLevel.None - local keys5 = has("spirit_small_keys", 5) and AccessibilityLevel.Normal or AccessibilityLevel.None + local keys5 = AccessibilityLevel.None + if has("spirit_small_keys", 5) then + keys5 = AccessibilityLevel.Normal + elseif has("spirit_small_keys", 1) then + keys5 = AccessibilityLevel.SequenceBreak + end + return or_accessibility( and_accessibility( or_accessibility(has_explosives(), keys3), @@ -14127,13 +14973,17 @@ data_per_region = { local fa = (has("firearrow") and has("magic")) and AccessibilityLevel.Normal or AccessibilityLevel.None local trick = has("logic_spirit_sun_chest") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak local sticks = has("sticks") and AccessibilityLevel.Normal or AccessibilityLevel.None - local lift2 = has("lift2") and AccessibilityLevel.Normal or AccessibilityLevel.None + local shortcut = has("spirit_temple_shortcuts") and AccessibilityLevel.Normal or AccessibilityLevel.None + return or_accessibility( and_accessibility( or_accessibility(has_explosives(), keys3), or_accessibility(df, and_accessibility(or_accessibility(fa, trick), bow, sticks)) ), - and_accessibility(keys3, bow, or_accessibility(fa, trick), lift2) + and_accessibility( + or_accessibility(keys3, shortcut), + or_accessibility(df, and_accessibility(bow, or_accessibility(fa, trick))) + ) ) end }, @@ -14142,14 +14992,21 @@ data_per_region = { return AccessibilityLevel.None end, ["adult_access"] = function() - if has("lift2") and has("ocarina") and has("lullaby") then - if has("spirit_small_keys", 3) then - return AccessibilityLevel.Normal - elseif has("spirit_small_keys", 1) then - return AccessibilityLevel.SequenceBreak - end + local keys3 = AccessibilityLevel.None + if has("spirit_small_keys", 3) then + keys3 = AccessibilityLevel.Normal + elseif has("spirit_small_keys", 1) then + keys3 = AccessibilityLevel.SequenceBreak end - return AccessibilityLevel.None + local lift2 = has("lift2") and AccessibilityLevel.Normal or AccessibilityLevel.None + local hs = has("hookshot") and AccessibilityLevel.Normal or AccessibilityLevel.None + local shortcut = has("spirit_temple_shortcuts") and AccessibilityLevel.Normal or AccessibilityLevel.None + local zl = (has("ocarina") and has("lullaby")) and AccessibilityLevel.Normal or AccessibilityLevel.None + + return and_accessibility( + or_accessibility(and_accessibility(keys3, lift2), and_accessibility(hs, shortcut)), + zl + ) end }, ["Spirit Temple Statue Room Northeast Chest"] = { @@ -14157,19 +15014,25 @@ data_per_region = { return AccessibilityLevel.None end, ["adult_access"] = function() - if has("lift2") and has("ocarina") and has("lullaby") then - local keys = AccessibilityLevel.None - if has("spirit_small_keys", 3) then - keys = AccessibilityLevel.Normal - elseif has("spirit_small_keys", 1) then - keys = AccessibilityLevel.SequenceBreak - end - local jump = - (has("hookshot") or has("hoverboots") or has("logic_spirit_lobby_jump")) and AccessibilityLevel.Normal or - AccessibilityLevel.SequenceBreak - return and_accessibility(keys, jump) + local keys3 = AccessibilityLevel.None + if has("spirit_small_keys", 3) then + keys3 = AccessibilityLevel.Normal + elseif has("spirit_small_keys", 1) then + keys3 = AccessibilityLevel.SequenceBreak end - return AccessibilityLevel.None + local lift2 = has("lift2") and AccessibilityLevel.Normal or AccessibilityLevel.None + local hs = has("hookshot") and AccessibilityLevel.Normal or AccessibilityLevel.None + local shortcut = has("spirit_temple_shortcuts") and AccessibilityLevel.Normal or AccessibilityLevel.None + local zl = (has("ocarina") and has("lullaby")) and AccessibilityLevel.Normal or AccessibilityLevel.None + local gap = + (has("hookshot") or has("hoverboots") or has("logic_spirit_lobby_jump")) and AccessibilityLevel.Normal or + AccessibilityLevel.SequenceBreak + + return and_accessibility( + or_accessibility(and_accessibility(keys3, lift2), and_accessibility(hs, shortcut)), + zl, + gap + ) end }, ["Spirit Temple GS Hall After Sun Block Room"] = { @@ -14191,7 +15054,7 @@ data_per_region = { ["adult_access"] = function() local rang = has("boomerang") and AccessibilityLevel.Normal or AccessibilityLevel.None local hs = has("hookshot") and AccessibilityLevel.Normal or AccessibilityLevel.None - local lift2 = has("lift2") and AccessibilityLevel.Normal or AccessibilityLevel.None + local shortcut = has("spirit_temple_shortcuts") and AccessibilityLevel.Normal or AccessibilityLevel.None local keys = AccessibilityLevel.None if has("spirit_small_keys", 3) then keys = AccessibilityLevel.Normal @@ -14201,7 +15064,7 @@ data_per_region = { return or_accessibility( and_accessibility(has_explosives(), rang, hs), - and_accessibility(or_accessibility(hs, AccessibilityLevel.Inspect), lift2, keys) + and_accessibility(or_accessibility(hs, AccessibilityLevel.Inspect), or_accessibility(shortcut, keys)) ) end }, @@ -14261,7 +15124,7 @@ data_per_region = { local rang = has("boomerang") and AccessibilityLevel.Normal or AccessibilityLevel.None local hs = has("hookshot") and AccessibilityLevel.Normal or AccessibilityLevel.None local hb = has("hoverboots") and AccessibilityLevel.Normal or AccessibilityLevel.None - local lift2 = has("lift2") and AccessibilityLevel.Normal or AccessibilityLevel.None + local shortcut = has("spirit_temple_shortcuts") and AccessibilityLevel.Normal or AccessibilityLevel.None return or_accessibility( and_accessibility( @@ -14270,9 +15133,27 @@ data_per_region = { rang, or_accessibility(hs, hb, trick_jump) ), - and_accessibility(keys3, lift2, or_accessibility(hs, hb, trick_jump)) + and_accessibility(or_accessibility(keys3, shortcut), or_accessibility(hs, hb, trick_jump)) ) end + }, + ["Spirit Temple First Mirror Chests"] = { + ["child_access"] = function() + return AccessibilityLevel.None + end, + ["adult_access"] = function() + local keys3 = AccessibilityLevel.None + if has("spirit_small_keys", 3) then + keys3 = AccessibilityLevel.Normal + elseif has("spirit_small_keys", 1) then + keys3 = AccessibilityLevel.SequenceBreak + end + local lift2 = has("lift2") and AccessibilityLevel.Normal or AccessibilityLevel.None + local hs = has("hookshot") and AccessibilityLevel.Normal or AccessibilityLevel.None + local shortcut = has("spirit_temple_shortcuts") and AccessibilityLevel.Normal or AccessibilityLevel.None + + return or_accessibility(and_accessibility(keys3, lift2), and_accessibility(hs, shortcut)) + end } }, ["exits"] = { @@ -14289,14 +15170,23 @@ data_per_region = { return AccessibilityLevel.None end, ["adult_access"] = function() - if has("lift2") then - if has("spirit_small_keys", 4) then - return AccessibilityLevel.Normal - elseif has("spirit_small_keys", 2) then - return AccessibilityLevel.SequenceBreak - end + local keys_shortcut = AccessibilityLevel.None + if has("spirit_small_keys", 4) then + keys_shortcut = AccessibilityLevel.Normal + elseif has("spirit_small_keys", 1) then + keys_shortcut = AccessibilityLevel.SequenceBreak end - return AccessibilityLevel.None + local keys_normal = AccessibilityLevel.None + if has("spirit_small_keys", 4) then + keys_normal = AccessibilityLevel.Normal + elseif has("spirit_small_keys", 2) then + keys_normal = AccessibilityLevel.SequenceBreak + end + local lift2 = has("lift2") and AccessibilityLevel.Normal or AccessibilityLevel.None + local hs = has("hookshot") and AccessibilityLevel.Normal or AccessibilityLevel.None + local shortcut = has("spirit_temple_shortcuts") and AccessibilityLevel.Normal or AccessibilityLevel.None + + return or_accessibility(and_accessibility(keys_normal, lift2), and_accessibility(keys_shortcut, hs, shortcut)) end }, ["Child Spirit Temple Climb"] = { @@ -14306,6 +15196,37 @@ data_per_region = { ["adult_access"] = function() return AccessibilityLevel.Normal end + }, + ["Spirit Temple Boss Platform"] = { + ["child_access"] = function() + return AccessibilityLevel.None + end, + ["adult_access"] = function() + local ls = has("longshot") and AccessibilityLevel.Normal or AccessibilityLevel.None + local hs = has("hookshot") and AccessibilityLevel.Normal or AccessibilityLevel.None + local trick = + has("logic_spirit_platform_hookshot") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak + local shortcut = has("spirit_temple_shortcuts") and AccessibilityLevel.Normal or AccessibilityLevel.None + + return and_accessibility(or_accessibility(ls, and_accessibility(trick, hs)), shortcut) + end + }, + ["Early Adult Spirit Temple"] = { + ["child_access"] = function() + return AccessibilityLevel.None + end, + ["adult_access"] = function() + local keys = AccessibilityLevel.None + if has("spirit_small_keys", 5) then + keys = AccessibilityLevel.Normal + elseif has("spirit_small_keys", 2) then + keys = AccessibilityLevel.SequenceBreak + end + local hs = has("hookshot") and AccessibilityLevel.Normal or AccessibilityLevel.None + local shortcut = has("spirit_temple_shortcuts") and AccessibilityLevel.Normal or AccessibilityLevel.None + + return and_accessibility(keys, hs, shortcut) + end } } }, @@ -14330,7 +15251,7 @@ data_per_region = { local keys3 = has("spirit_small_keys", 3) and AccessibilityLevel.Normal or AccessibilityLevel.None local ls = has("longshot") and AccessibilityLevel.Normal or AccessibilityLevel.None local keys5 = has("spirit_small_keys", 5) and AccessibilityLevel.Normal or AccessibilityLevel.None - local keys2 = has("spirit_small_keys", 2) and AccessibilityLevel.SequenceBreak or AccessibilityLevel.None + local keys2 = has("spirit_small_keys", 1) and AccessibilityLevel.SequenceBreak or AccessibilityLevel.None return or_accessibility(and_accessibility(keys3, ls, has_explosives()), keys5, keys2) end @@ -14340,16 +15261,26 @@ data_per_region = { return AccessibilityLevel.None end, ["adult_access"] = function() - if has("lift2") then - local keys = AccessibilityLevel.None - if has("spirit_small_keys", 4) then - keys = AccessibilityLevel.Normal - elseif has("spirit_small_keys", 2) then - keys = AccessibilityLevel.SequenceBreak - end - return and_accessibility(keys, has_explosives()) + local keys_shortcut = AccessibilityLevel.None + if has("spirit_small_keys", 4) then + keys_shortcut = AccessibilityLevel.Normal + elseif has("spirit_small_keys", 1) then + keys_shortcut = AccessibilityLevel.SequenceBreak end - return AccessibilityLevel.None + local keys_normal = AccessibilityLevel.None + if has("spirit_small_keys", 4) then + keys_normal = AccessibilityLevel.Normal + elseif has("spirit_small_keys", 2) then + keys_normal = AccessibilityLevel.SequenceBreak + end + local lift2 = has("lift2") and AccessibilityLevel.Normal or AccessibilityLevel.None + local hs = has("hookshot") and AccessibilityLevel.Normal or AccessibilityLevel.None + local shortcut = has("spirit_temple_shortcuts") and AccessibilityLevel.Normal or AccessibilityLevel.None + + return and_accessibility( + or_accessibility(and_accessibility(keys_normal, lift2), and_accessibility(keys_shortcut, hs, shortcut)), + has_explosives() + ) end } }, @@ -14365,14 +15296,14 @@ data_per_region = { return AccessibilityLevel.None end, ["adult_access"] = function() - if has("lift2") then + if has("lift2") or has("spirit_temple_shortcuts") then if has("spirit_small_keys", 5) then return AccessibilityLevel.Normal end local keys = AccessibilityLevel.None if has("spirit_small_keys", 3) then keys = AccessibilityLevel.Normal - elseif has("spirit_small_keys", 2) then + elseif has("spirit_small_keys", 1) then keys = AccessibilityLevel.SequenceBreak end return and_accessibility(keys, has_explosives()) @@ -14459,14 +15390,33 @@ data_per_region = { end return AccessibilityLevel.None end - }, + } + }, + ["exits"] = { + ["Spirit Temple Boss Platform"] = { + ["child_access"] = function() + return AccessibilityLevel.None + end, + ["adult_access"] = function() + if has("shield3") then + return has_explosives() + end + return AccessibilityLevel.None + end + } + } + }, + ["Spirit Temple Boss Platform"] = { + ["scene"] = "Spirit Temple", + ["pool"] = ER_POOL_TYPES.DUNGEON, + ["locations"] = { ["Twinrova"] = { ["child_access"] = function() return AccessibilityLevel.None end, ["adult_access"] = function() if has("shield3") and has("hookshot") and has("spirit_boss_key") then - return has_explosives() + return AccessibilityLevel.Normal end return AccessibilityLevel.None end @@ -14540,10 +15490,10 @@ data_per_region = { return AccessibilityLevel.None end, ["adult_access"] = function() - if has("longshot") and has("lift2") then - return has_bombchus() - end - return AccessibilityLevel.None + local ls = has("longshot") and AccessibilityLevel.Normal or AccessibilityLevel.None + local lift2 = has("lift2") and AccessibilityLevel.Normal or AccessibilityLevel.None + local shortcut = has("spirit_temple_shortcuts") and AccessibilityLevel.Normal or AccessibilityLevel.None + return and_accessibility(ls, or_accessibility(and_accessibility(lift2, has_bombchus()), shortcut)) end } } @@ -14649,12 +15599,13 @@ data_per_region = { return AccessibilityLevel.None end, ["adult_access"] = function() + local keys = AccessibilityLevel.None if has("spirit_small_keys", 7) then - return AccessibilityLevel.Normal + keys = AccessibilityLevel.Normal elseif has("spirit_small_keys", 1) then - return AccessibilityLevel.SequenceBreak + keys = AccessibilityLevel.SequenceBreak end - return AccessibilityLevel.None + return and_accessibility(keys, has_explosives()) end }, ["Spirit Temple MQ Statue Room Lullaby Chest"] = { @@ -14684,12 +15635,13 @@ data_per_region = { return AccessibilityLevel.None end, ["adult_access"] = function() + local keys = AccessibilityLevel.None if has("spirit_small_keys", 5) then - return AccessibilityLevel.Normal + keys = AccessibilityLevel.Normal elseif has("spirit_small_keys", 1) then - return AccessibilityLevel.SequenceBreak + keys = AccessibilityLevel.SequenceBreak end - return AccessibilityLevel.None + return and_accessibility(keys, has_explosives()) end }, ["Spirit Temple MQ Chest Switch Chest"] = { @@ -14697,14 +15649,15 @@ data_per_region = { return AccessibilityLevel.None end, ["adult_access"] = function() - if has("ocarina") and has("time") then - if has("spirit_small_keys", 5) then - return AccessibilityLevel.Normal - elseif has("spirit_small_keys", 1) then - return AccessibilityLevel.SequenceBreak - end + local keys = AccessibilityLevel.None + if has("spirit_small_keys", 5) then + keys = AccessibilityLevel.Normal + elseif has("spirit_small_keys", 1) then + keys = AccessibilityLevel.SequenceBreak end - return AccessibilityLevel.None + local sot = (has("ocarina") and has("time")) and AccessibilityLevel.Normal or AccessibilityLevel.None + local nuts = has("nuts") and AccessibilityLevel.Normal or AccessibilityLevel.None + return and_accessibility(keys, time, or_accessibility(has_explosives(), nuts)) end }, ["Spirit Temple MQ Boss Key Chest"] = { @@ -14712,14 +15665,16 @@ data_per_region = { return AccessibilityLevel.None end, ["adult_access"] = function() - if has("ocarina") and has("time") and has("shield3") then - if has("spirit_small_keys", 5) then - return AccessibilityLevel.Normal - elseif has("spirit_small_keys", 1) then - return AccessibilityLevel.SequenceBreak - end + local keys = AccessibilityLevel.None + if has("spirit_small_keys", 5) then + keys = AccessibilityLevel.Normal + elseif has("spirit_small_keys", 1) then + keys = AccessibilityLevel.SequenceBreak end - return AccessibilityLevel.None + local sot = (has("ocarina") and has("time")) and AccessibilityLevel.Normal or AccessibilityLevel.None + local shield3 = has("shield3") and AccessibilityLevel.Normal or AccessibilityLevel.None + local nuts = has("nuts") and AccessibilityLevel.Normal or AccessibilityLevel.None + return and_accessibility(keys, time, shield3, or_accessibility(has_explosives(), nuts)) end }, ["Spirit Temple MQ GS Nine Thrones Room West"] = { @@ -14796,17 +15751,27 @@ data_per_region = { return AccessibilityLevel.None end, ["adult_access"] = function() - if has("ocarina") and has("time") then - local keys = AccessibilityLevel.None - if has("spirit_small_keys", 5) then - keys = AccessibilityLevel.Normal - elseif has("spirit_small_keys", 1) then - keys = AccessibilityLevel.SequenceBreak - end - local lot = - (has("logic_lens_spirit_mq") or (has("lens") and has("magic"))) and AccessibilityLevel.Normal or - AccessibilityLevel.SequenceBreak - return and_accessibility(keys, lot) + local keys = AccessibilityLevel.None + if has("spirit_small_keys", 5) then + keys = AccessibilityLevel.Normal + elseif has("spirit_small_keys", 1) then + keys = AccessibilityLevel.SequenceBreak + end + local sot = (has("ocarina") and has("time")) and AccessibilityLevel.Normal or AccessibilityLevel.None + local lot = + (has("logic_lens_spirit_mq") or (has("lens") and has("magic"))) and AccessibilityLevel.Normal or + AccessibilityLevel.SequenceBreak + local nuts = has("nuts") and AccessibilityLevel.Normal or AccessibilityLevel.None + return and_accessibility(keys, time, lot, or_accessibility(has_explosives(), nuts)) + end + }, + ["Spirit Temple MQ Boss Platform"] = { + ["child_access"] = function() + return AccessibilityLevel.None + end, + ["adult_access"] = function() + if has("spirit_temple_shortcuts") then + return AccessibilityLevel.Normal end return AccessibilityLevel.None end @@ -14819,15 +15784,22 @@ data_per_region = { ["locations"] = { ["Spirit Temple MQ Child Climb North Chest"] = { ["child_access"] = function() - return AccessibilityLevel.None + local keys = AccessibilityLevel.None + if has("spirit_small_keys", 6) then + keys = AccessibilityLevel.Normal + elseif has("spirit_small_keys", 1) then + keys = AccessibilityLevel.SequenceBreak + end + return and_accessibility(keys, has_explosives()) end, ["adult_access"] = function() + local keys = AccessibilityLevel.None if has("spirit_small_keys", 6) then - return AccessibilityLevel.Normal + keys = AccessibilityLevel.Normal elseif has("spirit_small_keys", 1) then - return AccessibilityLevel.SequenceBreak + keys = AccessibilityLevel.SequenceBreak end - return AccessibilityLevel.None + return and_accessibility(keys, has_explosives()) end }, ["Spirit Temple MQ Compass Chest"] = { @@ -14895,13 +15867,14 @@ data_per_region = { elseif has("spirit_small_keys", 1) then keys4 = AccessibilityLevel.SequenceBreak end + local nuts = has("nuts") and AccessibilityLevel.Normal or AccessibilityLevel.None local lot = (has("logic_lens_spirit_mq") or (has("lens") and has("magic"))) and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak return or_accessibility( and_accessibility(keys7, or_accessibility(sot, trick)), - and_accessibility(keys4, sot, lot) + and_accessibility(keys4, sot, or_accessibility(has_explosives(), nuts), lot) ) end, ["adult_access"] = function() @@ -14918,11 +15891,12 @@ data_per_region = { elseif has("spirit_small_keys", 1) then keys4 = AccessibilityLevel.SequenceBreak end + local nuts = has("nuts") and AccessibilityLevel.Normal or AccessibilityLevel.None local lot = (has("logic_lens_spirit_mq") or (has("lens") and has("magic"))) and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak - return or_accessibility(keys7, and_accessibility(keys4, sot, lot)) + return or_accessibility(keys7, and_accessibility(keys4, sot, or_accessibility(has_explosives(), nuts), lot)) end }, ["Desert Colossus"] = { @@ -14937,8 +15911,21 @@ data_per_region = { local sot = (has("ocarina") and has("time")) and AccessibilityLevel.Normal or AccessibilityLevel.None local trick = has("logic_spirit_mq_sun_block_sot") and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak + local keys4 = AccessibilityLevel.None + if has("spirit_small_keys", 4) then + keys4 = AccessibilityLevel.Normal + elseif has("spirit_small_keys", 1) then + keys4 = AccessibilityLevel.SequenceBreak + end + local nuts = has("nuts") and AccessibilityLevel.Normal or AccessibilityLevel.None + local lot = + (has("logic_lens_spirit_mq") or (has("lens") and has("magic"))) and AccessibilityLevel.Normal or + AccessibilityLevel.SequenceBreak - return and_accessibility(keys7, or_accessibility(sot, trick)) + return or_accessibility( + and_accessibility(keys7, or_accessibility(sot, trick)), + and_accessibility(keys4, sot, or_accessibility(has_explosives(), nuts), lot) + ) end, ["adult_access"] = function() local keys7 = AccessibilityLevel.None @@ -14954,11 +15941,12 @@ data_per_region = { elseif has("spirit_small_keys", 1) then keys4 = AccessibilityLevel.SequenceBreak end + local nuts = has("nuts") and AccessibilityLevel.Normal or AccessibilityLevel.None local lot = (has("logic_lens_spirit_mq") or (has("lens") and has("magic"))) and AccessibilityLevel.Normal or AccessibilityLevel.SequenceBreak - return or_accessibility(keys7, and_accessibility(keys4, sot, lot)) + return or_accessibility(keys7, and_accessibility(keys4, sot, or_accessibility(has_explosives(), nuts), lot)) end } } @@ -15046,7 +16034,26 @@ data_per_region = { end return AccessibilityLevel.SequenceBreak end - }, + } + }, + ["exits"] = { + ["Spirit Temple MQ Boss Platform"] = { + ["child_access"] = function() + return AccessibilityLevel.None + end, + ["adult_access"] = function() + if has("shield3") then + return AccessibilityLevel.Normal + end + return AccessibilityLevel.None + end + } + } + }, + ["Spirit Temple MQ Boss Platform"] = { + ["scene"] = "Spirit Temple", + ["pool"] = ER_POOL_TYPES.DUNGEON, + ["locations"] = { ["Twinrova"] = { ["child_access"] = function() return AccessibilityLevel.None @@ -15283,7 +16290,6 @@ data_per_region = { end }, ["Water Temple GS Central Pillar"] = { - --TODO: peek this gs ["child_access"] = function() return AccessibilityLevel.None end, diff --git a/ootrando_overworldmap_hamsda/scripts/load_updaters.lua b/ootrando_overworldmap_hamsda/scripts/load_updaters.lua index 959da94f..818751c9 100644 --- a/ootrando_overworldmap_hamsda/scripts/load_updaters.lua +++ b/ootrando_overworldmap_hamsda/scripts/load_updaters.lua @@ -16,9 +16,6 @@ function tracker_on_finish_loading_save_file() end function tracker_on_accessibility_updating() -end - -function tracker_on_accessibility_updated() if PACK_READY then clear_amount_cache() @@ -33,11 +30,12 @@ function tracker_on_accessibility_updated() end apply_queued_changes() - - get_object("dummy").Active = not get_object("dummy").Active end end +function tracker_on_accessibility_updated() +end + function tracker_on_pack_ready() PACK_READY = true end diff --git a/ootrando_overworldmap_hamsda/scripts/logic_helpers.lua b/ootrando_overworldmap_hamsda/scripts/logic_helpers.lua index be29b0d7..c381a357 100644 --- a/ootrando_overworldmap_hamsda/scripts/logic_helpers.lua +++ b/ootrando_overworldmap_hamsda/scripts/logic_helpers.lua @@ -84,21 +84,6 @@ function hintable() end end -function bean_planting(state) - if state == "yes" then - if BEAN_PLANTING then - return 1, AccessibilityLevel.Normal - end - elseif state == "no" then - if not BEAN_PLANTING then - return 1, AccessibilityLevel.Normal - end - else - print("error! bean_planting - invalid state") - end - return 0, AccessibilityLevel.None -end - function has_bombchus() local bombs = Tracker:ProviderCountForCode("bombs") local chus = Tracker:ProviderCountForCode("bombchu") @@ -201,6 +186,14 @@ function can_LA() end end +function can_BFA() + if has("setting_blue_fire_arrows_on") and has_age("adult") == 1 and has("magic") and has("bow") and has("icearrow") then + return 1, AccessibilityLevel.Normal + else + return 0, AccessibilityLevel.None + end +end + function has_fire() if has_age("adult") == 1 and has("magic") and has("bow") and has("firearrow") or has("dinsfire") and has("magic") then return 1, AccessibilityLevel.Normal @@ -469,7 +462,7 @@ function _dmt_climb() return 1, AccessibilityLevel.Normal end - if has_age("both") > 0 and has("lift1") and (has("bean_trail_yes") or (has("beans") and not BEAN_PLANTING)) then + if has_age("both") > 0 and has("lift1") and (has("setting_plant_beans_on") or has("beans")) then return 1, AccessibilityLevel.Normal end @@ -529,7 +522,7 @@ function _dmc_central_to_lower() if has_age("adult") == 0 then return 0, AccessibilityLevel.None end - if has("hoverboots") or has("hookshot") or (has_age("both") > 0 and has("ocarina") and has("bolero") and has("beans")) then + if has("hoverboots") or has("hookshot") or has("setting_plant_beans_on") or (has_age("both") > 0 and has("ocarina") and has("bolero") and has("beans")) then return 1, AccessibilityLevel.Normal end return 0, AccessibilityLevel.None @@ -782,7 +775,6 @@ function has_blue_fire() location_object and location_object.AccessibilityLevel and location_object.AccessibilityLevel == AccessibilityLevel.Normal then - --TODO: trigger dummy update return 1, bottle_level end end @@ -800,13 +792,19 @@ function zora_tunic() if spawn_access("ZD Shop", "adult") > 0 then return 1, AccessibilityLevel.Normal end + local bfa_count, bfa_level = can_BFA() local bottle_count, bottle_level = has_bottle() local domain_count, domain_level = adult_domain() - if bottle_count > 0 and domain_count > 0 then - if bottle_level == AccessibilityLevel.SequenceBreak or domain_level == AccessibilityLevel.SequenceBreak then - return 1, AccessibilityLevel.SequenceBreak - else - return 1, AccessibilityLevel.Normal + if domain_count > 0 then + if bfa_count > 0 then + return 1, domain_level + end + if bottle_count > 0 then + if bottle_level == AccessibilityLevel.SequenceBreak or domain_level == AccessibilityLevel.SequenceBreak then + return 1, AccessibilityLevel.SequenceBreak + else + return 1, AccessibilityLevel.Normal + end end end end diff --git a/ootrando_overworldmap_hamsda/scripts/logic_helpers_entrance.lua b/ootrando_overworldmap_hamsda/scripts/logic_helpers_entrance.lua index dab42fff..9dff1b68 100644 --- a/ootrando_overworldmap_hamsda/scripts/logic_helpers_entrance.lua +++ b/ootrando_overworldmap_hamsda/scripts/logic_helpers_entrance.lua @@ -153,6 +153,13 @@ function can_LA() return AccessibilityLevel.None end +function can_BFA() + if has("setting_blue_fire_arrows_on") and has("bow") and has("magic") and has("icearrow") then + return AccessibilityLevel.Normal + end + return AccessibilityLevel.None +end + function can_child_attack() if has("sling") or has("boomerang") or has("sticks") or has("sword1") or (has("dinsfire") and has("magic")) then return AccessibilityLevel.Normal diff --git a/ootrando_overworldmap_hamsda/scripts/user_presets.lua b/ootrando_overworldmap_hamsda/scripts/user_presets.lua index 766645d1..53a4d3a8 100644 --- a/ootrando_overworldmap_hamsda/scripts/user_presets.lua +++ b/ootrando_overworldmap_hamsda/scripts/user_presets.lua @@ -1,8 +1,84 @@ setting_presets = { { - ["name"] = "S6", + ["name"] = "Wkly", ["color"] = "#00ffff", - ["icon"] = "images/sword1.png", + ["icon"] = "images/skulltula.png", + ["settings"] = { + ["setting_forest"] = 1, + ["setting_kak"] = 0, + ["setting_door"] = 1, + ["setting_fountain"] = 0, + ["setting_gerudo"] = 1, + ["setting_bridge"] = 3, + ["setting_bridge_amount"] = 6, + ["setting_trials"] = 0, + ["setting_age"] = 1, + ["setting_entrance_interiors"] = 0, + ["setting_entrance_grottos"] = 0, + ["setting_entrance_dungeons"] = 0, + ["setting_entrance_overworld"] = 0, + ["setting_entrance_mixed"] = 0, + ["setting_entrance_owl"] = 0, + ["setting_entrance_warpsong"] = 0, + ["setting_entrance_spawn_off"] = 1, + ["setting_logic_chus"] = 0, + ["setting_shopsanity"] = 1, + ["setting_tokens_off"] = 1, + ["setting_scrub_shuffle"] = 0, + ["setting_cowsanity"] = 0, + ["setting_shuffle_sword1"] = 1, + ["setting_shuffle_ocarinas"] = 0, + ["setting_shuffle_egg"] = 0, + ["setting_shuffle_card"] = 0, + ["setting_shuffle_beans"] = 0, + ["setting_shuffle_merchants"] = 0, + ["setting_shuffle_frogs"] = 1, + ["setting_shuffle_smallkeys"] = 0, + ["setting_shuffle_hideoutkeys"] = 0, + ["setting_shuffle_bosskeys"] = 0, + ["setting_shuffle_ganon_bosskey"] = 0, + ["setting_zelda"] = 1, + ["setting_masks"] = 0, + ["setting_plant_beans"] = 0, + ["setting_hints"] = 3, + ["setting_damage"] = 1, + ["setting_blue_fire_arrows"] = 0, + ["setting_skulltulas_sun"] = 0, + --tricks + ["logic_fewer_tunic_requirements"] = true, + ["logic_grottos_without_agony"] = true, + ["logic_child_deadhand"] = true, + ["logic_man_on_roof"] = true, + ["logic_dc_jump"] = true, + ["logic_rusted_switches"] = true, + ["logic_windmill_poh"] = true, + ["logic_crater_bean_poh_with_hovers"] = true, + ["logic_forest_vines"] = true, + ["logic_lens_botw"] = true, + ["logic_lens_castle"] = true, + ["logic_lens_gtg"] = true, + ["logic_lens_shadow"] = true, + ["logic_lens_shadow_platform"] = true, + ["logic_lens_spirit"] = true, + --shortcuts + ["deku_shortcuts"] = false, + ["dodongo_shortcuts"] = false, + ["jabu_shortcuts"] = true, + ["forest_shortcuts"] = true, + ["fire_shortcuts"] = false, + ["spirit_shortcuts"] = false, + ["shadow_shortcuts"] = true, + --items + ["shield1"] = true, + ["scarecrow"] = true, + ["sticks"] = 1, + ["nuts"] = 1 + } + }, + { + ["name"] = "S6", + ["color"] = "#ff00ff", + ["icon"] = "images/triforce_piece.png", ["settings"] = { ["setting_forest"] = 1, ["setting_kak"] = 0, @@ -12,7 +88,7 @@ setting_presets = { ["setting_bridge"] = 3, ["setting_bridge_amount"] = 6, ["setting_trials"] = 0, - ["setting_age"] = 0, + ["setting_age"] = 1, ["setting_entrance_interiors"] = 0, ["setting_entrance_grottos"] = 0, ["setting_entrance_dungeons"] = 0, @@ -20,7 +96,7 @@ setting_presets = { ["setting_entrance_mixed"] = 0, ["setting_entrance_owl"] = 0, ["setting_entrance_warpsong"] = 0, - ["setting_entrance_spawn"] = 1, + ["setting_entrance_spawn_off"] = 1, ["setting_logic_chus"] = 0, ["setting_shopsanity"] = 0, ["setting_tokens_off"] = 0, @@ -32,14 +108,17 @@ setting_presets = { ["setting_shuffle_card"] = 0, ["setting_shuffle_beans"] = 0, ["setting_shuffle_merchants"] = 0, + ["setting_shuffle_frogs"] = 0, ["setting_shuffle_smallkeys"] = 0, ["setting_shuffle_hideoutkeys"] = 0, ["setting_shuffle_bosskeys"] = 0, ["setting_shuffle_ganon_bosskey"] = 0, ["setting_zelda"] = 1, ["setting_masks"] = 0, + ["setting_plant_beans"] = 0, ["setting_hints"] = 3, ["setting_damage"] = 1, + ["setting_blue_fire_arrows"] = 0, ["setting_skulltulas_sun"] = 0, --tricks ["logic_fewer_tunic_requirements"] = true, @@ -55,14 +134,99 @@ setting_presets = { ["logic_lens_castle"] = true, ["logic_lens_gtg"] = true, ["logic_lens_shadow"] = true, - ["logic_lens_shadow_back"] = true, + ["logic_lens_shadow_platform"] = true, ["logic_lens_spirit"] = true, + --shortcuts + ["deku_shortcuts"] = false, + ["dodongo_shortcuts"] = false, + ["jabu_shortcuts"] = false, + ["forest_shortcuts"] = false, + ["fire_shortcuts"] = false, + ["spirit_shortcuts"] = false, + ["shadow_shortcuts"] = false, --items ["shield1"] = true, ["sticks"] = 1, ["nuts"] = 1 } }, + { + ["name"] = "Leag", + ["color"] = "#8800ff", + ["icon"] = "images/icearrow.png", + ["settings"] = { + ["setting_forest"] = 1, + ["setting_kak"] = 0, + ["setting_door"] = 1, + ["setting_fountain"] = 0, + ["setting_gerudo"] = 1, + ["setting_bridge"] = 3, + ["setting_bridge_amount"] = 5, + ["setting_trials"] = 0, + ["setting_age"] = 1, + ["setting_entrance_interiors"] = 0, + ["setting_entrance_grottos"] = 0, + ["setting_entrance_dungeons"] = 0, + ["setting_entrance_overworld"] = 0, + ["setting_entrance_mixed"] = 0, + ["setting_entrance_owl"] = 0, + ["setting_entrance_warpsong"] = 0, + ["setting_entrance_spawn_off"] = 1, + ["setting_logic_chus"] = 0, + ["setting_shopsanity"] = 0, + ["setting_tokens_off"] = 0, + ["setting_scrub_shuffle"] = 0, + ["setting_cowsanity"] = 0, + ["setting_shuffle_sword1"] = 1, + ["setting_shuffle_ocarinas"] = 0, + ["setting_shuffle_egg"] = 0, + ["setting_shuffle_card"] = 0, + ["setting_shuffle_beans"] = 0, + ["setting_shuffle_merchants"] = 0, + ["setting_shuffle_frogs"] = 0, + ["setting_shuffle_smallkeys"] = 0, + ["setting_shuffle_hideoutkeys"] = 0, + ["setting_shuffle_bosskeys"] = 0, + ["setting_shuffle_ganon_bosskey"] = 0, + ["setting_zelda"] = 1, + ["setting_masks"] = 0, + ["setting_plant_beans"] = 0, + ["setting_hints"] = 3, + ["setting_damage"] = 1, + ["setting_blue_fire_arrows"] = 1, + ["setting_skulltulas_sun"] = 0, + --tricks + ["logic_fewer_tunic_requirements"] = true, + ["logic_grottos_without_agony"] = true, + ["logic_child_deadhand"] = true, + ["logic_man_on_roof"] = true, + ["logic_dc_jump"] = true, + ["logic_rusted_switches"] = true, + ["logic_windmill_poh"] = true, + ["logic_crater_bean_poh_with_hovers"] = true, + ["logic_forest_vines"] = true, + ["logic_lens_botw"] = true, + ["logic_lens_castle"] = true, + ["logic_lens_gtg"] = true, + ["logic_lens_shadow"] = true, + ["logic_lens_shadow_platform"] = true, + ["logic_lens_spirit"] = true, + --shortcuts + ["deku_shortcuts"] = false, + ["dodongo_shortcuts"] = false, + ["jabu_shortcuts"] = false, + ["forest_shortcuts"] = false, + ["fire_shortcuts"] = false, + ["spirit_shortcuts"] = false, + ["shadow_shortcuts"] = false, + --items + ["shield1"] = true, + ["lens"] = true, + ["faroreswind"] = true, + ["sticks"] = 1, + ["nuts"] = 1 + } + }, { ["name"] = "RSL", ["color"] = "#ffbb00", @@ -76,7 +240,7 @@ setting_presets = { ["setting_bridge"] = 0, ["setting_bridge_amount"] = 0, ["setting_trials"] = 0, - ["setting_age"] = 0, + ["setting_age"] = 1, ["setting_entrance_interiors"] = 2, ["setting_entrance_grottos"] = 1, ["setting_entrance_dungeons"] = 1, @@ -84,7 +248,7 @@ setting_presets = { ["setting_entrance_mixed"] = 2, ["setting_entrance_owl"] = 1, ["setting_entrance_warpsong"] = 1, - ["setting_entrance_spawn"] = 1, + ["setting_entrance_spawn_off"] = 3, ["setting_logic_chus"] = 1, ["setting_shopsanity"] = 1, ["setting_tokens_off"] = 3, @@ -96,14 +260,17 @@ setting_presets = { ["setting_shuffle_card"] = 1, ["setting_shuffle_beans"] = 1, ["setting_shuffle_merchants"] = 1, + ["setting_shuffle_frogs"] = 1, ["setting_shuffle_smallkeys"] = 1, ["setting_shuffle_hideoutkeys"] = 1, ["setting_shuffle_bosskeys"] = 1, ["setting_shuffle_ganon_bosskey"] = 1, ["setting_zelda"] = 0, ["setting_masks"] = 0, + ["setting_plant_beans"] = 1, ["setting_hints"] = 3, ["setting_damage"] = 1, + ["setting_blue_fire_arrows"] = 0, ["setting_skulltulas_sun"] = 0, --tricks ["logic_fewer_tunic_requirements"] = true, @@ -120,15 +287,23 @@ setting_presets = { ["logic_lens_castle"] = true, ["logic_lens_gtg"] = true, ["logic_lens_shadow"] = true, - ["logic_lens_shadow_back"] = true, + ["logic_lens_shadow_platform"] = true, ["logic_lens_spirit"] = true, ["logic_visible_collisions"] = true, ["logic_deku_b1_webs_with_bow"] = true, ["logic_lens_gtg_mq"] = true, ["logic_lens_jabu_mq"] = true, ["logic_lens_shadow_mq"] = true, - ["logic_lens_shadow_mq_back"] = true, - ["logic_lens_spirit_mq"] = true + ["logic_lens_shadow_mq_platform"] = true, + ["logic_lens_spirit_mq"] = true, + --shortcuts + ["deku_shortcuts"] = false, + ["dodongo_shortcuts"] = false, + ["jabu_shortcuts"] = false, + ["forest_shortcuts"] = false, + ["fire_shortcuts"] = false, + ["spirit_shortcuts"] = false, + ["shadow_shortcuts"] = false, } }, { @@ -144,7 +319,7 @@ setting_presets = { ["setting_bridge"] = 2, ["setting_bridge_amount"] = 3, ["setting_trials"] = 0, - ["setting_age"] = 0, + ["setting_age"] = 1, ["setting_entrance_interiors"] = 0, ["setting_entrance_grottos"] = 0, ["setting_entrance_dungeons"] = 0, @@ -152,7 +327,7 @@ setting_presets = { ["setting_entrance_mixed"] = 0, ["setting_entrance_owl"] = 0, ["setting_entrance_warpsong"] = 0, - ["setting_entrance_spawn"] = 1, + ["setting_entrance_spawn_off"] = 1, ["setting_logic_chus"] = 0, ["setting_shopsanity"] = 0, ["setting_tokens_off"] = 0, @@ -164,14 +339,17 @@ setting_presets = { ["setting_shuffle_card"] = 0, ["setting_shuffle_beans"] = 0, ["setting_shuffle_merchants"] = 0, + ["setting_shuffle_frogs"] = 0, ["setting_shuffle_smallkeys"] = 0, ["setting_shuffle_hideoutkeys"] = 0, ["setting_shuffle_bosskeys"] = 0, ["setting_shuffle_ganon_bosskey"] = 0, ["setting_zelda"] = 1, ["setting_masks"] = 0, + ["setting_plant_beans"] = 0, ["setting_hints"] = 3, ["setting_damage"] = 1, + ["setting_blue_fire_arrows"] = 0, ["setting_skulltulas_sun"] = 0, --tricks ["logic_fewer_tunic_requirements"] = true, @@ -187,8 +365,16 @@ setting_presets = { ["logic_lens_castle"] = true, ["logic_lens_gtg"] = true, ["logic_lens_shadow"] = true, - ["logic_lens_shadow_back"] = true, + ["logic_lens_shadow_platform"] = true, ["logic_lens_spirit"] = true, + --shortcuts + ["deku_shortcuts"] = false, + ["dodongo_shortcuts"] = false, + ["jabu_shortcuts"] = false, + ["forest_shortcuts"] = false, + ["fire_shortcuts"] = false, + ["spirit_shortcuts"] = false, + ["shadow_shortcuts"] = false, --items ["lens"] = true, ["shield1"] = true, @@ -218,7 +404,7 @@ setting_presets = { ["setting_entrance_mixed"] = 0, ["setting_entrance_owl"] = 0, ["setting_entrance_warpsong"] = 0, - ["setting_entrance_spawn"] = 0, + ["setting_entrance_spawn_off"] = 0, ["setting_logic_chus"] = 0, ["setting_shopsanity"] = 1, ["setting_tokens_off"] = 0, @@ -230,14 +416,17 @@ setting_presets = { ["setting_shuffle_card"] = 0, ["setting_shuffle_beans"] = 0, ["setting_shuffle_merchants"] = 0, + ["setting_shuffle_frogs"] = 0, ["setting_shuffle_smallkeys"] = 0, ["setting_shuffle_hideoutkeys"] = 0, ["setting_shuffle_bosskeys"] = 0, ["setting_shuffle_ganon_bosskey"] = 0, ["setting_zelda"] = 1, ["setting_masks"] = 0, + ["setting_plant_beans"] = 0, ["setting_hints"] = 3, ["setting_damage"] = 1, + ["setting_blue_fire_arrows"] = 0, ["setting_skulltulas_sun"] = 0, --tricks ["logic_fewer_tunic_requirements"] = true, @@ -254,11 +443,20 @@ setting_presets = { ["logic_lens_castle"] = true, ["logic_lens_gtg"] = true, ["logic_lens_shadow"] = true, - ["logic_lens_shadow_back"] = true, + ["logic_lens_shadow_platform"] = true, ["logic_lens_spirit"] = true, + --shortcuts + ["deku_shortcuts"] = false, + ["dodongo_shortcuts"] = false, + ["jabu_shortcuts"] = false, + ["forest_shortcuts"] = false, + ["fire_shortcuts"] = false, + ["spirit_shortcuts"] = false, + ["shadow_shortcuts"] = false, --items ["lens"] = true, ["faroreswind"] = true, + ["scarecrow"] = true, ["sticks"] = 1, ["nuts"] = 1 } diff --git a/ootrando_overworldmap_hamsda/scripts/user_settings.lua b/ootrando_overworldmap_hamsda/scripts/user_settings.lua index 49d8ce06..f2bafc8f 100644 --- a/ootrando_overworldmap_hamsda/scripts/user_settings.lua +++ b/ootrando_overworldmap_hamsda/scripts/user_settings.lua @@ -8,9 +8,6 @@ SONG_BADGE_LAST_ACTIVATED = false -- left clicking the free reward will turn on a quick mark mode for the adult altar ALTAR_QUICK_MARK = false --- beans will need to be planted before their corresponding checks become available -BEAN_PLANTING = false - -- puts badges of captured icons on the map locations -- visibility is not the greatest, but can help at a glance ER_BADGE_EXITS = false diff --git a/repository.json b/repository.json index b7ea4c6a..273bbaa2 100644 --- a/repository.json +++ b/repository.json @@ -10,7 +10,7 @@ "pins", "chathud" ], - "version": "3.7.3.0", + "version": "3.8.0.0", "uid": "ootrando_overworldmap_hamsda", "link": "https://hamsda.github.io/EmoTrackerPacks/ootrando_overworldmap_hamsda.zip", "documentation_url": "https://github.com/Hamsda/EmoTrackerPacks/blob/master/ootrando_overworldmap_hamsda/README.md",