diff --git a/src/deh_soc.c b/src/deh_soc.c index e9e184bae..7037c7f36 100644 --- a/src/deh_soc.c +++ b/src/deh_soc.c @@ -3564,6 +3564,13 @@ void readcupheader(MYFILE *f, cupheader_t *cup) cup->levellist[CUPCACHE_SPECIAL] = MapNameOrRemoval(word2); cup->cachedlevels[CUPCACHE_SPECIAL] = NEXTMAP_INVALID; } + else if (fastcmp(word, "ALTPODIUM")) + { + invalidateacrosscups(cup->cachedlevels[CUPCACHE_PODIUM]); + Z_Free(cup->levellist[CUPCACHE_PODIUM]); + cup->levellist[CUPCACHE_PODIUM] = MapNameOrRemoval(word2); + cup->cachedlevels[CUPCACHE_PODIUM] = NEXTMAP_INVALID; + } else if (fastcmp(word, "EMERALDNUM")) { if (i >= 0 && i <= 14) diff --git a/src/doomstat.h b/src/doomstat.h index e6787116e..d25ca720c 100644 --- a/src/doomstat.h +++ b/src/doomstat.h @@ -383,7 +383,8 @@ struct customoption_t #define CUPCACHE_BONUS MAXLEVELLIST #define MAXBONUSLIST 2 #define CUPCACHE_SPECIAL (CUPCACHE_BONUS+MAXBONUSLIST) -#define CUPCACHE_MAX (CUPCACHE_SPECIAL+1) +#define CUPCACHE_PODIUM (CUPCACHE_SPECIAL+1) +#define CUPCACHE_MAX (CUPCACHE_PODIUM+1) #define MAXCUPNAME 16 // includes \0, for cleaner savedata diff --git a/src/k_podium.c b/src/k_podium.c index 630048e98..c5c70bdb9 100644 --- a/src/k_podium.c +++ b/src/k_podium.c @@ -235,16 +235,25 @@ void K_UpdatePodiumWaypoints(player_t *const player) --------------------------------------------------*/ boolean K_StartCeremony(void) { - INT32 podiumMapNum = nummapheaders; - INT32 i; - if (grandprixinfo.gp == false) { return false; } - if (podiummap - && ((podiumMapNum = G_MapNumber(podiummap)) < nummapheaders) + INT32 i; + INT32 podiumMapNum = NEXTMAP_INVALID; + + if (grandprixinfo.cup != NULL + && grandprixinfo.cup->cachedlevels[CUPCACHE_PODIUM] != NEXTMAP_INVALID) + { + podiumMapNum = grandprixinfo.cup->cachedlevels[CUPCACHE_PODIUM]; + } + else if (podiummap) + { + podiumMapNum = G_MapNumber(podiummap); + } + + if (podiumMapNum < nummapheaders && mapheaderinfo[podiumMapNum] && mapheaderinfo[podiumMapNum]->lumpnum != LUMPERROR) {