diff --git a/src/k_collide.cpp b/src/k_collide.cpp index 0948b3be1..3d503077f 100644 --- a/src/k_collide.cpp +++ b/src/k_collide.cpp @@ -851,9 +851,6 @@ boolean K_BubbleShieldReflect(mobj_t *t1, mobj_t *t2) boolean K_BubbleShieldCollide(mobj_t *t1, mobj_t *t2) { - if (K_TryPickMeUp(t1, t2)) - return true; - if (t2->type == MT_PLAYER) { // Counter desyncs diff --git a/src/k_hud_track.cpp b/src/k_hud_track.cpp index 488340360..129112e37 100644 --- a/src/k_hud_track.cpp +++ b/src/k_hud_track.cpp @@ -288,6 +288,7 @@ private: case MT_BANANA: case MT_BANANA_SHIELD: case MT_GACHABOM: + case MT_BUBBLESHIELDTRAP: return { { // Near {2, TICRATE/2, {kp_pickmeup}, 0}, // 1P @@ -405,6 +406,7 @@ bool is_object_tracking_target(const mobj_t* mobj) case MT_BANANA: case MT_BANANA_SHIELD: case MT_GACHABOM: + case MT_BUBBLESHIELDTRAP: return (mobj->target && !P_MobjWasRemoved(mobj->target) && ( (mobj->target->player && stplyr == mobj->target->player) || (mobj->target->player && G_SameTeam(stplyr, mobj->target->player)) @@ -908,6 +910,7 @@ void K_drawTargetHUD(const vector3_t* origin, player_t* player) case MT_BANANA: case MT_BANANA_SHIELD: case MT_GACHABOM: + case MT_BUBBLESHIELDTRAP: if (stplyr->mo->eflags & MFE_VERTICALFLIP) { pos.z -= itemOffset; diff --git a/src/k_kart.c b/src/k_kart.c index c88104ed1..b5d879180 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -15547,6 +15547,9 @@ static void K_PickUp(player_t *player, mobj_t *picked) case MT_GACHABOM: type = KITEM_GACHABOM; break; + case MT_BUBBLESHIELDTRAP: + type = KITEM_BUBBLESHIELD; + break; default: type = KITEM_SAD; break; diff --git a/src/p_inter.c b/src/p_inter.c index b15bf8dab..fd30df42a 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -667,6 +667,9 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) if (!player->mo || player->spectator) return; + if (K_TryPickMeUp(special, toucher)) + return; + // attach to player! P_SetTarget(&special->tracer, toucher); toucher->flags |= MF_NOGRAVITY;