From f20c3965f72a06d3b5a0e016926e647bf92b728b Mon Sep 17 00:00:00 2001 From: Brent Kerby Date: Wed, 2 Apr 2025 12:20:57 -0600 Subject: [PATCH] add wallJumpAvoid to strat and notable schema --- region/tourian/main/Tourian Escape Room 4.json | 6 ++++++ schema/m3-room.schema.json | 12 ++++++++++++ strats.md | 9 +++++++++ 3 files changed, 27 insertions(+) diff --git a/region/tourian/main/Tourian Escape Room 4.json b/region/tourian/main/Tourian Escape Room 4.json index ce7f4a5b5e..30a13f0f58 100644 --- a/region/tourian/main/Tourian Escape Room 4.json +++ b/region/tourian/main/Tourian Escape Room 4.json @@ -658,6 +658,7 @@ "requires": [{"acidFrames": 110}] } ], + "wallJumpAvoid": true, "note": [ "Climbing the shaft with Space Jump is slower than other methods, so it is necessary to move quickly in order to minimize acid damage.", "After reaching the top, fall down the right side to land on the platform below the door, taking a dip in acid before jumping into the door." @@ -692,6 +693,7 @@ "requires": [{"acidFrames": 110}] } ], + "wallJumpAvoid": true, "note": [ "Climbing the shaft with Space Jump is slower than other methods, so it is necessary to move quickly in order to minimize acid damage.", "With each Space Jump, release jump early rather than doing a full-height jump, in order to be able to Space Jump again more quickly.", @@ -728,6 +730,7 @@ "leaveNormally": {} }, "unlocksDoors": [{"types": ["ammo"], "requires": ["never"]}], + "wallJumpAvoid": true, "note": [ "Climbing the shaft with Space Jump is slower than other methods, so it is necessary to move quickly in order to minimize acid damage.", "With each Space Jump, release jump early rather than doing a full-height jump, in order to be able to Space Jump again more quickly.", @@ -760,6 +763,7 @@ "leaveNormally": {} }, "unlocksDoors": [{"types": ["ammo"], "requires": ["never"]}], + "wallJumpAvoid": true, "note": [ "Climbing the shaft with Space Jump is slower than other methods, so it is necessary to move quickly in order to minimize acid damage.", "With each Space Jump, release jump early rather than doing a full-height jump, in order to be able to Space Jump again more quickly.", @@ -812,6 +816,7 @@ "leaveNormally": {} }, "unlocksDoors": [{"types": ["ammo"], "requires": ["never"]}], + "wallJumpAvoid": true, "note": [ "Climbing the shaft with Space Jump is slower than other methods, so it is necessary to move quickly in order to minimize acid damage.", "With each Space Jump, release jump early rather than doing a full-height jump, in order to be able to Space Jump again more quickly.", @@ -1006,6 +1011,7 @@ { "id": 4, "name": "Bootless Walljumpless Space Jump", + "wallJumpAvoid": true, "note": [ "Climbing the shaft with Space Jump is slower than other methods, so it is necessary to move quickly in order to minimize acid damage.", "It is possible to climb faster by releasing jump early, rather than doing full-height jumps, in order to be able to Space Jump again more quickly." diff --git a/schema/m3-room.schema.json b/schema/m3-room.schema.json index 847ea57476..0c748615f3 100644 --- a/schema/m3-room.schema.json +++ b/schema/m3-room.schema.json @@ -1499,6 +1499,12 @@ } } }, + "wallJumpAvoid": { + "type": "boolean", + "title": "Wall Jump Avoid", + "default": false, + "description": "If true, indicates that the strat is only useful if the wall jump ability were somehow not possible to use." + }, "flashSuitChecked": { "type": "boolean", "title": "Flash Suit Checked", @@ -2331,6 +2337,12 @@ ], "pattern": "^(.*)$" }, + "wallJumpAvoid": { + "type": "boolean", + "title": "Wall Jump Avoid", + "default": false, + "description": "If true, indicates that the notable is only useful if the wall jump ability were somehow not possible to use." + }, "note": { "type": ["string", "array"], "title": "Strat Description", diff --git a/strats.md b/strats.md index 4c0a05cbb5..4a82b7003e 100644 --- a/strats.md +++ b/strats.md @@ -19,6 +19,7 @@ A `strat` can have the following properties: * _collectsItems_: An array listing items that are collected as part of this strat (e.g. for G-mode remote item acquire). * _setsFlags_: An array listing game flags that are set as part of this strat. These properties are described below in more detail. + * _wallJumpAvoid_: A boolean, which if true indicates that the strat is only useful if wall jump were somehow not possible to use. * _flashSuitChecked_: Indicates that the logical requirements of the strat have been verified to be logically sound with respect to whether a flash suit can be carried or not. Note that a `true` value does not necessarily mean that a flash suit can be carried with this strat, only that its logical requirements can be relied on to determine whether it can or not. ### Example @@ -1729,6 +1730,14 @@ A `setsFlags` array lists the names of game flags that become set (if not alread } ``` +## Wall Jump Avoid + +A `wallJumpAvoid` boolean can be used to indicate that a strat is only useful if wall jump is for some reason not possible to do, e.g. in case the wall jump ability is disabled due to a randomizer modification. By default, this property is `false`. + +This property should not be used in every case where a wall jump could be an alternative to the strat. Rather, it should only be used on strats that would be pointless if the player has the ability to wall jump. In other words, strats with `"wallJumpAvoid": true` should be ones where if the player has the ability to wall jump, then there would be no reason to ever do the strat. This property can then be used to filter out irrelevant strats in contexts where wall jump is available. + +Some strats may have components (as alternatives within an `or`) that are useful only in scenarios without the wall jump ability. However, the `"wallJumpAvoid": true` should only be used if the entire strat becomes useless in the presence of an ability to wall jump. + ## Starts With Shinecharge The `startsWithShineCharge` property indicates that a strat must start while in a shinecharge state, from a shinecharge obtained in an earlier strat. The amount of frames required is determined by `shineChargeFrames` requirements in this strat. A strat with `"startsWithShineCharge": true` is only logically valid if it immediately follows a strat with `"endsWithShineCharge": true`.