diff --git a/src/k_hud.cpp b/src/k_hud.cpp index 2fbfcd0c3afc281ef6c754345d6f05738f373787..6f74c996bc74173c5d2247bbd548935de28427d3 100644 --- a/src/k_hud.cpp +++ b/src/k_hud.cpp @@ -1395,6 +1395,9 @@ static void K_drawKartItem(void) vector2_t rouletteCrop = {7, 7}; INT32 i; + boolean flashOnOne = false; + boolean flashOnTwo = false; + if (stplyr->itemRoulette.itemListLen > 0) { // Init with item roulette stuff. @@ -1446,10 +1449,8 @@ static void K_drawKartItem(void) if (stplyr->stealingtimer < 0) { - if (leveltime & 2) - localpatch[1] = kp_hyudoro[offset]; - else - localpatch[1] = kp_nodraw; + localpatch[1] = kp_hyudoro[offset]; + flashOnTwo = true; } else if ((stplyr->stealingtimer > 0) && (leveltime & 2)) { @@ -1457,10 +1458,8 @@ static void K_drawKartItem(void) } else if (stplyr->eggmanexplode > 1) { - if (leveltime & 1) - localpatch[1] = kp_eggman[offset]; - else - localpatch[1] = kp_nodraw; + localpatch[1] = kp_eggman[offset]; + flashOnOne = true; } else if (stplyr->ballhogcharge > 0) { @@ -1470,27 +1469,21 @@ static void K_drawKartItem(void) itembar = stplyr->ballhogcharge % BALLHOGINCREMENT; maxl = BALLHOGINCREMENT; - if (leveltime & 1) - localpatch[1] = kp_ballhog[offset]; - else - localpatch[1] = kp_nodraw; + localpatch[1] = kp_ballhog[offset]; + flashOnOne = true; } else if (stplyr->rocketsneakertimer > 1) { itembar = stplyr->rocketsneakertimer; maxl = (itemtime*3) - barlength; - if (leveltime & 1) - localpatch[1] = kp_rocketsneaker[offset]; - else - localpatch[1] = kp_nodraw; + localpatch[1] = kp_rocketsneaker[offset]; + flashOnOne = true; } else if (stplyr->sadtimer > 0) { - if (leveltime & 2) - localpatch[1] = kp_sadface[offset]; - else - localpatch[1] = kp_nodraw; + localpatch[1] = kp_sadface[offset]; + flashOnTwo = true; } else if (stplyr->itemRoulette.reserved > 0) { @@ -1527,11 +1520,19 @@ static void K_drawKartItem(void) break; } - if ((stplyr->itemflags & IF_ITEMOUT) && !(leveltime & 1)) + if ((stplyr->itemflags & IF_ITEMOUT)) + flashOnOne = true; + } + + if (!cv_reducevfx.value) + { + if (flashOnOne && !(leveltime & 1)) + localpatch[1] = kp_nodraw; + else if (flashOnTwo && !(leveltime & 2)) localpatch[1] = kp_nodraw; } - if (stplyr->karthud[khud_itemblink] && (leveltime & 1)) + if (stplyr->karthud[khud_itemblink] && (leveltime & 1) && !(cv_reducevfx.value)) { colormode[1] = TC_BLINK; @@ -1639,6 +1640,13 @@ static void K_drawKartItem(void) // A little goofy, but helps with ballhog charge conveyance—you're "loading" them. UINT8 fakeitemamount = stplyr->itemamount - (stplyr->ballhogcharge / BALLHOGINCREMENT); + boolean transflag = V_HUDTRANS; + + if (cv_reducevfx.value && (flashOnOne || flashOnTwo)) + { + transflag = V_HUDTRANSHALF; + } + if (fakeitemamount >= numberdisplaymin && stplyr->itemRoulette.active == false) { // Then, the numbers: @@ -1650,7 +1658,7 @@ static void K_drawKartItem(void) V_DrawFixedPatch( fx<<FRACBITS, (fy<<FRACBITS) + rouletteOffset, - FRACUNIT, V_HUDTRANS|V_SLIDEIN|fflags, + FRACUNIT, transflag|V_SLIDEIN|fflags, localpatch[1], (localcolor[1] ? R_GetTranslationColormap(colormode[1], localcolor[1], GTC_CACHE) : NULL) ); @@ -1671,7 +1679,7 @@ static void K_drawKartItem(void) { V_DrawFixedPatch( fx<<FRACBITS, (fy<<FRACBITS) + rouletteOffset, - FRACUNIT, V_HUDTRANS|V_SLIDEIN|fflags, + FRACUNIT, transflag|V_SLIDEIN|fflags, localpatch[1], (localcolor[1] ? R_GetTranslationColormap(colormode[1], localcolor[1], GTC_CACHE) : NULL) ); } @@ -1808,7 +1816,7 @@ static void K_drawKartSlotMachine(void) } } - if (stplyr->karthud[khud_itemblink] && (leveltime & 1)) + if (stplyr->karthud[khud_itemblink] && (leveltime & 1) && !cv_reducevfx.value) { colormode[1] = TC_BLINK; localcolor[1] = SKINCOLOR_WHITE;