diff --git a/src/k_hud.c b/src/k_hud.c index db4ae0793..42c7fd7c2 100644 --- a/src/k_hud.c +++ b/src/k_hud.c @@ -888,7 +888,7 @@ static void K_drawKartItem(void) INT32 itembar = 0; INT32 maxl = 0; // itembar's normal highest value const INT32 barlength = (r_splitscreen > 1 ? 12 : 26); - UINT8 localcolor = SKINCOLOR_NONE; + UINT16 localcolor = SKINCOLOR_NONE; SINT8 colormode = TC_RAINBOW; UINT8 *colmap = NULL; 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]) { case 2: - localcolor = (UINT8)(1 + (leveltime % (MAXSKINCOLORS-1))); + localcolor = K_RainbowColor(leveltime); break; case 1: localcolor = SKINCOLOR_RED; @@ -2811,7 +2811,7 @@ static void K_drawKartMinimap(void) const INT32 prevsplitflags = splitflags; splitflags &= ~V_HUDTRANSHALF; 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); splitflags = prevsplitflags; } diff --git a/src/p_mobj.c b/src/p_mobj.c index 47405f89f..43b758328 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -6436,7 +6436,10 @@ static boolean P_MobjRegularThink(mobj_t *mobj) else if (mobj->fuse <= 32) mobj->color = SKINCOLOR_SAPPHIRE; 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) { @@ -7686,7 +7689,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) if (mobj->flags2 & MF2_AMBUSH) { mobj->colorized = true; - mobj->color = (1 + (leveltime % (MAXSKINCOLORS-1))); + mobj->color = K_RainbowColor(leveltime); mobj->frame |= FF_FULLBRIGHT; } else @@ -8136,7 +8139,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) case MT_RANDOMITEM: if (gametype == GT_BATTLE && mobj->threshold == 70) { - mobj->color = (UINT8)(1 + (leveltime % (MAXSKINCOLORS-1))); + mobj->color = K_RainbowColor(leveltime); mobj->colorized = true; if (battleovertime.enabled)