Fix rng desync
This commit is contained in:
parent
fed3bbb74f
commit
e45ad78b18
2 changed files with 26 additions and 3 deletions
|
|
@ -2046,6 +2046,9 @@ void G_BeginRecording(void)
|
|||
|
||||
// Save netvar data
|
||||
CV_SaveDemoVars(&demo_p);
|
||||
|
||||
// Save "mapmusrng" used for altmusic selection
|
||||
WRITEUINT8(demo_p, mapmusrng);
|
||||
|
||||
// Now store some info for each in-game player
|
||||
|
||||
|
|
@ -2935,6 +2938,9 @@ void G_DoPlayDemo(char *defdemoname)
|
|||
|
||||
// net var data
|
||||
CV_LoadDemoVars(&demo_p);
|
||||
|
||||
// Load "mapmusrng" used for altmusic selection
|
||||
mapmusrng = READUINT8(demo_p);
|
||||
|
||||
// Sigh ... it's an empty demo.
|
||||
if (*demo_p == DEMOMARKER)
|
||||
|
|
|
|||
|
|
@ -2500,10 +2500,27 @@ void S_InitLevelMusic(boolean fromnetsave)
|
|||
{
|
||||
if (!fromnetsave)
|
||||
{
|
||||
if (mapheaderinfo[gamemap-1]->musname_size > 1)
|
||||
mapmusrng = P_RandomKey(mapheaderinfo[gamemap-1]->musname_size);
|
||||
|
||||
if (demo.playback)
|
||||
{
|
||||
if (mapheaderinfo[gamemap-1]->musname_size > 1)
|
||||
{
|
||||
UINT32 random = P_RandomFixed();
|
||||
}
|
||||
// mapmusrng has already been set by the demo; just make sure it's valid
|
||||
if (mapmusrng >= mapheaderinfo[gamemap-1]->musname_size)
|
||||
{
|
||||
mapmusrng = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
mapmusrng = 0;
|
||||
{
|
||||
|
||||
if (mapheaderinfo[gamemap-1]->musname_size > 1)
|
||||
mapmusrng = P_RandomKey(mapheaderinfo[gamemap-1]->musname_size);
|
||||
else
|
||||
mapmusrng = 0;
|
||||
}
|
||||
}
|
||||
strncpy(mapmusname, mapheaderinfo[gamemap-1]->musname[mapmusrng], 7);
|
||||
mapmusname[6] = 0;
|
||||
|
|
|
|||
Loading…
Reference in a new issue