mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Player-lock paperitems refinement
- Transparent for single-screen players who can't pick up - Land quicker and closer after monitor destruction - Lock for less time to compensate
This commit is contained in:
parent
841827480b
commit
b08dcc06c1
2 changed files with 30 additions and 7 deletions
|
|
@ -695,10 +695,12 @@ Obj_MonitorOnDeath
|
|||
K_ItemResultToType(result),
|
||||
K_ItemResultToAmount(result)));
|
||||
|
||||
drop->momz /= 2; // This is player-locked, so no need to throw it high
|
||||
|
||||
if (!P_MobjWasRemoved(source) && source->player)
|
||||
{
|
||||
P_SetTarget(&drop->tracer, source);
|
||||
drop->extravalue1 = 6*TICRATE;
|
||||
drop->extravalue1 = 5*TICRATE;
|
||||
drop->colorized = true;
|
||||
drop->color = source->player->skincolor;
|
||||
}
|
||||
|
|
|
|||
33
src/p_mobj.c
33
src/p_mobj.c
|
|
@ -5989,6 +5989,29 @@ static void P_MobjSceneryThink(mobj_t *mobj)
|
|||
P_SpawnGhostMobj(mobj);
|
||||
P_SpawnGhostMobj(mobj->target);
|
||||
}
|
||||
|
||||
// And because this needs to inherit player-lock renderflags,
|
||||
// may as well do that logic in here too. Groooooooooss
|
||||
boolean locked = true;
|
||||
UINT32 lockflag = RF_TRANS40;
|
||||
if (!mobj->target->extravalue1)
|
||||
locked = false;
|
||||
else if (mobj->target->extravalue1 < TICRATE && (mobj->target->extravalue1 % 2))
|
||||
locked = false;
|
||||
|
||||
mobj->target->colorized = false;
|
||||
mobj->target->renderflags &= ~lockflag;
|
||||
mobj->renderflags &= ~lockflag;
|
||||
if (locked)
|
||||
{
|
||||
mobj->target->colorized = true;
|
||||
if ((r_splitscreen == 0) && !P_MobjWasRemoved(mobj->target->tracer)
|
||||
&& mobj->target->tracer->player && !P_IsDisplayPlayer(mobj->target->tracer->player))
|
||||
{
|
||||
mobj->target->renderflags |= lockflag;
|
||||
mobj->renderflags |= lockflag;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
|
|
@ -7603,14 +7626,12 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
|
|||
|
||||
K_UpdateMobjItemOverlay(mobj, mobj->threshold, mobj->movecount);
|
||||
|
||||
// ACHTUNG HACK - this is the player-lock timer used when breaking monitors,
|
||||
// but the visual side-effects of this are in the MT_OVERLAY thinker so that
|
||||
// the backdrop can also go transparent. EUUUAUUAUUAAAUUUUGGGHGHHHHHHHGSSS
|
||||
if (mobj->extravalue1 > 0)
|
||||
{
|
||||
mobj->extravalue1--;
|
||||
if (mobj->extravalue1 < TICRATE)
|
||||
{
|
||||
mobj->colorized = mobj->extravalue1 & 1;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case MT_ITEMCAPSULE:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue