diff --git a/src/g_game.c b/src/g_game.c index cb3122849c49ae6dfe7c54350031ef7bb8c61cff..ac8e27a3759735f1ecb1651b5bb8bcafacad826b 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -2431,7 +2431,10 @@ void G_PlayerReborn(INT32 player) } // Keep Shrink status, remove Grow status - growshrinktimer = min(players[player].kartstuff[k_growshrinktimer], 0); + if (players[player].kartstuff[k_growshrinktimer] < 0) + growshrinktimer = players[player].kartstuff[k_growshrinktimer]; + else + growshrinktimer = 0; bumper = players[player].kartstuff[k_bumper]; comebackpoints = players[player].kartstuff[k_comebackpoints]; diff --git a/src/k_kart.c b/src/k_kart.c index 1adbba8416f782580aa4d6c9e35cad9975b34375..2d315e653e68cd772c6bd984a5732de95318cd29 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -1989,6 +1989,18 @@ void K_SpinPlayer(player_t *player, mobj_t *source, INT32 type, mobj_t *inflicto return; } +static void K_RemoveGrowShrink(player_t *player) +{ + player->kartstuff[k_growshrinktimer] = 0; + if (player->kartstuff[k_invincibilitytimer] == 0) + player->mo->color = player->skincolor; + player->mo->scalespeed = mapheaderinfo[gamemap-1]->mobj_scale/TICRATE; + player->mo->destscale = mapheaderinfo[gamemap-1]->mobj_scale; + if (cv_kartdebugshrink.value && !modeattacking && !player->bot) + player->mo->destscale = 6*player->mo->destscale/8; + P_RestoreMusic(player); +} + void K_SquishPlayer(player_t *player, mobj_t *source, mobj_t *inflictor) { UINT8 scoremultiply = 1; @@ -2081,11 +2093,11 @@ void K_SquishPlayer(player_t *player, mobj_t *source, mobj_t *inflictor) player->kartstuff[k_squishedtimer] = TICRATE; // Reduce Shrink timer - if (player->kartstuff[k_growshrinktimer] < -2) + if (player->kartstuff[k_growshrinktimer] < 0) { player->kartstuff[k_growshrinktimer] += TICRATE; - if (player->kartstuff[k_growshrinktimer] > -2) - player->kartstuff[k_growshrinktimer] = -2; + if (player->kartstuff[k_growshrinktimer] >= 0) + K_RemoveGrowShrink(player); } player->powers[pw_flashing] = K_GetKartFlashing(player); @@ -3277,8 +3289,8 @@ static void K_DoShrink(player_t *user) } // Grow should get taken away. - if (players[i].kartstuff[k_growshrinktimer] > 2) - players[i].kartstuff[k_growshrinktimer] = 2; + if (players[i].kartstuff[k_growshrinktimer] > 0) + K_RemoveGrowShrink(&players[i]); //P_FlashPal(&players[i], PAL_NUKE, 10); S_StartSound(players[i].mo, sfx_kc59); @@ -4309,22 +4321,16 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) if (player->kartstuff[k_invincibilitytimer]) player->kartstuff[k_invincibilitytimer]--; - if (!player->kartstuff[k_respawn]) + if (!player->kartstuff[k_respawn] && player->kartstuff[k_growshrinktimer] != 0) { if (player->kartstuff[k_growshrinktimer] > 0) player->kartstuff[k_growshrinktimer]--; if (player->kartstuff[k_growshrinktimer] < 0) player->kartstuff[k_growshrinktimer]++; - } - if (player->kartstuff[k_growshrinktimer] == 1 || player->kartstuff[k_growshrinktimer] == -1) - { - if (player->kartstuff[k_invincibilitytimer] == 0) - player->mo->color = player->skincolor; - player->mo->destscale = mapheaderinfo[gamemap-1]->mobj_scale; - if (cv_kartdebugshrink.value && !modeattacking && !player->bot) - player->mo->destscale = 6*player->mo->destscale/8; - P_RestoreMusic(player); + // Back to normal + if (player->kartstuff[k_growshrinktimer] == 0) + K_RemoveGrowShrink(player); } if (player->kartstuff[k_stealingtimer] == 0 && player->kartstuff[k_stolentimer] == 0 @@ -4879,10 +4885,7 @@ void K_StripOther(player_t *player) player->kartstuff[k_roulettetype] = 0; player->kartstuff[k_invincibilitytimer] = 0; - if (player->kartstuff[k_growshrinktimer] > 0) - player->kartstuff[k_growshrinktimer] = 2; - else if (player->kartstuff[k_growshrinktimer] < 0) - player->kartstuff[k_growshrinktimer] = -2; + K_RemoveGrowShrink(player); if (player->kartstuff[k_eggmanexplode]) { @@ -5483,6 +5486,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) // Increase your size while charging your engine. if (leveltime < starttime+10) { + player->mo->scalespeed = mapheaderinfo[gamemap-1]->mobj_scale/12; player->mo->destscale = (mapheaderinfo[gamemap-1]->mobj_scale) + (player->kartstuff[k_boostcharge]*131); if (cv_kartdebugshrink.value && !modeattacking && !player->bot) player->mo->destscale = 6*player->mo->destscale/8; @@ -6433,7 +6437,7 @@ static void K_drawKartItem(void) else localpatch = kp_nodraw; } - else if (stplyr->kartstuff[k_growshrinktimer] > 1) + else if (stplyr->kartstuff[k_growshrinktimer] > 0) { if (leveltime & 1) localpatch = kp_grow[offset]; diff --git a/src/p_inter.c b/src/p_inter.c index 7c599016a7f1dcd1607403e66219d1e3e6baca17..fce8ccd56d5267b47dddb6c56abd01092eb97e29 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -131,8 +131,8 @@ boolean P_CanPickupItem(player_t *player, UINT8 weapon) else { // Item-specific timer going off - if (player->kartstuff[k_stealingtimer] || player->kartstuff[k_stolentimer] - || player->kartstuff[k_growshrinktimer] > 0 || player->kartstuff[k_rocketsneakertimer] + if (player->kartstuff[k_stealingtimer] || player->kartstuff[k_stolentimer] + || player->kartstuff[k_growshrinktimer] > 0 || player->kartstuff[k_rocketsneakertimer] || player->kartstuff[k_eggmanexplode]) return false;