diff --git a/src/objects/checkpoint.cpp b/src/objects/checkpoint.cpp index c0a9dfe83..507d23aa1 100644 --- a/src/objects/checkpoint.cpp +++ b/src/objects/checkpoint.cpp @@ -323,6 +323,11 @@ private: arm()->angle = angle - ANGLE_90; arm()->rollangle = -(ANGLE_90) + pivot(); + + if (arm()->eflags & MFE_VERTICALFLIP) + { + arm()->rollangle = InvAngle(arm()->rollangle); + } } void pull() @@ -337,8 +342,18 @@ private: P_GetMobjHead(this) + (FixedMul(r, FSIN(pivot())) * P_MobjFlip(this)) ); + if (orb()->eflags & MFE_VERTICALFLIP) + { + orb()->z -= orb()->height; + } + P_MoveOrigin(arm(), orb()->x, orb()->y, orb()->z); + if (arm()->eflags & MFE_VERTICALFLIP) + { + arm()->z += orb()->height - arm()->height; + } + if (speed()) { orb()->afterimages(); diff --git a/src/p_mobj.c b/src/p_mobj.c index a7ea49baa..256ab6b60 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -14583,6 +14583,11 @@ static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj) } case MT_CHECKPOINT_END: { + if (mthing->options & MTF_OBJECTFLIP) + { + mobj->eflags |= MFE_VERTICALFLIP; + mobj->flags2 |= MF2_OBJECTFLIP; + } Obj_LinkCheckpoint(mobj); break; }