diff --git a/src/k_kart.c b/src/k_kart.c index 9635ad966..b65553acc 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -10511,21 +10511,7 @@ static void K_KartSpindash(player_t *player) P_InstaThrust(player->mo, player->mo->angle, thrust); } - if (!player->tiregrease) - { - UINT8 i; - for (i = 0; i < 2; i++) - { - mobj_t *grease; - grease = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_TIREGREASE); - P_SetTarget(&grease->target, player->mo); - grease->angle = K_MomentumAngle(player->mo); - grease->extravalue1 = i; - K_ReduceVFX(grease, player); - } - } - - player->tiregrease = 2*TICRATE; + K_SetTireGrease(player, 2*TICRATE); player->spindash = 0; S_ReducedVFXSound(player->mo, sfx_s23c, player); @@ -12479,4 +12465,23 @@ boolean K_Cooperative(void) return false; } +void K_SetTireGrease(player_t *player, tic_t tics) +{ + if (!player->tiregrease) + { + UINT8 i; + for (i = 0; i < 2; i++) + { + mobj_t *grease; + grease = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_TIREGREASE); + P_SetTarget(&grease->target, player->mo); + grease->angle = K_MomentumAngle(player->mo); + grease->extravalue1 = i; + K_ReduceVFX(grease, player); + } + } + + player->tiregrease = tics; +} + //} diff --git a/src/k_kart.h b/src/k_kart.h index af773c953..7d0379760 100644 --- a/src/k_kart.h +++ b/src/k_kart.h @@ -235,6 +235,8 @@ boolean K_Cooperative(void); // lat: used for when the player is in some weird state where it wouldn't be wise for it to be overwritten by another object that does similarly wacky shit. boolean K_isPlayerInSpecialState(player_t *p); +void K_SetTireGrease(player_t *player, tic_t tics); + #ifdef __cplusplus } // extern "C" #endif diff --git a/src/p_loop.c b/src/p_loop.c index b0aeb7a79..e8b7e44bb 100644 --- a/src/p_loop.c +++ b/src/p_loop.c @@ -84,7 +84,7 @@ void P_ExitPlayerOrbit(player_t *player) } // tiregrease gives less friction, extends momentum - player->tiregrease = TICRATE; + K_SetTireGrease(player, TICRATE); P_HaltPlayerOrbit(player); } diff --git a/src/p_map.c b/src/p_map.c index dd23deae7..9bd4a141a 100644 --- a/src/p_map.c +++ b/src/p_map.c @@ -323,25 +323,7 @@ P_DoSpringEx object->player->springstars = max(abs(vertispeed), horizspeed) / FRACUNIT / 2; object->player->springcolor = starcolor; - // Less friction when hitting springs - if (!object->player->tiregrease) - { - UINT8 i; - for (i = 0; i < 2; i++) - { - mobj_t *grease; - grease = P_SpawnMobj(object->x, object->y, object->z, MT_TIREGREASE); - P_SetTarget(&grease->target, object); - grease->angle = K_MomentumAngle(object); - grease->extravalue1 = i; - K_ReduceVFX(grease, object->player); - } - } - - if (object->player->tiregrease < greasetics) - { - object->player->tiregrease = greasetics; - } + K_SetTireGrease(object->player, max(object->player->tiregrease, greasetics)); } }