@@ -1126,7 +1126,7 @@ void func_8002A79C(Player* player, s8 playerIndex) {
11261126 player -> effects |= MINI_TURBO_EFFECT ;
11271127 player -> unk_23A = 0 ;
11281128 player -> driftState = 0 ;
1129- player -> unk_228 = 0 ;
1129+ player -> driftStateCounter = 0 ;
11301130 if (D_8015F890 != 1 ) {
11311131 if ((player -> type & PLAYER_HUMAN ) && !(player -> type & PLAYER_INVISIBLE_OR_BOMB )) {
11321132 func_800C9250 (playerIndex );
@@ -1140,50 +1140,50 @@ void func_8002A79C(Player* player, s8 playerIndex) {
11401140 player -> unk_23A = 0 ;
11411141 player -> effects &= ~MINI_TURBO_EFFECT ;
11421142 player -> driftState = 0 ;
1143- player -> unk_228 = 0 ;
1143+ player -> driftStateCounter = 0 ;
11441144 }
11451145 }
11461146}
11471147
1148- void func_8002A8A4 (Player * player , s8 playerIndex ) {
1148+ void update_drift_state_counter (Player * player , s8 playerIndex ) {
11491149 if (((s16 ) player -> unk_0C0 / DEGREES_CONVERSION_FACTOR ) > 0 ) {
11501150 if (((s32 ) player -> steerPosition >> 16 ) <= -10 ) {
1151- if (player -> unk_228 < 0x65 ) {
1152- player -> unk_228 ++ ;
1151+ if (player -> driftStateCounter <= 100 ) {
1152+ player -> driftStateCounter ++ ;
11531153 }
1154- if ((player -> unk_228 == 0x0064 ) && (player -> type & PLAYER_HUMAN )) {
1154+ if ((player -> driftStateCounter == 100 ) && (player -> type & PLAYER_HUMAN )) {
11551155 func_800C9060 (playerIndex , 0x1900851EU );
11561156 }
11571157 } else {
1158- if ((player -> unk_228 >= 0x12 ) && (player -> unk_228 < 0x64 )) {
1158+ if ((player -> driftStateCounter >= 18 ) && (player -> driftStateCounter < 100 )) {
11591159 if (player -> driftState < 3 ) {
11601160 player -> driftState ++ ;
11611161 }
11621162 }
1163- if ((player -> unk_228 >= 0xA ) && (player -> unk_228 < 0x64 )) {
1164- player -> unk_228 = 0x000A ;
1163+ if ((player -> driftStateCounter >= 10 ) && (player -> driftStateCounter < 100 )) {
1164+ player -> driftStateCounter = 10 ;
11651165 } else {
1166- player -> unk_228 = 0 ;
1166+ player -> driftStateCounter = 0 ;
11671167 player -> driftState = 0 ;
11681168 }
11691169 }
11701170 } else if (((s32 ) player -> steerPosition >> 16 ) >= 10 ) {
1171- if (player -> unk_228 < 0x65 ) {
1172- player -> unk_228 ++ ;
1171+ if (player -> driftStateCounter <= 100 ) {
1172+ player -> driftStateCounter ++ ;
11731173 }
1174- if ((player -> unk_228 == 0x0064 ) && (player -> type & PLAYER_HUMAN )) {
1174+ if ((player -> driftStateCounter == 100 ) && (player -> type & PLAYER_HUMAN )) {
11751175 func_800C9060 (playerIndex , 0x1900851EU );
11761176 }
11771177 } else {
1178- if ((player -> unk_228 >= 0x12 ) && (player -> unk_228 < 0x64 )) {
1178+ if ((player -> driftStateCounter >= 18 ) && (player -> driftStateCounter < 100 )) {
11791179 if (player -> driftState < 3 ) {
11801180 player -> driftState ++ ;
11811181 }
11821182 }
1183- if ((player -> unk_228 >= 0xA ) && (player -> unk_228 < 0x64 )) {
1184- player -> unk_228 = 0x000A ;
1183+ if ((player -> driftStateCounter >= 10 ) && (player -> driftStateCounter < 100 )) {
1184+ player -> driftStateCounter = 10 ;
11851185 } else {
1186- player -> unk_228 = 0 ;
1186+ player -> driftStateCounter = 0 ;
11871187 player -> driftState = 0 ;
11881188 }
11891189 }
@@ -1755,7 +1755,7 @@ void func_8002BF4C(Player* player, s8 playerIndex) {
17551755void update_player_drift_duration (Player * player ) {
17561756 if ((player -> effects & DRIFTING_EFFECT ) == DRIFTING_EFFECT ) {
17571757 player -> driftDuration += 1 ;
1758- if (player -> driftDuration >= 101 ) {
1758+ if (player -> driftDuration > 100 ) {
17591759 player -> driftDuration = 100 ;
17601760 }
17611761 } else {
@@ -2013,7 +2013,7 @@ void apply_effect(Player* player, s8 playerIndex, s8 arg2) {
20132013 if ((player -> effects & BOO_EFFECT ) == BOO_EFFECT ) {
20142014 apply_boo_effect (player , playerIndex );
20152015 }
2016- if (((player -> effects & DRIFT_OUTSIDE_EFFECT ) == DRIFT_OUTSIDE_EFFECT ) && (player -> unk_228 >= 0x64 )) {
2016+ if (((player -> effects & DRIFT_OUTSIDE_EFFECT ) == DRIFT_OUTSIDE_EFFECT ) && (player -> driftStateCounter >= 100 )) {
20172017 player_decelerate_alternative (player , 4.0f );
20182018 }
20192019 if (((player -> effects & BANANA_SPINOUT_EFFECT ) == BANANA_SPINOUT_EFFECT ) ||
@@ -2145,7 +2145,7 @@ void func_8002D268(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
21452145 func_8002BF4C (player , playerId );
21462146 }
21472147 apply_effect (player , playerId , screenId );
2148- if (((player -> effects & DRIFT_OUTSIDE_EFFECT ) == DRIFT_OUTSIDE_EFFECT ) && (player -> unk_228 >= 0x64 )) {
2148+ if (((player -> effects & DRIFT_OUTSIDE_EFFECT ) == DRIFT_OUTSIDE_EFFECT ) && (player -> driftStateCounter >= 100 )) {
21492149 sp7C = 2 ;
21502150 }
21512151 func_80037BB4 (player , sp160 );
@@ -3046,7 +3046,7 @@ f32 func_80030150(Player* player, s8 playerIndex) {
30463046 var_f0 += var_v0 * (0.01 + gKartTurnSpeedReductionTable0 [player -> characterId ]);
30473047 }
30483048 }
3049- if (((player -> effects & DRIFT_OUTSIDE_EFFECT ) == DRIFT_OUTSIDE_EFFECT ) && (player -> unk_228 < 0xA )) {
3049+ if (((player -> effects & DRIFT_OUTSIDE_EFFECT ) == DRIFT_OUTSIDE_EFFECT ) && (player -> driftStateCounter < 10 )) {
30503050 if (var_v0 < 0 ) {
30513051 var_f0 += - var_v0 * 0.008 ;
30523052 } else {
@@ -3924,13 +3924,20 @@ void func_80033AE0(Player* player, struct Controller* controller, s8 playerIndex
39243924 0.8 , 0.8 , 0.8 , 0.8 , 0.8 , 0.8 , 0.8 , 0.8 , 0.8 , 0.8 , 0.8 , 0.8 , 0.8 , 0.8 , 0.8 , 0.8 , 0.8 , 0.8 ,
39253925 0.8 , 0.8 , 0.8 , 0.8 , 0.8 , 0.8 , 0.8 , 0.8 , 0.8 , 0.8 , 0.8 , 0.8 };
39263926
3927- if (((((player -> effects & HOP_EFFECT ) != HOP_EFFECT ) &&
3928- ((((player -> unk_0C0 / 182 ) <= 6 ) && ((player -> unk_0C0 / 182 ) >= (-6 ))) ||
3929- ((controller -> button & R_TRIG ) != R_TRIG ))) ||
3930- (((player -> speed / 18.0f ) * 216.0f ) <= 20.0f )) ||
3931- ((player -> effects & ENEMY_BONK_EFFECT ) == ENEMY_BONK_EFFECT )) {
3932- func_80036CB4 (player );
3927+ if (
3928+ (
3929+ ((player -> effects & HOP_EFFECT ) != HOP_EFFECT ) &&
3930+ (
3931+ ((player -> unk_0C0 / DEGREES_CONVERSION_FACTOR <= 6 ) && (player -> unk_0C0 / DEGREES_CONVERSION_FACTOR >= -6 )) ||
3932+ ((controller -> button & R_TRIG ) != R_TRIG )
3933+ )
3934+ ) ||
3935+ (((player -> speed / 18.0f ) * 216.0f ) <= 20.0f ) ||
3936+ ((player -> effects & ENEMY_BONK_EFFECT ) == ENEMY_BONK_EFFECT )
3937+ ) {
3938+ cancel_drift_effect (player );
39333939 }
3940+
39343941 if ((player -> unk_0C0 / DEGREES_CONVERSION_FACTOR ) < (-5 )) {
39353942 player -> kartProps |= LEFT_TURN ;
39363943 player -> kartProps &= ~RIGHT_TURN ;
@@ -4180,7 +4187,7 @@ void func_80033AE0(Player* player, struct Controller* controller, s8 playerIndex
41804187 player -> unk_078 = (player -> steerPosition >> 16 ) * ((var_f2_2 + 1.6 ) + (var_f2_2 * var_f12 ));
41814188 }
41824189 }
4183- player -> unk_228 = 0 ;
4190+ player -> driftStateCounter = 0 ;
41844191 if (player -> driftState < 2 ) {
41854192 player -> driftState = 0 ;
41864193 }
@@ -4195,7 +4202,7 @@ void func_80033AE0(Player* player, struct Controller* controller, s8 playerIndex
41954202 player -> effects |= DRIFT_OUTSIDE_EFFECT ;
41964203 }
41974204 }
4198- func_8002A8A4 (player , playerIndex );
4205+ update_drift_state_counter (player , playerIndex );
41994206 } else {
42004207 // linear map, sets -53 to -53 and 53 to -40
42014208 var_s1_2 = (((s32 ) (((player -> steerPosition >> 16 ) * 13 ) + (13 * 53 ))) / (2 * 53 )) - 53 ;
@@ -4205,7 +4212,7 @@ void func_80033AE0(Player* player, struct Controller* controller, s8 playerIndex
42054212 player -> effects |= DRIFT_OUTSIDE_EFFECT ;
42064213 }
42074214 }
4208- func_8002A8A4 (player , playerIndex );
4215+ update_drift_state_counter (player , playerIndex );
42094216 }
42104217 if ((((player -> speed / 18.0f ) * 216.0f ) >= 0.0f ) && (((player -> speed / 18.0f ) * 216.0f ) < 8.0f )) {
42114218 player -> unk_078 = (s16 ) ((s32 ) (var_s1_2 * ((var_f2_2 + 2.0f ) + (var_f2_2 * var_f12 ))));
@@ -4264,7 +4271,7 @@ void apply_cpu_turn(Player* player, s16 targetAngle) {
42644271 (player -> effects & HIT_BY_STAR_EFFECT ) || (player -> effects & SQUISH_EFFECT ))) {
42654272 if (!(((player -> speed / 18.0f ) * 216.0f ) >= 110.0f )) {
42664273 player -> effects &= ~DRIFT_OUTSIDE_EFFECT ;
4267- player -> unk_228 = 0 ;
4274+ player -> driftStateCounter = 0 ;
42684275 if (!(player -> effects & BANANA_SPINOUT_EFFECT ) && !(player -> effects & DRIVING_SPINOUT_EFFECT )) {
42694276 sp304 = (s32 ) player -> steerPosition >> 16 ;
42704277 move_s32_towards (& sp304 , (s32 ) targetAngle , 0.35f );
@@ -4308,11 +4315,10 @@ void apply_cpu_turn(Player* player, s16 targetAngle) {
43084315 }
43094316 player -> unk_078 = var_v0 * var_f0 ;
43104317 }
4311- if ((((player -> effects & HOP_EFFECT ) != HOP_EFFECT ) && (player -> unk_0C0 < 0x3D ) &&
4312- (player -> unk_0C0 > -0x3D )) ||
4318+ if ((((player -> effects & HOP_EFFECT ) != HOP_EFFECT ) && (player -> unk_0C0 <= 60 ) && (player -> unk_0C0 >= -60 )) ||
43134319 (((player -> speed / 18.0f ) * 216.0f ) <= 20.0f ) ||
43144320 ((player -> effects & ENEMY_BONK_EFFECT ) == ENEMY_BONK_EFFECT )) {
4315- func_80036CB4 (player );
4321+ cancel_drift_effect (player );
43164322 }
43174323 }
43184324 }
@@ -4327,7 +4333,7 @@ void func_80036C5C(Player* player) {
43274333 }
43284334}
43294335
4330- void func_80036CB4 (Player * player ) {
4336+ void cancel_drift_effect (Player * player ) {
43314337 s32 steer_position_new ;
43324338
43334339 if (((player -> effects & DRIFTING_EFFECT ) == DRIFTING_EFFECT ) && ((player -> type & PLAYER_HUMAN ) == PLAYER_HUMAN )) {
@@ -4597,7 +4603,7 @@ void func_80037BB4(Player* player, Vec3f arg1) {
45974603 arg1 [2 ] = 0.0f ;
45984604 } else {
45994605 if (player -> unk_078 < 0 ) {
4600- if (((player -> effects & DRIFT_OUTSIDE_EFFECT ) != DRIFT_OUTSIDE_EFFECT ) || (player -> unk_228 >= 0x64 )) {
4606+ if (((player -> effects & DRIFT_OUTSIDE_EFFECT ) != DRIFT_OUTSIDE_EFFECT ) || (player -> driftStateCounter >= 100 )) {
46014607 player -> rotation [1 ] += player -> unk_078 ;
46024608 }
46034609 if (!(player -> type & PLAYER_CPU )) {
@@ -4610,7 +4616,7 @@ void func_80037BB4(Player* player, Vec3f arg1) {
46104616 func_80037614 (player , sp20 , arg1 );
46114617 }
46124618 } else {
4613- if (((player -> effects & DRIFT_OUTSIDE_EFFECT ) != DRIFT_OUTSIDE_EFFECT ) || (player -> unk_228 >= 0x64 )) {
4619+ if (((player -> effects & DRIFT_OUTSIDE_EFFECT ) != DRIFT_OUTSIDE_EFFECT ) || (player -> driftStateCounter >= 100 )) {
46144620 player -> rotation [1 ] += player -> unk_078 ;
46154621 }
46164622 if (!(player -> type & PLAYER_CPU )) {
0 commit comments