From 2dae2893c7d6cf46b9ef57d363d5580f49c1b7e5 Mon Sep 17 00:00:00 2001 From: Ixrec Date: Sun, 16 Feb 2025 05:01:22 +0000 Subject: [PATCH] Grotto of Scriptures logic --- .../shared_static_logic/connections.jsonc | 128 +++++++++++- .../shared_static_logic/locations.jsonc | 197 ++++++++++++++++++ .../shared_static_logic/static_logic.pickle | Bin 54993 -> 64671 bytes 3 files changed, 324 insertions(+), 1 deletion(-) diff --git a/worlds/nine_sols/shared_static_logic/connections.jsonc b/worlds/nine_sols/shared_static_logic/connections.jsonc index 162a4ad63f61..338d906cdbe3 100644 --- a/worlds/nine_sols/shared_static_logic/connections.jsonc +++ b/worlds/nine_sols/shared_static_logic/connections.jsonc @@ -606,13 +606,139 @@ { "from": "GD - Left Exit", "to": "GD - Root Node & Right Exit", "requires": [] }, // one-way door // Grotto of Scriptures (Entry) + { "from": "GoSY - Root Node", "to": "GoSY - Treasure Room", "requires": [ { "item": "Cloud Leap" } ] }, + { "from": "GoSY - Lower Right Exit", "to": "GoSY - Middle Caves & Lower Portals", "requires": [] }, // WC OR using portal (AD OR CL) + { "from": "GoSY - Middle Caves & Lower Portals", "to": "GoSY - Lower Right Exit", "requires": [] }, // fall + { "from": "GoSY - Middle Caves & Lower Portals", "to": "GoSY - Upper Caves", "requires": [] }, // WC OR DJ + { "from": "GoSY - Upper Caves", "to": "GoSY - Middle Caves & Lower Portals", "requires": [] }, // fall + { "from": "GoSY - Upper Caves", "to": "GoSY - Below Elevator & Upper Cave Portals", "requires": [ + { "item": "Charged Strike" }, // either go through the obvious CS barrier + { "item": "Cloud Leap" } // or jump to the top right platform with chests and use the portal to bypass the barrier + ] }, + { "from": "GoSY - Below Elevator & Upper Cave Portals", "to": "GoSY - Upper Caves", "requires": [] }, // fall, portal, fall again + { "from": "GoSY - Below Elevator & Upper Cave Portals", "to": "GoSY - Root Node", "requires": [] }, // one-way door + { "from": "GoSY - Below Elevator & Upper Cave Portals", "to": "GoSY - Elevator", "requires": [ + { "item": "Cloud Leap" } // this is one of the big CL barriers in vanilla + ] }, + { "from": "GoSY - Elevator", "to": "GoSY - Below Elevator & Upper Cave Portals", "requires": [] }, // fall + { "from": "GoSY - Elevator", "to": "GoSY - Upper Right Exit", "requires": [ { "item": "Cloud Leap" } ] }, + { "from": "GoSY - Upper Right Exit", "to": "GoSY - Elevator", "requires": [] }, // fall + { "from": "GoSY - Root Node", "to": "GH - Root Node", "requires": [] }, // one-way fall (scripted on first visit) - { "from": "GoSY - Root Node", "to": "GoSY - Lower Right Exit", "requires": [] }, // fake for testing + { "from": "GoSY - Upper Right Exit", "to": "GoSE - Lower Exit", "requires": [] }, + { "from": "GoSE - Lower Exit", "to": "GoSY - Upper Right Exit", "requires": [] }, // Grotto of Scriptures (East) + { "from": "GoSE - Lower Exit", "to": "GoSE - Spike Ball Hall Floor", "requires": [ { "item": "Cloud Leap" } ] }, + { "from": "GoSE - Spike Ball Hall Floor", "to": "GoSE - Lower Exit", "requires": [] }, // fall + { "from": "GoSE - Spike Ball Hall Floor", "to": "GoSE - Spike Ball Hall Platforms", "requires": [ { "item": "Cloud Leap" } ] }, // DJ AND (grapple OR AD) + { "from": "GoSE - Spike Ball Hall Platforms", "to": "GoSE - Spike Ball Hall Floor", "requires": [] }, // fall + { "from": "GoSE - Spike Ball Hall Platforms", "to": "GoSE - Root Node", "requires": [ { "anyOf": [ + { "item": "Air Dash" }, { "item": "Cloud Leap" } + ] } ] }, // DJ or (grapple AND AD) + { "from": "GoSE - Root Node", "to": "GoSE - Spike Ball Hall Platforms", "requires": [] }, // fall + { "from": "GoSE - Root Node", "to": "GoSE - Middle Exit", "requires": [] }, // fall + { "from": "GoSE - Middle Exit", "to": "GoSE - Root Node", "requires": [ + { "item": "Cloud Leap" } // to jump over the spike balls, in case you didn't get it 1st try and the pillars are no longer there + ] }, + { "from": "GoSE - Root Node", "to": "GoSE - Outside Yin Jifu's Tomb", "requires": [] }, // fall slightly, portal on right + { "from": "GoSE - Outside Yin Jifu's Tomb", "to": "GoSE - Stone Carvings", "requires": [] }, // one-way door + // we mostly ignore the logic for *exiting* YJ tomb regions, because this is the only way into any of them + { "from": "GoSE - Outside Yin Jifu's Tomb", "to": "GoSE - Yin Jifu's Spike Ball Puzzle", "requires": [ { "anyOf": [ + { "item": "Air Dash" }, { "item": "Cloud Leap" } + ] } ] }, + { "from": "GoSE - Yin Jifu's Spike Ball Puzzle", "to": "GoSE - Yin Jifu's Tomb", "requires": [ { "anyOf": [ + { "item": "Tai-Chi Kick" }, { "item": "Unbounded Counter" } // to fight lurkers + ] } ] }, + // but the GG tomb regions have interesting connections from GoSW and YJ's tomb, so these have to be as thorough as usual + { "from": "GoSE - Root Node", "to": "GoSE - Outside Guiguzi's Tomb", "requires": [ + { "item": "Cloud Leap" } // to the portal above and left of the root node + ] }, + { "from": "GoSE - Outside Guiguzi's Tomb", "to": "GoSE - Root Node", "requires": [] }, // portal, fall + { "from": "GoSE - Outside Guiguzi's Tomb", "to": "GoSE - Upper Exit", "requires": [ { "item": "Cloud Leap" } ] }, + { "from": "GoSE - Upper Exit", "to": "GoSE - Outside Guiguzi's Tomb", "requires": [] }, // fall + { "from": "GoSE - Outside Guiguzi's Tomb", "to": "GoSE - Stone Carvings", "requires": [ { "item": "Cloud Leap" } ] }, + { "from": "GoSE - Stone Carvings", "to": "GoSE - Outside Guiguzi's Tomb", "requires": [] }, // fall + { "from": "GoSE - Stone Carvings", "to": "GoSE - Upper Exit", "requires": [ { "item": "Cloud Leap" } ] }, + { "from": "GoSE - Upper Exit", "to": "GoSE - Stone Carvings", "requires": [ { "item": "Cloud Leap" } ] }, + { "from": "GoSE - Outside Guiguzi's Tomb", "to": "GoSE - Guiguzi's Tomb", "requires": [ + { "item": "Cloud Leap" }, // technically unnecessary if you start from Upper Exit, but + // that implies teleporting/quit-and-reloading if you mess it up, so I'd rather not + { "item": "Mystic Nymph: Scout Mode" } // to release the spike ball + ] }, + + { "from": "GoSE - Middle Exit", "to": "GoSW - Lower Right Exits", "requires": [] }, + { "from": "GoSW - Lower Right Exits", "to": "GoSE - Middle Exit", "requires": [] }, + + { "from": "GoSE - Upper Exit", "to": "GoSW - Upper Right Exit", "requires": [] }, + { "from": "GoSW - Upper Right Exit", "to": "GoSE - Upper Exit", "requires": [] }, + // Grotto of Scriptures (West) + // First, the regions available "early", before completing enough of East Grotto to find the upper entrance + { "from": "GoSW - Lower Right Exits", "to": "GoSW - Cixing Arena", "requires": [] }, // fall + { "from": "GoSW - Cixing Arena", "to": "GoSW - Lower Right Exits", "requires": [ { "anyOf": [ + { "item": "Air Dash" }, { "item": "Cloud Leap" } + ] } ] }, // grapple AND (DJ up OR AD across to warp) + { "from": "GoSW - Cixing Arena", "to": "GoSW - Lower Left Transporter", "requires": [ { "anyOf": [ + { "item": "Air Dash" }, { "item": "Cloud Leap" } + ] } ] }, // grapple AND (AD OR DJ) + // And since these are also simple and isolated, we'll do the Lear's grave stuff next + { "from": "GoSW - Cixing Arena", "to": "GoSW - Lear's Grave", "requires": [ + // to activate the door and force Cixing to spawn in defense + { "location": "GoS (East): Examine Mural in Yin Jifu's Tomb" }, + { "location": "GoS (East): Examine Mural in Guiguzi's Tomb" }, + { "location": "GoS (West): Examine Mural in Luyan's Tomb" }, + // to defeat Cixing + { "item": "Tai-Chi Kick" }, // combat logic: specifically Cixing's crimson thrust combo needs kick IMO + // to reach the part of the grave with items in it + { "item": "Charged Strike" } + ] }, + // Now for the messy part of West Grotto: the semi-scripted progression from + // upper right exit to Ji fight through the rotating platforms puzzle. + // Remember that unlike vanilla we might be starting at the GoSW node. + { "from": "GoSW - Upper Right Exit", "to": "GoSW - Root Node", "requires": [ { "anyOf": [ + { "item": "Air Dash" }, { "item": "Cloud Leap" } + // The first time, when the spike ball chases you, the final jump requires just CL. + // But if you die or TP out and come back this way later, using the ropes and portals, then + // jumping over the stationary spike ball and climbing up to the node is (DJ OR AD) AND WC. + ] } ] }, + { "from": "GoSW - Upper Right Exit", "to": "GoSW - Lower Platform Rotation Button", "requires": [] }, // rope to portal, fall + { "from": "GoSW - Root Node", "to": "GoSW - Lower Platform Rotation Button", "requires": [] }, // fall + { "from": "GoSW - Lower Platform Rotation Button", "to": "GoSW - Lower Right Exits", "requires": [] }, // press button, fall, go right and open one-way door + { "from": "GoSW - Lower Platform Rotation Button", "to": "GoSW - Spike Ball Release", "requires": [ + // open one-way door to Lower Right Exits as described above, then reset and return here + // walk all the way right, drop down where the shortcut rope is, then walk left through the now-open door + { "anyOf": [ { "item": "Air Dash" }, { "item": "Cloud Leap" } ] } // to cross the spikes down here + // continue left into the portal, then on the other side keep walking left to the hack point + ] }, + { "from": "GoSW - Spike Ball Release", "to": "GoSW - Luyan's Tomb", "requires": [ + // the portal at SBR lets you take shortcut ropes and more portals back and forth to the platform rotation button + // then you just need WC to climb the vertical platform from the SBR side + ] }, + { "from": "GoSW - Spike Ball Release", "to": "GoSW - Above Western Cliffs", "requires": [ + { "item": "Tai-Chi Kick" }, { "item": "Cloud Leap" } + ] }, + { "from": "GoSW - Above Western Cliffs", "to": "GoSW - Root Node", "requires": [ + { "item": "Mystic Nymph: Scout Mode" } // to open the one-way door + ] }, + { "from": "GoSW - Above Western Cliffs", "to": "GoSW - Upper Left Exit", "requires": [] }, // one-way bridge hack + + { "from": "GoSW - Upper Right Exit", "to": "GoSW - Lower Right Exits", "requires": [] }, // rope to portal, fall, press button for vertical green platforms, fall, one-way door + { "from": "GoSW - Root Node", "to": "GoSW - Lower Right Exits", "requires": [] }, // fall, press button for vertical green platforms, fall, one-way door + + { "from": "GoSW - Lower Right Exits", "to": "GoSY - Elevator", "requires": [] }, // one-way elevator + +// { "from": "GoSW - Lower Left Transporter", "to": "EDP - Lower Right Transporter", "requires": [] }, +// { "from": "EDP - Lower Right Transporter", "to": "GoSW - Lower Left Transporter", "requires": [] }, +// +// { "from": "GoSW - Upper Left Exit", "to": "EDP - Upper Right Exit", "requires": [] }, +// { "from": "EDP - Upper Right Exit", "to": "GoSW - Upper Left Exit", "requires": [] }, + // Ancient Stone Pillar + // No root node in here, so no need for a 2nd region. + { "from": "GoSW - Above Western Cliffs", "to": "ASP - After Ji", "requires": [] }, // TODO: combat logic? + // Sky Tower // Empyrean Dist. (Passages) // Empyrean Dist. (Living Area) diff --git a/worlds/nine_sols/shared_static_logic/locations.jsonc b/worlds/nine_sols/shared_static_logic/locations.jsonc index a2bc2c7d41fd..fe0c8a9da0d0 100644 --- a/worlds/nine_sols/shared_static_logic/locations.jsonc +++ b/worlds/nine_sols/shared_static_logic/locations.jsonc @@ -990,9 +990,206 @@ }, // Grotto of Scriptures (Entry) + { + "address": 3001, "name": "GoS (Entry): Examine Painting", + "region": "GoSY - Root Node", "requires": [] + }, + { + "address": 3002, "name": "GoS (Entry): Examine Coffin", + "region": "GoSY - Root Node", "requires": [] + }, + { + "address": 3003, "name": "GoS (Entry): Poem Treasure 1st Chest", + "region": "GoSY - Treasure Room", "requires": [] + }, + { + "address": 3004, "name": "GoS (Entry): Poem Treasure 2nd Chest", + "region": "GoSY - Treasure Room", "requires": [] + }, + { + "address": 3005, "name": "GoS (Entry): Poem Treasure 3rd Chest", + "region": "GoSY - Treasure Room", "requires": [] + }, + { + "address": 3006, "name": "GoS (Entry): Poem Treasure 4th Chest", + "region": "GoSY - Treasure Room", "requires": [] + }, + { + "address": 3007, "name": "GoS (Entry): Poem Treasure 5th Chest", + "region": "GoSY - Treasure Room", "requires": [] + }, + { + "address": 3008, "name": "GoS (Entry): Poem Treasure 6th Chest", + "region": "GoSY - Treasure Room", "requires": [] + }, + { + "address": 3009, "name": "GoS (Entry): Lower Caves Portal", + "region": "GoSY - Middle Caves & Lower Portals", "requires": [] + }, + { + "address": 3010, "name": "GoS (Entry): Lower Left Caves", + "region": "GoSY - Lower Right Exit", "requires": [] + }, + { + "address": 3011, "name": "GoS (Entry): Alcove Above Middle Caves Portal", + "region": "GoSY - Middle Caves & Lower Portals", "requires": [] + }, + { + "address": 3012, "name": "GoS (Entry): Yellow Pool Above Middle Caves Portal", + "region": "GoSY - Middle Caves & Lower Portals", "requires": [] + }, + { + "address": 3013, "name": "GoS (Entry): Upper Right Caves Portal 1st Chest", + "region": "GoSY - Below Elevator & Upper Cave Portals", "requires": [] + }, + { + "address": 3014, "name": "GoS (Entry): Upper Right Caves Portal 2nd Chest", + "region": "GoSY - Below Elevator & Upper Cave Portals", "requires": [] + }, + { + "address": 3015, "name": "GoS (Entry): Upper Right Caves Portal 3rd Chest", + "region": "GoSY - Below Elevator & Upper Cave Portals", "requires": [] + }, + { + "address": 3016, "name": "GoS (Entry): Near Greenhouse Roof", + "region": "GoSY - Below Elevator & Upper Cave Portals", "requires": [] + }, + { + "address": 3017, "name": "GoS (Entry): Greenhouse Between Elevators", + "region": "GoSY - Elevator", "requires": [ { "item": "Cloud Leap" } ] + // ^ this will need a proper region if we ever get "Elevator Skip" in logic + }, + { + "address": 3018, "name": "GoS (Entry): Near Upper Right Exit", + "region": "GoSY - Upper Right Exit", "requires": [ { "item": "Charged Strike" } ] + }, + // Grotto of Scriptures (East) + { + "address": 3101, "name": "GoS (East): Lurker Near Lower Exit", + "region": "GoSE - Lower Exit", "requires": [] + }, + { + "address": 3102, "name": "GoS (East): Guarded By Phantom Ninja", + "region": "GoSE - Spike Ball Hall Floor", "requires": [] + }, + { + "address": 3103, "name": "GoS (East): Spike Ball Hall Upper Right", + "region": "GoSE - Spike Ball Hall Platforms", "requires": [] + }, + { + "address": 3104, "name": "GoS (East): Spike Ball Hall Upper Left", + "region": "GoSE - Spike Ball Hall Platforms", "requires": [ { "anyOf": [ + { "item": "Air Dash" }, { "item": "Cloud Leap" } + ] } ] + }, + { + "address": 3105, "name": "GoS (East): Lurkers Under Tunnel Walkway", + "region": "GoSE - Root Node", "requires": [] + }, + { + "address": 3106, "name": "GoS (East): Portal Below Root Node", + "region": "GoSE - Root Node", "requires": [] + }, + { + "address": 3107, "name": "GoS (East): Alcove Between Tombs 1st Chest", + "region": "GoSE - Outside Yin Jifu's Tomb", "requires": [] + }, + { + "address": 3108, "name": "GoS (East): Alcove Between Tombs 2nd Chest", + "region": "GoSE - Outside Yin Jifu's Tomb", "requires": [] + }, + { + "address": 3109, "name": "GoS (East): Alcove Between Tombs 3rd Chest", + "region": "GoSE - Outside Yin Jifu's Tomb", "requires": [] + }, + { + "address": 3110, "name": "GoS (East): Upper Right of Room Above Yin Jifu's Tomb", + "region": "GoSE - Yin Jifu's Spike Ball Puzzle", "requires": [] + }, + { + "address": 3111, "name": "GoS (East): Examine Mural in Yin Jifu's Tomb", + "region": "GoSE - Yin Jifu's Tomb", "requires": [] // Bullet Deflect skill (or UC + Divine Hand Jade???) + // this will be the sticking point for skill tree rando + }, + { + "address": 3112, "name": "GoS (East): Examine Stone Carvings", + "region": "GoSE - Stone Carvings", "requires": [] + }, + { + "address": 3113, "name": "GoS (East): Outside Guiguzi's Tomb", + "region": "GoSE - Guiguzi's Tomb", "requires": [ { "item": "Cloud Leap" } ] + }, + { + "address": 3114, "name": "GoS (East): Examine Mural in Guiguzi's Tomb", + "region": "GoSE - Guiguzi's Tomb", "requires": [ + { "item": "Unbounded Counter" }, + { "item": "Tai-Chi Kick" } + ] // Bullet Deflect is optional here since UC covers those statues + }, + // Grotto of Scriptures (West) + { + "address": 3201, "name": "GoS (West): Above Elevator", + "region": "GoSW - Lower Right Exits", "requires": [ + { "item": "Cloud Leap" } // from the upper portal + ] + }, + { + "address": 3202, "name": "GoS (West): Platforms In Top Middle Room", + "region": "GoSW - Spike Ball Release", "requires": [ + // portal next to SBR is the only way to the upper half of this room + { "item": "Cloud Leap" } // without the collapsing platforms, AD might also work + ] // does NOT require spike ball chase + }, + { + "address": 3203, "name": "GoS (West): Below Western Cliffs", + "region": "GoSW - Spike Ball Release", "requires": [ { "anyOf": [ + { "item": "Air Dash" }, { "item": "Cloud Leap" } + ] } ] // DOES require spike ball chase, so if you spawned at GoSW node you may need to trigger it + }, + { + "address": 3204, "name": "GoS (West): Below Luyan's Tomb", + "region": "GoSW - Luyan's Tomb", "requires": [] // does NOT require spike ball chase + }, + { + "address": 3205, "name": "GoS (West): Examine Mural in Luyan's Tomb", + "region": "GoSW - Luyan's Tomb", "requires": [ + { "item": "Cloud Leap" }, // to get from the chest platform up to the entrance + { "item": "Unbounded Counter" } // for the parry challenge + ] // DOES require spike ball chase, so if you spawned at GoSW node you may need to trigger it + }, + { + "address": 3206, "name": "GoS (West): Yin Jifu's Tianhou Flower", + "region": "GoSW - Lear's Grave", "requires": [] + }, + { + "address": 3207, "name": "GoS (West): Guiguzi's Tianhou Flower", + "region": "GoSW - Lear's Grave", "requires": [] + }, + { + "address": 3208, "name": "GoS (West): Luyan's Tianhou Flower", + "region": "GoSW - Lear's Grave", "requires": [] + }, + { + "address": 3209, "name": "GoS (West): Chest in Lear's Grave", + "region": "GoSW - Lear's Grave", "requires": [] + }, + // Ancient Stone Pillar + { + "address": 3301, "name": "Examine Ji", + "region": "ASP - After Ji", "requires": [] + }, + { + "address": 3302, "name": "Ji's Vital Sanctum", + "region": "ASP - After Ji", "requires": [] + }, + { + "address": 3303, "name": "Retrieve Chip From Shanhai 1000", + "region": "ASP - After Ji", "requires": [] + }, + // Sky Tower // Empyrean Dist. (Passages) // Empyrean Dist. (Living Area) diff --git a/worlds/nine_sols/shared_static_logic/static_logic.pickle b/worlds/nine_sols/shared_static_logic/static_logic.pickle index 7e719331e0ad3d0fa35134680ffb3f20e5f7f2ed..e193840ea77fd617b78f5cd859f5d18a9ef4eb42 100644 GIT binary patch literal 64671 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