mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-01-30 05:00:46 +00:00
Incorporate linkdraw and ghosts into followmobj.
This commit is contained in:
parent
844416855f
commit
9fa00533b2
1 changed files with 34 additions and 9 deletions
43
src/p_user.c
43
src/p_user.c
|
@ -1553,9 +1553,7 @@ void P_SwitchShield(player_t *player, UINT16 shieldtype)
|
|||
//
|
||||
mobj_t *P_SpawnGhostMobj(mobj_t *mobj)
|
||||
{
|
||||
mobj_t *ghost;
|
||||
|
||||
ghost = P_SpawnMobj(mobj->x, mobj->y, mobj->z, MT_GHOST);
|
||||
mobj_t *ghost = P_SpawnMobj(mobj->x, mobj->y, mobj->z, MT_GHOST);
|
||||
|
||||
P_SetScale(ghost, mobj->scale);
|
||||
ghost->destscale = mobj->scale;
|
||||
|
@ -1581,6 +1579,16 @@ mobj_t *P_SpawnGhostMobj(mobj_t *mobj)
|
|||
if (mobj->flags2 & MF2_OBJECTFLIP)
|
||||
ghost->flags |= MF2_OBJECTFLIP;
|
||||
|
||||
if (mobj->player && mobj->player->followmobj)
|
||||
{
|
||||
// can't do right now - followmobjs update at the end of the frame, so the ghost would be in the wrong position...
|
||||
//mobj->player->followmobj->flags2 |= MF2_BOSSNOTRAP;
|
||||
mobj_t *ghost2 = P_SpawnGhostMobj(mobj->player->followmobj);
|
||||
P_SetTarget(&ghost2->tracer, ghost);
|
||||
P_SetTarget(&ghost->tracer, ghost2);
|
||||
ghost2->flags2 |= MF2_LINKDRAW;
|
||||
}
|
||||
|
||||
return ghost;
|
||||
}
|
||||
|
||||
|
@ -9898,10 +9906,17 @@ void P_PlayerThink(player_t *player)
|
|||
{
|
||||
mobj_t *gmobj = P_SpawnGhostMobj(player->mo);
|
||||
gmobj->fuse = 2;
|
||||
if (gmobj->tracer)
|
||||
gmobj->tracer->fuse = 2;
|
||||
if (leveltime & 1)
|
||||
{
|
||||
gmobj->frame &= ~FF_TRANSMASK;
|
||||
gmobj->frame |= tr_trans70<<FF_TRANSSHIFT;
|
||||
if (gmobj->tracer)
|
||||
{
|
||||
gmobj->tracer->frame &= ~FF_TRANSMASK;
|
||||
gmobj->tracer->frame |= tr_trans70<<FF_TRANSSHIFT;
|
||||
}
|
||||
}
|
||||
|
||||
// Hide the mobj from our sights if we're the displayplayer and chasecam is off,
|
||||
|
@ -10473,21 +10488,31 @@ void P_PlayerAfterThink(player_t *player)
|
|||
if (!player->spectator && player->mo->health && player->followitem)
|
||||
{
|
||||
if (!player->followmobj || P_MobjWasRemoved(player->followmobj))
|
||||
{
|
||||
player->followmobj = P_SpawnMobjFromMobj(player->mo, 0, 0, 0, player->followitem);
|
||||
P_SetTarget(&player->followmobj->tracer, player->mo);
|
||||
player->followmobj->flags2 |= MF2_LINKDRAW;
|
||||
}
|
||||
|
||||
if (player->followmobj)
|
||||
{
|
||||
#ifdef HAVE_BLUA
|
||||
if (LUAh_FollowMobj(player, player->followmobj) || P_MobjWasRemoved(player->followmobj))
|
||||
{;}
|
||||
//else
|
||||
else
|
||||
#endif
|
||||
/*switch (player->followmobj->type)
|
||||
{
|
||||
case MT_ALTVIEWMAN:
|
||||
break;
|
||||
;
|
||||
}*/
|
||||
/*switch (player->followmobj->type)
|
||||
{
|
||||
case MT_ALTVIEWMAN:
|
||||
break;
|
||||
;
|
||||
}*/
|
||||
if (player->followmobj && !P_MobjWasRemoved(player->followmobj))
|
||||
{
|
||||
player->followmobj->flags2 = (player->followmobj->flags2 & ~(MF2_SHADOW|MF2_DONTDRAW))|(player->mo->flags2 & (MF2_SHADOW|MF2_DONTDRAW));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue