// if server is active, we already began a loading plaque
if (!sv.active)
+ {
SCR_BeginLoadingPlaque();
+ S_StopAllSounds();
+ }
// check memory integrity
Mem_CheckSentinelsGlobal();
cl.downloadcsqc = true;
cl.loadbegun = false;
cl.loadfinished = false;
+ cl.loadcsqc = true;
}
// check memory integrity
cl.mtime[0] = newtime;
if (cls.timedemo || (cl.islocalgame && !sv_fixedframeratesingleplayer.integer) || cl.mtime[1] == cl.mtime[0] || cls.signon < SIGNONS)
cl.time = cl.mtime[1] = newtime;
- else if (cls.protocol != PROTOCOL_QUAKEWORLD && !cls.demoplayback)
+ else if (cls.demoplayback)
+ {
+ // when time falls behind during demo playback it means the cl.mtime[1] was altered
+ // due to a large time gap, so treat it as an instant change in time
+ // (this can also happen during heavy packet loss in the demo)
+ if (cl.time < newtime - 0.1)
+ cl.mtime[1] = cl.time = newtime;
+ }
+ else if (cls.protocol != PROTOCOL_QUAKEWORLD)
{
cl.mtime[1] = max(cl.mtime[1], cl.mtime[0] - 0.1);
if (developer.integer >= 100 && vid_activewindow)
if(!cl.intermission)
cl.completed_time = cl.time;
cl.intermission = 1;
+ CL_VM_UpdateIntermissionState(cl.intermission);
break;
case svc_finale:
if(!cl.intermission)
cl.completed_time = cl.time;
cl.intermission = 2;
+ CL_VM_UpdateIntermissionState(cl.intermission);
SCR_CenterPrint(MSG_ReadString ());
break;
if(!cl.intermission)
cl.completed_time = cl.time;
cl.intermission = 3;
+ CL_VM_UpdateIntermissionState(cl.intermission);
SCR_CenterPrint(MSG_ReadString ());
break;