Use old waterskipping code for accuracy
This commit is contained in:
parent
2788d699d4
commit
4f9f23f75c
3 changed files with 6 additions and 30 deletions
23
src/k_kart.c
23
src/k_kart.c
|
|
@ -2695,11 +2695,6 @@ boolean K_TripwirePass(player_t *player)
|
|||
return (player->tripwirePass != TRIPWIRE_NONE);
|
||||
}
|
||||
|
||||
boolean K_MovingHorizontally(player_t *player)
|
||||
{
|
||||
return (player->speed/3 > abs(player->mo->momz));
|
||||
}
|
||||
|
||||
boolean K_WaterRun(player_t *player)
|
||||
{
|
||||
if (player->waterrun)
|
||||
|
|
@ -2707,24 +2702,6 @@ boolean K_WaterRun(player_t *player)
|
|||
return false;
|
||||
}
|
||||
|
||||
boolean K_WaterSkip(player_t *player)
|
||||
{
|
||||
if (player->waterskip > 2)
|
||||
{
|
||||
// Already finished waterskipping.
|
||||
return false;
|
||||
}
|
||||
|
||||
if (player->waterskip > 0)
|
||||
{
|
||||
// Already waterskipping.
|
||||
// Simply make sure you haven't slowed down drastically.
|
||||
return (K_GetKartSpeed(player,false,true)/3);
|
||||
}
|
||||
|
||||
return K_MovingHorizontally(player);
|
||||
}
|
||||
|
||||
static fixed_t K_FlameShieldDashVar(INT32 val)
|
||||
{
|
||||
// 1 second = 75% + 50% top speed
|
||||
|
|
|
|||
|
|
@ -107,9 +107,7 @@ boolean K_SlopeResistance(player_t *player);
|
|||
fixed_t K_PlayerTripwireSpeedThreshold(player_t *player);
|
||||
tripwirepass_t K_TripwirePassConditions(player_t *player);
|
||||
boolean K_TripwirePass(player_t *player);
|
||||
boolean K_MovingHorizontally(player_t *player);
|
||||
boolean K_WaterRun(player_t *player);
|
||||
boolean K_WaterSkip(player_t *player);
|
||||
void K_SquishPlayer(player_t *player, mobj_t *inflictor, mobj_t *source);
|
||||
void K_ApplyTripWire(player_t *player, tripwirestate_t state);
|
||||
fixed_t K_GetKartSpeedFromStat(UINT8 kartspeed);
|
||||
|
|
|
|||
11
src/p_mobj.c
11
src/p_mobj.c
|
|
@ -3355,17 +3355,18 @@ void P_MobjCheckWater(mobj_t *mobj)
|
|||
P_SetScale(splish, mobj->scale);
|
||||
|
||||
// skipping stone!
|
||||
if (K_WaterSkip(p) == true && ((!(mobj->eflags & MFE_VERTICALFLIP) && thingtop - mobj->momz > mobj->watertop)
|
||||
|| ((mobj->eflags & MFE_VERTICALFLIP) && mobj->z - mobj->momz < mobj->waterbottom)))
|
||||
if (p && p->waterskip < 2
|
||||
&& ((p->speed/3 > abs(mobj->momz)) // Going more forward than horizontal, so you can skip across the water.
|
||||
|| (p->speed > K_GetKartSpeed(p,false,true)/3 && p->waterskip)) // Already skipped once, so you can skip once more!
|
||||
&& ((!(mobj->eflags & MFE_VERTICALFLIP) && thingtop - mobj->momz > mobj->watertop)
|
||||
|| ((mobj->eflags & MFE_VERTICALFLIP) && mobj->z - mobj->momz < mobj->waterbottom)))
|
||||
{
|
||||
|
||||
const fixed_t min = 6<<FRACBITS;
|
||||
//const fixed_t max = 8<<FRACBITS;
|
||||
|
||||
mobj->momx = mobj->momx/2;
|
||||
mobj->momy = mobj->momy/2;
|
||||
mobj->momz = -mobj->momz/2;
|
||||
|
||||
|
||||
if (!(mobj->eflags & MFE_VERTICALFLIP) && mobj->momz < FixedMul(min, mobj->scale))
|
||||
mobj->momz = FixedMul(min, mobj->scale);
|
||||
else if (mobj->eflags & MFE_VERTICALFLIP && mobj->momz > FixedMul(-min, mobj->scale))
|
||||
|
|
|
|||
Loading…
Reference in a new issue