diff --git a/src/k_kart.c b/src/k_kart.c index aed96ad27..495e2ca2d 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -1677,6 +1677,20 @@ void K_SpawnDriftBoostClip(player_t *player) FixedMul(scale, player->speed)); } +void K_SpawnDriftBoostClipSpark(mobj_t *clip) +{ + mobj_t *spark; + + spark = P_SpawnMobj(clip->x, clip->y, clip->z, MT_DRIFTCLIPSPARK); + + P_SetTarget(&spark->target, clip); + P_SetScale(spark, ( spark->destscale = clip->scale )); + K_MatchGenericExtraFlags(spark, clip); + + spark->momx = clip->momx/2; + spark->momy = clip->momx/2; +} + /** \brief Handles the state changing for moving players, moved here to eliminate duplicate code \param player player data diff --git a/src/k_kart.h b/src/k_kart.h index f4bf84cc8..be0ce6bf0 100644 --- a/src/k_kart.h +++ b/src/k_kart.h @@ -31,6 +31,7 @@ void K_MatchGenericExtraFlags(mobj_t *mo, mobj_t *master); void K_GenericExtraFlagsNoZAdjust(mobj_t *mo, mobj_t *master); void K_SpawnDashDustRelease(player_t *player); void K_SpawnDriftBoostClip(player_t *player); +void K_SpawnDriftBoostClipSpark(mobj_t *clip); void K_KartMoveAnimation(player_t *player); void K_KartPlayerHUDUpdate(player_t *player); void K_KartPlayerThink(player_t *player, ticcmd_t *cmd); diff --git a/src/p_mobj.c b/src/p_mobj.c index 8e15b3507..ec25abff5 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -2461,11 +2461,7 @@ static boolean P_ZMovement(mobj_t *mo) { mom.z = -mom.z/2; if (abs(mom.z) > 4 * mo->scale / 3) - { - mobj_t *spark = P_SpawnMobj(mo->x, mo->y, mo->z, MT_DRIFTCLIPSPARK); - spark->momx = mo->momx/2; - spark->momy = mo->momy/2; - } + K_SpawnDriftBoostClipSpark(mo); else mo->flags2 ^= MF2_DONTDRAW; }