Actually sync respawns properly

This commit is contained in:
GenericHeroGuy 2025-08-31 21:32:16 +02:00
parent c9802c36c8
commit 8d99f98bea
2 changed files with 10 additions and 6 deletions

View file

@ -3574,7 +3574,10 @@ static void Got_Respawn(UINT8 **cp, INT32 playernum)
INT32 respawnplayer = READINT32(*cp);
// You can't respawn someone else. Nice try, there.
if (respawnplayer != playernum || P_PlayerInPain(&players[respawnplayer]) || spbplace == players[respawnplayer].position) // srb2kart: "|| (!(gametyperules & GTR_CIRCUIT))"
// Unless it's a bot. They can respawn whenever they feel like it, if the server says so.
if (players[respawnplayer].bot
? playernum != serverplayer
: respawnplayer != playernum || P_PlayerInPain(&players[respawnplayer]) || spbplace == players[respawnplayer].position)
{
CONS_Alert(CONS_WARNING, M_GetText("Illegal respawn command received from %s\n"), player_names[playernum]);
if (server)
@ -3589,7 +3592,7 @@ static void Got_Respawn(UINT8 **cp, INT32 playernum)
return;
P_DamageMobj(players[respawnplayer].mo, NULL, NULL, 1, DMG_INSTAKILL);
demo_extradata[playernum] |= DXD_RESPAWN;
demo_extradata[respawnplayer] |= DXD_RESPAWN;
}
}

View file

@ -1587,11 +1587,12 @@ void K_BotTicker(const player_t *player)
if (bd->respawnconfirm >= BOTRESPAWNCONFIRM || player->speed < 10*FRACUNIT)
{
// Now a clean function! Neat, eh?
//K_SetRespawnAtNextWaypoint(player);
// WHAT ARE YOU DOING??? RACE ALREADY!
P_DamageMobj(player->mo, NULL, NULL, 1, DMG_INSTAKILL);
// ...
// FINE, I'LL SEND A RESPAWN COMMAND ON YOUR BEHALF!
char buf[4], *cp = buf;
WRITEINT32(cp, player - players);
SendNetXCmdForPlayer(consoleplayer, XD_RESPAWN, buf, sizeof(buf));
}
return;
}