diff --git a/connections/main.json b/connections/main.json index ede8fb8..a9c8e86 100644 --- a/connections/main.json +++ b/connections/main.json @@ -491,62 +491,6 @@ } ] }, - { - "connectionType": "Door", - "description": "Door connection between Broken Bridge (East) and Death Mountain", - "nodes": [ - { - "name": "Broken Bridge (East)", - "position": "origin" - }, - { - "name": "Death Mountain", - "position": "destination" - } - ] - }, - { - "connectionType": "Drop", - "description": "Drop connection between East Death Mountain Drop and East Death Mountain (Bottom)", - "nodes": [ - { - "name": "East Death Mountain Drop", - "position": "origin" - }, - { - "name": "East Death Mountain (Bottom)", - "position": "destination" - } - ] - }, - { - "connectionType": "Door", - "description": "Door connection between Spiral Cave Ledge Access and Spiral Cave Ledge", - "nodes": [ - { - "name": "Spiral Cave Ledge Access", - "position": "origin" - }, - { - "name": "Spiral Cave Ledge", - "position": "destination" - } - ] - }, - { - "connectionType": "Drop", - "description": "Drop connection between Spiral Cave Ledge Drop and East Death Mountain (Bottom)", - "nodes": [ - { - "name": "Spiral Cave Ledge Drop", - "position": "origin" - }, - { - "name": "East Death Mountain (Bottom)", - "position": "destination" - } - ] - }, { "connectionType": "Door", "description": "Door connection between Spiral Cave (top to bottom) and Spiral Cave (Bottom)", @@ -561,34 +505,6 @@ } ] }, - { - "connectionType": "Door", - "description": "Door connection between East Death Mountain (Top) and East Death Mountain (Top)", - "nodes": [ - { - "name": "East Death Mountain (Top)", - "position": "origin" - }, - { - "name": "East Death Mountain (Top)", - "position": "destination" - } - ] - }, - { - "connectionType": "Door", - "description": "Door connection between Death Mountain (Top) and Death Mountain (Top)", - "nodes": [ - { - "name": "Death Mountain (Top)", - "position": "origin" - }, - { - "name": "Death Mountain (Top)", - "position": "destination" - } - ] - }, { "connectionType": "Drop", "description": "Drop connection between Death Mountain Drop and Death Mountain", @@ -603,20 +519,6 @@ } ] }, - { - "connectionType": "Drop", - "description": "Drop connection between Spectacle Rock Drop and Death Mountain (Top)", - "nodes": [ - { - "name": "Spectacle Rock Drop", - "position": "origin" - }, - { - "name": "Death Mountain (Top)", - "position": "destination" - } - ] - }, { "connectionType": "Door", "description": "Door connection between Tower of Hera Small Key Door and Tower of Hera (Basement)", @@ -1261,20 +1163,6 @@ } ] }, - { - "connectionType": "Door", - "description": "Door connection between Fairy Ascension Rocks and Fairy Ascension Plateau", - "nodes": [ - { - "name": "Fairy Ascension Rocks", - "position": "origin" - }, - { - "name": "Fairy Ascension Plateau", - "position": "destination" - } - ] - }, { "connectionType": "Door", "description": "Door connection between Fairy Ascension Mirror Spot and Fairy Ascension Plateau", @@ -1289,48 +1177,6 @@ } ] }, - { - "connectionType": "Drop", - "description": "Drop connection between Fairy Ascension Drop and East Death Mountain (Bottom)", - "nodes": [ - { - "name": "Fairy Ascension Drop", - "position": "origin" - }, - { - "name": "East Death Mountain (Bottom)", - "position": "destination" - } - ] - }, - { - "connectionType": "Drop", - "description": "Drop connection between Fairy Ascension Ledge Drop and Fairy Ascension Plateau", - "nodes": [ - { - "name": "Fairy Ascension Ledge Drop", - "position": "origin" - }, - { - "name": "Fairy Ascension Plateau", - "position": "destination" - } - ] - }, - { - "connectionType": "Door", - "description": "Door connection between Fairy Ascension Ledge and Fairy Ascension Ledge", - "nodes": [ - { - "name": "Fairy Ascension Ledge", - "position": "origin" - }, - { - "name": "Fairy Ascension Ledge", - "position": "destination" - } - ] - }, { "connectionType": "Door", "description": "Door connection between Spectacle Rock Mirror Spot and Spectacle Rock", @@ -1457,20 +1303,6 @@ } ] }, - { - "connectionType": "Door", - "description": "Door connection between Isolated Ledge Mirror Spot and Fairy Ascension Ledge", - "nodes": [ - { - "name": "Isolated Ledge Mirror Spot", - "position": "origin" - }, - { - "name": "Fairy Ascension Ledge", - "position": "destination" - } - ] - }, { "connectionType": "Door", "description": "Door connection between Spiral Cave Mirror Spot and Spiral Cave Ledge", @@ -3725,20 +3557,6 @@ } ] }, - { - "connectionType": "Door", - "description": "Door connection between Fairy Ascension Cave Exit (Top) and Fairy Ascension Ledge", - "nodes": [ - { - "name": "Fairy Ascension Cave Exit (Top)", - "position": "origin" - }, - { - "name": "Fairy Ascension Ledge", - "position": "destination" - } - ] - }, { "connectionType": "Door", "description": "Door connection between Spiral Cave and Spiral Cave (Top)", @@ -4565,20 +4383,6 @@ } ] }, - { - "connectionType": "Door", - "description": "Door connection between Tower of Hera Exit and Death Mountain (Top)", - "nodes": [ - { - "name": "Tower of Hera Exit", - "position": "origin" - }, - { - "name": "Death Mountain (Top)", - "position": "destination" - } - ] - }, { "connectionType": "Door", "description": "Door connection between Hyrule Castle Entrance (South) and Hyrule Castle", diff --git a/helpers.json b/helpers.json index aa69289..b9cbfec 100644 --- a/helpers.json +++ b/helpers.json @@ -74,6 +74,13 @@ "Hookshot" ] }, + { + "name": "canHammerThings", + "requires": [ + "isLink", + "Hammer" + ] + }, { "name": "canInvul", "requires": [ diff --git a/regions/lightworld/deathmountain/east/regions.json b/regions/lightworld/deathmountain/east/regions.json index 9d60637..eec1c1c 100644 --- a/regions/lightworld/deathmountain/east/regions.json +++ b/regions/lightworld/deathmountain/east/regions.json @@ -3,178 +3,483 @@ "rooms": [ { "id": 99, - "name": "East Death Mountain (Bottom)", + "name": "East Death Mountain Cliff", "roomType": "LightWorld", + "alttpEntrandoRegions": [ + "East Death Mountain (Bottom)", + "East Death Mountain (Top)", + "Spiral Cave Ledge", + "Fairy Ascension Plateau", + "Fairy Ascension Ledge", + "Death Mountain Floating Island (Light World)", + "Mimic Cave Ledge" + ], "nodes": [ { "id": 1, - "name": "Broken Bridge (East)", - "area": "East Death Mountain (Bottom)", - "nodeType": "door" + "name": "East Death Mountain Cliff Bottom Left Transition", + "nodeType": "transition" }, { "id": 2, - "name": "Paradox Cave (Bottom)", - "area": "East Death Mountain (Bottom)", - "nodeType": "door" + "name": "East Death Mountain Cliff Bottom Right Junction", + "nodeType": "junction" }, { "id": 3, "name": "Paradox Cave (Middle)", - "area": "East Death Mountain (Bottom)", - "nodeType": "door" + "nodeType": "door", + "note": "It's middle as viewed from inside the cave, but bottom as viewed from outside." }, { "id": 4, - "name": "East Death Mountain Teleporter", - "area": "East Death Mountain (Bottom)", - "nodeType": "door" + "name": "Paradox Cave (Bottom)", + "nodeType": "door", + "note": "It's bottom as viewed from inside the cave, but middle as viewed from outside." }, { "id": 5, "name": "Hookshot Fairy", - "area": "East Death Mountain (Bottom)", "nodeType": "door" }, { "id": 6, - "name": "Fairy Ascension Rocks", - "area": "East Death Mountain (Bottom)", + "name": "Fairy Ascension Cave (Bottom)", "nodeType": "door" }, { "id": 7, "name": "Spiral Cave (Bottom)", - "area": "East Death Mountain (Bottom)", "nodeType": "door" - } - ] - }, - { - "id": 105, - "name": "East Death Mountain (Top)", - "roomType": "LightWorld", - "nodes": [ + }, { - "id": 1, - "name": "Paradox Cave (Top)", - "area": "East Death Mountain (Top)", + "id": 8, + "name": "Fairy Ascension Cave (Top)", "nodeType": "door" }, { - "id": 2, - "name": "Death Mountain (Top)", - "area": "East Death Mountain (Top)", + "id": 9, + "name": "Mimic Cave", "nodeType": "door" }, { - "id": 3, - "name": "Spiral Cave Ledge Access", - "area": "East Death Mountain (Top)", + "id": 10, + "name": "Spiral Cave", "nodeType": "door" }, { - "id": 4, - "name": "East Death Mountain Drop", - "area": "East Death Mountain (Top)", - "nodeType": "drop" + "id": 11, + "name": "Paradox Cave (Top)", + "nodeType": "door" }, { - "id": 5, - "name": "Turtle Rock Teleporter", - "area": "East Death Mountain (Top)", - "nodeType": "door" + "id": 12, + "name": "East Death Mountain Cliff Top Right Transition", + "nodeType": "transition" }, { - "id": 6, - "name": "Fairy Ascension Ledge", - "area": "East Death Mountain (Top)", - "nodeType": "door" - } - ] - }, - { - "id": 106, - "name": "Spiral Cave Ledge", - "roomType": "LightWorld", - "nodes": [ + "id": 13, + "name": "East Death Mountain Cliff Top Right Junction", + "nodeType": "junction" + }, { - "id": 1, - "name": "Spiral Cave", - "area": "Spiral Cave Ledge", - "nodeType": "door" + "id": 14, + "name": "Floating Island", + "nodeType": "item", + "nodeItem": "PieceOfHeart", + "nodeAddress": "0x180141" }, { - "id": 2, - "name": "Spiral Cave Ledge Drop", - "area": "Spiral Cave Ledge", - "nodeType": "drop" + "id": 15, + "name": "East Death Mountain Cliff Top Left Transition", + "nodeType": "transition" + }, + { + "id": 16, + "name": "East Death Mountain Teleporter", + "nodeType": "exit", + "requires": ["canLiftDarkRocks"] } - ] - }, - { - "id": 109, - "name": "Fairy Ascension Plateau", - "roomType": "LightWorld", - "nodes": [ + ], + "links": [ { - "id": 1, - "name": "Fairy Ascension Drop", - "area": "Fairy Ascension Plateau", - "nodeType": "drop" + "from": 1, + "to": [ + { + "id": 2, + "strats": [ + { + "name": "Base", + "notable": false, + "requires": ["canGrapple"] + } + ] + } + ] }, { - "id": 2, - "name": "Fairy Ascension Cave (Bottom)", - "area": "Fairy Ascension Plateau", - "nodeType": "door" + "from": 2, + "to": [ + { + "id": 1, + "strats": [ + { + "name": "Base", + "notable": false, + "requires": ["canGrapple"] + } + ] + }, + { + "id": 3, + "strats": [ + { + "name": "Base", + "notable": false, + "requires": null + } + ] + }, + { + "id": 4, + "strats": [ + { + "name": "Base", + "notable": false, + "requires": null + } + ] + }, + { + "id": 5, + "strats": [ + { + "name": "Base", + "notable": false, + "requires": null + } + ] + }, + { + "id": 6, + "strats": [ + { + "name": "Base", + "notable": false, + "requires": ["canLiftDarkRocks"] + } + ] + }, + { + "id": 7, + "strats": [ + { + "name": "Base", + "notable": false, + "requires": null + } + ] + }, + { + "id": 16, + "strats": [ + { + "name": "Base", + "notable": false, + "requires": null + } + ] + } + ] + }, + { + "from": 3, + "to": [ + { + "id": 2, + "strats": [ + { + "name": "Base", + "notable": false, + "requires": null + } + ] + } + ] + }, + { + "from": 4, + "to": [ + { + "id": 2, + "strats": [ + { + "name": "Base", + "notable": false, + "requires": null + } + ] + } + ] + }, + { + "from": 5, + "to": [ + { + "id": 2, + "strats": [ + { + "name": "Base", + "notable": false, + "requires": null + } + ] + } + ] + }, + { + "from": 6, + "to": [ + { + "id": 2, + "strats": [ + { + "name": "Base", + "notable": false, + "requires": null + } + ] + } + ] + }, + { + "from": 7, + "to": [ + { + "id": 2, + "strats": [ + { + "name": "Base", + "notable": false, + "requires": null + } + ] + } + ] + }, + { + "from": 8, + "to": [ + { + "id": 6, + "strats": [ + { + "name": "Base", + "notable": false, + "requires": null + } + ] + } + ] + }, + { + "from": 10, + "to": [ + { + "id": 7, + "strats": [ + { + "name": "Base", + "notable": false, + "requires": null + } + ] + } + ] + }, + { + "from": 11, + "to": [ + { + "id": 13, + "strats": [ + { + "name": "Base", + "notable": false, + "requires": null + } + ] + } + ] + }, + { + "from": 12, + "to": [ + { + "id": 13, + "strats": [ + { + "name": "Base", + "notable": false, + "requires": null + } + ] + } + ] + }, + { + "from": 13, + "to": [ + { + "id": 5, + "strats": [ + { + "name": "Base", + "notable": false, + "requires": null + } + ] + }, + { + "id": 8, + "strats": [ + { + "name": "Base", + "notable": false, + "requires": null + } + ] + }, + { + "id": 10, + "strats": [ + { + "name": "Base", + "notable": false, + "requires": null + } + ] + }, + { + "id": 11, + "strats": [ + { + "name": "Base", + "notable": false, + "requires": null + } + ] + }, + { + "id": 12, + "strats": [ + { + "name": "Base", + "notable": false, + "requires": null + } + ] + }, + { + "id": 15, + "strats": [ + { + "name": "Base", + "notable": false, + "requires": ["canHammerThings"] + } + ] + } + ] + }, + { + "from": 15, + "to": [ + { + "id": 13, + "strats": [ + { + "name": "Base", + "notable": false, + "requires": ["canHammerThings"] + } + ] + } + ] + }, + { + "from": 16, + "to": [ + { + "id": 2, + "strats": [ + { + "name": "Base", + "notable": false, + "requires": null + } + ] + } + ] } ] }, { - "id": 111, - "name": "Fairy Ascension Ledge", + "id": 105, + "name": "Peg Puzzle", "roomType": "LightWorld", + "alttpEntrandoRegions": [ + "East Death Mountain (Top)" + ], "nodes": [ { "id": 1, - "name": "Fairy Ascension Ledge Drop", - "area": "Fairy Ascension Ledge", - "nodeType": "drop" + "name": "Peg Puzzle Left Transition", + "nodeType": "door" }, { "id": 2, - "name": "Fairy Ascension Cave (Top)", - "area": "Fairy Ascension Ledge", - "nodeType": "door" + "name": "Turtle Rock Teleporter", + "nodeType": "exit", + "locks": [ + { + "lockType": "lockedDoor", + "unlock": ["canHammerThings"] + } + ] + } - ] - }, - { - "id": 162, - "name": "Death Mountain Floating Island (Light World)", - "roomType": "LightWorld", - "nodes": [ + ], + "links": [ { - "id": 1, - "name": "Floating Island", - "area": "Death Mountain Floating Island (Light World)", - "nodeType": "item", - "nodeItem": "PieceOfHeart", - "nodeAddress": "0x180141" - } - ] - }, - { - "id": 164, - "name": "Mimic Cave Ledge", - "roomType": "LightWorld", - "nodes": [ + "from": 1, + "to": [ + { + "id": 2, + "strats": [ + { + "name": "Base", + "notable": false, + "requires": ["canLiftDarkRocks"] + } + ] + } + ] + }, { - "id": 1, - "name": "Mimic Cave", - "area": "Mimic Cave Ledge", - "nodeType": "door" + "from": 2, + "to": [ + { + "id": 1, + "strats": [ + { + "name": "Base", + "notable": false, + "requires": null + } + ] + } + ] } ] } diff --git a/regions/lightworld/deathmountain/east/roomDiagrams/105_EastmostDeathMountain.png b/regions/lightworld/deathmountain/east/roomDiagrams/105_EastmostDeathMountain.png new file mode 100644 index 0000000..9a5d93c Binary files /dev/null and b/regions/lightworld/deathmountain/east/roomDiagrams/105_EastmostDeathMountain.png differ diff --git a/regions/lightworld/deathmountain/east/roomDiagrams/99_EastDeathMountainMainArea.png b/regions/lightworld/deathmountain/east/roomDiagrams/99_EastDeathMountainMainArea.png new file mode 100644 index 0000000..03f8c38 Binary files /dev/null and b/regions/lightworld/deathmountain/east/roomDiagrams/99_EastDeathMountainMainArea.png differ diff --git a/regions/lightworld/lightworld-regions.png b/regions/lightworld/lightworld-regions.png new file mode 100644 index 0000000..e5539e2 Binary files /dev/null and b/regions/lightworld/lightworld-regions.png differ diff --git a/regions/lightworld/northwest/caves.json b/regions/lightworld/northwest/caves.json index 84d6154..3a10e13 100644 --- a/regions/lightworld/northwest/caves.json +++ b/regions/lightworld/northwest/caves.json @@ -393,26 +393,6 @@ } ] }, - { - "id": 61, - "name": "Library", - "roomType": "Cave", - "nodes": [ - { - "id": 1, - "name": "Library", - "area": "Library", - "nodeType": "item", - "nodeItem": "BookOfMudora", - "nodeAddress": "0x180012" - } - ] - }, - { - "id": 62, - "name": "Kakariko Gamble Game", - "roomType": "Cave" - }, { "id": 80, "name": "Lost Woods Gamble", diff --git a/regions/lightworld/south/caves.json b/regions/lightworld/south/caves.json index b8fb9c6..6103333 100644 --- a/regions/lightworld/south/caves.json +++ b/regions/lightworld/south/caves.json @@ -200,6 +200,26 @@ "name": "Cave Shop (Lake Hylia)", "roomType": "Cave" }, + { + "id": 61, + "name": "Library", + "roomType": "Cave", + "nodes": [ + { + "id": 1, + "name": "Library", + "area": "Library", + "nodeType": "item", + "nodeItem": "BookOfMudora", + "nodeAddress": "0x180012" + } + ] + }, + { + "id": 62, + "name": "Kakariko Gamble Game", + "roomType": "Cave" + }, { "id": 65, "name": "Capacity Upgrade", diff --git a/schema/z3-region.schema.json b/schema/z3-region.schema.json index 671d4f7..a55f38a 100644 --- a/schema/z3-region.schema.json +++ b/schema/z3-region.schema.json @@ -44,6 +44,16 @@ "default": "", "pattern": "^(.*)$" }, + "alttpEntrandoRegions": { + "$id": "#/items/properties/alttpEntrandoRegions", + "type": "array", + "title": "ALttP Entrando Regions", + "description": "The name of all regions (as defined in the ALttP Entrando project) that are (at least partially) contained in this room.", + "items": { + "$id": "#/items/properties/alttpEntrandoRegions/items", + "type": "string" + } + }, "nodes": { "$id": "#/items/properties/nodes", "type": "array", @@ -70,7 +80,7 @@ "name": { "$id": "#/items/properties/nodes/items/properties/name", "type": "string", - "title": "Node Name", + "title": "Node Name. Must be unique across all rooms.", "default": "", "examples": [ "Exit" @@ -99,7 +109,8 @@ "event", "item", "junction", - "obstacle" + "obstacle", + "transition" ], "pattern": "^(.*)$" }, @@ -263,9 +274,14 @@ "$id": "#/items/properties/links/items/properties/to/items", "type": "object", "title": "The Items Schema", - "required": [ - "id", - "requires" + "required": ["id"], + "oneOf": [ + { + "required": ["requires"] + }, + { + "required": ["strats"] + } ], "properties": { "id": { @@ -294,6 +310,56 @@ "title": "Elements are assumed to be ANDed together, unless this array has a key of 'or'" } }, + "strats": { + "$id": "#/items/properties/links/items/properties/to/items/properties/strats", + "type": "array", + "title": "Link Strats", + "description": "An array of strats that can be used to cross the link.", + "items": { + "$id": "#/items/properties/links/items/properties/to/items/properties/strats/items", + "type": "object", + "required": [ + "name", + "notable", + "requires" + ], + "properties": { + "name": { + "$id": "#/items/properties/links/items/properties/to/items/properties/strats/items/properties/name", + "type": "string", + "title": "Strat Name", + "description": "A name for the strat", + "default": "", + "examples": [ + "Base", + "Ice Palace Bomb Jump" + ], + "pattern": "^(.*)$" + }, + "notable": { + "$id": "#/items/properties/links/items/properties/to/items/properties/strats/items/properties/notable", + "type": "boolean" + }, + "requires": { + "$id": "#/items/properties/links/items/properties/to/items/properties/strats/items/properties/requires", + "type": [ + "array", + "null" + ], + "title": "Strat Requirements", + "description": "Equipment, tech, and flag requirements to execute this strat.", + "items": { + "$id": "#/items/properties/links/items/properties/to/items/properties/strats/items/properties/requires/items", + "type": [ + "object", + "string" + ], + "title": "Elements are assumed to be ANDed together, unless this array has a key of 'or'" + } + } + } + } + }, "note": { "$id": "#/items/properties/links/items/properties/to/items/properties/note", "type": "string",