diff --git a/src/k_kart.c b/src/k_kart.c
index 15bb2f35ef6fae97b19f7f719eac9f0cef9b6e34..c3c3840b5a62d19968daea567dd8e7eda6733b81 100644
--- a/src/k_kart.c
+++ b/src/k_kart.c
@@ -13635,6 +13635,16 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
 
 				boolean cantrick = true;
 				UINT16 buttons = player->cmd.buttons;
+				INT16 TRICKTHRESHOLD = 2*KART_FULLTURN/3;
+
+				// 2.3 - aimingcompare
+				if (!!G_CompatLevel(0x000C))
+				{
+					TRICKTHRESHOLD = KART_FULLTURN/2;
+					INT16 aimingcompare = abs(cmd->throwdir) - abs(cmd->turning);
+					if (abs(aimingcompare) < TRICKTHRESHOLD)
+						cantrick = false;
+				}
 
 				// 2.2 - Pre-steering trickpanels
 				if (!G_CompatLevel(0x000A) && !K_PlayerUsesBotMovement(player))
@@ -13651,7 +13661,6 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
 				}
 
 				// Uses cmd->turning over steering intentionally.
-#define TRICKTHRESHOLD (2*KART_FULLTURN/3)
 				if (cantrick && abs(cmd->turning) > TRICKTHRESHOLD) // side trick
 				{
 					S_StartSoundAtVolume(player->mo, sfx_trick0, 255/2);
@@ -13743,7 +13752,6 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
 						P_SetPlayerMobjState(player->mo, S_KART_FAST);
 					}
 				}
-#undef TRICKTHRESHOLD
 
 				// Finalise everything.
 				if (player->trickpanel != TRICKSTATE_READY) // just changed from 1?