From 61577e5026afb74660e14e26fbecb387fff4f905 Mon Sep 17 00:00:00 2001 From: toaster Date: Tue, 1 Mar 2022 18:18:01 +0000 Subject: [PATCH] * Re-enable kickstartaccel in battle. * Add a little "ding" sound and HUD dorito bounce when your kickstartaccel reaches max, so you can let go of accelerate/know when you need to tap to stop. * Make the name on top of the boss healthbar only show up once the titlecard is over. * Properly reset boss healthbar fill between maploads. --- src/d_player.h | 2 +- src/k_hud.c | 38 +++++++++++++++++++++++++++----------- src/p_setup.c | 1 + src/p_user.c | 22 +++++++++++++++++++++- 4 files changed, 50 insertions(+), 13 deletions(-) diff --git a/src/d_player.h b/src/d_player.h index 5aba0dd0b..3e12611b4 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -261,7 +261,7 @@ typedef enum //} // for kickstartaccel -#define ACCEL_KICKSTART 35 +#define ACCEL_KICKSTART (TICRATE) #define ITEMSCALE_NORMAL 0 #define ITEMSCALE_GROW 1 diff --git a/src/k_hud.c b/src/k_hud.c index 324c6031a..b9b2060d6 100644 --- a/src/k_hud.c +++ b/src/k_hud.c @@ -1917,8 +1917,23 @@ static void K_drawBossHealthBar(void) starty += mag; } - if (bossinfo.enemyname) - V_DrawRightAlignedThinString(startx, starty-10, V_HUDTRANS|V_SLIDEIN|V_SNAPTOBOTTOM|V_SNAPTORIGHT|V_6WIDTHSPACE, bossinfo.enemyname); + if ((lt_ticker >= lt_endtime) && bossinfo.enemyname) + { + if (lt_exitticker == 0) + { + rolrand = 5; + } + else if (lt_exitticker == 1) + { + rolrand = 7; + } + else + { + rolrand = 10; + } + V_DrawRightAlignedThinString(startx, starty-rolrand, V_HUDTRANS|V_SLIDEIN|V_SNAPTOBOTTOM|V_SNAPTORIGHT|V_6WIDTHSPACE, bossinfo.enemyname); + rolrand = 0; + } // Used for colour and randomisation. if (bossinfo.healthbar <= (bossinfo.visualdiv/FRACUNIT)) @@ -2361,7 +2376,6 @@ static void K_drawKartLapsAndRings(void) static void K_drawKartAccessibilityIcons(INT32 fx) { INT32 fy = LAPS_Y-25; - UINT8 col = 0, i, wid, fil; INT32 splitflags = V_SNAPTOLEFT|V_SNAPTOBOTTOM|V_SPLITSCREEN; //INT32 step = 1; -- if there's ever more than one accessibility icon @@ -2383,19 +2397,21 @@ static void K_drawKartAccessibilityIcons(INT32 fx) } } - if ((stplyr->pflags & PF_KICKSTARTACCEL) && gametype != GT_BATTLE) // just KICKSTARTACCEL right now, maybe more later + if (stplyr->pflags & PF_KICKSTARTACCEL) // just KICKSTARTACCEL right now, maybe more later { - fil = 7-(stplyr->kickstartaccel*7)/ACCEL_KICKSTART; - i = 7; + SINT8 col = 0, wid, fil, ofs; + UINT8 i = 7; + ofs = (stplyr->kickstartaccel == ACCEL_KICKSTART) ? 1 : 0; + fil = i-(stplyr->kickstartaccel*i)/ACCEL_KICKSTART; - V_DrawFill(fx+4, fy-1, 2, 1, 31|V_SLIDEIN|splitflags); - V_DrawFill(fx, (fy-1)+8, 10, 1, 31|V_SLIDEIN|splitflags); + V_DrawFill(fx+4, fy+ofs-1, 2, 1, 31|V_SLIDEIN|splitflags); + V_DrawFill(fx, (fy+ofs-1)+8, 10, 1, 31|V_SLIDEIN|splitflags); while (i--) { wid = (i/2)+1; - V_DrawFill(fx+4-wid, fy+i, 2+(wid*2), 1, 31|V_SLIDEIN|splitflags); - if (fil) + V_DrawFill(fx+4-wid, fy+ofs+i, 2+(wid*2), 1, 31|V_SLIDEIN|splitflags); + if (fil > 0) { if (i < fil) col = 23; @@ -2408,7 +2424,7 @@ static void K_drawKartAccessibilityIcons(INT32 fx) col = 0; else col = 3; - V_DrawFill(fx+5-wid, fy+i, (wid*2), 1, col|V_SLIDEIN|splitflags); + V_DrawFill(fx+5-wid, fy+ofs+i, (wid*2), 1, col|V_SLIDEIN|splitflags); } //fx += step*12; diff --git a/src/p_setup.c b/src/p_setup.c index 390708e30..c4ca0ca53 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -4299,6 +4299,7 @@ boolean P_LoadLevel(boolean fromnetsave, boolean reloadinggamestate) { // Reset some pesky boss state that can't be handled elsewhere. bossinfo.barlen = BOSSHEALTHBARLEN; + bossinfo.visualbar = 0; if (bossinfo.enemyname) Z_Free(bossinfo.enemyname); if (bossinfo.subtitle) diff --git a/src/p_user.c b/src/p_user.c index 7fba7cfef..cf0f184b5 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -4325,17 +4325,37 @@ void P_PlayerThink(player_t *player) } // Accessibility - kickstart your acceleration - if (gametype == GT_BATTLE || !(player->pflags & PF_KICKSTARTACCEL)) + if (!(player->pflags & PF_KICKSTARTACCEL)) + { player->kickstartaccel = 0; + } else if (cmd->buttons & BT_ACCELERATE) { if (!player->exiting && !(player->pflags & PF_ACCELDOWN)) + { player->kickstartaccel = 0; + } else if (player->kickstartaccel < ACCEL_KICKSTART) + { player->kickstartaccel++; + if ((player->kickstartaccel == ACCEL_KICKSTART) && P_IsLocalPlayer(player)) + { + S_StartSound(NULL, sfx_ding); + } + } + else // for HUD + { + player->kickstartaccel = ACCEL_KICKSTART+1; + } } else if (player->kickstartaccel < ACCEL_KICKSTART) + { player->kickstartaccel = 0; + } + else // for HUD + { + player->kickstartaccel = ACCEL_KICKSTART+1; + } #ifdef PARANOIA if (player->playerstate == PST_REBORN)