Add K_GiveBumpersToPlayer, subset of K_TakeBumpersFromPlayer functionality

This commit is contained in:
James R 2023-06-29 18:43:36 -07:00
parent ba114022b9
commit dafdb0fc10
2 changed files with 20 additions and 10 deletions

View file

@ -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);

View file

@ -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);