From 247b5662755fe361853a7dd39c27baf4c2cae4ea Mon Sep 17 00:00:00 2001 From: NepDisk Date: Sat, 22 Mar 2025 17:08:20 -0400 Subject: [PATCH] Toggle for singleplayer itembreaker --- src/d_netcmd.c | 20 ++++++++++++++++++++ src/d_netcmd.h | 1 + src/k_battle.c | 3 +++ src/k_kart.c | 1 + src/m_menu.c | 7 ++++--- 5 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index d08112fe6..798b7bcd7 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -150,6 +150,7 @@ static void KartEncore_OnChange(void); static void KartComeback_OnChange(void); static void KartEliminateLast_OnChange(void); static void KartRings_OnChange(void); +static void KartItemBreaker_OnChange(void); static void Schedule_OnChange(void); @@ -435,6 +436,8 @@ consvar_t cv_karteliminatelast = CVAR_INIT ("karteliminatelast", "Yes", CV_NETVA // Toggles for new features consvar_t cv_kartrings = CVAR_INIT ("kartrings", "No", CV_NETVAR|CV_CHEAT|CV_CALL|CV_NOINIT, CV_YesNo, KartRings_OnChange); +consvar_t cv_kartitembreaker = CVAR_INIT ("kartitembreaker", "No", CV_NETVAR|CV_CHEAT|CV_CALL|CV_NOINIT, CV_YesNo, KartItemBreaker_OnChange); + consvar_t cv_kartwalltransfer = CVAR_INIT ("BG_forcewalltransfer", "Off", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL); consvar_t cv_kartusepwrlv = CVAR_INIT ("kartusepwrlv", "Yes", CV_NETVAR|CV_CHEAT, CV_YesNo, NULL); @@ -6903,6 +6906,23 @@ static void KartRings_OnChange(void) } } +static void KartItemBreaker_OnChange(void) +{ + if (K_CanChangeRules() == false) + { + return; + } + + if (cv_kartitembreaker.value) + { + CONS_Printf(M_GetText("Singleplayer Item Breaker will be turned \"On\" Next Round.\n")); + } + else + { + CONS_Printf(M_GetText("Singleplayer Item Breaker will be turned \"Off\" Next Round.\n")); + } +} + static void Schedule_OnChange(void) { size_t i; diff --git a/src/d_netcmd.h b/src/d_netcmd.h index 285d4b19c..b9ca59fd7 100644 --- a/src/d_netcmd.h +++ b/src/d_netcmd.h @@ -96,6 +96,7 @@ extern consvar_t cv_kartbot; extern consvar_t cv_karteliminatelast; extern consvar_t cv_kartusepwrlv; extern consvar_t cv_kartrings; +extern consvar_t cv_kartitembreaker; extern consvar_t cv_kartwalltransfer; extern consvar_t cv_kartpurpledrift; extern consvar_t cv_kartbumpspark; diff --git a/src/k_battle.c b/src/k_battle.c index 482bf3b74..e164b08ba 100644 --- a/src/k_battle.c +++ b/src/k_battle.c @@ -491,6 +491,9 @@ void K_BattleInit(void) { UINT8 n = 0; + if (!cv_kartitembreaker.value) + goto afteritembreaker; + for (i = 0; i < MAXPLAYERS; i++) { if (!playeringame[i] || players[i].spectator) diff --git a/src/k_kart.c b/src/k_kart.c index 2275721c5..c63032e77 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -251,6 +251,7 @@ void K_RegisterKartStuff(void) CV_RegisterVar(&cv_lessflicker); CV_RegisterVar(&cv_kartrings); + CV_RegisterVar(&cv_kartitembreaker); CV_RegisterVar(&cv_newspeedometer); CV_RegisterVar(&cv_showinput); diff --git a/src/m_menu.c b/src/m_menu.c index b8a81a92d..db17339ca 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -1517,9 +1517,10 @@ static menuitem_t OP_GameOptionsMenu[] = static menuitem_t OP_BlanKartGameOptionsMenu[] = { {IT_STRING | IT_CVAR, NULL, "Rings", {.cvar = &cv_kartrings}, 10}, - {IT_STRING | IT_CVAR, NULL, "Purple Drift", {.cvar = &cv_kartpurpledrift}, 20}, - {IT_STRING | IT_CVAR, NULL, "Bump Spark", {.cvar = &cv_kartbumpspark}, 30}, - {IT_STRING | IT_CVAR, NULL, "Bump Spring", {.cvar = &cv_kartbumpspring}, 40}, + {IT_STRING | IT_CVAR, NULL, "Item Breaker", {.cvar = &cv_kartitembreaker}, 20}, + {IT_STRING | IT_CVAR, NULL, "Purple Drift", {.cvar = &cv_kartpurpledrift}, 30}, + {IT_STRING | IT_CVAR, NULL, "Bump Spark", {.cvar = &cv_kartbumpspark}, 40}, + {IT_STRING | IT_CVAR, NULL, "Bump Spring", {.cvar = &cv_kartbumpspring}, 50}, };