diff --git a/src/g_game.c b/src/g_game.c index 629466f26..d0b2b1066 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -4172,6 +4172,8 @@ static void G_GetNextMap(void) if (!spec) #endif //#if 0 lastmap = nextmap; + + deferencoremode = (cv_kartencore.value == 1); } // @@ -4343,7 +4345,6 @@ void G_NextLevel(void) } forceresetplayers = false; - deferencoremode = (cv_kartencore.value == 1); gameaction = ga_worlddone; } diff --git a/src/k_kart.c b/src/k_kart.c index 9122e5bf2..d90e4e98c 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -352,6 +352,7 @@ void K_RegisterKartStuff(void) CV_RegisterVar(&cv_gptest); CV_RegisterVar(&cv_capsuletest); CV_RegisterVar(&cv_battletest); + CV_RegisterVar(&cv_debugencorevote); CV_RegisterVar(&cv_reducevfx); } diff --git a/src/k_pwrlv.c b/src/k_pwrlv.c index aa98cbcc3..0f234a504 100644 --- a/src/k_pwrlv.c +++ b/src/k_pwrlv.c @@ -33,6 +33,8 @@ UINT8 spectateGriefed = 0; SINT8 speedscramble = -1; SINT8 encorescramble = -1; +consvar_t cv_debugencorevote = CVAR_INIT ("debugencorevote", "Off", CV_CHEAT|CV_NETVAR, CV_OnOff, NULL); + SINT8 K_UsingPowerLevels(void) { SINT8 pt = PWRLV_DISABLED; @@ -548,7 +550,9 @@ void K_SetPowerLevelScrambles(SINT8 powertype) else speedscramble = -1; - if (cv_kartencore.value == -1) + if (cv_debugencorevote.value) + encorescramble = 1; + else if (cv_kartencore.value == -1) encorescramble = (encore ? 1 : 0); else encorescramble = -1; diff --git a/src/k_pwrlv.h b/src/k_pwrlv.h index 17822a661..9469fe3b7 100644 --- a/src/k_pwrlv.h +++ b/src/k_pwrlv.h @@ -14,6 +14,7 @@ #include "doomtype.h" #include "doomdef.h" #include "d_player.h" +#include "command.h" #ifdef __cplusplus extern "C" { @@ -35,6 +36,8 @@ typedef enum extern SINT8 speedscramble; extern SINT8 encorescramble; +extern consvar_t cv_debugencorevote; + extern UINT16 clientpowerlevels[MAXPLAYERS][PWRLV_NUMTYPES]; extern INT16 clientPowerAdd[MAXPLAYERS]; extern UINT8 spectateGriefed; diff --git a/src/p_setup.c b/src/p_setup.c index 7d4e70508..d0e5b52ed 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -7877,6 +7877,13 @@ boolean P_LoadLevel(boolean fromnetsave, boolean reloadinggamestate) if (encoreLump) { + if (encoreLump->size != 256) + { + I_Error("%s: %s lump is not 256 bytes (actual size %s bytes)\n" + "Make sure the lump is in DOOM Flat or SRB2 Encore format and 16x16", + maplumpname, encoreLump->name, sizeu1(encoreLump->size)); + } + R_ReInitColormaps(mapheaderinfo[gamemap-1]->palette, encoreLump->data, encoreLump->size); } else diff --git a/src/r_data.c b/src/r_data.c index 6f01510a2..a0a0dea20 100644 --- a/src/r_data.c +++ b/src/r_data.c @@ -314,6 +314,8 @@ void R_ReInitColormaps(UINT16 num, void *newencoremap, size_t encoremapsize) lighttable_t *colormap_p, *colormap_p2; size_t p, i; + I_Assert(encoremapsize == 256); + encoremap = Z_MallocAlign(256 + 10, PU_LEVEL, NULL, 8); M_Memcpy(encoremap, newencoremap, encoremapsize); colormap_p = colormap_p2 = colormaps;