Hardcoded A_Boss5CheckOnGround

This commit is contained in:
Monster Iestyn 2019-05-02 19:09:40 +01:00
parent 3bbc5d0b08
commit fb17c1ac5a
3 changed files with 35 additions and 0 deletions

View File

@ -2226,6 +2226,7 @@ static actionpointer_t actionpointers[] =
{{A_CryingToMomma}, "A_CRYINGTOMOMMA"},
{{A_CheckFlags2}, "A_CHECKFLAGS2"},
{{A_DoNPCPain}, "A_DONPCPAIN"},
{{A_Boss5CheckOnGround}, "A_BOSS5CHECKONGROUND"},
{{NULL}, "NONE"},

View File

@ -240,6 +240,7 @@ void A_ParentTriesToSleep();
void A_CryingToMomma();
void A_CheckFlags2();
void A_DoNPCPain();
void A_Boss5CheckOnGround();
// ratio of states to sprites to mobj types is roughly 6 : 1 : 1
#define NUMMOBJFREESLOTS 256

View File

@ -267,6 +267,7 @@ void A_ParentTriesToSleep(mobj_t *actor);
void A_CryingToMomma(mobj_t *actor);
void A_CheckFlags2(mobj_t *actor);
void A_DoNPCPain(mobj_t *actor);
void A_Boss5CheckOnGround(mobj_t *actor);
//for p_enemy.c
//
@ -11910,3 +11911,35 @@ void A_DoNPCPain(mobj_t *actor)
P_SetObjectMomZ(actor, vspeed, false);
P_InstaThrust(actor, actor->angle, -hspeed);
}
// Function: A_Boss5CheckOnGround
//
// Description: Ground checker.
//
// var1 = state to change to upon hitting ground.
// var2 = state to change to upon hitting ground if health == pinchhealth, assuming it exists
//
void A_Boss5CheckOnGround(mobj_t *actor)
{
INT32 locvar1 = var1;
INT32 locvar2 = var2;
#ifdef HAVE_BLUA
if (LUA_CallAction("A_Boss5CheckOnGround", actor))
return;
#endif
if ((!(actor->eflags & MFE_VERTICALFLIP) && actor->z <= actor->floorz)
|| (actor->eflags & MFE_VERTICALFLIP && actor->z + actor->height >= actor->ceilingz))
{
if (locvar2 && (!actor->health || (actor->health == actor->info->damage && !(actor->flags2 & MF2_STRONGBOX))))
P_SetMobjState(actor, locvar2);
else
P_SetMobjState(actor, locvar1);
}
if (actor->tracer && P_AproxDistance(actor->tracer->x - actor->x, actor->tracer->y - actor->y) < 2*actor->radius)
{
actor->momx = (4*actor->momx)/5;
actor->momy = (4*actor->momy)/5;
}
}