diff --git a/src/k_kart.c b/src/k_kart.c index 477eac771..5671b6d64 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -3734,6 +3734,21 @@ static void K_HandleTumbleSound(player_t *player) } } +void K_TumbleInterrupt(player_t *player) +{ + // If player was tumbling, set variables so that they don't tumble like crazy after they're done respawning + if (player->tumbleBounces > 0) + { + player->tumbleBounces = 0; // MAXBOUNCES-1; + player->pflags &= ~PF_TUMBLELASTBOUNCE; + //players->tumbleHeight = 20; + + players->mo->rollangle = 0; + player->spinouttype = KSPIN_WIPEOUT; + player->spinouttimer = player->wipeoutslow = (3*TICRATE/2)+2; + } +} + void K_ApplyTripWire(player_t *player, tripwirestate_t state) { if (state == TRIP_PASSED) diff --git a/src/k_kart.h b/src/k_kart.h index 767f7e3ca..797899cea 100644 --- a/src/k_kart.h +++ b/src/k_kart.h @@ -73,6 +73,7 @@ void K_DoPowerClash(player_t *t1, player_t *t2); void K_BattleAwardHit(player_t *player, player_t *victim, mobj_t *inflictor, UINT8 bumpersRemoved); void K_SpinPlayer(player_t *player, mobj_t *inflictor, mobj_t *source, INT32 type); void K_TumblePlayer(player_t *player, mobj_t *inflictor, mobj_t *source); +void K_TumbleInterrupt(player_t *player); INT32 K_ExplodePlayer(player_t *player, mobj_t *inflictor, mobj_t *source); void K_DebtStingPlayer(player_t *player, mobj_t *source); void K_HandleBumperChanges(player_t *player, UINT8 prevBumpers); diff --git a/src/k_respawn.c b/src/k_respawn.c index 1132f182b..9a8cc38e8 100644 --- a/src/k_respawn.c +++ b/src/k_respawn.c @@ -151,18 +151,8 @@ void K_DoIngameRespawn(player_t *player) player->ringboost = 0; player->driftboost = player->strongdriftboost = 0; - - // If player was tumbling, set variables so that they don't tumble like crazy after they're done respawning - if (player->tumbleBounces > 0) - { - player->tumbleBounces = 0; // MAXBOUNCES-1; - player->pflags &= ~PF_TUMBLELASTBOUNCE; - //players->tumbleHeight = 20; - players->mo->rollangle = 0; - player->spinouttype = KSPIN_WIPEOUT; - player->spinouttimer = player->wipeoutslow = (3*TICRATE/2)+2; - } + K_TumbleInterrupt(player); P_ResetPlayer(player); // Set up respawn position if invalid diff --git a/src/p_map.c b/src/p_map.c index 9bab04a97..3d6938ed2 100644 --- a/src/p_map.c +++ b/src/p_map.c @@ -417,6 +417,7 @@ boolean P_DoSpring(mobj_t *spring, mobj_t *object) P_SetTarget(&spring->target, object); } + K_TumbleInterrupt(object->player); P_ResetPlayer(object->player); object->player->springstars = max(vertispeed, horizspeed) / FRACUNIT / 2;