From 8b81478e3996be8c5668e1c28e403e37e20da7bd Mon Sep 17 00:00:00 2001 From: James R Date: Sat, 29 Apr 2023 01:16:48 -0700 Subject: [PATCH] G_DoPlayDemo: search for map and gametype after addons are loaded --- src/g_demo.c | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/g_demo.c b/src/g_demo.c index 5cbe6ce38..d34e92733 100644 --- a/src/g_demo.c +++ b/src/g_demo.c @@ -3130,24 +3130,11 @@ void G_DoPlayDemo(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); @@ -3206,6 +3193,21 @@ void G_DoPlayDemo(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.p, &demo.numskins, true); if (!demo.skinlist)