Skip to content

Brinstar fixes - #2957

Open
blkerby wants to merge 2 commits into
vg-json-data:masterfrom
blkerby:brinstar-fixes
Open

Brinstar fixes#2957
blkerby wants to merge 2 commits into
vg-json-data:masterfrom
blkerby:brinstar-fixes

Conversation

@blkerby

@blkerby blkerby commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

Continuing through a pass of AI review, a couple noteworthy soundness issues that are fixed here:

  • Big Pink: there were a couple logical ways of clearing the Super block without Supers.
  • Red Tower: if your only access is through the PB blocks, you would have to kill the Beetom but could logically still use it to Ice climb.

The theme continues that most of the errors found are obstacle-related. And there are some obstaclesNotCleared that we could maybe rationalize as not really needed, but it seems safer to put them in.

@blkerby blkerby added the Area:Brinstar Stuff in Brinstar label Aug 22, 2026
"requires": [
"h_ZebesIsAwake"
"h_ZebesIsAwake",
{"obstaclesNotCleared": ["C"]}

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 clearing C can keep one alive if you want to. But I don't recall.

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.

Could be true, it just might be a bit of a fragile assumption. If we want to go with that, we should probably document exactly what it means for the obstacle to be "cleared" as a note in the obstacle definition and make sure it is consistently followed everywhere that refers to the obstacle.

I think in a lot of places we're implicitly leaning on the fact that you could reset the room to respawn enemies; but this might not be valid in case the next room is not free to reset (e.g. if it is heated, or has a door that locks behind you).

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 requirements are skill and strat dependent. If we want to make tons of obstacles in every room, that's an option. This room could have an obstacle for one hopper alive. And then maybe eventually it would need to be split into which one is alive, converting it into 3 obstacles ....

But if we do go the route of trying to "fix" all these, by adding obstaclesNotCleared in lots of places, we might be losing some strats that are basically always fine. For instance in this scenario, you should always be able to survive resetting the room after you killed 3 hoppers. As for asymmetric door locks, I wouldnt say that they are even close to being sound within this project right now.

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.

For asymmetric door locks, I think maybe a reasonable approach for now could be to aim for soundness but not full completeness. So when it comes to the fact that normally you can reset a room at a door that you're about to exit through, we could "assume" this for the purposes of not going out of our way to create extra obstacles or strats to provide alternatives to the room reset, but maybe not assume it when it comes to leaving out requirements (e.g. an "obstaclesNotCleared" or "resetRoom" requirement.

@blkerby blkerby Aug 22, 2026

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.

After thinking about it more, I would be ok dropping these new "obstaclesNotCleared" on G-mode setups where normally you could just reset the room or keep an enemy alive. It makes sense that these aren't necessarily errors since it seems like an intentional, common pattern; that kind of puts them outside the scope of what these PRs are trying to do. So maybe it's best to hold off on those and they could always be addressed later if we run into problems or decide we want to support asymmetric doors.

{"resourceCapacity": [{"type": "ReserveEnergy", "count": 199}]}
]}
]},
{"obstaclesCleared": ["C"]}

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 this one might be kind of similar. I think you kind of need the ability to clear C to use the runway. But you keep one alive. And since C was already cleared it didnt need to be cleared again.

Same in the strat below

"devNote": [
"FIXME: Lumping frozen and dead together is questionable,",
"because some strats require the Beetoms to be alive.",
"The frozen state might not need to be an obstacle."

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.

If you have ice, clearing A is free. I guess the only concern is that you CF in here and need to use ice to get out. but the door should be resettable.

Comment on lines 5260 to 5296
{
"id": 291,
"link": [10, 13],
"name": "Direct G-Mode, Blue Suit Spark, Overload PLMs with Chozo Ball Item",
"entranceCondition": {
"comeInWithGMode": {
"mode": "direct",
"morphed": false
}
},
"requires": [
"Morph",
{"blueSuitShinecharge": {}},
{"or": [
{"shinespark": {"frames": 68, "excessFrames": 8}},
{"and": [
"HiJump",
{"shinespark": {"frames": 64, "excessFrames": 8}}
]},
{"and": [
"HiJump",
"canSpeedyJump",
{"shinespark": {"frames": 60, "excessFrames": 8}}
]}
]}
],
"flashSuitChecked": true,
"blueSuitChecked": true,
"note": [
"Spark up the shaft, then shoot the Chozo ball to overload PLMs. Then go down, through the bomb blocks and tunnel, then exit G-mode."
],
"devNote": [
"FIXME: Overloading PLMs requires the item to be not collected.",
"The apparent unsoundness has limited impact since you could X-ray climb instead.",
"There are many ways to get to the top aside from blue suit shinecharge."
]
},

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.

This strat is only useful if you can't do a short x-ray climb. But you clearly already have high-level g-mode+blue. And the strat is unsound because the item needs to be not collected.

I propose deleting the strat, but if you want to keep it for "x-ray climb might be disabled" then add a item not collected+loss of access

Suggested change
},

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.

It could be deleted. But I think there other ways of reaching the Chozo ball that could be more useful (though still canRiskPermanentLossOfAccess), for example using wall jump or Space Jump to get up there.

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.

Those should be there. If they're missing I can work on adding them

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.

Those would only be useful without a blue suit though - if you have blue, there's no reason to overload PLMs, you can just use the scroll block in the tunnel.... But i guess that kind of gets back to my first impression comment - then you could just x-ray climb.... Let me know if you want them added

"link": [1, 1],
"name": "G-Mode Setup - Get Hit By Beetom",
"requires": [
{"obstaclesNotCleared": ["A"]},

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.

guess im not sure about these kinds of things. Do we really want to ensure every enemy is not dead in the future? because you can already reset the room since it's a g-mode setup. This would only be useful if the next room cant be reset back here but I don't think there are examples like that. And it would only be useful if you need to grab the item and you cant dodge the beetoms and the only way you can kill them to grab the item is with a PB.

"name": "G-Mode Setup - Get Hit By Sidehopper",
"requires": [],
"requires": [
{"obstaclesNotCleared": ["A"]}

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.

There's not a way to do mission impossible without killing the hoppers. At least, that's what my to-do list has said for years.

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.

Under that assumption, if you came into the room and did Mission Impossible, it would not be sound to leave with a G-mode setup without resetting the room first, so the "obstaclesNotCleared" serves the purpose of enforcing this?

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 I worded my original comment in a confusing way.

All of the mission impossible strats require A cleared, which I don't think is necessary.

It's not strongly related to this line of code, but something that has been on my to-do list for years.

Comment thread region/brinstar/red/Red Tower.json Outdated
{
"id": "A",
"name": "Power Bomb Blocks",
"name": "Power Bomb Blocks and Beetom",

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.

This cant be for beetoms as well. You can move the beetoms out of the way before breaking the PB blocks

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.

Good point, I'm thinking we probably need to split the Power Bomb blocks and Beetoms into separate obstacles.

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.

Ok I pushed another commit splitting the PB blocks and Beetom into separate obstacles.

Comment thread region/brinstar/red/Red Tower.json Outdated
"link": [1, 2],
"name": "Frozen Beetom X-Ray Climb with Morph",
"requires": [
{"obstaclesNotCleared": ["A"]},

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.

If A is broken this whole strat is pointless

Comment thread region/brinstar/red/Red Tower.json Outdated
"link": [1, 1],
"name": "Leave With Runway - Frozen Beetom",
"requires": [
{"obstaclesNotCleared": ["A"]},

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.

you can reset the room here

Comment thread region/brinstar/red/Red Tower.json Outdated
"link": [1, 9],
"name": "Frozen Beetom Ice Climb",
"requires": [
{"obstaclesNotCleared": ["A"]},

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.

This one is a problem. But i still dont like the obstacle being both objects

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Area:Brinstar Stuff in Brinstar

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants