From 5a7626d88ecdc0610f6141d12ba86f05ee800924 Mon Sep 17 00:00:00 2001 From: alufolie91 Date: Fri, 25 Aug 2023 19:19:04 +0200 Subject: [PATCH 1/6] add toggable sound effect when player squishes after landing "slamsound" toggles it --- src/d_netcmd.c | 2 ++ src/g_game.c | 4 ++++ src/g_game.h | 1 + src/k_kart.c | 8 +++++++- src/p_mobj.c | 2 ++ src/p_mobj.h | 2 ++ 6 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 84bfc364c..ed28202db 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -700,6 +700,8 @@ void D_RegisterServerCommands(void) CV_RegisterVar(&cv_powerstones); CV_RegisterVar(&cv_competitionboxes); CV_RegisterVar(&cv_matchboxes); + + CV_RegisterVar(&cv_slamsound); /*CV_RegisterVar(&cv_recycler); CV_RegisterVar(&cv_teleporters); diff --git a/src/g_game.c b/src/g_game.c index 93c502d06..d5f6998d5 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -545,8 +545,12 @@ static CV_PossibleValue_t stretchfactor_t[] = {{0, "MIN"}, {FRACUNIT, "MAX"}, {0 consvar_t cv_gravstretch = {"gravstretch", "0", CV_FLOAT | CV_SAVE, stretchfactor_t, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_sloperoll = {"sloperoll", "Off", CV_SAVE|CV_CALL, CV_OnOff, PDistort_menu_Onchange, 0, NULL, NULL, 0, 0, NULL}; + consvar_t cv_sliptideroll = {"sliptideroll", "Off", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; +static CV_PossibleValue_t slamsound_t[] = {{0, "Off"}, {1, "On"}, {0, NULL}}; +consvar_t cv_slamsound = {"slamsound", "1", CV_SAVE, slamsound_t, NULL, 0, NULL, NULL, 0, 0, NULL}; + static CV_PossibleValue_t sloperolldist_cons_t[] = { /*{256, "256"},*/ {512, "512"}, {768, "768"}, {1024, "1024"}, {1536, "1536"}, {2048, "2048"}, diff --git a/src/g_game.h b/src/g_game.h index c99404a35..48743ecbf 100644 --- a/src/g_game.h +++ b/src/g_game.h @@ -150,6 +150,7 @@ extern consvar_t cv_driftsparkpulse; extern consvar_t cv_gravstretch; extern consvar_t cv_sloperoll; extern consvar_t cv_sliptideroll; +extern consvar_t cv_slamsound; extern consvar_t cv_sloperolldist; extern consvar_t cv_invincmusicfade; diff --git a/src/k_kart.c b/src/k_kart.c index 1f62f7c72..7de4cfaae 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -3000,6 +3000,9 @@ static void K_StretchPlayerGravity(player_t *p) I_Assert(p != NULL); I_Assert(p->mo != NULL); I_Assert(!P_MobjWasRemoved(p->mo)); + + if (!p->mo->stretchonground && P_IsObjectOnGround(p->mo) && (cv_slamsound.value == 1)) + S_StartSound(p->mo, sfx_s3k4c); if (!P_IsObjectOnGround(p->mo)) { @@ -3019,6 +3022,7 @@ static void K_StretchPlayerGravity(player_t *p) { p->mo->spritexscale = (dxs); p->mo->spriteyscale = (dys); + p->mo->stretchonground = false; } } else @@ -3033,8 +3037,10 @@ static void K_StretchPlayerGravity(player_t *p) p->mo->stretchslam -= (4*mos); else p->mo->stretchslam = 0; - + p->mo->stretchonground = true; } + + } static INT32 K_FindPlayerNum(player_t *plyr) diff --git a/src/p_mobj.c b/src/p_mobj.c index f29a63f43..bd561c034 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -9563,6 +9563,8 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type) mobj->spritexscale = mobj->realxscale; mobj->spriteyscale = mobj->realyscale; mobj->spritexoffset = mobj->spriteyoffset = 0; + + mobj->stretchonground = true; // set subsector and/or block links P_SetThingPosition(mobj); diff --git a/src/p_mobj.h b/src/p_mobj.h index 872c9dd5e..5e72408e5 100644 --- a/src/p_mobj.h +++ b/src/p_mobj.h @@ -299,6 +299,8 @@ typedef struct mobj_s fixed_t realxscale, realyscale; // funn-E streeetch fixed_t stretchslam; // "squish" effect when you land + + boolean stretchonground; // Play funni sound when player lands on ground with stretch //sloperollangle angle_t sloperoll, reservezangle, reservexydir; -- 2.54.0 From 9a8ef2c7e0429c1071340ee9505632596644f67f Mon Sep 17 00:00:00 2001 From: alufolie91 Date: Fri, 25 Aug 2023 19:26:02 +0200 Subject: [PATCH 2/6] aaaand add it to the menu --- src/m_menu.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/m_menu.c b/src/m_menu.c index a68d11b52..495a67202 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -1712,6 +1712,7 @@ static menuitem_t OP_PlayerDistortMenu[] = {IT_STRING | IT_CVAR, NULL, "Slope rotation distance", &cv_sloperolldist, 35}, {IT_STRING | IT_CVAR, NULL, "Rotate players when sliptiding", &cv_sliptideroll, 50}, {IT_STRING | IT_CVAR, NULL, "Player stretch factor", &cv_gravstretch, 65}, + {IT_STRING | IT_CVAR, NULL, "Squish Sound Effect", &cv_slamsound, 80}, }; enum -- 2.54.0 From 117524761443354827442659422aadb55c5df538 Mon Sep 17 00:00:00 2001 From: Indev Date: Fri, 25 Aug 2023 21:32:26 +0300 Subject: [PATCH 3/6] Move stretchonground in mobj_t at the end of struct because game assumes precipmobj and mobj have same layout in rendering code -_- --- src/p_mobj.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/p_mobj.h b/src/p_mobj.h index 5e72408e5..42d2bae07 100644 --- a/src/p_mobj.h +++ b/src/p_mobj.h @@ -299,8 +299,6 @@ typedef struct mobj_s fixed_t realxscale, realyscale; // funn-E streeetch fixed_t stretchslam; // "squish" effect when you land - - boolean stretchonground; // Play funni sound when player lands on ground with stretch //sloperollangle angle_t sloperoll, reservezangle, reservexydir; @@ -396,6 +394,8 @@ typedef struct mobj_s boolean colorized; // Whether the mobj uses the rainbow colormap boolean rollmodel; // OpenGL: Should this model rotate? + boolean stretchonground; // Play funni sound when player lands on ground with stretch + // WARNING: New fields must be added separately to savegame and Lua. } mobj_t; -- 2.54.0 From 9208a7233f4d49a4eae4edd2880b312d815666a0 Mon Sep 17 00:00:00 2001 From: Indev Date: Sun, 27 Aug 2023 11:13:47 +0300 Subject: [PATCH 4/6] Redo slamsound using MFE_JUSTHITFLOOR --- src/k_kart.c | 8 ++------ src/p_mobj.c | 2 -- src/p_mobj.h | 2 -- 3 files changed, 2 insertions(+), 10 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index 7de4cfaae..6b5769776 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -3000,8 +3000,8 @@ static void K_StretchPlayerGravity(player_t *p) I_Assert(p != NULL); I_Assert(p->mo != NULL); I_Assert(!P_MobjWasRemoved(p->mo)); - - if (!p->mo->stretchonground && P_IsObjectOnGround(p->mo) && (cv_slamsound.value == 1)) + + if (p->mo->eflags & MFE_JUSTHITFLOOR && (cv_slamsound.value == 1)) S_StartSound(p->mo, sfx_s3k4c); if (!P_IsObjectOnGround(p->mo)) @@ -3022,7 +3022,6 @@ static void K_StretchPlayerGravity(player_t *p) { p->mo->spritexscale = (dxs); p->mo->spriteyscale = (dys); - p->mo->stretchonground = false; } } else @@ -3037,10 +3036,7 @@ static void K_StretchPlayerGravity(player_t *p) p->mo->stretchslam -= (4*mos); else p->mo->stretchslam = 0; - p->mo->stretchonground = true; } - - } static INT32 K_FindPlayerNum(player_t *plyr) diff --git a/src/p_mobj.c b/src/p_mobj.c index bd561c034..f29a63f43 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -9563,8 +9563,6 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type) mobj->spritexscale = mobj->realxscale; mobj->spriteyscale = mobj->realyscale; mobj->spritexoffset = mobj->spriteyoffset = 0; - - mobj->stretchonground = true; // set subsector and/or block links P_SetThingPosition(mobj); diff --git a/src/p_mobj.h b/src/p_mobj.h index 42d2bae07..872c9dd5e 100644 --- a/src/p_mobj.h +++ b/src/p_mobj.h @@ -394,8 +394,6 @@ typedef struct mobj_s boolean colorized; // Whether the mobj uses the rainbow colormap boolean rollmodel; // OpenGL: Should this model rotate? - boolean stretchonground; // Play funni sound when player lands on ground with stretch - // WARNING: New fields must be added separately to savegame and Lua. } mobj_t; -- 2.54.0 From 82d30b5abf3ddc1bbcd3c287002705c66e2dd8ee Mon Sep 17 00:00:00 2001 From: Indev Date: Mon, 28 Aug 2023 10:29:44 +0300 Subject: [PATCH 5/6] Don't play landing sound on really small jumps --- 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 6b5769776..c6d4397ce 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -3001,7 +3001,7 @@ static void K_StretchPlayerGravity(player_t *p) I_Assert(p->mo != NULL); I_Assert(!P_MobjWasRemoved(p->mo)); - if (p->mo->eflags & MFE_JUSTHITFLOOR && (cv_slamsound.value == 1)) + if (cv_slamsound.value == 1 && (p->mo->eflags & MFE_JUSTHITFLOOR) && p->mo->stretchslam > 4*mos) S_StartSound(p->mo, sfx_s3k4c); if (!P_IsObjectOnGround(p->mo)) -- 2.54.0 From 5da6739077891ef70d8fac5f5d4b551303f6df10 Mon Sep 17 00:00:00 2001 From: Indev Date: Mon, 28 Aug 2023 13:56:19 +0300 Subject: [PATCH 6/6] Don't play slam sound too often --- src/k_kart.c | 8 +++++++- src/p_mobj.c | 3 +++ src/p_mobj.h | 2 ++ src/p_saveg.c | 1 + 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/k_kart.c b/src/k_kart.c index c6d4397ce..b1866e684 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -3001,8 +3001,14 @@ static void K_StretchPlayerGravity(player_t *p) I_Assert(p->mo != NULL); I_Assert(!P_MobjWasRemoved(p->mo)); - if (cv_slamsound.value == 1 && (p->mo->eflags & MFE_JUSTHITFLOOR) && p->mo->stretchslam > 4*mos) + if (p->mo->slamsoundtimer) + p->mo->slamsoundtimer--; + + if (cv_slamsound.value == 1 && (p->mo->eflags & MFE_JUSTHITFLOOR) && p->mo->stretchslam > 4*mos && !p->mo->slamsoundtimer) + { S_StartSound(p->mo, sfx_s3k4c); + p->mo->slamsoundtimer = TICRATE; + } if (!P_IsObjectOnGround(p->mo)) { diff --git a/src/p_mobj.c b/src/p_mobj.c index f29a63f43..090f83290 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -9564,6 +9564,9 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type) mobj->spriteyscale = mobj->realyscale; mobj->spritexoffset = mobj->spriteyoffset = 0; + // Funni slam sound when landing + mobj->slamsoundtimer = 0; + // set subsector and/or block links P_SetThingPosition(mobj); I_Assert(mobj->subsector != NULL); diff --git a/src/p_mobj.h b/src/p_mobj.h index 872c9dd5e..adb8b6196 100644 --- a/src/p_mobj.h +++ b/src/p_mobj.h @@ -394,6 +394,8 @@ typedef struct mobj_s boolean colorized; // Whether the mobj uses the rainbow colormap boolean rollmodel; // OpenGL: Should this model rotate? + tic_t slamsoundtimer; + // WARNING: New fields must be added separately to savegame and Lua. } mobj_t; diff --git a/src/p_saveg.c b/src/p_saveg.c index 673f1cb40..bc836b6e5 100644 --- a/src/p_saveg.c +++ b/src/p_saveg.c @@ -1984,6 +1984,7 @@ static void LoadMobjThinker(actionf_p1 thinker) mobj->spritexscale = mobj->spriteyscale = mobj->old_spritexscale = mobj->old_spriteyscale = FRACUNIT; mobj->realxscale = mobj->realyscale = FRACUNIT; mobj->stretchslam = 0; + mobj->slamsoundtimer = 0; mobj->sloperoll = mobj->reservezangle = mobj->reservexydir = 0; -- 2.54.0