Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 80 additions & 6 deletions region/lowernorfair/east/Plowerhouse Room.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,7 @@
"doorEnvironments": [{"physics": "air"}],
"mapTileMask": [
[2, 2, 1]
],
"devNote": "FIXME can leave charged by charging in the acid"
]
},
{
"id": 2,
Expand All @@ -34,8 +33,7 @@
"doorEnvironments": [{"physics": "air"}],
"mapTileMask": [
[1, 2, 2]
],
"devNote": "FIXME can leave charged by charging in the acid"
]
},
{
"id": 3,
Expand Down Expand Up @@ -235,7 +233,7 @@
{
"id": 4,
"link": [1, 2],
"name": "Avoid the Holtzes",
"name": "Zebbo Damage Boost",
"requires": [
"canTrickyJump",
"canHorizontalDamageBoost",
Expand All @@ -248,6 +246,50 @@
"Damage from a Zebbo from the right farm to gain invulnerability frames, then jump through the last two Holtzes."
]
},
{
"link": [1, 2],
"name": "Cross While Farming",
"requires": [
"canFarmWhileShooting",
{"or": [
{"and": [
{"heatFramesWithEnergyDrops": {
"frames": 120,
"drops": [{"enemy": "Zebbo", "count": 1}]
}},
{"heatFramesWithEnergyDrops": {
"frames": 130,
"drops": [{"enemy": "Zebbo", "count": 1}]
}},
{"heatFramesWithEnergyDrops": {
"frames": 140,
"drops": [{"enemy": "Zebbo", "count": 1}]
}},
{"heatFrames": 100}
]},
{"and": [
{"or": [
"Spazer",
"Wave",
"Plasma"
]},
{"heatFramesWithEnergyDrops": {
"frames": 100,
"drops": [{"enemy": "Zebbo", "count": 1}]
}},
{"heatFramesWithEnergyDrops": {
"frames": 100,
"drops": [{"enemy": "Zebbo", "count": 1}]
}},
{"heatFramesWithEnergyDrops": {
"frames": 130,
"drops": [{"enemy": "Zebbo", "count": 1}]
}},
{"heatFrames": 100}
]}
]}
]
},
{
"id": 38,
"link": [1, 2],
Expand Down Expand Up @@ -470,7 +512,7 @@
{
"id": 12,
"link": [2, 1],
"name": "Quick Run Through",
"name": "Zebbo Damage Boost",
"requires": [
"canTrickyJump",
"canHorizontalDamageBoost",
Expand All @@ -479,6 +521,38 @@
],
"flashSuitChecked": true
},
{
"link": [2, 1],
"name": "Tricky Dodge",
"requires": [
"canTrickyDodgeEnemies",
{"or": [
"canInsaneJump",
"canPreciseWalljump"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I think the second jump (the first is bad too) is also an insane jump and a walljump doesn't help with that (because the later holtz blocks the way), so I think trickyDodge would instead take safer path that costs a second.

And I'm not sure how to get 325 because my 3 jumps add up to 310. And doing anything else is over 330.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

If the last jump is done too badly then the Holtz would get in your way yeah, but still a wall jump goes a long way to make it more lenient, because there is a big window where you clear the Holtz but wouldn't make the jump: https://videos.maprando.com/video/7100 . The last jump is the one where the wall jump helps most I think, since the earlier jump can be avoided by just doing a safer version that does an extra jump. This is an example of what I was thinking an Expert-level execution could look like: https://videos.maprando.com/video/7114. That's 367 heat frames, which is fairly close to what we'd get with the multiplier: 325 * 1.15 = 373.75.

Even with making the two big jumps walljumpless, there's a lot of movement details that make the frame count vary fairly continuously. E.g. there's the "unimportant" jump in the middle which I tend to take more safely (i.e. jump a bit early, with lower speed). Even the big jumps have a range of speeds that work, and I probably tend to do them a bit on the lower-speed side, e.g. because I'm not breaking spin quite at the start of the possible runway. There's also the turnaround that can be done when entering the room, which isn't required but which I find makes the first jump a lot more reliable. The 320 frames in my video is one of my best attempts: https://videos.maprando.com/video/7099 . On my attempts that didn't need a wall jump (which most of them did) I was usually getting something in the 330-340 range. Here's what a more typical one looks like for me: https://videos.maprando.com/video/7115. But I wouldn't claim to have Insane-level movement, so if you think 310 is reasonably reliable at an Insane level we could tighten it to that.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The energy cost was appropriate for Expert.
I want to justify the strat for insane if you don't have canInsaneJump. Extreme without insanejump would be more possible a setting and too tight for safety hops. It's not really important because the farm strat, or a partial farm, is easier when it comes to the middle jump. I also just saw that you can save the middle jump with a fast walljump so the requirements would fit.
Really, I was wondering how to represent Expert at that frame count without depending on multiplier, and if I wrote other strats with cycle components that are too lenient in this way.

You don't have to turn around at the start of the room. I don't like doing the room that way, with 3 tight jumps, but it is how I get 306s.

Copy link
Copy Markdown
Contributor

@osse101 osse101 Jul 20, 2025

Choose a reason for hiding this comment

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

https://videos.maprando.com/video/7116
Wheres 1 walljump is usually 20f slower.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Cool, yeah, if I skip the turnaround, I'm able to get 305-306 frames on a good attempt. So looks like that explains the difference, and makes sense because 2 turnarounds would be 2 * 8 = 16 frames. Also the turnaround doesn't really seem helpful after all: testing it out, I'm seeing that either way you have a 2-frame window for the jump (with a zero-momentum entry). And if you have even a few pixels worth of momentum, then the version without the turnaround gives you a 3rd frame that will land on the edge of the bug pipe (which is slower but survivable). I guess maybe the turnaround was just slowing the strat down, making it easier to mentally prepare; but we don't include heat frames for that kind of thing anywhere else. So tightening it to 310 sounds good.

I think of the walljump as not really an intentional part of the strat but just an option that's there to fall back on for lenience; so I was thinking of the heat frames as already being included in the multiplier, if that makes sense? But adding 20 more frames for that case can also make sense, if that's what you were suggesting?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The tech being the lenience instead of more heat frames works for me.

]},
{"heatFrames": 310}
]
},
{
"link": [2, 1],
"name": "Cross While Farming",
"requires": [
"canFarmWhileShooting",
{"heatFramesWithEnergyDrops": {
"frames": 100,
"drops": [{"enemy": "Zebbo", "count": 1}]
}},
{"heatFramesWithEnergyDrops": {
"frames": 125,
"drops": [{"enemy": "Zebbo", "count": 1}]
}},
{"heatFramesWithEnergyDrops": {
"frames": 125,
"drops": [{"enemy": "Zebbo", "count": 1}]
}},
{"heatFrames": 130}
]
},
{
"id": 42,
"link": [2, 1],
Expand Down