From fc6eb792f30e69c1dcec3fbaf72f7f48cbc5692b Mon Sep 17 00:00:00 2001 From: Antonio Martinez Date: Sun, 18 May 2025 08:00:58 -0400 Subject: [PATCH] Pick-me-up review fixups --- src/k_kart.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index b5d879180..ffa5e4625 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -8362,7 +8362,7 @@ static void K_TryMoveBackupItem(player_t *player) S_StartSound(player->mo, sfx_mbs54); } - if (player->itemtype == KITEM_NONE && player->backupitemtype && !(player->itemRoulette.active)) + if (player->itemtype == KITEM_NONE && player->backupitemtype && P_CanPickupItem(player, PICKUP_RINGORSPHERE)) { player->itemtype = player->backupitemtype; player->itemamount = player->backupitemamount; @@ -15511,7 +15511,7 @@ UINT32 K_GetNumGradingPoints(void) return numlaps * (1 + Obj_GetCheckpointCount()); } -static void K_PickUp(player_t *player, mobj_t *picked) +static boolean K_PickUp(player_t *player, mobj_t *picked) { SINT8 type = -1; SINT8 amount = 1; @@ -15550,11 +15550,17 @@ static void K_PickUp(player_t *player, mobj_t *picked) case MT_BUBBLESHIELDTRAP: type = KITEM_BUBBLESHIELD; break; + case MT_SINK: + type = KITEM_KITCHENSINK; + break; default: type = KITEM_SAD; break; } + if (type == KITEM_SAD) + return false; + // CONS_Printf("it %d ia %d t %d a %d\n", player->itemtype, player->itemamount, type, amount); if (player->itemtype == type && player->itemamount && !(player->itemflags & IF_ITEMOUT)) @@ -15586,6 +15592,8 @@ static void K_PickUp(player_t *player, mobj_t *picked) S_StartSound(player->mo, sfx_aple); K_TryMoveBackupItem(player); + + return true; } // ACHTUNG this destroys items when returning true, make sure to bail out @@ -15629,8 +15637,10 @@ boolean K_TryPickMeUp(mobj_t *m1, mobj_t *m2) // CONS_Printf("target check passed\n"); - K_AddHitLag(victim, 3, false); - K_PickUp(victim->player, inflictor); + if (!K_PickUp(victim->player, inflictor)) + return false; + + K_AddHitLag(victim, 3, false); P_RemoveMobj(inflictor); return true;