From 647ab66c2fc6f14b55f0085e85a530a408ae67fe Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Sun, 3 Mar 2024 00:46:21 -0700 Subject: [PATCH 1/9] WIP: low-ring conveyance fixups --- src/d_player.h | 1 + src/k_kart.c | 29 +++++++++++++++++++++++++++++ src/lua_playerlib.c | 4 ++++ src/p_enemy.c | 10 ++++++++++ src/p_saveg.c | 2 ++ 5 files changed, 46 insertions(+) diff --git a/src/d_player.h b/src/d_player.h index 098ed8bd1..ab30fc934 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -987,6 +987,7 @@ struct player_t INT16 incontrol; // -1 to -175 when spinning out or tumbling, 1 to 175 when not. Use to check for combo hits or emergency inputs. UINT16 progressivethrust; // When getting beat up in GTR_BUMPERS, speed up the longer you've been out of control. + UINT8 ringvisualwarning; boolean analoginput; // Has an input been recorded that requires analog usage? For input display. diff --git a/src/k_kart.c b/src/k_kart.c index 5c07f26f9..b4c0a5011 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -8437,6 +8437,20 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) debtflag->color = player->skincolor; debtflag->fuse = 2; + + if (!(gametyperules & GTR_SPHERES)) + { + P_SetScale(debtflag, + Easing_InQuint( + min(FRACUNIT, FRACUNIT*player->ringvisualwarning/(TICRATE*3)), + debtflag->scale, + debtflag->scale*2 + ) + ); + if (player->ringvisualwarning <= 1) + debtflag->renderflags = K_GetPlayerDontDrawFlag(player); + } + } if (player->springstars && (leveltime & 1)) @@ -9013,6 +9027,21 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) player->incontrol++; } + if (player->rings <= 0) + { + if (player->ringvisualwarning > 1) + player->ringvisualwarning--; + } + else + { + player->ringvisualwarning = 0; + } + + if (player->ringvisualwarning == 0 && player->rings <= 0) + { + player->ringvisualwarning = 6*TICRATE/2; + } + player->incontrol = min(player->incontrol, 5*TICRATE); player->incontrol = max(player->incontrol, -5*TICRATE); diff --git a/src/lua_playerlib.c b/src/lua_playerlib.c index e2cbffd0a..b323b3ca8 100644 --- a/src/lua_playerlib.c +++ b/src/lua_playerlib.c @@ -263,6 +263,8 @@ static int player_get(lua_State *L) lua_pushboolean(L, plr->incontrol); else if (fastcmp(field,"progressivethrust")) lua_pushboolean(L, plr->progressivethrust); + else if (fastcmp(field,"ringvisualwarning")) + lua_pushboolean(L, plr->ringvisualwarning); else if (fastcmp(field,"dotrickfx")) lua_pushboolean(L, plr->dotrickfx); else if (fastcmp(field,"bumperinflate")) @@ -801,6 +803,8 @@ static int player_set(lua_State *L) plr->incontrol = luaL_checkinteger(L, 3); else if (fastcmp(field,"progressivethrust")) plr->progressivethrust = luaL_checkboolean(L, 3); + else if (fastcmp(field,"ringvisualwarning")) + plr->ringvisualwarning = luaL_checkboolean(L, 3); else if (fastcmp(field,"analoginput")) plr->markedfordeath = luaL_checkboolean(L, 3); else if (fastcmp(field,"markedfordeath")) diff --git a/src/p_enemy.c b/src/p_enemy.c index 645ff3013..640f17fac 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -3522,6 +3522,16 @@ void A_AttractChase(mobj_t *actor) S_ReducedVFXSoundAtVolume(actor->target, sfx_s1b5, actor->target->player->ringvolume, NULL); + if (actor->target->player->rings <= 10 && P_IsDisplayPlayer(actor->target->player)) + { + S_ReducedVFXSoundAtVolume(actor->target, sfx_gshab, + 255 - 10*actor->target->player->rings + , NULL); + + if (actor->target->player->rings == 0) + S_ReducedVFXSoundAtVolume(actor->target, sfx_gshad, 255, NULL); + } + actor->target->player->ringvolume -= RINGVOLUMEUSEPENALTY; sparkle = P_SpawnMobj(actor->target->x, actor->target->y, actor->target->z, MT_RINGSPARKS); diff --git a/src/p_saveg.c b/src/p_saveg.c index bc58064b7..c3bb62629 100644 --- a/src/p_saveg.c +++ b/src/p_saveg.c @@ -598,6 +598,7 @@ static void P_NetArchivePlayers(savebuffer_t *save) WRITEINT16(save->p, players[i].incontrol); WRITEUINT16(save->p, players[i].progressivethrust); + WRITEUINT8(save->p, players[i].ringvisualwarning); WRITEUINT8(save->p, players[i].analoginput); @@ -1184,6 +1185,7 @@ static void P_NetUnArchivePlayers(savebuffer_t *save) players[i].incontrol = READINT16(save->p); players[i].progressivethrust = READUINT16(save->p); + players[i].ringvisualwarning = READUINT8(save->p); players[i].analoginput = READUINT8(save->p); From eb4524fe1f3a42ced5b9dd1f25f0566749e72ee8 Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Sun, 3 Mar 2024 01:07:36 -0700 Subject: [PATCH 2/9] Reduce <10 ring warning sound volume --- src/p_enemy.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_enemy.c b/src/p_enemy.c index 640f17fac..b1dca873a 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -3525,7 +3525,7 @@ void A_AttractChase(mobj_t *actor) if (actor->target->player->rings <= 10 && P_IsDisplayPlayer(actor->target->player)) { S_ReducedVFXSoundAtVolume(actor->target, sfx_gshab, - 255 - 10*actor->target->player->rings + 255 - 20*actor->target->player->rings , NULL); if (actor->target->player->rings == 0) From 8a1a688f006b4a4b93d54626f66464236cb85e3b Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Sun, 3 Mar 2024 16:53:55 -0700 Subject: [PATCH 3/9] Nudge low-ring volume again again --- src/p_enemy.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/p_enemy.c b/src/p_enemy.c index b1dca873a..9052ef63d 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -3525,11 +3525,11 @@ void A_AttractChase(mobj_t *actor) if (actor->target->player->rings <= 10 && P_IsDisplayPlayer(actor->target->player)) { S_ReducedVFXSoundAtVolume(actor->target, sfx_gshab, - 255 - 20*actor->target->player->rings + 210 - 10*actor->target->player->rings , NULL); if (actor->target->player->rings == 0) - S_ReducedVFXSoundAtVolume(actor->target, sfx_gshad, 255, NULL); + S_ReducedVFXSoundAtVolume(actor->target, sfx_gshad, 127, NULL); } actor->target->player->ringvolume -= RINGVOLUMEUSEPENALTY; From 99e4975023ec26612eb88f489798a286093594f5 Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Tue, 5 Mar 2024 15:00:22 -0700 Subject: [PATCH 4/9] Sting clarity --- src/k_hud.cpp | 14 +++++++++++++- src/k_kart.c | 5 +++++ src/sounds.c | 3 +++ src/sounds.h | 3 +++ 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/k_hud.cpp b/src/k_hud.cpp index 87d1095ec..e2b1d6794 100644 --- a/src/k_hud.cpp +++ b/src/k_hud.cpp @@ -2957,7 +2957,19 @@ static void K_drawRingCounter(boolean gametypeinfoshown) rn[0] = ((abs(stplyr->hudrings) / 10) % 10); rn[1] = (abs(stplyr->hudrings) % 10); - if (stplyr->hudrings <= 0 && (leveltime/5 & 1)) // In debt + if (stplyr->hudrings <= 0 && stplyr->ringvisualwarning > 1) + { + colorring = true; + if ((leveltime/2 & 1)) + { + ringmap = R_GetTranslationColormap(TC_RAINBOW, SKINCOLOR_CRIMSON, GTC_CACHE); + } + else + { + ringmap = R_GetTranslationColormap(TC_RAINBOW, SKINCOLOR_WHITE, GTC_CACHE); + } + } + else if (stplyr->hudrings <= 0 && (leveltime/5 & 1)) // In debt { ringmap = R_GetTranslationColormap(TC_RAINBOW, SKINCOLOR_CRIMSON, GTC_CACHE); colorring = true; diff --git a/src/k_kart.c b/src/k_kart.c index 8f947d80d..df8fa9aeb 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -4819,6 +4819,11 @@ void K_DebtStingPlayer(player_t *player, mobj_t *source) player->spinouttimer = length; player->wipeoutslow = min(length-1, wipeoutslowtime+1); + player->ringvisualwarning = TICRATE*2; + + if (P_IsDisplayPlayer(player)) + S_StartSoundAtVolume(NULL, sfx_sting0, 170); + P_SetPlayerMobjState(player->mo, S_KART_SPINOUT); } diff --git a/src/sounds.c b/src/sounds.c index 14ccca9cb..527e6b2ad 100644 --- a/src/sounds.c +++ b/src/sounds.c @@ -1520,6 +1520,9 @@ sfxinfo_t S_sfx[NUMSFX] = {"tmxbdn", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, // Button down {"tmxbup", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, // Button up + // SMS + {"sting0", false, 64, 2, -1, NULL, 0, -1, -1, LUMPERROR, ""}, // Ring loss + // SRB2kart - Skin sounds {"kwin", false, 64, 96, -1, NULL, 0, SKSKWIN, -1, LUMPERROR, ""}, {"klose", false, 64, 96, -1, NULL, 0, SKSKLOSE, -1, LUMPERROR, ""}, diff --git a/src/sounds.h b/src/sounds.h index 532c844be..0aef7e7bc 100644 --- a/src/sounds.h +++ b/src/sounds.h @@ -1596,6 +1596,9 @@ typedef enum sfx_tmxbdn, sfx_tmxbup, + // SMS + sfx_sting0, + // And LASTLY, Kart's skin sounds. sfx_kwin, sfx_klose, From a280ccb7de7bc90c5099077a0faaa1d06c84fd16 Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Tue, 5 Mar 2024 16:00:00 -0700 Subject: [PATCH 5/9] Use old Ring Sting noise --- src/d_player.h | 1 + src/k_kart.c | 10 +++++++--- src/lua_playerlib.c | 4 ++++ src/p_saveg.c | 2 ++ src/sounds.c | 3 +++ src/sounds.h | 3 +++ 6 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/d_player.h b/src/d_player.h index ab30fc934..a915ab22e 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -993,6 +993,7 @@ struct player_t boolean markedfordeath; boolean dotrickfx; + boolean stingfx; UINT8 bumperinflate; UINT8 ringboxdelay; // Delay until Ring Box auto-activates diff --git a/src/k_kart.c b/src/k_kart.c index a9db55a03..38146d30b 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -4820,9 +4820,7 @@ void K_DebtStingPlayer(player_t *player, mobj_t *source) player->wipeoutslow = min(length-1, wipeoutslowtime+1); player->ringvisualwarning = TICRATE*2; - - if (P_IsDisplayPlayer(player)) - S_StartSoundAtVolume(NULL, sfx_sting0, 170); + player->stingfx = true; P_SetPlayerMobjState(player->mo, S_KART_SPINOUT); } @@ -8979,6 +8977,12 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) player->dotrickfx = false; } + if (player->stingfx && !player->mo->hitlag) + { + S_StartSound(player->mo, sfx_s226l); + player->stingfx = false; + } + // Don't screw up chain ring pickup/usage with instawhip charge. // If the button stays held, delay charge a bit. if (player->instaWhipChargeLockout) diff --git a/src/lua_playerlib.c b/src/lua_playerlib.c index b323b3ca8..81031d7b9 100644 --- a/src/lua_playerlib.c +++ b/src/lua_playerlib.c @@ -267,6 +267,8 @@ static int player_get(lua_State *L) lua_pushboolean(L, plr->ringvisualwarning); else if (fastcmp(field,"dotrickfx")) lua_pushboolean(L, plr->dotrickfx); + else if (fastcmp(field,"stingfx")) + lua_pushboolean(L, plr->stingfx); else if (fastcmp(field,"bumperinflate")) lua_pushboolean(L, plr->bumperinflate); else if (fastcmp(field,"ringboxdelay")) @@ -811,6 +813,8 @@ static int player_set(lua_State *L) plr->markedfordeath = luaL_checkboolean(L, 3); else if (fastcmp(field,"dotrickfx")) plr->dotrickfx = luaL_checkboolean(L, 3); + else if (fastcmp(field,"stingfx")) + plr->stingfx = luaL_checkboolean(L, 3); else if (fastcmp(field,"bumperinflate")) plr->bumperinflate = luaL_checkboolean(L, 3); else if (fastcmp(field,"ringboxdelay")) diff --git a/src/p_saveg.c b/src/p_saveg.c index dbbc95339..5c36f7a4d 100644 --- a/src/p_saveg.c +++ b/src/p_saveg.c @@ -604,6 +604,7 @@ static void P_NetArchivePlayers(savebuffer_t *save) WRITEUINT8(save->p, players[i].markedfordeath); WRITEUINT8(save->p, players[i].dotrickfx); + WRITEUINT8(save->p, players[i].stingfx); WRITEUINT8(save->p, players[i].bumperinflate); WRITEUINT8(save->p, players[i].ringboxdelay); @@ -1191,6 +1192,7 @@ static void P_NetUnArchivePlayers(savebuffer_t *save) players[i].markedfordeath = READUINT8(save->p); players[i].dotrickfx = READUINT8(save->p); + players[i].stingfx = READUINT8(save->p); players[i].bumperinflate = READUINT8(save->p); players[i].ringboxdelay = READUINT8(save->p); diff --git a/src/sounds.c b/src/sounds.c index 527e6b2ad..537b382dc 100644 --- a/src/sounds.c +++ b/src/sounds.c @@ -1523,6 +1523,9 @@ sfxinfo_t S_sfx[NUMSFX] = // SMS {"sting0", false, 64, 2, -1, NULL, 0, -1, -1, LUMPERROR, ""}, // Ring loss + // Patching up base sounds + {"s226l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, // s2 spikes LOUD + // SRB2kart - Skin sounds {"kwin", false, 64, 96, -1, NULL, 0, SKSKWIN, -1, LUMPERROR, ""}, {"klose", false, 64, 96, -1, NULL, 0, SKSKLOSE, -1, LUMPERROR, ""}, diff --git a/src/sounds.h b/src/sounds.h index 0aef7e7bc..e48b39f88 100644 --- a/src/sounds.h +++ b/src/sounds.h @@ -1599,6 +1599,9 @@ typedef enum // SMS sfx_sting0, + // Patch-up + sfx_s226l, + // And LASTLY, Kart's skin sounds. sfx_kwin, sfx_klose, From 136bb810e23133919fc2063d12da5de1da23767a Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Tue, 5 Mar 2024 16:15:41 -0700 Subject: [PATCH 6/9] Restore fucking thing --- src/k_kart.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/k_kart.c b/src/k_kart.c index 38146d30b..f3ffbd072 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -4822,6 +4822,9 @@ void K_DebtStingPlayer(player_t *player, mobj_t *source) player->ringvisualwarning = TICRATE*2; player->stingfx = true; + if (P_IsDisplayPlayer(player)) + S_StartSound(NULL, sfx_sting0); + P_SetPlayerMobjState(player->mo, S_KART_SPINOUT); } From b458e28a5251c94a0fc0779598eaa6eb4d303d3c Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Tue, 5 Mar 2024 16:42:22 -0700 Subject: [PATCH 7/9] Transparent Ring Debt indicator for local player, if it's sticking around --- src/d_player.h | 2 +- src/k_kart.c | 52 +++++++++++++++++++++++++++----------------------- 2 files changed, 29 insertions(+), 25 deletions(-) diff --git a/src/d_player.h b/src/d_player.h index a915ab22e..4630224dc 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -987,7 +987,7 @@ struct player_t INT16 incontrol; // -1 to -175 when spinning out or tumbling, 1 to 175 when not. Use to check for combo hits or emergency inputs. UINT16 progressivethrust; // When getting beat up in GTR_BUMPERS, speed up the longer you've been out of control. - UINT8 ringvisualwarning; + UINT8 ringvisualwarning; // Check with > 1, not >= 1! Set when put in debt, counts down and holds at 1 when still in debt. boolean analoginput; // Has an input been recorded that requires analog usage? For input display. diff --git a/src/k_kart.c b/src/k_kart.c index f3ffbd072..3d54d64b3 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -8429,32 +8429,36 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) // Battle: spawn zero-bumpers indicator if ((gametyperules & GTR_SPHERES) ? player->mo->health <= 1 : player->rings <= 0) { - mobj_t *debtflag = P_SpawnMobj(player->mo->x + player->mo->momx, player->mo->y + player->mo->momy, - player->mo->z + P_GetMobjZMovement(player->mo) + player->mo->height + (24*player->mo->scale), MT_THOK); + UINT8 doubler; - P_SetMobjState(debtflag, S_RINGDEBT); - P_SetScale(debtflag, (debtflag->destscale = player->mo->scale)); - - K_MatchGenericExtraFlags(debtflag, player->mo); - debtflag->frame += (leveltime % 4); - - if ((leveltime/12) & 1) - debtflag->frame += 4; - - debtflag->color = player->skincolor; - debtflag->fuse = 2; - - if (!(gametyperules & GTR_SPHERES)) + // GROSS. In order to have a transparent version of this for a splitscreen local player, we actually need to spawn two! + for (doubler = 0; doubler < 2; doubler++) { - P_SetScale(debtflag, - Easing_InQuint( - min(FRACUNIT, FRACUNIT*player->ringvisualwarning/(TICRATE*3)), - debtflag->scale, - debtflag->scale*2 - ) - ); - if (player->ringvisualwarning <= 1) - debtflag->renderflags = K_GetPlayerDontDrawFlag(player); + mobj_t *debtflag = P_SpawnMobj(player->mo->x + player->mo->momx, player->mo->y + player->mo->momy, + player->mo->z + P_GetMobjZMovement(player->mo) + player->mo->height + (24*player->mo->scale), MT_THOK); + + P_SetMobjState(debtflag, S_RINGDEBT); + P_SetScale(debtflag, (debtflag->destscale = player->mo->scale)); + + K_MatchGenericExtraFlags(debtflag, player->mo); + debtflag->frame += (leveltime % 4); + + if ((leveltime/12) & 1) + debtflag->frame += 4; + + debtflag->color = player->skincolor; + debtflag->fuse = 2; + + if (doubler == 0) // Real copy. Draw for everyone but us. + { + debtflag->renderflags |= K_GetPlayerDontDrawFlag(player); + } + else if (doubler == 1) // Fake copy. Draw for only us, and go transparent after a bit. + { + debtflag->renderflags |= (RF_DONTDRAW & ~K_GetPlayerDontDrawFlag(player)); + if (player->ringvisualwarning <= 1 || gametyperules & GTR_SPHERES) + debtflag->renderflags |= RF_TRANS50; + } } } From 1bfd8fe66d9723b4548344c7e76606449d0182a6 Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Tue, 5 Mar 2024 17:22:02 -0700 Subject: [PATCH 8/9] Use thintimer font for ring counter in 1P/2P --- src/k_hud.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/k_hud.cpp b/src/k_hud.cpp index e2b1d6794..7245cb4c5 100644 --- a/src/k_hud.cpp +++ b/src/k_hud.cpp @@ -3080,16 +3080,24 @@ static void K_drawRingCounter(boolean gametypeinfoshown) V_DrawMappedPatch(LAPS_X+ringx+7, fy-5, V_HUDTRANS|V_SLIDEIN|splitflags|ringflip, kp_ring[ringanim_realframe], (colorring ? ringmap : NULL)); + // "Why fy-4? Why LAPS_X+29+1?" + // "use magic numbers" - jartha 2024-03-05 if (stplyr->hudrings < 0) // Draw the minus for ring debt { - V_DrawMappedPatch(LAPS_X+23, fy, V_HUDTRANS|V_SLIDEIN|splitflags, kp_ringdebtminus, ringmap); - V_DrawMappedPatch(LAPS_X+29, fy, V_HUDTRANS|V_SLIDEIN|splitflags, kp_facenum[rn[0]], ringmap); - V_DrawMappedPatch(LAPS_X+35, fy, V_HUDTRANS|V_SLIDEIN|splitflags, kp_facenum[rn[1]], ringmap); + V_DrawMappedPatch(LAPS_X+23-1, fy, V_HUDTRANS|V_SLIDEIN|splitflags, kp_ringdebtminus, ringmap); + using srb2::Draw; + Draw row = Draw(LAPS_X+29+0, fy-4).flags(V_HUDTRANS|V_SLIDEIN|splitflags).font(Draw::Font::kThinTimer).colormap(ringmap); + row.text("{:02}", abs(stplyr->hudrings)); + // V_DrawMappedPatch(LAPS_X+29, fy, V_HUDTRANS|V_SLIDEIN|splitflags, fontv[TALLNUM_FONT].font[rn[0]], ringmap); + // V_DrawMappedPatch(LAPS_X+35, fy, V_HUDTRANS|V_SLIDEIN|splitflags, fontv[TALLNUM_FONT].font[rn[1]], ringmap); } else { - V_DrawMappedPatch(LAPS_X+23, fy, V_HUDTRANS|V_SLIDEIN|splitflags, kp_facenum[rn[0]], ringmap); - V_DrawMappedPatch(LAPS_X+29, fy, V_HUDTRANS|V_SLIDEIN|splitflags, kp_facenum[rn[1]], ringmap); + using srb2::Draw; + Draw row = Draw(LAPS_X+23+3, fy-4).flags(V_HUDTRANS|V_SLIDEIN|splitflags).font(Draw::Font::kThinTimer).colormap(ringmap); + row.text("{:02}", abs(stplyr->hudrings)); + // V_DrawMappedPatch(LAPS_X+23, fy, V_HUDTRANS|V_SLIDEIN|splitflags, fontv[TALLNUM_FONT].font[rn[0]], ringmap); + // V_DrawMappedPatch(LAPS_X+29, fy, V_HUDTRANS|V_SLIDEIN|splitflags, fontv[TALLNUM_FONT].font[rn[1]], ringmap); } // SPB ring lock From 0bb4fa5960086cc60173748b00d4c872e8d4ee9f Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Tue, 5 Mar 2024 17:46:47 -0700 Subject: [PATCH 9/9] Lower SMS sting sound, again --- src/k_kart.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/k_kart.c b/src/k_kart.c index 3d54d64b3..a68293cf4 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -4823,7 +4823,7 @@ void K_DebtStingPlayer(player_t *player, mobj_t *source) player->stingfx = true; if (P_IsDisplayPlayer(player)) - S_StartSound(NULL, sfx_sting0); + S_StartSoundAtVolume(NULL, sfx_sting0, 200); P_SetPlayerMobjState(player->mo, S_KART_SPINOUT); }