Merge branch 'tube-gbj' into 'master'

Tube GBJ

See merge request kart-krew-dev/ring-racers-internal!2804
This commit is contained in:
Eidolon 2025-09-11 15:12:23 -05:00
commit 47be16eee5

View file

@ -238,33 +238,46 @@ void K_DoIngameRespawn(player_t *player)
UINT32 bestdist = UINT32_MAX; UINT32 bestdist = UINT32_MAX;
mapthing_t *beststart = NULL; mapthing_t *beststart = NULL;
UINT8 numstarts = 0; UINT8 numstarts = 0;
mapthing_t **starts;
if (gametyperules & GTR_BATTLESTARTS) if (gametyperules & GTR_BATTLESTARTS)
{ {
numstarts = numdmstarts; numstarts = numdmstarts;
starts = deathmatchstarts;
} }
else else
{ {
numstarts = numcoopstarts; numstarts = numcoopstarts;
starts = playerstarts;
} }
if (numstarts > 0) if (numstarts > 0)
{ {
UINT8 i = 0; UINT8 i = 0;
for (i = 0; i < numstarts; i++) if (gametype == GT_TUTORIAL)
{
// In tutorial, spawnpoints are player ID locked.
// ...but returning from Test Track can do funny things,
// so we use relative ID instead of literal slot number.
UINT8 spos = 0;
for (; i < MAXPLAYERS; i++)
{
if (i == player-players)
break;
if (!playeringame[i])
continue;
spos++;
}
beststart = starts[spos % numstarts];
}
else for (i = 0; i < numstarts; i++)
{ {
UINT32 dist = UINT32_MAX; UINT32 dist = UINT32_MAX;
mapthing_t *checkstart = NULL; mapthing_t *checkstart = NULL;
if (gametyperules & GTR_BATTLESTARTS) checkstart = starts[i];
{
checkstart = deathmatchstarts[i];
}
else
{
checkstart = playerstarts[i];
}
dist = (UINT32)P_AproxDistance((player->mo->x >> FRACBITS) - checkstart->x, dist = (UINT32)P_AproxDistance((player->mo->x >> FRACBITS) - checkstart->x,
(player->mo->y >> FRACBITS) - checkstart->y); (player->mo->y >> FRACBITS) - checkstart->y);