Instawhip "drop shadow" underlay

This commit is contained in:
AJ Martinez 2023-06-11 18:41:32 -07:00
parent 0e9e68a9cc
commit c12ad72fff
3 changed files with 24 additions and 2 deletions

View file

@ -3951,7 +3951,7 @@ state_t states[NUMSTATES] =
{SPR_SLPT, FF_PAPERSPRITE|0, -1, {NULL}, 0, 0, S_NULL}, // S_SLIPTIDEZIP
{SPR_IWHP, FF_FULLBRIGHT|FF_FLOORSPRITE|FF_ANIMATE|0, -1, {NULL}, 6, 2, S_NULL}, // S_INSTAWHIP
{SPR_IWHP, FF_FLOORSPRITE|FF_ANIMATE|0, -1, {NULL}, 6, 2, S_NULL}, // S_INSTAWHIP
{SPR_GRNG, FF_FULLBRIGHT|FF_PAPERSPRITE|0, -1, {NULL}, 0, 0, S_NULL}, // S_BLOCKRING
{SPR_GBDY, FF_FULLBRIGHT|FF_ANIMATE|0, -1, {NULL}, 4, 2, S_NULL}, // S_BLOCKBODY

View file

@ -29,7 +29,7 @@ void Obj_InstaWhipThink (mobj_t *whip)
player->glanceDir = -2;
// Visuals
whip->renderflags |= RF_NOSPLATBILLBOARD;
whip->renderflags |= RF_NOSPLATBILLBOARD|RF_FULLBRIGHT;
if (whip->renderflags & RF_DONTDRAW)
whip->renderflags &= ~RF_DONTDRAW;
@ -38,5 +38,22 @@ void Obj_InstaWhipThink (mobj_t *whip)
if (whip->extravalue2) // Whip has no hitbox but removing it is a pain in the ass
whip->renderflags |= RF_DONTDRAW;
// UGLY!
fixed_t dropOffset = 15*FRACUNIT;
whip->z -= dropOffset;
mobj_t *dropshadow = P_SpawnGhostMobj(whip);
dropshadow->fuse = 2;
dropshadow->flags2 = MF2_LINKDRAW;
P_SetTarget(&dropshadow->tracer, whip);
dropshadow->renderflags = whip->renderflags;
dropshadow->lightlevel = 0;
dropshadow->extravalue1 = 1; // Suppress fade-out behavior!
dropshadow->renderflags &= ~(RF_TRANSMASK|RF_FULLBRIGHT);
dropshadow->renderflags |= RF_ABSOLUTELIGHTLEVEL;
// FUCK!
whip->z += dropOffset;
}
}

View file

@ -9850,6 +9850,11 @@ void P_MobjThinker(mobj_t *mobj)
if (mobj->type == MT_GHOST && mobj->fuse > 0) // Not guaranteed to be MF_SCENERY or not MF_SCENERY!
{
if (mobj->frame & SPR_IWHP)
{
if (P_MobjWasRemoved(mobj->tracer))
mobj->renderflags |= RF_DONTDRAW;
}
if (mobj->extravalue1 > 0) // Sonic Advance 2 mode
{
if (mobj->extravalue2 >= 2)