diff --git a/src/g_game.c b/src/g_game.c index e5d96a138..2287ea3fa 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -2352,8 +2352,6 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps) bot = players[player].bot; botdifficulty = players[player].botvars.difficulty; - cangrabitems = players[player].cangrabitems; - botdiffincrease = players[player].botvars.diffincrease; botrival = players[player].botvars.rival; @@ -2439,13 +2437,6 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps) tallyactive = false; cangrabitems = 0; - if (gametyperules & GTR_SPHERES - || gametyperules & GTR_CATCHER - || G_TimeAttackStart() - || gametype == GT_TUTORIAL - || !M_NotFreePlay() - || K_GetNumWaypoints() == 0) - cangrabitems = EARLY_ITEM_FLICKER; } else { @@ -2501,6 +2492,8 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps) { tally = players[player].tally; } + + cangrabitems = players[player].cangrabitems; } spectatorReentry = (betweenmaps ? 0 : players[player].spectatorReentry); diff --git a/src/k_kart.c b/src/k_kart.c index 2fb84c986..c453f6558 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -9781,6 +9781,21 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) player->invincibilitytimer--; } + // The precise ordering of start-of-level made me want to cut my head off, + // so let's try this instead. Whatever! + if (leveltime <= introtime) + { + if ((gametyperules & GTR_SPHERES) + || (gametyperules & GTR_CATCHER) + || G_TimeAttackStart() + || (gametype == GT_TUTORIAL) + || !M_NotFreePlay() + || (K_GetNumWaypoints() == 0)) + player->cangrabitems = EARLY_ITEM_FLICKER; + else + player->cangrabitems = 0; + } + if (player->cangrabitems && player->cangrabitems <= EARLY_ITEM_FLICKER) player->cangrabitems++;