vg-json-data / sm-json-data

JSON representations of Super Metroid Game Data
Other
26 stars 12 forks source link

More cross-room movement conditions #1481

Closed blkerby closed 5 months ago

blkerby commented 5 months ago

This creates new exit/entrance conditions to express various cross-room movements that couldn't be modeled well before:

Also created a new tech canPreciseSpaceJump; I think we could possibly want it to subsume canBlueSpaceJump but will save that for later. The issue is that even without blue speed, there are situations where a somewhat high-difficulty tech is justified for carrying momentum with Space Jump, e.g. from the bottom left of West Ocean to the Gravity door, doing a Space Jump at the bottom of the doorway (e.g. for a jump into water in the next room).

For the new exit conditions, I made them all generic as to whether they allow leaving with blue speed, since usually obtaining blue speed or not doesn't affect whether the setup works (as long as the runway is long enough to get a shortcharge). The entrance conditions are more specific, either requiring blue speed or not, since almost always such a strat will only make sense one way or the other, so having blue speed is a critical detail worth being reflected in the name of the entrance condition. We could always add more entrance conditions for the other cases (e.g. "comeInBlueSpaceJumping", or "comeInSpinning") as they come up; I tried to focus on the most important cases for now. For example, usually when bringing blue Space Jump into a room is needed, the entrance condition "comeInBlueSpinning" would be appropriate; so while we could add a more specific condition "comeInBlueSpaceJumping", this would imply a Space Jump at the bottom of the doorway in the previous room, which usually wouldn't be needed when you're just interested in bringing in the blue speed while in spin.

I included just an example or two of each of the new conditions. Even in the rooms I added them in, they're not necessarily intended to be complete; there will be many more strats to add.

blkerby commented 5 months ago

Its unclear when a condition works with a horizontal or vertical door or either.

Good point. Updated the docs to clarify that all these new entrance/exit conditions are appilcable to horizontal transitions (except for leave/comeInWithTemporaryBlue which can also apply to vertical).

These remoteRunway lengths seem hard to measure if it doesn't naturally end 💀

This is true. So far I've been eye-balling them a bit, and trying to err more on the conservative side. For these extra-long runway lengths I'm not sure if the exact lengths are going to end up mattering much anyway. But if we need to, we can use SMART to modify the room to add artificial open/closed ends where we want. As we add more applications, I figure we can test them against the tightest matching setups to make sure they actually work.