Hardcode A_DoNPCSkid

This commit is contained in:
Monster Iestyn 2019-05-03 20:00:31 +01:00
parent b4d8c2fa29
commit b03bfbabe4
3 changed files with 54 additions and 0 deletions

View File

@ -2225,6 +2225,7 @@ static actionpointer_t actionpointers[] =
{{A_ParentTriesToSleep}, "A_PARENTTRIESTOSLEEP"},
{{A_CryingToMomma}, "A_CRYINGTOMOMMA"},
{{A_CheckFlags2}, "A_CHECKFLAGS2"},
{{A_DoNPCSkid}, "A_DONPCSKID"},
{{A_DoNPCPain}, "A_DONPCPAIN"},
{{A_PrepareRepeat}, "A_PREPAREREPEAT"},
{{A_Boss5ExtraRepeat}, "A_BOSS5EXTRAREPEAT"},

View File

@ -239,6 +239,7 @@ void A_WhoCaresIfYourSonIsABee();
void A_ParentTriesToSleep();
void A_CryingToMomma();
void A_CheckFlags2();
void A_DoNPCSkid();
void A_DoNPCPain();
void A_PrepareRepeat();
void A_Boss5ExtraRepeat();

View File

@ -266,6 +266,7 @@ void A_WhoCaresIfYourSonIsABee(mobj_t *actor);
void A_ParentTriesToSleep(mobj_t *actor);
void A_CryingToMomma(mobj_t *actor);
void A_CheckFlags2(mobj_t *actor);
void A_DoNPCSkid(mobj_t *actor);
void A_DoNPCPain(mobj_t *actor);
void A_PrepareRepeat(mobj_t *actor);
void A_Boss5ExtraRepeat(mobj_t *actor);
@ -11861,6 +11862,57 @@ void A_CheckFlags2(mobj_t *actor)
P_SetMobjState(actor, (statenum_t)locvar2);
}
// Function: A_DoNPCSkid
//
// Description: Something that looks like a player is skidding.
//
// var1 = state to change to upon being slow enough
// var2 = minimum speed
//
void A_DoNPCSkid(mobj_t *actor)
{
INT32 locvar1 = var1;
INT32 locvar2 = var2;
fixed_t x, y, z;
#ifdef HAVE_BLUA
if (LUA_CallAction("A_DoNPCSkid", actor))
return;
#endif
x = actor->x;
y = actor->y;
z = actor->y;
if (!locvar2)
locvar2 = FRACUNIT/2;
if ((FixedHypot(actor->momx, actor->momy) < locvar2)
|| !P_TryMove(actor, actor->x + actor->momx, actor->y + actor->momy, false))
{
actor->momx = actor->momy = 0;
P_SetMobjState(actor, locvar1);
return;
}
else
{
actor->momx = (2*actor->momx)/3;
actor->momy = (2*actor->momy)/3;
}
P_TeleportMove(actor, x, y, z);
// Spawn a particle every 3 tics.
if (!(leveltime % 3))
{
mobj_t *particle = P_SpawnMobjFromMobj(actor, 0, 0, 0, MT_SPINDUST);
particle->tics = 10;
P_SetScale(particle, 2*actor->scale/3);
particle->destscale = actor->scale;
P_SetObjectMomZ(particle, FRACUNIT, false);
}
}
// Function: A_DoNPCPain
//
// Description: Something that looks like a player was hit, put them in pain.