From 2419e2532756890bbd36835cc589978aa8e4be0c Mon Sep 17 00:00:00 2001 From: yamamama Date: Thu, 11 Dec 2025 11:24:43 -0500 Subject: [PATCH] Add the ability to play Invincibility's theme in full On-a-whim idea, admittedly --- src/d_netcmd.c | 4 ++++ src/d_netcmd.h | 1 + src/k_kart.c | 12 +++++++++++- src/k_kart.h | 12 ++++++++---- src/p_user.c | 2 +- 5 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 058054176..f924bd27f 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -609,6 +609,10 @@ consvar_t cv_kartspbrush = CVAR_INIT ("kartspbrush", "On", CV_NETVAR, CV_OnOff, static CV_PossibleValue_t altshrinktime_cons_t[] = {{0, "MIN"}, {(INT16_MAX / TICRATE), "MAX"}, {0, NULL}}; consvar_t cv_kartaltshrinktime = CVAR_INIT ("kartaltshrinktime", "14", CV_NETVAR|CV_CHEAT|CV_GUARD, altshrinktime_cons_t, NULL); +// Toggle Full or Standard Invincibility music +static CV_PossibleValue_t kartinvintheme_cons_t[] = {{0, "Standard"}, {1, "Full"}, {0, NULL}}; +consvar_t cv_kartinvintheme = CVAR_INIT ("kartinvintheme", "Standard", CV_SAVE, kartinvintheme_cons_t, NULL); + // How far the player must be from the cluster to begin frequently rolling Invincibility. static CV_PossibleValue_t invindist_cons_t[] = {{1, "MIN"}, {32000, "MAX"}, {0, NULL}}; consvar_t cv_kartinvindist = CVAR_INIT ("kartinvindist", "8400", CV_NETVAR|CV_CHEAT|CV_GUARD, invindist_cons_t, NULL); diff --git a/src/d_netcmd.h b/src/d_netcmd.h index 50001f1dd..ec39c83ce 100644 --- a/src/d_netcmd.h +++ b/src/d_netcmd.h @@ -182,6 +182,7 @@ extern consvar_t cv_kartexplosion_limitlifetime; extern consvar_t cv_kartexplosion_limitlifetime_cap; extern consvar_t cv_kartslipdash; extern consvar_t cv_kartslopeboost; +extern consvar_t cv_kartinvintheme; extern consvar_t cv_kartinvindist; extern consvar_t cv_kartinvindistmul; extern consvar_t cv_kartinvin_maxtime; diff --git a/src/k_kart.c b/src/k_kart.c index f23287ece..356e3eb04 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -394,6 +394,8 @@ void K_RegisterKartStuff(void) CV_RegisterVar(&cv_kartaltshrinktime); + CV_RegisterVar(&cv_kartinvintheme); + CV_RegisterVar(&cv_kartinvindist); CV_RegisterVar(&cv_kartinvindistmul); @@ -4906,6 +4908,14 @@ void K_ResetPogoSpring(player_t *player) player->dashRainbowPogo = 0; } +// This likely won't find use until Mission Mode, but alas +boolean forcefullinvintheme = false; + +boolean K_PlayFullInvinTheme(void) +{ + return ((cv_kartinvintheme.value == 1) || (forcefullinvintheme == true)); +} + void K_DoInvincibility(player_t *player, tic_t time) { const boolean isalt = K_IsKartItemAlternate(KITEM_INVINCIBILITY); @@ -4952,7 +4962,7 @@ void K_DoInvincibility(player_t *player, tic_t time) if (P_IsLocalPlayer(player) == true) { - S_ChangeMusicSpecial("kinvnc"); + S_ChangeMusicSpecial(K_PlayFullInvinTheme() ? "kinvnf" : "kinvnc"); } else //used to be "if (P_IsDisplayPlayer(player) == false)" { diff --git a/src/k_kart.h b/src/k_kart.h index 614454847..c085c5429 100644 --- a/src/k_kart.h +++ b/src/k_kart.h @@ -259,15 +259,19 @@ typedef enum void K_DoSneaker(player_t *player, INT32 type); void K_DoPogoSpring(mobj_t *mo, fixed_t vertispeed, UINT8 sound); -fixed_t K_InvincibilityGradient(UINT16 time); -UINT16 K_GetInvincibilityTime(player_t *player); -fixed_t K_GetInvincibilitySpeed(UINT16 time); -fixed_t K_GetInvincibilityAccel(UINT16 time); fixed_t K_GetSpeedPercentage(const player_t *player); boolean K_AltShrinkArrowBulletCondition(const player_t *player); boolean K_InterceptArrowBullet(player_t *player); void K_ResetPogoSpring(player_t *player); + +extern boolean forcefullinvintheme; +boolean K_PlayFullInvinTheme(void); void K_DoInvincibility(player_t *player, tic_t time); +fixed_t K_InvincibilityGradient(UINT16 time); +UINT16 K_GetInvincibilityTime(player_t *player); +fixed_t K_GetInvincibilitySpeed(UINT16 time); +fixed_t K_GetInvincibilityAccel(UINT16 time); + void K_KillBananaChain(mobj_t *banana, mobj_t *inflictor, mobj_t *source); void K_UpdateHnextList(player_t *player, boolean clean); void K_DropHnextList(player_t *player); diff --git a/src/p_user.c b/src/p_user.c index 822ae819e..62d7010a8 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -869,7 +869,7 @@ void P_RestoreMusic(player_t *player) // Item - Invincibility else if ((wantedmus == 2) && cv_supermusic.value == 1) { - S_ChangeMusicInternal("kinvnc", true); + S_ChangeMusicInternal(K_PlayFullInvinTheme() ? "kinvnf" : "kinvnc", true); S_SetRestoreMusicFadeInCvar(&cv_invincmusicfade); } // Item - Shrink (Alternative)