Merge branch 'jartha/fix-stone-shoe-reverse-grav' into 'master'

Fix Stone Shoe in reverse gravity

See merge request kart-krew-dev/ring-racers-internal!2679
This commit is contained in:
Oni VelocitOni 2025-07-15 03:08:12 +00:00
commit 23b4b83c7c
2 changed files with 10 additions and 3 deletions

View file

@ -230,7 +230,7 @@ private:
if (P_IsObjectOnGround(this)) if (P_IsObjectOnGround(this))
{ {
momz = 32 * mapobjectscale; momz = flip(32 * mapobjectscale);
bouncing(true); bouncing(true);
voice(sfx_s3k5f); voice(sfx_s3k5f);
P_StartQuakeFromMobj(5, 40 * scale(), 512 * scale(), this); P_StartQuakeFromMobj(5, 40 * scale(), 512 * scale(), this);
@ -271,6 +271,11 @@ private:
follow()->player->stonedrag = dist > minDist(); follow()->player->stonedrag = dist > minDist();
sprzoff(30 * scale()); sprzoff(30 * scale());
if (is_flipped() != follow()->is_flipped())
{
K_FlipFromObject(this, follow());
}
} }
void move_chain() void move_chain()
@ -292,6 +297,7 @@ private:
while (Mobj::valid(node)) while (Mobj::valid(node))
{ {
node->move_origin({p, pz}); node->move_origin({p, pz});
K_FlipFromObject(node, this);
node->sprzoff(sprzoff()); node->sprzoff(sprzoff());
// Let chain flicker like shoe does // Let chain flicker like shoe does

View file

@ -1095,7 +1095,7 @@ fixed_t P_GetMobjGravity(mobj_t *mo)
wasflip = (mo->eflags & MFE_VERTICALFLIP) != 0; wasflip = (mo->eflags & MFE_VERTICALFLIP) != 0;
if (mo->type != MT_SPINFIRE) if (mo->type != MT_SPINFIRE && mo->type != MT_STONESHOE)
mo->eflags &= ~MFE_VERTICALFLIP; mo->eflags &= ~MFE_VERTICALFLIP;
if (mo->subsector->sector->ffloors) // Check for 3D floor gravity too. if (mo->subsector->sector->ffloors) // Check for 3D floor gravity too.
@ -1307,7 +1307,7 @@ fixed_t P_GetMobjGravity(mobj_t *mo)
gravityadd *= 2; gravityadd *= 2;
break; break;
case MT_STONESHOE: case MT_STONESHOE:
gravityadd *= 4; gravityadd = -4 * abs(gravityadd) * P_MobjFlip(mo);
break; break;
default: default:
break; break;
@ -15514,6 +15514,7 @@ boolean P_MobjCanChangeFlip(mobj_t *mobj)
case MT_SHRINK_CHAIN: case MT_SHRINK_CHAIN:
case MT_SHRINK_LASER: case MT_SHRINK_LASER:
case MT_SHRINK_PARTICLE: case MT_SHRINK_PARTICLE:
case MT_STONESHOE:
return false; return false;
default: default: