Skip to content

Cross-room damage strats - #2967

Merged
osse101 merged 10 commits into
vg-json-data:masterfrom
blkerby:leave-with-damage-rebase
Sep 3, 2026
Merged

Cross-room damage strats#2967
osse101 merged 10 commits into
vg-json-data:masterfrom
blkerby:leave-with-damage-rebase

Conversation

@blkerby

@blkerby blkerby commented Aug 30, 2026

Copy link
Copy Markdown
Contributor
  • Replaces leaveWithGModeSetup with a more general exit condition leaveWithDamage.
  • Adds new exit conditions: leaveWithKnockback, leaveWithDamageBoost, and leaveWithIFrames.
  • Adds corresponding new entrance conditions: comeInWithKnockback, comeInWithDamageBoost, comeInWithIFrames.
  • Adds applications in Tourian Hopper Room and Climb Supers respectively.
  • Adds corresponding setups throughout the game (right-side doors only).
  • Migrates existing G-mode setups to use the new schema.

I would recommend reviewing this commit-by-commit.

The G-mode setup migration is large but mostly mechanical so I put the mechanical part in its own commit. It couldn't be fully automated as a simple script because the new schema needed the enemy name to be populated, so this was done with LLM assistance. It is supported by a test which checks that the enemy/attack name is one that exists in the enemies list in the room. The cases which needed some special handling were ones where originally there were multiple possible enemies that could be used; these needed to either be split into separate strats (e.g. where the available enemy depends on game state, in Wrecked Ship with power on/off), or just pick the enemy with lowest damage and mention the other in a note.

@blkerby
blkerby force-pushed the leave-with-damage-rebase branch from 7194024 to 575cd1a Compare August 30, 2026 02:20

@osse101 osse101 left a comment

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 commented on all doors for the first few rooms then only mentioned right side doors.

  • Below Spazer cac spike

These changes go from comeInWithRMode down to whatever difficulty, and some have complex setups without a GMode tech. Usually where you find the right enemy and wait for it, and maybe that's bad to expect. Some mellas don't have canManipulateMellas but it depends on what is expected of the player for what's fair. Positioning for leaveWithKnockback might take too long and be too precise. leaveWithIFrames usually needs you to know how to end knockback; running into enemies works well but canKago is better.

  • Plowerhouse left door comeInWithIFrames is a speedrun strat, but might not save energy over waiting.
  • Fish tank top left comeInWithKnockback is one I've been aware of for a long time
  • Lava Tunnel [3,1] could save minor energy

I can't think of a useful updoor. Maybe attic.
Most strats are for saving energy, so there's not too much point to high damage exitConditions. A guideline leaveWithIFrames number could be useful too.

Comment thread schema/m3-room.schema.json Outdated
Comment thread schema/m3-room.schema.json Outdated
Comment thread strats.md Outdated
Comment thread tests/asserts/keywords.py
damage_exit_conditions = {
"leaveWithKnockback",
"leaveWithDamageBoost",
"leaveWithIFrames",

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.

Suggested change
"leaveWithIFrames",
"leaveWithIFrames",
"leaveWithXModeSetup",

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.

With an X-mode setup, the enemy damage is described as part of the exit condition, so it doesn't need damage in the "requires".

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.

ok I see what's happening. leaveWithXModeSetup would be written like leaveWithDamage then.

Comment thread schema/m3-room.schema.json
Comment thread region/norfair/east/Speed Booster Hall.json
"id": 3,
"link": [1, 1],
"name": "G-Mode Setup - Get Hit By Sova",
"name": "Leave with Damage - Sova",

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.

All of these have alternatives without using a super 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.

Added one now to leave through top-right door with high-position damage boost.

"id": 65,
"link": [2, 2],
"name": "G-Mode Setup - Get Hit By Geruta",
"name": "Leave with Damage - Geruta",

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.

fireball

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.

Added

@@ -875,7 +881,7 @@
{
"id": 75,
"link": [2, 4],

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.

cac spikes at 5

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.

With the heat damage I doubt it would really be useful, but we can add it. Again could apply with unusual rando damage handling

"id": 44,
"link": [2, 2],
"name": "G-Mode Setup - Get Hit By Sova",
"name": "Leave with Damage - Sova",

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.

Lowever requirements to leaveWithDamageBoost

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.

Added

@blkerby

blkerby commented Aug 31, 2026

Copy link
Copy Markdown
Contributor Author

These changes go from comeInWithRMode down to whatever difficulty, and some have complex setups without a GMode tech. Usually where you find the right enemy and wait for it, and maybe that's bad to expect.

Right, I think the leaveWithDamage setups could probably use another pass to add more requirements. In the meantime my thinking was to have requirements on the application side to keep it in Expert and higher. For Tourian Hoppers we have a canTrickyDodgeEnemies, and for Climb Supers we have a notable which I was thinking we could put in Expert. Currently "canRMode" is in Expert, though I'm not sure this makes sense because I don't know if it has any applications in Expert.

Positioning for leaveWithKnockback might take too long and be too precise.

Was there a new leaveWithKnockback strat that was slow? If you mean the existing leaveWithGModeSetup/leaveWithDamage, the slowest ones should have patience requirements, tough if we wanted to support comeInWithIFrames in lower difficulties (e.g. Hard or Very Hard) I imagine we'd need to add a lower-tier (e.g. Expert level) patience-like tech to exclude the slow-ish ones?

leaveWithIFrames usually needs you to know how to end knockback; running into enemies works well but canKago is better.

I think these distinctions matter more later if we want to move the tricks down lower than Expert; we could add a lenient variant in Tourian Hoppers where it requires a larger amount of i-frames.

* Plowerhouse left door comeInWithIFrames is a speedrun strat, but might not save energy over waiting.

* Fish tank top left comeInWithKnockback is one I've been aware of for a long time

* Lava Tunnel [3,1] could save minor energy

Yeah Fish Tank seems like the most significant here. Though because it needs Gravity, you could also just Gravity jump. It could come into play in a speedless blue suit scenario.

The other applications I was thinking would be good to add would be for the strats that fall into Sand Halls with i-frames; these are sort of already logically covered by the dodging strats, but using i-frames should be easier than dodging.

@blkerby

blkerby commented Aug 31, 2026

Copy link
Copy Markdown
Contributor Author

I think the right-side ones that I skipped were mostly cases where it didn't help with either application: no way to clear the Climb Supers corner, and an already long enough runway to squeeze under the Hoppers with the easy strat. I'm still debating if it's worth adding these. What do you think?

@osse101

osse101 commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

If the design is to put these in expert then its fine leaving them as they were. I was thinking simple rooms like dachora, and knowing which viola to use in post croc shaft as examples of things that could be annoying for hard-very hard.

Where this is a new schema and applies everywhere I was just listing everything. The definite adds would be situations we can find uses for. Beyond that is speculative; dboosts saving energy if we toggle heat on, or strats for toggled water, or romhack rooms. So there's no need to add setups without a purpose, it would only maybe help if we overlook something useful later.

SMZ3 has gravity give -75% damage from enemies but has you take full damage from spikes. That's not enough to matter with pirates after heat but its nice that most of the ~100 damage enemies and projectiles are listed.

I think we want to try and wrap up this PR and put further additions in a new PR.

https://videos.maprando.com/video/10985 walljumpless morphless

@kjbranch kjbranch left a comment

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 reviewed Migrate G-mode setups (other cases). Everything looks fine in it, but two comments:

  • I wasn't sure that it was best to remove the second enemy from the strat name, but it seems fine.
  • I would swap the order of the atomic/covern strats, so it will always choose the atomic strat first if available. If it doesnt matter how you do the strat (i.e. for a g-mode setup) I would think it would always choose the first option, which might be confusing mentioning Covern.

@blkerby

blkerby commented Sep 1, 2026

Copy link
Copy Markdown
Contributor Author

https://videos.maprando.com/video/10985 walljumpless morphless

Very nice, I forgot this can work suitless. This will be a great one to add then on the next pass

@osse101

osse101 commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

My remaining comments are on

  • Exiting a room with lower requirements. Energy cost, item requirement, or tech complexity.
  • leaveWithXMode wasn't being validated through tests and these new additions are very similar to that object.

Everything otherwise looks fine.

@blkerby

blkerby commented Sep 3, 2026

Copy link
Copy Markdown
Contributor Author

I was mostly skipping heated rooms before because I didn't want to take time to try to optimize heat frames when it seemed unlikely to be useful anyway, but I added some of these now.

Included leaveWithXMode now in the check for enemy/attack name.

Business Center had a high-position damage boost which I missed before, so definitely a useful addition.

I tried to respond to every comment but there's a lot so let me know if there's something I missed. The goal isn't to try to include everything on this pass, only the clearly useful left-to-right cases.

@osse101
osse101 merged commit 3a3d84b into vg-json-data:master Sep 3, 2026
1 check passed
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.

3 participants