diff --git a/src/g_game.c b/src/g_game.c index 48a5e8949..ea74704aa 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -3841,7 +3841,7 @@ void G_HandleSaveLevel(boolean removecondition) || roundqueue.size == 0) return; - if (roundqueue.position == 1 + if ((roundqueue.position == 1 && roundqueue.entries[0].overridden == false) || players[consoleplayer].lives <= 1) // because a life is lost on reload goto doremove; @@ -4144,7 +4144,7 @@ void G_GetNextMap(void) // Handle primary queue position update. roundqueue.position++; - if (grandprixinfo.gp == false || gametype == roundqueue.entries[0].gametype) + if (grandprixinfo.gp == false || gametype == GT_RACE) // roundqueue.entries[0].gametype { roundqueue.roundnum++; } diff --git a/src/menus/transient/cup-select.c b/src/menus/transient/cup-select.c index 0d7c0a474..5c80ad536 100644 --- a/src/menus/transient/cup-select.c +++ b/src/menus/transient/cup-select.c @@ -68,8 +68,9 @@ static void M_StartCup(UINT8 entry) SplitScreen_OnChange(); } - if (entry == 0) + if (entry == UINT8_MAX) { + entry = 0; memset(&grandprixinfo, 0, sizeof(struct grandprixinfo)); // read our dummy cvars @@ -116,7 +117,7 @@ static void M_StartCup(UINT8 entry) } // Skip Bonus rounds. - if (roundqueue.entries[entry].gametype != roundqueue.entries[0].gametype + if (roundqueue.entries[entry].gametype != GT_RACE // roundqueue.entries[0].gametype && roundqueue.entries[entry].rankrestricted == false) { G_GetNextMap(); // updates position in the roundqueue @@ -187,7 +188,7 @@ static void M_GPBackup(INT32 choice) return; } - M_StartCup(0); + M_StartCup(UINT8_MAX); } void M_CupSelectHandler(INT32 choice) @@ -306,7 +307,7 @@ void M_CupSelectHandler(INT32 choice) return; } - M_StartCup(0); + M_StartCup(UINT8_MAX); } else if (count == 1 && levellist.levelsearch.timeattack == true) { diff --git a/src/y_inter.cpp b/src/y_inter.cpp index 688afbd8c..7c8a71d94 100644 --- a/src/y_inter.cpp +++ b/src/y_inter.cpp @@ -1328,7 +1328,7 @@ void Y_RoundQueueDrawer(y_data_t *standings, INT32 offset, boolean doanimations, else if ( roundqueue.entries[i].overridden == true || (grandprixinfo.gp == true - && roundqueue.entries[i].gametype != roundqueue.entries[0].gametype) + && roundqueue.entries[i].gametype != GT_RACE) // roundqueue.entries[0].gametype ) { if ((gametypes[roundqueue.entries[i].gametype]->rules & GTR_PRISONS) == GTR_PRISONS)