Fix pain sound from regular objects and make bubbleshield do hitem

This commit is contained in:
NepDisk 2025-07-17 18:48:54 -04:00
parent 1155b50cfc
commit d94fa42ec8
2 changed files with 22 additions and 11 deletions

View file

@ -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)

View file

@ -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);
}