From a154ff5fb0dd4f80c37a91a6a5887b113b2ca9eb Mon Sep 17 00:00:00 2001
From: "Spring E. Thing" <springething@gmail.com>
Date: Wed, 12 Feb 2025 15:45:29 +0000
Subject: [PATCH 1/4] SPR2_DKRA through to SPR2_DKRK (excluding SPR2_DKRF) can
 now optionally be added to character WAD graphic lumps to customize "gibs"
 that spawn from a kart explosion.

---
 src/deh_tables.c               | 10 ++++++
 src/info.c                     | 30 ++++++++++++++++
 src/info.h                     | 20 +++++++++++
 src/objects/destroyed-kart.cpp | 62 +++++++++++++++++++++-------------
 4 files changed, 99 insertions(+), 23 deletions(-)

diff --git a/src/deh_tables.c b/src/deh_tables.c
index 6a5255e8e..a3e08143d 100644
--- a/src/deh_tables.c
+++ b/src/deh_tables.c
@@ -370,6 +370,16 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi
 	"S_KART_LEFTOVER",
 	"S_KART_LEFTOVER_NOTIRES",
 	"S_KART_LEFTOVER_CUSTOM",
+	"S_KART_LEFTOVER_PARTICLE_CUSTOM_A",
+	"S_KART_LEFTOVER_PARTICLE_CUSTOM_B",
+	"S_KART_LEFTOVER_PARTICLE_CUSTOM_C",
+	"S_KART_LEFTOVER_PARTICLE_CUSTOM_D",
+	"S_KART_LEFTOVER_PARTICLE_CUSTOM_E",
+	"S_KART_LEFTOVER_PARTICLE_CUSTOM_G",
+	"S_KART_LEFTOVER_PARTICLE_CUSTOM_H",
+	"S_KART_LEFTOVER_PARTICLE_CUSTOM_I",
+	"S_KART_LEFTOVER_PARTICLE_CUSTOM_J",
+	"S_KART_LEFTOVER_PARTICLE_CUSTOM_K",
 
 	"S_KART_TIRE1",
 	"S_KART_TIRE2",
diff --git a/src/info.c b/src/info.c
index 67cbf3fab..fa278dadc 100644
--- a/src/info.c
+++ b/src/info.c
@@ -796,6 +796,16 @@ char spr2names[NUMPLAYERSPRITES][5] =
 	"XTRA", // Three Faces of Darkness
 	"TALK", // Dialogue
 	"DKRT", // Kart husk
+	"DKRA", // Kart husk particle (A)
+	"DKRB", // Kart husk particle (B)
+	"DKRC", // Kart husk particle (C)
+	"DKRD", // Kart husk particle (D)
+	"DKRE", // Kart husk particle (E)
+	"DKRG", // Kart husk particle (G)
+	"DKRH", // Kart husk particle (H)
+	"DKRI", // Kart husk particle (I)
+	"DKRJ", // Kart husk particle (J)
+	"DKRK", // Kart husk particle (K)
 };
 playersprite_t free_spr2 = SPR2_FIRSTFREESLOT;
 
@@ -841,6 +851,16 @@ playersprite_t spr2defaults[NUMPLAYERSPRITES] = {
 	0, // SPR2_XTRA
 	0, // SPR2_TALK
 	0, // SPR2_DKRT
+	0, // SPR2_DKRA
+	0, // SPR2_DKRB
+	0, // SPR2_DKRC
+	0, // SPR2_DKRD
+	0, // SPR2_DKRE
+	0, // SPR2_DKRG
+	0, // SPR2_DKRH
+	0, // SPR2_DKRI
+	0, // SPR2_DKRJ
+	0, // SPR2_DKRK
 };
 
 // Doesn't work with g++, needs actionf_p1 (don't modify this comment)
@@ -906,6 +926,16 @@ state_t states[NUMSTATES] =
 	{SPR_KART, 0, -1, {NULL}, 0, 0, S_NULL}, // S_KART_LEFTOVER
 	{SPR_DIEF, 0, -1, {NULL}, 0, 0, S_NULL}, // S_KART_LEFTOVER_NOTIRES
 	{SPR_PLAY, SPR2_DKRT,3,{NULL},0,0,S_KART_LEFTOVER_CUSTOM},// S_KART_LEFTOVER_CUSTOM
+	{SPR_PLAY, SPR2_DKRA, 3, {NULL}, 0, 0, S_KART_LEFTOVER_PARTICLE_CUSTOM_A}, // S_KART_LEFTOVER_PARTICLE_CUSTOM_A
+	{SPR_PLAY, SPR2_DKRB, 3, {NULL}, 0, 0, S_KART_LEFTOVER_PARTICLE_CUSTOM_B}, // S_KART_LEFTOVER_PARTICLE_CUSTOM_B
+	{SPR_PLAY, SPR2_DKRC, 3, {NULL}, 0, 0, S_KART_LEFTOVER_PARTICLE_CUSTOM_C}, // S_KART_LEFTOVER_PARTICLE_CUSTOM_C
+	{SPR_PLAY, SPR2_DKRD, 3, {NULL}, 0, 0, S_KART_LEFTOVER_PARTICLE_CUSTOM_D}, // S_KART_LEFTOVER_PARTICLE_CUSTOM_D
+	{SPR_PLAY, SPR2_DKRE, 3, {NULL}, 0, 0, S_KART_LEFTOVER_PARTICLE_CUSTOM_E}, // S_KART_LEFTOVER_PARTICLE_CUSTOM_E
+	{SPR_PLAY, SPR2_DKRG, 3, {NULL}, 0, 0, S_KART_LEFTOVER_PARTICLE_CUSTOM_G}, // S_KART_LEFTOVER_PARTICLE_CUSTOM_G
+	{SPR_PLAY, SPR2_DKRH, 3, {NULL}, 0, 0, S_KART_LEFTOVER_PARTICLE_CUSTOM_H}, // S_KART_LEFTOVER_PARTICLE_CUSTOM_H
+	{SPR_PLAY, SPR2_DKRI, 3, {NULL}, 0, 0, S_KART_LEFTOVER_PARTICLE_CUSTOM_I}, // S_KART_LEFTOVER_PARTICLE_CUSTOM_I
+	{SPR_PLAY, SPR2_DKRJ, 3, {NULL}, 0, 0, S_KART_LEFTOVER_PARTICLE_CUSTOM_J}, // S_KART_LEFTOVER_PARTICLE_CUSTOM_J
+	{SPR_PLAY, SPR2_DKRK, 3, {NULL}, 0, 0, S_KART_LEFTOVER_PARTICLE_CUSTOM_K}, // S_KART_LEFTOVER_PARTICLE_CUSTOM_K
 
 	{SPR_TIRE, 0, -1, {NULL}, 0, 0, S_NULL}, // S_KART_TIRE1
 	{SPR_TIRE, 1, -1, {NULL}, 0, 0, S_NULL}, // S_KART_TIRE2
diff --git a/src/info.h b/src/info.h
index 884dd3781..d8e63a16d 100644
--- a/src/info.h
+++ b/src/info.h
@@ -1330,6 +1330,16 @@ typedef enum playersprite
 	SPR2_XTRA,
 	SPR2_TALK,
 	SPR2_DKRT,
+	SPR2_DKRA,
+	SPR2_DKRB,
+	SPR2_DKRC,
+	SPR2_DKRD,
+	SPR2_DKRE,
+	SPR2_DKRG,
+	SPR2_DKRH,
+	SPR2_DKRI,
+	SPR2_DKRJ,
+	SPR2_DKRK,
 
 	SPR2_FIRSTFREESLOT,
 	SPR2_LASTFREESLOT = 0x7f,
@@ -1391,6 +1401,16 @@ typedef enum state
 	S_KART_LEFTOVER,
 	S_KART_LEFTOVER_NOTIRES,
 	S_KART_LEFTOVER_CUSTOM,
+	S_KART_LEFTOVER_PARTICLE_CUSTOM_A,
+	S_KART_LEFTOVER_PARTICLE_CUSTOM_B,
+	S_KART_LEFTOVER_PARTICLE_CUSTOM_C,
+	S_KART_LEFTOVER_PARTICLE_CUSTOM_D,
+	S_KART_LEFTOVER_PARTICLE_CUSTOM_E,
+	S_KART_LEFTOVER_PARTICLE_CUSTOM_G,
+	S_KART_LEFTOVER_PARTICLE_CUSTOM_H,
+	S_KART_LEFTOVER_PARTICLE_CUSTOM_I,
+	S_KART_LEFTOVER_PARTICLE_CUSTOM_J,
+	S_KART_LEFTOVER_PARTICLE_CUSTOM_K,
 
 	S_KART_TIRE1,
 	S_KART_TIRE2,
diff --git a/src/objects/destroyed-kart.cpp b/src/objects/destroyed-kart.cpp
index c6a5a0946..3e85ef5dd 100644
--- a/src/objects/destroyed-kart.cpp
+++ b/src/objects/destroyed-kart.cpp
@@ -55,16 +55,32 @@ struct Particle : Mobj
 
 	bool is_shrapnel() const { return sprite == SPR_KRBM; }
 
-	static void spew(Mobj* source)
+	static void spew(Mobj* source,int pskin)
 	{
-		auto generic = [&](spritenum_t sprite, int degr, Fixed scale, int momx, const Vec2<int>& momz)
+		auto generic = [&](spritenum_t sprite, int pskinn, statenum_t spr2state, int degr, Fixed scale, int momx, const Vec2<int>& momz)
 		{
 			Particle* x = source->spawn_from<Particle>({}, MT_KART_PARTICLE);
 			if (x)
 			{
-				x->sprite = sprite;
+				if(pskinn >=0 && pskinn < numskins
+					&& spr2state>=0 && spr2state < NUMSTATES &&
+					states[spr2state].frame >=0 && states[spr2state].frame < NUMPLAYERSPRITES*2 && //NUMPLAYERSPRITES*2 being the length of the 'skin_t.sprites' array member
+					spr2state!=S_NULL &&
+					skins[pskinn].sprites[states[spr2state].frame].numframes > 0){		
+
+					x->skin = (void*)(&skins[pskinn]);
+					x->state(spr2state);
+					//frame will be set by state()
+				}
+				else{
+					//state will be set by mapthing definition
+					x->sprite = sprite;
+					x->frame = 0;
+				}
+
+				x->frame |=FF_SEMIBRIGHT;
+
 				x->color = source->color;
-				x->frame = FF_SEMIBRIGHT;
 				x->lightlevel = 112;
 				x->scale(scale * x->scale());
 
@@ -79,34 +95,34 @@ struct Particle : Mobj
 			return x;
 		};
 
-		auto part = [&](spritenum_t sprite, int degr, Fixed scale)
+		auto part = [&](spritenum_t sprite, int pskinn, statenum_t spr2state,  int degr, Fixed scale)
 		{
-			return generic(sprite, degr, scale, 2, {8, 16});
+			return generic(sprite, pskinn, spr2state,degr, scale, 2, {8, 16});
 		};
 
-		auto radial = [&](spritenum_t sprite, int ofs, int spokes, Fixed scale)
+		auto radial = [&](spritenum_t sprite, int pskinn, statenum_t spr2state, int ofs, int spokes, Fixed scale)
 		{
-			radial_generic(ofs, spokes, [&](int ang) { part(sprite, ang, scale); });
+			radial_generic(ofs, spokes, [&](int ang) { part(sprite, pskinn, spr2state, ang, scale); });
 		};
 
 		constexpr Fixed kSmall = 3*FRACUNIT/2;
 		constexpr Fixed kMedium = 7*FRACUNIT/4;
 		constexpr Fixed kLarge = 2*FRACUNIT;
 
-		part(SPR_DIEE, 0, kLarge); // steering wheel
-		part(SPR_DIEK, 180 + 45, kLarge); // engine
+		part(SPR_DIEE, pskin, S_KART_LEFTOVER_PARTICLE_CUSTOM_E, 0, kLarge); // steering wheel
+		part(SPR_DIEK, pskin, S_KART_LEFTOVER_PARTICLE_CUSTOM_K, 180 + 45, kLarge); // engine
 
-		part(SPR_DIEG, 90, kLarge); // left pedal base
-		part(SPR_DIED, -90, kLarge); // right pedal base
+		part(SPR_DIEG, pskin, S_KART_LEFTOVER_PARTICLE_CUSTOM_G, 90, kLarge); // left pedal base
+		part(SPR_DIED, pskin, S_KART_LEFTOVER_PARTICLE_CUSTOM_D, -90, kLarge); // right pedal base
 
-		radial(SPR_DIEI, 90, 2, kLarge); // wheel axle bars
-		radial(SPR_DIEC, 90, 2, kLarge); // pedal tips
-		radial(SPR_DIEA, 45, 4, kMedium); // tires
-		radial(SPR_DIEH, 45, 4, kMedium); // struts / springs
-		radial(SPR_DIEB, 360/12, 6, kSmall); // pipeframe bars
-		radial(SPR_DIEJ, 360/16, 8, kSmall); // screws
+		radial(SPR_DIEI, pskin, S_KART_LEFTOVER_PARTICLE_CUSTOM_I, 90, 2, kLarge); // wheel axle bars
+		radial(SPR_DIEC, pskin, S_KART_LEFTOVER_PARTICLE_CUSTOM_C, 90, 2, kLarge); // pedal tips
+		radial(SPR_DIEA, pskin, S_KART_LEFTOVER_PARTICLE_CUSTOM_A, 45, 4, kMedium); // tires
+		radial(SPR_DIEH, pskin, S_KART_LEFTOVER_PARTICLE_CUSTOM_H, 45, 4, kMedium); // struts / springs
+		radial(SPR_DIEB, pskin, S_KART_LEFTOVER_PARTICLE_CUSTOM_B, 360/12, 6, kSmall); // pipeframe bars
+		radial(SPR_DIEJ, pskin, S_KART_LEFTOVER_PARTICLE_CUSTOM_J, 360/16, 8, kSmall); // screws
 
-		radial_generic(0, 6, [&](int degr) { generic(SPR_KRBM, degr, kSmall, 8, {22, 28}); }); // shrapnel
+		radial_generic(0, 6, [&](int degr) { generic(SPR_KRBM, -1, S_NULL, degr, kSmall, 8, {22, 28}); }); // shrapnel
 
 		// explosion
 		radial_generic(
@@ -317,15 +333,15 @@ struct Kart : Mobj
 
 		Mobj* p = player();
 		bool pValid = Mobj::valid(p) && p->player;
-		bool hasCustomHusk = pValid && skins[p->player->skin].sprites[SPR2_DKRT].numframes;
+		int pSkin = pValid ? p->player->skin :-1;
+		bool hasCustomHusk = pSkin >=0 && pSkin < numskins && skins[pSkin].sprites[SPR2_DKRT].numframes;
 
 		if(hasCustomHusk)
 		{
-			skin = (void*)(&skins[p->player->skin]);
-			frame = 0;
+			skin = (void*)(&skins[pSkin]);
 		}
 
-		Particle::spew(this);
+		Particle::spew(this,pSkin);
 		scale(3*scale()/2);
 
 		if(hasCustomHusk){
-- 
GitLab


From 643a0ddd943212ebfbe8bc4b1f546512b02554c8 Mon Sep 17 00:00:00 2001
From: "Spring E. Thing" <springething@hotmail.com>
Date: Wed, 12 Mar 2025 14:48:18 +0000
Subject: [PATCH 2/4] Whitespace & formatting concerns addressed

---
 src/objects/destroyed-kart.cpp | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/objects/destroyed-kart.cpp b/src/objects/destroyed-kart.cpp
index 3e85ef5dd..4e686c33c 100644
--- a/src/objects/destroyed-kart.cpp
+++ b/src/objects/destroyed-kart.cpp
@@ -62,11 +62,11 @@ struct Particle : Mobj
 			Particle* x = source->spawn_from<Particle>({}, MT_KART_PARTICLE);
 			if (x)
 			{
-				if(pskinn >=0 && pskinn < numskins
-					&& spr2state>=0 && spr2state < NUMSTATES &&
-					states[spr2state].frame >=0 && states[spr2state].frame < NUMPLAYERSPRITES*2 && //NUMPLAYERSPRITES*2 being the length of the 'skin_t.sprites' array member
-					spr2state!=S_NULL &&
-					skins[pskinn].sprites[states[spr2state].frame].numframes > 0){		
+				if( pskinn >= 0 && pskinn < numskins
+					&& spr2state > S_NULL && spr2state < NUMSTATES &&
+					states[spr2state].frame >= 0 && states[spr2state].frame < NUMPLAYERSPRITES * 2 && //'NUMPLAYERSPRITES * 2' being the length of the 'skin_t.sprites' array member
+					skins[pskinn].sprites[states[spr2state].frame].numframes > 0)
+				{		
 
 					x->skin = (void*)(&skins[pskinn]);
 					x->state(spr2state);
@@ -97,7 +97,7 @@ struct Particle : Mobj
 
 		auto part = [&](spritenum_t sprite, int pskinn, statenum_t spr2state,  int degr, Fixed scale)
 		{
-			return generic(sprite, pskinn, spr2state,degr, scale, 2, {8, 16});
+			return generic(sprite, pskinn, spr2state, degr, scale, 2, {8, 16});
 		};
 
 		auto radial = [&](spritenum_t sprite, int pskinn, statenum_t spr2state, int ofs, int spokes, Fixed scale)
@@ -333,7 +333,7 @@ struct Kart : Mobj
 
 		Mobj* p = player();
 		bool pValid = Mobj::valid(p) && p->player;
-		int pSkin = pValid ? p->player->skin :-1;
+		int pSkin = pValid ? p->player->skin : -1; //rip lyman lineface :-1
 		bool hasCustomHusk = pSkin >=0 && pSkin < numskins && skins[pSkin].sprites[SPR2_DKRT].numframes;
 
 		if(hasCustomHusk)
-- 
GitLab


From 7fc3da979af18b5458dc581929e3c622556b0c75 Mon Sep 17 00:00:00 2001
From: "Spring E. Thing" <springething@hotmail.com>
Date: Wed, 12 Mar 2025 16:56:55 +0000
Subject: [PATCH 3/4] Removed erroneous whitespace addition from previous fix

---
 src/objects/destroyed-kart.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/objects/destroyed-kart.cpp b/src/objects/destroyed-kart.cpp
index 4e686c33c..850baa331 100644
--- a/src/objects/destroyed-kart.cpp
+++ b/src/objects/destroyed-kart.cpp
@@ -62,7 +62,7 @@ struct Particle : Mobj
 			Particle* x = source->spawn_from<Particle>({}, MT_KART_PARTICLE);
 			if (x)
 			{
-				if( pskinn >= 0 && pskinn < numskins
+				if(pskinn >= 0 && pskinn < numskins
 					&& spr2state > S_NULL && spr2state < NUMSTATES &&
 					states[spr2state].frame >= 0 && states[spr2state].frame < NUMPLAYERSPRITES * 2 && //'NUMPLAYERSPRITES * 2' being the length of the 'skin_t.sprites' array member
 					skins[pskinn].sprites[states[spr2state].frame].numframes > 0)
-- 
GitLab


From a4513e48077f3df3f4bf7707ef9c202821f3be34 Mon Sep 17 00:00:00 2001
From: "Spring E. Thing" <springething@hotmail.com>
Date: Wed, 12 Mar 2025 16:56:09 +0000
Subject: [PATCH 4/4] Renamed SPR2_DKRT to SPR2_DKRF and S_KART_LEFTOVER_CUSTOM
 to S_KART_LEFTOVER_PARTICLE_CUSTOM_F

---
 src/deh_tables.c               | 2 +-
 src/info.c                     | 6 +++---
 src/info.h                     | 4 ++--
 src/objects/destroyed-kart.cpp | 4 ++--
 4 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/deh_tables.c b/src/deh_tables.c
index a3e08143d..3effaa372 100644
--- a/src/deh_tables.c
+++ b/src/deh_tables.c
@@ -369,12 +369,12 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi
 
 	"S_KART_LEFTOVER",
 	"S_KART_LEFTOVER_NOTIRES",
-	"S_KART_LEFTOVER_CUSTOM",
 	"S_KART_LEFTOVER_PARTICLE_CUSTOM_A",
 	"S_KART_LEFTOVER_PARTICLE_CUSTOM_B",
 	"S_KART_LEFTOVER_PARTICLE_CUSTOM_C",
 	"S_KART_LEFTOVER_PARTICLE_CUSTOM_D",
 	"S_KART_LEFTOVER_PARTICLE_CUSTOM_E",
+	"S_KART_LEFTOVER_PARTICLE_CUSTOM_F",
 	"S_KART_LEFTOVER_PARTICLE_CUSTOM_G",
 	"S_KART_LEFTOVER_PARTICLE_CUSTOM_H",
 	"S_KART_LEFTOVER_PARTICLE_CUSTOM_I",
diff --git a/src/info.c b/src/info.c
index fa278dadc..5921127d4 100644
--- a/src/info.c
+++ b/src/info.c
@@ -795,12 +795,12 @@ char spr2names[NUMPLAYERSPRITES][5] =
 	"SIGN", "SIGL", "SSIG", // Finish signpost
 	"XTRA", // Three Faces of Darkness
 	"TALK", // Dialogue
-	"DKRT", // Kart husk
 	"DKRA", // Kart husk particle (A)
 	"DKRB", // Kart husk particle (B)
 	"DKRC", // Kart husk particle (C)
 	"DKRD", // Kart husk particle (D)
 	"DKRE", // Kart husk particle (E)
+	"DKRF", // Kart husk particle (F) AKA The kart husk itself
 	"DKRG", // Kart husk particle (G)
 	"DKRH", // Kart husk particle (H)
 	"DKRI", // Kart husk particle (I)
@@ -850,12 +850,12 @@ playersprite_t spr2defaults[NUMPLAYERSPRITES] = {
 	SPR2_SIGN, // SPR2_SSIG
 	0, // SPR2_XTRA
 	0, // SPR2_TALK
-	0, // SPR2_DKRT
 	0, // SPR2_DKRA
 	0, // SPR2_DKRB
 	0, // SPR2_DKRC
 	0, // SPR2_DKRD
 	0, // SPR2_DKRE
+	0, // SPR2_DKRF
 	0, // SPR2_DKRG
 	0, // SPR2_DKRH
 	0, // SPR2_DKRI
@@ -925,12 +925,12 @@ state_t states[NUMSTATES] =
 
 	{SPR_KART, 0, -1, {NULL}, 0, 0, S_NULL}, // S_KART_LEFTOVER
 	{SPR_DIEF, 0, -1, {NULL}, 0, 0, S_NULL}, // S_KART_LEFTOVER_NOTIRES
-	{SPR_PLAY, SPR2_DKRT,3,{NULL},0,0,S_KART_LEFTOVER_CUSTOM},// S_KART_LEFTOVER_CUSTOM
 	{SPR_PLAY, SPR2_DKRA, 3, {NULL}, 0, 0, S_KART_LEFTOVER_PARTICLE_CUSTOM_A}, // S_KART_LEFTOVER_PARTICLE_CUSTOM_A
 	{SPR_PLAY, SPR2_DKRB, 3, {NULL}, 0, 0, S_KART_LEFTOVER_PARTICLE_CUSTOM_B}, // S_KART_LEFTOVER_PARTICLE_CUSTOM_B
 	{SPR_PLAY, SPR2_DKRC, 3, {NULL}, 0, 0, S_KART_LEFTOVER_PARTICLE_CUSTOM_C}, // S_KART_LEFTOVER_PARTICLE_CUSTOM_C
 	{SPR_PLAY, SPR2_DKRD, 3, {NULL}, 0, 0, S_KART_LEFTOVER_PARTICLE_CUSTOM_D}, // S_KART_LEFTOVER_PARTICLE_CUSTOM_D
 	{SPR_PLAY, SPR2_DKRE, 3, {NULL}, 0, 0, S_KART_LEFTOVER_PARTICLE_CUSTOM_E}, // S_KART_LEFTOVER_PARTICLE_CUSTOM_E
+	{SPR_PLAY, SPR2_DKRF, 3, {NULL}, 0, 0, S_KART_LEFTOVER_PARTICLE_CUSTOM_F},// S_KART_LEFTOVER_PARTICLE_CUSTOM_F
 	{SPR_PLAY, SPR2_DKRG, 3, {NULL}, 0, 0, S_KART_LEFTOVER_PARTICLE_CUSTOM_G}, // S_KART_LEFTOVER_PARTICLE_CUSTOM_G
 	{SPR_PLAY, SPR2_DKRH, 3, {NULL}, 0, 0, S_KART_LEFTOVER_PARTICLE_CUSTOM_H}, // S_KART_LEFTOVER_PARTICLE_CUSTOM_H
 	{SPR_PLAY, SPR2_DKRI, 3, {NULL}, 0, 0, S_KART_LEFTOVER_PARTICLE_CUSTOM_I}, // S_KART_LEFTOVER_PARTICLE_CUSTOM_I
diff --git a/src/info.h b/src/info.h
index d8e63a16d..4fab2f207 100644
--- a/src/info.h
+++ b/src/info.h
@@ -1329,12 +1329,12 @@ typedef enum playersprite
 	SPR2_SIGN, SPR2_SIGL, SPR2_SSIG,
 	SPR2_XTRA,
 	SPR2_TALK,
-	SPR2_DKRT,
 	SPR2_DKRA,
 	SPR2_DKRB,
 	SPR2_DKRC,
 	SPR2_DKRD,
 	SPR2_DKRE,
+	SPR2_DKRF,
 	SPR2_DKRG,
 	SPR2_DKRH,
 	SPR2_DKRI,
@@ -1400,12 +1400,12 @@ typedef enum state
 
 	S_KART_LEFTOVER,
 	S_KART_LEFTOVER_NOTIRES,
-	S_KART_LEFTOVER_CUSTOM,
 	S_KART_LEFTOVER_PARTICLE_CUSTOM_A,
 	S_KART_LEFTOVER_PARTICLE_CUSTOM_B,
 	S_KART_LEFTOVER_PARTICLE_CUSTOM_C,
 	S_KART_LEFTOVER_PARTICLE_CUSTOM_D,
 	S_KART_LEFTOVER_PARTICLE_CUSTOM_E,
+	S_KART_LEFTOVER_PARTICLE_CUSTOM_F,
 	S_KART_LEFTOVER_PARTICLE_CUSTOM_G,
 	S_KART_LEFTOVER_PARTICLE_CUSTOM_H,
 	S_KART_LEFTOVER_PARTICLE_CUSTOM_I,
diff --git a/src/objects/destroyed-kart.cpp b/src/objects/destroyed-kart.cpp
index 850baa331..20c5a9a09 100644
--- a/src/objects/destroyed-kart.cpp
+++ b/src/objects/destroyed-kart.cpp
@@ -334,7 +334,7 @@ struct Kart : Mobj
 		Mobj* p = player();
 		bool pValid = Mobj::valid(p) && p->player;
 		int pSkin = pValid ? p->player->skin : -1; //rip lyman lineface :-1
-		bool hasCustomHusk = pSkin >=0 && pSkin < numskins && skins[pSkin].sprites[SPR2_DKRT].numframes;
+		bool hasCustomHusk = pSkin >=0 && pSkin < numskins && skins[pSkin].sprites[SPR2_DKRF].numframes;
 
 		if(hasCustomHusk)
 		{
@@ -352,7 +352,7 @@ struct Kart : Mobj
 		}
 
 		health = 1;
-		state(!hasCustomHusk ? S_KART_LEFTOVER_NOTIRES : S_KART_LEFTOVER_CUSTOM);
+		state(!hasCustomHusk ? S_KART_LEFTOVER_NOTIRES : S_KART_LEFTOVER_PARTICLE_CUSTOM_F);
 		cooldown(20);
 		burning(burn_duration());
 
-- 
GitLab