From 39deb64e4fcf491cae46a693a0fac02e8c1b8cd8 Mon Sep 17 00:00:00 2001
From: MascaraSnake <jonassauer27@gmail.com>
Date: Sat, 15 Jun 2019 21:43:36 +0200
Subject: [PATCH] Streamlined the minecart death handling

---
 src/p_inter.c | 2 ++
 src/p_user.c  | 4 +---
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/p_inter.c b/src/p_inter.c
index 4c2d192972..956a13c2eb 100644
--- a/src/p_inter.c
+++ b/src/p_inter.c
@@ -2607,6 +2607,8 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
 		case MT_MINECART:
 			A_Scream(target);
 			target->momx = target->momy = target->momz = 0;
+			if (target->target && target->target->health)
+				P_KillMobj(target->target, target, source, 0);
 			break;
 
 		case MT_PLAYER:
diff --git a/src/p_user.c b/src/p_user.c
index c8e5254eaf..b44a6f1182 100644
--- a/src/p_user.c
+++ b/src/p_user.c
@@ -10004,7 +10004,6 @@ static void P_MinecartThink(player_t *player)
 	fa = (minecart->angle >> ANGLETOFINESHIFT) & FINEMASK;
 	if (!P_TryMove(minecart, minecart->x + FINECOSINE(fa), minecart->y + FINESINE(fa), true))
 	{
-		P_KillMobj(player->mo, NULL, NULL, 0);
 		P_KillMobj(minecart, NULL, NULL, 0);
 		return;
 	}
@@ -10041,7 +10040,7 @@ static void P_MinecartThink(player_t *player)
 
 			if (!axis)
 			{
-				P_KillMobj(player->mo, NULL, NULL, 0);
+				P_KillMobj(minecart, NULL, NULL, 0);
 				return;
 			}
 
@@ -10152,7 +10151,6 @@ static void P_MinecartThink(player_t *player)
 			if ((P_IsObjectOnGround(minecart) && minecart->movefactor >= 5) // off rail
 			|| (abs(minecart->momx) < minecart->scale/2 && abs(minecart->momy) < minecart->scale/2)) // hit a wall
 			{
-				P_KillMobj(player->mo, NULL, NULL, 0);
 				P_KillMobj(minecart, NULL, NULL, 0);
 				return;
 			}
-- 
GitLab