diff --git a/src/m_menu.c b/src/m_menu.c index 45510625e..e42c40fd6 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -4938,6 +4938,7 @@ static void M_DrawAddons(void) { INT32 x, y; ssize_t i, max; + const char* topstr; // hack - need to refresh at end of frame to handle addfile... if (refreshdirmenu & M_AddonsRefresh()) @@ -4949,9 +4950,16 @@ static void M_DrawAddons(void) if (addonsresponselimit) addonsresponselimit--; - V_DrawCenteredString(BASEVIDWIDTH/2, 4+offs, 0, (Playing() - ? "\x85""Adding files mid-game may cause problems." - : LOCATIONSTRING)); + if (Playing()) + topstr = "\x85""Adding files mid-game may cause problems."; + else if (savemoddata) + topstr = "\x83""Add-on has its own data, saving enabled."; + else if (modifiedgame) + topstr = "\x87""Game is modified, saving is disabled."; + else + topstr = LOCATIONSTRING; + + V_DrawCenteredString(BASEVIDWIDTH/2, 4+offs, 0, topstr); if (numwadfiles <= mainwads+1) y = 0; diff --git a/src/p_user.c b/src/p_user.c index 4c333ec50..bb5457a9a 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -9710,17 +9710,7 @@ void P_PlayerThink(player_t *player) // Synchronizes the "real" amount of time spent in the level. if (!player->exiting) - { - if (gametype == GT_RACE || gametype == GT_COMPETITION) - { - if (leveltime >= 4*TICRATE) - player->realtime = leveltime - 4*TICRATE; - else - player->realtime = 0; - } - else - player->realtime = leveltime; - } + player->realtime = leveltime; if (player->spectator && cmd->buttons & BT_ATTACK && !player->powers[pw_flashing] && G_GametypeHasSpectators()) { diff --git a/src/st_stuff.c b/src/st_stuff.c index 3cc40124d..14e82df1e 100644 --- a/src/st_stuff.c +++ b/src/st_stuff.c @@ -665,9 +665,9 @@ static void ST_drawTime(void) else { // Counting down the hidetime? - if ((gametype == GT_TAG || gametype == GT_HIDEANDSEEK) && (leveltime <= (hidetime*TICRATE))) + if ((gametype == GT_TAG || gametype == GT_HIDEANDSEEK) && (stplyr->realtime <= (hidetime*TICRATE))) { - tics = (hidetime*TICRATE - leveltime); + tics = (hidetime*TICRATE - stplyr->realtime); if (tics < 3*TICRATE) ST_drawRaceNum(tics); downwards = true; @@ -675,15 +675,22 @@ static void ST_drawTime(void) else { // Hidetime finish! - if ((gametype == GT_TAG || gametype == GT_HIDEANDSEEK) && (leveltime < ((hidetime+1)*TICRATE))) - ST_drawRaceNum(hidetime*TICRATE - leveltime); + if ((gametype == GT_TAG || gametype == GT_HIDEANDSEEK) && (stplyr->realtime < ((hidetime+1)*TICRATE))) + ST_drawRaceNum(hidetime*TICRATE - stplyr->realtime); // Time limit? - if (gametype != GT_RACE && gametype != GT_COMPETITION && gametype != GT_COOP && cv_timelimit.value && timelimitintics > 0) + if (gametype == GT_RACE || gametype == GT_COMPETITION) { - if (timelimitintics >= leveltime) + if (stplyr->realtime >= 4*TICRATE) + tics = stplyr->realtime - 4*TICRATE; + else + tics = 0; + } + else if (gametype != GT_COOP && cv_timelimit.value && timelimitintics > 0) + { + if (timelimitintics >= stplyr->realtime) { - tics = (timelimitintics - leveltime); + tics = (timelimitintics - stplyr->realtime); if (tics < 3*TICRATE) ST_drawRaceNum(tics); }