diff --git a/src/g_demo.c b/src/g_demo.c index 659075c8a..ec2372c8c 100644 --- a/src/g_demo.c +++ b/src/g_demo.c @@ -3207,24 +3207,11 @@ void G_DoPlayDemo(const char *defdemoname) } demobuf.p += 4; // "PLAY" READSTRINGN(demobuf.p, mapname, sizeof(mapname)); // gamemap - gamemap = G_MapNumber(mapname)+1; demobuf.p += 16; // mapmd5 demoflags = READUINT8(demobuf.p); READSTRINGN(demobuf.p, gtname, sizeof(gtname)); // gametype - i = G_GetGametypeByName(gtname); - if (i < 0) - { - snprintf(msg, 1024, M_GetText("%s is in a gametype that is not currently loaded and cannot be played.\n"), pdemoname); - CONS_Alert(CONS_ERROR, "%s", msg); - M_StartMessage(msg, NULL, MM_NOTHING); - Z_Free(pdemoname); - Z_Free(demobuf.buffer); - demo.playback = false; - return; - } - G_SetGametype(i); numlaps = READUINT8(demobuf.p); @@ -3283,6 +3270,21 @@ void G_DoPlayDemo(const char *defdemoname) } } + gamemap = G_MapNumber(mapname)+1; + + i = G_GetGametypeByName(gtname); + if (i < 0) + { + snprintf(msg, 1024, M_GetText("%s is in a gametype that is not currently loaded and cannot be played.\n"), pdemoname); + CONS_Alert(CONS_ERROR, "%s", msg); + M_StartMessage(msg, NULL, MM_NOTHING); + Z_Free(pdemoname); + Z_Free(demobuf.buffer); + demo.playback = false; + return; + } + G_SetGametype(i); + // character list demo.skinlist = G_LoadDemoSkins(&demobuf, &demo.numskins, true); if (!demo.skinlist)