Merge branch 'squish-that-kart' into 'master'

More squish tweaks

See merge request KartKrew/Kart!485
This commit is contained in:
James R 2021-12-10 07:57:33 +00:00
commit ca76754248

View file

@ -4545,13 +4545,18 @@ void K_DriftDustHandling(mobj_t *spawner)
void K_Squish(mobj_t *mo) void K_Squish(mobj_t *mo)
{ {
const fixed_t maxstretch = 4*FRACUNIT; const fixed_t maxstretch = 4*FRACUNIT;
const fixed_t factor = 3 * mo->height / 2; const fixed_t factor = 5 * mo->height / 4;
const fixed_t threshold = factor / 6; const fixed_t threshold = factor / 6;
const fixed_t old3dspeed = abs(mo->lastmomz); fixed_t old3dspeed = abs(mo->lastmomz);
const fixed_t new3dspeed = abs(mo->momz); fixed_t new3dspeed = abs(mo->momz);
const fixed_t delta = abs(old3dspeed - new3dspeed); fixed_t delta = abs(old3dspeed - new3dspeed);
fixed_t grav = mo->height/3;
fixed_t add = abs(grav - new3dspeed);
if (delta < 2 * add && new3dspeed > grav)
delta += add;
if (delta > threshold) if (delta > threshold)
{ {
@ -4561,7 +4566,7 @@ void K_Squish(mobj_t *mo)
if (mo->spritexscale > maxstretch) if (mo->spritexscale > maxstretch)
mo->spritexscale = maxstretch; mo->spritexscale = maxstretch;
if (abs(new3dspeed) > abs(old3dspeed)) if (new3dspeed > old3dspeed || new3dspeed > grav)
{ {
mo->spritexscale = mo->spritexscale =
FixedDiv(FRACUNIT, mo->spritexscale); FixedDiv(FRACUNIT, mo->spritexscale);
@ -4571,7 +4576,7 @@ void K_Squish(mobj_t *mo)
{ {
mo->spritexscale -= mo->spritexscale -=
(mo->spritexscale - FRACUNIT) (mo->spritexscale - FRACUNIT)
/ (mo->spritexscale < FRACUNIT ? 8 : 2); / (mo->spritexscale < FRACUNIT ? 8 : 3);
} }
mo->spriteyscale = mo->spriteyscale =