From 0bf6619481ea3f14c43ad8cd676f834195f4edf7 Mon Sep 17 00:00:00 2001 From: NepDisk Date: Wed, 26 Feb 2025 08:35:56 -0500 Subject: [PATCH] MF_SOLID and MF_PUSHABLE exception --- src/k_kart.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index 82171b27b..ce13b1154 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -1747,6 +1747,25 @@ fixed_t K_GetMobjWeight(mobj_t *mobj, mobj_t *against) return weight; } +static boolean K_JustBumpedException(mobj_t *mobj) +{ + switch (mobj->type) + { + case MT_WALLSPIKE: + return true; + default: + break; + } + + if (mobj->flags & MF_PUSHABLE) + return true; + + if (!mobj->player && mobj->flags & MF_SOLID) + return true; + + return false; +} + boolean K_KartBouncing(mobj_t *mobj1, mobj_t *mobj2, boolean bounce, boolean solid) { mobj_t *fx; @@ -1794,13 +1813,13 @@ boolean K_KartBouncing(mobj_t *mobj1, mobj_t *mobj2, boolean bounce, boolean sol // Don't bump if you've recently bumped - if (mobj1->player && mobj1->player->justbumped) + if (mobj1->player && mobj1->player->justbumped && !K_JustBumpedException(mobj2)) { mobj1->player->justbumped = bumptime; return false; } - if (mobj2->player && mobj2->player->justbumped) + if (mobj2->player && mobj2->player->justbumped && !K_JustBumpedException(mobj1)) { mobj2->player->justbumped = bumptime; return false;