diff --git a/src/d_main.cpp b/src/d_main.cpp index 855513ee9..ab5e5ef98 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -3426,6 +3426,7 @@ static int D_InitGame(const FIWADInfo* iwad_info, TArray& allwads, TArr } else { + I_SetFrameTime(); if (!StartCutscene(gameinfo.IntroScene, SJ_BLOCKUI, [=](bool) { gameaction = ga_titleloop; })) D_StartTitle(); diff --git a/src/g_game.cpp b/src/g_game.cpp index 1a355d866..730f599be 100644 --- a/src/g_game.cpp +++ b/src/g_game.cpp @@ -1201,6 +1201,11 @@ void G_Ticker () case ga_titleloop: D_StartTitle(); break; + case ga_intro: + gamestate = GS_INTRO; + gameaction = ga_nothing; + break; + default: diff --git a/src/gamedata/gi.cpp b/src/gamedata/gi.cpp index 8b05a1a41..dcb842223 100644 --- a/src/gamedata/gi.cpp +++ b/src/gamedata/gi.cpp @@ -274,6 +274,12 @@ void FMapInfoParser::ParseGameInfo() if (sc.TokenType == '}') break; sc.TokenMustBe(TK_Identifier); + if (sc.Compare("intro")) + { + ParseCutscene(gameinfo.IntroScene); + continue; + } + FString nextKey = sc.String; sc.MustGetToken('='); @@ -362,10 +368,6 @@ void FMapInfoParser::ParseGameInfo() gameinfo.Dialogue = sc.String; gameinfo.AddDialogues.Clear(); } - else if (nextKey.CompareNoCase("intro") == 0) - { - ParseCutscene(gameinfo.IntroScene); - } // Insert valid keys here. GAMEINFOKEY_STRING(mCheatKey, "cheatKey")