From c5bd4d6ecd41f79047cfaccdaffb2e0536492cda Mon Sep 17 00:00:00 2001 From: James R Date: Fri, 5 Jul 2019 20:11:38 -0700 Subject: [PATCH 1/3] Apply P_MobjFlip to ring and ring sparkle animations --- src/p_enemy.c | 4 ++-- src/p_mobj.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/p_enemy.c b/src/p_enemy.c index 7baca2adc..047df4f70 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -3601,7 +3601,7 @@ void A_AttractChase(mobj_t *actor) { fixed_t offz = FixedMul(80*actor->target->scale, FINESINE(FixedAngle((90 - (9 * abs(10 - actor->extravalue1))) << FRACBITS) >> ANGLETOFINESHIFT)); //P_SetScale(actor, (actor->destscale = actor->target->scale)); - P_TeleportMove(actor, actor->target->x, actor->target->y, actor->target->z + actor->target->height + offz); + P_TeleportMove(actor, actor->target->x, actor->target->y, actor->target->z + ( actor->target->height + offz )* P_MobjFlip(actor)); actor->extravalue1++; } } @@ -3631,7 +3631,7 @@ void A_AttractChase(mobj_t *actor) P_TeleportMove(actor, actor->target->x + FixedMul(dist, FINECOSINE(actor->angle >> ANGLETOFINESHIFT)), actor->target->y + FixedMul(dist, FINESINE(actor->angle >> ANGLETOFINESHIFT)), - actor->target->z + (24 * actor->target->scale)); + actor->target->z + (24 * actor->target->scale) * P_MobjFlip(actor)); actor->angle += ANG30; actor->extravalue1++; diff --git a/src/p_mobj.c b/src/p_mobj.c index 9919b2266..7ac144836 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -8349,7 +8349,7 @@ void P_MobjThinker(mobj_t *mobj) K_MatchGenericExtraFlags(mobj, mobj->target); P_TeleportMove(mobj, mobj->target->x + FINECOSINE(mobj->angle >> ANGLETOFINESHIFT), mobj->target->y + FINESINE(mobj->angle >> ANGLETOFINESHIFT), - mobj->target->z + mobj->target->height); + mobj->target->z + mobj->target->height * P_MobjFlip(mobj)); break; case MT_THUNDERSHIELD: { From 7354ce200ecb5d2bf557dae77f4691a5c0524d6d Mon Sep 17 00:00:00 2001 From: James R Date: Fri, 12 Jul 2019 13:28:25 -0700 Subject: [PATCH 2/3] Correct reverse gravity offsets Woah reverse gravity sucks. --- src/p_enemy.c | 16 ++++++++++++++-- src/p_mobj.c | 9 ++++++++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/p_enemy.c b/src/p_enemy.c index 047df4f70..10bfb4d52 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -3558,6 +3558,8 @@ void A_BubbleCheck(mobj_t *actor) // void A_AttractChase(mobj_t *actor) { + fixed_t z; + #ifdef HAVE_BLUA if (LUA_CallAction("A_AttractChase", actor)) return; @@ -3601,7 +3603,12 @@ void A_AttractChase(mobj_t *actor) { fixed_t offz = FixedMul(80*actor->target->scale, FINESINE(FixedAngle((90 - (9 * abs(10 - actor->extravalue1))) << FRACBITS) >> ANGLETOFINESHIFT)); //P_SetScale(actor, (actor->destscale = actor->target->scale)); - P_TeleportMove(actor, actor->target->x, actor->target->y, actor->target->z + ( actor->target->height + offz )* P_MobjFlip(actor)); + z = actor->target->z; + if (( actor->eflags & MFE_VERTICALFLIP )) + z -= actor->height + offz; + else + z += actor->target->height + offz; + P_TeleportMove(actor, actor->target->x, actor->target->y, z); actor->extravalue1++; } } @@ -3628,10 +3635,15 @@ void A_AttractChase(mobj_t *actor) fixed_t dist = (actor->target->radius/4) * (16 - actor->extravalue1); P_SetScale(actor, (actor->destscale = actor->target->scale - ((actor->target->scale/14) * actor->extravalue1))); + z = actor->target->z; + if (( actor->eflags & MFE_VERTICALFLIP )) + z += actor->target->height - actor->height - 24 * actor->target->scale; + else + z += 24 * actor->target->scale; P_TeleportMove(actor, actor->target->x + FixedMul(dist, FINECOSINE(actor->angle >> ANGLETOFINESHIFT)), actor->target->y + FixedMul(dist, FINESINE(actor->angle >> ANGLETOFINESHIFT)), - actor->target->z + (24 * actor->target->scale) * P_MobjFlip(actor)); + z); actor->angle += ANG30; actor->extravalue1++; diff --git a/src/p_mobj.c b/src/p_mobj.c index 7ac144836..da2b07e64 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -6372,6 +6372,8 @@ static void P_KoopaThinker(mobj_t *koopa) // void P_MobjThinker(mobj_t *mobj) { + fixed_t z; + I_Assert(mobj != NULL); I_Assert(!P_MobjWasRemoved(mobj)); @@ -8347,9 +8349,14 @@ void P_MobjThinker(mobj_t *mobj) } K_MatchGenericExtraFlags(mobj, mobj->target); + z = mobj->target->z; + if (( mobj->eflags & MFE_VERTICALFLIP )) + z -= mobj->height; + else + z += mobj->target->height; P_TeleportMove(mobj, mobj->target->x + FINECOSINE(mobj->angle >> ANGLETOFINESHIFT), mobj->target->y + FINESINE(mobj->angle >> ANGLETOFINESHIFT), - mobj->target->z + mobj->target->height * P_MobjFlip(mobj)); + z); break; case MT_THUNDERSHIELD: { From d82e86d4cd4e12c30b07fbbacfe63b1d187d1ae8 Mon Sep 17 00:00:00 2001 From: James R Date: Tue, 16 Jul 2019 20:06:26 -0700 Subject: [PATCH 3/3] Declare z in scope under case --- src/p_mobj.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/p_mobj.c b/src/p_mobj.c index da2b07e64..970829812 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -6372,8 +6372,6 @@ static void P_KoopaThinker(mobj_t *koopa) // void P_MobjThinker(mobj_t *mobj) { - fixed_t z; - I_Assert(mobj != NULL); I_Assert(!P_MobjWasRemoved(mobj)); @@ -8349,14 +8347,17 @@ void P_MobjThinker(mobj_t *mobj) } K_MatchGenericExtraFlags(mobj, mobj->target); - z = mobj->target->z; - if (( mobj->eflags & MFE_VERTICALFLIP )) - z -= mobj->height; - else - z += mobj->target->height; - P_TeleportMove(mobj, mobj->target->x + FINECOSINE(mobj->angle >> ANGLETOFINESHIFT), - mobj->target->y + FINESINE(mobj->angle >> ANGLETOFINESHIFT), - z); + { + fixed_t z; + z = mobj->target->z; + if (( mobj->eflags & MFE_VERTICALFLIP )) + z -= mobj->height; + else + z += mobj->target->height; + P_TeleportMove(mobj, mobj->target->x + FINECOSINE(mobj->angle >> ANGLETOFINESHIFT), + mobj->target->y + FINESINE(mobj->angle >> ANGLETOFINESHIFT), + z); + } break; case MT_THUNDERSHIELD: {