Made the flicky turning-around-when-hitting-walls work better and not take up another struct variable which a user of A_FlickyCheck might not want taken.
This commit is contained in:
parent
f8d37e5df7
commit
21b316e9a4
|
@ -2266,9 +2266,9 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_FL03, 0, 2, {A_FlickyCheck}, S_FLICKY_03_AIM, S_FLICKY_03_FLAP1, S_FLICKY_03_OUT}, // S_FLICKY_03_OUT
|
{SPR_FL03, 0, 2, {A_FlickyCheck}, S_FLICKY_03_AIM, S_FLICKY_03_FLAP1, S_FLICKY_03_OUT}, // S_FLICKY_03_OUT
|
||||||
{SPR_FL03, 1, 1, {A_FlickyAim}, ANGLE_45, 32*FRACUNIT, S_FLICKY_03_HOP}, // S_FLICKY_03_AIM
|
{SPR_FL03, 1, 1, {A_FlickyAim}, ANGLE_45, 32*FRACUNIT, S_FLICKY_03_HOP}, // S_FLICKY_03_AIM
|
||||||
{SPR_FL03, 1, 1, {A_FlickyHop}, 7*FRACUNIT, 2*FRACUNIT, S_FLICKY_03_UP}, // S_FLICKY_03_HOP
|
{SPR_FL03, 1, 1, {A_FlickyHop}, 7*FRACUNIT, 2*FRACUNIT, S_FLICKY_03_UP}, // S_FLICKY_03_HOP
|
||||||
{SPR_FL03, 2, 2, {A_FlickyFlutter}, S_FLICKY_03_AIM, S_FLICKY_03_FLAP1, S_FLICKY_03_UP}, // S_FLICKY_03_UP
|
{SPR_FL03, 2, 2, {A_FlickyFlutter}, S_FLICKY_03_HOP, S_FLICKY_03_FLAP1, S_FLICKY_03_UP}, // S_FLICKY_03_UP
|
||||||
{SPR_FL03, 3, 2, {A_FlickyFlutter}, S_FLICKY_03_AIM, 0, S_FLICKY_03_FLAP2}, // S_FLICKY_03_FLAP1
|
{SPR_FL03, 3, 2, {A_FlickyFlutter}, S_FLICKY_03_HOP, 0, S_FLICKY_03_FLAP2}, // S_FLICKY_03_FLAP1
|
||||||
{SPR_FL03, 4, 2, {A_FlickyFlutter}, S_FLICKY_03_AIM, 0, S_FLICKY_03_FLAP1}, // S_FLICKY_03_FLAP2
|
{SPR_FL03, 4, 2, {A_FlickyFlutter}, S_FLICKY_03_HOP, 0, S_FLICKY_03_FLAP1}, // S_FLICKY_03_FLAP2
|
||||||
|
|
||||||
// Seal
|
// Seal
|
||||||
{SPR_FL04, 0, 2, {A_FlickyCheck}, S_FLICKY_04_AIM, 0, S_FLICKY_04_OUT}, // S_FLICKY_04_OUT
|
{SPR_FL04, 0, 2, {A_FlickyCheck}, S_FLICKY_04_AIM, 0, S_FLICKY_04_OUT}, // S_FLICKY_04_OUT
|
||||||
|
|
|
@ -10419,8 +10419,6 @@ void A_FlickySpawn(mobj_t *actor)
|
||||||
P_InternalFlickySpawn(actor, locvar1, ((locvar2) ? locvar2 : 8*FRACUNIT), true);
|
P_InternalFlickySpawn(actor, locvar1, ((locvar2) ? locvar2 : 8*FRACUNIT), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define FLICKYHITWALL if (actor->momx == actor->momy && actor->momy == 0) actor->threshold = 1;
|
|
||||||
|
|
||||||
// Internal Flicky bubbling function.
|
// Internal Flicky bubbling function.
|
||||||
void P_InternalFlickyBubble(mobj_t *actor)
|
void P_InternalFlickyBubble(mobj_t *actor)
|
||||||
{
|
{
|
||||||
|
@ -10456,10 +10454,16 @@ void A_FlickyAim(mobj_t *actor)
|
||||||
{
|
{
|
||||||
INT32 locvar1 = var1;
|
INT32 locvar1 = var1;
|
||||||
INT32 locvar2 = var2;
|
INT32 locvar2 = var2;
|
||||||
|
boolean flickyhitwall = false;
|
||||||
|
|
||||||
#ifdef HAVE_BLUA
|
#ifdef HAVE_BLUA
|
||||||
if (LUA_CallAction("A_FlickyAim", actor))
|
if (LUA_CallAction("A_FlickyAim", actor))
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (actor->momx == actor->momy && actor->momy == 0)
|
||||||
|
flickyhitwall = true;
|
||||||
|
|
||||||
P_InternalFlickyBubble(actor);
|
P_InternalFlickyBubble(actor);
|
||||||
P_InstaThrust(actor, 0, 0);
|
P_InstaThrust(actor, 0, 0);
|
||||||
|
|
||||||
|
@ -10475,11 +10479,8 @@ void A_FlickyAim(mobj_t *actor)
|
||||||
angle_t posvar;
|
angle_t posvar;
|
||||||
fixed_t chasevar, chasex, chasey;
|
fixed_t chasevar, chasex, chasey;
|
||||||
|
|
||||||
if (actor->threshold)
|
if (flickyhitwall)
|
||||||
{
|
|
||||||
actor->movedir *= -1;
|
actor->movedir *= -1;
|
||||||
actor->threshold = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
posvar = ((R_PointToAngle2(actor->target->x, actor->target->y, actor->x, actor->y) + actor->movedir*locvar1) >> ANGLETOFINESHIFT) & FINEMASK;
|
posvar = ((R_PointToAngle2(actor->target->x, actor->target->y, actor->x, actor->y) + actor->movedir*locvar1) >> ANGLETOFINESHIFT) & FINEMASK;
|
||||||
chasevar = FixedSqrt(max(FRACUNIT, P_AproxDistance(actor->target->x - actor->x, actor->target->y - actor->y) - locvar2)) + locvar2;
|
chasevar = FixedSqrt(max(FRACUNIT, P_AproxDistance(actor->target->x - actor->x, actor->target->y - actor->y) - locvar2)) + locvar2;
|
||||||
|
@ -10490,7 +10491,7 @@ void A_FlickyAim(mobj_t *actor)
|
||||||
if (P_AproxDistance(chasex - actor->x, chasey - actor->y))
|
if (P_AproxDistance(chasex - actor->x, chasey - actor->y))
|
||||||
actor->angle = R_PointToAngle2(actor->x, actor->y, chasex, chasey);
|
actor->angle = R_PointToAngle2(actor->x, actor->y, chasex, chasey);
|
||||||
}
|
}
|
||||||
else if (actor->threshold)
|
else if (flickyhitwall)
|
||||||
{
|
{
|
||||||
actor->angle += ANGLE_180;
|
actor->angle += ANGLE_180;
|
||||||
actor->threshold = 0;
|
actor->threshold = 0;
|
||||||
|
@ -10505,8 +10506,6 @@ void P_InternalFlickyFly(mobj_t *actor, fixed_t flyspeed, fixed_t targetdist, fi
|
||||||
flyspeed = FixedMul(flyspeed, actor->scale);
|
flyspeed = FixedMul(flyspeed, actor->scale);
|
||||||
actor->flags |= MF_NOGRAVITY;
|
actor->flags |= MF_NOGRAVITY;
|
||||||
|
|
||||||
FLICKYHITWALL
|
|
||||||
|
|
||||||
var1 = ANG30;
|
var1 = ANG30;
|
||||||
var2 = 32*FRACUNIT;
|
var2 = 32*FRACUNIT;
|
||||||
A_FlickyAim(actor);
|
A_FlickyAim(actor);
|
||||||
|
@ -10598,8 +10597,6 @@ void A_FlickyCoast(mobj_t *actor)
|
||||||
#endif
|
#endif
|
||||||
if (actor->eflags & MFE_UNDERWATER)
|
if (actor->eflags & MFE_UNDERWATER)
|
||||||
{
|
{
|
||||||
FLICKYHITWALL
|
|
||||||
|
|
||||||
actor->momx = (11*actor->momx)/12;
|
actor->momx = (11*actor->momx)/12;
|
||||||
actor->momy = (11*actor->momy)/12;
|
actor->momy = (11*actor->momy)/12;
|
||||||
actor->momz = (11*actor->momz)/12;
|
actor->momz = (11*actor->momz)/12;
|
||||||
|
@ -10687,9 +10684,6 @@ void A_FlickyCheck(mobj_t *actor)
|
||||||
if (LUA_CallAction("A_FlickyCheck", actor))
|
if (LUA_CallAction("A_FlickyCheck", actor))
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
FLICKYHITWALL
|
|
||||||
|
|
||||||
if (locvar2 && P_MobjFlip(actor)*actor->momz < 1)
|
if (locvar2 && P_MobjFlip(actor)*actor->momz < 1)
|
||||||
P_SetMobjState(actor, locvar2);
|
P_SetMobjState(actor, locvar2);
|
||||||
else if (locvar1 && ((!(actor->eflags & MFE_VERTICALFLIP) && actor->z <= actor->floorz)
|
else if (locvar1 && ((!(actor->eflags & MFE_VERTICALFLIP) && actor->z <= actor->floorz)
|
||||||
|
@ -10715,9 +10709,6 @@ void A_FlickyHeightCheck(mobj_t *actor)
|
||||||
if (LUA_CallAction("A_FlickyHeightCheck", actor))
|
if (LUA_CallAction("A_FlickyHeightCheck", actor))
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
FLICKYHITWALL
|
|
||||||
|
|
||||||
if (locvar1 && actor->target && P_MobjFlip(actor)*actor->momz < 1
|
if (locvar1 && actor->target && P_MobjFlip(actor)*actor->momz < 1
|
||||||
&& ((P_MobjFlip(actor)*((actor->z + actor->height/2) - (actor->target->z + actor->target->height/2)) < locvar2)
|
&& ((P_MobjFlip(actor)*((actor->z + actor->height/2) - (actor->target->z + actor->target->height/2)) < locvar2)
|
||||||
|| (actor->z - actor->height < actor->floorz) || (actor->z + 2*actor->height > actor->ceilingz)))
|
|| (actor->z - actor->height < actor->floorz) || (actor->z + 2*actor->height > actor->ceilingz)))
|
||||||
|
|
Loading…
Reference in a new issue