diff --git a/src/p_enemy.c b/src/p_enemy.c
index 49907bdccaee23d3c8da53ffd1f75512b1720737..8329b4f57f4485a1f79c241a36f463942e6464a3 100644
--- a/src/p_enemy.c
+++ b/src/p_enemy.c
@@ -3518,9 +3518,7 @@ void A_Scream(mobj_t *actor)
 	if (LUA_CallAction(A_SCREAM, actor))
 		return;
 
-	if (actor->tracer && (actor->tracer->type == MT_SHELL || actor->tracer->type == MT_FIREBALL))
-		S_StartScreamSound(actor, sfx_mario2);
-	else if (actor->info->deathsound)
+	if (actor->info->deathsound && !S_SoundPlaying(actor, sfx_mario2))
 		S_StartScreamSound(actor, actor->info->deathsound);
 }
 
diff --git a/src/p_inter.c b/src/p_inter.c
index 21e3bfa3de4ee75e653ca479e743f3ef5cc0aeeb..4b958fb893218bc632036b856659caa24733d9a0 100644
--- a/src/p_inter.c
+++ b/src/p_inter.c
@@ -2391,7 +2391,7 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
 	mobj_t *mo;
 
 	if (inflictor && (inflictor->type == MT_SHELL || inflictor->type == MT_FIREBALL))
-		P_SetTarget(&target->tracer, inflictor);
+		S_StartScreamSound(target, sfx_mario2);
 
 	if (!(maptol & TOL_NIGHTS) && G_IsSpecialStage(gamemap) && target->player && target->player->nightstime > 6)
 		target->player->nightstime = 6; // Just let P_Ticker take care of the rest.