From 8e6211759690dc63e7012dd8cb4bd8ee77f31aa0 Mon Sep 17 00:00:00 2001 From: Sally Coolatta Date: Sat, 23 Sep 2023 09:57:16 -0400 Subject: [PATCH] Damage hitlag sounds --- src/k_hitlag.c | 29 ++++++++++++++++++++++++++++- src/k_hitlag.h | 1 + src/p_inter.c | 2 +- src/sounds.c | 10 ++++++++++ src/sounds.h | 10 ++++++++++ 5 files changed, 50 insertions(+), 2 deletions(-) diff --git a/src/k_hitlag.c b/src/k_hitlag.c index fd682c4c1..4bb0d37f3 100644 --- a/src/k_hitlag.c +++ b/src/k_hitlag.c @@ -18,6 +18,7 @@ #include "m_random.h" #include "p_local.h" #include "r_main.h" +#include "s_sound.h" /*-------------------------------------------------- void K_AddHitLag(mobj_t *mo, INT32 tics, boolean fromDamage) @@ -129,13 +130,38 @@ static void K_SpawnSingleHitLagSpark( } } +/*-------------------------------------------------- + static void K_PlayHitLagSFX(mobj_t *victim, UINT8 tics) + + Plays a damage sound for a player. + + Input Arguments:- + victim - Object getting damaged. + tics - How long the hitlag was. + + Return:- + N/A +--------------------------------------------------*/ +static void K_PlayHitLagSFX(mobj_t *victim, UINT8 tics) +{ + sfxenum_t soundID = sfx_dmga1; + + if (P_Random(PR_DECORATION) & 1) // might want to use this set for some other scenario, instead of randomized? + { + soundID = sfx_dmgb1; + } + + soundID += ((tics * (NUM_HITLAG_SOUNDS - 1)) + (MAXHITLAGTICS >> 1)) / MAXHITLAGTICS; + S_StartSound(victim, soundID); +} + /*-------------------------------------------------- static void K_SpawnHitLagEFX(mobj_t *victim, mobj_t *inflictor, mobj_t *source, UINT8 tics) Spawns several hitlag sparks for damage. Input Arguments:- - victim - Object getting touched. + victim - Object getting damaged. inflictor - Object touching the victim. May be NULL. source - Object that inflictor came from. May be NULL or same as inflictor. tics - How long the hitlag was. @@ -152,6 +178,7 @@ static void K_SpawnHitLagEFX(mobj_t *victim, mobj_t *inflictor, mobj_t *source, I_Assert(P_MobjWasRemoved(victim) == false); + K_PlayHitLagSFX(victim, tics); P_StartQuakeFromMobj(tics, tics * 2 * mapobjectscale, 512 * mapobjectscale, victim); if (P_MobjWasRemoved(inflictor) == false) diff --git a/src/k_hitlag.h b/src/k_hitlag.h index cace7a964..fed3b75cc 100644 --- a/src/k_hitlag.h +++ b/src/k_hitlag.h @@ -23,6 +23,7 @@ extern "C" { #define MAXHITLAGTICS (30) #define HITLAGJITTERS (FRACUNIT / 20) #define NUM_HITLAG_STATES (9) +#define NUM_HITLAG_SOUNDS (4) /*-------------------------------------------------- void K_AddHitLag(mobj_t *mo, INT32 tics, boolean fromDamage); diff --git a/src/p_inter.c b/src/p_inter.c index 6176201ec..2c29b0c19 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -2752,7 +2752,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da if (type != DMG_STING) player->flashing = K_GetKartFlashing(player); - P_PlayRinglossSound(target); + //P_PlayRinglossSound(target); P_PlayerRingBurst(player, ringburst); K_PopPlayerShield(player); diff --git a/src/sounds.c b/src/sounds.c index 18bfa26d9..747331ff7 100644 --- a/src/sounds.c +++ b/src/sounds.c @@ -1210,6 +1210,16 @@ sfxinfo_t S_sfx[NUMSFX] = {"rank", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, // Rank slam + // Damage sounds + {"dmga1", false, 64, 8, -1, NULL, 0, -1, -1, LUMPERROR, "Damaged"}, + {"dmga2", false, 64, 8, -1, NULL, 0, -1, -1, LUMPERROR, "Damaged"}, + {"dmga3", false, 64, 8, -1, NULL, 0, -1, -1, LUMPERROR, "Damaged"}, + {"dmga4", false, 64, 8, -1, NULL, 0, -1, -1, LUMPERROR, "Damaged"}, + {"dmgb1", false, 64, 8, -1, NULL, 0, -1, -1, LUMPERROR, "Damaged"}, + {"dmgb2", false, 64, 8, -1, NULL, 0, -1, -1, LUMPERROR, "Damaged"}, + {"dmgb3", false, 64, 8, -1, NULL, 0, -1, -1, LUMPERROR, "Damaged"}, + {"dmgb4", false, 64, 8, -1, NULL, 0, -1, -1, LUMPERROR, "Damaged"}, + // SRB2Kart - Engine sounds // Engine class A {"krta00", false, 48, 65, -1, NULL, 0, -1, -1, LUMPERROR, ""}, diff --git a/src/sounds.h b/src/sounds.h index b9b0616e0..7c55906c0 100644 --- a/src/sounds.h +++ b/src/sounds.h @@ -1279,6 +1279,16 @@ typedef enum sfx_rank, + // Damage sounds + sfx_dmga1, + sfx_dmga2, + sfx_dmga3, + sfx_dmga4, + sfx_dmgb1, + sfx_dmgb2, + sfx_dmgb3, + sfx_dmgb4, + // Next up: UNIQUE ENGINE SOUNDS! Hoooooo boy... // Engine class A - Low Speed, Low Weight sfx_krta00,