Skip to content

Commit acf87d3

Browse files
authored
Merge pull request #2033 from blkerby/side-platforms-17
Blue Boulder and Early Supers side platforms, and comeInBlueSpaceJumping
2 parents 453df85 + 9233ecc commit acf87d3

5 files changed

Lines changed: 185 additions & 5 deletions

File tree

region/brinstar/blue/Blue Brinstar Boulder Room.json

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -488,6 +488,64 @@
488488
"If sparking early, a down-back can help with reaching the platform."
489489
]
490490
},
491+
{
492+
"link": [2, 1],
493+
"name": "Side Platform Cross Room Jump",
494+
"entranceCondition": {
495+
"comeInWithSidePlatform": {
496+
"platforms": [
497+
{
498+
"minHeight": 1,
499+
"maxHeight": 1,
500+
"minTiles": 4,
501+
"speedBooster": "any",
502+
"obstructions": [[1, 0]],
503+
"note": ["This applies to Skree Boost Room, Screw Attack Room, and Lava Dive."]
504+
},
505+
{
506+
"minHeight": 2,
507+
"maxHeight": 2,
508+
"minTiles": 2,
509+
"speedBooster": "any",
510+
"obstructions": [[1, 0]],
511+
"requires": [
512+
"canTrickyJump"
513+
],
514+
"note": ["This applies to Metal Pirates Room (Small Ledge)."],
515+
"detailNote": [
516+
"With this short of runway, a frame-perfect jump is required."
517+
]
518+
},
519+
{
520+
"minHeight": 2,
521+
"maxHeight": 2,
522+
"minTiles": 4,
523+
"speedBooster": "any",
524+
"obstructions": [[1, 0]],
525+
"note": ["This applies to Early Supers Room, Shaktool Room, Blue Hopper Room, Bowling Alley (bottom), Dust Torizo Room, and Noob Bridge."],
526+
"detailNote": [
527+
"With this longer amount of runway, the jump has a 2-frame window."
528+
]
529+
},
530+
{
531+
"minHeight": 3,
532+
"maxHeight": 3,
533+
"minTiles": 9.4375,
534+
"speedBooster": "any",
535+
"obstructions": [[1, 0]],
536+
"note": ["This applies to Bomb Torizo Room, Pink Brinstar Hopper Room, Phantoon's Room, Big Boy Room, and Double Chamber."]
537+
}
538+
]
539+
}
540+
},
541+
"requires": [],
542+
"devNote": [
543+
"Setups having more than a 1-tile runway at the door are not considered here,",
544+
"because in that case a regular cross-room jump is possible.",
545+
"Likewise, doing a ceiling mockball through the transition is not considered,",
546+
"since if Morph is available then an airball can be done with just 1 tile of door runway."
547+
]
548+
},
491549
{
492550
"id": 24,
493551
"link": [2, 1],

region/brinstar/green/Early Supers Room.json

Lines changed: 78 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -556,11 +556,86 @@
556556
"devNote": [
557557
"Slightly higher run speeds can work but with greater difficulty.",
558558
"FIXME: comeInGettingBlueSpeed is not technically the right entrance condition, since the jump needs to happen in the other room;",
559-
"we ignore this for now since it makes less than a tile of difference to the runway in the other room.",
560-
"At some point we should support entrance conditions for entering spinning with upward momentum (possibly from disconnected runways like in Dust Torizo Room);",
561-
"coming in with a blue Space Jump could also work."
559+
"we ignore this for now since it makes less than a tile of difference to the runway in the other room."
562560
]
563561
},
562+
{
563+
"link": [2, 1],
564+
"name": "Blue Space Jump Speedball, Leave With Temporary Blue",
565+
"entranceCondition": {
566+
"comeInBlueSpaceJumping": {
567+
"minExtraRunSpeed": "$0.E",
568+
"maxExtraRunSpeed": "$2.1"
569+
}
570+
},
571+
"requires": [
572+
"canSpeedball",
573+
"canChainTemporaryBlue",
574+
"canInsaneJump"
575+
],
576+
"exitCondition": {
577+
"leaveWithTemporaryBlue": {}
578+
},
579+
"unlocksDoors": [{"types": ["ammo"], "requires": []}],
580+
"note": "Gain blue speed in the other room, Space Jump through the transition, then speedball under the shutters."
581+
},
582+
{
583+
"link": [2, 1],
584+
"name": "Side Platform Speedball, Leave With Temporary Blue",
585+
"entranceCondition": {
586+
"comeInWithSidePlatform": {
587+
"platforms": [
588+
{
589+
"minHeight": 1,
590+
"maxHeight": 1,
591+
"minTiles": 16,
592+
"speedBooster": true,
593+
"obstructions": [[1, 0]],
594+
"note": ["This applies to Lava Dive."]
595+
},
596+
{
597+
"minHeight": 2,
598+
"maxHeight": 2,
599+
"minTiles": 27.4375,
600+
"speedBooster": true,
601+
"obstructions": [[1, 0]],
602+
"note": ["This applies to Dust Torizo Room and Noob Bridge."]
603+
},
604+
{
605+
"minHeight": 3,
606+
"maxHeight": 3,
607+
"minTiles": 15.4375,
608+
"speedBooster": true,
609+
"obstructions": [[1, 0]],
610+
"requires": [
611+
"HiJump",
612+
{"getBlueSpeed": {"usedTiles": 14, "openEnd": 1}}
613+
],
614+
"note": ["This applies to Botwoon's Room."]
615+
},
616+
{
617+
"minHeight": 3,
618+
"maxHeight": 3,
619+
"minTiles": 28.2472,
620+
"speedBooster": true,
621+
"obstructions": [[1, 0]],
622+
"note": ["This applies to Double Chamber."]
623+
}
624+
]
625+
}
626+
},
627+
"requires": [
628+
{"getBlueSpeed": {"usedTiles": 15, "openEnd": 1}},
629+
"canSpeedball",
630+
"canChainTemporaryBlue",
631+
"canInsaneJump"
632+
],
633+
"exitCondition": {
634+
"leaveWithTemporaryBlue": {}
635+
},
636+
"unlocksDoors": [{"types": ["ammo"], "requires": []}],
637+
"note": "Gain blue speed in the other room, jump through the transition, then speedball under the shutters."
638+
},
564639
{
565640
"id": 22,
566641
"link": [2, 1],

schema/m3-room.schema.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,25 @@
189189
}
190190
}
191191
},
192+
"comeInBlueSpaceJumping": {
193+
"type": "object",
194+
"title": "Come In Space Jumping",
195+
"description": "Represents that Samus must come in with blue speed using Space Jump to jump through the bottom of this door.",
196+
"required": [],
197+
"additionalProperties": false,
198+
"properties": {
199+
"minExtraRunSpeed": {
200+
"type": "string",
201+
"pattern": "^\\$[0-9|A-F]\\.[0-9|A-F]+$",
202+
"description": "Minimum extra run speed (in hexadecimal) which will satisfy this condition."
203+
},
204+
"maxExtraRunSpeed": {
205+
"type": "string",
206+
"pattern": "^\\$[0-9|A-F]\\.[0-9|A-F]+$",
207+
"description": "Maximum extra run speed (in hexadecimal) which will satisfy this condition."
208+
}
209+
}
210+
},
192211
"comeInShinecharging": {
193212
"type": "object",
194213
"title": "Come in Shinecharging",
@@ -883,6 +902,7 @@
883902
{"required": ["comeInRunning"]},
884903
{"required": ["comeInJumping"]},
885904
{"required": ["comeInSpaceJumping"]},
905+
{"required": ["comeInBlueSpaceJumping"]},
886906
{"required": ["comeInShinecharging"]},
887907
{"required": ["comeInGettingBlueSpeed"]},
888908
{"required": ["comeInShinecharged"]},

strats.md

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -617,6 +617,7 @@ In all strats with an `entranceCondition`, the `from` node of the strat must be
617617
- _comeInRunning_: This indicates that Samus must run into the room, with speed in a certain range.
618618
- _comeInJumping_: This indicates that Samus must run and jump just before hitting the transition, with speed in a certain range.
619619
- _comeInSpaceJumping_: This indicates that Samus must Space Jump through the bottom of the doorway.
620+
- _comeInBlueSpaceJumping_: This indicates that Samus must Space Jump through the bottom of the doorway while having blue speed.
620621
- _comeInShinecharging_: This indicates that Samus must run into the room with enough space to complete a shinecharge.
621622
- _comeInShinecharged_: This indicates that Samus must enter the room with a shinecharge.
622623
- _comeInShinechargedJumping_: This indicates that Samus must jump into the the room with a shinecharge.
@@ -766,6 +767,30 @@ A `comeInSpaceJumping` entrance condition must match with a `leaveSpaceJumping`
766767
}
767768
```
768769

770+
### Come In Blue Space Jumping
771+
772+
A `comeInBlueSpaceJumping` entrance condition indicates that Samus must come in with a Space Jump through the bottom of the doorway, while having blue speed, applicable to horizontal transitions. It has the following properties:
773+
774+
- _minExtraRunSpeed_: The minimum extra run speed (as a hexadecimal string) needed. This only needs to be specified if something would prevent the strat from working at too low of a speed.
775+
- _maxExtraRunSpeed_: The maximum extra run speed (as a hexadecimal string) needed. This only needs to be specified if something would prevent the strat from working at too high of a speed.
776+
777+
A `comeInBlueSpaceJumping` entrance condition must match with a `leaveSpaceJumping` on the other side of the door, with the following requirements:
778+
- The `blue` property of the matching `leaveSpaceJumping` must be "yes" or "any".
779+
- `SpeedBooster` and `SpaceJump` item requirements.
780+
- There must exist a possible value of extra run speed satisfying any applicable constraints, including any `minExtraRunSpeed` or `maxExtraRunSpeed` properties in the entrance condition and/or exit condition, along with implicit constraints based on shortcharge skill and the effective runway length of the `remoteRunway` in the exit condition (see the [blue run speed table](#blue-run-speed-table)).
781+
782+
```json
783+
{
784+
"name": "Come In Blue Space Jumping",
785+
"entranceCondtion": {
786+
"comeInBlueSpinning": {
787+
"maxExtraRunSpeed": "$2.1"
788+
}
789+
},
790+
"requires": []
791+
}
792+
```
793+
769794
### Come In Shinecharging
770795

771796
A `comeInShinecharging` entrance condition represents the need for Samus to run into the room with enough space to complete a shinecharge. It has the following properties describing the geometry of the runway in the current room which can be used to help complete the shinecharge (see [runway geometry](#runway-geometry) above for details):
@@ -1079,7 +1104,7 @@ A `comeInSpinning` entrance condition must match with a `leaveSpinning` or `leav
10791104

10801105
### Come In Blue Spinning
10811106

1082-
A `comeInBlueSpinning` entrance condition indicates that Samus must come in with a spin jump through the doorway, possibly while having blue speed, applicable to horizontal transitions. It has the following properties:
1107+
A `comeInBlueSpinning` entrance condition indicates that Samus must come in with a spin jump through the doorway, while having blue speed, applicable to horizontal transitions. It has the following properties:
10831108

10841109
- _unusableTiles_: For a runway connected to the door, the number of tiles before the door that are unusable for gaining speed, because of needing to jump.
10851110
- _minExtraRunSpeed_: The minimum extra run speed (as a hexadecimal string) needed. This only needs to be specified if something would prevent the strat from working at too low of a speed.

tests/asserts/keywords.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
("Come In Running", "comeInRunning"),
3535
("Come In Jumping", "comeInJumping"),
3636
("Come In Space Jumping", "comeInSpaceJumping"),
37+
("Come In Blue Space Jumping", "comeInBlueSpaceJumping"),
3738
("Come In Shinecharging", "comeInShinecharging"),
3839
("Come In Shinecharged Jumping", "comeInShinechargedJumping"),
3940
("Come In Shinecharged", "comeInShinecharged"),
@@ -536,7 +537,8 @@ def check_speed_states(strat, err_fn):
536537
states = {"shinecharged"}
537538
elif "comeInWithSpark" in keys:
538539
states = {"preshinespark"}
539-
elif keys.intersection(["comeInWithTemporaryBlue", "comeInGettingBlueSpeed", "comeInSpeedballing", "comeInWithBlueSpringBallBounce", "comeInBlueSpinning"]):
540+
elif keys.intersection(["comeInWithTemporaryBlue", "comeInGettingBlueSpeed", "comeInSpeedballing", "comeInWithBlueSpringBallBounce",
541+
"comeInBlueSpinning", "comeInBlueSpaceJumping"]):
540542
states = {"blue"}
541543
if strat.get("startsWithShineCharge") is True:
542544
err_fn("startsWithShineCharge should not be combined with an entranceCondition")

0 commit comments

Comments
 (0)