diff --git a/src/k_kart.c b/src/k_kart.c index c00e34f9..351f387d 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -368,7 +368,7 @@ static INT32 K_KartItemOddsRace[NUMKARTRESULTS][9] = //P-Odds 0 1 2 3 4 5 6 7 8 /*Sneaker*/ {20, 0, 0, 3, 7, 6, 0, 0, 0 }, // Sneaker /*Rocket Sneaker*/ { 0, 0, 0, 0, 0, 3, 5, 4, 0 }, // Rocket Sneaker - /*Invincibility*/ { 0, 0, 0, 0, 0, 1, 6, 9,18 }, // Invincibility + /*Invincibility*/ { 0, 0, 0, 0, 0, 1, 6, 9,16 }, // Invincibility /*Banana*/ { 0, 9, 4, 2, 1, 0, 0, 0, 0 }, // Banana /*Eggman Monitor*/ { 0, 4, 2, 1, 0, 0, 0, 0, 0 }, // Eggman Monitor /*Orbinaut*/ { 0, 6, 4, 3, 2, 0, 0, 0, 0 }, // Orbinaut @@ -377,7 +377,7 @@ static INT32 K_KartItemOddsRace[NUMKARTRESULTS][9] = /*Ballhog*/ { 0, 0, 1, 2, 1, 0, 0, 0, 0 }, // Ballhog /*Self-Propelled Bomb*/ { 0, 0, 1, 2, 4, 3, 1, 0, 0 }, // Self-Propelled Bomb /*Grow*/ { 0, 0, 0, 0, 0, 0, 1, 1, 2 }, // Grow - /*Shrink*/ { 0, 0, 0, 0, 0, 0, 1, 2, 0 }, // Shrink + /*Shrink*/ { 0, 0, 0, 0, 0, 0, 1, 2, 2 }, // Shrink /*Lightning Shield*/ { 0, 1, 2, 0, 0, 0, 0, 0, 0 }, // Lightning Shield /*Hyudoro*/ { 0, 0, 2, 2, 1, 0, 0, 0, 0 }, // Hyudoro /*Pogo Spring*/ { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // Pogo Spring @@ -2850,7 +2850,7 @@ static void K_KartUpdatePosition(player_t *player) // // K_StripItems // -static void K_StripItems(player_t *player) +void K_StripItems(player_t *player) { player->kartstuff[k_itemtype] = 0; player->kartstuff[k_itemamount] = 0; @@ -2858,14 +2858,19 @@ static void K_StripItems(player_t *player) player->kartstuff[k_itemroulette] = 0; player->kartstuff[k_roulettetype] = 0; + + player->kartstuff[k_rocketsneakertimer] = 0; + player->kartstuff[k_invincibilitytimer] = 0; + player->kartstuff[k_growshrinktimer] = 0; + + player->kartstuff[k_eggmanheld] = 0; + player->kartstuff[k_hyudorotimer] = 0; player->kartstuff[k_stealingtimer] = 0; player->kartstuff[k_stolentimer] = 0; - player->kartstuff[k_rocketsneakertimer] = 0; - player->kartstuff[k_growshrinktimer] = 0; + player->kartstuff[k_attractiontimer] = 0; - player->kartstuff[k_invincibilitytimer] = 0; - player->kartstuff[k_eggmanheld] = 0; + player->kartstuff[k_sadtimer] = 0; } diff --git a/src/k_kart.h b/src/k_kart.h index 081d0fc0..be455b0f 100644 --- a/src/k_kart.h +++ b/src/k_kart.h @@ -36,6 +36,7 @@ void K_DoSneaker(player_t *player, boolean doPFlag); void K_DoPogoSpring(mobj_t *mo, fixed_t vertispeed); boolean K_CheckPlayersRespawnColliding(INT32 playernum, fixed_t x, fixed_t y); INT16 K_GetKartTurnValue(player_t *player, INT16 turnvalue); +void K_StripItems(player_t *player); void K_MomentumToFacing(player_t *player); fixed_t K_GetKartSpeed(player_t *player, boolean doboostpower); fixed_t K_GetKartAccel(player_t *player); diff --git a/src/p_inter.c b/src/p_inter.c index 37920f2e..e8e0b0cc 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -161,7 +161,7 @@ boolean P_CanPickupItem(player_t *player, boolean weapon) if (weapon) { if (player->kartstuff[k_stealingtimer] || player->kartstuff[k_stolentimer] - || player->kartstuff[k_growshrinktimer] > 1 || player->kartstuff[k_rocketsneakertimer]) // Item-specific timer going off + || player->kartstuff[k_growshrinktimer] != 0 || player->kartstuff[k_rocketsneakertimer]) // Item-specific timer going off return false; if (player->kartstuff[k_itemroulette] @@ -3119,7 +3119,22 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da // Start shrinking! player->mo->scalespeed = FRACUNIT/TICRATE; player->mo->destscale = 6*(mapheaderinfo[gamemap-1]->mobj_scale)/8; - player->kartstuff[k_growshrinktimer] -= (100+20*(16-(player->kartstuff[k_position]))); + + // Wipeout + player->kartstuff[k_spinouttype] = 1; + K_SpinPlayer(player, source); + damage = player->mo->health - 1; + P_RingDamage(player, inflictor, source, damage); + P_PlayerRingBurst(player, 5); + player->mo->momx = player->mo->momy = 0; + if (P_IsLocalPlayer(player)) + { + quake.intensity = 32*FRACUNIT; + quake.time = 5; + } + + K_StripItems(player); + player->kartstuff[k_growshrinktimer] -= (200+(40*(16-player->kartstuff[k_position]))); } // Grow? Let's take that away. if (player->kartstuff[k_growshrinktimer] > 0)