@@ -940,6 +940,7 @@ impl<'a> Preprocessor<'a> {
940940 self . get_come_in_with_temporary_blue_reqs ( exit_condition, * direction)
941941 }
942942 MainEntranceCondition :: ComeInSpinning {
943+ speed_booster,
943944 unusable_tiles,
944945 min_extra_run_speed,
945946 max_extra_run_speed,
@@ -948,6 +949,7 @@ impl<'a> Preprocessor<'a> {
948949 unusable_tiles. get ( ) ,
949950 min_extra_run_speed. get ( ) ,
950951 max_extra_run_speed. get ( ) ,
952+ * speed_booster,
951953 ) ,
952954 MainEntranceCondition :: ComeInBlueSpinning {
953955 unusable_tiles,
@@ -1528,7 +1530,17 @@ impl<'a> Preprocessor<'a> {
15281530 unusable_tiles : f32 ,
15291531 entrance_min_extra_run_speed : f32 ,
15301532 entrance_max_extra_run_speed : f32 ,
1533+ speed_booster : Option < bool > ,
15311534 ) -> Option < Requirement > {
1535+ let mut reqs: Vec < Requirement > = vec ! [ ] ;
1536+ if speed_booster == Some ( true ) {
1537+ reqs. push ( Requirement :: blue_booster ( ) ) ;
1538+ }
1539+ if speed_booster == Some ( false ) {
1540+ reqs. push ( Requirement :: Tech (
1541+ self . game_data . tech_isv . index_by_key [ & TECH_ID_CAN_DISABLE_EQUIPMENT ] ,
1542+ ) ) ;
1543+ }
15321544 match exit_condition {
15331545 ExitCondition :: LeaveSpinning {
15341546 remote_runway_length,
@@ -1542,7 +1554,6 @@ impl<'a> Preprocessor<'a> {
15421554 let max_extra_run_speed = max_extra_run_speed. get ( ) ;
15431555 let runway_max_speed = get_max_extra_run_speed ( remote_runway_length) ;
15441556
1545- let mut reqs: Vec < Requirement > = vec ! [ ] ;
15461557 if min_extra_run_speed > 0.0 || entrance_min_extra_run_speed > 0.0 {
15471558 reqs. push ( Requirement :: NoBlueSuit ) ;
15481559 }
@@ -1569,7 +1580,6 @@ impl<'a> Preprocessor<'a> {
15691580 from_exit_node,
15701581 } => {
15711582 let effective_length = effective_length. get ( ) ;
1572- let mut reqs: Vec < Requirement > = vec ! [ ] ;
15731583 if min_extra_run_speed. get ( ) > 0.0 || entrance_min_extra_run_speed > 0.0 {
15741584 reqs. push ( Requirement :: NoBlueSuit ) ;
15751585 }
@@ -1613,6 +1623,8 @@ impl<'a> Preprocessor<'a> {
16131623 entrance_min_extra_run_speed : f32 ,
16141624 entrance_max_extra_run_speed : f32 ,
16151625 ) -> Option < Requirement > {
1626+ let mut reqs: Vec < Requirement > = vec ! [ ] ;
1627+ reqs. push ( Requirement :: blue_booster ( ) ) ;
16161628 match exit_condition {
16171629 ExitCondition :: LeaveSpinning {
16181630 remote_runway_length,
@@ -1621,8 +1633,6 @@ impl<'a> Preprocessor<'a> {
16211633 min_extra_run_speed,
16221634 max_extra_run_speed,
16231635 } => {
1624- let mut reqs: Vec < Requirement > = vec ! [ ] ;
1625-
16261636 if min_extra_run_speed. get ( ) > 0.0 || entrance_min_extra_run_speed > 0.0 {
16271637 reqs. push ( Requirement :: NoBlueSuit ) ;
16281638 }
@@ -1654,8 +1664,6 @@ impl<'a> Preprocessor<'a> {
16541664 from_exit_node,
16551665 } => {
16561666 let effective_length = effective_length. get ( ) ;
1657- let mut reqs: Vec < Requirement > = vec ! [ ] ;
1658-
16591667 if min_extra_run_speed. get ( ) > 0.0 || entrance_min_extra_run_speed > 0.0 {
16601668 reqs. push ( Requirement :: NoBlueSuit ) ;
16611669 }
@@ -1738,6 +1746,7 @@ impl<'a> Preprocessor<'a> {
17381746 remote_runway_length. get ( ) ,
17391747 * heated,
17401748 ) ) ;
1749+ reqs. push ( Requirement :: blue_booster ( ) ) ;
17411750 reqs. push ( Requirement :: Tech (
17421751 self . game_data . tech_isv . index_by_key
17431752 [ & TECH_ID_CAN_SIDE_PLATFORM_CROSS_ROOM_JUMP ] ,
@@ -1968,6 +1977,8 @@ impl<'a> Preprocessor<'a> {
19681977 min_landing_tiles : f32 ,
19691978 entrance_movement_type : BounceMovementType ,
19701979 ) -> Option < Requirement > {
1980+ let mut reqs: Vec < Requirement > = vec ! [ ] ;
1981+ reqs. push ( Requirement :: blue_booster ( ) ) ;
19711982 match exit_condition {
19721983 ExitCondition :: LeaveWithMockball {
19731984 remote_runway_length,
@@ -1988,7 +1999,6 @@ impl<'a> Preprocessor<'a> {
19881999 if landing_runway_length < min_landing_tiles {
19892000 return None ;
19902001 }
1991- let mut reqs: Vec < Requirement > = vec ! [ ] ;
19922002 reqs. push ( Requirement :: NoBlueSuit ) ;
19932003
19942004 if !self . add_run_speed_reqs (
@@ -2009,7 +2019,6 @@ impl<'a> Preprocessor<'a> {
20092019 reqs. push ( Requirement :: Tech (
20102020 self . game_data . tech_isv . index_by_key [ & TECH_ID_CAN_SPRING_BALL_BOUNCE ] ,
20112021 ) ) ;
2012- reqs. push ( Requirement :: blue_booster ( ) ) ;
20132022 reqs. push ( Requirement :: Item ( Item :: Morph as ItemId ) ) ;
20142023 reqs. push ( Requirement :: Item ( Item :: SpringBall as ItemId ) ) ;
20152024 Some ( Requirement :: make_and ( reqs) )
@@ -2037,7 +2046,6 @@ impl<'a> Preprocessor<'a> {
20372046 {
20382047 return None ;
20392048 }
2040- let mut reqs: Vec < Requirement > = vec ! [ ] ;
20412049 reqs. push ( Requirement :: NoBlueSuit ) ;
20422050
20432051 if !self . add_run_speed_reqs (
@@ -2062,7 +2070,6 @@ impl<'a> Preprocessor<'a> {
20622070 reqs. push ( Requirement :: Tech (
20632071 self . game_data . tech_isv . index_by_key [ & TECH_ID_CAN_SPRING_BALL_BOUNCE ] ,
20642072 ) ) ;
2065- reqs. push ( Requirement :: blue_booster ( ) ) ;
20662073 reqs. push ( Requirement :: Item ( Item :: Morph as ItemId ) ) ;
20672074 reqs. push ( Requirement :: Item ( Item :: SpringBall as ItemId ) ) ;
20682075 Some ( Requirement :: make_and ( reqs) )
@@ -2075,7 +2082,6 @@ impl<'a> Preprocessor<'a> {
20752082 from_exit_node,
20762083 } => {
20772084 let effective_length = effective_length. get ( ) ;
2078- let mut reqs: Vec < Requirement > = vec ! [ ] ;
20792085 reqs. push ( Requirement :: NoBlueSuit ) ;
20802086
20812087 if !self . add_run_speed_reqs (
@@ -2110,7 +2116,6 @@ impl<'a> Preprocessor<'a> {
21102116 reqs. push ( Requirement :: Tech (
21112117 self . game_data . tech_isv . index_by_key [ & TECH_ID_CAN_SPRING_BALL_BOUNCE ] ,
21122118 ) ) ;
2113- reqs. push ( Requirement :: blue_booster ( ) ) ;
21142119 reqs. push ( Requirement :: Item ( Item :: Morph as ItemId ) ) ;
21152120 reqs. push ( Requirement :: Item ( Item :: SpringBall as ItemId ) ) ;
21162121 Some ( Requirement :: make_and ( reqs) )
@@ -2364,6 +2369,7 @@ impl<'a> Preprocessor<'a> {
23642369 Some ( Requirement :: make_and ( vec ! [
23652370 Requirement :: NoFlashSuit ,
23662371 Requirement :: NoBlueSuit ,
2372+ Requirement :: blue_booster( ) ,
23672373 Requirement :: Tech (
23682374 self . game_data. tech_isv. index_by_key[ & TECH_ID_CAN_TEMPORARY_BLUE ] ,
23692375 ) ,
@@ -2381,6 +2387,7 @@ impl<'a> Preprocessor<'a> {
23812387 reqs. push ( Requirement :: Tech (
23822388 self . game_data . tech_isv . index_by_key [ & TECH_ID_CAN_TEMPORARY_BLUE ] ,
23832389 ) ) ;
2390+ reqs. push ( Requirement :: blue_booster ( ) ) ;
23842391 reqs. push ( Requirement :: make_shinecharge ( effective_length, * heated) ) ;
23852392 if * physics != Some ( Physics :: Air ) {
23862393 reqs. push ( Requirement :: Item ( Item :: Gravity as ItemId ) ) ;
0 commit comments