diff --git a/images/dungeons/d0_entrance.png b/images/dungeons/d0_entrance.png new file mode 100644 index 0000000..30ff8d8 Binary files /dev/null and b/images/dungeons/d0_entrance.png differ diff --git a/images/items/l_med.png b/images/items/l_med.png new file mode 100644 index 0000000..d4dd1ba Binary files /dev/null and b/images/items/l_med.png differ diff --git a/images/maps/maku_path.png b/images/maps/maku_path.png new file mode 100644 index 0000000..efc2c79 Binary files /dev/null and b/images/maps/maku_path.png differ diff --git a/manifest.json b/manifest.json index 523ffa4..d99a721 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "name": "Oracle of Ages Randomizer", "game_name": "Oracle of Ages", - "package_version": "0.7.2", + "package_version": "0.7.3", "package_uid": "ooa_brooty", "author": "Brooty", "variants": { diff --git a/maps/maps.json b/maps/maps.json index 758d28d..296582a 100644 --- a/maps/maps.json +++ b/maps/maps.json @@ -13,55 +13,55 @@ }, { "name": "d1", - "location_size": 28, + "location_size": 32, "location_border_thickness": 6, "img": "images/maps/d1.png" }, { "name": "d2", - "location_size": 28, + "location_size": 32, "location_border_thickness": 6, "img": "images/maps/d2.png" }, { "name": "d3", - "location_size": 22, + "location_size": 26, "location_border_thickness": 5, "img": "images/maps/d3.png" }, { "name": "d4", - "location_size": 28, + "location_size": 32, "location_border_thickness": 6, "img": "images/maps/d4.png" }, { "name": "d5", - "location_size": 28, + "location_size": 32, "location_border_thickness": 6, "img": "images/maps/d5.png" }, { "name": "d6_1", - "location_size": 28, + "location_size": 32, "location_border_thickness": 6, "img": "images/maps/d6_1.png" }, { "name": "d6_2", - "location_size": 28, + "location_size": 32, "location_border_thickness": 6, "img": "images/maps/d6_2.png" }, { "name": "d7", - "location_size": 28, + "location_size": 32, "location_border_thickness": 6, "img": "images/maps/d7.png" }, { "name": "d8", - "location_size": 28, + "location_size": 32, "location_border_thickness": 6, "img": "images/maps/d8.png" }, @@ -70,5 +70,11 @@ "location_size": 28, "location_border_thickness": 6, "img": "images/maps/gridmaps.png" + }, + { + "name": "d0", + "location_size": 28, + "location_border_thickness": 6, + "img": "images/maps/maku_path.png" } ] \ No newline at end of file diff --git a/scripts/autotracking/archipelago.lua b/scripts/autotracking/archipelago.lua index 686e8e6..aa06bf3 100644 --- a/scripts/autotracking/archipelago.lua +++ b/scripts/autotracking/archipelago.lua @@ -100,11 +100,11 @@ function onClear(slot_data) end if slot_data["logic_difficulty"] then - if slot_data["logic_difficulty"] == "0" then + if slot_data["logic_difficulty"] == 0 then + Tracker:FindObjectForCode("logic").CurrentStage = 0 + elseif slot_data["logic_difficulty"] == 1 then Tracker:FindObjectForCode("logic").CurrentStage = 1 - --elseif slot_data["logic_difficulty"] == "1" then - --Tracker:FindObjectForCode("logic").CurrentStage = 2 - elseif slot_data["logic_difficulty"] == "2" then + elseif slot_data["logic_difficulty"] == 2 then Tracker:FindObjectForCode("logic").CurrentStage = 2 end end diff --git a/scripts/autotracking/location_mapping.lua b/scripts/autotracking/location_mapping.lua index 4e63a6c..acbdd79 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] = {"@Overworld/Lynna|South Shore|Palace/Maku Path/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] = {"@Overworld/Lynna|South Shore|Palace/Maku Path/Key Chest"}, - [BASE + 104] = {"@Overworld/Lynna|South Shore|Palace/Maku Path/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 f49cc52..a960dd3 100644 --- a/var_archipelago/items/items.json +++ b/var_archipelago/items/items.json @@ -697,13 +697,18 @@ "name": "Logic", "type": "progressive", "allow_disabled": false, - "loop": true, + "loop": false, "stages": [ { "img": "images/items/l_bas.png", "codes": "l_bas, logic", "inherit_codes": false }, + { + "img": "images/items/l_med.png", + "codes": "l_med, logic", + "inherit_codes": false + }, { "img": "images/items/l_hard.png", "codes": "l_hard, logic", @@ -928,6 +933,11 @@ "inherit_codes": false, "img": "images/dungeons/questionlabel.png" }, + { + "codes": "makupath1", + "inherit_codes": false, + "img": "images/dungeons/d0_entrance.png" + }, { "codes": "spiritsgrave1", "inherit_codes": false, @@ -938,11 +948,11 @@ "inherit_codes": false, "img": "images/dungeons/d2_past_entrance.png" }, - { - "codes": "wingdungeonpresent1", - "inherit_codes": false, - "img": "images/dungeons/d2_entrance.png" - }, + //{ + // "codes": "wingdungeonpresent1", + // "inherit_codes": false, + // "img": "images/dungeons/d2_entrance.png" + //}, { "codes": "moonlitgrotto1", "inherit_codes": false, @@ -991,6 +1001,11 @@ "inherit_codes": false, "img": "images/dungeons/questionlabel.png" }, + { + "codes": "makupath2", + "inherit_codes": false, + "img": "images/dungeons/d0_entrance.png" + }, { "codes": "spiritsgrave2", "inherit_codes": false, @@ -1001,11 +1016,11 @@ "inherit_codes": false, "img": "images/dungeons/d2_past_entrance.png" }, - { - "codes": "wingdungeonpresent2", - "inherit_codes": false, - "img": "images/dungeons/d2_entrance.png" - }, + //{ + // "codes": "wingdungeonpresent2", + // "inherit_codes": false, + // "img": "images/dungeons/d2_entrance.png" + //}, { "codes": "moonlitgrotto2", "inherit_codes": false, @@ -1054,6 +1069,11 @@ "inherit_codes": false, "img": "images/dungeons/questionlabel.png" }, + { + "codes": "makupath3", + "inherit_codes": false, + "img": "images/dungeons/d0_entrance.png" + }, { "codes": "spiritsgrave3", "inherit_codes": false, @@ -1064,11 +1084,11 @@ "inherit_codes": false, "img": "images/dungeons/d2_past_entrance.png" }, - { - "codes": "wingdungeonpresent3", - "inherit_codes": false, - "img": "images/dungeons/d2_entrance.png" - }, + //{ + // "codes": "wingdungeonpresent3", + // "inherit_codes": false, + // "img": "images/dungeons/d2_entrance.png" + //}, { "codes": "moonlitgrotto3", "inherit_codes": false, @@ -1117,6 +1137,11 @@ "inherit_codes": false, "img": "images/dungeons/questionlabel.png" }, + { + "codes": "makupath4", + "inherit_codes": false, + "img": "images/dungeons/d0_entrance.png" + }, { "codes": "spiritsgrave4", "inherit_codes": false, @@ -1127,11 +1152,11 @@ "inherit_codes": false, "img": "images/dungeons/d2_past_entrance.png" }, - { - "codes": "wingdungeonpresent4", - "inherit_codes": false, - "img": "images/dungeons/d2_entrance.png" - }, + //{ + // "codes": "wingdungeonpresent4", + // "inherit_codes": false, + // "img": "images/dungeons/d2_entrance.png" + //}, { "codes": "moonlitgrotto4", "inherit_codes": false, @@ -1180,6 +1205,11 @@ "inherit_codes": false, "img": "images/dungeons/questionlabel.png" }, + { + "codes": "makupath5", + "inherit_codes": false, + "img": "images/dungeons/d0_entrance.png" + }, { "codes": "spiritsgrave5", "inherit_codes": false, @@ -1190,11 +1220,11 @@ "inherit_codes": false, "img": "images/dungeons/d2_past_entrance.png" }, - { - "codes": "wingdungeonpresent5", - "inherit_codes": false, - "img": "images/dungeons/d2_entrance.png" - }, + //{ + // "codes": "wingdungeonpresent5", + // "inherit_codes": false, + // "img": "images/dungeons/d2_entrance.png" + //}, { "codes": "moonlitgrotto5", "inherit_codes": false, @@ -1243,6 +1273,11 @@ "inherit_codes": false, "img": "images/dungeons/questionlabel.png" }, + { + "codes": "makupath6p", + "inherit_codes": false, + "img": "images/dungeons/d0_entrance.png" + }, { "codes": "spiritsgrave6p", "inherit_codes": false, @@ -1253,11 +1288,11 @@ "inherit_codes": false, "img": "images/dungeons/d2_past_entrance.png" }, - { - "codes": "wingdungeonpresent6p", - "inherit_codes": false, - "img": "images/dungeons/d2_entrance.png" - }, + //{ + // "codes": "wingdungeonpresent6p", + // "inherit_codes": false, + // "img": "images/dungeons/d2_entrance.png" + //}, { "codes": "moonlitgrotto6p", "inherit_codes": false, @@ -1306,6 +1341,11 @@ "inherit_codes": false, "img": "images/dungeons/questionlabel.png" }, + { + "codes": "makupath6", + "inherit_codes": false, + "img": "images/dungeons/d0_entrance.png" + }, { "codes": "spiritsgrave6", "inherit_codes": false, @@ -1316,11 +1356,11 @@ "inherit_codes": false, "img": "images/dungeons/d2_past_entrance.png" }, - { - "codes": "wingdungeonpresent6", - "inherit_codes": false, - "img": "images/dungeons/d2_entrance.png" - }, + //{ + // "codes": "wingdungeonpresent6", + // "inherit_codes": false, + // "img": "images/dungeons/d2_entrance.png" + //}, { "codes": "moonlitgrotto6", "inherit_codes": false, @@ -1369,6 +1409,11 @@ "inherit_codes": false, "img": "images/dungeons/questionlabel.png" }, + { + "codes": "makupath7", + "inherit_codes": false, + "img": "images/dungeons/d0_entrance.png" + }, { "codes": "spiritsgrave7", "inherit_codes": false, @@ -1379,11 +1424,11 @@ "inherit_codes": false, "img": "images/dungeons/d2_past_entrance.png" }, - { - "codes": "wingdungeonpresent7", - "inherit_codes": false, - "img": "images/dungeons/d2_entrance.png" - }, + //{ + // "codes": "wingdungeonpresent7", + // "inherit_codes": false, + // "img": "images/dungeons/d2_entrance.png" + //}, { "codes": "moonlitgrotto7", "inherit_codes": false, @@ -1432,6 +1477,11 @@ "inherit_codes": false, "img": "images/dungeons/questionlabel.png" }, + { + "codes": "makupath8", + "inherit_codes": false, + "img": "images/dungeons/d0_entrance.png" + }, { "codes": "spiritsgrave8", "inherit_codes": false, @@ -1442,11 +1492,11 @@ "inherit_codes": false, "img": "images/dungeons/d2_past_entrance.png" }, - { - "codes": "wingdungeonpresent8", - "inherit_codes": false, - "img": "images/dungeons/d2_entrance.png" - }, + //{ + // "codes": "wingdungeonpresent8", + // "inherit_codes": false, + // "img": "images/dungeons/d2_entrance.png" + //}, { "codes": "moonlitgrotto8", "inherit_codes": false, diff --git a/var_archipelago/layouts/layouts.json b/var_archipelago/layouts/layouts.json index 00e7767..9c80700 100644 --- a/var_archipelago/layouts/layouts.json +++ b/var_archipelago/layouts/layouts.json @@ -127,6 +127,15 @@ ] } }, + { + "title": "Maku Path", + "content": { + "type": "map", + "maps": [ + "d0" + ] + } + }, { "title": "Spirit's Grave", "content": { diff --git a/var_archipelago/locations/dungeons.json b/var_archipelago/locations/dungeons.json index 0aa9012..6e33e77 100644 --- a/var_archipelago/locations/dungeons.json +++ b/var_archipelago/locations/dungeons.json @@ -4,6 +4,95 @@ "chest_unopened_img": "images/items/chest.png", "chest_opened_img": "images/items/chest_gray.png", "children": [ + { + "name": "Maku Path (D0)", + "children": [ + { + "name": "Key Chest", + "sections": [ + { + "name": "", + "item_count": 1, + "access_rules": [ + "$maku_tree,$k_normal,pathkey,dungeon_er_off", + "$maku_tree,shovel,pathkey,dungeon_er_off", + "$lynna_village,shovel,dungeon_er_off", + "$k_normal,dungeon_er_on", + "shovel,dungeon_er_on" + ] + } + ], + "map_locations": [ + { + "map": "d0", + "x": 599, + "y": 80 + } + ] + }, + { + "name": "Basement", + "sections": [ + { + "name": "", + "item_count": 1, + "access_rules": [ + "$maku_tree,$k_normal,dungeon_er_off", + "$maku_tree,shovel,dungeon_er_off", + "$lynna_village,shovel,pathkey,dungeon_er_off", + "pathkey,dungeon_er_on" + ] + } + ], + "map_locations": [ + { + "map": "d0", + "x": 167, + "y": 199 + } + ] + }, + { + "name": "Heart Piece", + "sections": [ + { + "name": "", + "item_count": 1, + "access_rules": [ + "$maku_tree,$k_normal,dungeon_er_off", + "$maku_tree,shovel,dungeon_er_off", + "$lynna_village,shovel,pathkey,dungeon_er_off", + "pathkey,dungeon_er_on" + ] + } + ], + "map_locations": [ + { + "map": "d0", + "x": 71, + "y": 55 + } + ] + }, + { + "name": "Have Maku Path Key?", + "sections": [ + { + "access_rules": ["{}"], + "hosted_item": "pathkey" + } + ], + "map_locations": [ + { + "map": "d0", + "x": 599, + "y": 449, + "size": 50 + } + ] + } + ] + }, { "name": "Spirit's Grave (D1)", "access_rules": [ @@ -841,7 +930,6 @@ "name": "Skull Dungeon (D4)", "access_rules": [ "dungeon_er_off,$d4_entrance", - "dungeon_er_off,$d4_entrance_h", "dungeon_er_on" ], "children": [ diff --git a/var_archipelago/locations/overworld.json b/var_archipelago/locations/overworld.json index f30cb30..ae2fcfb 100644 --- a/var_archipelago/locations/overworld.json +++ b/var_archipelago/locations/overworld.json @@ -156,43 +156,18 @@ ] }, { - "name": "Maku Path", - "access_rules": [], + "name": "Enter Maku Path (D0)", + "access_rules": [ + "$maku_tree", + "$lynna_village,shovel" + ], "sections": [ { - "name": "Key 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": "Basement", - "item_count": 1, - "access_rules": [ - "$maku_tree,$k_normal", - "$maku_tree,shovel", - "$lynna_village,shovel,pathkey" - ] - }, - { - "name": "Heart Piece", + "name": "", "item_count": 1, - "access_rules": [ - "$maku_tree,$k_normal", - "$lynna_village,shovel,pathkey,$k_normal" - ] + "chest_unopened_img": "images/dungeons/d0_entrance.png", + "chest_opened_img": "images/dungeons/d0_entrance.png", + "access_rules": [] } ], "map_locations": [ @@ -1776,7 +1751,7 @@ { "name": "Bomb Fairy", "access_rules": [ - "$symmetrypast,song2,lift1" + "$symmetrypast,song2,lift1,bombs" ], "sections": [ { @@ -1816,8 +1791,7 @@ { "name": "Enter Skull Dungeon (D4)", "access_rules": [ - "$d4_entrance", - "[l_hard],$d4_entrance_h" + "$d4_entrance" ], "sections": [ { diff --git a/var_archipelago/scripts/logic/dungeons.lua b/var_archipelago/scripts/logic/dungeons.lua index 21269fc..51fd7b3 100644 --- a/var_archipelago/scripts/logic/dungeons.lua +++ b/var_archipelago/scripts/logic/dungeons.lua @@ -40,7 +40,7 @@ function d1_u_room() end function d1_basement() - return d1_u_room() and ember() + return d1_u_room() and (ember() or mystery()) end -- d2 @@ -53,7 +53,7 @@ function d2_moblin_drop() end function d2_enter_swoop() - return (k_spikedbeetle() and feather()) or has("d2sk",2) + return (k_spikedbeetle() and feather() and (pegasus() or medium())) or has("d2sk",2) end function d2_basement() diff --git a/var_archipelago/scripts/logic/dungeons_hard.lua b/var_archipelago/scripts/logic/dungeons_hard.lua index 1b17159..ca69e63 100644 --- a/var_archipelago/scripts/logic/dungeons_hard.lua +++ b/var_archipelago/scripts/logic/dungeons_hard.lua @@ -8,7 +8,7 @@ function d1_u_room_h() end function d1_basement_h() - return d1_u_room_h() and ember() + return d1_u_room_h() and (ember() or mystery()) end -- d2 diff --git a/var_archipelago/scripts/logic/labrynna.lua b/var_archipelago/scripts/logic/labrynna.lua index 6ce2a77..06b18b3 100644 --- a/var_archipelago/scripts/logic/labrynna.lua +++ b/var_archipelago/scripts/logic/labrynna.lua @@ -208,12 +208,12 @@ function wallpatch_h() end function d4_entrance() - return symmetrypresent() and has("repairednut") and wallpatch() + return symmetrypresent() and has("repairednut") end -function d4_entrance_h() - return symmetrypresent() and has("repairednut") and wallpatch_h() -end +--function d4_entrance_h() + --return symmetrypresent() and has("repairednut") and wallpatch_h() +--end -- rolling ridge // fucking messy function west_ridge_present() diff --git a/var_archipelago/scripts/logic/logic.lua b/var_archipelago/scripts/logic/logic.lua index 69f545c..aa06d42 100644 --- a/var_archipelago/scripts/logic/logic.lua +++ b/var_archipelago/scripts/logic/logic.lua @@ -9,6 +9,15 @@ function has(item, amount) end end +-- logic macros +function medium() + return has("l_med") +end + +function hard() + return has("l_hard") +end + -- item macros function sword() return has("sword") @@ -99,7 +108,7 @@ function jump1() end function bomb_jump2() --hard logic - return jump3() or (feather() and bombs()) + return jump3() or (hard() and feather() and bombs()) end function jump3() @@ -107,7 +116,7 @@ function jump3() end function bomb_jump3() --hard logic - return cape() or (jump3() and bombs()) + return cape() or (hard() and jump3() and bombs()) end function farm() @@ -321,7 +330,7 @@ function punch_object() end function punch_enemy() - return (has ("ring_expert") or (has("l_hard") and has("ring_fist"))) + return (has ("ring_expert") or (hard() and has("ring_fist"))) end function punch_enemy_h() diff --git a/versions.json b/versions.json index d91b670..3e67153 100644 --- a/versions.json +++ b/versions.json @@ -1,5 +1,18 @@ { "versions": [ + { + "package_version": "0.7.3", + "download_url": "https://github.com/Br00ty/ooa_brooty/releases/download/0.7.3/ooa_brooty.zip", + "sha256": "81afa9ec316dccab30148ace018a3e1e438fc41659fb59d4160473d800a3d57f", + "changelog": [ + "made maku path a dungeon with its own tab", + "added maku path as an entrance for dungeon shuffle", + "fixed autotracking", + "super early beginning of Medium logic", + "some quick logic fixes", + "do some last minute maku path logic fixes" + ] + }, { "package_version": "0.7.2", "download_url": "https://github.com/Br00ty/ooa_brooty/releases/download/0.7.2/ooa_brooty.zip",