Merge branch 'trick-threshold' into 'master'

Trick threshold

See merge request KartKrew/Kart!599
This commit is contained in:
Sal 2022-05-24 06:48:59 +00:00
commit 5c2477348a

View file

@ -10224,38 +10224,26 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
else if (!(player->pflags & PF_TRICKDELAY)) // don't allow tricking at the same frame you tumble obv
{
// "COOL" timing n shit.
if (cmd->turning || player->throwdir)
{
if (abs(momz) < FRACUNIT*99) // Let's use that as baseline for PERFECT trick.
{
player->karthud[khud_trickcool] = TICRATE;
}
}
INT16 aimingcompare = abs(cmd->throwdir) - abs(cmd->turning);
// Uses cmd->turning over steering intentionally.
#define TRICKTHRESHOLD (KART_FULLTURN/4)
if (aimingcompare < -TRICKTHRESHOLD) // side trick
{
if (cmd->turning > 0)
{
P_InstaThrust(player->mo, player->mo->angle + lr, max(basespeed, speed*5/2));
player->trickpanel = 2;
player->mo->hitlag = TRICKLAG;
player->mo->eflags &= ~MFE_DAMAGEHITLAG;
K_trickPanelTimingVisual(player, momz);
}
else if (cmd->turning < 0)
else
{
P_InstaThrust(player->mo, player->mo->angle - lr, max(basespeed, speed*5/2));
player->trickpanel = 3;
player->mo->hitlag = TRICKLAG;
player->mo->eflags &= ~MFE_DAMAGEHITLAG;
K_trickPanelTimingVisual(player, momz);
}
else if (cmd->throwdir > 0)
}
else if (aimingcompare > TRICKTHRESHOLD) // forward/back trick
{
if (cmd->throwdir > 0) // back trick
{
if (player->mo->momz * P_MobjFlip(player->mo) > 0)
{
@ -10264,11 +10252,6 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
P_InstaThrust(player->mo, player->mo->angle, max(basespeed, speed*3));
player->trickpanel = 2;
player->mo->hitlag = TRICKLAG;
player->mo->eflags &= ~MFE_DAMAGEHITLAG;
K_trickPanelTimingVisual(player, momz);
}
else if (cmd->throwdir < 0)
{
@ -10290,11 +10273,22 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
P_SetObjectMomZ(player->mo, 48*FRACUNIT, relative);
player->trickpanel = 4;
}
}
#undef TRICKTHRESHOLD
// Finalise everything.
if (player->trickpanel != 1) // just changed from 1?
{
player->mo->hitlag = TRICKLAG;
player->mo->eflags &= ~MFE_DAMAGEHITLAG;
K_trickPanelTimingVisual(player, momz);
if (abs(momz) < FRACUNIT*99) // Let's use that as baseline for PERFECT trick.
{
player->karthud[khud_trickcool] = TICRATE;
}
}
}
}