diff --git a/src/k_kart.c b/src/k_kart.c index 374170290..e6b2642fd 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -11143,12 +11143,6 @@ void K_KartUpdatePosition(player_t *player) player->topinfirst = 0; } - // Special stages: fade out music near the finish line - if (P_IsPartyPlayer(player)) - { - K_FadeOutSpecialMusic(player->distancetofinish); - } - player->position = position; } diff --git a/src/k_specialstage.c b/src/k_specialstage.c index 910147a05..f40a65b86 100644 --- a/src/k_specialstage.c +++ b/src/k_specialstage.c @@ -120,6 +120,19 @@ void K_TickSpecialStage(void) return; } + // Special stages: fade out music near the finish line + UINT8 i; + UINT32 lowestdistance = UINT32_MAX; + for (i = 0; i <= r_splitscreen; i++) + { + if (!playeringame[displayplayers[i]] || players[displayplayers[i]].spectator) + continue; + if (players[displayplayers[i]].distancetofinish >= lowestdistance) + continue; + lowestdistance = players[displayplayers[i]].distancetofinish; + } + K_FadeOutSpecialMusic(lowestdistance); + if (P_MobjWasRemoved(specialstageinfo.ufo)) { P_SetTarget(&specialstageinfo.ufo, NULL);