diff --git a/src/dehacked.c b/src/dehacked.c index fff9dbee87976b290b839fee99cc7569414cc72d..250bfb4b75984bd431b67259f0900c5405f5d905 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -1573,6 +1573,13 @@ static void readlevelheader(MYFILE *f, INT32 num) else mapheaderinfo[num-1]->levelflags &= ~LF_MIXNIGHTSCOUNTDOWN; } + else if (fastcmp(word, "NOTITLECARD")) + { + if (i || word2[0] == 'T' || word2[0] == 'Y') + mapheaderinfo[num-1]->levelflags |= LF_NOTITLECARD; + else + mapheaderinfo[num-1]->levelflags &= ~LF_NOTITLECARD; + } // Individual triggers for menu flags else if (fastcmp(word, "HIDDEN")) @@ -9012,6 +9019,7 @@ struct { {"LF_NOZONE",LF_NOZONE}, {"LF_SAVEGAME",LF_SAVEGAME}, {"LF_MIXNIGHTSCOUNTDOWN",LF_MIXNIGHTSCOUNTDOWN}, + {"LF_NOTITLECARD",LF_NOTITLECARD}, // And map flags {"LF2_HIDEINMENU",LF2_HIDEINMENU}, {"LF2_HIDEINSTATS",LF2_HIDEINSTATS}, diff --git a/src/doomstat.h b/src/doomstat.h index 7d06f03e24445c868d385f6dc83002fbcb542ab2..d9c9b92acec30560d8364fa75350566d2d05dd78 100644 --- a/src/doomstat.h +++ b/src/doomstat.h @@ -349,6 +349,7 @@ typedef struct #define LF_NOZONE 16 ///< Don't include "ZONE" on level title #define LF_SAVEGAME 32 ///< Save the game upon loading this level #define LF_MIXNIGHTSCOUNTDOWN 64 ///< Play sfx_timeup instead of music change for NiGHTS countdown +#define LF_NOTITLECARD 128 ///< Don't start the title card #define LF2_HIDEINMENU 1 ///< Hide in the multiplayer menu #define LF2_HIDEINSTATS 2 ///< Hide in the statistics screen diff --git a/src/f_wipe.c b/src/f_wipe.c index 9adbcbc02f927d5fae5d61b9f22b54880410057f..d3786c69f02b2f863be48e66166285838878a79d 100644 --- a/src/f_wipe.c +++ b/src/f_wipe.c @@ -375,6 +375,7 @@ void F_RunWipe(UINT8 wipetype, boolean drawMenu) // draw level title if ((WipeStageTitle && st_overlay) + && !(mapheaderinfo[gamemap-1]->levelflags & LF_NOTITLECARD) && *mapheaderinfo[gamemap-1]->lvlttl != '\0') { ST_runTitleCard(); diff --git a/src/g_game.c b/src/g_game.c index a4dc16b954d6ba6b1103854cb066b6ffe2fd99fe..c16c284891a3974a702859947a1dbfbe7346e1b8 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -1712,6 +1712,14 @@ void G_DoLoadLevel(boolean resetplayer) // void G_StartTitleCard(void) { + // The title card has been disabled for this map. + // Oh well. + if (mapheaderinfo[gamemap-1]->levelflags & LF_NOTITLECARD) + { + WipeStageTitle = false; + return; + } + // clear the hud CON_ClearHUD(); diff --git a/src/p_setup.c b/src/p_setup.c index fc88a5e5e4108355d7d79ff9a8f4369884258701..34a7c1437ae5b3dee1d99b4f902b39a8fca12f3b 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -3226,15 +3226,21 @@ boolean P_SetupLevel(boolean skipprecip) #endif } - // Stage title! + // No render mode, stop here. + if (rendermode == render_none) + return true; + + // Title card! G_StartTitleCard(); // Can the title card actually run, though? - if (rendermode != render_none - && WipeStageTitle - && ranspecialwipe != 2 - && *mapheaderinfo[gamemap-1]->lvlttl != '\0' - ) + if (!WipeStageTitle) + return true; + if (ranspecialwipe == 2) + return true; + + // If so... + if ((!(mapheaderinfo[gamemap-1]->levelflags & LF_NOTITLECARD)) && (*mapheaderinfo[gamemap-1]->lvlttl != '\0')) G_PreLevelTitleCard(lt_ticker, true); return true; diff --git a/src/st_stuff.c b/src/st_stuff.c index 00371a6e839bc963e2eb6a97ad9c3fc02ba4a1f6..504fa3b8ee109ab0e6cea9ecca61856a5cee6a73 100644 --- a/src/st_stuff.c +++ b/src/st_stuff.c @@ -2539,7 +2539,7 @@ static void ST_overlayDrawer(void) // Check for a valid level title // If the HUD is enabled // And, if Lua is running, if the HUD library has the stage title enabled - if (*mapheaderinfo[gamemap-1]->lvlttl != '\0' && !(hu_showscores && (netgame || multiplayer))) + if (!(mapheaderinfo[gamemap-1]->levelflags & LF_NOTITLECARD) && *mapheaderinfo[gamemap-1]->lvlttl != '\0' && !(hu_showscores && (netgame || multiplayer))) { stagetitle = true; ST_preDrawTitleCard();