From d0f499b9788ba6997cbe06bb3025b19a321c2daa Mon Sep 17 00:00:00 2001 From: Brooty Johnson Date: Sun, 15 Sep 2024 20:51:08 -0400 Subject: [PATCH] paging doctor beat, emergency emergency fix logic for treasure goron, made bomb progressive, fix some autotracking shenanigans lmao --- images/items/bombs_plus.png | Bin 0 -> 6767 bytes manifest.json | 16 +- ooa_brooty.zip | Bin 3173627 -> 3232977 bytes scripts/autotracking/item_mapping.lua | 2 +- scripts/autotracking/location_mapping.lua | 6 +- var_archipelago/items/items.json | 22 +- var_archipelago/locations/dungeons.json | 1 + var_archipelago/locations/overworld.json | 6 +- var_x-items_testing/items/items.json | 1448 ----------- var_x-items_testing/layouts/broadcast.json | 176 -- var_x-items_testing/layouts/items.json | 509 ---- var_x-items_testing/layouts/layouts.json | 210 -- var_x-items_testing/layouts/tracker.json | 6 - var_x-items_testing/locations/dungeons.json | 2228 ----------------- .../locations/dungeons_shuffle.json | 2194 ---------------- var_x-items_testing/locations/overworld.json | 2174 ---------------- var_x-items_testing/scripts/autotracking.lua | 23 - .../scripts/autotracking/archipelago.lua | 180 -- .../scripts/autotracking/autotracking.md | 7 - .../scripts/autotracking/item_mapping.lua | 9 - .../scripts/autotracking/location_mapping.lua | 8 - .../scripts/custom_items/class.lua | 113 - .../scripts/custom_items/custom_items.md | 13 - .../custom_items/progressiveTogglePlus.lua | 258 -- .../progressiveTogglePlusWrapper.lua | 102 - var_x-items_testing/scripts/init.lua | 50 - .../scripts/logic/dungeons.lua | 591 ----- .../scripts/logic/dungeons_hard.lua | 307 --- .../scripts/logic/labrynna.lua | 258 -- var_x-items_testing/scripts/logic/logic.lua | 514 ---- .../scripts/logic/rolling_ridge.json | 74 - var_x-items_testing/scripts/utils.lua | 21 - versions.json | 11 + 33 files changed, 42 insertions(+), 11495 deletions(-) create mode 100644 images/items/bombs_plus.png delete mode 100644 var_x-items_testing/items/items.json delete mode 100644 var_x-items_testing/layouts/broadcast.json delete mode 100644 var_x-items_testing/layouts/items.json delete mode 100644 var_x-items_testing/layouts/layouts.json delete mode 100644 var_x-items_testing/layouts/tracker.json delete mode 100644 var_x-items_testing/locations/dungeons.json delete mode 100644 var_x-items_testing/locations/dungeons_shuffle.json delete mode 100644 var_x-items_testing/locations/overworld.json delete mode 100644 var_x-items_testing/scripts/autotracking.lua delete mode 100644 var_x-items_testing/scripts/autotracking/archipelago.lua delete mode 100644 var_x-items_testing/scripts/autotracking/autotracking.md delete mode 100644 var_x-items_testing/scripts/autotracking/item_mapping.lua delete mode 100644 var_x-items_testing/scripts/autotracking/location_mapping.lua delete mode 100644 var_x-items_testing/scripts/custom_items/class.lua delete mode 100644 var_x-items_testing/scripts/custom_items/custom_items.md delete mode 100644 var_x-items_testing/scripts/custom_items/progressiveTogglePlus.lua delete mode 100644 var_x-items_testing/scripts/custom_items/progressiveTogglePlusWrapper.lua delete mode 100644 var_x-items_testing/scripts/init.lua delete mode 100644 var_x-items_testing/scripts/logic/dungeons.lua delete mode 100644 var_x-items_testing/scripts/logic/dungeons_hard.lua delete mode 100644 var_x-items_testing/scripts/logic/labrynna.lua delete mode 100644 var_x-items_testing/scripts/logic/logic.lua delete mode 100644 var_x-items_testing/scripts/logic/rolling_ridge.json delete mode 100644 var_x-items_testing/scripts/utils.lua diff --git a/images/items/bombs_plus.png b/images/items/bombs_plus.png new file mode 100644 index 0000000000000000000000000000000000000000..890700320868d32cc2e4a39be695cb2d8ab1b4ef GIT binary patch literal 6767 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 literal 0 HcmV?d00001 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 5b6d83264cbf08b27b582667927c24f98c77f310..db8d9fabc42cc42f10869ae340af2d43cd3e63ee 100644 GIT binary patch delta 142566 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
  • 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

    H%;qJJcO7= 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 A)Bpeg delta 50221 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�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 Jh*X5={{h2)2$ui= 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",