Grow cancel

Needs item table changes to make it less OP
This commit is contained in:
Sally Cochenour 2019-02-21 17:04:58 -05:00
parent 09c3fd4329
commit a6dd439e99
3 changed files with 29 additions and 3 deletions

View File

@ -354,6 +354,7 @@ typedef enum
k_getsparks, // Disable drift sparks at low speed, JUST enough to give acceleration the actual headstart above speed
k_jawztargetdelay, // Delay for Jawz target switching, to make it less twitchy
k_spectatewait, // How long have you been waiting as a spectator
k_growcancel, // Hold the item button down to cancel Grow
NUMKARTSTUFF
} kartstufftype_t;

View File

@ -8335,7 +8335,8 @@ static const char *const KARTSTUFF_LIST[] = {
"ITEMBLINKMODE",
"GETSPARKS",
"JAWZTARGETDELAY",
"SPECTATEWAIT"
"SPECTATEWAIT",
"GROWCANCEL"
};
static const char *const HUDITEMS_LIST[] = {

View File

@ -1991,6 +1991,7 @@ void K_SpinPlayer(player_t *player, mobj_t *source, INT32 type, mobj_t *inflicto
static void K_RemoveGrowShrink(player_t *player)
{
player->kartstuff[k_growshrinktimer] = 0;
player->kartstuff[k_growcancel] = 0;
if (player->kartstuff[k_invincibilitytimer] == 0)
player->mo->color = player->skincolor;
player->mo->scalespeed = mapobjectscale/TICRATE;
@ -5093,6 +5094,18 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
if (player->kartstuff[k_rocketsneakertimer] < 1)
player->kartstuff[k_rocketsneakertimer] = 1;
}
// Grow Canceling
else if (player->kartstuff[k_growshrinktimer] > 0)
{
if (cmd->buttons & BT_ATTACK)
{
player->kartstuff[k_growcancel]++;
if (player->kartstuff[k_growcancel] > 26)
K_RemoveGrowShrink(player);
}
else
player->kartstuff[k_growcancel] = 0;
}
else if (player->kartstuff[k_itemamount] <= 0)
{
player->kartstuff[k_itemamount] = player->kartstuff[k_itemheld] = 0;
@ -5449,6 +5462,9 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
if (player->kartstuff[k_itemtype] != KITEM_THUNDERSHIELD)
player->kartstuff[k_curshield] = 0;
if (player->kartstuff[k_growshrinktimer] <= 0)
player->kartstuff[k_growcancel] = 0;
if (player->kartstuff[k_itemtype] == KITEM_SPB
|| player->kartstuff[k_itemtype] == KITEM_SHRINK
|| player->kartstuff[k_growshrinktimer] < 0)
@ -6510,6 +6526,8 @@ static void K_drawKartItem(void)
//INT32 splitflags = K_calcSplitFlags(V_SNAPTOTOP|V_SNAPTOLEFT);
const INT32 numberdisplaymin = ((!offset && stplyr->kartstuff[k_itemtype] == KITEM_ORBINAUT) ? 5 : 2);
INT32 itembar = 0;
INT32 maxl = 0; // itembar's normal highest value
const INT32 barlength = (splitscreen > 1 ? 12 : 26);
UINT8 localcolor = SKINCOLOR_NONE;
SINT8 colormode = TC_RAINBOW;
UINT8 *colmap = NULL;
@ -6618,6 +6636,8 @@ static void K_drawKartItem(void)
else if (stplyr->kartstuff[k_rocketsneakertimer] > 1)
{
itembar = stplyr->kartstuff[k_rocketsneakertimer];
maxl = (itemtime*3) - barlength;
if (leveltime & 1)
localpatch = kp_rocketsneaker[offset];
else
@ -6625,6 +6645,12 @@ static void K_drawKartItem(void)
}
else if (stplyr->kartstuff[k_growshrinktimer] > 0)
{
if (stplyr->kartstuff[k_growcancel])
{
itembar = stplyr->kartstuff[k_growcancel];
maxl = 26;
}
if (leveltime & 1)
localpatch = kp_grow[offset];
else
@ -6776,8 +6802,6 @@ static void K_drawKartItem(void)
// Extensible meter, currently only used for rocket sneaker...
if (itembar && hudtrans)
{
const INT32 barlength = (splitscreen > 1 ? 12 : 26);
const INT32 maxl = (itemtime*3) - barlength; // timer's normal highest value
const INT32 fill = ((itembar*barlength)/maxl);
const INT32 length = min(barlength, fill);
const INT32 height = (offset ? 1 : 2);