Actually sync respawns properly
This commit is contained in:
parent
c9802c36c8
commit
8d99f98bea
2 changed files with 10 additions and 6 deletions
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue