Pick-me-up review fixups

This commit is contained in:
Antonio Martinez 2025-05-18 08:00:58 -04:00
parent 1009996ba4
commit fc6eb792f3

View file

@ -8362,7 +8362,7 @@ static void K_TryMoveBackupItem(player_t *player)
S_StartSound(player->mo, sfx_mbs54); 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->itemtype = player->backupitemtype;
player->itemamount = player->backupitemamount; player->itemamount = player->backupitemamount;
@ -15511,7 +15511,7 @@ UINT32 K_GetNumGradingPoints(void)
return numlaps * (1 + Obj_GetCheckpointCount()); 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 type = -1;
SINT8 amount = 1; SINT8 amount = 1;
@ -15550,11 +15550,17 @@ static void K_PickUp(player_t *player, mobj_t *picked)
case MT_BUBBLESHIELDTRAP: case MT_BUBBLESHIELDTRAP:
type = KITEM_BUBBLESHIELD; type = KITEM_BUBBLESHIELD;
break; break;
case MT_SINK:
type = KITEM_KITCHENSINK;
break;
default: default:
type = KITEM_SAD; type = KITEM_SAD;
break; break;
} }
if (type == KITEM_SAD)
return false;
// CONS_Printf("it %d ia %d t %d a %d\n", player->itemtype, player->itemamount, type, amount); // 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)) 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); S_StartSound(player->mo, sfx_aple);
K_TryMoveBackupItem(player); K_TryMoveBackupItem(player);
return true;
} }
// ACHTUNG this destroys items when returning true, make sure to bail out // 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"); // CONS_Printf("target check passed\n");
K_AddHitLag(victim, 3, false); if (!K_PickUp(victim->player, inflictor))
K_PickUp(victim->player, inflictor); return false;
K_AddHitLag(victim, 3, false);
P_RemoveMobj(inflictor); P_RemoveMobj(inflictor);
return true; return true;