From dea698a2767e272443d45af411be113bf9342bd9 Mon Sep 17 00:00:00 2001 From: toaster Date: Tue, 2 Apr 2024 23:26:57 +0100 Subject: [PATCH 1/3] Tasteless Taunts Uninhibited voices/horns (see the "meme" setting in v1). Removes the SECRET_MEMETAUNTS unlock, which didn't fit the general level of cohesion main game content should have. --- src/command.c | 7 ------- src/command.h | 1 - src/cvars.cpp | 6 +++--- src/d_netcmd.h | 1 + src/deh_soc.c | 2 -- src/k_follower.c | 11 ++++++++--- src/k_kart.c | 22 +++++++++++++--------- src/k_menudraw.c | 4 ---- src/m_cond.h | 1 - src/m_pw.cpp | 14 ++++++++++++++ 10 files changed, 39 insertions(+), 30 deletions(-) diff --git a/src/command.c b/src/command.c index cee6057b9..5ce45d263 100644 --- a/src/command.c +++ b/src/command.c @@ -103,8 +103,6 @@ CV_PossibleValue_t gpdifficulty_cons_t[] = { {0, NULL} }; -CV_PossibleValue_t kartvoices_cons_t[] = {{0, "Never"}, {1, "Tasteful"}, {2, "Meme"}, {0, NULL}}; - // Filter consvars by EXECVERSION // First implementation is 2 (1.0.2), so earlier configs default at 1 (1.0.0) // Also set CV_HIDDEN during runtime, after config is loaded @@ -2315,11 +2313,6 @@ void CV_AddValue(consvar_t *var, INT32 increment) max = KARTSPEED_HARD+1; } } - else if (var->PossibleValue == kartvoices_cons_t - && !M_SecretUnlocked(SECRET_MEMETAUNTS, true)) - { - max--; - } #ifdef PARANOIA if (currentindice == -1) I_Error("CV_AddValue: current value %d not found in possible value\n", diff --git a/src/command.h b/src/command.h index 5a4cb6b5f..eabbc1b1b 100644 --- a/src/command.h +++ b/src/command.h @@ -234,7 +234,6 @@ extern CV_PossibleValue_t CV_TrueFalse[]; // SRB2kart // the KARTSPEED and KARTGP were previously defined here, but moved to doomstat to avoid circular dependencies extern CV_PossibleValue_t kartspeed_cons_t[], dummykartspeed_cons_t[], gpdifficulty_cons_t[]; -extern CV_PossibleValue_t kartvoices_cons_t[]; extern consvar_t cv_cheats; extern consvar_t cv_execversion; diff --git a/src/cvars.cpp b/src/cvars.cpp index f55dcd02b..5544868dc 100644 --- a/src/cvars.cpp +++ b/src/cvars.cpp @@ -515,9 +515,8 @@ consvar_t cv_httpsource = Server("http_source", ""); void JoinTimeout_OnChange(void); consvar_t cv_jointimeout = Server("jointimeout", "210").min_max(TICRATE/7, 60*TICRATE).onchange(JoinTimeout_OnChange); -extern CV_PossibleValue_t kartvoices_cons_t[]; -consvar_t cv_karthorns = Server("taunthorns", "Tasteful").values(kartvoices_cons_t); -consvar_t cv_kartvoices = Server("tauntvoices", "Tasteful").values(kartvoices_cons_t); +consvar_t cv_karthorns = Server("taunthorns", "On").on_off(); +consvar_t cv_kartvoices = Server("tauntvoices", "On").on_off(); consvar_t cv_kartspeedometer = Server("speedometer", "Percentage").values({{0, "Off"}, {1, "Percentage"}, {2, "Kilometers"}, {3, "Miles"}, {4, "Fracunits"}}); // use tics in display consvar_t cv_kicktime = Server("kicktime", "20").values(CV_Unsigned); @@ -918,6 +917,7 @@ consvar_t cv_renderhitbox = PlayerCheat("renderhitbox", "Off").values(renderhitb consvar_t cv_bighead = Player("bighead", "Off").dont_save().values(CV_OnOff).flags(CV_NOSHOWHELP).description("Works out at the library"); consvar_t cv_shittysigns = Player("shittysigns", "Off").dont_save().values(CV_OnOff).flags(CV_NOSHOWHELP).description("It's better because it's worse"); +consvar_t cv_tastelesstaunts = Player("tastelesstaunts", "Off").dont_save().values(CV_OnOff).flags(CV_NOSHOWHELP).description("Universally hated in dev"); // // Dummy variables used solely in the menu system. diff --git a/src/d_netcmd.h b/src/d_netcmd.h index b567972c7..4113d791c 100644 --- a/src/d_netcmd.h +++ b/src/d_netcmd.h @@ -101,6 +101,7 @@ extern consvar_t cv_battletest; extern consvar_t cv_bighead; extern consvar_t cv_shittysigns; +extern consvar_t cv_tastelesstaunts; extern consvar_t cv_4thgear; typedef enum { diff --git a/src/deh_soc.c b/src/deh_soc.c index f569cf471..3948d3a27 100644 --- a/src/deh_soc.c +++ b/src/deh_soc.c @@ -2451,8 +2451,6 @@ static INT16 parseunlockabletype(char *type) return SECRET_SOUNDTEST; else if (fastcmp(type, "ALTTITLE")) return SECRET_ALTTITLE; - else if (fastcmp(type, "MEMETAUNTS")) - return SECRET_MEMETAUNTS; else if (fastcmp(type, "ITEMFINDER")) return SECRET_ITEMFINDER; diff --git a/src/k_follower.c b/src/k_follower.c index 7545cb8e8..1617c8d45 100644 --- a/src/k_follower.c +++ b/src/k_follower.c @@ -757,8 +757,13 @@ void K_FollowerHornTaunt(player_t *taunter, player_t *victim, boolean mysticmelo // More expensive checks if ( - (cv_karthorns.value == 0 && mysticmelodyspecial == false) - || (P_IsDisplayPlayer(victim) == false && cv_karthorns.value != 2) + ( + cv_tastelesstaunts.value == 0 + && ( + (cv_karthorns.value == 0 && mysticmelodyspecial == false) + || P_IsDisplayPlayer(victim) == false + ) + ) || P_MobjWasRemoved(taunter->mo) == true || P_MobjWasRemoved(taunter->follower) == true ) @@ -768,7 +773,7 @@ void K_FollowerHornTaunt(player_t *taunter, player_t *victim, boolean mysticmelo const boolean tasteful = (taunter->karthud[khud_taunthorns] == 0); - if (tasteful || cv_karthorns.value == 2) + if (tasteful || cv_tastelesstaunts.value) { mobj_t *honk = taunter->follower->hprev; const fixed_t desiredscale = (2*taunter->mo->scale)/3; diff --git a/src/k_kart.c b/src/k_kart.c index 70cf1db2c..ac273d109 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -2720,8 +2720,10 @@ static void K_PlayGenericTastefulTaunt(mobj_t *source, sfxenum_t sfx_id) boolean tasteful = (!source->player || !source->player->karthud[khud_tauntvoices]); if ( - cv_kartvoices.value - && (tasteful || cv_kartvoices.value == 2) + ( + (cv_kartvoices.value && tasteful) + || cv_tastelesstaunts.value + ) && R_CanShowSkinInDemo(skinid) ) { @@ -2757,8 +2759,10 @@ void K_PlayOvertakeSound(mobj_t *source) boolean tasteful = (!source->player || !source->player->karthud[khud_voices]); if ( - cv_kartvoices.value - && (tasteful || cv_kartvoices.value == 2) + ( + (cv_kartvoices.value && tasteful) + || cv_tastelesstaunts.value + ) && R_CanShowSkinInDemo(skinid) ) { @@ -2785,7 +2789,7 @@ static void K_PlayGenericCombatSound(mobj_t *source, mobj_t *other, sfxenum_t sf } if ( - cv_kartvoices.value + (cv_kartvoices.value || cv_tastelesstaunts.value) && R_CanShowSkinInDemo(skinid) ) { @@ -2847,7 +2851,7 @@ void K_PlayPowerGloatSound(mobj_t *source) return; if ( - cv_kartvoices.value + (cv_kartvoices.value || cv_tastelesstaunts.value) && R_CanShowSkinInDemo(skinid) ) { @@ -2865,7 +2869,7 @@ void P_PlayVictorySound(mobj_t *source) return; if ( - cv_kartvoices.value + (cv_kartvoices.value || cv_tastelesstaunts.value) && R_CanShowSkinInDemo(skinid) ) { @@ -12122,15 +12126,15 @@ void K_MoveKartPlayer(player_t *player, boolean onground) { if (player->oldposition < player->position) // But first, if you lost a place, { - player->oldposition = player->position; // then the other player taunts. + // then the other player taunts. K_RegularVoiceTimers(player); // and you can't for a bit } else // Otherwise, { K_PlayOvertakeSound(player->mo); // Say "YOU'RE TOO SLOW!" - player->oldposition = player->position; // Restore the old position, } } + player->oldposition = player->position; // Prevent ring misfire if (!(cmd->buttons & BT_ATTACK)) diff --git a/src/k_menudraw.c b/src/k_menudraw.c index f7fb4f1fe..3106d8e14 100644 --- a/src/k_menudraw.c +++ b/src/k_menudraw.c @@ -6612,7 +6612,6 @@ static void M_DrawChallengeTile(INT16 i, INT16 j, INT32 x, INT32 y, UINT8 *flash case SECRET_EGGTV: case SECRET_SOUNDTEST: case SECRET_ALTTITLE: - case SECRET_MEMETAUNTS: categoryid = '6'; break; case SECRET_TIMEATTACK: @@ -6709,9 +6708,6 @@ static void M_DrawChallengeTile(INT16 i, INT16 j, INT32 x, INT32 y, UINT8 *flash case SECRET_ALTTITLE: iconid = 6; break; - case SECRET_MEMETAUNTS: - iconid = 13; - break; case SECRET_TIMEATTACK: iconid = 7; diff --git a/src/m_cond.h b/src/m_cond.h index 99b812712..f71bacfa1 100644 --- a/src/m_cond.h +++ b/src/m_cond.h @@ -261,7 +261,6 @@ typedef enum SECRET_EGGTV, // Permit replay playback menu SECRET_SOUNDTEST, // Permit Sound Test SECRET_ALTTITLE, // Permit alternate titlescreen - SECRET_MEMETAUNTS, // Permit "Meme" for kartvoices_cons_t // Assist restrictions SECRET_ITEMFINDER, // Permit locating in-level secrets diff --git a/src/m_pw.cpp b/src/m_pw.cpp index c0b7e6aef..2327a1d2c 100644 --- a/src/m_pw.cpp +++ b/src/m_pw.cpp @@ -202,6 +202,19 @@ void f_shittysigns() } } +void f_tastelesstaunts() +{ + CV_SetValue(&cv_tastelesstaunts, !cv_tastelesstaunts.value); + if (cv_tastelesstaunts.value) + { + S_StartSound(NULL, sfx_kslow); + } + else + { + S_StartSound(NULL, sfx_kc46); + } +} + void f_4thgear() { CV_SetValue(&cv_4thgear, !cv_4thgear.value); @@ -395,6 +408,7 @@ void M_PasswordInit(void) passwords.emplace_back(f_bighead, "V+YkwthNUePKS7zs5uB90VwN6Jeqgl+1r663U5zSGOEIxAO6BoWipzZoxa5H//LM+5Ag9GIGRnEcLbU21hjGfQ=="); passwords.emplace_back(f_4thgear, "zRMhR+s27VTYE0jgFf2l+PX51N3qJPvZ3oWuM/71oUaKY5zyQ2y7WIrIb464MFWn4IsK2P5rShsR9MotC/9ojQ=="); passwords.emplace_back(f_shittysigns, "fdqz0cQdVKfS4zgN4usUz75+5AhYdDPsrl61H7sIEKHoaEUHPOfcful0jEkVvrV/rpELE0/3srRpxmJYpQofmA=="); + passwords.emplace_back(f_tastelesstaunts, "4QfCuCG0/7z5U5A1hxqlqx83uQTGmQ1aaWPBQ8pqQvw9KRGvxxiDq9UF0N24fDlu0+XYksgkPHJg4A5h5aEQiw=="); #ifdef DEVELOP passwords.emplace_back(f_devmode, "qXe5jAii7ntJ0VwmaZj9ujDKU69KLUfdGV3Rn2G7xMxOxKo37QpYZvo1E/PIul56ca+nDT6IggGfRqhA8gf6Gw=="); passwords.emplace_back(f_gaster, "GZPKJsa++Tt134yS3eBKdP+8vdAHB1thwK2ys6VDfFxcIRtABtM9j4qt8WULFrI+KxCSYMZ6K0mwt5BVzcvvuw=="); From 44951e2f8681707fc66fd4276c9e2fc6b8948e2c Mon Sep 17 00:00:00 2001 From: toaster Date: Wed, 3 Apr 2024 01:19:23 +0100 Subject: [PATCH 2/3] Adjust the menu descriptions for Character Voices and Follower Horns --- src/menus/options-sound.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/menus/options-sound.cpp b/src/menus/options-sound.cpp index b5a5a8014..5bb1d6843 100644 --- a/src/menus/options-sound.cpp +++ b/src/menus/options-sound.cpp @@ -279,10 +279,10 @@ menuitem_t OPTIONS_Sound[] = {IT_STRING | IT_CVAR, "Chat Notifications", "Play a sound effect when chat messages appear.", NULL, {.cvar = &cv_chatnotifications}, 0, 0}, - {IT_STRING | IT_CVAR, "Character Voices", "How often to play character voices in a round.", + {IT_STRING | IT_CVAR, "Character Voices", "Characters speak when interacting on the course.", NULL, {.cvar = &cv_kartvoices}, 0, 0}, - {IT_STRING | IT_CVAR, "Follower Horns", "How often to play follower horns in a round.", + {IT_STRING | IT_CVAR, "Follower Horns", "Followers taunt your opponents when looking back at them.", NULL, {.cvar = &cv_karthorns}, 0, 0}, {IT_STRING | IT_CVAR, "Continuous Attack Music", "Keep music playing seamlessly when retrying in Attack modes.", From fa77631c25e60f3d48b4671161a6f23381d2caf0 Mon Sep 17 00:00:00 2001 From: toaster Date: Wed, 3 Apr 2024 01:30:40 +0100 Subject: [PATCH 3/3] Alternate tooltip for Follower Horn option under tasteless conditions --- src/menus/options-sound.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/menus/options-sound.cpp b/src/menus/options-sound.cpp index 5bb1d6843..138d6e0a6 100644 --- a/src/menus/options-sound.cpp +++ b/src/menus/options-sound.cpp @@ -233,6 +233,10 @@ void init_routine(void) if (allow) OPTIONS_Sound[sopt_followhorns].status = IT_STRING | IT_CVAR; + OPTIONS_Sound[sopt_followhorns].tooltip = cv_tastelesstaunts.value + ? "Press B to announce that you are pressing B." + : "Followers taunt your opponents when looking back at them."; + if (M_SecretUnlocked(SECRET_TIMEATTACK, true) || M_SecretUnlocked(SECRET_PRISONBREAK, true) || M_SecretUnlocked(SECRET_SPECIALATTACK, true)) @@ -282,7 +286,7 @@ menuitem_t OPTIONS_Sound[] = {IT_STRING | IT_CVAR, "Character Voices", "Characters speak when interacting on the course.", NULL, {.cvar = &cv_kartvoices}, 0, 0}, - {IT_STRING | IT_CVAR, "Follower Horns", "Followers taunt your opponents when looking back at them.", + {IT_STRING | IT_CVAR, "Follower Horns", NULL, // set in init_routine NULL, {.cvar = &cv_karthorns}, 0, 0}, {IT_STRING | IT_CVAR, "Continuous Attack Music", "Keep music playing seamlessly when retrying in Attack modes.",