From 7ec0420ce63cba8fd2e0b74467d40cf3a48e6650 Mon Sep 17 00:00:00 2001 From: Eidolon <furyhunter600@gmail.com> Date: Tue, 3 May 2022 15:07:35 -0500 Subject: [PATCH] Adjust spawned mobj z by gravity inversion --- src/p_mobj.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/p_mobj.c b/src/p_mobj.c index dd076acd6f..57442fe64e 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -14084,6 +14084,7 @@ void P_FlashPal(player_t *pl, UINT16 type, UINT16 duration) mobj_t *P_SpawnMobjFromMobj(mobj_t *mobj, fixed_t xofs, fixed_t yofs, fixed_t zofs, mobjtype_t type) { mobj_t *newmobj; + fixed_t elementheight; xofs = FixedMul(xofs, mobj->scale); yofs = FixedMul(yofs, mobj->scale); @@ -14093,24 +14094,31 @@ mobj_t *P_SpawnMobjFromMobj(mobj_t *mobj, fixed_t xofs, fixed_t yofs, fixed_t zo if (!newmobj) return NULL; + elementheight = FixedMul(newmobj->info->height, mobj->scale); + if (mobj->eflags & MFE_VERTICALFLIP) { - fixed_t elementheight = FixedMul(newmobj->info->height, mobj->scale); - newmobj->eflags |= MFE_VERTICALFLIP; newmobj->flags2 |= MF2_OBJECTFLIP; newmobj->z = mobj->z + mobj->height - zofs - elementheight; } + if (mobj->flags2 & MF2_OBJECTFLIP || mobj->eflags & MFE_VERTICALFLIP) + { + newmobj->old_z = mobj->old_z + mobj->height - zofs - elementheight; + newmobj->old_z2 = mobj->old_z2 + mobj->height - zofs - elementheight; + } else { + newmobj->old_z = mobj->old_z; + newmobj->old_z2 = mobj->old_z2; + } + newmobj->destscale = mobj->destscale; P_SetScale(newmobj, mobj->scale); newmobj->old_x2 = mobj->old_x2 + xofs; newmobj->old_y2 = mobj->old_y2 + yofs; - newmobj->old_z2 = mobj->old_z2 + zofs; newmobj->old_x = mobj->old_x + xofs; newmobj->old_y = mobj->old_y + yofs; - newmobj->old_z = mobj->old_z + zofs; // This angle hack is needed for Lua scripts that set the angle after // spawning, to avoid erroneous interpolation. -- GitLab