diff --git a/images/items/bombs_plus.png b/images/items/bombs_plus.png new file mode 100644 index 0000000..8907003 Binary files /dev/null and b/images/items/bombs_plus.png differ diff --git a/manifest.json b/manifest.json index d99a721..f1b2cc5 100644 --- a/manifest.json +++ b/manifest.json @@ -1,30 +1,24 @@ { "name": "Oracle of Ages Randomizer", "game_name": "Oracle of Ages", - "package_version": "0.7.3", + "package_version": "0.7.3.1", "package_uid": "ooa_brooty", "author": "Brooty", "variants": { "standard": { - "display_name": "Map Tracker (Vertical)", + "display_name": "Map Tracker (Vertical)" //"flags": [ // "ap" //] }, "var_horizontal": { - "display_name": "Map Tracker (Horizontal)", + "display_name": "Map Tracker (Horizontal)" //"flags": [ // "ap" //] }, "var_x-items": { - "display_name": "Map Tracker (Cross-Items)", - //"flags": [ - // "ap" - //] - }, - "var_x-items_testing": { - "display_name": "Cross-Items Testing Branch", + "display_name": "Map Tracker (Cross-Items)" //"flags": [ // "ap" //] @@ -36,7 +30,7 @@ ] }, "var_itemsonly": { - "display_name": "Items Only", + "display_name": "Items Only" //"flags": [ // "ap" //] diff --git a/ooa_brooty.zip b/ooa_brooty.zip index 5b6d832..db8d9fa 100644 Binary files a/ooa_brooty.zip and b/ooa_brooty.zip differ diff --git a/scripts/autotracking/item_mapping.lua b/scripts/autotracking/item_mapping.lua index 246a086..9bf96df 100644 --- a/scripts/autotracking/item_mapping.lua +++ b/scripts/autotracking/item_mapping.lua @@ -4,7 +4,7 @@ BASE = 27022002000 ITEM_MAPPING = { [BASE + 0] = {"shield", "progressive"}, - [BASE + 1] = {"bomb", "toggle"}, + [BASE + 1] = {"bomb", "progressive"}, [BASE + 2] = {"swordupgrade", "progressive"}, [BASE + 3] = {"boomerang", "progressive"}, [BASE + 4] = {"harpupgrade", "progressive"}, diff --git a/scripts/autotracking/location_mapping.lua b/scripts/autotracking/location_mapping.lua index acbdd79..c53efa4 100644 --- a/scripts/autotracking/location_mapping.lua +++ b/scripts/autotracking/location_mapping.lua @@ -105,7 +105,7 @@ LOCATION_MAPPING = { [BASE + 94] = {"@Overworld/Rolling Ridge West/Old Zora Trade/"}, -- HEART PIECES [BASE + 95] = {"@Overworld/Lynna|South Shore|Palace/Black Tower Heart Piece/"}, - [BASE + 96] = {"@Dungeons/Maku Path (D0)/Heart Piece"}, + [BASE + 96] = {"@Dungeons/Maku Path (D0)/Heart Piece/"}, [BASE + 97] = {"@Overworld/Yoll Graveyard/Yoll Graveyard Heart Piece/"}, [BASE + 98] = {"@Overworld/Fairies' Woods/Deku Forest Heart Piece/"}, [BASE + 99] = {"@Overworld/Fairies' Woods/Restoration Wall Heart Piece/"}, @@ -113,8 +113,8 @@ LOCATION_MAPPING = { [BASE + 101] = {"@Overworld/Rolling Ridge West/Rolling Ridge Entrance/Ridge West Heart Piece"}, [BASE + 102] = {"@Overworld/Rolling Ridge East (Past)/Ridge Upper Heart Piece/"}, -- MAKU PATH - [BASE + 103] = {"@Dungeons/Maku Path (D0)/Key Chest"}, - [BASE + 104] = {"@Dungeons/Maku Path (D0)/Basement"}, + [BASE + 103] = {"@Dungeons/Maku Path (D0)/Key Chest/"}, + [BASE + 104] = {"@Dungeons/Maku Path (D0)/Basement/"}, -- SPIRITS GRAVE [BASE + 105] = {"@Dungeons/Spirit's Grave (D1)/One-Button Chest/"}, [BASE + 106] = {"@Dungeons/Spirit's Grave (D1)/Two-Buttons Chest/"}, diff --git a/var_archipelago/items/items.json b/var_archipelago/items/items.json index a960dd3..b8791a9 100644 --- a/var_archipelago/items/items.json +++ b/var_archipelago/items/items.json @@ -76,11 +76,25 @@ }, { "name": "Bombs", - "type": "toggle", - "loop": true, - "img": "images/items/bombs.png", - "codes": "bomb, bombs" + "type": "progressive", + "stages": [ + { + "img": "images/items/bombs.png", + "codes": "bomb, bombs" + }, + { + "img": "images/items/bombs_plus.png", + "codes": "bomb, bombs, bombplus, bombsplus" + } + ] }, + //{ + // "name": "Bombs", + // "type": "toggle", + // "loop": true, + // "img": "images/items/bombs.png", + // "codes": "bomb, bombs" + //}, { "name": "Flute", "type": "toggle", diff --git a/var_archipelago/locations/dungeons.json b/var_archipelago/locations/dungeons.json index 6e33e77..c96b98b 100644 --- a/var_archipelago/locations/dungeons.json +++ b/var_archipelago/locations/dungeons.json @@ -78,6 +78,7 @@ "name": "Have Maku Path Key?", "sections": [ { + "name": "", "access_rules": ["{}"], "hosted_item": "pathkey" } diff --git a/var_archipelago/locations/overworld.json b/var_archipelago/locations/overworld.json index ae2fcfb..648f032 100644 --- a/var_archipelago/locations/overworld.json +++ b/var_archipelago/locations/overworld.json @@ -2308,10 +2308,10 @@ "name": "Treasure Hunting Goron", "access_rules": [ //from Lynna, swimming - "$lynna_village, echoes, feather, mermaid, hook1, bombs, emberseeds, lift1", - "$lynna_village, ages, mermaid, hook1, bombs, emberseeds, lift1", + "$lynna_village, echoes, feather, mermaid, hook1, bombsplus, emberseeds, lift1", + "$lynna_village, ages, mermaid, hook1, bombsplus, emberseeds, lift1", //from the upper cave, requires emblem - "$west_ridge_present, $jump3, bracelet, bombs, emberseeds" + "$west_ridge_present, $jump3, bracelet, bombsplus, emberseeds" ], "sections": [ { diff --git a/var_x-items_testing/items/items.json b/var_x-items_testing/items/items.json deleted file mode 100644 index aaba301..0000000 --- a/var_x-items_testing/items/items.json +++ /dev/null @@ -1,1448 +0,0 @@ -[ - //Key Items - { - "name": "Sword", - "type": "progressive", - "stages": [ - { - "img": "images/items/sword1.png", - "codes": "sword, sword1" - }, - { - "img": "images/items/sword2.png", - "codes": "sword2, royalsword" - } - ] - }, - { - "name": "Feather", - "type": "progressive", - "stages": [ - { - "img": "images/items/feather.png", - "codes": "feather" - }, - { - "img": "images/items/cape.png", - "codes": "cape" - } - ] - }, - { - "name": "Boomerang", - "type": "progressive", - "stages": [ - { - "img": "images/items/boomerang.png", - "codes": "boomerang" - }, - { - "img": "images/items/magicboomerang.png", - "codes": "magboom" - } - ] - }, - { - "name": "Seed Shooter", - "type": "toggle", - "loop": true, - "img": "images/items/shooter.png", - "codes": "shooter" - }, - { - "name": "Seed Satchel", - "type": "toggle", - "loop": true, - "img": "images/items/satchel.png", - "codes": "satchel" - }, - { - "name": "Cane of Somaria", - "type": "toggle", - "loop": true, - "img": "images/items/somaria.png", - "codes": "cane, somaria" - }, - { - "name": "Shovel", - "type": "toggle", - "loop": true, - "img": "images/items/shovel.png", - "codes": "shovel" - }, - { - "name": "Bombs", - "type": "toggle", - "loop": true, - "img": "images/items/bombs.png", - "codes": "bomb, bombs" - }, - { - "name": "Flute", - "type": "toggle", - "loop": true, - "img": "images/items/flute.png", - "codes": "flute, ocarina" - }, - { - "name": "Harp", - "type": "progressive", - "allow_disabled": false, - "stages": [ - { - "img": "images/items/harp.png", - "codes": "harp", - "img_mods": "@disabled" - }, - { - "img": "images/items/song_echoes.png", - "codes": "echoes, song1" - }, - { - "img": "images/items/song_currents.png", - "codes": "currents, song2" - }, - { - "img": "images/items/song_ages.png", - "codes": "ages, song3" - } - ] - }, - { - "name": "Shield", - "type": "progressive", - "stages": [ - { - "img": "images/items/shield1.png", - "codes": "shield, shield1" - }, - { - "img": "images/items/shield2.png", - "codes": "shield2" - } - ] - }, - { - "name": "Zora's Flippers/Mermaid Suit", - "type": "progressive", - "stages": [ - { - "img": "images/items/flippers.png", - "codes": "flippers, swim, swim1" - }, - { - "img": "images/items/mermaid.png", - "codes": "mermaid, swim2" - } - ] - }, - { - "name": "Power Bracelet/Gloves", - "type": "progressive", - "stages": [ - { - "img": "images/items/powerbracelet.png", - "codes": "bracelet, bracelet1, lift1" - }, - { - "img": "images/items/powergloves.png", - "codes": "bracelet2, lift2" - } - ] - }, - { - "name": "Switch Hook", - "type": "progressive", - "stages": [ - { - "img": "images/items/switchhook1.png", - "codes": "hook1" - }, - { - "img": "images/items/switchhook2.png", - "codes": "hook2" - } - ] - }, - // Rings - { - "name": "Fist Ring", - "type": "toggle", - "loop": true, - "img": "images/items/ring_fist.png", - "codes": "ring_fist" - }, - { - "name": "Expert's Ring", - "type": "toggle", - "loop": true, - "img": "images/items/ring_expert.png", - "codes": "ring_expert" - }, - { - "name": "Energy Ring", - "type": "toggle", - "loop": true, - "img": "images/items/ring_energy.png", - "codes": "ring_energy" - }, - { - "name": "Toss Ring", - "type": "toggle", - "loop": true, - "img": "images/items/ring_toss.png", - "codes": "ring_toss" - }, - { - "name": "Peace Ring", - "type": "toggle", - "loop": true, - "img": "images/items/ring_peace.png", - "codes": "ring_peace" - }, - //Misc. Progression Items - { - "name": "Cheval Rope", - "type": "toggle", - "loop": true, - "img": "images/items/cheval.png", - "codes": "cheval, chevalrope" - }, - { - "name": "Island Chart", - "type": "toggle", - "loop": true, - "img": "images/items/chart.png", - "codes": "chart, islandchart" - }, - { - "name": "Ricky's Gloves", - "type": "toggle", - "loop": true, - "img": "images/items/gloves.png", - "codes": "gloves, rickygloves" - }, - { - "name": "Scent Seedling", - "type": "toggle", - "loop": true, - "img": "images/items/seedling.png", - "codes": "seedling" - }, - { - "name": "Bomb Flower", - "type": "toggle", - "loop": true, - "img": "images/items/bombflower.png", - "codes": "bombflower" - }, - { - "name": "Zora Scale", - "type": "toggle", - "loop": true, - "img": "images/items/scale.png", - "codes": "scale, zorascale" - }, - { - "name": "Goron Emblem", - "type": "toggle", - "loop": true, - "img": "images/items/emblem.png", - "codes": "emblem, goronemblem" - }, - { - "name": "Letter of Introduction", - "type": "toggle", - "loop": true, - "img": "images/items/letter.png", - "codes": "letter, introduction" - }, - { - "name": "Lava Juice", - "type": "toggle", - "loop": true, - "img": "images/items/lavajuice.png", - "codes": "lavajuice" - }, - { - "name": "Goron Vase", - "type": "toggle", - "loop": true, - "img": "images/items/vase.png", - "codes": "vase" - }, - { - "name": "Goronade", - "type": "toggle", - "loop": true, - "img": "images/items/goronade.png", - "codes": "goronade" - }, - { - "name": "Rock Brisket", - "type": "toggle", - "loop": true, - "img": "images/items/brisket.png", - "codes": "brisket" - }, - { - "name": "Library Key", - "type": "toggle", - "loop": true, - "img": "images/items/keylibrary.png", - "codes": "librarykey" - }, - { - "name": "Book of Seals", - "type": "toggle", - "loop": true, - "img": "images/items/book.png", - "codes": "book" - }, - { - "name": "Fairy Powder", - "type": "toggle", - "loop": true, - "img": "images/items/powder.png", - "codes": "powder" - }, - //{ -- FIGURE OUT?? - //"name": "Fairy Powder & Magic Potion", - //"type": "toggle_badged", - //"base_item": "powder", - //"img": "images/items/book.png", - //"codes": "powder, potion" - //}, - // D1 Access - { - "name": "Graveyard Key", - "type": "toggle", - "loop": true, - "img": "images/items/keygraveyard.png", - "codes": "d1key, gravekey" - }, - // D4 Access - { - "name": "Tuni Nut", - "type": "progressive", - "stages": [ - { - "img": "images/items/tuninut.png", - "codes": "tuninut" - }, - { - "img": "images/items/tuninut_repaired.png", - "codes": "repairednut" - } - ] - }, - // D5 Access - { - "name": "Crown Key", - "type": "toggle", - "loop": true, - "img": "images/items/keycrown.png", - "codes": "d5key, crownkey" - }, - // D6 Access (Past) - { - "name": "Mermaid Key", - "type": "toggle", - "loop": true, - "img": "images/items/keymermaid.png", - "codes": "d6keypast" - }, - // D6 Access (Present) - { - "name": "Old Mermaid Key", - "type": "toggle", - "loop": true, - "img": "images/items/keymermaid_old.png", - "codes": "d6keypresent" - }, - // D8 Access - { - "name": "Tokay Eyeball", - "type": "toggle", - "loop": true, - "img": "images/items/eyeball.png", - "codes": "eyeball" - }, - // Essences of Time - { - "name": "Eternal Spirit", - "type": "toggle", - "loop": true, - "img": "images/essences/d1.png", - "codes": "d1" - }, - { - "name": "Ancient Wood", - "type": "toggle", - "loop": true, - "img": "images/essences/d2.png", - "codes": "d2" - }, - { - "name": "Echoing Howl", - "type": "toggle", - "loop": true, - "img": "images/essences/d3.png", - "codes": "d3" - }, - { - "name": "Burning Flame", - "type": "toggle", - "loop": true, - "img": "images/essences/d4.png", - "codes": "d4" - }, - { - "name": "Sacred Soil", - "type": "toggle", - "loop": true, - "img": "images/essences/d5.png", - "codes": "d5" - }, - { - "name": "Lonely Peak", - "type": "toggle", - "loop": true, - "img": "images/essences/d6.png", - "codes": "d6" - }, - { - "name": "Rolling Sea", - "type": "toggle", - "loop": true, - "img": "images/essences/d7.png", - "codes": "d7" - }, - { - "name": "Falling Star", - "type": "toggle", - "loop": true, - "img": "images/essences/d8.png", - "codes": "d8" - }, - // Seeds - { - "name": "Ember Seeds", - "type": "toggle", - "loop": true, - "img": "images/items/seedember.png", - "codes": "emberseeds" - }, - { - "name": "Mystery Seeds", - "type": "toggle", - "loop": true, - "img": "images/items/seedmystery.png", - "codes": "mysteryseeds" - }, - { - "name": "Scent Seeds", - "type": "toggle", - "loop": true, - "img": "images/items/seedscent.png", - "codes": "scentseeds" - }, - { - "name": "Pegasus Seeds", - "type": "toggle", - "loop": true, - "img": "images/items/seedpegasus.png", - "codes": "pegasusseeds" - }, - { - "name": "Gale Seeds", - "type": "toggle", - "loop": true, - "img": "images/items/seedgale.png", - "codes": "galeseeds" - }, - // Carpenters - { - "name": "Carpenter Boss", - "type": "toggle", - "img": "images/items/carpenter.png", - "codes": "carpenterboss" - }, - { - "name": "Carpenter 1", - "type": "toggle", - "img": "images/items/carpenter.png", - "codes": "carpenter1" - }, - { - "name": "Carpenter 2", - "type": "toggle", - "img": "images/items/carpenter.png", - "codes": "carpenter2" - }, - { - "name": "Carpenter 3", - "type": "toggle", - "img": "images/items/carpenter.png", - "codes": "carpenter3" - }, - // Dungeon Keys - { - "name": "D1 Small Keys", - "type": "consumable", - "codes": "d1sk", - "max_quantity": 3, - "img": "images/items/smallkey.png" - }, - { - "name": "D2 Small Keys", - "type": "consumable", - "codes": "d2sk", - "max_quantity": 5, - "img": "images/items/smallkey.png" - }, - { - "name": "D3 Small Keys", - "type": "consumable", - "codes": "d3sk", - "max_quantity": 4, - "img": "images/items/smallkey.png" - }, - { - "name": "D4 Small Keys", - "type": "consumable", - "codes": "d4sk", - "max_quantity": 5, - "img": "images/items/smallkey.png" - }, - { - "name": "D5 Small Keys", - "type": "consumable", - "codes": "d5sk", - "max_quantity": 5, - "img": "images/items/smallkey.png" - }, - { - "name": "D6 Past Small Keys", - "type": "consumable", - "codes": "d6_1sk", - "max_quantity": 3, - "img": "images/items/smallkey.png" - }, - { - "name": "D6 Present Small Keys", - "type": "consumable", - "codes": "d6_2sk", - "max_quantity": 3, - "img": "images/items/smallkey.png" - }, - { - "name": "D7 Small Keys", - "type": "consumable", - "codes": "d7sk", - "max_quantity": 7, - "img": "images/items/smallkey.png" - }, - { - "name": "D8 Small Keys", - "type": "consumable", - "codes": "d8sk", - "max_quantity": 5, - "img": "images/items/smallkey.png" - }, - { - "name": "D8 Slates", - "type": "consumable", - "codes": "d8slate", - "max_quantity": 4, - "img": "images/items/slate.png" - }, - { - "name": "D1 Boss Key", - "type": "toggle", - "codes": "d1bk", - "img": "images/items/bosskey.png" - }, - { - "name": "D2 Boss Key", - "type": "toggle", - "codes": "d2bk", - "img": "images/items/bosskey.png" - }, - { - "name": "D3 Boss Key", - "type": "toggle", - "codes": "d3bk", - "img": "images/items/bosskey.png" - }, - { - "name": "D4 Boss Key", - "type": "toggle", - "codes": "d4bk", - "img": "images/items/bosskey.png" - }, - { - "name": "D5 Boss Key", - "type": "toggle", - "codes": "d5bk", - "img": "images/items/bosskey.png" - }, - { - "name": "D6 Boss Key", - "type": "toggle", - "codes": "d6bk", - "img": "images/items/bosskey.png" - }, - { - "name": "D7 Boss Key", - "type": "toggle", - "codes": "d7bk", - "img": "images/items/bosskey.png" - }, - { - "name": "D8 Boss Key", - "type": "toggle", - "codes": "d8bk", - "img": "images/items/bosskey.png" - }, - // OPTIONS - { - "name": "Animal Companion", - "type": "progressive", - "allow_disabled": false, - "loop": true, - "stages": [ - { - "codes": "companions", - "inherit_codes": false, - "img": "images/items/companions.png" - }, - { - "codes": "nuun_ricky", - "inherit_codes": false, - "img": "images/items/ricky.png" - }, - { - "codes": "nuun_dimitri", - "inherit_codes": false, - "img": "images/items/dimitri.png" - }, - { - "codes": "nuun_moosh", - "inherit_codes": false, - "img": "images/items/moosh.png" - } - ] - }, - // Tree Warp - { - "name": "Tree Warp?", - "type": "progressive", - "allow_disabled": false, - "loop": true, - "stages": [ - { - "img": "images/items/treewarp_off.png", - "codes": "notreewarp", - "inherit_codes": false - }, - { - "img": "images/items/treewarp_on.png", - "codes": "treewarp", - "inherit_codes": false - } - ] - }, - // LOGIC - { - "name": "Logic", - "type": "progressive", - "allow_disabled": false, - "loop": true, - "stages": [ - { - "img": "images/items/l_bas.png", - "codes": "l_bas", - "inherit_codes": false - }, - { - "img": "images/items/l_hard.png", - "codes": "l_hard", - "inherit_codes": false - } - ] - }, - { - "name": "Trick Logic", - "type": "toggle", - "loop": true, - "codes": "trick" - }, - // Dungeon Entrance Rando Setting - { - "name": "Dungeon Entrance Rando?", - "type": "progressive", - "allow_disabled": false, - "loop": true, - "stages": [ - { - "codes": "dungeon_er_off", - "inherit_codes": false, - "img": "images/items/dungeon_er_off.png" - }, - { - "codes": "dungeon_er_on", - "inherit_codes": false, - "img": "images/items/dungeon_er_on.png" - } - ] - }, - // GO MODE MAKU SEED - { - "name": "Maku Seed", - "type": "toggle", - "loop": true, - "img": "images/items/makuseed.png", - "codes": "makuseed" - }, - // RAFT - { - "name": "Raft", - "type": "toggle", - "loop": true, - "img": "images/items/raft.png", - "codes": "raft" - }, - // Potion to Cleanse the Seas - { - "name": "Magic Potion", - "type": "toggle", - "loop": true, - "img": "images/items/potion.png", - "codes": "potion" - }, - // Fairy Queen to Cleanse the Seas - { - "name": "Fairy Queen", - "type": "toggle", - "loop": true, - "img": "images/items/greatfairy.png", - "codes": "curefairy" - }, - // Maku Path Key - { - "name": "Maku Path Small Key", - "type": "toggle", - "loop": true, - "img": "images/items/smallkey.png", - "codes": "pathkey" - }, - // Turn in Seedling - { - "name": "Turn in Seedling to Crescent", - "type": "toggle", - "loop": true, - "img": "images/items/seedling.png", - "codes": "turninseedling" - }, - // King Zora/Jabu - { - "name": "King Zora", - "type": "toggle", - "loop": true, - "img": "images/items/kingzora.png", - "codes": "curezora" - }, - { - "name": "Jabu Entrance", - "type": "toggle", - "loop": true, - "img": "images/items/jabu.png", - "codes": "enterjabu" - }, - // Dungeon Entrances - { - "name": "D1 Entrance", - "type": "toggle", - "loop": true, - "allow_disabled": false, - "img": "images/dungeons/d1_entrance.png", - "codes": "d1er" - }, - { - "name": "D2 Present Entrance", - "type": "toggle", - "loop": true, - "allow_disabled": false, - "img": "images/dungeons/d2_entrance.png", - "codes": "d2er" - }, - { - "name": "D2 Past Entrance", - "type": "toggle", - "loop": true, - "allow_disabled": false, - "img": "images/dungeons/d2_past_entrance.png", - "codes": "d2paster" - }, - { - "name": "D3 Entrance", - "type": "toggle", - "loop": true, - "allow_disabled": false, - "img": "images/dungeons/d3_entrance.png", - "codes": "d3er" - }, - { - "name": "D4 Entrance", - "type": "toggle", - "loop": true, - "allow_disabled": false, - "img": "images/dungeons/d4_entrance.png", - "codes": "d4er" - }, - { - "name": "D5 Entrance", - "type": "toggle", - "loop": true, - "allow_disabled": false, - "img": "images/dungeons/d5_entrance.png", - "codes": "d5er" - }, - { - "name": "D6 PAST Entrance", - "type": "toggle", - "loop": true, - "allow_disabled": false, - "img": "images/dungeons/d6_past_entrance.png", - "codes": "d6older" - }, - { - "name": "D6 PRESENT Entrance", - "type": "toggle", - "loop": true, - "allow_disabled": false, - "img": "images/dungeons/d6_present_entrance.png", - "codes": "d6newer" - }, - { - "name": "D7 Entrance", - "type": "toggle", - "loop": true, - "allow_disabled": false, - "img": "images/dungeons/d7_entrance.png", - "codes": "d7er" - }, - { - "name": "D8 Entrance", - "type": "toggle", - "loop": true, - "allow_disabled": false, - "img": "images/dungeons/d8_entrance.png", - "codes": "d8er" - }, - // Dungeon Texts (lots of duplicates here to make it work lol) - { - "name": "D1 Dungeon Entrances", - "type": "progressive", - "allow_disabled": false, - "loop": true, - "stages": [ - { - "codes": "questionmark1", - "inherit_codes": false, - "img": "images/dungeons/questionlabel.png" - }, - { - "codes": "spiritsgrave1", - "inherit_codes": false, - "img": "images/dungeons/d1_entrance.png" - }, - { - "codes": "wingdungeonpast1", - "inherit_codes": false, - "img": "images/dungeons/d2_past_entrance.png" - }, - { - "codes": "wingdungeonpresent1", - "inherit_codes": false, - "img": "images/dungeons/d2_entrance.png" - }, - { - "codes": "moonlitgrotto1", - "inherit_codes": false, - "img": "images/dungeons/d3_entrance.png" - }, - { - "codes": "skulldungeon1", - "inherit_codes": false, - "img": "images/dungeons/d4_entrance.png" - }, - { - "codes": "crowndungeon1", - "inherit_codes": false, - "img": "images/dungeons/d5_entrance.png" - }, - { - "codes": "mermaidscavepast1", - "inherit_codes": false, - "img": "images/dungeons/d6_past_entrance.png" - }, - { - "codes": "mermaidscavepresent1", - "inherit_codes": false, - "img": "images/dungeons/d6_present_entrance.png" - }, - { - "codes": "jabujabusbelly1", - "inherit_codes": false, - "img": "images/dungeons/d7_entrance.png" - }, - { - "codes": "ancienttomb1", - "inherit_codes": false, - "img": "images/dungeons/d8_entrance.png" - } - ] - }, - { - "name": "D2 Dungeon Entrances", - "type": "progressive", - "allow_disabled": false, - "loop": true, - "stages": [ - { - "codes": "questionmark2", - "inherit_codes": false, - "img": "images/dungeons/questionlabel.png" - }, - { - "codes": "spiritsgrave2", - "inherit_codes": false, - "img": "images/dungeons/d1_entrance.png" - }, - { - "codes": "wingdungeonpast2", - "inherit_codes": false, - "img": "images/dungeons/d2_past_entrance.png" - }, - { - "codes": "wingdungeonpresent2", - "inherit_codes": false, - "img": "images/dungeons/d2_entrance.png" - }, - { - "codes": "moonlitgrotto2", - "inherit_codes": false, - "img": "images/dungeons/d3_entrance.png" - }, - { - "codes": "skulldungeon2", - "inherit_codes": false, - "img": "images/dungeons/d4_entrance.png" - }, - { - "codes": "crowndungeon2", - "inherit_codes": false, - "img": "images/dungeons/d5_entrance.png" - }, - { - "codes": "mermaidscavepast2", - "inherit_codes": false, - "img": "images/dungeons/d6_past_entrance.png" - }, - { - "codes": "mermaidscavepresent2", - "inherit_codes": false, - "img": "images/dungeons/d6_present_entrance.png" - }, - { - "codes": "jabujabusbelly2", - "inherit_codes": false, - "img": "images/dungeons/d7_entrance.png" - }, - { - "codes": "ancienttomb2", - "inherit_codes": false, - "img": "images/dungeons/d8_entrance.png" - } - ] - }, - { - "name": "D3 Dungeon Entrances", - "type": "progressive", - "allow_disabled": false, - "loop": true, - "stages": [ - { - "codes": "questionmark3", - "inherit_codes": false, - "img": "images/dungeons/questionlabel.png" - }, - { - "codes": "spiritsgrave3", - "inherit_codes": false, - "img": "images/dungeons/d1_entrance.png" - }, - { - "codes": "wingdungeonpast3", - "inherit_codes": false, - "img": "images/dungeons/d2_past_entrance.png" - }, - { - "codes": "wingdungeonpresent3", - "inherit_codes": false, - "img": "images/dungeons/d2_entrance.png" - }, - { - "codes": "moonlitgrotto3", - "inherit_codes": false, - "img": "images/dungeons/d3_entrance.png" - }, - { - "codes": "skulldungeon3", - "inherit_codes": false, - "img": "images/dungeons/d4_entrance.png" - }, - { - "codes": "crowndungeon3", - "inherit_codes": false, - "img": "images/dungeons/d5_entrance.png" - }, - { - "codes": "mermaidscavepast3", - "inherit_codes": false, - "img": "images/dungeons/d6_past_entrance.png" - }, - { - "codes": "mermaidscavepresent3", - "inherit_codes": false, - "img": "images/dungeons/d6_present_entrance.png" - }, - { - "codes": "jabujabusbelly3", - "inherit_codes": false, - "img": "images/dungeons/d7_entrance.png" - }, - { - "codes": "ancienttomb3", - "inherit_codes": false, - "img": "images/dungeons/d8_entrance.png" - } - ] - }, - { - "name": "D4 Dungeon Entrances", - "type": "progressive", - "allow_disabled": false, - "loop": true, - "stages": [ - { - "codes": "questionmark4", - "inherit_codes": false, - "img": "images/dungeons/questionlabel.png" - }, - { - "codes": "spiritsgrave4", - "inherit_codes": false, - "img": "images/dungeons/d1_entrance.png" - }, - { - "codes": "wingdungeonpast4", - "inherit_codes": false, - "img": "images/dungeons/d2_past_entrance.png" - }, - { - "codes": "wingdungeonpresent4", - "inherit_codes": false, - "img": "images/dungeons/d2_entrance.png" - }, - { - "codes": "moonlitgrotto4", - "inherit_codes": false, - "img": "images/dungeons/d3_entrance.png" - }, - { - "codes": "skulldungeon4", - "inherit_codes": false, - "img": "images/dungeons/d4_entrance.png" - }, - { - "codes": "crowndungeon4", - "inherit_codes": false, - "img": "images/dungeons/d5_entrance.png" - }, - { - "codes": "mermaidscavepast4", - "inherit_codes": false, - "img": "images/dungeons/d6_past_entrance.png" - }, - { - "codes": "mermaidscavepresent4", - "inherit_codes": false, - "img": "images/dungeons/d6_present_entrance.png" - }, - { - "codes": "jabujabusbelly4", - "inherit_codes": false, - "img": "images/dungeons/d7_entrance.png" - }, - { - "codes": "ancienttomb4", - "inherit_codes": false, - "img": "images/dungeons/d8_entrance.png" - } - ] - }, - { - "name": "D5 Dungeon Entrances", - "type": "progressive", - "allow_disabled": false, - "loop": true, - "stages": [ - { - "codes": "questionmark5", - "inherit_codes": false, - "img": "images/dungeons/questionlabel.png" - }, - { - "codes": "spiritsgrave5", - "inherit_codes": false, - "img": "images/dungeons/d1_entrance.png" - }, - { - "codes": "wingdungeonpast5", - "inherit_codes": false, - "img": "images/dungeons/d2_past_entrance.png" - }, - { - "codes": "wingdungeonpresent5", - "inherit_codes": false, - "img": "images/dungeons/d2_entrance.png" - }, - { - "codes": "moonlitgrotto5", - "inherit_codes": false, - "img": "images/dungeons/d3_entrance.png" - }, - { - "codes": "skulldungeon5", - "inherit_codes": false, - "img": "images/dungeons/d4_entrance.png" - }, - { - "codes": "crowndungeon5", - "inherit_codes": false, - "img": "images/dungeons/d5_entrance.png" - }, - { - "codes": "mermaidscavepast5", - "inherit_codes": false, - "img": "images/dungeons/d6_past_entrance.png" - }, - { - "codes": "mermaidscavepresent5", - "inherit_codes": false, - "img": "images/dungeons/d6_present_entrance.png" - }, - { - "codes": "jabujabusbelly5", - "inherit_codes": false, - "img": "images/dungeons/d7_entrance.png" - }, - { - "codes": "ancienttomb5", - "inherit_codes": false, - "img": "images/dungeons/d8_entrance.png" - } - ] - }, - { - "name": "D6 Past Dungeon Entrances", - "type": "progressive", - "allow_disabled": false, - "loop": true, - "stages": [ - { - "codes": "questionmark6p", - "inherit_codes": false, - "img": "images/dungeons/questionlabel.png" - }, - { - "codes": "spiritsgrave6p", - "inherit_codes": false, - "img": "images/dungeons/d1_entrance.png" - }, - { - "codes": "wingdungeonpast6p", - "inherit_codes": false, - "img": "images/dungeons/d2_past_entrance.png" - }, - { - "codes": "wingdungeonpresent6p", - "inherit_codes": false, - "img": "images/dungeons/d2_entrance.png" - }, - { - "codes": "moonlitgrotto6p", - "inherit_codes": false, - "img": "images/dungeons/d3_entrance.png" - }, - { - "codes": "skulldungeon6p", - "inherit_codes": false, - "img": "images/dungeons/d4_entrance.png" - }, - { - "codes": "crowndungeon6p", - "inherit_codes": false, - "img": "images/dungeons/d5_entrance.png" - }, - { - "codes": "mermaidscavepast6p", - "inherit_codes": false, - "img": "images/dungeons/d6_past_entrance.png" - }, - { - "codes": "mermaidscavepresent6p", - "inherit_codes": false, - "img": "images/dungeons/d6_present_entrance.png" - }, - { - "codes": "jabujabusbelly6p", - "inherit_codes": false, - "img": "images/dungeons/d7_entrance.png" - }, - { - "codes": "ancienttomb6p", - "inherit_codes": false, - "img": "images/dungeons/d8_entrance.png" - } - ] - }, - { - "name": "D6 Present Dungeon Entrances", - "type": "progressive", - "allow_disabled": false, - "loop": true, - "stages": [ - { - "codes": "questionmark6", - "inherit_codes": false, - "img": "images/dungeons/questionlabel.png" - }, - { - "codes": "spiritsgrave6", - "inherit_codes": false, - "img": "images/dungeons/d1_entrance.png" - }, - { - "codes": "wingdungeonpast6", - "inherit_codes": false, - "img": "images/dungeons/d2_past_entrance.png" - }, - { - "codes": "wingdungeonpresent6", - "inherit_codes": false, - "img": "images/dungeons/d2_entrance.png" - }, - { - "codes": "moonlitgrotto6", - "inherit_codes": false, - "img": "images/dungeons/d3_entrance.png" - }, - { - "codes": "skulldungeon6", - "inherit_codes": false, - "img": "images/dungeons/d4_entrance.png" - }, - { - "codes": "crowndungeon6", - "inherit_codes": false, - "img": "images/dungeons/d5_entrance.png" - }, - { - "codes": "mermaidscavepast6", - "inherit_codes": false, - "img": "images/dungeons/d6_past_entrance.png" - }, - { - "codes": "mermaidscavepresent6", - "inherit_codes": false, - "img": "images/dungeons/d6_present_entrance.png" - }, - { - "codes": "jabujabusbelly6", - "inherit_codes": false, - "img": "images/dungeons/d7_entrance.png" - }, - { - "codes": "ancienttomb6", - "inherit_codes": false, - "img": "images/dungeons/d8_entrance.png" - } - ] - }, - { - "name": "D7 Dungeon Entrances", - "type": "progressive", - "allow_disabled": false, - "loop": true, - "stages": [ - { - "codes": "questionmark7", - "inherit_codes": false, - "img": "images/dungeons/questionlabel.png" - }, - { - "codes": "spiritsgrave7", - "inherit_codes": false, - "img": "images/dungeons/d1_entrance.png" - }, - { - "codes": "wingdungeonpast7", - "inherit_codes": false, - "img": "images/dungeons/d2_past_entrance.png" - }, - { - "codes": "wingdungeonpresent7", - "inherit_codes": false, - "img": "images/dungeons/d2_entrance.png" - }, - { - "codes": "moonlitgrotto7", - "inherit_codes": false, - "img": "images/dungeons/d3_entrance.png" - }, - { - "codes": "skulldungeon7", - "inherit_codes": false, - "img": "images/dungeons/d4_entrance.png" - }, - { - "codes": "crowndungeon7", - "inherit_codes": false, - "img": "images/dungeons/d5_entrance.png" - }, - { - "codes": "mermaidscavepast7", - "inherit_codes": false, - "img": "images/dungeons/d6_past_entrance.png" - }, - { - "codes": "mermaidscavepresent7", - "inherit_codes": false, - "img": "images/dungeons/d6_present_entrance.png" - }, - { - "codes": "jabujabusbelly7", - "inherit_codes": false, - "img": "images/dungeons/d7_entrance.png" - }, - { - "codes": "ancienttomb7", - "inherit_codes": false, - "img": "images/dungeons/d8_entrance.png" - } - ] - }, - { - "name": "D8 Dungeon Entrances", - "type": "progressive", - "allow_disabled": false, - "loop": true, - "stages": [ - { - "codes": "questionmark8", - "inherit_codes": false, - "img": "images/dungeons/questionlabel.png" - }, - { - "codes": "spiritsgrave8", - "inherit_codes": false, - "img": "images/dungeons/d1_entrance.png" - }, - { - "codes": "wingdungeonpast8", - "inherit_codes": false, - "img": "images/dungeons/d2_past_entrance.png" - }, - { - "codes": "wingdungeonpresent8", - "inherit_codes": false, - "img": "images/dungeons/d2_entrance.png" - }, - { - "codes": "moonlitgrotto8", - "inherit_codes": false, - "img": "images/dungeons/d3_entrance.png" - }, - { - "codes": "skulldungeon8", - "inherit_codes": false, - "img": "images/dungeons/d4_entrance.png" - }, - { - "codes": "crowndungeon8", - "inherit_codes": false, - "img": "images/dungeons/d5_entrance.png" - }, - { - "codes": "mermaidscavepast8", - "inherit_codes": false, - "img": "images/dungeons/d6_past_entrance.png" - }, - { - "codes": "mermaidscavepresent8", - "inherit_codes": false, - "img": "images/dungeons/d6_present_entrance.png" - }, - { - "codes": "jabujabusbelly8", - "inherit_codes": false, - "img": "images/dungeons/d7_entrance.png" - }, - { - "codes": "ancienttomb8", - "inherit_codes": false, - "img": "images/dungeons/d8_entrance.png" - } - ] - }, - // CROSS-ITEMS LIST - { - "name": "Magnet Gloves", - "type": "toggle", - "loop": true, - "img": "images/items/magglovess.png", - "codes": "magnet" - }, - { - "name": "Fool's Ore", - "type": "toggle", - "loop": true, - "img": "images/items/foolsore.png", - "codes": "foolsore" - }, - { - "name": "Slingshot", - "type": "progressive", - "stages": [ - { - "img": "images/items/slingshot.png", - "codes": "slingshot" - }, - { - "img": "images/items/slingshot2.png", - "codes": "slingshot2" - } - ] - }, - { - "name": "Rod of Seasons", - "type": "toggle", - "loop": true, - "img": "images/items/rodofseasons.png", - "codes": "rodofseasons" - } -] \ No newline at end of file diff --git a/var_x-items_testing/layouts/broadcast.json b/var_x-items_testing/layouts/broadcast.json deleted file mode 100644 index 8145298..0000000 --- a/var_x-items_testing/layouts/broadcast.json +++ /dev/null @@ -1,176 +0,0 @@ -{ - "tracker_broadcast": { - "type": "array", - "background": "#212121", - "orientation": "vertical", - "margin": "1,10", - "content": [ - { - "type": "itemgrid", - "h_alignment": "center", - "margin": "3,0,0,0", - "item_margin": "-2,1", - "item_size": 33, - "rows": [ - [ - "sword", - "foolsore", - "shield1", - "lift1", - "shooter", - "flippers", - "cane", - "rodofseasons", - "shovel" - ], - [ - "feather", - "hook1", - "magnet", - "slingshot", - "bombs", - "satchel", - "boomerang", - "harp", - "flute" - ] - ] - }, - { - "type": "itemgrid", - "h_alignment": "center", - "margin": "4,5,3,0", - "item_margin": "0,-1", - "item_size": 29, - "rows": [ - [ - "emberseeds", - "mysteryseeds", - "scentseeds", - "pegasusseeds", - "galeseeds", - "ring_fist", - "ring_expert", - "ring_energy", - "ring_toss" - ] - ] - }, - { - "type": "itemgrid", - "h_alignment": "center", - "item_margin": "1,1", - "item_size": 36, - "rows": [ - [ - "gloves", - "cheval", - "chart", - "seedling", - "librarykey", - "book", - "scale" - ], - [ - "bombflower", - "emblem", - "brisket", - "vase", - "lavajuice", - "goronade", - "letter" - ], - [ - "gravekey", - "tuninut", - "crownkey", - "d6keypast", - "d6keypresent", - "powder", - "eyeball" - ] - ] - }, - { - "type": "itemgrid", - "h_alignment": "center", - "v_alignment": "center", - "margin": "15,0,0,0", - "item_margin": "5,0", - "item_size": 45, - "rows": [ - [ - "d1", - "d2", - "d3", - "d4" - ] - ] - }, - { - "type": "itemgrid", - "h_alignment": "center", - "v_alignment": "center", - "margin": "25,2,0,0", - "item_margin": "-1,0", - "item_size": 20, - "rows": [ - [ - "d1sk", - "d1bk", - "", - "d2sk", - "d2bk", - "", - "d3sk", - "d3bk", - "", - "d4sk", - "d4bk" - ] - ] - }, - { - "type": "itemgrid", - "h_alignment": "center", - "v_alignment": "center", - "margin": "40,2,0,0", - "item_margin": "5,0", - "item_size": 45, - "rows": [ - [ - "d5", - "d6", - "d7", - "d8" - ] - ] - }, - { - "type": "itemgrid", - "h_alignment": "center", - "v_alignment": "center", - "margin": "50,2,0,0", - "item_margin": "-2,0", - "item_size": 20, - "rows": [ - [ - "d5sk", - "d5bk", - "", - "d6_1sk", - "d6_2sk", - "d6bk", - "", - "d7sk", - "d7bk", - "", - "d8sk", - "d8slate", - "d8bk" - ] - ] - } - ] - } -} \ No newline at end of file diff --git a/var_x-items_testing/layouts/items.json b/var_x-items_testing/layouts/items.json deleted file mode 100644 index b960187..0000000 --- a/var_x-items_testing/layouts/items.json +++ /dev/null @@ -1,509 +0,0 @@ -{ - "items": { - "type": "itemgrid", - "h_alignment": "center", - "margin": "1,4,3,0", - "item_margin": "-2,4", - "item_size": 35, - "rows": [ - [ - "sword", - "foolsore", - "shield1", - "lift1", - "shooter", - "flippers", - "cane", - "rodofseasons", - "shovel" - ], - [ - "feather", - "hook1", - "magnet", - "slingshot", - "bombs", - "satchel", - "boomerang", - "harp", - "flute" - ] - ] - }, - "items2": { - "type": "itemgrid", - "h_alignment": "center", - "margin": "1,5,3,0", - "item_margin": "0,2", - "item_size": 31, - "rows": [ - [ - "emberseeds", - "mysteryseeds", - "scentseeds", - "pegasusseeds", - "galeseeds", - "ring_fist", - "ring_expert", - "ring_energy", - "ring_toss" - ] - ] - }, - "items3": { - "type": "itemgrid", - "h_alignment": "center", - "margin": "3,5,3,0", - "item_margin": "1,2", - "item_size": 38, - "rows": [ - [ - "gloves", - "cheval", - "chart", - "seedling", - "librarykey", - "book", - "scale" - ], - [ - "bombflower", - "emblem", - "brisket", - "vase", - "lavajuice", - "goronade", - "letter" - ], - [ - "gravekey", - "tuninut", - "crownkey", - "d6keypast", - "d6keypresent", - "powder", - "eyeball" - ] - ] - }, - "instruments": { - "type": "array", - "orientation": "vertical", - "content": [ - { - "type": "array", - "orientation": "horizontal", - "margin": "-3,-2,-2,0", - "content": [ - { - "type": "itemgrid", - "item_margin": "3,0", - "item_size": 43, - "dock": "left", - "rows": [ - [ - "d1", - "questionmark1", - "d2", - "questionmark2" - ] - ] - } - ] - }, - { - "type": "array", - "orientation": "horizontal", - "margin": "11,-7,-2,0", - "content": [ - { - "type": "itemgrid", - "dock": "left", - "item_margin": "-6,-3", - "item_size": 19, - "rows": [ - [ - "d1sk", - "", - "d1bk", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "d2sk", - "", - "d2bk" - ] - ] - } - ] - }, - { - "type": "array", - "orientation": "horizontal", - "margin": "-3,-2,-2,0", - "content": [ - { - "type": "itemgrid", - "item_margin": "3,0", - "item_size": 43, - "dock": "left", - "rows": [ - [ - "d3", - "questionmark3", - "d4", - "questionmark4" - ] - ] - } - ] - }, - { - "type": "array", - "orientation": "horizontal", - "margin": "11,-7,-2,0", - "content": [ - { - "type": "itemgrid", - "dock": "left", - "item_margin": "-6,-3", - "item_size": 19, - "rows": [ - [ - "d3sk", - "", - "d3bk", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "d4sk", - "", - "d4bk" - ] - ] - } - ] - }, - { - "type": "array", - "orientation": "horizontal", - "margin": "-3,-2,-2,0", - "content": [ - { - "type": "itemgrid", - "item_margin": "3,0", - "item_size": 43, - "dock": "left", - "rows": [ - [ - "d5", - "questionmark5", - "d6", - "questionmark6p", - "questionmark6" - ] - ] - } - ] - }, - { - "type": "array", - "orientation": "horizontal", - "margin": "11,-7,-2,0", - "content": [ - { - "type": "itemgrid", - "dock": "left", - "item_margin": "-6,-3", - "item_size": 19, - "rows": [ - [ - "d5sk", - "", - "d5bk", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "d6_1sk", - "", - "d6_2sk", - "", - "d6bk" - ] - ] - } - ] - }, - { - "type": "array", - "orientation": "horizontal", - "margin": "-3,-2,-2,0", - "content": [ - { - "type": "itemgrid", - "item_margin": "3,0", - "item_size": 43, - "dock": "left", - "rows": [ - [ - "d7", - "questionmark7", - "d8", - "questionmark8" - ] - ] - } - ] - }, - { - "type": "array", - "orientation": "horizontal", - "margin": "11,-7,-2,0", - "content": [ - { - "type": "itemgrid", - "dock": "left", - "item_margin": "-6,-3", - "item_size": 19, - "rows": [ - [ - "d7sk", - "", - "d7bk", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "d8sk", - "", - "d8slate", - "", - "d8bk" - ] - ] - } - ] - } - ] - }, - "settings_tab": { - "type": "itemgrid", - "background": "#303841", - "orientation": "vertical", - "h_alignment": "center", - "margin": "0,5,3,0", - "item_margin": "5,15", - "item_size": 55, - "rows": [ - [ - "companions" - ], - [ - "l_bas" - ], - [ - "dungeon_er_off" - ] - ] - }, - "entrance_grid": { - "type": "array", - "orientation": "vertical", - "background": "#303841", - "content": [ - { - "type": "array", - "orientation": "horizontal", - "margin": "5,0,0,0", - "content": [ - { - "type": "itemgrid", - "item_margin": "5,0", - "item_size": 52, - "dock": "left", - "rows": [ - [ - "d1er", - "d2er", - "d3er", - "d4er" - ] - ] - } - ] - }, - { - "type": "array", - "orientation": "horizontal", - "margin": "5,-10,0,0", - "content": [ - { - "type": "itemgrid", - "dock": "left", - "item_margin": "15,5", - "item_size": 32, - "rows": [ - [ - "question", - "question2", - "question3", - "question4" - ] - ] - } - ] - }, - { - "type": "array", - "orientation": "horizontal", - "margin": "5,0,0,0", - "content": [ - { - "type": "itemgrid", - "item_margin": "5,-20", - "item_size": 52, - "dock": "left", - "rows": [ - [ - "d5er", - "d6older", - "d7er", - "d8er" - ] - ] - } - ] - }, - { - "type": "array", - "orientation": "horizontal", - "margin": "5,-10,0,0", - "content": [ - { - "type": "itemgrid", - "dock": "left", - "item_margin": "15,25", - "item_size": 32, - "rows": [ - [ - "question5", - "question6", - "question7", - "question8" - ] - ] - } - ] - }, - { - "type": "array", - "orientation": "horizontal", - "margin": "5,0,0,0", - "content": [ - { - "type": "itemgrid", - "item_margin": "5,-40", - "item_size": 52, - "dock": "left", - "rows": [ - [ - "", - "d6newer", - "", - "" - ] - ] - } - ] - }, - { - "type": "array", - "orientation": "horizontal", - "margin": "5,60,0,-8", - "content": [ - { - "type": "itemgrid", - "dock": "left", - "item_margin": "15,-25", - "item_size": 32, - "rows": [ - [ - "", - "question6new", - "", - "" - ] - ] - } - ] - } - ] - }, - "item_grid": { - "type": "array", - "orientation": "vertical", - "content": [ - { - "type": "layout", - "key": "items" - }, - { - "type": "layout", - "key": "items2" - }, - { - "type": "layout", - "key": "items3" - } - ] - }, - "instrument_grid": { - "type": "array", - "orientation": "vertical", - "content": [ - { - "type": "layout", - "key": "instruments" - } - ] - }, - "settings_grid": { - "type": "array", - "orientation": "vertical", - "content": [ - { - "type": "layout", - "key": "settings_tab" - } - ] - } -} \ No newline at end of file diff --git a/var_x-items_testing/layouts/layouts.json b/var_x-items_testing/layouts/layouts.json deleted file mode 100644 index df2c0a4..0000000 --- a/var_x-items_testing/layouts/layouts.json +++ /dev/null @@ -1,210 +0,0 @@ -{ - "tracker_right_map": { - "type": "container", - "background": "#212121", - "content": { - "type": "dock", - "dropshadow": "true", - "content": [ - { - "type": "dock", - "dock": "bottom", - "orientation": "horizontal", - "v_alignment": "stretch", - "margin": "0,0,3,0", - "content": [ - { - "type": "group", - "header": "Items", - "dock": "left", - "content": { - "type": "layout", - "key": "item_grid" - } - }, - { - "type": "group", - "header": "Dungeons/Entrance Tracker", - "dock": "left", - "content": { - "type": "layout", - "key": "instrument_grid" - } - }, - { - "type": "group", - "header": "Settings", - "dock": "left", - "content": { - "type": "layout", - "v_alignment": "stretch", - "key": "settings_tab" - } - }, - { - "type": "group", - //"header": "Pinned Locations", - "content": { - "type": "recentpins", - "style": "wrap", - "h_alignment": "stretch", - "v_alignment": "stretch", - "orientation": "vertical", - "compact": true - } - } - ] - }, - { - "type": "dock", - "content": [ - { - "type": "tabbed", - "dock": "top", - "tabs": [ - { - "title": "Overworld (Tabs)", - "content": { - "type": "container", - "content": [ - { - "type": "tabbed", - "tabs": [ - { - "title": "Overworld Map", - "content": { - "type": "array", - "content": [ - { - "type": "array", - "orientation": "horizontal", - "style": "wrap", - "content": [ - { - "type": "map", - "maps": [ - "map" - ] - } - ] - } - ] - } - }, - { - "title": "Animal Companion Maps", - "icon": "", - "content": { - "type": "array", - "content": [ - { - "type": "array", - "orientation": "horizontal", - "style": "wrap", - "content": [ - { - "type": "map", - "maps": [ - "animal_regions" - ] - } - ] - } - ] - } - } - ] - } - ] - } - }, - { - "title": "Spirit's Grave", - "content": { - "type": "map", - "maps": [ - "d1" - ] - } - }, - { - "title": "Wing Dungeon", - "content": { - "type": "map", - "maps": [ - "d2" - ] - } - }, - { - "title": "Moonlit Grotto", - "content": { - "type": "map", - "maps": [ - "d3" - ] - } - }, - { - "title": "Skull Dungeon", - "content": { - "type": "map", - "maps": [ - "d4" - ] - } - }, - { - "title": "Crown Dungeon", - "content": { - "type": "map", - "maps": [ - "d5" - ] - } - }, - { - "title": "Mermaid's Cave (Past)", - "content": { - "type": "map", - "maps": [ - "d6_1" - ] - } - }, - { - "title": "Mermaid's Cave (Present)", - "background": "#00FFFFFF", - "content": { - "type": "map", - "maps": [ - "d6_2" - ] - } - }, - { - "title": "Jabu-Jabu's Belly", - "content": { - "type": "map", - "maps": [ - "d7" - ] - } - }, - { - "title": "Ancient Tomb", - "content": { - "type": "map", - "maps": [ - "d8" - ] - } - } - ] - } - ] - } - ] - } - } -} \ No newline at end of file diff --git a/var_x-items_testing/layouts/tracker.json b/var_x-items_testing/layouts/tracker.json deleted file mode 100644 index eddf099..0000000 --- a/var_x-items_testing/layouts/tracker.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "tracker_default": { - "type": "layout", - "key": "tracker_right_map" - } -} \ No newline at end of file diff --git a/var_x-items_testing/locations/dungeons.json b/var_x-items_testing/locations/dungeons.json deleted file mode 100644 index 3fc63bc..0000000 --- a/var_x-items_testing/locations/dungeons.json +++ /dev/null @@ -1,2228 +0,0 @@ -[ - { - "name": "Dungeons", - "chest_unopened_img": "images/items/chest.png", - "chest_opened_img": "images/items/chest_gray.png", - "visibility_rules": [ - "dungeon_er_off" - ], - "children": [ - { - "name": "Spirit's Grave (D1)", - "access_rules": [ - "gravekey" - ], - "children": [ - { - "name": "Terrace chest", - "sections": [ - { - "access_rules": [ - "$d1_east_terrace" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d1", - "x": 760, - "y": 1080 - } - ] - }, - { - "name": "Ghini drop", - "sections": [ - { - "access_rules": [ - "$d1_east_terrace" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d1", - "x": 1016, - "y": 792 - } - ] - }, - { - "name": "Crossroads chest", - "sections": [ - { - "access_rules": [ - "$d1_east_terrace" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d1", - "x": 776, - "y": 792 - } - ] - }, - { - "name": "Secret room chest", - "sections": [ - { - "access_rules": [ - "$d1_crystal_room" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d1", - "x": 632, - "y": 792 - } - ] - }, - { - "name": "Wide room chest", - "sections": [ - { - "access_rules": [ - "$d1_wide_room" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d1", - "x": 920, - "y": 569 - } - ] - }, - { - "name": "Double button chest", - "sections": [ - { - "access_rules": [ - "$d1_wide_room" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d1", - "x": 840, - "y": 377 - } - ] - }, - { - "name": "One button chest", - "sections": [ - { - "access_rules": [ - "$d1_wide_room" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d1", - "x": 648, - "y": 441 - } - ] - }, - { - "name": "Pot item", - "sections": [ - { - "access_rules": [ - "$pot" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d1", - "x": 344, - "y": 1080 - } - ] - }, - { - "name": "West terrace", - "sections": [ - { - "access_rules": [ - "$pot" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d1", - "x": 56, - "y": 1001 - } - ] - }, - { - "name": "Underground item", - "sections": [ - { - "access_rules": [ - "$d1_basement", - "$d1_basement_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d1", - "x": 88, - "y": 1352 - }, - { - "map": "d1", - "x": 184, - "y": 744 - } - ] - }, - { - "name": "Pumpkin Head reward", - "sections": [ - { - "access_rules": [ - "$d1_boss", - "$d1_boss_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d1", - "x": 600, - "y": 259 - } - ] - }, - { - "name": "Eternal Spirit", - "sections": [ - { - "access_rules": [ - "$d1_boss", - "$d1_boss_h" - ], - "hosted_item": "d1" - } - ], - "map_locations": [ - { - "map": "d1", - "x": 600, - "y": 36 - } - ] - } - ] - }, - { - "name": "Wing Dungeon (D2)", - "access_rules": [ - "$deku_forest,bombs", - "$deku_forest,currents" - ], - "children": [ - { - "name": "Bombed terrace", - "sections": [ - { - "access_rules": [ - "$d2_bombed_terrace", - "[l_hard],$d2_bombed_terrace_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d2", - "x": 840, - "y": 488 - } - ] - }, - { - "name": "Moblin drop", // FIX LOGIC - "sections": [ - { - "access_rules": [ - "$d2_moblin_drop", - "[l_hard],$d2_moblin_drop_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d2", - "x": 119, - "y": 263 - } - ] - }, - { - "name": "Rope chest", - "sections": [ - { - "access_rules": [ - "$d2_rope_room" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d2", - "x": 1176, - "y": 552 - } - ] - }, - { - "name": "Ladder chest behind bombwall", - "sections": [ - { - "access_rules": [ - "$d2_ladder_chest" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d2", - "x": 1320, - "y": 968 - } - ] - }, - { - "name": "Thwomp tunnel", - "sections": [ - { - "access_rules": [ - "$d2_basement", - "[l_hard],$d2_basement_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d2", - "x": 311, - "y": 1832 - } - ] - }, - { - "name": "Thwomp shelf", - "sections": [ - { - "access_rules": [ - "$d2_thwomp_shelf", - "[l_hard],$d2_thwomp_shelf_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d2", - "x": 40, - "y": 1720 - } - ] - }, - { - "name": "Basement chest (behind bombwall)", - "sections": [ - { - "access_rules": [ - "$d2_basement_chest", - "[l_hard],$d2_basement_chest_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d2", - "x": 1319, - "y": 1384 - } - ] - }, - { - "name": "Basement drop (color tiles)", - "sections": [ - { - "access_rules": [ - "$d2_basement_drop", - "[l_hard],$d2_basement_drop_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d2", - "x": 807, - "y": 1367 - } - ] - }, - { - "name": "Moblin platform", - "sections": [ - { - "access_rules": [ - "$d2_moblin_platform", - "[l_hard],$d2_moblin_platform_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d2", - "x": 1113, - "y": 440 - } - ] - }, - { - "name": "Statue puzzle drop", - "sections": [ - { - "access_rules": [ - "$d2_statue_puzzle", - "[l_hard],$d2_statue_puzzle_h" - ] - } - ], - "map_locations": [ - { - "map": "d2", - "x": 1319, - "y": 439 - } - ] - }, - { - "name": "Color room", - "sections": [ - { - "access_rules": [ - "$d2_color_room", - "[l_hard],$d2_color_room_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d2", - "x": 1576, - "y": 264 - } - ] - }, - { - "name": "Head Thwomp", - "sections": [ - { - "name": "Boss Reward", - "access_rules": [ - "$d2_boss", - "[l_hard],$d2_boss_h" - ], - "item_count": 1 - }, - { - "name": "Get Bombs from Head Thwomp", - "access_rules": [ - "[l_hard],$d2_early_bombs" - ], - "hosted_item": "bombs" - } - ], - "map_locations": [ - { - "map": "d2", - "x": 647, - "y": 1175 - }, - { - "map": "d2", - "x": 1496, - "y": 102 - } - ] - }, - { - "name": "Ancient Wood", - "sections": [ - { - "access_rules": [ - "$d2_boss", - "[l_hard],$d2_boss" - ], - "hosted_item": "d2" - } - ], - "map_locations": [ - { - "map": "d2", - "x": 1800, - "y": 31 - } - ] - } - ] - }, - { - "name": "Moonlit Grotto (D3)", - "access_rules": [ - "$d3_entrance" - ], - "children": [ - { - "name": "Pols Voice chest", - "sections": [ - { - "access_rules": [ - "$d3_pols_voice" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d3", - "x": 376, - "y": 968 - } - ] - }, - { - "name": "East statues drop", - "sections": [ - { - "access_rules": [ - "$d3_statue_drop" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d3", - "x": 1143, - "y": 615 - } - ] - }, - { - "name": "Armos chest", - "sections": [ - { - "access_rules": [ - "$d3_conveyor_belt_room", - "[l_hard],$d3_conveyor_belt_room_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d3", - "x": 1592, - "y": 984 - } - ] - }, - { - "name": "Six blocks drop", - "sections": [ - { - "access_rules": [ - "$d3_six_blocK_drop", - "[l_hard],$d3_six_blocK_drop_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d3", - "x": 183, - "y": 984 - } - ] - }, - { - "name": "Four Armos drop", - "sections": [ - { - "access_rules": [ - "$d3_armos_drop", - "[l_hard],$d3_armos_drop" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d3", - "x": 1047, - "y": 439 - } - ] - }, - { - "name": "Bush beetle chest", - "sections": [ - { - "access_rules": [ - "d3sk:3, [$k_normal]", - "d3sk:2, [d3sk:3], [$k_normal]", - "$d3_bush_beetle_room" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d3", - "x": 600, - "y": 392 - } - ] - }, - { - "name": "Mimic room chest", - "sections": [ - { - "access_rules": [ - "d3sk:4, [$k_normal]", - "d3sk:3, [d3sk:4], [$k_normal]", - "$d3_mimic_room" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d3", - "x": 392, - "y": 88 - } - ] - }, - { - "name": "Fallen spinner chest", - "sections": [ - { - "access_rules": [ - "$d3_B1F_spinner", - "[l_hard],$d3_B1F_spinner_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d3", - "x": 840, - "y": 615 - } - ] - }, - { - "name": "Torch chest", - "sections": [ - { - "access_rules": [ - "$d3_torch_chest", - "[l_hard],$d3_torch_chest_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d3", - "x": 2120, - "y": 776 - } - ] - }, - { - "name": "Moldorm drop", - "sections": [ - { - "access_rules": [ - "$d3_moldorm_drop", - "[l_hard],$d3_moldorm_drop_h" - - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d3", - "x": 1815, - "y": 87 - } - ] - }, - { - "name": "Bridge chest", - "sections": [ - { - "access_rules": [ - "$d3_bridge_chest", - "[l_hard],$d3_bridge_chest_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d3", - "x": 1879, - "y": 488 - } - ] - }, - { - "name": "Right side chest", - "sections": [ - { - "access_rules": [ - "$d3_B1F_east", - "[l_hard],$d3_B1F_east" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d3", - "x": 2296, - "y": 392 - } - ] - }, - { - "name": "Shadow Hag Reward", - "sections": [ - { - "access_rules": [ - "$d3_boss", - "[l_hard],$d3_boss_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d3", - "x": 1558, - "y": 85 - } - ] - }, - { - "name": "Echoing Howl", - "sections": [ - { - "access_rules": [ - "$d3_boss", - "[l_hard],$d3_boss_h" - ], - "hosted_item": "d3" - } - ], - "map_locations": [ - { - "map": "d3", - "x": 1319, - "y": 32 - } - ] - }, - { - "name": "Get scent seeds in D3's bridge rooms", - "sections": [ - { - "name": "Respawnable bushes", - "access_rules": [ - "d3sk:1, $use_seeds, [scentseeds]" - ], - "hosted_item": "scentseeds" - } - ], - "map_locations": [ - { - "map": "d3", - "x": 1711, - "y": 375 - } - ] - } - ] - }, - { - "name": "Skull Dungeon (D4)", - "access_rules": [ - "$d4_entrance", - "$d4_entrance_h" - ], - "children": [ - { - "name": "Zol chest", - "sections": [ - { - "access_rules": [ - "$d4_first_chest" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d4", - "x": 264, - "y": 952 - } - ] - }, - { - "name": "Cube chest", - "sections": [ - { - "access_rules": [ - "$d4_cube_chest" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d4", - "x": 312, - "y": 1192 - } - ] - }, - { - "name": "Minecart chest", - "sections": [ - { - "access_rules": [ - "$d4_minecart_chest" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d4", - "x": 1319, - "y": 968 - } - ] - }, - { - "name": "Moldorm switch chest", - "sections": [ - { - "access_rules": [ - "$d4_first_crystal_switch", - "[l_hard], $d4_first_crystal_switch_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d4", - "x": 1239, - "y": 1160 - } - ] - }, - { - "name": "Keese switch chest", - "sections": [ - { - "access_rules": [ - "$d4_second_crystal_switch", - "[l_hard],$d4_second_crystal_switch_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d4", - "x": 1032, - "y": 88 - } - ] - }, - { - "name": "Color tile drop", - "sections": [ - { - "access_rules": [ - "$d4_color_tile_drop" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d4", - "x": 343, - "y": 440 - } - ] - }, - { - "name": "Small floor puzzle reward", - "sections": [ - { - "access_rules": [ - "$d4_small_floor_puzzle" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d4", - "x": 808, - "y": 808 - } - ] - }, - { - "name": "Large floor puzzle reward", - "sections": [ - { - "access_rules": [ - "$d4_large_floor_puzzle", - "[l_hard], $d4_large_floor_puzzle_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d4", - "x": 600, - "y": 1720 - } - ] - }, - { - "name": "Lava Pot Chest", - "sections": [ - { - "access_rules": [ - "$d4_lava_pot_chest", - "[l_hard], $d4_lava_pot_chest_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d4", - "x": 152, - "y": 408 - } - ] - }, - { - "name": "Eyesoar Reward", - "sections": [ - { - "access_rules": [ - "$d4_boss", - "[l_hard], $d4_boss_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d4", - "x": 360, - "y": 1527 - } - ] - }, - { - "name": "Burning Flame", - "sections": [ - { - "access_rules": [ - "$d4_boss", - "[l_hard], $d4_boss_h" - ], - "hosted_item": "d4" - } - ], - "map_locations": [ - { - "map": "d4", - "x": 360, - "y": 1297 - } - ] - } - ] - }, - { - "name": "Crown Dungeon (D5)", - "access_rules": [ - // Vanilla way, by beating Moblin Keep - "$west_ridge_present, $pegasus_satchel, bracelet, feather, crownkey", - // From East Ridge - "$lynna_village, feather, mermaid, hook1, bracelet, currents, crownkey", - "$lynna_village, ages, mermaid, hook1, crownkey", - "$lynna_village, ages, mermaid, $jump3, crownkey" - ], - "children": [ - { - "name": "Like-Like Chest", - "sections": [ - { - "name": "(west blue pegs stairs)", - "access_rules": [ - "$d5_likelike", - "[l_hard],$d5_likelike_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d5", - "x": 1800, - "y": 613 - } - ] - }, - { - "name": "Eyes Chest", - "sections": [ - { - "access_rules": [ - "$d5_eyes", - "[l_hard],$d5_eyes_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d5", - "x": 360, - "y": 969 - } - ] - }, - { - "name": "Dark Room", - "sections": [ - { - "access_rules": [ - "$d5_darkroom", - "[l_hard],$d5_darkroom_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d5", - "x": 2040, - "y": 793 - } - ] - }, - { - "name": "Two-Statue Puzzle", - "sections": [ - { - "access_rules": [ - "$d5_2statue", - "[l_hard],$d5_2statue_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d5", - "x": 3000, - "y": 425 - } - ] - }, - { - "name": "Blue Peg Chest before Boss", - "sections": [ - { - "access_rules": [ - "$d5_switchA", - "[l_hard],$d5_switchA_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d5", - "x": 1320, - "y": 905 - } - ] - }, - { - "name": "Diamonds Chest", - "sections": [ - { - "access_rules": [ - "$d5_crossroads,hook1", - "[l_hard],$d5_crossroads_h,hook1" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d5", - "x": 1624, - "y": 489 - } - ] - }, - { - "name": "Three-Statue Puzzle", - "sections": [ - { - "access_rules": [ - "$d5_3statue", - "[l_hard],$d5_3statue_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d5", - "x": 840, - "y": 969 - } - ] - }, - { - "name": "Six-Statue Puzzle", - "sections": [ - { - "access_rules": [ - "$d5_6statue", - "[l_hard],$d5_6statue" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d5", - "x": 2216, - "y": 969 - } - ] - }, - { - "name": "Red Peg Chest", - "sections": [ - { - "access_rules": [ - "$d5_redpeg", - "[l_hard],$d5_redpeg_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d5", - "x": 2312, - "y": 25 - } - ] - }, - { - "name": "Owl Puzzle", - "sections": [ - { - "access_rules": [ - "$d5_owl_puzzle", - "[l_hard],$d5_owl_puzzle" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d5", - "x": 1992, - "y": 265 - } - ] - }, - { - "name": "Smog Reward", - "sections": [ - { - "access_rules": [ - "$d5_boss", - "[l_hard],$d5_boss" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d5", - "x": 1560, - "y": 969 - } - ] - }, - { - "name": "Sacred Soil", - "sections": [ - { - "access_rules": [ - "$d5_boss", - "[l_hard],$d5_boss" - ], - "hosted_item": "d5" - } - ], - "map_locations": [ - { - "map": "d5", - "x": 1560, - "y": 738 - } - ] - } - ] - }, - { - "name": "Mermaid's Cave [Past] (D6)", - "access_rules": [ - //from Lynna, swimming - "d6keypast, $lynna_village, feather, mermaid", - "d6keypast, $lynna_village, ages, mermaid", - //from the upper cave, requires emblem? - "d6keypast, $west_ridge_present, $pegasus_satchel, bracelet, feather, echoes, flippers" - ], - "children": [ - { - "name": "Color Room", - "sections": [ - { - "access_rules": [ - "$d6past_colorroom", - "[l_hard],$d6past_colorroom_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d6_1", - "x": 296, - "y": 792 - } - ] - }, - { - "name": "Wizzrobe Chest", - "sections": [ - { - "access_rules": [ - "$k_wizzrobe,bombs", - "[l_hard],$k_wizzrobe,bombs" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d6_1", - "x": 840, - "y": 969 - } - ] - }, - { - "name": "Flooded Pool Chest", - "sections": [ - { - "access_rules": [ - "$d6past_pool_chest" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d6_1", - "x": 760, - "y": 792 - } - ] - }, - { - "name": "Stalfos Chest", - "sections": [ - { - "access_rules": [ - "$d6past_stalfos", - "[l_hard],$d6past_stalfos_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d6_1", - "x": 808, - "y": 440 - } - ] - }, - { - "name": "Rope Chest", - "sections": [ - { - "access_rules": [ - "$d6past_rope_chest", - "[l_hard],$d6past_rope_chest_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d6_1", - "x": 3049, - "y": 617 - } - ] - }, - { - "name": "Underwater Spear Chest", - "sections": [ - { - "access_rules": [ - "$d6past_spinner,mermaid" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d6_1", - "x": 1801, - "y": 217 - } - ] - }, - { - "name": "Underwater Diamond Chest", - "sections": [ - { - "access_rules": [ - "$d6past_spinner,mermaid,hook1" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d6_1", - "x": 2329, - "y": 89 - } - ] - }, - { - "name": "Octogon Reward", - "sections": [ - { - "access_rules": [ - "$d6past_boss" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d6_1", - "x": 120, - "y": 88 - } - ] - }, - { - "name": "Lonely Peak", - "sections": [ - { - "access_rules": [ - "$d6past_boss" - ], - "hosted_item": "d6" - } - ], - "map_locations": [ - { - "map": "d6_1", - "x": 360, - "y": 35 - } - ] - } - ] - }, - { - "name": "Mermaid's Cave [Present] (D6)", - "access_rules": [ - //from Lynna, swimming - "d6keypresent, $lynna_village, feather, mermaid, currents", - "d6keypresent, $lynna_village, ages, mermaid", - //from the upper cave - "d6keypresent, $west_ridge_present, $pegasus_satchel, bracelet, feather" - ], - "children": [ - { - "name": "Diamond Chest", - "sections": [ - { - "access_rules": [ - "hook1" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d6_2", - "x": 296, - "y": 792 - } - ] - }, - { - "name": "Rope Chest", - "sections": [ - { - "access_rules": [ - "$d6present_rope_chest", - "[l_hard],$d6present_rope_chest_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d6_2", - "x": 776, - "y": 617 - } - ] - }, - { - "name": "Cube Chest", - "sections": [ - { - "access_rules": [ - "$d6present_cube_chest", - "[l_hard],$d6present_cube_chest_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d6_2", - "x": 360, - "y": 985 - } - ] - }, - { - "name": "Spinner Chest", - "sections": [ - { - "access_rules": [ - "$d6present_spinner_chest", - "[l_hard],$d6present_spinner_chest_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d6_2", - "x": 88, - "y": 217 - } - ] - }, - { - "name": "Beamos Chest", - "sections": [ - { - "access_rules": [ - "$d6present_beamos_chest", - "[l_hard],$d6present_beamos_chest_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d6_2", - "x": 1496, - "y": 729 - } - ] - }, - { - "name": "Rope RNG Chest", - "sections": [ - { - "access_rules": [ - "$d6present_rng_chest", - "[l_hard],$d6present_rng_chest_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d6_2", - "x": 1560, - "y": 553 - } - ] - }, - { - "name": "Channel Chest", - "sections": [ - { - "access_rules": [ - "$d6present_channel_chest", - "[l_hard],$d6present_channel_chest_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d6_2", - "x": 1416, - "y": 937 - } - ] - }, - { - "name": "Vire Chest", - "sections": [ - { - "access_rules": [ - "$d6present_vire_chest", - "[l_hard],$d6present_vire_chest_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d6_2", - "x": 840, - "y": 25 - } - ] - } - ] - }, - { - "name": "Jabu-Jabu's Belly (D7)", - "access_rules": [ - "enterjabu" - ], - "children": [ - { - "name": "Spike Chest", - "sections": [ - { - "access_rules": [ - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d7", - "x": 280, - "y": 1305 - } - ] - }, - { - "name": "Crab Chest", - "sections": [ - { - "access_rules": [ - "$d7_crab" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d7", - "x": 2280, - "y": 677 - } - ] - }, - { - "name": "Diamond Puzzle", - "sections": [ - { - "access_rules": [ - "$d7_diamondpuzzle" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d7", - "x": 2055, - "y": 868 - } - ] - }, - { - "name": "Flower Room", - "sections": [ - { - "access_rules": [ - "$d7_flower" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d7", - "x": 1832, - "y": 324 - } - ] - }, - { - "name": "Stairway Chest", - "sections": [ - { - "access_rules": [ - "$d7_stairway" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d7", - "x": 2296, - "y": 277 - } - ] - }, - { - "name": "Rightwing Moldorm Chest", - "sections": [ - { - "access_rules": [ - "$d7_right_wing", - "[l_hard],$d7_right_wing_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d7", - "x": 1320, - "y": 1145 - } - ] - }, - { - "name": "Boxed Chest", - "sections": [ - { - "access_rules": [ - "$draind7" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d7", - "x": 2040, - "y": 517 - } - ] - }, - { - "name": "Cane & Diamond Puzzle", - "sections": [ - { - "access_rules": [ - "$draind7,hook2,cane" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d7", - "x": 2056, - "y": 645 - } - ] - }, - { - "name": "3F Terrace Chest", - "sections": [ - { - "access_rules": [ - "$floodd7" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d7", - "x": 920, - "y": 633 - } - ] - }, - { - "name": "Left Wing", - "sections": [ - { - "access_rules": [ - "$floodd7" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d7", - "x": 104, - "y": 1145 - } - ] - }, - { - "name": "Hallway Chest", - "sections": [ - { - "access_rules": [ - "$d7_hallway" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d7", - "x": 600, - "y": 40 - } - ] - }, - { - "name": "Miniboss Chest", - "sections": [ - { - "access_rules": [ - "$d7_miniboss" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d7", - "x": 2440, - "y": 277 - } - ] - }, - { - "name": "Post-Hallway Chest", - "sections": [ - { - "access_rules": [ - "hook2,d7sk:7" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d7", - "x": 1080, - "y": 89 - } - ] - }, - { - "name": "Pot Island Chest", - "sections": [ - { - "access_rules": [ - "$d7_pot_island" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d7", - "x": 1944, - "y": 309 - } - ] - }, - { - "name": "Plasmarine Reward", - "sections": [ - { - "access_rules": [ - "$d7_boss" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d7", - "x": 840, - "y": 1146 - } - ] - }, - { - "name": "Rolling Sea", - "sections": [ - { - "access_rules": [ - "$d7_boss" - ], - "hosted_item": "d7" - } - ], - "map_locations": [ - { - "map": "d7", - "x": 584, - "y": 1091 - } - ] - } - ] - }, - { - "name": "Ancient Tomb (D8)", - "access_rules": [ - "$d8_entrance", - "[l_hard], $d8_entrance_h" - ], - "children": [ - { - "name": "First Chest", - "sections": [ - { - "access_rules": [ - "$d8_first" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d8", - "x": 696, - "y": 1225 - } - ] - }, - { - "name": "Ghini Chest", - "sections": [ - { - "name": "(kill ghinis and take stairs)", - "access_rules": [ - "$d8_ghini", - "[l_hard], $d8_ghini_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d8", - "x": 1864, - "y": 480 - } - ] - }, - { - "name": "B1F NW Chest", - "sections": [ - { - "access_rules": [ - "$d8_ghini", - "[l_hard], $d8_ghini_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d8", - "x": 344, - "y": 409 - } - ] - }, - { - "name": "Blue Peg Chest", - "sections": [ - { - "access_rules": [ - "$d8_bluepeg", - "[l_hard], $d8_bluepeg_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d8", - "x": 648, - "y": 937 - } - ] - }, - { - "name": "Blade Trap Chest", - "sections": [ - { - "access_rules": [ - "$d8_bluepeg", - "[l_hard], $d8_bluepeg_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d8", - "x": 456, - "y": 937 - } - ] - }, - { - "name": "Sarcophagus Chest", - "sections": [ - { - "access_rules": [ - "$d8_bluepeg,lift2", - "[l_hard], $d8_bluepeg_h,lift2" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d8", - "x": 440, - "y": 777 - } - ] - }, - { - "name": "Stalfos Drop", - "sections": [ - { - "access_rules": [ - "$d8_bluepeg", - "[l_hard], $d8_bluepeg_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d8", - "x": 599, - "y": 472 - } - ] - }, - { - "name": "Maze Chest", - "sections": [ - { - "access_rules": [ - "$d8_maze", - "[l_hard], $d8_maze_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d8", - "x": 1544, - "y": 128 - } - ] - }, - { - "name": "NW Slate", - "sections": [ - { - "access_rules": [ - "$d8_maze", - "[l_hard], $d8_maze_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d8", - "x": 1800, - "y": 144 - } - ] - }, - { - "name": "NE Slate", - "sections": [ - { - "access_rules": [ - "$d8_neslate", - "[l_hard], $d8_neslate_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d8", - "x": 2760, - "y": 144 - } - ] - }, - { - "name": "B3F Chest", - "sections": [ - { - "access_rules": [ - "$d8_maze,lift2", - "[l_hard], $d8_maze_h,lift2" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d8", - "x": 520, - "y": 201 - } - ] - }, - { - "name": "Tile Room", - "sections": [ - { - "access_rules": [ - "$d8_tileroom", - "[l_hard],$d8_tileroom_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d8", - "x": 2520, - "y": 848 - } - ] - }, - { - "name": "SE Slate", - "sections": [ - { - "access_rules": [ - "$d8_tileroom", - "[l_hard],$d8_tileroom_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d8", - "x": 2760, - "y": 848 - } - ] - }, - { - "name": "Floor Puzzle", - "sections": [ - { - "access_rules": [ - "$d8_bluepeg,d8sk:5", - "[l_hard],$d8_bluepeg_h,d8sk:5" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d8", - "x": 1080, - "y": 969 - } - ] - }, - { - "name": "SW Slate", - "sections": [ - { - "access_rules": [ - "$d8_maze,d8sk:5,lift1", - "[l_hard],$d8_maze_h,d8sk:5,lift1" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d8", - "x": 1768, - "y": 1025 - } - ] - }, - { - "name": "Ramrock Reward", - "sections": [ - { - "access_rules": [ - "$d8_boss", - "[l_hard],$d8_boss_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d8", - "x": 840, - "y": 108 - } - ] - }, - { - "name": "Falling Star", - "sections": [ - { - "access_rules": [ - "$d8_boss", - "[l_hard],$d8_boss_h" - ], - "hosted_item": "d8" - } - ], - "map_locations": [ - { - "map": "d8", - "x": 600, - "y": 35 - } - ] - } - ] - } - ] - } -] \ No newline at end of file diff --git a/var_x-items_testing/locations/dungeons_shuffle.json b/var_x-items_testing/locations/dungeons_shuffle.json deleted file mode 100644 index 65e64a7..0000000 --- a/var_x-items_testing/locations/dungeons_shuffle.json +++ /dev/null @@ -1,2194 +0,0 @@ -[ - { - "name": "Dungeons (Shuffled)", - "chest_unopened_img": "images/items/chest.png", - "chest_opened_img": "images/items/chest_gray.png", - "visibility_rules": [ - "dungeon_er_on" - ], - "children": [ - { - "name": "Spirit's Grave (D1)", - "access_rules": [], - "children": [ - { - "name": "Terrace chest", - "sections": [ - { - "access_rules": [ - "$d1_east_terrace" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d1", - "x": 760, - "y": 1080 - } - ] - }, - { - "name": "Ghini drop", - "sections": [ - { - "access_rules": [ - "$d1_east_terrace" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d1", - "x": 1016, - "y": 792 - } - ] - }, - { - "name": "Crossroads chest", - "sections": [ - { - "access_rules": [ - "$d1_east_terrace" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d1", - "x": 776, - "y": 792 - } - ] - }, - { - "name": "Secret room chest", - "sections": [ - { - "access_rules": [ - "$d1_crystal_room" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d1", - "x": 632, - "y": 792 - } - ] - }, - { - "name": "Wide room chest", - "sections": [ - { - "access_rules": [ - "$d1_wide_room" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d1", - "x": 920, - "y": 569 - } - ] - }, - { - "name": "Double button chest", - "sections": [ - { - "access_rules": [ - "$d1_wide_room" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d1", - "x": 840, - "y": 377 - } - ] - }, - { - "name": "One button chest", - "sections": [ - { - "access_rules": [ - "$d1_wide_room" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d1", - "x": 648, - "y": 441 - } - ] - }, - { - "name": "Pot item", - "sections": [ - { - "access_rules": [ - "$pot" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d1", - "x": 344, - "y": 1080 - } - ] - }, - { - "name": "West terrace", - "sections": [ - { - "access_rules": [ - "$pot" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d1", - "x": 56, - "y": 1001 - } - ] - }, - { - "name": "Underground item", - "sections": [ - { - "access_rules": [ - "$d1_basement", - "$d1_basement_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d1", - "x": 88, - "y": 1352 - }, - { - "map": "d1", - "x": 184, - "y": 744 - } - ] - }, - { - "name": "Pumpkin Head reward", - "sections": [ - { - "access_rules": [ - "$d1_boss", - "$d1_boss_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d1", - "x": 600, - "y": 259 - } - ] - }, - { - "name": "Eternal Spirit", - "sections": [ - { - "access_rules": [ - "$d1_boss", - "$d1_boss_h" - ], - "hosted_item": "d1" - } - ], - "map_locations": [ - { - "map": "d1", - "x": 600, - "y": 36 - } - ] - } - ] - }, - { - "name": "Wing Dungeon (D2)", - "access_rules": [], - "children": [ - { - "name": "Bombed terrace", - "sections": [ - { - "access_rules": [ - "$d2_bombed_terrace", - "[l_hard],$d2_bombed_terrace_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d2", - "x": 840, - "y": 488 - } - ] - }, - { - "name": "Moblin drop", - "sections": [ - { - "access_rules": [ - "$d2_moblin_drop", - "[l_hard],$d2_moblin_drop_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d2", - "x": 119, - "y": 263 - } - ] - }, - { - "name": "Rope chest", - "sections": [ - { - "access_rules": [ - "$d2_rope_room" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d2", - "x": 1176, - "y": 552 - } - ] - }, - { - "name": "Ladder chest behind bombwall", - "sections": [ - { - "access_rules": [ - "$d2_ladder_chest" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d2", - "x": 1320, - "y": 968 - } - ] - }, - { - "name": "Thwomp tunnel", - "sections": [ - { - "access_rules": [ - "$d2_basement", - "[l_hard],$d2_basement_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d2", - "x": 311, - "y": 1832 - } - ] - }, - { - "name": "Thwomp shelf", - "sections": [ - { - "access_rules": [ - "$d2_thwomp_shelf", - "[l_hard],$d2_thwomp_shelf_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d2", - "x": 40, - "y": 1720 - } - ] - }, - { - "name": "Basement chest (behind bombwall)", - "sections": [ - { - "access_rules": [ - "$d2_basement_chest", - "[l_hard],$d2_basement_chest_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d2", - "x": 1319, - "y": 1384 - } - ] - }, - { - "name": "Basement drop (color tiles)", - "sections": [ - { - "access_rules": [ - "$d2_basement_drop", - "[l_hard],$d2_basement_drop_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d2", - "x": 807, - "y": 1367 - } - ] - }, - { - "name": "Moblin platform", - "sections": [ - { - "access_rules": [ - "$d2_moblin_platform", - "[l_hard],$d2_moblin_platform_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d2", - "x": 1113, - "y": 440 - } - ] - }, - { - "name": "Statue puzzle drop", - "sections": [ - { - "access_rules": [ - "$d2_statue_puzzle", - "[l_hard],$d2_statue_puzzle_h" - ] - } - ], - "map_locations": [ - { - "map": "d2", - "x": 1319, - "y": 439 - } - ] - }, - { - "name": "Color room", - "sections": [ - { - "access_rules": [ - "$d2_color_room", - "[l_hard],$d2_color_room_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d2", - "x": 1576, - "y": 264 - } - ] - }, - { - "name": "Head Thwomp", - "sections": [ - { - "name": "Boss Reward", - "access_rules": [ - "$d2_boss", - "[l_hard],$d2_boss_h" - ], - "item_count": 1 - }, - { - "name": "Get Bombs from Head Thwomp", - "access_rules": [ - "[l_hard],$d2_early_bombs" - ], - "hosted_item": "bombs" - } - ], - "map_locations": [ - { - "map": "d2", - "x": 647, - "y": 1175 - }, - { - "map": "d2", - "x": 1496, - "y": 102 - } - ] - }, - { - "name": "Ancient Wood", - "sections": [ - { - "access_rules": [ - "$d2_boss", - "[l_hard],$d2_boss" - ], - "hosted_item": "d2" - } - ], - "map_locations": [ - { - "map": "d2", - "x": 1800, - "y": 31 - } - ] - } - ] - }, - { - "name": "Moonlit Grotto (D3)", - "access_rules": [], - "children": [ - { - "name": "Pols Voice chest", - "sections": [ - { - "access_rules": [ - "$d3_pols_voice" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d3", - "x": 376, - "y": 968 - } - ] - }, - { - "name": "East statues drop", - "sections": [ - { - "access_rules": [ - "$d3_statue_drop" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d3", - "x": 1143, - "y": 615 - } - ] - }, - { - "name": "Armos chest", - "sections": [ - { - "access_rules": [ - "$d3_conveyor_belt_room", - "[l_hard],$d3_conveyor_belt_room_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d3", - "x": 1592, - "y": 984 - } - ] - }, - { - "name": "Six blocks drop", - "sections": [ - { - "access_rules": [ - "$d3_six_blocK_drop", - "[l_hard],$d3_six_blocK_drop_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d3", - "x": 183, - "y": 984 - } - ] - }, - { - "name": "Four Armos drop", - "sections": [ - { - "access_rules": [ - "$d3_armos_drop", - "[l_hard],$d3_armos_drop" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d3", - "x": 1047, - "y": 439 - } - ] - }, - { - "name": "Bush beetle chest", - "sections": [ - { - "access_rules": [ - "d3sk:3, [$k_normal]", - "d3sk:2, [d3sk:3], [$k_normal]", - "$d3_bush_beetle_room" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d3", - "x": 600, - "y": 392 - } - ] - }, - { - "name": "Mimic room chest", - "sections": [ - { - "access_rules": [ - "d3sk:4, [$k_normal]", - "d3sk:3, [d3sk:4], [$k_normal]", - "$d3_mimic_room" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d3", - "x": 392, - "y": 88 - } - ] - }, - { - "name": "Fallen spinner chest", - "sections": [ - { - "access_rules": [ - "$d3_B1F_spinner", - "[l_hard],$d3_B1F_spinner_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d3", - "x": 840, - "y": 615 - } - ] - }, - { - "name": "Torch chest", - "sections": [ - { - "access_rules": [ - "$d3_torch_chest", - "[l_hard],$d3_torch_chest_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d3", - "x": 2120, - "y": 776 - } - ] - }, - { - "name": "Moldorm drop", - "sections": [ - { - "access_rules": [ - "$d3_moldorm_drop", - "[l_hard],$d3_moldorm_drop_h" - - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d3", - "x": 1815, - "y": 87 - } - ] - }, - { - "name": "Bridge chest", - "sections": [ - { - "access_rules": [ - "$d3_bridge_chest", - "[l_hard],$d3_bridge_chest_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d3", - "x": 1879, - "y": 488 - } - ] - }, - { - "name": "Right side chest", - "sections": [ - { - "access_rules": [ - "$d3_B1F_east", - "[l_hard],$d3_B1F_east" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d3", - "x": 2296, - "y": 392 - } - ] - }, - { - "name": "Shadow Hag Reward", - "sections": [ - { - "access_rules": [ - "$d3_boss", - "[l_hard],$d3_boss_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d3", - "x": 1558, - "y": 85 - } - ] - }, - { - "name": "Echoing Howl", - "sections": [ - { - "access_rules": [ - "$d3_boss", - "[l_hard],$d3_boss_h" - ], - "hosted_item": "d3" - } - ], - "map_locations": [ - { - "map": "d3", - "x": 1319, - "y": 32 - } - ] - }, - { - "name": "Get scent seeds in D3's bridge rooms", - "sections": [ - { - "name": "Respawnable bushes", - "access_rules": [ - "d3sk:1, $use_seeds, [scentseeds]" - ], - "hosted_item": "scentseeds" - } - ], - "map_locations": [ - { - "map": "d3", - "x": 1711, - "y": 375 - } - ] - } - ] - }, - { - "name": "Skull Dungeon (D4)", - "access_rules": [], - "children": [ - { - "name": "Zol chest", - "sections": [ - { - "access_rules": [ - "$d4_first_chest" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d4", - "x": 264, - "y": 952 - } - ] - }, - { - "name": "Cube chest", - "sections": [ - { - "access_rules": [ - "$d4_cube_chest" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d4", - "x": 312, - "y": 1192 - } - ] - }, - { - "name": "Minecart chest", - "sections": [ - { - "access_rules": [ - "$d4_minecart_chest" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d4", - "x": 1319, - "y": 968 - } - ] - }, - { - "name": "Moldorm switch chest", - "sections": [ - { - "access_rules": [ - "$d4_first_crystal_switch", - "[l_hard], $d4_first_crystal_switch_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d4", - "x": 1239, - "y": 1160 - } - ] - }, - { - "name": "Keese switch chest", - "sections": [ - { - "access_rules": [ - "$d4_second_crystal_switch", - "[l_hard],$d4_second_crystal_switch_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d4", - "x": 1032, - "y": 88 - } - ] - }, - { - "name": "Color tile drop", - "sections": [ - { - "access_rules": [ - "$d4_color_tile_drop" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d4", - "x": 343, - "y": 440 - } - ] - }, - { - "name": "Small floor puzzle reward", - "sections": [ - { - "access_rules": [ - "$d4_small_floor_puzzle" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d4", - "x": 808, - "y": 808 - } - ] - }, - { - "name": "Large floor puzzle reward", - "sections": [ - { - "access_rules": [ - "$d4_large_floor_puzzle", - "[l_hard], $d4_large_floor_puzzle_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d4", - "x": 600, - "y": 1720 - } - ] - }, - { - "name": "Lava Pot Chest", - "sections": [ - { - "access_rules": [ - "$d4_lava_pot_chest", - "[l_hard], $d4_lava_pot_chest_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d4", - "x": 152, - "y": 408 - } - ] - }, - { - "name": "Eyesoar Reward", - "sections": [ - { - "access_rules": [ - "$d4_boss", - "[l_hard], $d4_boss_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d4", - "x": 360, - "y": 1527 - } - ] - }, - { - "name": "Burning Flame", - "sections": [ - { - "access_rules": [ - "$d4_boss", - "[l_hard], $d4_boss_h" - ], - "hosted_item": "d4" - } - ], - "map_locations": [ - { - "map": "d4", - "x": 360, - "y": 1297 - } - ] - } - ] - }, - { - "name": "Crown Dungeon (D5)", - "access_rules": [], - "children": [ - { - "name": "Like-Like Chest", - "sections": [ - { - "name": "(west blue pegs stairs)", - "access_rules": [ - "$d5_likelike", - "[l_hard],$d5_likelike_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d5", - "x": 1800, - "y": 613 - } - ] - }, - { - "name": "Eyes Chest", - "sections": [ - { - "access_rules": [ - "$d5_eyes", - "[l_hard],$d5_eyes_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d5", - "x": 360, - "y": 969 - } - ] - }, - { - "name": "Dark Room", - "sections": [ - { - "access_rules": [ - "$d5_darkroom", - "[l_hard],$d5_darkroom_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d5", - "x": 2040, - "y": 793 - } - ] - }, - { - "name": "Two-Statue Puzzle", - "sections": [ - { - "access_rules": [ - "$d5_2statue", - "[l_hard],$d5_2statue_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d5", - "x": 3000, - "y": 425 - } - ] - }, - { - "name": "Blue Peg Chest before Boss", - "sections": [ - { - "access_rules": [ - "$d5_switchA", - "[l_hard],$d5_switchA_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d5", - "x": 1320, - "y": 905 - } - ] - }, - { - "name": "Diamonds Chest", - "sections": [ - { - "access_rules": [ - "$d5_crossroads,hook1", - "[l_hard],$d5_crossroads_h,hook1" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d5", - "x": 1624, - "y": 489 - } - ] - }, - { - "name": "Three-Statue Puzzle", - "sections": [ - { - "access_rules": [ - "$d5_3statue", - "[l_hard],$d5_3statue_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d5", - "x": 840, - "y": 969 - } - ] - }, - { - "name": "Six-Statue Puzzle", - "sections": [ - { - "access_rules": [ - "$d5_6statue", - "[l_hard],$d5_6statue" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d5", - "x": 2216, - "y": 969 - } - ] - }, - { - "name": "Red Peg Chest", - "sections": [ - { - "access_rules": [ - "$d5_redpeg", - "[l_hard],$d5_redpeg_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d5", - "x": 2312, - "y": 25 - } - ] - }, - { - "name": "Owl Puzzle", - "sections": [ - { - "access_rules": [ - "$d5_owl_puzzle", - "[l_hard],$d5_owl_puzzle" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d5", - "x": 1992, - "y": 265 - } - ] - }, - { - "name": "Smog Reward", - "sections": [ - { - "access_rules": [ - "$d5_boss", - "[l_hard],$d5_boss" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d5", - "x": 1560, - "y": 969 - } - ] - }, - { - "name": "Sacred Soil", - "sections": [ - { - "access_rules": [ - "$d5_boss", - "[l_hard],$d5_boss" - ], - "hosted_item": "d5" - } - ], - "map_locations": [ - { - "map": "d5", - "x": 1560, - "y": 738 - } - ] - } - ] - }, - { - "name": "Mermaid's Cave [Past] (D6)", - "access_rules": [], - "children": [ - { - "name": "Color Room", - "sections": [ - { - "access_rules": [ - "$d6past_colorroom", - "[l_hard],$d6past_colorroom_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d6_1", - "x": 296, - "y": 792 - } - ] - }, - { - "name": "Wizzrobe Chest", - "sections": [ - { - "access_rules": [ - "$k_wizzrobe,bombs", - "[l_hard],$k_wizzrobe,bombs" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d6_1", - "x": 840, - "y": 969 - } - ] - }, - { - "name": "Flooded Pool Chest", - "sections": [ - { - "access_rules": [ - "$d6past_pool_chest" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d6_1", - "x": 760, - "y": 792 - } - ] - }, - { - "name": "Stalfos Chest", - "sections": [ - { - "access_rules": [ - "$d6past_stalfos", - "[l_hard],$d6past_stalfos_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d6_1", - "x": 808, - "y": 440 - } - ] - }, - { - "name": "Rope Chest", - "sections": [ - { - "access_rules": [ - "$d6past_rope_chest", - "[l_hard],$d6past_rope_chest_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d6_1", - "x": 3049, - "y": 617 - } - ] - }, - { - "name": "Underwater Spear Chest", - "sections": [ - { - "access_rules": [ - "$d6past_spinner,mermaid" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d6_1", - "x": 1801, - "y": 217 - } - ] - }, - { - "name": "Underwater Diamond Chest", - "sections": [ - { - "access_rules": [ - "$d6past_spinner,mermaid,hook1" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d6_1", - "x": 2329, - "y": 89 - } - ] - }, - { - "name": "Octogon Reward", - "sections": [ - { - "access_rules": [ - "$d6past_boss" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d6_1", - "x": 120, - "y": 88 - } - ] - }, - { - "name": "Lonely Peak", - "sections": [ - { - "access_rules": [ - "$d6past_boss" - ], - "hosted_item": "d6" - } - ], - "map_locations": [ - { - "map": "d6_1", - "x": 360, - "y": 35 - } - ] - } - ] - }, - { - "name": "Mermaid's Cave [Present] (D6)", - "access_rules": [], - "children": [ - { - "name": "Diamond Chest", - "sections": [ - { - "access_rules": [ - "hook1" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d6_2", - "x": 296, - "y": 792 - } - ] - }, - { - "name": "Rope Chest", - "sections": [ - { - "access_rules": [ - "$d6present_rope_chest", - "[l_hard],$d6present_rope_chest_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d6_2", - "x": 776, - "y": 617 - } - ] - }, - { - "name": "Cube Chest", - "sections": [ - { - "access_rules": [ - "$d6present_cube_chest", - "[l_hard],$d6present_cube_chest_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d6_2", - "x": 360, - "y": 985 - } - ] - }, - { - "name": "Spinner Chest", - "sections": [ - { - "access_rules": [ - "$d6present_spinner_chest", - "[l_hard],$d6present_spinner_chest_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d6_2", - "x": 88, - "y": 217 - } - ] - }, - { - "name": "Beamos Chest", - "sections": [ - { - "access_rules": [ - "$d6present_beamos_chest", - "[l_hard],$d6present_beamos_chest_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d6_2", - "x": 1496, - "y": 729 - } - ] - }, - { - "name": "Rope RNG Chest", - "sections": [ - { - "access_rules": [ - "$d6present_rng_chest", - "[l_hard],$d6present_rng_chest_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d6_2", - "x": 1560, - "y": 553 - } - ] - }, - { - "name": "Channel Chest", - "sections": [ - { - "access_rules": [ - "$d6present_channel_chest", - "[l_hard],$d6present_channel_chest_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d6_2", - "x": 1416, - "y": 937 - } - ] - }, - { - "name": "Vire Chest", - "sections": [ - { - "access_rules": [ - "$d6present_vire_chest", - "[l_hard],$d6present_vire_chest_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d6_2", - "x": 840, - "y": 25 - } - ] - } - ] - }, - { - "name": "Jabu-Jabu's Belly (D7)", - "access_rules": ["mermaid"], - "children": [ - { - "name": "Spike Chest", - "sections": [ - { - "access_rules": [ - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d7", - "x": 280, - "y": 1305 - } - ] - }, - { - "name": "Crab Chest", - "sections": [ - { - "access_rules": [ - "$d7_crab" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d7", - "x": 2280, - "y": 677 - } - ] - }, - { - "name": "Diamond Puzzle", - "sections": [ - { - "access_rules": [ - "$d7_diamondpuzzle" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d7", - "x": 2055, - "y": 868 - } - ] - }, - { - "name": "Flower Room", - "sections": [ - { - "access_rules": [ - "$d7_flower" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d7", - "x": 1832, - "y": 324 - } - ] - }, - { - "name": "Stairway Chest", - "sections": [ - { - "access_rules": [ - "$d7_stairway" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d7", - "x": 2296, - "y": 277 - } - ] - }, - { - "name": "Rightwing Moldorm Chest", - "sections": [ - { - "access_rules": [ - "$d7_right_wing", - "[l_hard],$d7_right_wing_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d7", - "x": 1320, - "y": 1145 - } - ] - }, - { - "name": "Boxed Chest", - "sections": [ - { - "access_rules": [ - "$draind7" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d7", - "x": 2040, - "y": 517 - } - ] - }, - { - "name": "Cane & Diamond Puzzle", - "sections": [ - { - "access_rules": [ - "$draind7,hook2,cane" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d7", - "x": 2056, - "y": 645 - } - ] - }, - { - "name": "3F Terrace Chest", - "sections": [ - { - "access_rules": [ - "$floodd7" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d7", - "x": 920, - "y": 633 - } - ] - }, - { - "name": "Left Wing", - "sections": [ - { - "access_rules": [ - "$floodd7" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d7", - "x": 104, - "y": 1145 - } - ] - }, - { - "name": "Hallway Chest", - "sections": [ - { - "access_rules": [ - "$d7_hallway" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d7", - "x": 600, - "y": 40 - } - ] - }, - { - "name": "Miniboss Chest", - "sections": [ - { - "access_rules": [ - "$d7_miniboss" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d7", - "x": 2440, - "y": 277 - } - ] - }, - { - "name": "Post-Hallway Chest", - "sections": [ - { - "access_rules": [ - "$floodd7,d7sk:7" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d7", - "x": 1080, - "y": 89 - } - ] - }, - { - "name": "Pot Island Chest", - "sections": [ - { - "access_rules": [ - "$d7_pot_island" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d7", - "x": 1944, - "y": 309 - } - ] - }, - { - "name": "Plasmarine Reward", - "sections": [ - { - "access_rules": [ - "$d7_boss" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d7", - "x": 840, - "y": 1146 - } - ] - }, - { - "name": "Rolling Sea", - "sections": [ - { - "access_rules": [ - "$d7_boss" - ], - "hosted_item": "d7" - } - ], - "map_locations": [ - { - "map": "d7", - "x": 584, - "y": 1091 - } - ] - } - ] - }, - { - "name": "Ancient Tomb (D8)", - "access_rules": [], - "children": [ - { - "name": "First Chest", - "sections": [ - { - "access_rules": [ - "$d8_first" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d8", - "x": 696, - "y": 1225 - } - ] - }, - { - "name": "Ghini Chest", - "sections": [ - { - "name": "(kill ghinis and take stairs)", - "access_rules": [ - "$d8_ghini", - "[l_hard], $d8_ghini_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d8", - "x": 1864, - "y": 480 - } - ] - }, - { - "name": "B1F NW Chest", - "sections": [ - { - "access_rules": [ - "$d8_ghini", - "[l_hard], $d8_ghini_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d8", - "x": 344, - "y": 409 - } - ] - }, - { - "name": "Blue Peg Chest", - "sections": [ - { - "access_rules": [ - "$d8_bluepeg", - "[l_hard], $d8_bluepeg_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d8", - "x": 648, - "y": 937 - } - ] - }, - { - "name": "Blade Trap Chest", - "sections": [ - { - "access_rules": [ - "$d8_bluepeg", - "[l_hard], $d8_bluepeg_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d8", - "x": 456, - "y": 937 - } - ] - }, - { - "name": "Sarcophagus Chest", - "sections": [ - { - "access_rules": [ - "$d8_bluepeg,lift2", - "[l_hard], $d8_bluepeg_h,lift2" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d8", - "x": 440, - "y": 777 - } - ] - }, - { - "name": "Stalfos Drop", - "sections": [ - { - "access_rules": [ - "$d8_bluepeg", - "[l_hard], $d8_bluepeg_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d8", - "x": 599, - "y": 472 - } - ] - }, - { - "name": "Maze Chest", - "sections": [ - { - "access_rules": [ - "$d8_maze", - "[l_hard], $d8_maze_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d8", - "x": 1544, - "y": 128 - } - ] - }, - { - "name": "NW Slate", - "sections": [ - { - "access_rules": [ - "$d8_maze", - "[l_hard], $d8_maze_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d8", - "x": 1800, - "y": 144 - } - ] - }, - { - "name": "NE Slate", - "sections": [ - { - "access_rules": [ - "$d8_neslate", - "[l_hard], $d8_neslate_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d8", - "x": 2760, - "y": 144 - } - ] - }, - { - "name": "B3F Chest", - "sections": [ - { - "access_rules": [ - "$d8_maze,lift2", - "[l_hard], $d8_maze_h,lift2" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d8", - "x": 520, - "y": 201 - } - ] - }, - { - "name": "Tile Room", - "sections": [ - { - "access_rules": [ - "$d8_tileroom", - "[l_hard],$d8_tileroom_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d8", - "x": 2520, - "y": 848 - } - ] - }, - { - "name": "SE Slate", - "sections": [ - { - "access_rules": [ - "$d8_tileroom", - "[l_hard],$d8_tileroom_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d8", - "x": 2760, - "y": 848 - } - ] - }, - { - "name": "Floor Puzzle", - "sections": [ - { - "access_rules": [ - "$d8_bluepeg,d8sk:5", - "[l_hard],$d8_bluepeg_h,d8sk:5" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d8", - "x": 1080, - "y": 969 - } - ] - }, - { - "name": "SW Slate", - "sections": [ - { - "access_rules": [ - "$d8_maze,d8sk:5,lift1", - "[l_hard],$d8_maze_h,d8sk:5,lift1" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d8", - "x": 1768, - "y": 1025 - } - ] - }, - { - "name": "Ramrock Reward", - "sections": [ - { - "access_rules": [ - "$d8_boss", - "[l_hard],$d8_boss_h" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "d8", - "x": 840, - "y": 108 - } - ] - }, - { - "name": "Falling Star", - "sections": [ - { - "access_rules": [ - "$d8_boss", - "[l_hard],$d8_boss_h" - ], - "hosted_item": "d8" - } - ], - "map_locations": [ - { - "map": "d8", - "x": 600, - "y": 35 - } - ] - } - ] - } - ] - } -] \ No newline at end of file diff --git a/var_x-items_testing/locations/overworld.json b/var_x-items_testing/locations/overworld.json deleted file mode 100644 index fc9b111..0000000 --- a/var_x-items_testing/locations/overworld.json +++ /dev/null @@ -1,2174 +0,0 @@ -[ - { - "name": "Overworld", - "chest_unopened_img": "images/items/chest.png", - "chest_opened_img": "images/items/chest_gray.png", - "children": [ - { - "name": "Start", - "children": [ - { - "name": "Starting Chest", - "sections": [ - { - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "map", - "x": 1494, - "y": 485 - } - ] - }, - { - "name": "Nayru's House", - "sections": [ - { - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "map", - "x": 1656, - "y": 414 - } - ] - } - ] - }, - { - "name": "Lynna/South Shore/Palace", - "children": [ - { - "name": "South Lynna Tree", - "chest_unopened_img": "images/items/tree.png", - "chest_opened_img": "images/items/tree_gray.png", - "access_rules": [ - "{$lynna_city}", - "$use_seeds,$seed_tree", - "$use_seeds,$punch_object", - "$use_seeds,$dimitri_flute", - //"[l_hard],$use_seeds,$bush" - ], - "sections": [ - { - "item_count": 1, - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 1359, - "y": 960 - } - ] - }, - { - "name": "Black Tower", - "access_rules": [], - "sections": [ - { - "name": "Black Tower Worker", - "item_count": 1, - "access_rules": [ - "$lynna_village" - ] - }, - { - "name": "Fight Final Boss", - "item_count": 1, - "chest_unopened_img": "images/bosses/veran.png", - "chest_opened_img": "images/bosses/veran_gray.png", - "access_rules": [ - "makuseed" - ] - } - ], - "map_locations": [ - { - "map": "map", - "x": 3380, - "y": 928 - } - ] - }, - { - "name": "Maku Tree (Present)", - "access_rules": [], - "sections": [ - { - "name": "Save Waifu", - "item_count": 1, - "access_rules": [ - "$maku_tree" - ] - }, - { - "name": "Get Maku Seed for Go Mode", - "hosted_item": "makuseed", - "access_rules": [ - "$maku_seed" - ] - } - ], - "map_locations": [ - { - "map": "map", - "x": 1360, - "y": 453 - } - ] - }, - { - "name": "Maku Tree (Past)", - "access_rules": [], - "sections": [ - { - "name": "Maku Path Chest", - "item_count": 1, - "access_rules": [ - "$maku_tree,$k_normal,pathkey", - "$maku_tree,shovel,pathkey", - "$lynna_village,shovel" - ] - }, - { - "name": "Did you get a key from the Path Chest? (Mark this)", - "hosted_item": "pathkey", - "access_rules": [ - "{$maku_tree,$k_normal}", - "{$maku_tree,shovel}", - "{$lynna_village,shovel}" - ] - }, - { - "name": "Down the Stairs", - "item_count": 1, - "access_rules": [ - "$maku_tree,$k_normal", - "$maku_tree,shovel", - "$lynna_village,shovel,pathkey" - ] - } - ], - "map_locations": [ - { - "map": "map", - "x": 3700, - "y": 457 - } - ] - }, - { - "name": "Lynna City Chest", - "access_rules": [ - "currents", - "$ember,$use_seeds" - ], - "sections": [ - { - "item_count": 1, - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 1464, - "y": 600 - } - ] - }, - { - "name": "South Shore Dirt", - "access_rules": [ - "$shore_present,shovel", - "$shore_present,flute" - ], - "sections": [ - { - "item_count": 1, - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 1353, - "y": 1192 - } - ] - }, - { - "name": "Tingle", - "access_rules": [ - "$balloon_guy", - "[l_hard],$balloon_guy_h" - ], - "sections": [ - { - "name": "Tingle's Gift", - "item_count": 1, - "access_rules": [] - }, - { - "name": "Bring 3 Seeds to Tingle", - "item_count": 1, - "access_rules": [ - "$use_seeds,$seed_number:3" - ] - } - ], - "map_locations": [ - { - "map": "map", - "x": 1496, - "y": 950 - } - ] - }, - { - "name": "Get Raft for Sea Travel!", - "access_rules": [ - "$raft" - ], - "sections": [ - { - "item_count": 1, - "hosted_item": "raft", - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 3547, - "y": 1308 - } - ] - }, - { - "name": "Shop", - "access_rules": [], - "sections": [ - { - "name": "Buy a Shield (30 Rupees)", - "hosted_item": "shield1", - "access_rules": [ - "$farm", - "{$lynna_city}" - ] - }, - { - "name": "Shop Item (150 Rupees)", - "item_count": 1, - "access_rules": [ - "{$lynna_city}", - "[l_hard],shovel" - ] - } - ], - "map_locations": [ - { - "map": "map", - "x": 1400, - "y": 788 - } - ] - }, - { - "name": "Ambi's Palace Tree", - "access_rules": [ - "{$lynna_village}", - "$lynna_village,$seed_tree,$use_seeds", - "$lynna_village,$punch_object,$use_seeds" - ], - "sections": [ - { - "item_count": 1, - "chest_unopened_img": "images/items/tree.png", - "chest_opened_img": "images/items/tree_gray.png", - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 3236, - "y": 320 - } - ] - }, - { - "name": "Ambi's Palace", - "access_rules": [], - "sections": [ - { - "name": "Palace Chest", - "item_count": 1, - "access_rules": [ - "$palace_chest", - "[l_hard],$palace_chest_h" - ] - }, - { - "name": "Rescue Nayru", - "item_count": 1, - "access_rules": [ - "$rescue_nayru", - "[l_hard],$rescue_nayru_h" - ] - } - ], - "map_locations": [ - { - "map": "map", - "x": 3379, - "y": 12 - } - ] - }, - { - "name": "Mayor Plen's house", - "access_rules": [ - "hook2" - ], - "sections": [ - { - "item_count": 1, - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 1224, - "y": 663 - } - ] - } - ] - }, - { - "name": "Yoll Graveyard", - "children": [ - { - "name": "Cheval's Grave", - "access_rules": [ - "$cheval_grave", - "[l_hard],$cheval_grave_h" - ], - "sections": [ - { - "name": "Cheval's Test", - "item_count": 1, - "access_rules": [ - "bracelet,feather", - "bracelet,flippers" - ] - }, - { - "name": "Cheval's Invention", - "item_count": 1, - "access_rules": [ - "flippers" - ] - } - ], - "map_locations": [ - { - "map": "map", - "x": 1800, - "y": 680 - } - ] - }, - { - "name": "Grave under the Tree", - "access_rules": [ - "$graveyard" - ], - "sections": [ - { - "item_count": 1, - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 2104, - "y": 1128 - } - ] - }, - { - "name": "Maple's Shop", - "access_rules": [], - "sections": [ - { - "name": "Get Magic Potion from Shop", - "hosted_item": "potion", - "access_rules": [ - "$syrup", - "[l_hard],$syrup_h" - ] - }, - { - "name": "Farm Magic Potion from Maple flying around", - "hosted_item": "potion", - "access_rules": [ - "[l_hard],$k_normal" - ] - } - ], - "map_locations": [ - { - "map": "map", - "x": 2200, - "y": 670 - } - ] - }, - { - "name": "Graveyard Poe", - "access_rules": [ - "$graveyard,gravekey,bracelet" - ], - "sections": [ - { - "item_count": 1, - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 2023, - "y": 950 - } - ] - }, - { - "name": "Enter Spirit's Grave (D1)", - "access_rules": [ - "$d1_entrance" - ], - "sections": [ - { - "item_count": 1, - "chest_unopened_img": "images/bosses/d1.png", - "chest_opened_img": "images/bosses/d1.png", - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 2184, - "y": 1057 - } - ] - } - ] - }, - { - "name": "Fairies' Woods", - "children": [ - { - "name": "Fairie's Woods Chest", - "access_rules": [ - "$woods_chest", - "[trick],$lynna_city,hook1" - ], - "sections": [ - { - "item_count": 1, - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 744, - "y": 1079 - } - ] - }, - { - "name": "Deku Forest Cave - East", - "access_rules": [ - "$deku_forest" - ], - "sections": [ - { - "item_count": 1, - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 2731, - "y": 919 - } - ] - }, - { - "name": "Deku Forest Cave - West", - "access_rules": [ - "$deku_forest,bracelet,feather", - "$deku_forest,bracelet,hook1", - "$deku_forest,bracelet,emberseeds", - "$deku_forest,bracelet,ages", - "$deku_forest,bracelet,$gale_satchel" - ], - "sections": [ - { - "item_count": 1, - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 2539, - "y": 936 - } - ] - }, - { - "name": "Deku Forest Tree", - "access_rules": [ - "{$deku_forest}", - "$forest_tree, $use_seeds" - ], - "sections": [ - { - "item_count": 1, - "chest_unopened_img": "images/items/tree.png", - "chest_opened_img": "images/items/tree_gray.png", - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 2420, - "y": 1072 - } - ] - }, - { - "name": "Deku Forest Soldier", - "access_rules": [ - "$deku_forest,$mystery" - ], - "sections": [ - { - "item_count": 1, - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 2556, - "y": 1095 - } - ] - }, - { - "name": "Buy a Shield (10 Rupees)", - "access_rules": [ - "[trick],$deku_forest,bracelet,feather", - "[trick],$deku_forest,bracelet,hook1", - "[trick],$deku_forest,bracelet,ember", - "[trick],$deku_forest,bracelet,ages", - "[trick],$deku_forest,bracelet,$gale_satchel" - ], - "sections": [ - { - "hosted_item": "shield1", - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 2396, - "y": 958 - } - ] - }, - { - "name": "Buy a Shield (30 Rupees)", - "access_rules": [ - "[trick],$deku_forest,bracelet,feather", - "[trick],$deku_forest,bracelet,hook1", - "[trick],$deku_forest,bracelet,ember", - "[trick],$deku_forest,bracelet,ages", - "[trick],$deku_forest,bracelet,$gale_satchel" - ], - "sections": [ - { - "hosted_item": "shield1", - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 2523, - "y": 1080 - } - ] - }, - { - "name": "Enter Wing Dungeon Past (D2)", - "access_rules": [ - "$deku_forest,bombs" - ], - "sections": [ - { - "item_count": 1, - "chest_unopened_img": "images/bosses/d2.png", - "chest_opened_img": "images/bosses/d2.png", - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 2908, - "y": 1052 - } - ] - }, - { - "name": "Enter Wing Dungeon Present (D2)", - "access_rules": [ - "$deku_forest,currents" - ], - "sections": [ - { - "item_count": 1, - "chest_unopened_img": "images/bosses/d2.png", - "chest_opened_img": "images/bosses/d2.png", - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 568, - "y": 1052 - } - ] - } - ] - }, - { - "name": "Crescent Island", - "children": [ - { - "name": "Tokay Crystal Cave", - "access_rules": [ - "$tokaycrystalcave" - ], - "sections": [ - { - "item_count": 1, - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 4124, - "y": 1412 - } - ] - }, - { - "name": "Tokay Bomb Cave", - "access_rules": [ - "$tokaybombcave" - ], - "sections": [ - { - "item_count": 1, - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 4444, - "y": 1559 - } - ] - }, - { - "name": "Wild Tokay Game", - "access_rules": [ - "$tokaygame" - ], - "sections": [ - { - "name": "Hungry Hungry Tokays!", - "item_count": 1, - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 4444, - "y": 1431 - } - ] - }, - { - "name": "Crescent Island Tree", - "access_rules": [ - "{$crescenttree,turninseedling}", - "$crescenttree,turninseedling,$use_seeds" - ], - "sections": [ - { - "item_count": 1, - "chest_unopened_img": "images/items/tree.png", - "chest_opened_img": "images/items/tree_gray.png", - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 1984, - "y": 1343 - } - ] - }, - { - "name": "Turn in Seedling to Tokay", - "access_rules": [ - "$crescenttree" - ], - "sections": [ - { - "hosted_item": "turninseedling", - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 4347, - "y": 1334 - } - ] - }, - { - "name": "Enter Moonlit Grotto (D3)", - "access_rules": [ - "$d3_entrance" - ], - "sections": [ - { - "chest_unopened_img": "images/bosses/d3.png", - "chest_opened_img": "images/bosses/d3.png" - } - ], - "map_locations": [ - { - "map": "map", - "x": 1688, - "y": 1488 - } - ] - }, - { - "name": "Hidden Tokay Cave", - "access_rules": [ - "$lynna_city,mermaid" - ], - "sections": [ - { - "item_count": 1, - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 3915, - "y": 1735 - } - ] - }, - { - "name": "Under Crescent Island", - "access_rules": [ - "$lynna_city,mermaid" - ], - "sections": [ - { - "item_count": 1, - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 1984, - "y": 1265 - } - ] - }, - { - "name": "Tokay Pot Cave", - "access_rules": [ - "$crescentpast,hook2" - ], - "sections": [ - { - "item_count": 1, - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 4443, - "y": 1719 - } - ] - } - ] - }, - { - "name": "Nuun Highlands/Symmetry City/Talus Peaks", - "children": [ - { - "name": "Check Nuun Highlands and talk to Foreman to start Carpenter Quest and build the Bridge!", - "access_rules": [ - "$nuun" - ], - "sections": [ - { - "name": "Note: Move down one screen and compare your screen to the ones in the `Animal Companion Maps` tab", - "hosted_item": "carpenterboss", - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 872, - "y": 351 - } - ] - }, - // Moosh Carpenters - { - "name": "Carpenter 1", - "access_rules": [ - "$moosh_flute,carpenterboss", - "nuun_moosh,currents,carpenterboss" - ], - "sections": [ - { - "name": "(4,7)", - "visibility_rules": [ - "nuun_moosh" - ], - "hosted_item": "carpenter1", - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "animal_regions", - "x": 1176, - "y": 103 - } - ] - }, - { - "name": "Carpenter 2", - "access_rules": [ - "$moosh_flute,carpenterboss", - "nuun_moosh,currents,carpenterboss" - ], - "sections": [ - { - "name": "(5,7)", - "visibility_rules": [ - "nuun_moosh" - ], - "hosted_item": "carpenter2", - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "animal_regions", - "x": 1400, - "y": 102 - } - ] - }, - { - "name": "Carpenter 3", - "access_rules": [ - "$moosh_flute,carpenterboss", - "nuun_moosh,currents,carpenterboss" - ], - "sections": [ - { - "name": "(8,7)", - "visibility_rules": [ - "nuun_moosh" - ], - "hosted_item": "carpenter3", - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "animal_regions", - "x": 1350, - "y": 230 - } - ] - }, - // Ricky Carpenters - { - "name": "Carpenter 1", - "access_rules": [ - "$ricky_flute,carpenterboss", - "nuun_ricky,currents,carpenterboss" - ], - "sections": [ - { - "name": "(4,3)", - "visibility_rules": [ - "nuun_ricky" - ], - "hosted_item": "carpenter1", - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "animal_regions", - "x": 231, - "y": 6 - } - ] - }, - { - "name": "Carpenter 2", - "access_rules": [ - "$ricky_flute,carpenterboss", - "nuun_ricky,currents,carpenterboss" - ], - "sections": [ - { - "name": "(4,7)", - "visibility_rules": [ - "nuun_ricky" - ], - "hosted_item": "carpenter2", - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "animal_regions", - "x": 232, - "y": 167 - } - ] - }, - { - "name": "Carpenter 3", - "access_rules": [ - "$ricky_flute,carpenterboss", - "nuun_ricky,currents,carpenterboss" - ], - "sections": [ - { - "name": "(5,3)", - "visibility_rules": [ - "nuun_ricky" - ], - "hosted_item": "carpenter3", - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "animal_regions", - "x": 393, - "y": 231 - } - ] - }, - // Dimitri Carpenters - { - "name": "Carpenter 1", - "access_rules": [ - "$dimitri_flute,carpenterboss", - "nuun_dimitri,currents,carpenterboss" - ], - "sections": [ - { - "name": "(6,5)", - "visibility_rules": [ - "nuun_dimitri" - ], - "hosted_item": "carpenter1", - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "animal_regions", - "x": 872, - "y": 70 - } - ] - }, - { - "name": "Carpenter 2", - "access_rules": [ - "$dimitri_flute,carpenterboss", - "nuun_dimitri,currents,carpenterboss" - ], - "sections": [ - { - "name": "(9,6)", - "visibility_rules": [ - "nuun_dimitri" - ], - "hosted_item": "carpenter2", - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "animal_regions", - "x": 919, - "y": 344 - } - ] - }, - { - "name": "Carpenter 3", - "access_rules": [ - "$dimitri_flute,carpenterboss", - "nuun_dimitri,currents,carpenterboss" - ], - "sections": [ - { - "name": "(5,3)", - "visibility_rules": [ - "nuun_dimitri" - ], - "hosted_item": "carpenter3", - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "animal_regions", - "x": 712, - "y": 166 - } - ] - }, - { - "name": "Nuun Cave - Ricky (Check `Animal Companion Maps` Tab for exact location)", - "access_rules": [ - "$nuuncave" - ], - "sections": [ - { - "item_count": 1, - "visibility_rules": [ - "nuun_ricky" - ], - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 1207, - "y": 343 - }, - { - "map": "animal_regions", - "x": 407, - "y": 214 - } - ] - }, - { - "name": "Nuun Cave - Dimitri (Check `Animal Companion Maps` Tab for exact location)", - "access_rules": [ - "$nuuncave" - ], - "sections": [ - { - "item_count": 1, - "visibility_rules": [ - "nuun_dimitri" - ], - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 1207, - "y": 343 - }, - { - "map": "animal_regions", - "x": 831, - "y": 278 - } - ] - }, - { - "name": "Nuun Cave - Moosh (Check `Animal Companion Maps` Tab for exact location)", - "access_rules": [ - "$nuuncave" - ], - "sections": [ - { - "item_count": 1, - "visibility_rules": [ - "nuun_moosh" - ], - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 1207, - "y": 343 - }, - { - "map": "animal_regions", - "x": 1335, - "y": 310 - } - ] - }, - { - "name": "Symmetry City Tree", - "access_rules": [ - "{$symmetrypresent}", - "$symmetrytree, $use_seeds", - "[l_hard],$symmetrytree_h, $use_seeds" - ], - "sections": [ - { - "item_count": 1, - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 559, - "y": 192 - } - ] - }, - { - "name": "Symmetry City Brothers", - "access_rules": [ - "$symmetrypast" - ], - "sections": [ - { - "name": "first talk to a sister, then the two brothers to the NE/NW", - "item_count": 1, - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 2900, - "y": 192 - } - ] - }, - { - "name": "Tokkey's Composition", - "access_rules": [ - "$symmetrypast,flippers" - ], - "sections": [ - { - "item_count": 1, - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 2636, - "y": 23 - } - ] - }, - { - "name": "Patch Tuninut", - "access_rules": [ - "$wallpatch,tuninut", - "[l_hard],$wallpatch_h,tuninut" - ], - "sections": [ - { - "name": "Climb the wall to restore the tuninut", - "hosted_item": "repairednut", - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 2900, - "y": 450 - } - ] - }, - { - "name": "Talus Peaks Chest", - "access_rules": [ - "$restorationwall" - ], - "sections": [ - { - "item_count": 1, - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 520, - "y": 791 - } - ] - }, - { - "name": "Enter Skull Dungeon (D4)", - "access_rules": [ - "$d4_entrance", - "[l_hard],$d4_entrance_h" - ], - "sections": [ - { - "chest_unopened_img": "images/bosses/d4.png", - "chest_opened_img": "images/bosses/d4.png", - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 559, - "y": 50 - } - ] - } - ] - }, - { - "name": "Rolling Ridge West", - "children": [ - { - "name": "Free the Goron Elder", - "access_rules": [ - "bombflower, feather, hook1", - "bombflower, ages, hook1", - "bombflower, cape", - "[l_hard], feather, magnet, bombflower" - ], - "sections": [ - { - "item_count": 1, - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 3724, - "y": 295 - } - ] - }, - { - "name": "Rolling Ridge Entrance", - "access_rules": [ - "$west_ridge_present" - ], - "sections": [ - { - "name": "Goron's Hiding Place (Bombwall)", - "access_rules": [ - "bombs" - ], - "item_count": 1 - }, - { - "name": "1F Terrace chest", - "item_count": 1 - }, - { - "name": "3F Surface stairs", - "item_count": 1 - }, - ], - "map_locations": [ - { - "map": "map", - "x": 1383, - "y": 295 - }, - { - "map": "map", - "x": 1351, - "y": 135 - } - ] - }, - { - "name": "Rolling Ridge Tree (West)", - "access_rules": [ - "{bombflower, feather, hook1, $seed_tree}", - "bombflower, feather, hook1, $use_seeds, $seed_tree", - "{currents, feather, hook1, bracelet, $seed_tree}", - "currents, feather, hook1, $use_seeds, bracelet, $seed_tree", - "{$west_ridge_present, bracelet, echoes, $seed_tree}", - "$west_ridge_present, bracelet, echoes, $use_seeds, $seed_tree", - "{$west_ridge_present, ages, $seed_tree}", - "$west_ridge_present, ages, $use_seeds, $seed_tree" - ], - "sections": [ - { - "chest_unopened_img": "images/items/tree.png", - "chest_opened_img": "images/items/tree_gray.png", - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 3683, - "y": 50 - } - ] - }, - { - "name": "Moblin Keep", - "access_rules": [ - "$west_ridge_present" - ], - "sections": [ - { - "name": "Lower floor chest", - "access_rules": [ - "feather, flippers" - ], - "item_count": 1 - }, - { - "name": "Defeat the boss", - "access_rules": [ - "$pegasus_satchel, bracelet", - "cape, bracelet" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "map", - "x": 1528, - "y": 58 - } - ] - }, - { - "name": "Enter Crown Dungeon (D5)", - "access_rules": [ - // Vanilla way, by beating Moblin Keep - "$west_ridge_present, $pegasus_satchel, bracelet, feather, crownkey", - "$west_ridge_present, cape, bracelet, crownkey", - // From East Ridge - "$lynna_village, feather, mermaid, hook1, bracelet, currents, crownkey", - "$lynna_village, $jump3, mermaid, bracelet, currents, crownkey", - "$lynna_village, ages, mermaid, hook1, crownkey", - "$lynna_village, ages, mermaid, $jump3, crownkey" - ], - "sections": [ - { - "chest_unopened_img": "images/bosses/d5.png", - "chest_opened_img": "images/bosses/d5.png", - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 1720, - "y": 23 - } - ] - }, - ] - }, - { - "name": "Rolling Ridge East (Present)", - "children": [ - { - "name": "Goron caves (present)", - "sections": [ - { - "name": "Goron Dancing", - "access_rules": [ - //from Lynna, swimming - "$lynna_village, feather, mermaid, currents", - "$lynna_village, ages, mermaid", - //from the upper cave - "$west_ridge_present, $pegasus_satchel, bracelet, feather", - "$west_ridge_present, bracelet, cape" - ], - "item_count": 1 - }, - { - "name": "Trade the Brisket with the stairs Goron", - "access_rules": [ - //from Lynna, swimming - "$lynna_village, feather, mermaid, currents, emblem, brisket", - "$lynna_village, ages, mermaid, emblem, brisket", - //from the upper cave - "$west_ridge_present, $pegasus_satchel, bracelet, feather, emblem, brisket", - "$west_ridge_present, $jump3, bracelet, emblem, brisket" - ], - "item_count": 1 - }, - { - "name": "Diamonds Chest", - "access_rules": [ - //from Lynna, swimming - "$lynna_village, feather, mermaid, currents, hook1", - "$lynna_village, mermaid, currents, cape", - "$lynna_village, feather, mermaid, currents, emblem, $jump3", - "$lynna_village, ages, mermaid, hook1", - //from the upper cave, requires emblem - "$west_ridge_present, $pegasus_satchel, bracelet, feather, currents, hook1", - "$west_ridge_present, bracelet, feather, currents, $jump3" - ], - "item_count": 1 - }, - { - "name": "Big Bang minigame", - "access_rules": [ - //from Lynna, swimming - "$lynna_village, feather, mermaid, currents, hook1, goronade", - "$lynna_village, mermaid, currents, cape, goronade", - "$lynna_village, feather, mermaid, currents, emblem, goronade", - "$lynna_village, ages, mermaid, hook1, goronade", - //from the upper cave, requires emblem - "$west_ridge_present, $pegasus_satchel, bracelet, feather, currents, hook1, goronade", - "$west_ridge_present, bracelet, feather, currents, $jump3, goronade" - ], - "item_count": 1 - }, - { - "name": "Highest floor chest", - "access_rules": [ - //from Lynna, swimming - "$lynna_village, feather, mermaid, currents, hook1", - "$lynna_village, feather, mermaid, currents, emblem", - "$lynna_village, ages, mermaid, hook1", - //from the upper cave, requires emblem - "$west_ridge_present, $pegasus_satchel, bracelet, feather, currents, hook1", - "$west_ridge_present, bracelet, feather, currents, $jump3" - ], - "item_count": 1 - }, - ], - "map_locations": [ - { - "map": "map", - "x": 2200, - "y": 423 - }, - { - "map": "map", - "x": 1976, - "y": 200 - } - ] - }, - { - "name": "Target Carts Minigame", - "access_rules": [ - //from Lynna, swimming - "$lynna_village, feather, mermaid, currents, hook1, currents, $target_carts_shooter", - "$lynna_village, feather, mermaid, currents, hook1, currents, $target_carts_slingshot", - "$lynna_village, ages, mermaid, hook1, $target_carts_shooter", - "$lynna_village, ages, mermaid, hook1, $target_carts_slingshot", - //from Moblin cave - "$west_ridge_present, $pegasus_satchel, bracelet, feather, hook1, currents, $target_carts_shooter", - "$west_ridge_present, $pegasus_satchel, bracelet, feather, hook1, currents, $target_carts_slingshot" - ], - "sections": [ - { - "name": "First reward", - "item_count": 1 - }, - { - "name": "Second reward", - "item_count": 1 - }, - ], - "map_locations": [ - { - "map": "map", - "x": 2135, - "y": 151 - } - ] - }, - { - "name": "Left of D6 Entrance", - "access_rules": [ - "$lynna_village, feather, mermaid, currents", - "$lynna_village, ages, mermaid" - ], - "sections": [ - { - "name": "Underwater chest", - "item_count": 1 - }, - ], - "map_locations": [ - { - "map": "map", - "x": 1935, - "y": 395 - } - ] - }, - { - "name": "Enter Mermaid's Cave [Present] (D6)", - "access_rules": [ - //from Lynna, swimming - "d6keypresent, $lynna_village, feather, mermaid, currents", - "d6keypresent, $lynna_village, ages, mermaid", - //from the upper cave - "d6keypresent, $west_ridge_present, $pegasus_satchel, bracelet, feather", - "d6keypresent, $west_ridge_present, $jump3, bracelet" - ], - "sections": [ - { - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "map", - "x": 1991, - "y": 439 - } - ] - } - ] - }, - { - "name": "Rolling Ridge East (Past)", - "children": [ - { - "name": "Goron caves (past)", - "sections": [ - { - "name": "Goron Dancing with the Letter", - "access_rules": [ - //from Lynna, swimming - "$lynna_village, feather, mermaid, letter", - "$lynna_village, ages, mermaid, letter", - //from the upper cave, requires emblem - "$west_ridge_present, $pegasus_satchel, bracelet, feather, echoes, letter", - "$west_ridge_present, $jump3, bracelet, echoes, letter" - ], - "item_count": 1 - }, - { - "name": "Trade the Vase with the stairs Goron", - "access_rules": [ - //from Lynna, swimming - "$lynna_village, feather, mermaid, emblem, vase", - "$lynna_village, ages, mermaid, emblem, vase", - //from the upper cave, requires emblem - "$west_ridge_present, $pegasus_satchel, bracelet, feather, echoes, emblem, vase", - "$west_ridge_present, $jump3, bracelet, echoes, emblem, vase" - ], - "item_count": 1 - }, - { - "name": "Bush Room Chest", - "access_rules": [ - //from Lynna, swimming - "$lynna_village, feather, mermaid, hook1", - "$lynna_village, ages, mermaid, hook1", - //from the upper cave, requires emblem - "$west_ridge_present, $jump3, bracelet, echoes, hook1" - ], - "item_count": 1 - }, - { - "name": "Trade Lava Juice with the bush Goron", - "access_rules": [ - //from Lynna, swimming - "$lynna_village, feather, mermaid, hook1, lavajuice", - "$lynna_village, feather, mermaid, emblem, lavajuice", - "$lynna_village, ages, mermaid, hook1, lavajuice", - //from the upper cave, requires emblem - "$west_ridge_present, $pegasus_satchel, bracelet, feather, echoes, hook1, lavajuice", - "$west_ridge_present, $jump3, bracelet, echoes, lavajuice", - "$west_ridge_present, $jump3, bracelet, ages, lavajuice" - ], - "item_count": 1 - }, - ], - "map_locations": [ - { - "map": "map", - "x": 4540, - "y": 423 - }, - { - "map": "map", - "x": 4316, - "y": 199 - } - ] - }, - { - "name": "East Ridge base", - "access_rules": [ - //from Lynna, swimming - "$lynna_village, feather, mermaid", - "$lynna_village, ages, mermaid", - //from the upper cave, requires emblem - "$west_ridge_present, $jump3, bracelet" - ], - "sections": [ - { - "name": "Bombs Chest", - "access_rules": [ - "bombs" - ], - "item_count": 1 - }, - { - "name": "Diamonds Chest", - "access_rules": [ - "hook1","cape" - ], - "item_count": 1 - }, - ], - "map_locations": [ - { - "map": "map", - "x": 4156, - "y": 295 - }, - { - "map": "map", - "x": 4331, - "y": 87 - } - ] - }, - { - "name": "Goron Head Cave", - "access_rules": [ - //from Lynna, swimming - "$lynna_village, feather, mermaid, hook1, bombs", - "$lynna_village, ages, mermaid, hook1, bombs", - //from the upper cave, requires emblem - "$west_ridge_present, $jump3, bracelet, bombs" - ], - "sections": [ - { - "item_count": 1, - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 4460, - "y": 87 - } - ] - }, - { - "name": "Shooting gallery", - "access_rules": [ - //from Lynna, swimming - "$lynna_village, feather, mermaid, currents, hook1, sword, bracelet", - "$lynna_village, ages, mermaid, hook1, sword", - //from Moblin cave - "$west_ridge_present, $jump3, bracelet, currents, hook1, sword" - ], - "sections": [ - { - "name": "100 points", - "item_count": 1 - }, - { - "name": "200 points\n(get bombs out of logic)", - "access_rules": [ - "[bombs]" - ], - "hosted_item": "bombs" - } - ], - "map_locations": [ - { - "map": "map", - "x": 4475, - "y": 151 - } - ] - }, - { - "name": "East Rolling Ridge tree", - "color": "#ff7700", - "access_rules": [ - //from Lynna, swimming - "{$lynna_village, feather, mermaid, currents, hook1}", - "$lynna_village, feather, mermaid, currents, hook1, $use_seeds, bracelet, $seed_tree", - "{$lynna_village, ages, mermaid, hook1}", - "$lynna_village, ages, mermaid, hook1, $use_seeds, $seed_tree", - "{$lynna_village, feather, mermaid, hook1, satchel, galeseeds}", - "$lynna_village, feather, mermaid, hook1, satchel, galeseeds, $use_seeds, $seed_tree", - "{$lynna_village, feather, mermaid, emblem, satchel, galeseeds}", - "$lynna_village, feather, mermaid, emblem, satchel, galeseeds, $use_seeds, $seed_tree", - //from Moblin cave - "{$west_ridge_present, $jump3, bracelet, currents, hook1}", - "$west_ridge_present, $jump3, bracelet, currents, hook1, $use_seeds, $seed_tree", - "{$west_ridge_present, $jump3, bracelet, satchel, galeseeds}", - "$west_ridge_present, $jump3, bracelet, satchel, galeseeds, $use_seeds, $seed_tree" - ], - "sections": [ - { - "access_rules": [], - "chest_unopened_img": "images/items/tree.png", - "chest_opened_img": "images/items/tree_gray.png" - } - ], - "map_locations": [ - { - "map": "map", - "x": 4532, - "y": 336 - } - ] - }, - { - "name": "Enter Mermaid's Cave [Past] (D6)", - "access_rules": [ - //from Lynna, swimming - "d6keypast, $lynna_village, feather, mermaid", - "d6keypast, $lynna_village, ages, mermaid", - //from the upper cave, requires emblem? - "d6keypast, $west_ridge_present, $jump3, bracelet, echoes, flippers" - ], - "sections": [ - { - "chest_unopened_img": "images/bosses/d6.png", - "chest_opened_img": "images/bosses/d6.png" - } - ], - "map_locations": [ - { - "map": "map", - "x": 4331, - "y": 425 - } - ] - } - ] - }, - { - "name": "Zora Village/Zora Seas", - "access_rules": [ - "mermaid, ages, hook1" - ], - "children": [ - { - "name": "Isolated Chest", - "access_rules": [], - "sections": [ - { - "item_count": 1, - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 56, - "y": 1559 - } - ] - }, - { - "name": "Zora Village Tree (Past & Present)", - "access_rules": [ - "{$zoratree}", - "$zoratree, $use_seeds" - ], - "sections": [ - { - "chest_unopened_img": "images/items/tree.png", - "chest_opened_img": "images/items/tree_gray.png" - } - ], - "map_locations": [ - { - "map": "map", - "x": 256, - "y": 1584 - }, - { - "map": "map", - "x": 2596, - "y": 1584 - } - ] - }, - { - "name": "Island Chest in the Sarcophagus", - "access_rules": [ - "bombs, lift2" - ], - "sections": [ - { - "item_count": 1, - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 56, - "y": 1287 - } - ] - }, - { - "name": "Zora Palace (Present)", - "sections": [ - { - "name": "Entrance chest", - "item_count": 1 - }, - { - "name": "King Zora gift for curing him in the past", - "access_rules": [ - // Access to Syrup's Shop in Yoll Graveyard to buy a potion - "$use_seeds, emberseeds, [gravekey], flippers, curezora", - "$use_seeds, emberseeds, [gravekey], $jump3, curezora" - ], - "item_count": 1 - }, - { - "name": "King Zora Permission to enter Jabu", - "access_rules": [ - "$use_seeds, emberseeds, [gravekey], flippers, curefairy, curezora", - "$use_seeds, emberseeds, [gravekey], $jump3, curefairy, curezora" - ], - "hosted_item": "enterjabu", - "item_count": 0 - } - ], - "map_locations": [ - { - "map": "map", - "x": 241, - "y": 1386 - } - ] - }, - { - "name": "Zora Palace (Past)", - "sections": [ - { - "name": "Cure King Zora in the past\n(use magic potion from Maple's shop)", - "access_rules": [ - // Access to Syrup's Shop in Yoll Graveyard to buy a potion - "$use_seeds, emberseeds, [gravekey], flippers, potion", - "$use_seeds, emberseeds, [gravekey], $jump3, potion" - ], - "hosted_item": "curezora" - } - ], - "map_locations": [ - { - "map": "map", - "x": 2581, - "y": 1386 - } - ] - }, - { - "name": "Cure the cursed Fairy", - "color": "#ff7700", - "sections": [ - { - "hosted_item": "curefairy", - "access_rules": [ - "powder" - ] - } - ], - "map_locations": [ - { - "map": "map", - "x": 2924, - "y": 1335 - } - ] - }, - { - "name": "Fairy's coast", - "sections": [ - { - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "map", - "x": 247, - "y": 1207 - } - ] - }, - { - "name": "Library (present)", - "access_rules": [ - "librarykey" - ], - "sections": [ - { - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "map", - "x": 847, - "y": 1308 - } - ] - }, - { - "name": "Library (past)", - "access_rules": [ - "librarykey" - ], - "sections": [ - { - "access_rules": [ - "{}", - "book", - "feather, satchel, pegasusseeds, bombs, book", - "[l_hard], feather, satchel, pegasusseeds, bombs" - ], - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "map", - "x": 3187, - "y": 1308 - } - ] - }, - { - "name": "Zora Seas South", - "access_rules": [ - "curefairy" - ], - "sections": [ - { - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "map", - "x": 887, - "y": 1703 - } - ] - }, - { - "name": "Under Fisher's Island", - "access_rules": [ - "hook2" - ], - "sections": [ - { - "item_count": 1 - } - ], - "map_locations": [ - { - "map": "map", - "x": 3202, - "y": 1630 - } - ] - }, - { - "name": "Jabu-Jabu Area", - "sections": [ - { - "name": "Enter Jabu-Jabu's Belly (D7)", - "access_rules": [ - "enterjabu" - ], - "chest_unopened_img": "images/bosses/d7.png", - "chest_opened_img": "images/bosses/d7.png" - }, - { - "name": "Zora Reward after collecting D7 Essence", - "access_rules": [ - "d7" - ] - } - ], - "map_locations": [ - { - "map": "map", - "x": 56, - "y": 1383 - } - ] - } - ] - }, - { - "name": "Sea of Storms/No Return", - "access_rules": [], - "children": [ - { - "name": "Sea of Storms Underwater Cave", - "access_rules": [ - "$lynna_village, mermaid, scale" - ], - "sections": [ - { - "item_count": 1, - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 3551, - "y": 1620 - } - ] - }, - { - "name": "Pirate Ship Captains Reward", - "access_rules": [ - "$lynna_village, mermaid, scale" - ], - "sections": [ - { - "item_count": 1, - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 3443, - "y": 1581 - } - ] - }, - { - "name": "Sarcophagus Chest", - "access_rules": [ - "$d8_entrance, lift2", - "[l_hard], $d8_entrance_h, lift2" - ], - "sections": [ - { - "item_count": 1, - "access_rules": [] - } - ], - "map_locations": [ - { - "map": "map", - "x": 4475, - "y": 835 - } - ] - }, - { - "name": "Enter Ancient Tomb (D8)", - "access_rules": [ - "$d8_entrance", - "[l_hard], $d8_entrance_h" - ], - "sections": [ - { - "chest_unopened_img": "images/bosses/d8.png", - "chest_opened_img": "images/bosses/d8.png" - } - ], - "map_locations": [ - { - "map": "map", - "x": 4339, - "y": 662 - } - ] - } - ] - } - ] - } -] \ No newline at end of file diff --git a/var_x-items_testing/scripts/autotracking.lua b/var_x-items_testing/scripts/autotracking.lua deleted file mode 100644 index 38cb8a6..0000000 --- a/var_x-items_testing/scripts/autotracking.lua +++ /dev/null @@ -1,23 +0,0 @@ --- Configuration -------------------------------------- -AUTOTRACKER_ENABLE_DEBUG_LOGGING = true and ENABLE_DEBUG_LOG -AUTOTRACKER_ENABLE_DEBUG_LOGGING_AP = true and AUTOTRACKER_ENABLE_DEBUG_LOGGING -AUTOTRACKER_ENABLE_DEBUG_LOGGING_SNES = true and AUTOTRACKER_ENABLE_DEBUG_LOGGING -------------------------------------------------------- -print("") -print("Active Auto-Tracker Configuration") -print("---------------------------------------------------------------------") -print("Enable Item Tracking: ", AUTOTRACKER_ENABLE_ITEM_TRACKING) -print("Enable Location Tracking: ", AUTOTRACKER_ENABLE_LOCATION_TRACKING) -if AUTOTRACKER_ENABLE_DEBUG_LOGGING then - print("Enable Debug Logging: ", AUTOTRACKER_ENABLE_DEBUG_LOGGING) - print("Enable AP Debug Logging: ", AUTOTRACKER_ENABLE_DEBUG_LOGGING_AP) - print("Enable SNES Debug Logging: ", AUTOTRACKER_ENABLE_DEBUG_LOGGING_SNES) -end -print("---------------------------------------------------------------------") -print("") - --- loads the AP autotracking code -ScriptHost:LoadScript("scripts/autotracking/archipelago.lua") --- loads the SNES autotracking code -ScriptHost:LoadScript("scripts/autotracking/snes.lua") - diff --git a/var_x-items_testing/scripts/autotracking/archipelago.lua b/var_x-items_testing/scripts/autotracking/archipelago.lua deleted file mode 100644 index b9c39db..0000000 --- a/var_x-items_testing/scripts/autotracking/archipelago.lua +++ /dev/null @@ -1,180 +0,0 @@ --- this is an example/ default implementation for AP autotracking --- it will use the mappings defined in item_mapping.lua and location_mapping.lua to track items and locations via thier ids --- it will also load the AP slot data in the global SLOT_DATA, keep track of the current index of on_item messages in CUR_INDEX --- addition it will keep track of what items are local items and which one are remote using the globals LOCAL_ITEMS and GLOBAL_ITEMS --- this is useful since remote items will not reset but local items might -ScriptHost:LoadScript("scripts/autotracking/item_mapping.lua") -ScriptHost:LoadScript("scripts/autotracking/location_mapping.lua") - -CUR_INDEX = -1 -SLOT_DATA = nil -LOCAL_ITEMS = {} -GLOBAL_ITEMS = {} - -function onClear(slot_data) - if AUTOTRACKER_ENABLE_DEBUG_LOGGING_AP then - print(string.format("called onClear, slot_data:\n%s", dump_table(slot_data))) - end - SLOT_DATA = slot_data - CUR_INDEX = -1 - -- reset locations - for _, v in pairs(LOCATION_MAPPING) do - if v[1] then - if AUTOTRACKER_ENABLE_DEBUG_LOGGING_AP then - print(string.format("onClear: clearing location %s", v[1])) - end - local obj = Tracker:FindObjectForCode(v[1]) - if obj then - if v[1]:sub(1, 1) == "@" then - obj.AvailableChestCount = obj.ChestCount - else - obj.Active = false - end - elseif AUTOTRACKER_ENABLE_DEBUG_LOGGING_AP then - print(string.format("onClear: could not find object for code %s", v[1])) - end - end - end - -- reset items - for _, v in pairs(ITEM_MAPPING) do - if v[1] and v[2] then - if AUTOTRACKER_ENABLE_DEBUG_LOGGING_AP then - print(string.format("onClear: clearing item %s of type %s", v[1], v[2])) - end - local obj = Tracker:FindObjectForCode(v[1]) - if obj then - if v[2] == "toggle" then - obj.Active = false - elseif v[2] == "progressive" then - obj.CurrentStage = 0 - obj.Active = false - elseif v[2] == "consumable" then - obj.AcquiredCount = 0 - elseif AUTOTRACKER_ENABLE_DEBUG_LOGGING_AP then - print(string.format("onClear: unknown item type %s for code %s", v[2], v[1])) - end - elseif AUTOTRACKER_ENABLE_DEBUG_LOGGING_AP then - print(string.format("onClear: could not find object for code %s", v[1])) - end - end - end - LOCAL_ITEMS = {} - GLOBAL_ITEMS = {} - -- manually run snes interface functions after onClear in case we are already ingame - if PopVersion < "0.20.1" or AutoTracker:GetConnectionState("SNES") == 3 then - -- add snes interface functions here - end -end - --- called when an item gets collected -function onItem(index, item_id, item_name, player_number) - if AUTOTRACKER_ENABLE_DEBUG_LOGGING_AP then - print(string.format("called onItem: %s, %s, %s, %s, %s", index, item_id, item_name, player_number, CUR_INDEX)) - end - if index <= CUR_INDEX then - return - end - local is_local = player_number == Archipelago.PlayerNumber - CUR_INDEX = index; - local v = ITEM_MAPPING[item_id] - if not v then - if AUTOTRACKER_ENABLE_DEBUG_LOGGING_AP then - print(string.format("onItem: could not find item mapping for id %s", item_id)) - end - return - end - if AUTOTRACKER_ENABLE_DEBUG_LOGGING_AP then - print(string.format("onItem: code: %s, type %s", v[1], v[2])) - end - if not v[1] then - return - end - local obj = Tracker:FindObjectForCode(v[1]) - if obj then - if v[2] == "toggle" then - obj.Active = true - elseif v[2] == "progressive" then - if obj.Active then - obj.CurrentStage = obj.CurrentStage + 1 - else - obj.Active = true - end - elseif v[2] == "consumable" then - obj.AcquiredCount = obj.AcquiredCount + obj.Increment - elseif AUTOTRACKER_ENABLE_DEBUG_LOGGING_AP then - print(string.format("onItem: unknown item type %s for code %s", v[2], v[1])) - end - elseif AUTOTRACKER_ENABLE_DEBUG_LOGGING_AP then - print(string.format("onItem: could not find object for code %s", v[1])) - end - -- track local items via snes interface - if is_local then - if LOCAL_ITEMS[v[1]] then - LOCAL_ITEMS[v[1]] = LOCAL_ITEMS[v[1]] + 1 - else - LOCAL_ITEMS[v[1]] = 1 - end - else - if GLOBAL_ITEMS[v[1]] then - GLOBAL_ITEMS[v[1]] = GLOBAL_ITEMS[v[1]] + 1 - else - GLOBAL_ITEMS[v[1]] = 1 - end - end - if AUTOTRACKER_ENABLE_DEBUG_LOGGING_AP then - print(string.format("local items: %s", dump_table(LOCAL_ITEMS))) - print(string.format("global items: %s", dump_table(GLOBAL_ITEMS))) - end - if PopVersion < "0.20.1" or AutoTracker:GetConnectionState("SNES") == 3 then - -- add snes interface functions here for local item tracking - end -end - ---called when a location gets cleared -function onLocation(location_id, location_name) - if AUTOTRACKER_ENABLE_DEBUG_LOGGING_AP then - print(string.format("called onLocation: %s, %s", location_id, location_name)) - end - local v = LOCATION_MAPPING[location_id] - if not v and AUTOTRACKER_ENABLE_DEBUG_LOGGING_AP then - print(string.format("onLocation: could not find location mapping for id %s", location_id)) - end - if not v[1] then - return - end - local obj = Tracker:FindObjectForCode(v[1]) - if obj then - if v[1]:sub(1, 1) == "@" then - obj.AvailableChestCount = obj.AvailableChestCount - 1 - else - obj.Active = true - end - elseif AUTOTRACKER_ENABLE_DEBUG_LOGGING_AP then - print(string.format("onLocation: could not find object for code %s", v[1])) - end -end - --- called when a locations is scouted -function onScout(location_id, location_name, item_id, item_name, item_player) - if AUTOTRACKER_ENABLE_DEBUG_LOGGING_AP then - print(string.format("called onScout: %s, %s, %s, %s, %s", location_id, location_name, item_id, item_name, - item_player)) - end - -- not implemented yet :( -end - --- called when a bounce message is received -function onBounce(json) - if AUTOTRACKER_ENABLE_DEBUG_LOGGING_AP then - print(string.format("called onBounce: %s", dump_table(json))) - end - -- your code goes here -end - --- add AP callbacks --- un-/comment as needed -Archipelago:AddClearHandler("clear handler", onClear) -Archipelago:AddItemHandler("item handler", onItem) -Archipelago:AddLocationHandler("location handler", onLocation) --- Archipelago:AddScoutHandler("scout handler", onScout) --- Archipelago:AddBouncedHandler("bounce handler", onBounce) diff --git a/var_x-items_testing/scripts/autotracking/autotracking.md b/var_x-items_testing/scripts/autotracking/autotracking.md deleted file mode 100644 index a169683..0000000 --- a/var_x-items_testing/scripts/autotracking/autotracking.md +++ /dev/null @@ -1,7 +0,0 @@ -# Autotracking - -PopTracker implements multiple autotracking interfaces (currently SNES, AP and UAT). - -This example currently shows off the SNES and AP interfaces. - -For more info check here: https://github.com/black-sliver/PopTracker/blob/master/doc/AUTOTRACKING.md#poptracker-auto-tracking \ No newline at end of file diff --git a/var_x-items_testing/scripts/autotracking/item_mapping.lua b/var_x-items_testing/scripts/autotracking/item_mapping.lua deleted file mode 100644 index d0ee93c..0000000 --- a/var_x-items_testing/scripts/autotracking/item_mapping.lua +++ /dev/null @@ -1,9 +0,0 @@ --- use this file to map the AP item ids to your items --- first value is the code of the target item and the second is the item type (currently only "toggle", "progressive" and "consumable" but feel free to expand for your needs!) --- here are the SM items as an example: https://github.com/Cyb3RGER/sm_ap_tracker/blob/main/scripts/autotracking/item_mapping.lua -ITEM_MAPPING = { - [00000] = {"toggle", "toggle"}, - [00001] = {"progressive", "progressive"}, - [00002] = {"consumable", "consumable"}, - [00003] = {"progressive_toggle", "progressive"} -- progressive_toggle should work with the progressive type but might need additional code to work for your needs -} \ No newline at end of file diff --git a/var_x-items_testing/scripts/autotracking/location_mapping.lua b/var_x-items_testing/scripts/autotracking/location_mapping.lua deleted file mode 100644 index f550d8e..0000000 --- a/var_x-items_testing/scripts/autotracking/location_mapping.lua +++ /dev/null @@ -1,8 +0,0 @@ --- use this file to map the AP location ids to your locations --- to reference a location in Pop use @ in the beginning and then path to the section (more info: https://github.com/black-sliver/PopTracker/blob/master/doc/PACKS.md#locations) --- to reference an item use it's code --- here are the SM locations as an example: https://github.com/Cyb3RGER/sm_ap_tracker/blob/main/scripts/autotracking/location_mapping.lua -LOCATION_MAPPING = { - [00001] = {"@Example Parent/Example Location 1/Example Section 1"}, - [00002] = {"toggle"}, -} diff --git a/var_x-items_testing/scripts/custom_items/class.lua b/var_x-items_testing/scripts/custom_items/class.lua deleted file mode 100644 index 1b1c992..0000000 --- a/var_x-items_testing/scripts/custom_items/class.lua +++ /dev/null @@ -1,113 +0,0 @@ --- This file is sourced from https://github.com/jonstoler/class.lua, and is licensed freely for any purpose, given thanks. Thank you. --- License from https://github.com/jonstoler/class.lua/blob/master/LICENSE.md as of retrieving this source on 4/8/2019 - --- By attaching this document to the given files (the “work”), you, the licensee, are hereby granted free usage in both personal and --- commerical environments, without any obligation of attribution or payment (monetary or otherwise). The licensee is free to use, copy, --- modify, publish, distribute, sublicence, and/or merchandise the work, subject to the licensee inflecting a positive message unto someone. --- This includes (but is not limited to): smiling, being nice, saying “thank you”, assisting other persons, or any similar actions percolating the given concept. - --- The above copyright notice serves as a permissions notice also, and may optionally be included in copies or portions of the work. - --- The work is provided “as is”, without warranty or support, express or implied. The author(s) are not liable for any damages, misuse, or other claim, whether from or as a consequence of usage of the given work. - -Class = {} - --- default (empty) constructor -function Class:init(...) end - --- create a subclass -function Class:extend(obj) - local obj = obj or {} - - local function copyTable(table, destination) - local table = table or {} - local result = destination or {} - - for k, v in pairs(table) do - if not result[k] then - if type(v) == "table" and k ~= "__index" and k ~= "__newindex" then - result[k] = copyTable(v) - else - result[k] = v - end - end - end - - return result - end - - copyTable(self, obj) - - obj._ = obj._ or {} - - local mt = {} - - -- create new objects directly, like o = Object() - mt.__call = function(self, ...) - return self:new(...) - end - - -- allow for getters and setters - mt.__index = function(table, key) - local val = rawget(table._, key) - if val and type(val) == "table" and (val.get ~= nil or val.value ~= nil) then - if val.get then - if type(val.get) == "function" then - return val.get(table, val.value) - else - return val.get - end - elseif val.value then - return val.value - end - else - return val - end - end - - mt.__newindex = function(table, key, value) - local val = rawget(table._, key) - if val and type(val) == "table" and ((val.set ~= nil and val._ == nil) or val.value ~= nil) then - local v = value - if val.set then - if type(val.set) == "function" then - v = val.set(table, value, val.value) - else - v = val.set - end - end - val.value = v - if val and val.afterSet then val.afterSet(table, v) end - else - table._[key] = value - end - end - - setmetatable(obj, mt) - - return obj -end - --- set properties outside the constructor or other functions -function Class:set(prop, value) - if not value and type(prop) == "table" then - for k, v in pairs(prop) do - rawset(self._, k, v) - end - else - rawset(self._, prop, value) - end -end - --- create an instance of an object with constructor parameters -function Class:new(...) - local obj = self:extend({}) - if obj.init then obj:init(...) end - return obj -end - - -function class(attr) - attr = attr or {} - return Class:extend(attr) -end \ No newline at end of file diff --git a/var_x-items_testing/scripts/custom_items/custom_items.md b/var_x-items_testing/scripts/custom_items/custom_items.md deleted file mode 100644 index 65c0fef..0000000 --- a/var_x-items_testing/scripts/custom_items/custom_items.md +++ /dev/null @@ -1,13 +0,0 @@ -# Custom items via Lua API - -This custom item is using an example from the [Evermizer tracker pack](https://github.com/Cyb3RGER/evermizer-tracker-package) - -It creates and extend version of a ``progressive_toggle`` item - -``class.lua`` allows you to create "classes" in lua - -``progressiveTogglePlusWrapper.lua`` creates the wrapper class that has all need funtion to communicate with PopTracker - -``progressiveTogglePlus.lua`` create the actuall class - -more info soon \ No newline at end of file diff --git a/var_x-items_testing/scripts/custom_items/progressiveTogglePlus.lua b/var_x-items_testing/scripts/custom_items/progressiveTogglePlus.lua deleted file mode 100644 index 7099770..0000000 --- a/var_x-items_testing/scripts/custom_items/progressiveTogglePlus.lua +++ /dev/null @@ -1,258 +0,0 @@ -ProgressiveTogglePlus = class(CustomItemProgressiveTogglePlus) - ---[[ - states : table - { - [state : integer] = --0-based index - { - image : string --path to the image - codes : string --codes for the state - disabled : boolean --disabled - } - ... - } - -- states for the progression - - loop : boolean - -- loop through progression states - - disableToggle : boolean - -- disables the toggle part of the item (right click will decrease the progression state instead; if disableProgessive is enabled as well the item will act as a static) - - disableProgessive : boolean - -- disables the progression part of the item (left and right click will toggle instead; if disableToggle is enabled as well the item will act as a static) - - initialStage : integer - -- initial progression state - - initialActive : boolean - -- initial active state - - toggleChildren : list LuaItem - -- also toggles these Items when this item is toggled and enableChildToggle is true (only via :setActive) - - enableChildToggle : boolean - -- enables toggling toggleChildren (only via :setActive) - - progressionChildren : table - { - children : list LuaItem with a continuous, numeric index - states : table - { - [parent_state] = { - [child_index] = child_state - ... - } - ... - } - } - -- set the progression of the progressionChildren.children to the state defined in progressionChildren.states - when this item is progressed to a state equal to a index in progressionChildren.state and enableChildToggle is true (only via :setState) - - enableChildProgression - -- enables progression of progressionChildren (only via :setState) -]] - -function ProgressiveTogglePlus:init(name, code, states, loop, disableToggle, disableProgessive, initialStage, initialActive, toggleChildren, enableChildToggle, - progressionChildren, enableChildProgression) - - self:createItem(name) - self.code = code - self.active = false - self.states = states - self.state = 1 - self.loop = loop - self.disableToggle = disableToggle - self.disableProgessive = disableProgessive - self.toggleChildren = toggleChildren - self.enableChildToggle = enableChildToggle - self.progressionChildren = progressionChildren - self.enableChildProgression = enableChildProgression - - self:getImages() - self:setState(initialStage) - self:setActive(initialActive) - self.ItemInstance.PotentialIcon = self.images[initialStage] -end - -function ProgressiveTogglePlus:getImages() - self.images = {} - for i = 0, #self.states do - self.images[i] = ImageReference:FromPackRelativePath(self.states[i].image) - end -end - -function ProgressiveTogglePlus:getState() - return self.state -end - -function ProgressiveTogglePlus:setState(state) - self:propertyChanged("state",state) - if self.enableChildProgression then - if self.progressionChildren.states[state] then - for k,v in pairs(self.progressionChildren.states[state]) do - if self.progressionChildren.children[k] then - self.progressionChildren.children[k]:setState(v) - end - end - end - end -end - -function ProgressiveTogglePlus:advanceState() - local start = self.state - local target = start - repeat - if target == #self.states then - if self.loop then - target = 0 - end - else - target = self.state + 1 - end - until start == target or not self.states[target].disabled - if target then - self:setState(target) - end -end - -function ProgressiveTogglePlus:decreaseState() - local start = self.state - local target = start - repeat - if target == 0 then - if self.loop then - target = #self.states - end - else - target = self.state - 1 - end - until start == target or not self.states[target].disabled - if target then - self:setState(target) - end -end - -function ProgressiveTogglePlus:setActive(active) - self:setProperty("active",active) - if self.enableChildToggle then - for _,v in pairs(self.toggleChildren) do - v:setActive(active) - end - end -end - -function ProgressiveTogglePlus:getActive() - return self.active -end - -function ProgressiveTogglePlus:updateIcon() - self.ItemInstance.Icon = self.images[self.state] - if PopVersion and PopVersion > "0.1.0" then - if self.active then - self.ItemInstance.IconMods = "" - else - self.ItemInstance.IconMods = "@disabled" - end - end -end - -function ProgressiveTogglePlus:onLeftClick() - if self.disableToggle and self.disableProgessive then return end - if self.disableProgessive then - self:setActive(not self.active) - else - self:advanceState() - end -end - -function ProgressiveTogglePlus:onRightClick() - if self.disableToggle and self.disableProgessive then return end - if self.disableToggle then - self:decreaseState() - else - self:setActive(not self.active) - end -end - -function ProgressiveTogglePlus:canProvideCode(code) - if code == self.code then - return true - else - for i = 0, #self.states do - for code2 in string.gmatch(self.states[i].codes, "[^,]+") do - if code == code2 then - return true - end - end - end - return false - end -end - -function ProgressiveTogglePlus:providesCode(code) - if code == self.code then - return self.state - end - for i = 0, #self.states do - for code2 in string.gmatch(self.states[i].codes, "[^,]+") do - if code == code2 then - return self.state - end - end - end - return 0 -end - -function ProgressiveTogglePlus:advanceToCode(code) -end - -function ProgressiveTogglePlus:save() - local saveData = {} - saveData["state"] = self:getState() - saveData["active"] = self.active - saveData["disableToggle"] = self.disableToggle - saveData["disableProgessive"] = self.disableProgessive - return saveData -end - -function ProgressiveTogglePlus:load(data) - if data["state"] ~= nil then - self:setProperty("state",data["state"]) - end - if data["active"] ~= nil then - self:setProperty("active",data["active"]) - end - if data["disableToggle"] ~= nil then - self:setProperty("disableToggle",data["disableToggle"]) - end - if data["disableProgessive"] ~= nil then - self:setProperty("disableProgessive",data["disableProgessive"]) - end - return true -end - -function ProgressiveTogglePlus:propertyChanged(key, value) - print(string.format("ProgressiveTogglePlus:propertyChanged key %s with value %s",key,value)) - if key == "state" then - self.state = value - end - if key == "active" then - self.active = value - end - if key == "disableToggle" then - self.disableToggle = value - end - if key == "disableProgessive" then - self.disableProgessive = value - end - if key == "enableChildToggle" then - self.enableChildToggle = value - end - if key == "enableChildProgression" then - self.enableChildProgression = value - end - if key == "state" or key == "active" then - self:updateIcon() - end -end diff --git a/var_x-items_testing/scripts/custom_items/progressiveTogglePlusWrapper.lua b/var_x-items_testing/scripts/custom_items/progressiveTogglePlusWrapper.lua deleted file mode 100644 index 524d6fe..0000000 --- a/var_x-items_testing/scripts/custom_items/progressiveTogglePlusWrapper.lua +++ /dev/null @@ -1,102 +0,0 @@ -CustomItemProgressiveTogglePlus = class() - -function CustomItemProgressiveTogglePlus:init() -end - -function CustomItemProgressiveTogglePlus:createItem(name) - local function invokeLeftClick(item) - item.ItemState:onLeftClick() - end - local function invokeRightClick(item) - item.ItemState:onRightClick() - end - local function invokeCanProvideCode(item, code) - return item.ItemState:canProvideCode(code) - end - local function invokeProvidesCode(item, code) - return item.ItemState:providesCode(code) - end - local function invokeAdvanceToCode(item, code) - return item.ItemState:advanceToCode(code) - end - local function invokeSave(item) - return item.ItemState:save() - end - local function invokeLoad(item, data) - return item.ItemState:load(data) - end - local function invokePropertyChanged(item, key, value) - return item.ItemState:propertyChanged(key, value) - end - - self.ItemInstance = ScriptHost:CreateLuaItem() - self.ItemInstance.Name = name - self.ItemInstance.ItemState = self - self.ItemInstance.OnLeftClickFunc = invokeLeftClick - self.ItemInstance.OnRightClickFunc = invokeRightClick - self.ItemInstance.CanProvideCodeFunc = invokeCanProvideCode - self.ItemInstance.ProvidesCodeFunc = invokeProvidesCode - self.ItemInstance.AdvanceToCodeFunc = invokeAdvanceToCode - self.ItemInstance.SaveFunc = invokeSave - self.ItemInstance.LoadFunc = invokeLoad - self.ItemInstance.PropertyChangedFunc = invokePropertyChanged -end - --- Called when your item is left-clicked -function CustomItemProgressiveTogglePlus:onLeftClick() -end - --- Called when your item is right-clicked -function CustomItemProgressiveTogglePlus:onRightClick() -end - --- Called to determine if your item can ever provide a given code --- This is used (for example) when placing items on item grids. --- --- Returns true or false -function CustomItemProgressiveTogglePlus:canProvideCode(code) - return false -end - --- Called to determine if your item currently provides a given code, --- and if so, the count provided. --- --- Returns an integer count >= 0 -function CustomItemProgressiveTogglePlus:providesCode(code) - return 0 -end - --- Called to request that your item advance to the given code. -function CustomItemProgressiveTogglePlus:advanceToCode(code) -end - --- Called when the user is saving progress. --- --- Return a table of key-value pairs, for simple value types (bool, integer, string, etc.) -function CustomItemProgressiveTogglePlus:save() - return { } -end - --- Called when the user is loading progress. Data is a table containing your saved data. --- --- Return true for success, false for failure (will fail the load) -function CustomItemProgressiveTogglePlus:load(data) - return true -end - --- Call to set a transaction-backed property. Properties set this way will support undo. --- --- Returns true if the value was actually modified. DO NOT OVERRIDE -function CustomItemProgressiveTogglePlus:setProperty(key, value) - return self.ItemInstance:Set(key, value) -end - --- Call to read a transaction-backed property. DO NOT OVERRIDE -function CustomItemProgressiveTogglePlus:getProperty(key) - return self.ItemInstance:Get(key) -end - --- Called when a transaction-backed property's value has changed. This will also happen --- as part of setting a transaction-backed property. -function CustomItemProgressiveTogglePlus:propertyChanged(key, value) -end \ No newline at end of file diff --git a/var_x-items_testing/scripts/init.lua b/var_x-items_testing/scripts/init.lua deleted file mode 100644 index 232e5c4..0000000 --- a/var_x-items_testing/scripts/init.lua +++ /dev/null @@ -1,50 +0,0 @@ --- entry point for all lua code of the pack --- more info on the lua API: https://github.com/black-sliver/PopTracker/blob/master/doc/PACKS.md#lua-interface -ENABLE_DEBUG_LOG = true --- get current variant -local variant = Tracker.ActiveVariantUID --- check variant info -IS_ITEMS_ONLY = variant:find("itemsonly") - -print("-- Example Tracker --") -print("Loaded variant: ", variant) -if ENABLE_DEBUG_LOG then - print("Debug logging is enabled!") -end - --- Utility Script for helper functions etc. -ScriptHost:LoadScript("scripts/utils.lua") - --- Logic -ScriptHost:LoadScript("scripts/logic/logic.lua") -ScriptHost:LoadScript("scripts/logic/dungeons.lua") -ScriptHost:LoadScript("scripts/logic/dungeons_hard.lua") -ScriptHost:LoadScript("scripts/logic/labrynna.lua") - --- Custom Items ---ScriptHost:LoadScript("scripts/custom_items/class.lua") ---ScriptHost:LoadScript("scripts/custom_items/progressiveTogglePlus.lua") ---ScriptHost:LoadScript("scripts/custom_items/progressiveTogglePlusWrapper.lua") - --- Items -Tracker:AddItems("items/items.json") - -if not IS_ITEMS_ONLY then -- <--- use variant info to optimize loading - -- Maps - Tracker:AddMaps("maps/maps.json") - -- Locations - Tracker:AddLocations("locations/overworld.json") - Tracker:AddLocations("locations/dungeons.json") - Tracker:AddLocations("locations/dungeons_shuffle.json") -end - --- Layout -Tracker:AddLayouts("layouts/items.json") -Tracker:AddLayouts("layouts/tracker.json") -Tracker:AddLayouts("layouts/broadcast.json") -Tracker:AddLayouts("layouts/layouts.json") - --- AutoTracking for Poptracker -if PopVersion and PopVersion >= "0.18.0" then - ScriptHost:LoadScript("scripts/autotracking.lua") -end diff --git a/var_x-items_testing/scripts/logic/dungeons.lua b/var_x-items_testing/scripts/logic/dungeons.lua deleted file mode 100644 index 4a0e287..0000000 --- a/var_x-items_testing/scripts/logic/dungeons.lua +++ /dev/null @@ -1,591 +0,0 @@ ----@diagnostic disable: lowercase-global ----[[ -function has(item, amount) - local count = Tracker:ProviderCountForCode(item) - amount = tonumber(amount) - if not amount then - return count > 0 - else - return count >= amount - end -end - --- maku path -function maku_tree() - return rescue_nayru() or (maku_basement() and has("pathkey") and k_normal()) -end - -function maku_basement() - return (rescue_nayru() or (lynna_village() and shovel())) -end - --- d1 -function d1_east_terrace() - return k_switchhook() -end - -function d1_crystal_room() - return d1_east_terrace() and ember() and crystal() -end - -function d1_wide_room() - return d1_east_terrace() and has("d1sk",2) -end - -function d1_boss() - return d1_wide_room() and bush() and has("d1bk") and k_pumpkinhead() -end - -function d1_u_room() - return pot() or (d1_wide_room() and bush() and k_giantghini() and has("d1sk",3)) -end - -function d1_basement() - return d1_u_room() and ember() -end - --- d2 -function d2_bombed_terrace() - return k_spikedbeetle() and bombs() -end - -function d2_moblin_drop() - return k_spikedbeetle() and k_normal() -end - -function d2_enter_swoop() - return (k_spikedbeetle() and feather()) or has("d2sk",2) -end - -function d2_basement() - return d2_enter_swoop() and k_swoop() -end - -function d2_thwomp_shelf() - return d2_basement() and feather() -end - -function d2_basement_drop() - return d2_basement() and feather() -end - -function d2_basement_chest() - return d2_basement() and feather() and bombs() and lever_minecartabove() and k_normal() -end - -function d2_moblin_platform() - return d2_basement() and feather() and has("d2sk",3) -end - -function d2_statue_puzzle() - return d2_moblin_platform() and (lift1() or cane()) -end - -function d2_rope_room() - return k_switchhook() and has("d2sk",4) -end - -function d2_ladder_chest() - return bombs() and k_switchhook() and has("d2sk",4) -end - -function d2_color_room() - return d2_statue_puzzle() and has("d2sk",5) -end - -function d2_boss() - return d2_color_room() and has("d2bk") and bombs() -end - --- d3 -function d3_pols_voice() - return bombs() or (d3_six_blocK_drop() and bush() and k_pols_voice_h()) -end - -function d3_1f_spinner() - return k_moldorm() or lift1() -end - -function d3_S_crystal() - return d3_1f_spinner() -end - -function d3_four_crystals_owl() - return d3_1f_spinner() and mystery() -end - -function d3_E_crystal() - return d3_1f_spinner() and bombs() -end - -function d3_statue_drop() - return d3_E_crystal() -end - -function d3_seeds() - return has("d3sk", 1) and seed_item() and (sword() or foolsore() or bombs()) -end - -function d3_W_crystal() - return has("d3sk", 1) and k_pols_voice -end - -function d3_N_crystal() - return has("d3sk", 1) and (any_shooter() or any_hyper_slingshot() or boomerang()) -end - -function d3_stone_soldiers_owl() - return has("d3sk", 1) and mystery() -end - -function d3_armos_drop() - return has("d3sk", 1) and (bombs() or cane() or magicboom() or (scent() and (shooter() or slingshot()))) -end - -function d3_six_blocK_drop() - return - d3_W_crystal() and (bombs() or switch() or (scent() and (shooter() or slingshot())) or (cane() and lift1())) and - (bombs() or any_shooter() or any_hyper_slingshot() or magicboom()) -end - -function d3_conveyor_belt_room() - return d3_six_blocK_drop() and (bombs() or cane() or magicboom() or (scent() and (shooter() or slingshot()))) -end - -function d3_break_crystal_switch() - return - sword() or switch() or boomerang() or ember_satchel() or scent_satchel() or mystery_satchel() or seed_range() or - punch_object() or foolsore() -end - -function d3_B1F_spinner() - return d3_S_crystal() and d3_E_crystal() and d3_N_crystal() and d3_W_crystal() and d3_break_crystal_switch() -end - -function d3_torch_chest() - return d3_B1F_spinner() and ember() and (shooter() or slingshot2()) -end - -function d3_traverse1() - return any_shooter() or jump3() or magicboom() -end - -function d3_traverse2() - return any_shooter() or any_hyper_slingshot() or cape() or boomerang() -end - -function d3_bridge_chest() - return has("d3sk", 1) and (d3_traverse1() or (d3_post_subterror() and has("d3sk", 4)) and jump3()) -end - -function d3_B1F_east() - return d3_B1F_spinner() and k_subterror() and - (d3_W_crystal() or (has("d3sk", 4) and d3_traverse1() and (d3_traverse2() or jump3()))) and - (magicboom() or any_shooter()) -end - -function d3_post_subterror() - return d3_boss_door() or (d3_B1F_spinner() and k_subterror()) or (d3_traverse1() and has("d3sk", 4) and jump3()) -end - -function d3_boss_door() - return (((d3_B1F_spinner() and k_subterror()) or (d3_traverse1() and has("d3sk", 4) and jump3())) and jump3() and - d3_traverse2()) or (has("d3sk", 4) and d3_traverse1() and d3_traverse2()) -end - -function d3_moldorm_drop() - return k_moldorm() and d3_post_subterror() -end - -function d3_boss() - return d3_boss_door() and has("d3bk") and (ember_shooter() or scent_shooter() or ember_satchel()) -end - -function d3_bush_beetle_room() - return k_switchhook() and has("d3sk", 3) -end - -function d3_mimic_room() - return d3_bush_beetle_room() and k_normal() and has("d3sk", 4) -end - --- d4 -function d4_first_chest() - return (k_stalfos() or push_enemy()) and (feather() or hook1()) -end - -function d4_cube_chest() - return d4_first_chest() and feather() -end - -function d4_minecartA() - return feather() and (has("d4sk",2)) -end - -function d4_first_crystal_switch() - return d4_minecartA() and (shooter() or magicboom()) -end - -function d4_minecart_chest() - return d4_minecartA() and lever() -end - -function d4_minecartB() - return d4_minecartA() and lever_minecart() and lift1() and k_stalfos() and has("d4sk",3) -end - -function d4_second_crystal_switch() - return d4_minecartB() and (shooter() or magicboom() or (cape() and switch())) -end - -function d4_minecartC() - return d4_minecartB() and has("d4sk",4) -end - -function d4_color_tile_drop() - return d4_minecartC() and (sword() or foolsore() or rodofseasons() or seed_range()) -end - -function d4_minecartD() - return d4_color_tile_drop() and has("d4sk",5) -end - -function d4_pre_miniboss() - return d4_minecartD() or (d4_post_miniboss() and k_armos_warrior()) -end - -function d4_post_miniboss() - return (cape() and pegasus_satchel()) or (d4_minecartD() and k_armos_warrior) -end - -function d4_small_floor_puzzle() - return d4_post_miniboss() and bombs() -end - -function d4_large_floor_puzzle() - return d4_pre_miniboss() and feather() and hook1() -end - -function d4_boss() - return d4_large_floor_puzzle() and has("d4bk") and hook1() and (sword() or foolsore() or boomerang() or punch_enemy()) -end - -function d4_lava_pot_chest() - return d4_large_floor_puzzle() and lift1() and hook1() and has("d4sk",5) -end - --- d5 -function d5_switchA() - return k_normal() and switch() -end - -function d5_darkroom() - return d5_switchA() and switch() and ((cape() and pegasus_satchel()) or cane() or hook1()) -end - -function d5_likelike() - return d5_switchA() and switch_far() -end - -function d5_eyes() - return d5_switchA() and (any_shooter() or any_hyper_slingshot()) -end - -function d5_2statue() - return d5_switchA() and pot() and cane() and feather() and (any_shooter() or any_hyper_slingshot() or boomerang()) -end - -function d5_boss() - return d5_switchA() and has("d5bk") and cane() and (sword() or foolsore()) -end - -function d5_crossroads() - return k_normal() and feather() and lift1() and has("d5sk",2) and (cane() or (pegasus_satchel() and cape())) -end - -function d5_3statue() - return d5_switchA() and cane() and has("d5sk",5) -end - -function d5_6statue() - return d5_switchA() and ember_shooter() and feather() and has("d5sk",5) -end - -function d5_redpeg() - return d5_crossroads() and switch_far() and has("d5sk", 5) -end - -function d5_owl_puzzle() - return d5_redpeg() and cane() -end - --- d6 past -function d6past_colorroom() - return feather() and k_switchhook() -end - -function d6past_wizzrobe_chest() - return bombs() and k_wizzrobe() -end - -function d6past_pool_chest() - return bombs() and ember() and flippers() -end - -function d6_openwall() - return bombs() and ember() and (shooter() or slingshot2()) -end - -function d6past_stalfos() - return ember() and (k_normal_far() or scent_satchel() or feather()) -end - -function d6past_rope_chest() - return d6_openwall() and mermaid() and (k_underwater() or hook1()) -end - -function d6past_spinner() - return cane() and lift1() and feather() and has("d6_1sk", 1) and bombs() -end - -function d6past_boss() - return d6past_spinner() and has("d6bk") and mermaid() and k_octogon() and has("d6_1sk",2) and (cape() or (has("d6_1sk",3) and (any_shooter() or magicboom()))) -end - --- d6 present -function d6present_diamond_chest() - return hook1() -end - -function d6present_orb_room() - return flippers() or jump3() or hook1() -end - -function d6present_hit_orb() - return d6present_orb_room() and (any_shooter() or boomerang()) -end - -function d6present_rope_room() - return d6present_orb_room() and - (jump3() or (d6present_hit_orb() and (any_shooter() or any_slingshot() or boomerang() or bombs()))) -end - -function d6present_rope_chest() - return d6present_rope_room() and scent_satchel() -end - -function d6present_hand_room() - return d6present_orb_room() and (cape() or (d6present_hit_orb() and bombs())) -end - -function d6present_cube_chest() - return d6present_hand_room() and bombs() and hook1() and feather() -end - -function d6present_spinner_chest() - return d6past_spinner() and d6present_hand_room() and (feather() or hook1()) -end - -function d6present_beamos_chest() - return d6_openwall() and feather() and (flippers() or (hook1() and has("d6_2sk",2))) -end - -function d6present_rng_chest() - return d6present_beamos_chest() and lift1() and (sword() or foolsore() or cane() or hook1() or punch_enemy()) and - has("d6_2sk", 3) -end - -function d6present_channel_chest() - return d6_openwall() and hook1() and has("d6_2sk",3) -end - -function d6present_vire_chest() - return d6present_spinner_chest() and has("d6_2sk",3) and (sword() or foolsore() or expert()) and hook1() -end - --- d7 -function d7_crab() - return k_underwater() or (draind7() and k_normal()) -end - -function d7_diamondpuzzle() - return hook1() -end - -function d7_flower() - return hook2() and feather() -end - -function d7_stairway() - return hook2() or (draind7() and cane() and hook1()) -end - -function d7_right_wing() - return k_moldorm() and (d7_stairway() or (draind7() and cane() and cape() and pegasus_satchel())) -end - -function draind7() - return floodd7() or has("d7sk",3) -end - -function floodd7() - return hook2() and has("d7sk", 4) -end - -function d7_boss() - return has("d7bk") and floodd7() -end - -function d7_hallway() - return floodd7() and has("d7sk", 5) -end - -function d7_miniboss() - return d7_stairway() and feather() and (sword() or foolsore() or boomerang() or (scent() and shoot_seeds())) and has("d7sk", 7) -end - -function d7_pot_island() - return draind7() and hook1() and has("d7sk", 7) -end - --- d8 -function d8_first() - return bombs() and (k_switchhook() or rodofseasons() or boomerang() or (pegasus() and shoot_seeds())) -end - -function d8_ghini() - return d8_first() and has("d8sk", 1) and hook1() and cane() and (shooter() or slingshot2()) and ember() -end - -function d8_bluepeg() - return d8_ghini() and has("d8sk", 2) -end - -function d8_maze() - return d8_bluepeg() and feather() and (sword() or foolsore()) and has("d8sk",4) -end - -function d8_neslate() - return d8_maze() and feather() and flippers() and ember() -end - -function d8_tileroom() - return d8_maze() and lift2() and feather() -end - -function d8_boss() - return has("d8bk") and d8_tileroom() and has("d8slate",4) -end - --- dungeon full clear functions -function d1clear() - return use_seeds() and ember() and lift1() and k_ghini() and k_pumpkinhead() -end -function d1clear_h() - return use_seeds() and ember() and lift1() and k_ghini_hard() and k_pumpkinhead_h() -end - -function d2clear() - return has("feather") and has("bombs") and (has("bracelet") or has("cane")) and lever() and k_normal() and - k_beetle() and k_swoop() -end -function d2clear_h() - return has("feather") and has("bombs") and (has("bracelet") or has("cane") or (has("shield1") and has("hook1"))) and - lever() and k_normal() and kill_beetle_hard() and kill_swoop_h() -end - -function d3clear() - return has("bombs") and has("shooter") and has("emberseeds") and - -- not actually needed in all cases but if there's a key at Shadow Hag it's very much needed - (Tracker:ProviderCountForCode("d3sk") >= 4 or max_jump() >= 2) and kill_moldorm() and kill_armos() and - kill_subterror() -end -function d3clear_h() - return has("bombs") and has("shooter") and (has("emberseeds") or has("mysteryseeds")) and - -- not actually needed in all cases but if there's a key at Shadow Hag it's very much needed - (Tracker:ProviderCountForCode("d3sk") >= 4 or has("feather")) and kill_moldorm_hard() and - kill_armos_hard() and kill_subterror_hard() -end - -function d4clear() - return has("feather") and has("bracelet") and has("hook1") and has("bombs") and has("shooter") and - (has("sword1") or has("emberseeds") or has("scentseeds") or has("galeseeds")) and kill_normal() and - (has("sword1") or has("boomerang")) -end -function d4clear_h() - return has("feather") and has("bracelet") and has("hook1") and has("bombs") and - (has("shooter") and (has("emberseeds") or has("scentseeds") or has("galeseeds")) or - (has("boomerang") and ((has("satchel") and has("scentseeds")) or has("sword1")))) and kill_normal() and - (has("sword1") or has("boomerang")) -end - -function d5clear() - return has("cane") and has("hook1") and has("sword1") and has("feather") and has("bracelet") and has("shooter") and - has("emberseeds") and Tracker:ProviderCountForCode("d5sk") >= 5 -end -function d5clear_h() - -- Should be the same as above, keeping it separate in case of future changes - return has("cane") and has("hook1") and has("sword1") and has("feather") and has("bracelet") and has("shooter") and - has("emberseeds") and Tracker:ProviderCountForCode("d5sk") >= 5 -end - -function d6clear_present() - return has("hook1") and has("bombs") and has("feather") and has("d6key") and openD6wall() and has("bracelet") and - has("shooter") and has("emberseeds") and has("satchel") and has("scentseeds") and - (has("sword1") or has("ring_expert")) and Tracker:ProviderCountForCode("d6sk_present") >= 3 -end -function d6clear_present_h() - return has("hook1") and has("bombs") and has("d6key") and openD6wall() and has("bracelet") and has("shooter") and - has("emberseeds") and has("satchel") and has("scentseeds") and - Tracker:ProviderCountForCode("d6sk_present") >= 3 -end -function d6clear_present_shuffle() - return - has("hook1") and has("bombs") and has("feather") and d6_past_shuffle() and openD6wall() and has("bracelet") and - has("shooter") and has("emberseeds") and has("satchel") and has("scentseeds") and - (has("sword1") or has("ring_expert")) and Tracker:ProviderCountForCode("d6sk_present") >= 3 -end -function d6clear_present_shuffle_h() - return has("hook1") and has("bombs") and d6_past_shuffle_hard() and openD6wall() and has("bracelet") and - has("shooter") and has("emberseeds") and has("satchel") and has("scentseeds") and - Tracker:ProviderCountForCode("d6sk_present") >= 3 -end - -function d6clear() - return has("d6keyold") and d6clear_present() and has("cane") and has("bombs") and has("shooter") and - has("emberseeds") and has("mermaidsuit") and has("hook1") and has("feather") -end -function d6clear_h() - return has("d6keyold") and d6clear_present_hard() and has("cane") and has("bombs") and has("shooter") and - has("emberseeds") and has("mermaidsuit") and has("hook1") and has("feather") -end -function d6clear_shuffle() - return d6_present_shuffle() and d6clear_present_shuffle() and has("cane") and has("bombs") and has("shooter") and - has("emberseeds") and has("mermaidsuit") and has("hook1") and has("feather") -end -function d6clear_shuffle_h() - return d6_present_shuffle_hard() and d6clear_present_shuffle_hard() and has("cane") and has("bombs") and - has("shooter") and has("emberseeds") and has("mermaidsuit") and has("hook1") and has("feather") -end - -function d7clear() - return has("hook2") and has("cane") and kill_underwater() and has("feather") and - Tracker:ProviderCountForCode("d7sk") >= 7 -end -function d7clear_h() - return has("hook2") and has("cane") and kill_underwater_hard() and has("feather") and - Tracker:ProviderCountForCode("d7sk") >= 7 -end - -function d8clear() - return - has("bombs") and has("cane") and has("hook1") and has("shooter") and has("emberseeds") and has("scentseeds") and - has("powerglove") and has("feather") and has("sword1") -end -function d8clear_h() - -- Should be the same as above, keeping it separate in case of future changes - return - has("bombs") and has("cane") and has("hook1") and has("shooter") and has("emberseeds") and has("scentseeds") and - has("powerglove") and has("feather") and has("sword1") -end - diff --git a/var_x-items_testing/scripts/logic/dungeons_hard.lua b/var_x-items_testing/scripts/logic/dungeons_hard.lua deleted file mode 100644 index 94ee13f..0000000 --- a/var_x-items_testing/scripts/logic/dungeons_hard.lua +++ /dev/null @@ -1,307 +0,0 @@ --- d1 -function d1_boss_h() - return d1_wide_room() and bush() and has("d1bk") and k_pumpkinhead_h() -end - -function d1_u_room_h() - return pot() or (d1_wide_room() and bush() and k_giantghini_h() and has("d1sk",3)) -end - -function d1_basement_h() - return d1_u_room_h() and ember() -end - --- d2 -function d2_bombed_terrace_h() - return k_spikedbeetle_h() and bombs() -end - -function d2_moblin_drop_h() - return k_spikedbeetle_h() and k_normal() -end - -function d2_enter_swoop_h() - return (k_spikedbeetle_h() and feather()) or has("d2sk",2) -end - -function d2_basement_h() - return d2_enter_swoop_h() and k_swoop_h() -end - -function d2_thwomp_shelf_h() - return d2_basement_h() and (feather() or (cane() and (pegasus_satchel() or bombs()))) -end - -function d2_basement_drop_h() - return d2_basement_h() and feather() -end - -function d2_basement_chest_h() - return d2_basement_h() and feather() and bombs() and lever_minecartabove() and k_normal() -end - -function d2_moblin_platform_h() - return d2_basement_h() and feather() and has("d2sk",3) -end - -function d2_statue_puzzle_h() - return d2_moblin_platform_h() and (lift1() or cane() or hook1() or push_enemy()) -end - -function d2_color_room_h() - return d2_statue_puzzle_h() and has("d2sk",5) -end - -function d2_boss_h() - return d2_color_room_h() and has("d2bk") and bombs() -end - -function d2_early_bombs() - return d2_color_room_h() and has("d2bk") -end - --- d3 -function d3_N_crystal_h() - return has("d3sk", 1) and (any_shooter() or any_hyper_slingshot() or boomerang() or hook1()) -end - -function d3_armos_drop_h() - return has("d3sk", 1) and (bombs() or cane() or magicboom() or (scent() and shoot_seeds()) or scent_satchel()) -end - -function d3_six_blocK_drop_h() - return d3_W_crystal() and (bombs() or (scent() and shoot_seeds()) or hook1() or (cane() and lift1())) and - (bombs() or any_hyper_slingshot() or any_shooter() or magicboom() or hook1() or boomerang()) -end - -function d3_conveyor_belt_room_h() - return d3_six_blocK_drop_h() and (bombs() or cane() or magicboom() or (scent() and (shooter() or slingshot())) or scent_satchel()) -end - -function d3_B1F_spinner_h() - return d3_S_crystal() and d3_E_crystal() and d3_N_crystal_h() and d3_W_crystal() and d3_break_crystal_switch() -end - -function d3_torch_chest_h() - return d3_B1F_spinner_h() and - ((ember() and (shooter() or slingshot2() or (cape() and (satchel() or slingshot())))) or - mystery_shooter() or (mystery() and slingshot2())) -end - -function d3_traverse1_h() - return d3_traverse1() or ((boomerang() or (lift1() and toss())) and (feather() or pegasus_satchel())) -end - -function d3_traverse2_h() - return d3_traverse2() or - (feather() and - (sword() or rodofseasons() or foolsore() or (bomb_jump2() and (ember() or scent() or mystery()))) and - (jump3() or hook1() or slingshot() or (lift1() and has("d3sk", 4)))) -end - -function d3_bridge_chest_h() - return has("d3sk", 1) and (d3_traverse1_h() or (d3_post_subterror() and has("d3sk", 4)) and (jump3() or feather())) -end - -function d3_B1F_east_h() - return d3_B1F_spinner_h() and k_subterror() and - (d3_W_crystal() or (has("d3sk", 4) and d3_traverse1() and (d3_traverse2() or jump3() or feather()))) and - (magicboom() or any_shooter() or sword()) -end - -function d3_post_subterror_h() - return d3_boss_door_h() or (d3_B1F_spinner_h() and k_subterror()) or (d3_traverse1_h() and has("d3sk", 4) and (jump3() or feather())) -end - -function d3_boss_door_h() - return ((((d3_B1F_spinner_h() and k_subterror()) or - (d3_traverse1_h() and has("d3sk", 4) and (jump3() or feather()))) and (jump3() or feather()) and - d3_traverse2_h())) or (has("d3sk", 4) and d3_traverse1_h() and d3_traverse2_h()) -end - -function d3_moldorm_drop_h() - return k_moldorm() and d3_post_subterror_h() -end - -function d3_boss_h() - return d3_boss_door_h() and has("d3bk") and (ember_shooter() or scent_shooter() or ember_satchel() or scent_satchel() or (ember() and slingshot2()) or (scent() and slingshot2())) -end - --- d4 -function d4_first_crystal_switch_h() - return d4_first_crystal_switch() or (d4_minecartA() and boomerang()) -end - -function d4_second_crystal_switch_h() - return d4_second_crystal_switch() or (d4_minecartB() and (boomerang() or any_hyper_slingshot())) -end - -function d4_post_miniboss_h() - return (cape() and (pegasus_satchel() or bombs())) or (d4_minecartD() and k_armos_warrior) -end - -function d4_large_floor_puzzle_h() - return d4_large_floor_puzzle() or (d4_minecartD() and k_armos_warrior() and bomb_jump3() and cane() and sword2()) -end - -function d4_boss_h() - return d4_large_floor_puzzle_h() and has("d4bk") and hook1() and (sword() or foolsore() or boomerang() or punch_enemy()) -end - -function d4_lava_pot_chest_h() - return d4_large_floor_puzzle_h() and lift1() and hook1() and has("d4sk",5) -end - --- d5 -function d5_switchA_h() - return k_normal() and (switch() or lift1()) -end - -function d5_darkroom_h() - return d5_switchA_h() and switch() and (cane() or hook1() or k_normal() or push_enemy() or boomerang() or (pegasus() and shoot_seeds()) or cape()) -end - -function d5_likelike_h() - return d5_switchA_h() and (switch_far() or lift1() or (feather() and cane() and (ember() or scent() or mystery()))) -end - -function d5_eyes_h() - return d5_switchA_h() and - (any_shooter() or any_hyper_slingshot() or (slingshot() and (scent() or pegasus() or mystery())) or - (pegasus_satchel() and feather() and mystery() and - (switch_far() or cape() or (lift1() and toss()) or cane()))) -end - -function d5_2statue_h() - return d5_switchA_h() and pot() and cane() and feather() and - (any_shooter() or any_hyper_slingshot() or boomerang() or (pegasus_satchel() and bombs() and cape()) or - sword() or rodofseasons() or foolsore() or any_slingshot() or - (bomb_jump2() and (ember_satchel() or scent_satchel() or mystery_satchel()))) -end - -function d5_boss_h() - return d5_switchA_h() and has("d5bk") and cane() and (sword() or foolsore()) -end - -function d5_crossroads_h() - return k_normal() and feather() and lift1() and has("d5sk", 2) and - (cane() or (pegasus_satchel() and cape()) or jump3() or (sword() and hook1())) -end - -function d5_3statue_h() - return d5_switchA_h() and cane() and has("d5sk",5) -end - -function d5_6statue_h() - return d5_switchA_h() and ember_shooter() and feather() and has("d5sk",5) -end - -function d5_redpeg_h() - return d5_crossroads_h() and switch_far() and has("d5sk", 5) -end - -function d5_owl_puzzle_h() - return d5_redpeg_h() -end - --- d6 past -function d6past_colorroom_h() - return (feather() or mystery()) and k_switchhook() -end - -function d6_openwall_h() - return bombs() and ember() and (shooter() or slingshot2() or (cape() and (slingshot() or satchel()))) -end - -function d6past_stalfos_h() - return ember() and (k_normal_far() or scent_satchel() or feather() or has("l_hard")) -end - -function d6past_rope_chest_h() - return d6_openwall_h() and mermaid() and (k_underwater() or hook1()) -end - --- d6 present -function d6present_orb_room_h() - return d6present_orb_room() or feather() -end - -function d6present_hit_orb_h() - return d6present_orb_room_h() and - (any_shooter() or boomerang() or any_hyper_slingshot() or (feather() and (sword() or slingshot())) or - (feather() and bombs() and (foolsore() or rodofseasons())) or - (jump3() and - (hook1() or ember_satchel() or scent_satchel() or mystery_satchel() or foolsore() or - rodofseasons()))) -end - -function d6present_rope_room_h() - return d6present_orb_room_h() and - (jump3() or (d6present_hit_orb() and (any_shooter() or any_slingshot() or boomerang() or bombs() or - (feather() and - (sword() or foolsore() or rodofseasons() or ember_satchel() or scent_satchel() or - mystery_satchel()))))) -end - -function d6present_rope_chest_h() - return d6present_rope_room_h() and scent_satchel() -end - -function d6present_hand_room_h() - return d6present_orb_room_h() and (cape() or (d6present_hit_orb_h() and bombs())) -end - -function d6present_cube_chest_h() - return d6present_hand_room_h() and bombs() and hook1() -end - -function d6present_spinner_chest_h() - return d6past_spinner() and d6present_hand_room_h() and (feather() or hook1()) -end - -function d6present_beamos_chest_h() - return d6_openwall_h() and feather() and (flippers() or (hook1() and has("d6_2sk",2))) -end - -function d6present_rng_chest_h() - return d6present_beamos_chest_h() and lift1() and (sword() or foolsore() or cane() or hook1() or punch_enemy()) and - has("d6_2sk", 3) -end - -function d6present_channel_chest_h() - return d6_openwall_h() and hook1() and has("d6_2sk",3) -end - -function d6present_vire_chest_h() - return d6present_spinner_chest_h() and has("d6_2sk",3) and hook1() -end - --- d7 -function d7_right_wing_h() - return k_moldorm_h() and (d7_stairway() or (draind7() and cane() and cape() and pegasus_satchel())) -end - --- d8 -function d8_ghini_h() - return d8_first() and has("d8sk", 1) and hook1() and cane() and (shooter() or slingshot2()) and (ember() or mystery()) -end - -function d8_bluepeg_h() - return d8_ghini_h() and has("d8sk", 2) -end - -function d8_maze_h() - return d8_bluepeg_h() and feather() and (sword() or foolsore()) and has("d8sk",4) -end - -function d8_neslate_h() - return d8_maze_h() and feather() and flippers() and ember() -end - -function d8_tileroom_h() - return d8_maze_h() and lift2() and feather() -end - -function d8_boss_h() - return has("d8bk") and d8_tileroom_h() and has("d8slate",4) -end diff --git a/var_x-items_testing/scripts/logic/labrynna.lua b/var_x-items_testing/scripts/logic/labrynna.lua deleted file mode 100644 index 73db188..0000000 --- a/var_x-items_testing/scripts/logic/labrynna.lua +++ /dev/null @@ -1,258 +0,0 @@ ----[[ -function has(item, amount) - local count = Tracker:ProviderCountForCode(item) - amount = tonumber(amount) - if not amount then - return count > 0 - else - return count >= amount - end -end - --- lynna / south shore / palace -function lynna_city() - return bush() or flute() or echoes() or (shore_present() and mermaid()) -end - -function lynna_village() - return lynna_city() or echoes() -end - -function shore_present() - return flute() or has("gloves") or (bush() and feather()) or (ages() and bush()) or - ((bush() or flute() or echoes()) and (lift1() or mermaid()) or - (currents() and (feather() or flippers() or raft() or magicboom()))) -end - -function shore_present_h() - return shore_present() or (currents() and (shooter() or slingshot2())) -end - -function raft() - return lynna_village() and has("cheval") and has("chart") -end - -function palace_chest() - return lynna_village() and (ages() or (bush() and mermaid())) -end - -function palace_chest_h() - return palace_chest() or (lynna_village() and satchel() and scent() and pegasus()) -end - -function rescue_nayru() - return palace_chest() and mystery() and hook1() and (sword() or punch_enemy() or foolsore()) -end - -function rescue_nayru_h() - return palace_chest_h() and mystery() and hook1() and (sword() or punch_enemy() or foolsore()) -end - -function maku_seed() - return has("d1") and has("d2") and has("d3") and has("d4") and has("d5") and has("d6") and has("d7") and has("d8") -end - -function balloon_guy() - return feather() and (sword() or boomerang() or foolsore() or rodofseasons()) and - (currents() or has("gloves") or ricky_flute() or (shore_present() and any_shooter())) -end - -function balloon_guy_h() - return feather() and (sword() or boomerang() or foolsore() or rodofseasons()) and (currents() or has("gloves") or ricky_flute() or - (shore_present() and (any_shooter() or (boomerang() and (pegasus_satchel() or bombs()))))) -end - - --- yoll graveyard -function graveyard() - return ember() and use_seeds() -end - -function cheval_grave() - return ember() and use_seeds() and k_switchhook() -end - -function cheval_grave_h() - return ember() and use_seeds() and bomb_jump3() -end - -function syrup() - return graveyard() and has("gravekey") and (flippers() or bomb_jump2() or dimitri_flute() or hook2()) -end - -function syrup_h() - return graveyard() and has("gravekey") and shovel() and (flippers() or bomb_jump2() or dimitri_flute() or hook2()) -end - -function d1_entrance() - return graveyard() and has("gravekey") -end - --- fairies woods -function fairy_woods() - return lift1() or dimitri_flute() or ages() or (lynna_city() and flippers()) or - (currents() and (lever() or ricky_flute() or moosh_flute())) -end - -function deku_forest() - return lift1() or ages() -end - -function forest_tree() - return deku_forest() and (seed_tree()) and - (ember() or ages() or hook1() or gale_satchel() or feather()) -end - -function d2_entrance() - return deku_forest() and (bombs() or currents()) -end - -function woods_chest() - return (deku_forest() and currents()) or - (fairy_woods() and (feather() or ricky_flute() or moosh_flute() or hook1())) -end - --- crescent island -function crescentpast() - return has("raft") or (lynna_city() and mermaid()) or (crescentpresentwest() and echoes()) -end - -function tokaycrystalcave() - return crescentpast() and ((shovel() or crystal()) and feather()) -end - -function tokaybombcave() - return crescentpast() and lift1() and bombs() -end - -function tokaygame() - return crescentpast() and lift1() and bombs() -end - -function crescenttree() - return crescentpast() and has("seedling") and (seed_tree()) and seed_item() and - (ages() or (lift1() and echoes())) -end - -function crescenttree_h() - return crescentpast() and has("seedling") and (seed_tree()) and seed_item() and - (ages() or (lift1() and (echoes() or (gale_satchel() and mermaid())))) -end - -function crescentpresentwest() - return dimitri_flute() or (lynna_city() and mermaid()) or - (crescentpast() and (currents() or (shovel() and echoes()))) -end - -function crescentpresentwest() - return dimitri_flute() or (lynna_city() and mermaid()) or - ((raft() or (lynna_city() and mermaid())) and (currents() or (shovel() and echoes()))) -end - -function d3_entrance() - return crescentpresentwest() -end - --- nuun/symmetry city/talus peaks -function ricky_nuun() - return -end - -function dimitri_nuun() - return -end - -function moosh_nuun() - return -end - -function nuun() - return lynna_city() and (currents() or (fairy_woods() and ember() and shoot_seeds())) -end - -function nuuncave() - return nuun() and (dimitri_flute() or (has("nuun_ricky") and (flute() or currents())) or - (has("nuun_moosh") and (flute() or currents() or (bush() and jump3())))) -end - -function symmetrypresent() - return nuun() and (currents() or flute() or (has("nuun_moosh") and cape() and bush() and pegasus_satchel())) -end - -function symmetrytree() - return symmetrypresent() and (seed_tree() or (dimitri_flute() and d4_entrance())) -end - -function symmetrytree_h() - return symmetrypresent() and (seed_tree() or (dimitri_flute() and d4_entrance_h())) -end - -function symmetrypast() - return symmetrypresent() and (ages() or (bush() and echoes())) -end - -function restorationwall() - return ages() or (symmetrypast() and currents() and lift1() and (flippers() or (cape() and (pegasus_satchel() or (bombs() and has("l_hard")))))) -end - -function wallpatch() - return restorationwall() and (sword() or foolsore() or rodofseasons()) -end - -function wallpatch_h() - return restorationwall() and (sword() or foolsore() or rodofseasons() or shield() or boomerang() or hook1() or scent() or shovel()) -end - -function d4_entrance() - return symmetrypresent() and has("repairednut") and wallpatch() -end - -function d4_entrance_h() - return symmetrypresent() and has("repairednut") and wallpatch_h() -end - --- rolling ridge // fucking messy -function west_ridge_present() - return (feather() or ages()) and (((cape() or hook1()) and currents()) or -- From start - (lynna_village() and mermaid() and currents() and jump3())) -end - -function west_ridge_past() - return (has("bombflower") and (hook1() or cape()) and -- From start - (feather() or ages() or (west_ridge_present() and ages()) or (lift1() and echoes()))) -- From present ridge -end - --- zora village/zora seas -function zoravillage() - return mermaid() and ages() and hook1() -end - -function zoratree() - return zoravillage() and (seed_tree() or (dimitri_flute() and cleanseas())) -end - -function zoravillagepresent() - return zoravillage() -end - -function cleanseas() - return zoravillage() and has("powder") -end - -function d7_entrance() - return kingzora() and cleanseas() -end - -function kingzora() - return zoravillage() and has("syrup") -end - --- d8 area -function d8_entrance() - return crescentpast() and has("eyeball") and pot() and bombs() and mermaid() and feather() and (k_normal() or magicboom() or rodofseasons()) -end - -function d8_entrance_h() - return crescentpast() and has("eyeball") and pot() and bombs() and mermaid() and feather() and (k_normal() or magicboom() or rodofseasons() or cane()) -end - diff --git a/var_x-items_testing/scripts/logic/logic.lua b/var_x-items_testing/scripts/logic/logic.lua deleted file mode 100644 index 882820a..0000000 --- a/var_x-items_testing/scripts/logic/logic.lua +++ /dev/null @@ -1,514 +0,0 @@ ----@diagnostic disable: lowercase-global ----[[ -function has(item, amount) - local count = Tracker:ProviderCountForCode(item) - amount = tonumber(amount) - if not amount then - return count > 0 - else - return count >= amount - end -end - --- item macros -function sword() - return has("sword") -end - -function sword2() - return has("sword2") -end - -function shield() - return has("shield1") -end - -function shield2() - return has("shield2") -end - -function lift1() - return has("lift1") -end - -function lift2() - return has("lift2") -end - -function flippers() - return has("flippers") -end - -function mermaid() - return has("mermaid") -end - -function feather() - return has("feather") -end - -function hook1() - return has("hook1") -end - -function hook2() - return has("hook2") -end - -function flute() - return has("flute") -end - -function shovel() - return has("shovel") -end - -function shooter() - return has("shooter") -end - -function satchel() - return has("satchel") -end - -function boomerang() - return has("boomerang") -end - -function bombs() - return has("bombs") -end - -function cane() - return has("cane") -end - -function echoes() - return has("echoes") -end - -function currents() - return has("currents") -end - -function ages() - return has("ages") -end - -function bomb_jump2() --hard logic - return jump3() or (feather() and bombs()) -end - -function jump3() - return (feather() and pegasus_satchel()) or cape() -end - -function bomb_jump3() --hard logic - return cape() or (jump3() and bombs()) -end - -function farm() - return (lift1() or sword() or cane() or boomerang() or flute() or shovel() or hook1() or foolsore()) -end - -function essences() - return (has("d1") and has("d2") and has("d3") and has("d4") and has("d5") and has("d6") and has("d7") and has("d8")) -end - -function ricky_flute() - return (flute() and has("nuun_ricky")) -end - -function dimitri_flute() - return (flute() and has("nuun_dimitri")) -end - -function moosh_flute() - return (flute() and has("nuun_moosh")) -end - --- cross-items - -function cape() - return has("cape") -end - -function magicboom() - return has("magboom") -end - -function magnet() - return has("magnet") -end - -function foolsore() - return has("foolsore") -end - -function slingshot() - return has("slingshot") -end - -function slingshot2() - return has("slingshot2") -end - -function rodofseasons() - return has("rodofseasons") -end - --- seed macros -function pegasus() - return has("pegasusseeds") -end - -function ember() - return has("emberseeds") -end - -function mystery() - return has("mysteryseeds") -end - -function scent() - return has("scentseeds") -end - -function gale() - return has("galeseeds") -end - -function seed_item() - return (satchel() or shooter()) -end - -function pegasus_shooter() - return (pegasus() and shooter()) -end - -function ember_shooter() - return (ember() and shooter()) -end - -function mystery_shooter() - return (mystery() and shooter()) -end - -function scent_shooter() - return (scent() and shooter()) -end - -function gale_shooter() - return (gale() and shooter()) -end - -function any_shooter() - return (shooter() and (pegasus() or ember() or mystery() or scent() or gale())) -end - -function any_slingshot() - return (slingshot() and (pegasus() or ember() or mystery() or scent() or gale())) -end - -function any_hyper_slingshot() - return (slingshot2() and (pegasus() or ember() or mystery() or scent() or gale())) -end - -function target_carts_shooter() - return (shooter() and (pegasus() or ember() or mystery() or scent())) -end - -function target_carts_slingshot() - return (slingshot2() and (pegasus() or ember() or mystery() or scent())) -end - -function seed_range() - return (slingshot() or shooter()) and (pegasus() or ember() or mystery() or scent() or gale()) -end - -function pegasus_satchel() - return (pegasus() and satchel()) -end - -function ember_satchel() - return (ember() and satchel()) -end - -function mystery_satchel() - return (mystery() and satchel()) -end - -function scent_satchel() - return (scent() and satchel()) -end - -function gale_satchel() - return (gale() and satchel()) -end - -function use_seeds() - return (satchel() or shooter() or slingshot()) -end - -function shoot_seeds() - return shooter() or slingshot() -end - -function seed_tree() - return (sword() or punch_object() or foolsore() or rodofseasons()) -end - -function shooter_weapon() - return (shooter() and (ember() or scent() or gale())) -end - -function slingshot_weapon() - return (slingshot() and (ember() or scent() or gale())) -end - --- Get the number of seeds the player has -function seed_number() - local n = 0 - - if has("emberseeds") then - n = n+1 - end - - if has("mysteryseeds") then - n = n+1 - end - - if has("scentseeds") then - n = n+1 - end - - if has("galeseeds") then - n = n+1 - end - - if has("pegasusseeds") then - n = n+1 - end - - return n -end - --- ring macros -function fist() - return has ("ring_fist") -end - -function expert() - return has ("ring_expert") -end - -function energy() - return has ("ring_energy") -end - -function toss() - return has ("ring_toss") -end - -function peace() - return has ("ring_peace") -end - -function punch_object() - return (has ("ring_fist") or has("ring_expert")) -end - -function punch_enemy() - return (has ("ring_expert") or (has("l_hard") and has("ring_fist"))) -end - -function punch_enemy_h() - return (punch_enemy() or has("ring_fist")) -end - --- action macros -function crystal() - return (sword() or bombs() or lift1() or ember_satchel() or expert()) -end - -function crystal_switch() - return sword() or - hook1() or - boomerang() or - shooter() or - ember_satchel() or - mystery_satchel() or - scent_satchel() or - foolsore() or - rodofseasons() or - slingshot() -end - -function pot() - return (lift1() or hook1() or sword2()) -end - -function push_enemy() - return (shield() or rodofseasons() or (shovel() and (boomerang() or (pegasus() and shoot_seeds())))) -end - -function lever() - return (sword() or (shoot_seeds() and (ember() or scent() or mystery())) or hook1() or boomerang() or punch_object() or foolsore() or rodofseasons()) -end - -function lever_minecart() - return (sword() or (shoot_seeds() and (ember() or scent() or mystery())) or boomerang() or punch_object() or foolsore() or rodofseasons()) -end - -function lever_minecartabove() - return (sword() or rodofseasons() or (shoot_seeds() and (ember() or scent() or mystery())) or boomerang()) -end - -function switch() - return (sword() or bombs() or punch_object() or (shoot_seeds() and (ember() or scent() or mystery())) or hook1() or boomerang() or foolsore() or rodofseasons()) -end - -function switch_far() - return (bombs() or (shoot_seeds() and (ember() or scent() or mystery())) or hook1() or boomerang() or (sword() and energy())) -end - -function bush_safe() - return (sword() or hook1() or lift1() or bombs() or ember() or magicboom() or gale_shooter() or (slingshot() and gale())) -end - -function bush() - return (sword() or hook1() or lift1() or magicboom() or ember() or bombs() or (gale() and (shooter() or slingshot()))) -end - -function destroy_bush_flute() - return (sword() or hook1() or lift1() or bombs() or ember() or gale_shooter() or flute() or (slingshot() and gale())) -end - -function satchel_weapon() - return (satchel() and ember()) -end - -function satchel_weapon_h() - return (satchel_weapon() or (satchel() and (scent() or gale()))) -end - --- kill macros -function k_normal() - return (sword() or satchel_weapon() or shooter_weapon() or cane() or punch_enemy() or foolsore() or slingshot_weapon()) -end - -function k_normal_far() - return (shooter_weapon() or (cane() and lift1()) or slingshot_weapon()) -end - -function k_stalfos() - return (k_normal() or rodofseasons()) -end - -function k_underwater() - return (sword() or shooter_weapon() or punch_enemy() or foolsore()) -end - -function k_underwater_h() - return (sword() or shooter_weapon() or punch_enemy_h() or foolsore()) -end - -function k_switchhook() - return (k_normal() or hook1()) -end - -function k_giantghini() - return (sword() or rodofseasons() or (scent() and shoot_seeds()) or punch_enemy() or foolsore()) -end - -function k_giantghini_h() - return k_giantghini() or scent_satchel() -end - -function k_spikedbeetle() - return ((gale() and shoot_seeds()) or ((shield() or shovel()) and (sword() or foolsore() or satchel_weapon() or shooter_weapon() or slingshot_weapon() or cane() or hook1()))) -end - -function k_spikedbeetle_h() - return k_spikedbeetle() or gale_satchel() -end - -function k_swoop() - return sword() or foolsore() or (scent() and shoot_seeds()) or hook1() or punch_enemy() -end - -function k_swoop_h() - return k_swoop() or scent_satchel() or punch_enemy_h() -end - -function k_moldorm() - return (sword() or scent_shooter() or cane() or hook1() or punch_enemy() or foolsore() or (slingshot() and scent())) -end - -function k_moldorm_h() - return (sword() or scent_shooter() or cane() or hook1() or punch_enemy_h() or scent_satchel() or foolsore() or (slingshot() and scent())) -end - -function k_subterror() - return (shovel() and (sword() or hook1() or scent() or punch_enemy() or foolsore())) -end - -function k_subterror_h() - return (shovel() and (sword() or hook1() or scent() or punch_enemy_h() or foolsore)) -end - -function k_wizzrobe() - return (sword() or satchel_weapon() or shooter_weapon() or punch_enemy() or foolsore() or (slingshot() and scent())) -end - -function k_wizzrobe_h() - return (sword() or satchel_weapon_h() or shooter_weapon() or punch_enemy_h() or foolsore() or (slingshot() and scent())) -end - -function k_zol() - return k_normal() or hook1() -end - -function k_zol_h() - return k_normal() or hook1() -end - -function k_ghini() - return k_normal() or hook1() -end - -function k_ghini_h() - return k_normal() or hook1() -end - -function k_pumpkinhead() - return lift1() and (sword() or ember() or scent_shooter() or punch_enemy() or foolsore() or (slingshot() and scent()) or rodofseasons() or hook1()) -end - -function k_pumpkinhead_h() - return k_pumpkinhead() or (lift1() and (bombs() or scent_satchel() or punch_enemy_h() or foolsore() or rodofseasons())) -end - -function k_beetle() - return (gale_shooter() or ((shield() or shovel()) and (sword() or satchel_weapon() or shooter_weapon() or cane() or hook1() or foolsore() or slingshot_weapon()))) -end - -function k_beetle_h() - return (gale_shooter() or gale_satchel() or ((shield() or shovel()) and (sword() or satchel_weapon_h() or shooter_weapon() or cane() or hook1() or foolsore() or slingshot_weapon()))) -end - -function k_pols_voice() - return echoes() or flute() or bombs() or (gale() and (shooter() or slingshot())) -end - -function k_pols_voice_h() - return k_pols_voice() or gale_satchel() -end - -function k_armos_warrior() - return sword() or foolsore() or hook1() or scent_shooter() or (slingshot() and scent()) or punch_enemy() -end - -function k_octogon() - return sword() or foolsore() or ember_shooter() or (slingshot() and ember()) or scent_shooter or (slingshot() and scent()) or punch_enemy() -end diff --git a/var_x-items_testing/scripts/logic/rolling_ridge.json b/var_x-items_testing/scripts/logic/rolling_ridge.json deleted file mode 100644 index 34662d4..0000000 --- a/var_x-items_testing/scripts/logic/rolling_ridge.json +++ /dev/null @@ -1,74 +0,0 @@ -# rolling ridge. what a nightmare -goron elder: [bomb flower, or: [ - ridge west past, - [switch hook, or: [feather, ages]]]] -ridge west past: {or: [ - goron elder, - [ridge west present, or: [ages, [bracelet, echoes]]]]} -ridge west present: {or: [ - ridge upper present, - [switch hook, currents, or: [feather, ages]], - [currents, ridge west past]]} -ridge west cave: [ridge west present] -rolling ridge west tree: [or: [sword, punch object], seed item, ridge west past] -under moblin keep: [ridge west present, feather, flippers] -defeat great moblin: [ridge west present, pegasus satchel, bracelet] -rolling ridge owl: [mystery seeds, - or: [defeat great moblin, [ridge upper present, feather]]] -ridge upper present: {or: [ - ridge mid present, - [ridge base present, or: [jump 3, [hard, feather, cane]]], - [defeat great moblin, feather]]} -d5 entrance: [crown key, ridge upper present] -ridge base present: {or: [ridge upper present, ridge mid present, - [currents, or: [ridge base past east, ridge base past west]]]} -mermaid legend owl: [ridge base present] -d6 present entrance: [old mermaid key, ridge base present] -pool in d6 entrance: [ridge base present, mermaid suit] -goron dance present: [ridge base present, farm rupees] -goron dance, with letter: [ridge base past east, goron letter, farm rupees] -ridge mid past: {or: [ - [ridge base past west, switch hook], - [ridge upper present, ages], - [ridge mid present, ages], - [ridge base past east, brother emblem, feather]]} -ridge mid present: {or: [ - [ridge mid past, currents], - [ridge base present, brother emblem, or: [switch hook, jump 3]]]} -target carts: [ridge mid past, switch hook, ridge mid present] -target carts 1: [target carts] -target carts 2: [target carts] -goron gallery entrance: [target carts, or: [ages, [bracelet, echoes]]] -goron shooting gallery: [goron gallery entrance, sword] -rolling ridge east tree: [or: [sword, punch object], seed item, - or: [goron gallery entrance, - [ridge mid present, ages], - [ridge mid past, gale satchel]]] -ridge base past east: {or: [ - goron gallery entrance, - [lynna city, or: [feather, ages], mermaid suit], - [ridge mid past, feather, brother emblem], - rolling ridge east tree, - [ridge base present, ages], - [ridge base past west, or: [flippers, [hard, jump 3]]]]} -ridge base past west: {or: [ - [ridge base present, or: [ages, [break bush safe, echoes]]], - [ridge base past east, or: [flippers, [hard, bomb jump 2]]], - ridge mid past]} # ledge added to prevent softlocks -rolling ridge past old man: [ridge base past west, ember seeds] -ridge base past: [ridge base past west, bombs] -d6 past entrance: [mermaid key, ridge base past west, - or: [flippers, [ages, feather], [hard, bomb jump 2]]] -ridge diamonds past: [ridge base past west, switch hook] -bomb goron head: [bombs, or: [ - [ridge base past west, switch hook], - [ridge upper present, ages]]] -big bang game: [goronade, ridge mid present] -ridge NE cave present: [ridge mid present] -trade rock brisket: [brother emblem, rock brisket, ridge base present] -trade goron vase: [brother emblem, goron vase, ridge base past east] -trade lava juice: [lava juice, ridge mid past] -goron's hiding place: [ridge west present, bombs] -ridge base chest: [ridge west present] -goron diamond cave: [ridge mid present, or: [switch hook, jump 3]] -ridge bush cave: [ridge mid past, switch hook] \ No newline at end of file diff --git a/var_x-items_testing/scripts/utils.lua b/var_x-items_testing/scripts/utils.lua deleted file mode 100644 index 1fd1e09..0000000 --- a/var_x-items_testing/scripts/utils.lua +++ /dev/null @@ -1,21 +0,0 @@ --- from https://stackoverflow.com/questions/9168058/how-to-dump-a-table-to-console --- dumps a table in a readable string -function dump_table(o, depth) - if depth == nil then - depth = 0 - end - if type(o) == 'table' then - local tabs = ('\t'):rep(depth) - local tabs2 = ('\t'):rep(depth + 1) - local s = '{\n' - for k, v in pairs(o) do - if type(k) ~= 'number' then - k = '"' .. k .. '"' - end - s = s .. tabs2 .. '[' .. k .. '] = ' .. dump_table(v, depth + 1) .. ',\n' - end - return s .. tabs .. '}' - else - return tostring(o) - end -end diff --git a/versions.json b/versions.json index 3e67153..1276839 100644 --- a/versions.json +++ b/versions.json @@ -1,5 +1,16 @@ { "versions": [ + { + "package_version": "0.7.3.1", + "download_url": "https://github.com/Br00ty/ooa_brooty/releases/download/0.7.3.1/ooa_brooty.zip", + "sha256": "7d75ac11b14bf34cb89f211f60d84767343c9177c2ae79932abf84eb8104dc4f", + "changelog": [ + "make bombs progressive", + "fix logic for treasure seeking goron", + "fix an autotracking error", + "remove testing branch lol" + ] + }, { "package_version": "0.7.3", "download_url": "https://github.com/Br00ty/ooa_brooty/releases/download/0.7.3/ooa_brooty.zip",