Correct reverse gravity offsets

Woah reverse gravity sucks.
This commit is contained in:
James R 2019-07-12 13:28:25 -07:00
parent c5bd4d6ecd
commit 7354ce200e
2 changed files with 22 additions and 3 deletions

View file

@ -3558,6 +3558,8 @@ void A_BubbleCheck(mobj_t *actor)
// //
void A_AttractChase(mobj_t *actor) void A_AttractChase(mobj_t *actor)
{ {
fixed_t z;
#ifdef HAVE_BLUA #ifdef HAVE_BLUA
if (LUA_CallAction("A_AttractChase", actor)) if (LUA_CallAction("A_AttractChase", actor))
return; 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)); 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_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++; actor->extravalue1++;
} }
} }
@ -3628,10 +3635,15 @@ void A_AttractChase(mobj_t *actor)
fixed_t dist = (actor->target->radius/4) * (16 - actor->extravalue1); fixed_t dist = (actor->target->radius/4) * (16 - actor->extravalue1);
P_SetScale(actor, (actor->destscale = actor->target->scale - ((actor->target->scale/14) * 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, P_TeleportMove(actor,
actor->target->x + FixedMul(dist, FINECOSINE(actor->angle >> ANGLETOFINESHIFT)), actor->target->x + FixedMul(dist, FINECOSINE(actor->angle >> ANGLETOFINESHIFT)),
actor->target->y + FixedMul(dist, FINESINE(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->angle += ANG30;
actor->extravalue1++; actor->extravalue1++;

View file

@ -6372,6 +6372,8 @@ static void P_KoopaThinker(mobj_t *koopa)
// //
void P_MobjThinker(mobj_t *mobj) void P_MobjThinker(mobj_t *mobj)
{ {
fixed_t z;
I_Assert(mobj != NULL); I_Assert(mobj != NULL);
I_Assert(!P_MobjWasRemoved(mobj)); I_Assert(!P_MobjWasRemoved(mobj));
@ -8347,9 +8349,14 @@ void P_MobjThinker(mobj_t *mobj)
} }
K_MatchGenericExtraFlags(mobj, mobj->target); 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), P_TeleportMove(mobj, mobj->target->x + FINECOSINE(mobj->angle >> ANGLETOFINESHIFT),
mobj->target->y + FINESINE(mobj->angle >> ANGLETOFINESHIFT), mobj->target->y + FINESINE(mobj->angle >> ANGLETOFINESHIFT),
mobj->target->z + mobj->target->height * P_MobjFlip(mobj)); z);
break; break;
case MT_THUNDERSHIELD: case MT_THUNDERSHIELD:
{ {