diff --git a/code/server/sv_netdemo.c b/code/server/sv_netdemo.c index 01e8429..a34486b 100644 --- a/code/server/sv_netdemo.c +++ b/code/server/sv_netdemo.c @@ -660,9 +660,12 @@ static qboolean SVD_ReadFrame( fileHandle_t f ) { FS_Read( &frameFlags, 1, f ); if ( frameFlags & 1 ) { int j; - // map was restarted — toggle server bit and force all - // clients to receive a full (non-delta) snapshot so the - // client clears old entity state and doesn't interpolate + // map was restarted — reset playback delta state to match + // the recording's reset (both now decode from zero baseline). + // Also toggle server bit and force non-delta snapshot so the + // client clears old entity state and doesn't interpolate. + Com_Memset( demo.playPrevEntities, 0, sizeof(demo.playPrevEntities) ); + Com_Memset( demo.playPrevPlayers, 0, sizeof(demo.playPrevPlayers) ); svs.snapFlagServerBit ^= SNAPFLAG_SERVERCOUNT; for ( j = 0; j < sv_maxclients->integer; j++ ) { if ( svs.clients[j].state >= CS_PRIMED ) {