From d94fa42ec892b4065c26a11d6f979bae5c4f85cc Mon Sep 17 00:00:00 2001 From: NepDisk Date: Thu, 17 Jul 2025 18:48:54 -0400 Subject: [PATCH] Fix pain sound from regular objects and make bubbleshield do hitem --- src/k_kart.c | 2 +- src/p_inter.c | 31 +++++++++++++++++++++---------- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index 96d03a230..17daa1e03 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -75,7 +75,7 @@ consvar_t cv_kartdriftefx = CVAR_INIT ("kartdriftefx", "On", CV_SAVE, CV_OnOff, static CV_PossibleValue_t driftsparkpulse_cons_t[] = {{0, "MIN"}, {FRACUNIT*3, "MAX"}, {0, NULL}}; consvar_t cv_driftsparkpulse = CVAR_INIT ("driftsparkpulse", "1.4", CV_SAVE|CV_FLOAT, driftsparkpulse_cons_t, NULL); consvar_t cv_saltyhop = CVAR_INIT ("hardcodehop", "Off", CV_SAVE, CV_OnOff, NULL); -consvar_t cv_karthitemdialog = CVAR_INIT ("karthitemdialog", "Off", CV_SAVE, CV_OnOff, NULL); +consvar_t cv_karthitemdialog = CVAR_INIT ("karthitemdialog", "On", CV_SAVE, CV_OnOff, NULL); // SOME IMPORTANT VARIABLES DEFINED IN DOOMDEF.H: // gamespeed is cc (0 for easy, 1 for normal, 2 for hard) diff --git a/src/p_inter.c b/src/p_inter.c index 40e2930d5..e00fd20af 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -2089,7 +2089,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da player_t *player; boolean force = false; boolean spbpop = false; - boolean trapitem = false; + boolean painsound = false; if (objectplacing) return false; @@ -2232,7 +2232,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da } // We successfully damaged them! Give 'em some bumpers! - if (source && source != player->mo && source->player) + if (source && source != player->mo && (source->player || source->target && source->target->player)) { if (gametyperules & GTR_BUMPERS) { @@ -2260,7 +2260,13 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da } } - K_TryHurtSoundExchange(target, source); + // Fix for bubble shield hit having no hit em!!!!!! + { + mobj_t *attacker = source->player ? source : NULL; + if (!attacker && source->target && source->target->player) + attacker = source->target; + K_TryHurtSoundExchange(target, attacker); + } } else { @@ -2360,8 +2366,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da K_KartPainEnergyFling(player); break; case DMG_VOLTAGE: - // I'm not afarid of no thunder. - trapitem = true; + painsound = false; case DMG_NORMAL: default: K_SpinPlayer(player, inflictor, source, KSPIN_SPINOUT); @@ -2380,11 +2385,18 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da if (inflictor) { + if (inflictor->player) + painsound = true; + switch(inflictor->type) { - case MT_BANANA: - case MT_BANANA_SHIELD: - trapitem = true; + case MT_ORBINAUT: + case MT_ORBINAUT_SHIELD: + case MT_JAWZ: + case MT_JAWZ_SHIELD: + case MT_JAWZ_DUD: + case MT_SMK_THWOMP: + painsound = true; break; default: @@ -2392,9 +2404,8 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da } } - if (!trapitem) + if (painsound) { - // Bananas don't make you scream. K_PlayPainSound(target, source); }