mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-12-31 04:02:37 +00:00
Low water gravity only applies going up
This commit is contained in:
parent
b99e75c298
commit
347b9bfc5c
1 changed files with 23 additions and 7 deletions
30
src/p_mobj.c
30
src/p_mobj.c
|
|
@ -1248,29 +1248,38 @@ fixed_t P_GetMobjGravity(mobj_t *mo)
|
|||
}
|
||||
|
||||
// Less gravity underwater.
|
||||
if (mo->eflags & MFE_UNDERWATER && !goopgravity)
|
||||
if ((mo->eflags & MFE_UNDERWATER) && !goopgravity && mo->momz > 0)
|
||||
{
|
||||
gravityadd = gravityadd/3;
|
||||
}
|
||||
|
||||
if (mo->player)
|
||||
{
|
||||
//if ((mo->player->pflags & PF_GLIDING)
|
||||
//|| (mo->player->charability == CA_FLY && (mo->player->powers[pw_tailsfly]
|
||||
// || (mo->state >= &states[S_PLAY_SPC1] && mo->state <= &states[S_PLAY_SPC4]))))
|
||||
// gravityadd = gravityadd/3; // less gravity while flying/gliding
|
||||
if (mo->player->climbing || (mo->player->pflags & PF_NIGHTSMODE))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!(mo->flags2 & MF2_OBJECTFLIP) != !(mo->player->powers[pw_gravityboots])) // negated to turn numeric into bool - would be double negated, but not needed if both would be
|
||||
{
|
||||
gravityadd = -gravityadd;
|
||||
mo->eflags ^= MFE_VERTICALFLIP;
|
||||
}
|
||||
|
||||
if (wasflip == !(mo->eflags & MFE_VERTICALFLIP)) // note!! == ! is not equivalent to != here - turns numeric into bool this way
|
||||
{
|
||||
P_PlayerFlip(mo);
|
||||
}
|
||||
|
||||
if (mo->player->kartstuff[k_pogospring])
|
||||
{
|
||||
gravityadd = (5*gravityadd)/2;
|
||||
}
|
||||
|
||||
if (mo->player->kartstuff[k_waterskip])
|
||||
{
|
||||
gravityadd = (4*gravityadd)/3;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -1278,10 +1287,15 @@ fixed_t P_GetMobjGravity(mobj_t *mo)
|
|||
if (mo->flags2 & MF2_OBJECTFLIP)
|
||||
{
|
||||
mo->eflags |= MFE_VERTICALFLIP;
|
||||
|
||||
if (mo->z + mo->height >= mo->ceilingz)
|
||||
{
|
||||
gravityadd = 0;
|
||||
}
|
||||
else if (gravityadd < 0) // Don't sink, only rise up
|
||||
gravityadd *= -1;
|
||||
{
|
||||
gravityadd = -gravityadd;
|
||||
}
|
||||
}
|
||||
else //Otherwise, sort through the other exceptions.
|
||||
{
|
||||
|
|
@ -1316,7 +1330,7 @@ fixed_t P_GetMobjGravity(mobj_t *mo)
|
|||
}
|
||||
break;
|
||||
case MT_WATERDROP:
|
||||
gravityadd >>= 1;
|
||||
gravityadd /= 2;
|
||||
break;
|
||||
case MT_BANANA:
|
||||
case MT_EGGMANITEM:
|
||||
|
|
@ -1341,7 +1355,9 @@ fixed_t P_GetMobjGravity(mobj_t *mo)
|
|||
|
||||
// Goop has slower, reversed gravity
|
||||
if (goopgravity)
|
||||
{
|
||||
gravityadd = -gravityadd/5;
|
||||
}
|
||||
|
||||
gravityadd = FixedMul(gravityadd, mo->scale);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue