mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-03-23 03:12:38 +00:00
Hardcode the boss thinker function
This commit is contained in:
parent
9e26d7bdaa
commit
289a412377
1 changed files with 44 additions and 0 deletions
44
src/p_mobj.c
44
src/p_mobj.c
|
@ -5013,6 +5013,47 @@ static void P_Boss4Thinker(mobj_t *mobj)
|
|||
A_FaceTarget(mobj);
|
||||
}
|
||||
|
||||
//
|
||||
// AI for the fifth boss.
|
||||
//
|
||||
static void P_Boss5Thinker(mobj_t *mobj)
|
||||
{
|
||||
if (!mobj->health)
|
||||
{
|
||||
if (mobj->state == &states[mobj->info->xdeathstate])
|
||||
mobj->momz -= (2*FRACUNIT)/3;
|
||||
else if (mobj->tracer && P_AproxDistance(mobj->tracer->x - mobj->x, mobj->tracer->y - mobj->y) < 2*mobj->radius)
|
||||
mobj->flags &= ~MF_NOCLIP;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (mobj->flags2 & MF2_FRET && (leveltime & 1)
|
||||
&& mobj->state != &states[S_FANG_PAIN1] && mobj->state != &states[S_FANG_PAIN2])
|
||||
mobj->flags2 |= MF2_DONTDRAW;
|
||||
else
|
||||
mobj->flags2 &= ~MF2_DONTDRAW;
|
||||
}
|
||||
|
||||
if (mobj->state == &states[S_FANG_BOUNCE3]
|
||||
|| mobj->state == &states[S_FANG_BOUNCE4]
|
||||
|| mobj->state == &states[S_FANG_PINCHBOUNCE3]
|
||||
|| mobj->state == &states[S_FANG_PINCHBOUNCE4])
|
||||
{
|
||||
if (P_MobjFlip(mobj)*mobj->momz > 0
|
||||
&& abs(mobj->momx) < FRACUNIT/2 && abs(mobj->momy) < FRACUNIT/2
|
||||
&& !P_IsObjectOnGround(mobj))
|
||||
{
|
||||
mobj_t *prevtarget = mobj->target;
|
||||
P_SetTarget(&mobj->target, NULL);
|
||||
var1 = var2 = 0;
|
||||
A_DoNPCPain(mobj);
|
||||
P_SetTarget(&mobj->target, prevtarget);
|
||||
P_SetMobjState(mobj, S_FANG_WALLHIT);
|
||||
mobj->extravalue2++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// AI for Black Eggman
|
||||
// Note: You CANNOT have more than ONE Black Eggman
|
||||
|
@ -7378,6 +7419,9 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
case MT_EGGMOBILE4:
|
||||
P_Boss4Thinker(mobj);
|
||||
break;
|
||||
case MT_FANG:
|
||||
P_Boss5Thinker(mobj);
|
||||
break;
|
||||
case MT_BLACKEGGMAN:
|
||||
P_Boss7Thinker(mobj);
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue