From fcfaf1321ceca8b850633c8b71abe2d0ea80982a Mon Sep 17 00:00:00 2001 From: toaster Date: Fri, 17 Mar 2023 21:31:50 +0000 Subject: [PATCH] Flame shield polish - MT_FLAMESHIELD: Flicker dispoffset depending on whether frame is supposed to be behind or in front of player - MT_FLAMESHILEDUNDERLAY: Use P_SpawnMobjFromMobj to match interpolation coordintes, any other relevant properties, etc --- src/p_mobj.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/p_mobj.c b/src/p_mobj.c index f56f4f731..a020137a1 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -8226,6 +8226,8 @@ static boolean P_MobjRegularThink(mobj_t *mobj) if (mobj->target->player->flamedash) { + mobj->dispoffset = 1; + if (!(curstate >= S_FLAMESHIELDDASH1 && curstate <= S_FLAMESHIELDDASH12)) P_SetMobjState(mobj, S_FLAMESHIELDDASH1); @@ -8267,6 +8269,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) { if (curstate >= S_FLAMESHIELDDASH1 && curstate <= S_FLAMESHIELDDASH12) P_SetMobjState(mobj, S_FLAMESHIELD1); + mobj->dispoffset = ((curstate - S_FLAMESHIELD1) & 1) ? -1 : 1; } mobj->extravalue1 = mobj->target->player->flamedash; @@ -8291,8 +8294,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) if (underlayst != S_NULL) { - mobj_t *underlay = P_SpawnMobj(mobj->target->x, mobj->target->y, mobj->target->z, MT_FLAMESHIELDUNDERLAY); - underlay->angle = mobj->angle; + mobj_t *underlay = P_SpawnMobjFromMobj(mobj, 0, 0, 0, MT_FLAMESHIELDUNDERLAY); P_SetMobjState(underlay, underlayst); } break;