-
Notifications
You must be signed in to change notification settings - Fork 19
Aqueduct shinecharges #1999
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
Merged
+338
−13
Merged
Aqueduct shinecharges #1999
Changes from all commits
Commits
Show all changes
5 commits
Select commit
Hold shift + click to select a range
07e0ff3
Aqueduct shinecharges
blkerby fcdb394
Apply suggestions from code review
blkerby cc797a9
clarify Waterway shinespark note
blkerby 6374d2e
add moonwalk boomerang option, update notes
blkerby a75582b
bump up shinecharge frames for extreme
blkerby File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -734,22 +734,54 @@ | |
| { | ||
| "id": 21, | ||
| "link": [2, 1], | ||
| "name": "Stutter Water ShineCharge", | ||
| "name": "Stutter Water Shinecharge", | ||
| "entranceCondition": { | ||
| "comeInRunning": { | ||
| "speedBooster": true, | ||
| "minTiles": 2.4375 | ||
| "comeInStutterShinecharging": { | ||
| "minTiles": 2 | ||
| } | ||
| }, | ||
| "requires": [ | ||
| "h_canUsePowerBombs", | ||
| "canStutterWaterShineCharge", | ||
| "canShinechargeMovement", | ||
| "canShinechargeMovementComplex", | ||
| "h_canShineChargeMaxRunway", | ||
| {"shinespark": {"frames": 25, "excessFrames": 11}} | ||
| {"or": [ | ||
| {"shinespark": {"frames": 25, "excessFrames": 11}}, | ||
| {"and": [ | ||
| "canMidairShinespark", | ||
| {"shinespark": {"frames": 22, "excessFrames": 11}} | ||
| ]} | ||
| ]} | ||
| ], | ||
| "clearsObstacles": ["A"] | ||
| }, | ||
| { | ||
| "link": [2, 1], | ||
| "name": "Very Precise Stutter Water Shinecharge", | ||
| "entranceCondition": { | ||
| "comeInStutterShinecharging": { | ||
| "minTiles": 1 | ||
| } | ||
| }, | ||
| "requires": [ | ||
| "h_canUsePowerBombs", | ||
| "canPreciseStutterWaterShineCharge", | ||
| "canInsaneJump", | ||
| "canShinechargeMovementTricky", | ||
| "h_canShineChargeMaxRunway", | ||
| {"or": [ | ||
| {"shinespark": {"frames": 25, "excessFrames": 11}}, | ||
| {"and": [ | ||
| "canMidairShinespark", | ||
| {"shinespark": {"frames": 22, "excessFrames": 11}} | ||
| ]} | ||
| ]} | ||
| ], | ||
| "clearsObstacles": ["A"], | ||
| "note": [ | ||
| "With only 1 tile of runway, this requires a single-frame stutter (release forward then repress on the next frame), on the last possible frame." | ||
| ] | ||
| }, | ||
| { | ||
| "id": 22, | ||
| "link": [2, 1], | ||
|
|
@@ -902,16 +934,69 @@ | |
| { | ||
| "id": 27, | ||
| "link": [2, 2], | ||
| "name": "Stutter Shinecharge, Shinespark Return", | ||
| "name": "Stutter Shinecharge, Leave With Spark", | ||
| "entranceCondition": { | ||
| "comeInRunning": { | ||
| "speedBooster": true, | ||
| "comeInStutterShinecharging": { | ||
| "minTiles": 2 | ||
| } | ||
| }, | ||
| "requires": [ | ||
| "canShinechargeMovementComplex", | ||
| "canStutterWaterShineCharge", | ||
| "canShinechargeMovementComplex", | ||
| {"or": [ | ||
| {"shinespark": {"frames": 12}}, | ||
| {"and": [ | ||
| "canShinechargeMovementTricky", | ||
| {"shinespark": {"frames": 3}} | ||
| ]} | ||
| ]} | ||
| ], | ||
| "exitCondition": { | ||
| "leaveWithSpark": {} | ||
| }, | ||
| "unlocksDoors": [ | ||
| {"types": ["super"], "requires": []}, | ||
| {"types": ["missiles", "powerbomb"], "requires": ["never"]} | ||
| ] | ||
| }, | ||
| { | ||
| "link": [2, 2], | ||
| "name": "Water Shinecharge, Hero Shot Leave With Spark", | ||
| "entranceCondition": { | ||
| "comeInRunning": { | ||
| "minTiles": 0.4375, | ||
| "speedBooster": true | ||
| } | ||
| }, | ||
| "requires": [ | ||
| "canWaterShineCharge", | ||
| "canShinechargeMovementTricky", | ||
| "canHeroShot", | ||
| {"shinespark": {"frames": 29}} | ||
| ], | ||
| "exitCondition": { | ||
| "leaveWithSpark": {} | ||
| }, | ||
| "unlocksDoors": [ | ||
| {"types": ["super"], "requires": []}, | ||
| {"types": ["missiles", "powerbomb"], "requires": ["never"]} | ||
| ], | ||
| "note": [ | ||
| "Start with low run speed by positioning exactly 2 pixels from the door." | ||
| ] | ||
| }, | ||
| { | ||
| "link": [2, 2], | ||
| "name": "Very Precise Stutter Shinecharge, Leave With Spark", | ||
| "entranceCondition": { | ||
| "comeInStutterShinecharging": { | ||
| "minTiles": 1 | ||
| } | ||
| }, | ||
| "requires": [ | ||
| "canShinechargeMovementComplex", | ||
| "canPreciseStutterWaterShineCharge", | ||
| "canInsaneJump", | ||
| "h_canShineChargeMaxRunway", | ||
| {"or": [ | ||
| {"shinespark": {"frames": 12}}, | ||
|
|
@@ -927,6 +1012,243 @@ | |
| "unlocksDoors": [ | ||
| {"types": ["super"], "requires": []}, | ||
| {"types": ["missiles", "powerbomb"], "requires": ["never"]} | ||
| ], | ||
| "note": [ | ||
| "With only 1 tile of runway, this requires a single-frame stutter (release forward then repress on the next frame), on the last possible frame." | ||
| ] | ||
| }, | ||
| { | ||
| "link": [2, 2], | ||
| "name": "Precise Stutter Shinecharge, Leave Shinecharged (5-tile runway)", | ||
| "entranceCondition": { | ||
| "comeInStutterShinecharging": { | ||
| "minTiles": 5 | ||
| } | ||
| }, | ||
| "requires": [ | ||
| "canPreciseStutterWaterShineCharge", | ||
| "canShinechargeMovementTricky", | ||
| "canInsaneJump", | ||
| {"shineChargeFrames": 130}, | ||
| {"or": [ | ||
| "canBeVeryPatient", | ||
| {"shineChargeFrames": 15} | ||
| ]} | ||
| ], | ||
| "exitCondition": { | ||
| "leaveShinecharged": {} | ||
| }, | ||
| "unlocksDoors": [ | ||
| {"types": ["super"], "requires": []}, | ||
| {"types": ["missiles", "powerbomb"], "requires": ["never"]} | ||
| ], | ||
| "note": [ | ||
| "With a runway of 5 tiles (open end) in the other room,", | ||
| "the ideal timing for the stutter is to release forward for 5 frames, and repress forward on the last possible frame before the transition.", | ||
| "Other timings can work, but will gain the shinecharge further from the door, leaving fewer shinecharge frames remaining.", | ||
| "After gaining the shinecharge, continue holding forward in order to make Samus stand.", | ||
| "Then turnaround spin jump back toward the door, and continue spin jumping to reach the transition with a shinecharge." | ||
| ] | ||
| }, | ||
| { | ||
| "link": [2, 2], | ||
| "name": "Precise Stutter Shinecharge, Leave Shinecharged (4-tile runway)", | ||
| "entranceCondition": { | ||
| "comeInStutterShinecharging": { | ||
| "minTiles": 4 | ||
| } | ||
| }, | ||
| "requires": [ | ||
| "canPreciseStutterWaterShineCharge", | ||
| "canShinechargeMovementTricky", | ||
| "canInsaneJump", | ||
| {"shineChargeFrames": 140}, | ||
| {"or": [ | ||
| "canBeVeryPatient", | ||
| {"shineChargeFrames": 10} | ||
| ]} | ||
| ], | ||
| "exitCondition": { | ||
| "leaveShinecharged": {} | ||
| }, | ||
| "unlocksDoors": [ | ||
| {"types": ["super"], "requires": []}, | ||
| {"types": ["missiles", "powerbomb"], "requires": ["never"]} | ||
| ], | ||
| "note": [ | ||
| "With only a runway of 4 tiles (open end) in the other room,", | ||
| "the ideal timing for the stutter is to release forward for 4 frames, and repress forward on the last possible frame before the transition.", | ||
| "It also works well to release forward for 3 frames and repress on the last possible frame.", | ||
| "Other timings can also work, but may gain the shinecharge further from the door, leaving fewer shinecharge frames remaining.", | ||
| "After gaining the shinecharge, continue holding forward in order to make Samus stand.", | ||
| "Then turnaround spin jump back toward the door, and continue spin jumping to reach the transition with a shinecharge." | ||
| ] | ||
| }, | ||
| { | ||
| "link": [2, 2], | ||
| "name": "Precise Stutter Shinecharge, Leave Shinecharged (3-tile runway)", | ||
| "entranceCondition": { | ||
| "comeInStutterShinecharging": { | ||
| "minTiles": 3 | ||
| } | ||
| }, | ||
| "requires": [ | ||
| "canPreciseStutterWaterShineCharge", | ||
| "canShinechargeMovementTricky", | ||
| "canInsaneJump", | ||
| {"shineChargeFrames": 145}, | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 160 at extreme |
||
| {"or": [ | ||
| "canBeVeryPatient", | ||
| {"shineChargeFrames": 10} | ||
| ]} | ||
| ], | ||
| "exitCondition": { | ||
| "leaveShinecharged": {} | ||
| }, | ||
| "unlocksDoors": [ | ||
| {"types": ["super"], "requires": []}, | ||
| {"types": ["missiles", "powerbomb"], "requires": ["never"]} | ||
| ], | ||
| "note": [ | ||
| "With only a runway of 3 tiles (open end) in the other room,", | ||
| "the ideal timing for the stutter is to release forward for 3 or 4 frames, and repress forward on the last possible frame before the transition.", | ||
| "Other timings can work, but will gain the shinecharge further from the door, leaving fewer shinecharge frames remaining.", | ||
| "After gaining the shinecharge, continue holding forward in order to make Samus stand.", | ||
| "Then turnaround spin jump back toward the door, and continue spin jumping to reach the transition with a shinecharge.", | ||
| "Alternatively, with greater difficulty but saving some shinecharge frames,", | ||
| "after performing the turnaround spin jump, briefly moonwalk back, then retain momentum by boomeranging forward", | ||
| "(switching from pressing backward to pressing forward on the next frame),", | ||
| "and arm pump to reach the door quickly." | ||
| ], | ||
| "devNote": [ | ||
| "The same shinecharge frames could be achieved with a closed end runway (effective length of 2.4375),", | ||
| "with a 3-frame stutter, but there doesn't appear to be any application." | ||
| ] | ||
| }, | ||
| { | ||
| "link": [2, 2], | ||
| "name": "Precise Stutter Shinecharge, Leave Shinecharged (2-tile runway)", | ||
| "entranceCondition": { | ||
| "comeInStutterShinecharging": { | ||
| "minTiles": 2 | ||
| } | ||
| }, | ||
| "requires": [ | ||
| "canPreciseStutterWaterShineCharge", | ||
| "canShinechargeMovementTricky", | ||
| "canInsaneJump", | ||
| {"shineChargeFrames": 150}, | ||
| {"or": [ | ||
| "canBeVeryPatient", | ||
| {"shineChargeFrames": 15} | ||
| ]} | ||
| ], | ||
| "exitCondition": { | ||
| "leaveShinecharged": {} | ||
| }, | ||
| "unlocksDoors": [ | ||
| {"types": ["super"], "requires": []}, | ||
| {"types": ["missiles", "powerbomb"], "requires": ["never"]} | ||
| ], | ||
| "note": [ | ||
| "With only a runway of 2 tiles (open end) in the other room,", | ||
| "the ideal timing for the stutter is to release forward for 3 frames, and repress forward on the last possible frame before the transition.", | ||
| "Other timings can work, but will gain the shinecharge further from the door, leaving fewer shinecharge frames remaining.", | ||
| "After gaining the shinecharge, continue holding forward in order to make Samus stand.", | ||
| "Then turnaround spin jump back toward the door, and continue spin jumping to reach the transition with a shinecharge.", | ||
| "Alternatively, with greater difficulty but saving some shinecharge frames,", | ||
| "after performing the turnaround spin jump, briefly moonwalk back, then retain momentum by boomeranging forward", | ||
| "(switching from pressing backward to pressing forward on the next frame),", | ||
| "and arm pump to reach the door quickly." | ||
| ], | ||
| "devNote": [ | ||
| "FIXME: The canBeVeryPatient requirement is for difficulty placement of the boomerang method;", | ||
| "but the boomerang (or maybe specifically the moonwalk boomerang) should possibly be its own tech,", | ||
| "and the same with rapid arm pumping." | ||
| ] | ||
| }, | ||
| { | ||
| "link": [2, 2], | ||
| "name": "Precise Stutter Shinecharge, Leave Shinecharged (1-tile runway)", | ||
| "entranceCondition": { | ||
| "comeInStutterShinecharging": { | ||
| "minTiles": 1 | ||
| } | ||
| }, | ||
| "requires": [ | ||
| "canPreciseStutterWaterShineCharge", | ||
| "canInsaneJump", | ||
| "canBeVeryPatient", | ||
| "canShinechargeMovementTricky", | ||
| {"shineChargeFrames": 160} | ||
| ], | ||
| "exitCondition": { | ||
| "leaveShinecharged": {} | ||
| }, | ||
| "unlocksDoors": [ | ||
| {"types": ["super"], "requires": []}, | ||
| {"types": ["missiles", "powerbomb"], "requires": ["never"]} | ||
| ], | ||
| "note": [ | ||
| "With only 1 tile of runway in the other room, Samus should ideally start on the last pixel of runway with X subpixels of $3FFF or less.", | ||
| "Run toward the door, releasing forward for exactly 1 frame and pressing it again on the last possible frame before the transition.", | ||
| "Starting with X subpixels of $7FFF can also work (e.g., by simply backing against the door ledge, then jumping and turning around mid-air);", | ||
| "in this case, Samus must advance 1 or 2 pixels with an arm pump before the transition (e.g., firing a shot or pressing and/or releasing an angle button),", | ||
| "and the shinecharge will be gained slightly further away from the door.", | ||
| "After gaining the shinecharge, continue holding forward in order to make Samus stand.", | ||
| "Then turnaround spin jump back toward the door, and continue spin jumping to reach the transition with a shinecharge.", | ||
| "Alternatively, with greater difficulty but saving some shinecharge frames,", | ||
| "after performing the turnaround spin jump, briefly moonwalk back, then retain momentum by boomeranging forward", | ||
| "(switching from pressing backward to pressing forward on the next frame),", | ||
| "and arm pump to reach the door quickly." | ||
| ], | ||
| "detailNote": [ | ||
| "Ideal subpixels ($3FFF) can be achieved using one of several methods:", | ||
| "1) press forward against the door ledge (or a wall aligned with it);", | ||
| "jump, and while mid-air, tap forward for exactly 1 frame to land with subpixels $BFFF,", | ||
| "moonwalk back for exactly 1 frame to end with subpixels $3FFF.", | ||
| "2) press forward against the door ledge (from a platform below, assuming one exists)", | ||
| "turn around (while on the ground), and moonwalk back two pixels,", | ||
| "then jump and mid-air turnaround onto the ledge;", | ||
| "if Samus jumped from the correct pixel but does not land on the ledge, then it was needed to moonwalk back 1 more frame;", | ||
| "in this case it is possible to retry by doing a mid-air turnaround back onto the platform, and moonwalking back for 1 frame.", | ||
| "3) if X-Ray is available, press against the door ledge (from a platform below, assuming one exists)", | ||
| "turn around (while on the ground), then jump and mid-air turnaround toward the door,", | ||
| "and use X-Ray to turnaround in place away from the door;", | ||
| "repeat this sequence 3 more times: jump, mid-air turnaround, X-Ray turnaround;", | ||
| "then do one more jump and mid-air turnaround, high enough to land on the door ledge,", | ||
| "and Samus should be in the correct position with subpixels $3FFF." | ||
| ] | ||
| }, | ||
| { | ||
| "link": [2, 2], | ||
| "name": "Water Shinecharge, Leave With Temporary Blue", | ||
| "entranceCondition": { | ||
| "comeInRunning": { | ||
| "minTiles": 0.4375, | ||
| "speedBooster": true | ||
| } | ||
| }, | ||
| "requires": [ | ||
| "canWaterShineCharge", | ||
| "canXRayCancelShinecharge", | ||
| "canXRayTurnaround", | ||
| "canLongChainTemporaryBlue" | ||
| ], | ||
| "exitCondition": { | ||
| "leaveWithTemporaryBlue": {} | ||
| }, | ||
| "unlocksDoors": [ | ||
| {"types": ["super"], "requires": []}, | ||
| {"types": ["missiles", "powerbomb"], "requires": ["never"]} | ||
| ], | ||
| "note": [ | ||
| "Start with low run speed by positioning exactly 2 pixels from the door.", | ||
| "Use X-Ray to cancel the shinecharge early, to avoid getting hit by the angry snail." | ||
| ], | ||
| "devNote": [ | ||
| "This can also be done with a stutter shinecharge, which can shorten the temp blue chain,", | ||
| "but not by enough to remove the need for the canLongChainTemporaryBlue requirement." | ||
| ] | ||
| }, | ||
| { | ||
|
|
||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I tried 4 and 5 tiles for a while and couldn't get close to leaving with frames with either.
I was able to leave with ~15 frames using the moonwalk trick instead of jumping (moonwalk then switch to running forward on the next frame).
These strats don't scale down since you lose so many frames to a suboptimal input, so they need stronger requirements.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, I think it makes sense to add "canInsaneJump" to all of these.