Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cross-room grapple jumps #1922

Merged
merged 5 commits into from
Feb 1, 2025
Merged

Conversation

blkerby
Copy link
Contributor

@blkerby blkerby commented Jan 29, 2025

This addresses #1006. It adds

  • Tech canPreciseGrappleJump, intended for Extreme difficulty, to fit in between canGrappleJump (Expert) and canTrickyGrappleJump (Insane).
  • Exit conditions leaveWithGrappleSwing and leaveWithGrappleJump, and corresponding entrance conditions comeInWithGrappleSwing and comeInWithGrappleJump.
  • Strats for setups and applications of cross-room grapple swings & grapple jumps.

Some things left out for now:

  • Heat frames for the setups and applications. I just assume h_heatProof because it generally didn't seem very reasonable to expect getting it on a small number of attempts. It could be refined later.
  • Application to grapple jump up Crumble Shaft. This would only be to save heat frames compared to crumble jumping. But again, since we're just assuming h_heatProof for these strats, it would serve no purpose. With grapple jumping here, it is particularly tricky to avoid the crumble blocks and Sovas.
  • Grapple jumping while carrying a flash suit. If we considered this, there also would be a couple more applications, in Grapple Beam Room and Caterpillar Room. But maintaining a flash suit while executing a grapple fling and grapple jump seems very difficult, and I didn't want to think about it, so it's just treated as not being possible.
  • Grapple jumping after a grapple teleport. There are some good strats to be added here, but this PR is already big so it's just left out for now.

The main difference between the two sets of exit/entrance conditions is that leaveWithGrappleSwing encodes information about the location of the block, to be able to account for Samus' momentum through the transition; whereas leaveWithGrappleJump assumes you are going up through a vertical door with no horizontal momentum, so only Samus' position in the doorway matters while the location of the Grapple block is irrelevant and potentially unknown (e.g. in case of grapple jumping up through the door of Fish Tank or Glass Tunnel, where the block would be in a previous room).

Compared to what we did with grapple teleports and Samus Eater teleports, the exit/entrance conditions are using a more verbose format to list information about the usable Grapple blocks. This was necessary because there are some cases where blocks in the same position can behave differently due to other features of the room. This format created the opportunity to include a note field where we can specify the relevant room names, which I think makes the strats a lot more readable. If we wanted, we could convert grapple teleports and Samus Eater teleports to use a similar format later.

In the strats, I'm not listing every Grapple block that could be used, only a minimal set needed to cover all applications. Similarly, the obstructions field on the blocks is not used comprehensively, only where needed to disambiguate cases where the setup behaves differently in spite of the block being in the same position as another room; it was only needed in Red Brinstar Firefleas Room. In principle, we could also add a field to describe the fast-crumbling block in Pants Room, but it wasn't needed since this combination of block location and environment (water) was already unique. If the data is ever applied to larger sets of room (e.g. mirrored or with randomized environments) then this would all need to be looked at closely again.

Copy link
Contributor

@osse101 osse101 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I only tested a few and did not check the block numbers.

  • Red Brin Firefleas was very hard to exit with the obstruction. Wasn't able to do it.
  • Pants room might not let you get up to full fling speed. But you noted that where it came up.
  • Screw may be able to help in a few cases. Or using other kill enemy weapons.
  • The note saying which room has the block arrangement is very helpful.

strats.md Outdated Show resolved Hide resolved
strats.md Outdated Show resolved Hide resolved
region/maridia/inner-yellow/Maridia Elevator Room.json Outdated Show resolved Hide resolved
region/maridia/outer/Mt. Everest.json Outdated Show resolved Hide resolved
@@ -4246,6 +4306,23 @@
"In the model, that'll be represented by going 2 -> 9 -> 5 via two shinespark strats."
]
},
{
"link": [9, 5],
"name": "Leave With Grapple Swing",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a leaveWithGrappleJump missing?
I use the blocks below the door to align with the sides, if that matters.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be possible to leave with that condition but currently I don't think it would add anything new. Aside from Everest itself, the two rooms with comeInWithGrappleJump entrance condition are Main Street and Red Fish Room, and those also have entrance conditions for comeInWithGrappleSwing from the Everest location. Added a devNote now to explain.

@blkerby
Copy link
Contributor Author

blkerby commented Jan 31, 2025

I only tested a few and did not check the block numbers.

* Red Brin Firefleas was very hard to exit with the obstruction.  Wasn't able to do it.

Yeah, it's tricky but once you get the feel for it I think it's not the worst. For me the main thing was to get used to the pattern of swinging back and forth while extending Grapple when moving right, and retracting it when moving left, to avoid the obstruction, like in this video: https://videos.maprando.com/video/4382.

* Screw may be able to help in a few cases.  Or using other kill enemy weapons.

Gave it a try just now in Kassiuz Room, and it looks like when in the grapple jumping state, Screw Attack does not kill the enemy nor protect you. There were other possible ways to kill the Choot though (Missile, Super, Plasma) so I added those.

In Main Street I didn't find a way yet to kill the Skultera while continuing grapple jumping (from either the right or bottom door), though it wouldn't surprise me if there's something that can be done. I saw that it's technically possible to dodge it when entering from the bottom with HiJump but it seems very precise; added a devNote about it. Power Bombs is something I didn't try yet so maybe that could work.

Copy link
Contributor

@osse101 osse101 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Weird that screw doesn't work in grapple state 🤷

@blkerby blkerby merged commit f7eef40 into vg-json-data:master Feb 1, 2025
1 check passed
@blkerby blkerby deleted the grapple-jumps-2 branch February 4, 2025 23:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants