From 5efc34e43b81637d0ae086cea90241bacb576ac6 Mon Sep 17 00:00:00 2001 From: James R Date: Sun, 19 Jul 2020 22:18:56 -0700 Subject: [PATCH] Cleanup code and reverse gravity --- src/k_kart.c | 70 +++++++++++++++++++++++++++++++++++----------------- 1 file changed, 48 insertions(+), 22 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index f90ecca37..98b81fcad 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -1657,20 +1657,21 @@ void K_SpawnDriftBoostClip(player_t *player) { mobj_t *clip; fixed_t scale = 115*FRACUNIT/100; + fixed_t z; - clip = P_SpawnMobj( - player->mo->x, - player->mo->y, - player->mo->z + player->mo->height, - MT_DRIFTCLIP - ); + if (( player->mo->eflags & MFE_VERTICALFLIP )) + z = player->mo->z; + else + z = player->mo->z + player->mo->height; + + clip = P_SpawnMobj(player->mo->x, player->mo->y, z, MT_DRIFTCLIP); P_SetTarget(&clip->target, player->mo); P_SetScale(clip, ( clip->destscale = FixedMul(scale, player->mo->scale) )); K_MatchGenericExtraFlags(clip, player->mo); clip->fuse = 105; - clip->momz = 7 * clip->scale; + clip->momz = 7 * P_MobjFlip(clip) * clip->scale; P_InstaThrust(clip, player->mo->angle + K_RandomFlip(P_RandomRange(FRACUNIT/2, FRACUNIT)), @@ -6373,6 +6374,43 @@ INT32 K_GetKartDriftSparkValue(player_t *player) return (26*4 + kartspeed*2 + (9 - player->kartweight))*8; } +/* +Stage 1: red sparks +Stage 2: blue sparks +Stage 3: big large rainbow sparks +*/ +static void K_SpawnDriftBoostExplosion(player_t *player, int stage) +{ + mobj_t *overlay = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_DRIFTEXPLODE); + + P_SetTarget(&overlay->target, player->mo); + P_SetScale(overlay, (overlay->destscale = player->mo->scale)); + K_FlipFromObject(overlay, player->mo); + + switch (stage) + { + case 1: + overlay->color = SKINCOLOR_KETCHUP; + overlay->fuse = 16; + break; + + case 2: + overlay->color = SKINCOLOR_SAPPHIRE; + overlay->fuse = 32; + + S_StartSound(player->mo, sfx_kc5b); + break; + + case 3: + overlay->color = SKINCOLOR_SILVER; + overlay->fuse = 120; + + S_StartSound(player->mo, sfx_kc5b); + S_StartSound(player->mo, sfx_s3kc4l); + break; + } +} + static void K_KartDrift(player_t *player, boolean onground) { fixed_t minspeed = (10 * player->mo->scale); @@ -6389,10 +6427,6 @@ static void K_KartDrift(player_t *player, boolean onground) if (player->kartstuff[k_driftcharge] < 0 || player->kartstuff[k_driftcharge] >= dsone) { angle_t pushdir = R_PointToAngle2(0, 0, player->mo->momx, player->mo->momy); - mobj_t *overlay = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_DRIFTEXPLODE); - P_SetTarget(&overlay->target, player->mo); - P_SetScale(overlay, (overlay->destscale = player->mo->scale)); - K_FlipFromObject(overlay, player->mo); S_StartSound(player->mo, sfx_s23c); //K_SpawnDashDustRelease(player); @@ -6405,9 +6439,6 @@ static void K_KartDrift(player_t *player, boolean onground) if (player->kartstuff[k_driftboost] < 15) player->kartstuff[k_driftboost] = 15; - - overlay->color = SKINCOLOR_GOLD; - overlay->fuse = 10; } else if (player->kartstuff[k_driftcharge] >= dsone && player->kartstuff[k_driftcharge] < dstwo) { @@ -6418,8 +6449,7 @@ static void K_KartDrift(player_t *player, boolean onground) if (player->kartstuff[k_driftboost] < 20) player->kartstuff[k_driftboost] = 20; - overlay->color = SKINCOLOR_KETCHUP; - overlay->fuse = 16; + K_SpawnDriftBoostExplosion(player, 1); } else if (player->kartstuff[k_driftcharge] < dsthree) { @@ -6430,10 +6460,7 @@ static void K_KartDrift(player_t *player, boolean onground) if (player->kartstuff[k_driftboost] < 50) player->kartstuff[k_driftboost] = 50; - overlay->color = SKINCOLOR_SAPPHIRE; - overlay->fuse = 32; - - S_StartSound(player->mo, sfx_kc5b); + K_SpawnDriftBoostExplosion(player, 2); } else if (player->kartstuff[k_driftcharge] >= dsthree) { @@ -6444,8 +6471,7 @@ static void K_KartDrift(player_t *player, boolean onground) if (player->kartstuff[k_driftboost] < 125) player->kartstuff[k_driftboost] = 125; - overlay->color = SKINCOLOR_SILVER; - overlay->fuse = 120; + K_SpawnDriftBoostExplosion(player, 3); } }