Cleanup and fix shield item stacks

This commit is contained in:
GenericHeroGuy 2025-10-13 00:17:13 +02:00
parent 9ddeabc55b
commit 614e3f650c

View file

@ -5336,7 +5336,6 @@ static void K_BreakBubbleShield(player_t* player)
void K_PopPlayerShield(player_t *player) void K_PopPlayerShield(player_t *player)
{ {
INT32 shield = K_GetShieldFromPlayer(player); INT32 shield = K_GetShieldFromPlayer(player);
boolean isbubble = false;
// Doesn't apply if player is invalid. // Doesn't apply if player is invalid.
if (player->mo == NULL || P_MobjWasRemoved(player->mo)) if (player->mo == NULL || P_MobjWasRemoved(player->mo))
@ -5348,33 +5347,29 @@ void K_PopPlayerShield(player_t *player)
{ {
case KSHIELD_THUNDER: case KSHIELD_THUNDER:
K_DoThunderShield(player); K_DoThunderShield(player);
player->itemtype = KITEM_NONE;
player->itemamount = 0;
break; break;
case KSHIELD_BUBBLE: case KSHIELD_BUBBLE:
isbubble = true; if (player->bubblehealth > 0)
K_BreakBubbleShield(player); // Nice whiff; see ya!
player->bubbleblowup = 0;
player->bubblecool = 0;
player->bubblehealth = 0;
if (player->itemamount > 0)
if (--player->itemamount == 0)
player->itemtype = KITEM_NONE;
break; break;
case KSHIELD_FLAME: case KSHIELD_FLAME:
S_StartSound(player->mo, sfx_s3k47); S_StartSound(player->mo, sfx_s3k47);
S_StopSoundByID(player->mo, sfx_s3kc2l);
player->flametimer = 0;
break; break;
} }
if ((isbubble) && (player->bubblehealth > 0))
{
// Nice whiff; see ya!
K_BreakBubbleShield(player);
}
player->curshield = KSHIELD_NONE; player->curshield = KSHIELD_NONE;
player->itemtype = KITEM_NONE;
player->itemamount = 0;
player->flametimer = 0;
//player->flamestore = 0
//player->flamedash = 0;
player->bubbleblowup = 0;
player->bubblecool = 0;
player->bubblehealth = 0;
K_UnsetItemOut(player); K_UnsetItemOut(player);
} }
@ -7369,27 +7364,18 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
if (player->flamestore) if (player->flamestore)
{ {
player->flamestore--; if (--player->flamestore == 0)
if (player->flametimer == 0 || player->flamestore == 0)
{
S_StopSoundByID(player->mo, sfx_s3kc2l); S_StopSoundByID(player->mo, sfx_s3kc2l);
}
} }
if (player->flametimer > 0) if (player->flametimer > 0)
{ {
if (player->stealingtimer == 0 && player->stolentimer == 0) if (player->stealingtimer == 0 && player->stolentimer == 0)
{ {
if (player->flametimer == 1)
K_PopPlayerShield(player);
player->flametimer--; player->flametimer--;
} }
if (player->flametimer == 0)
{
S_StopSoundByID(player->mo, sfx_s3kc2l);
S_StartSound(player->mo, sfx_s3k47);
K_PopPlayerShield(player);
}
} }
else else
{ {
@ -10268,8 +10254,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
if (player->flametimer <= 0) if (player->flametimer <= 0)
{ {
player->flametimer = 0; player->flametimer = 1;
S_StartSound(player->mo, sfx_s3k47);
K_PopPlayerShield(player); K_PopPlayerShield(player);
} }
} }
@ -10688,7 +10673,6 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
P_SetTarget(&player->mo->shieldtracer, shield); P_SetTarget(&player->mo->shieldtracer, shield);
S_StartSound(player->mo, sfx_s3k3f); S_StartSound(player->mo, sfx_s3k3f);
player->curshield = KSHIELD_BUBBLE; player->curshield = KSHIELD_BUBBLE;
player->bubblehealth = MAXBUBBLEHEALTH; player->bubblehealth = MAXBUBBLEHEALTH;
} }
@ -10764,7 +10748,6 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
} }
break; break;
case KITEM_FLAMESHIELD: case KITEM_FLAMESHIELD:
if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO && player->flametimer == 0) if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO && player->flametimer == 0)
{ {
player->itemamount--; player->itemamount--;
@ -10774,7 +10757,6 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
P_SetTarget(&shield->target, player->mo); P_SetTarget(&shield->target, player->mo);
S_StartSound(player->mo, sfx_s3k3e); S_StartSound(player->mo, sfx_s3k3e);
player->curshield = KSHIELD_FLAME; player->curshield = KSHIELD_FLAME;
} }
break; break;
case KITEM_HYUDORO: case KITEM_HYUDORO: