diff --git a/src/g_game.c b/src/g_game.c index d9a4eb195..e9249f005 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -2744,6 +2744,7 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps) INT32 previtemroulette; INT32 roulettetype; INT32 growshrinktimer; + UINT8 bubblehealth; INT32 bumper; INT32 karmapoints; INT32 wanted; @@ -2812,6 +2813,7 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps) itemtype = 0; itemamount = 0; growshrinktimer = 0; + bubblehealth = 0; bumper = ((gametyperules & GTR_BUMPERS) ? K_StartingBumperCount() : 0); karmapoints = 0; wanted = 0; @@ -2867,6 +2869,14 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps) else growshrinktimer = 0; + // deplete your item stack if you died with zero bubble health + bubblehealth = players[player].bubblehealth; + if (bubblehealth == 0 && itemtype == KITEM_BUBBLESHIELD && itemamount > 0) + { + if (--itemamount == 0) + itemtype = 0; + } + bumper = players[player].bumper; karmapoints = players[player].karmapoints; wanted = players[player].wanted; @@ -3001,6 +3011,7 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps) p->itemtype = itemtype; p->itemamount = itemamount; p->growshrinktimer = growshrinktimer; + p->bubblehealth = bubblehealth; p->bumper = bumper; p->karmadelay = comebacktime; p->karmapoints = karmapoints; diff --git a/src/k_kart.c b/src/k_kart.c index e9266797e..a525f0ed0 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -10763,7 +10763,8 @@ void K_MoveKartPlayer(player_t *player, boolean onground) P_SetTarget(&shield->target, player->mo); P_SetTarget(&player->shieldtracer, shield); S_StartSound(player->mo, sfx_s3k3f); - player->bubblehealth = MAXBUBBLEHEALTH; + if (player->bubblehealth <= 0 || player->bubblehealth > MAXBUBBLEHEALTH) + player->bubblehealth = MAXBUBBLEHEALTH; } if (!HOLDING_ITEM && NO_HYUDORO)