Shrink buffed HEAVILY
It now does its job properly: repairing races when there is one straggler far in the back. - Wipeout instead of spinout, to prevent cheap deaths - Lose all of your items when you get shrunk. - You cannot pick up any items while shrunk. - x2 duration. - Appears in the very back, with 10% chance.
This commit is contained in:
parent
35eb978c69
commit
8bb6cc6c19
19
src/k_kart.c
19
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
|
//P-Odds 0 1 2 3 4 5 6 7 8
|
||||||
/*Sneaker*/ {20, 0, 0, 3, 7, 6, 0, 0, 0 }, // Sneaker
|
/*Sneaker*/ {20, 0, 0, 3, 7, 6, 0, 0, 0 }, // Sneaker
|
||||||
/*Rocket Sneaker*/ { 0, 0, 0, 0, 0, 3, 5, 4, 0 }, // Rocket 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
|
/*Banana*/ { 0, 9, 4, 2, 1, 0, 0, 0, 0 }, // Banana
|
||||||
/*Eggman Monitor*/ { 0, 4, 2, 1, 0, 0, 0, 0, 0 }, // Eggman Monitor
|
/*Eggman Monitor*/ { 0, 4, 2, 1, 0, 0, 0, 0, 0 }, // Eggman Monitor
|
||||||
/*Orbinaut*/ { 0, 6, 4, 3, 2, 0, 0, 0, 0 }, // Orbinaut
|
/*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
|
/*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
|
/*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
|
/*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
|
/*Lightning Shield*/ { 0, 1, 2, 0, 0, 0, 0, 0, 0 }, // Lightning Shield
|
||||||
/*Hyudoro*/ { 0, 0, 2, 2, 1, 0, 0, 0, 0 }, // Hyudoro
|
/*Hyudoro*/ { 0, 0, 2, 2, 1, 0, 0, 0, 0 }, // Hyudoro
|
||||||
/*Pogo Spring*/ { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // Pogo Spring
|
/*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
|
// K_StripItems
|
||||||
//
|
//
|
||||||
static void K_StripItems(player_t *player)
|
void K_StripItems(player_t *player)
|
||||||
{
|
{
|
||||||
player->kartstuff[k_itemtype] = 0;
|
player->kartstuff[k_itemtype] = 0;
|
||||||
player->kartstuff[k_itemamount] = 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_itemroulette] = 0;
|
||||||
player->kartstuff[k_roulettetype] = 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_hyudorotimer] = 0;
|
||||||
player->kartstuff[k_stealingtimer] = 0;
|
player->kartstuff[k_stealingtimer] = 0;
|
||||||
player->kartstuff[k_stolentimer] = 0;
|
player->kartstuff[k_stolentimer] = 0;
|
||||||
player->kartstuff[k_rocketsneakertimer] = 0;
|
|
||||||
player->kartstuff[k_growshrinktimer] = 0;
|
|
||||||
player->kartstuff[k_attractiontimer] = 0;
|
player->kartstuff[k_attractiontimer] = 0;
|
||||||
player->kartstuff[k_invincibilitytimer] = 0;
|
|
||||||
player->kartstuff[k_eggmanheld] = 0;
|
|
||||||
player->kartstuff[k_sadtimer] = 0;
|
player->kartstuff[k_sadtimer] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,7 @@ void K_DoSneaker(player_t *player, boolean doPFlag);
|
||||||
void K_DoPogoSpring(mobj_t *mo, fixed_t vertispeed);
|
void K_DoPogoSpring(mobj_t *mo, fixed_t vertispeed);
|
||||||
boolean K_CheckPlayersRespawnColliding(INT32 playernum, fixed_t x, fixed_t y);
|
boolean K_CheckPlayersRespawnColliding(INT32 playernum, fixed_t x, fixed_t y);
|
||||||
INT16 K_GetKartTurnValue(player_t *player, INT16 turnvalue);
|
INT16 K_GetKartTurnValue(player_t *player, INT16 turnvalue);
|
||||||
|
void K_StripItems(player_t *player);
|
||||||
void K_MomentumToFacing(player_t *player);
|
void K_MomentumToFacing(player_t *player);
|
||||||
fixed_t K_GetKartSpeed(player_t *player, boolean doboostpower);
|
fixed_t K_GetKartSpeed(player_t *player, boolean doboostpower);
|
||||||
fixed_t K_GetKartAccel(player_t *player);
|
fixed_t K_GetKartAccel(player_t *player);
|
||||||
|
|
|
@ -161,7 +161,7 @@ boolean P_CanPickupItem(player_t *player, boolean weapon)
|
||||||
if (weapon)
|
if (weapon)
|
||||||
{
|
{
|
||||||
if (player->kartstuff[k_stealingtimer] || player->kartstuff[k_stolentimer]
|
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;
|
return false;
|
||||||
|
|
||||||
if (player->kartstuff[k_itemroulette]
|
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!
|
// Start shrinking!
|
||||||
player->mo->scalespeed = FRACUNIT/TICRATE;
|
player->mo->scalespeed = FRACUNIT/TICRATE;
|
||||||
player->mo->destscale = 6*(mapheaderinfo[gamemap-1]->mobj_scale)/8;
|
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.
|
// Grow? Let's take that away.
|
||||||
if (player->kartstuff[k_growshrinktimer] > 0)
|
if (player->kartstuff[k_growshrinktimer] > 0)
|
||||||
|
|
Loading…
Reference in a new issue