From dafdb0fc10bface86011c4a3dff16ca8b1cd09eb Mon Sep 17 00:00:00 2001 From: James R Date: Thu, 29 Jun 2023 18:43:36 -0700 Subject: [PATCH] Add K_GiveBumpersToPlayer, subset of K_TakeBumpersFromPlayer functionality --- src/k_kart.c | 29 +++++++++++++++++++---------- src/k_kart.h | 1 + 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index 0db4a2046..2c1acc0d9 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -4483,19 +4483,12 @@ void K_DebtStingPlayer(player_t *player, mobj_t *source) P_SetPlayerMobjState(player->mo, S_KART_SPINOUT); } -void K_TakeBumpersFromPlayer(player_t *player, player_t *victim, UINT8 amount) +void K_GiveBumpersToPlayer(player_t *player, player_t *victim, UINT8 amount) { const UINT8 oldPlayerBumpers = K_Bumpers(player); UINT8 tookBumpers = 0; - amount = min(amount, K_Bumpers(victim)); - - if (amount == 0) - { - return; - } - while (tookBumpers < amount) { const UINT8 newbumper = (oldPlayerBumpers + tookBumpers); @@ -4521,11 +4514,15 @@ void K_TakeBumpersFromPlayer(player_t *player, player_t *victim, UINT8 amount) newmo = P_SpawnMobj(newx, newy, player->mo->z, MT_BATTLEBUMPER); newmo->threshold = newbumper; - P_SetTarget(&newmo->tracer, victim->mo); + if (victim) + { + P_SetTarget(&newmo->tracer, victim->mo); + } + P_SetTarget(&newmo->target, player->mo); newmo->angle = (diff * (newbumper-1)); - newmo->color = victim->skincolor; + newmo->color = (victim ? victim : player)->skincolor; if (newbumper+1 < 2) { @@ -4545,6 +4542,18 @@ void K_TakeBumpersFromPlayer(player_t *player, player_t *victim, UINT8 amount) // :jartcookiedance: player->mo->health += tookBumpers; +} + +void K_TakeBumpersFromPlayer(player_t *player, player_t *victim, UINT8 amount) +{ + amount = min(amount, K_Bumpers(victim)); + + if (amount == 0) + { + return; + } + + K_GiveBumpersToPlayer(player, victim, amount); // Play steal sound S_StartSound(player->mo, sfx_3db06); diff --git a/src/k_kart.h b/src/k_kart.h index 9c9d876d8..b51e324e1 100644 --- a/src/k_kart.h +++ b/src/k_kart.h @@ -113,6 +113,7 @@ void K_UpdateStumbleIndicator(player_t *player); void K_UpdateSliptideZipIndicator(player_t *player); INT32 K_ExplodePlayer(player_t *player, mobj_t *inflictor, mobj_t *source); void K_DebtStingPlayer(player_t *player, mobj_t *source); +void K_GiveBumpersToPlayer(player_t *player, player_t *victim, UINT8 amount); void K_TakeBumpersFromPlayer(player_t *player, player_t *victim, UINT8 amount); void K_MineFlashScreen(mobj_t *source); void K_SpawnMineExplosion(mobj_t *source, UINT8 color, tic_t delay);