From 762ee92c06cf801343aa3f9f817fbe5ef6a70fda Mon Sep 17 00:00:00 2001 From: Sally Coolatta Date: Sat, 25 Dec 2021 03:53:55 -0500 Subject: [PATCH] Purple spark electricity UNCAPPED --- src/k_kart.c | 3 +++ src/p_mobj.c | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/k_kart.c b/src/k_kart.c index d13ee39c7..ca32c6f6d 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -3975,6 +3975,9 @@ static void K_SpawnDriftElectricity(player_t *player) + P_ReturnThrustY(mo, horizonatalangle, horizontalradius); spark = P_SpawnMobjFromMobj(mo, x, y, 0, MT_DRIFTELECTRICITY); P_InitAngle(spark, sparkangle); + spark->momx = mo->momx; + spark->momy = mo->momy; + spark->momz = mo->momz; spark->color = color; K_GenericExtraFlagsNoZAdjust(spark, mo); diff --git a/src/p_mobj.c b/src/p_mobj.c index 886c0eaa1..57034ebe0 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -13155,6 +13155,17 @@ mobj_t *P_SpawnMobjFromMobj(mobj_t *mobj, fixed_t xofs, fixed_t yofs, fixed_t zo newmobj->z = mobj->z + mobj->height - zofs - newmobj->height; } + // EXPERIMENT: Let all objects set their interp values relative to their owner's old values. + // This will hopefully create a lot less mobj-specific spawn cases, + // but if there's any weird scenarios feel free to remove again. + newmobj->old_x = mobj->old_x + xofs; + newmobj->old_y = mobj->old_y + yofs; + newmobj->old_z = mobj->old_z + zofs; + /* + newmobj->angle = mobj->angle; + newmobj->old_angle = mobj->old_angle; + */ + return newmobj; } @@ -13171,6 +13182,14 @@ fixed_t P_GetMobjHead(const mobj_t *mobj) fixed_t P_GetMobjFeet(const mobj_t *mobj) { + /* + | | + | | + /--\------/ | + | | + ----------------- + */ + return P_IsObjectFlipped(mobj) ? mobj->z + mobj->height : mobj->z; }