Fix a few instances of rainbow things going through invalid skincolors

This commit is contained in:
Sally Coolatta 2020-09-25 12:54:35 -04:00
parent 2d4818a9fc
commit 91d4d19bda
2 changed files with 9 additions and 6 deletions

View file

@ -888,7 +888,7 @@ static void K_drawKartItem(void)
INT32 itembar = 0; INT32 itembar = 0;
INT32 maxl = 0; // itembar's normal highest value INT32 maxl = 0; // itembar's normal highest value
const INT32 barlength = (r_splitscreen > 1 ? 12 : 26); const INT32 barlength = (r_splitscreen > 1 ? 12 : 26);
UINT8 localcolor = SKINCOLOR_NONE; UINT16 localcolor = SKINCOLOR_NONE;
SINT8 colormode = TC_RAINBOW; SINT8 colormode = TC_RAINBOW;
UINT8 *colmap = NULL; UINT8 *colmap = NULL;
boolean flipamount = false; // Used for 3P/4P splitscreen to flip item amount stuff boolean flipamount = false; // Used for 3P/4P splitscreen to flip item amount stuff
@ -1101,7 +1101,7 @@ static void K_drawKartItem(void)
switch (stplyr->karthud[khud_itemblinkmode]) switch (stplyr->karthud[khud_itemblinkmode])
{ {
case 2: case 2:
localcolor = (UINT8)(1 + (leveltime % (MAXSKINCOLORS-1))); localcolor = K_RainbowColor(leveltime);
break; break;
case 1: case 1:
localcolor = SKINCOLOR_RED; localcolor = SKINCOLOR_RED;
@ -2811,7 +2811,7 @@ static void K_drawKartMinimap(void)
const INT32 prevsplitflags = splitflags; const INT32 prevsplitflags = splitflags;
splitflags &= ~V_HUDTRANSHALF; splitflags &= ~V_HUDTRANSHALF;
splitflags |= V_HUDTRANS; splitflags |= V_HUDTRANS;
colormap = R_GetTranslationColormap(TC_RAINBOW, (UINT8)(1 + (leveltime % (MAXSKINCOLORS-1))), GTC_CACHE); colormap = R_GetTranslationColormap(TC_RAINBOW, K_RainbowColor(leveltime), GTC_CACHE);
K_drawKartMinimapIcon(battleovertime.x, battleovertime.y, x, y, splitflags, kp_itemminimap, colormap, AutomapPic); K_drawKartMinimapIcon(battleovertime.x, battleovertime.y, x, y, splitflags, kp_itemminimap, colormap, AutomapPic);
splitflags = prevsplitflags; splitflags = prevsplitflags;
} }

View file

@ -6436,7 +6436,10 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
else if (mobj->fuse <= 32) else if (mobj->fuse <= 32)
mobj->color = SKINCOLOR_SAPPHIRE; mobj->color = SKINCOLOR_SAPPHIRE;
else if (mobj->fuse > 32) else if (mobj->fuse > 32)
mobj->color = (UINT8)(1 + (leveltime % (MAXSKINCOLORS-1))); mobj->color = K_RainbowColor(
(SKINCOLOR_PURPLE - SKINCOLOR_PINK) // Smoothly transition into the other state
+ ((mobj->fuse - 32) * 2) // Make the color flashing slow down while it runs out
);
switch (mobj->extravalue1) switch (mobj->extravalue1)
{ {
@ -7686,7 +7689,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
if (mobj->flags2 & MF2_AMBUSH) if (mobj->flags2 & MF2_AMBUSH)
{ {
mobj->colorized = true; mobj->colorized = true;
mobj->color = (1 + (leveltime % (MAXSKINCOLORS-1))); mobj->color = K_RainbowColor(leveltime);
mobj->frame |= FF_FULLBRIGHT; mobj->frame |= FF_FULLBRIGHT;
} }
else else
@ -8136,7 +8139,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
case MT_RANDOMITEM: case MT_RANDOMITEM:
if (gametype == GT_BATTLE && mobj->threshold == 70) if (gametype == GT_BATTLE && mobj->threshold == 70)
{ {
mobj->color = (UINT8)(1 + (leveltime % (MAXSKINCOLORS-1))); mobj->color = K_RainbowColor(leveltime);
mobj->colorized = true; mobj->colorized = true;
if (battleovertime.enabled) if (battleovertime.enabled)