From 00a8d2064b36f8375a8ebc3ff62434c4b7c8cf1e Mon Sep 17 00:00:00 2001 From: kjbranch Date: Mon, 30 Mar 2026 00:41:40 -0600 Subject: [PATCH 1/4] Add Crystal Sparks in Green Maridia --- .../maridia/inner-green/East Pants Room.json | 19 ++++ .../maridia/inner-green/East Sand Hall.json | 34 +++++++ .../maridia/inner-green/Lonely Crab Room.json | 88 +++++++++++++++++++ region/maridia/inner-green/Oasis.json | 63 +++++++++++++ region/maridia/inner-green/Shaktool Room.json | 15 ++++ .../maridia/inner-green/Spring Ball Room.json | 16 ++++ .../maridia/inner-green/West Sand Hall.json | 35 ++++++++ 7 files changed, 270 insertions(+) diff --git a/region/maridia/inner-green/East Pants Room.json b/region/maridia/inner-green/East Pants Room.json index fbff0c7ed1..082294c7b0 100644 --- a/region/maridia/inner-green/East Pants Room.json +++ b/region/maridia/inner-green/East Pants Room.json @@ -490,6 +490,25 @@ ], "flashSuitChecked": true }, + { + "link": [2, 2], + "name": "Come in Shinecharging, Crystal Spark", + "entranceCondition": { + "comeInShinecharging": { + "length": 4, + "openEnd": 0 + }, + "comesInHeated": "no" + }, + "requires": [ + "Gravity", + "h_CrystalSpark" + ], + "flashSuitChecked": true, + "blueSuitChecked": true, + "note": "Use the first half of the runway in order to avoid the Puyo jumping into Samus.", + "devNote": "It doesn't seem reasonable to use blue speed to kill the Puyo without falling through the crumbles." + }, { "id": 17, "link": [2, 2], diff --git a/region/maridia/inner-green/East Sand Hall.json b/region/maridia/inner-green/East Sand Hall.json index ddb50b87d4..d3f5ac2ac0 100644 --- a/region/maridia/inner-green/East Sand Hall.json +++ b/region/maridia/inner-green/East Sand Hall.json @@ -200,6 +200,23 @@ ], "flashSuitChecked": true }, + { + "link": [1, 1], + "name": "Come in Shinecharging, Crystal Spark", + "entranceCondition": { + "comeInShinecharging": { + "length": 3, + "openEnd": 0 + }, + "comesInHeated": "no" + }, + "requires": [ + "Gravity", + "h_CrystalSpark" + ], + "flashSuitChecked": true, + "blueSuitChecked": true + }, { "id": 3, "link": [1, 1], @@ -1458,6 +1475,23 @@ ], "flashSuitChecked": true }, + { + "link": [2, 2], + "name": "Come in Shinecharging, Crystal Spark", + "entranceCondition": { + "comeInShinecharging": { + "length": 3, + "openEnd": 0 + }, + "comesInHeated": "no" + }, + "requires": [ + "Gravity", + "h_CrystalSpark" + ], + "flashSuitChecked": true, + "blueSuitChecked": true + }, { "id": 39, "link": [2, 2], diff --git a/region/maridia/inner-green/Lonely Crab Room.json b/region/maridia/inner-green/Lonely Crab Room.json index 817c34cc79..f259264acf 100644 --- a/region/maridia/inner-green/Lonely Crab Room.json +++ b/region/maridia/inner-green/Lonely Crab Room.json @@ -425,6 +425,55 @@ "and Samus should be in the correct position with subpixels $3FFF." ] }, + { + "link": [1, 1], + "name": "Come in Shinecharging, Crystal Spark (Short Runway)", + "entranceCondition": { + "comeInShinecharging": { + "length": 3, + "openEnd": 0 + }, + "comesInHeated": "no" + }, + "requires": [ + "Gravity", + {"or": [ + {"and": [ + "h_enemyDrops", + "h_CrystalSparkWithoutLenience" + ]}, + "h_CrystalSpark" + ]} + ], + "flashSuitChecked": true, + "blueSuitChecked": true, + "note": "Only using a small portion of the runway will ensure that the crab dies before it reaches Samus." + }, + { + "link": [1, 1], + "name": "Come in Shinecharging, Crystal Spark", + "entranceCondition": { + "comeInShinecharging": { + "length": 6, + "openEnd": 0 + }, + "comesInHeated": "no" + }, + "requires": [ + "Gravity", + "canInsaneJump", + {"or": [ + {"and": [ + "h_enemyDrops", + "h_CrystalSparkWithoutLenience" + ]}, + "h_CrystalSpark" + ]} + ], + "flashSuitChecked": true, + "blueSuitChecked": true, + "note": "Samus is only able to use about half of the runway and be able to Crystal Spark before the crab reaches her." + }, { "id": 5, "link": [1, 1], @@ -1193,6 +1242,29 @@ "and Samus should be in the correct position with subpixels $3FFF." ] }, + { + "link": [2, 2], + "name": "Come in Shinecharging, Crystal Spark", + "entranceCondition": { + "comeInShinecharging": { + "length": 12, + "openEnd": 0 + }, + "comesInHeated": "no" + }, + "requires": [ + "Gravity", + {"or": [ + {"and": [ + "h_enemyDrops", + "h_CrystalSparkWithoutLenience" + ]}, + "h_CrystalSpark" + ]} + ], + "flashSuitChecked": true, + "blueSuitChecked": true + }, { "id": 30, "link": [2, 2], @@ -1581,6 +1653,22 @@ "The `h_getBlueSpeedMaxRunway` requirement is to satisfy the tests,", "since we don't have a way to represent that the temporary blue originates from the startsWithShineCharge." ] + }, + { + "link": [4, 2], + "name": "Crystal Spark", + "startsWithShineCharge": true, + "requires": [ + {"or": [ + {"and": [ + "h_enemyDrops", + "h_underwaterCrystalSparkWithoutLenience" + ]}, + "h_underwaterCrystalSpark" + ]} + ], + "flashSuitChecked": true, + "blueSuitChecked": true } ], "notables": [], diff --git a/region/maridia/inner-green/Oasis.json b/region/maridia/inner-green/Oasis.json index f2fb538cbd..eff4fe58d1 100644 --- a/region/maridia/inner-green/Oasis.json +++ b/region/maridia/inner-green/Oasis.json @@ -3279,6 +3279,35 @@ "clearsObstacles": ["A"], "flashSuitChecked": true }, + { + "link": [5, 5], + "name": "Crystal Spark (In-Room)", + "requires": [ + "Gravity", + {"or": [ + {"canShineCharge": {"usedTiles": 12, "openEnd": 0}}, + {"and": [ + {"or": [ + {"doorUnlockedAtNode": 1}, + {"doorUnlockedAtNode": 2} + ]}, + {"canShineCharge": {"usedTiles": 13, "openEnd": 0}} + ]}, + {"and": [ + {"doorUnlockedAtNode": 1}, + {"doorUnlockedAtNode": 2}, + {"canShineCharge": {"usedTiles": 14, "openEnd": 0}} + ]} + ]}, + "h_CrystalSpark" + ], + "unlocksDoors": [ + {"nodeId": 1, "types": ["ammo"], "requires": []}, + {"nodeId": 2, "types": ["ammo"], "requires": []} + ], + "flashSuitChecked": true, + "blueSuitChecked": true + }, { "id": 61, "link": [5, 6], @@ -3431,6 +3460,23 @@ "since we don't have a way to represent that the temporary blue originates from the startsWithShineCharge." ] }, + { + "link": [7, 1], + "name": "Crystal Spark", + "startsWithShineCharge": true, + "requires": [ + {"or": [ + {"and": [ + "Gravity", + "h_CrystalSpark" + ]}, + "h_underwaterCrystalSpark" + ]} + ], + "clearsObstacles": ["A"], + "flashSuitChecked": true, + "blueSuitChecked": true + }, { "id": 32, "link": [7, 2], @@ -3618,6 +3664,23 @@ "since we don't have a way to represent that the temporary blue originates from the startsWithShineCharge." ] }, + { + "link": [8, 2], + "name": "Crystal Spark", + "startsWithShineCharge": true, + "requires": [ + {"or": [ + {"and": [ + "Gravity", + "h_CrystalSpark" + ]}, + "h_underwaterCrystalSpark" + ]} + ], + "clearsObstacles": ["A"], + "flashSuitChecked": true, + "blueSuitChecked": true + }, { "id": 142, "link": [8, 4], diff --git a/region/maridia/inner-green/Shaktool Room.json b/region/maridia/inner-green/Shaktool Room.json index bccc8f63c0..23c951e83a 100644 --- a/region/maridia/inner-green/Shaktool Room.json +++ b/region/maridia/inner-green/Shaktool Room.json @@ -249,6 +249,21 @@ ], "flashSuitChecked": true }, + { + "link": [1, 1], + "name": "Crystal Spark", + "requires": [ + {"or": [ + "Gravity", + "canWaterShineCharge" + ]}, + "h_shinechargeMaxRunway", + "h_CrystalSpark" + ], + "flashSuitChecked": true, + "blueSuitChecked": true, + "note": "Time the shinecharge for when the water is low." + }, { "id": 6, "link": [1, 1], diff --git a/region/maridia/inner-green/Spring Ball Room.json b/region/maridia/inner-green/Spring Ball Room.json index 803f5df2b7..24977ed739 100644 --- a/region/maridia/inner-green/Spring Ball Room.json +++ b/region/maridia/inner-green/Spring Ball Room.json @@ -62,6 +62,22 @@ ], "flashSuitChecked": true }, + { + "link": [1, 1], + "name": "Come in Shinecharging, Crystal Spark", + "entranceCondition": { + "comeInShinecharging": { + "length": 6, + "openEnd": 0 + }, + "comesInHeated": "no" + }, + "requires": [ + "h_CrystalSpark" + ], + "flashSuitChecked": true, + "blueSuitChecked": true + }, { "id": 3, "link": [1, 2], diff --git a/region/maridia/inner-green/West Sand Hall.json b/region/maridia/inner-green/West Sand Hall.json index 7c26689a5b..fdcd280ee7 100644 --- a/region/maridia/inner-green/West Sand Hall.json +++ b/region/maridia/inner-green/West Sand Hall.json @@ -104,6 +104,23 @@ ], "flashSuitChecked": true }, + { + "link": [1, 1], + "name": "Come in Shinecharging, Crystal Spark", + "entranceCondition": { + "comeInShinecharging": { + "length": 3, + "openEnd": 0 + }, + "comesInHeated": "no" + }, + "requires": [ + "Gravity", + "h_CrystalSpark" + ], + "flashSuitChecked": true, + "blueSuitChecked": true + }, { "id": 3, "link": [1, 2], @@ -858,6 +875,24 @@ ], "flashSuitChecked": true }, + { + "link": [2, 2], + "name": "Come in Shinecharging, Crystal Spark", + "entranceCondition": { + "comeInShinecharging": { + "length": 3, + "openEnd": 0 + }, + "comesInHeated": "no" + }, + "requires": [ + "Gravity", + "canInsaneJump", + "h_CrystalSpark" + ], + "flashSuitChecked": true, + "blueSuitChecked": true + }, { "id": 29, "link": [2, 2], From 68de5dbe852a0aebd961ea4a38c41f12b214a3ea Mon Sep 17 00:00:00 2001 From: kjbranch Date: Mon, 30 Mar 2026 00:44:57 -0600 Subject: [PATCH 2/4] add 0 shineChargeFrames --- region/maridia/inner-green/Lonely Crab Room.json | 1 + region/maridia/inner-green/Oasis.json | 2 ++ 2 files changed, 3 insertions(+) diff --git a/region/maridia/inner-green/Lonely Crab Room.json b/region/maridia/inner-green/Lonely Crab Room.json index f259264acf..8f963f32d9 100644 --- a/region/maridia/inner-green/Lonely Crab Room.json +++ b/region/maridia/inner-green/Lonely Crab Room.json @@ -1659,6 +1659,7 @@ "name": "Crystal Spark", "startsWithShineCharge": true, "requires": [ + {"shineChargeFrames": 0}, {"or": [ {"and": [ "h_enemyDrops", diff --git a/region/maridia/inner-green/Oasis.json b/region/maridia/inner-green/Oasis.json index eff4fe58d1..6fcb0ae88e 100644 --- a/region/maridia/inner-green/Oasis.json +++ b/region/maridia/inner-green/Oasis.json @@ -3465,6 +3465,7 @@ "name": "Crystal Spark", "startsWithShineCharge": true, "requires": [ + {"shineChargeFrames": 0}, {"or": [ {"and": [ "Gravity", @@ -3669,6 +3670,7 @@ "name": "Crystal Spark", "startsWithShineCharge": true, "requires": [ + {"shineChargeFrames": 0}, {"or": [ {"and": [ "Gravity", From 39c5573857ff3ded989065ad55efa1942071e205 Mon Sep 17 00:00:00 2001 From: kjbranch Date: Mon, 30 Mar 2026 00:48:56 -0600 Subject: [PATCH 3/4] lonely crab in room --- .../maridia/inner-green/Lonely Crab Room.json | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/region/maridia/inner-green/Lonely Crab Room.json b/region/maridia/inner-green/Lonely Crab Room.json index 8f963f32d9..75d1e4ecf1 100644 --- a/region/maridia/inner-green/Lonely Crab Room.json +++ b/region/maridia/inner-green/Lonely Crab Room.json @@ -474,6 +474,41 @@ "blueSuitChecked": true, "note": "Samus is only able to use about half of the runway and be able to Crystal Spark before the crab reaches her." }, + { + "link": [1, 1], + "name": "Crystal Spark (In-Room)", + "requires": [ + "Gravity", + {"or": [ + {"canShineCharge": {"usedTiles": 12, "openEnd": 0}}, + {"and": [ + {"or": [ + {"doorUnlockedAtNode": 1}, + {"doorUnlockedAtNode": 2} + ]}, + {"canShineCharge": {"usedTiles": 13, "openEnd": 0}} + ]}, + {"and": [ + {"doorUnlockedAtNode": 1}, + {"doorUnlockedAtNode": 2}, + {"canShineCharge": {"usedTiles": 14, "openEnd": 0}} + ]} + ]}, + {"or": [ + {"and": [ + "h_enemyDrops", + "h_CrystalSparkWithoutLenience" + ]}, + "h_CrystalSpark" + ]} + ], + "unlocksDoors": [ + {"nodeId": 1, "types": ["ammo"], "requires": []}, + {"nodeId": 2, "types": ["ammo"], "requires": []} + ], + "flashSuitChecked": true, + "blueSuitChecked": true + }, { "id": 5, "link": [1, 1], From 741af1b0816fa7c7dfb8af324cdcda50b53f85ce Mon Sep 17 00:00:00 2001 From: kjbranch <61815121+kjbranch@users.noreply.github.com> Date: Mon, 30 Mar 2026 10:12:01 -0600 Subject: [PATCH 4/4] Update region/maridia/inner-green/Shaktool Room.json Co-authored-by: Michael McKenzie --- region/maridia/inner-green/Shaktool Room.json | 1 + 1 file changed, 1 insertion(+) diff --git a/region/maridia/inner-green/Shaktool Room.json b/region/maridia/inner-green/Shaktool Room.json index 23c951e83a..299453a858 100644 --- a/region/maridia/inner-green/Shaktool Room.json +++ b/region/maridia/inner-green/Shaktool Room.json @@ -253,6 +253,7 @@ "link": [1, 1], "name": "Crystal Spark", "requires": [ + {"obstaclesCleared": ["A", "B"]}, {"or": [ "Gravity", "canWaterShineCharge"