- alignment flags and a few leftovers.

This commit is contained in:
Christoph Oelckers 2021-12-18 16:45:05 +01:00
parent 82fb03e399
commit ace01d02bc
16 changed files with 60 additions and 60 deletions

View file

@ -49,7 +49,7 @@ static inline void get_wallspr_points(T const * const spr, int32_t *x1, int32_t
int32_t xoff = tileLeftOffset(tilenum) + spr->xoffset;
int32_t k, l, dax, day;
if (spr->cstat&4)
if (spr->cstat & CSTAT_SPRITE_XFLIP)
xoff = -xoff;
dax = bsin(ang) * xrepeat;

View file

@ -1181,7 +1181,7 @@ static int32_t polymost_md3draw(md3model_t *m, tspriteptr_t tspr)
// Parkar: Moved up to be able to use k0 for the y-flipping code
k0 = (float)tspr->z+sext->position_offset.z;
f = ((globalorientation&8) && (spr->cstat&48)!=0) ? -4.f : 4.f;
f = ((globalorientation & 8) && (spr->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) != CSTAT_SPRITE_ALIGNMENT_FACING) ? -4.f : 4.f;
k0 -= (tspr->yoffset*tspr->yrepeat)*f;
if ((globalorientation&128) && !((globalorientation&48)==32))
k0 += (float)(sizyrep<<1);

View file

@ -2649,7 +2649,7 @@ void polymost_drawsprite(int32_t snum)
auto actor = tspr->ownerActor;
if ((tspr->cstat&48) != 48)
if ((tspr->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) != CSTAT_SPRITE_ALIGNMENT_SLAB)
tileUpdatePicnum(&tspr->picnum, (actor->GetIndex() & 16383) + 32768);
globalpicnum = tspr->picnum;
@ -2671,10 +2671,10 @@ void polymost_drawsprite(int32_t snum)
int32_t method = DAMETH_MASK | DAMETH_CLAMPED;
if (tspr->cstat & 2)
method = DAMETH_CLAMPED | ((tspr->cstat & 512) ? DAMETH_TRANS2 : DAMETH_TRANS1);
if (tspr->cstat & CSTAT_SPRITE_TRANSLUCENT)
method = DAMETH_CLAMPED | ((tspr->cstat & CSTAT_SPRITE_TRANS_FLIP) ? DAMETH_TRANS2 : DAMETH_TRANS1);
SetRenderStyleFromBlend(!!(tspr->cstat & 2), tspr->blend, !!(tspr->cstat & 512));
SetRenderStyleFromBlend(!!(tspr->cstat & CSTAT_SPRITE_TRANSLUCENT), tspr->blend, !!(tspr->cstat & CSTAT_SPRITE_TRANS_FLIP));
drawpoly_alpha = actor->sx().alpha;
drawpoly_blend = tspr->blend;
@ -2692,14 +2692,14 @@ void polymost_drawsprite(int32_t snum)
if (r_voxels)
{
if ((tspr->cstat & 48) != 48 && tiletovox[tspr->picnum] >= 0 && voxmodels[tiletovox[tspr->picnum]])
if ((tspr->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) != CSTAT_SPRITE_ALIGNMENT_SLAB && tiletovox[tspr->picnum] >= 0 && voxmodels[tiletovox[tspr->picnum]])
{
int num = tiletovox[tspr->picnum];
if (polymost_voxdraw(voxmodels[num], tspr, voxrotate[num])) return;
break; // else, render as flat sprite
}
if ((tspr->cstat & 48) == 48 && tspr->picnum < MAXVOXELS && voxmodels[tspr->picnum])
if ((tspr->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) == CSTAT_SPRITE_ALIGNMENT_SLAB && tspr->picnum < MAXVOXELS && voxmodels[tspr->picnum])
{
int num = tspr->picnum;
polymost_voxdraw(voxmodels[tspr->picnum], tspr, voxrotate[num]);
@ -3299,10 +3299,10 @@ static inline int32_t sameside(const _equation* eq, const FVector2* p1,
static inline int comparetsprites(int const k, int const l)
{
if ((tspriteptr[k]->cstat & 48) != (tspriteptr[l]->cstat & 48))
return (tspriteptr[k]->cstat & 48) - (tspriteptr[l]->cstat & 48);
if ((tspriteptr[k]->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) != (tspriteptr[l]->cstat & CSTAT_SPRITE_ALIGNMENT_MASK))
return (tspriteptr[k]->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) - (tspriteptr[l]->cstat & CSTAT_SPRITE_ALIGNMENT_MASK);
if ((tspriteptr[k]->cstat & 48) == 16 && tspriteptr[k]->ang != tspriteptr[l]->ang)
if ((tspriteptr[k]->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) == CSTAT_SPRITE_ALIGNMENT_WALL && tspriteptr[k]->ang != tspriteptr[l]->ang)
return tspriteptr[k]->ang - tspriteptr[l]->ang;
if (tspriteptr[k]->statnum != tspriteptr[l]->statnum)
@ -3313,7 +3313,7 @@ static inline int comparetsprites(int const k, int const l)
if (tspriteptr[k]->x == tspriteptr[l]->x &&
tspriteptr[k]->y == tspriteptr[l]->y &&
tspriteptr[k]->z == tspriteptr[l]->z &&
(tspriteptr[k]->cstat & 48) == (tspriteptr[l]->cstat & 48) &&
(tspriteptr[k]->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) == (tspriteptr[l]->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) &&
tspriteptr[k]->ownerActor != tspriteptr[l]->ownerActor)
return tspriteptr[k]->ownerActor->GetIndex() - tspriteptr[l]->ownerActor->GetIndex();
@ -3360,14 +3360,14 @@ static void sortsprites(int const start, int const end)
auto const s = tspriteptr[k];
spritesxyz[k].z = s->z;
if ((s->cstat & 48) != 32)
if ((s->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) != CSTAT_SPRITE_ALIGNMENT_FLOOR)
{
int32_t yoff = tileTopOffset(s->picnum) + s->yoffset;
int32_t yspan = (tileHeight(s->picnum) * s->yrepeat << 2);
spritesxyz[k].z -= (yoff * s->yrepeat) << 2;
if (!(s->cstat & 128))
if (!(s->cstat & CSTAT_SPRITE_YCENTER))
spritesxyz[k].z -= (yspan >> 1);
if (abs(spritesxyz[k].z - globalposz) < (yspan >> 1))
spritesxyz[k].z = globalposz;
@ -3399,7 +3399,7 @@ static bool spriteIsModelOrVoxel(const tspritetype* tspr)
if (mdinfo.modelid >= 0 && mdinfo.framenum >= 0) return true;
}
auto slabalign = (tspr->cstat & CSTAT_SPRITE_ALIGNMENT) == CSTAT_SPRITE_ALIGNMENT_SLAB;
auto slabalign = (tspr->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) == CSTAT_SPRITE_ALIGNMENT_SLAB;
if (r_voxels && !slabalign && tiletovox[tspr->picnum] >= 0 && voxmodels[tiletovox[tspr->picnum]]) return true;
return (slabalign && voxmodels[tspr->picnum]);
}
@ -3445,7 +3445,7 @@ void renderDrawMasks(void)
spritesxyz[i].x = Scale(xp + yp, xdimen << 7, yp);
}
else if ((tspriteptr[i]->cstat & 48) == 0)
else if ((tspriteptr[i]->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) == 0)
{
killsprite:
if (!modelp)
@ -3495,12 +3495,12 @@ void renderDrawMasks(void)
for (intptr_t i = pm_spritesortcnt; i < numSprites;)
{
int32_t py = spritesxyz[i].y;
int32_t pcstat = tspriteptr[i]->cstat & 48;
int32_t pcstat = tspriteptr[i]->cstat & CSTAT_SPRITE_ALIGNMENT_MASK;
int32_t pangle = tspriteptr[i]->ang;
int j = i + 1;
if (!spriteIsModelOrVoxel(tspriteptr[i]))
{
while (j < numSprites && py == spritesxyz[j].y && pcstat == (tspriteptr[j]->cstat & 48) && (pcstat != 16 || pangle == tspriteptr[j]->ang)
while (j < numSprites && py == spritesxyz[j].y && pcstat == (tspriteptr[j]->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) && (pcstat != 16 || pangle == tspriteptr[j]->ang)
&& !spriteIsModelOrVoxel(tspriteptr[j]))
{
j++;
@ -3610,7 +3610,7 @@ void renderDrawMasks(void)
const _equation pineq = inleft ? p1eq : p2eq;
if ((tspr->cstat & 48) == 32)
if ((tspr->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) == CSTAT_SPRITE_ALIGNMENT_FLOOR)
{
numpts = 4;
GetFlatSpritePosition(tspr, tspr->pos.vec2, pp);
@ -3622,12 +3622,12 @@ void renderDrawMasks(void)
// Consider face sprites as wall sprites with camera ang.
// XXX: factor 4/5 needed?
if ((tspr->cstat & 48) != 16)
if ((tspr->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) != CSTAT_SPRITE_ALIGNMENT_WALL)
tspriteptr[i]->ang = globalang;
GetWallSpritePosition(tspr, tspr->pos.vec2, pp);
if ((tspr->cstat & 48) != 16)
if ((tspr->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) != CSTAT_SPRITE_ALIGNMENT_WALL)
tspriteptr[i]->ang = oang;
}
@ -3727,7 +3727,7 @@ int32_t polymost_voxdraw(voxmodel_t* m, tspriteptr_t const tspr, bool rotate)
if ((intptr_t)m == (intptr_t)(-1)) // hackhackhack
return 0;
if ((tspr->cstat & 48) == 32)
if ((tspr->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) == CSTAT_SPRITE_ALIGNMENT_FLOOR)
return 0;
if ((tspr->cstat2 & CSTAT2_SPRITE_MDLROTATE) || rotate)
@ -3742,7 +3742,7 @@ int32_t polymost_voxdraw(voxmodel_t* m, tspriteptr_t const tspr, bool rotate)
k0 = m->bscale / 64.f;
f = (float)tspr->xrepeat * (256.f / 320.f) * k0;
if ((tspr->ownerActor->s().cstat & 48) == 16)
if ((tspr->ownerActor->s().cstat & CSTAT_SPRITE_ALIGNMENT_MASK) == CSTAT_SPRITE_ALIGNMENT_WALL)
{
f *= 1.25f;
a0.Y -= tspr->xoffset * bcosf(tspr->ownerActor->sx().angoff, -20);
@ -3758,12 +3758,12 @@ int32_t polymost_voxdraw(voxmodel_t* m, tspriteptr_t const tspr, bool rotate)
m0.Z *= f; a0.Z *= f;
k0 = (float)(tspr->z + tspr->ownerActor->sx().position_offset.z);
f = ((globalorientation & 8) && (tspr->ownerActor->s().cstat & 48) != 0) ? -4.f : 4.f;
f = ((globalorientation & 8) && (tspr->ownerActor->s().cstat & CSTAT_SPRITE_ALIGNMENT_MASK) != 0) ? -4.f : 4.f;
k0 -= (tspr->yoffset * tspr->yrepeat) * f * m->bscale;
zoff = m->siz.z * .5f;
if (!(tspr->cstat & 128))
if (!(tspr->cstat & CSTAT_SPRITE_YCENTER))
zoff += m->piv.Z;
else if ((tspr->cstat & 48) != 48)
else if ((tspr->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) != 48)
{
zoff += m->piv.Z;
zoff -= m->siz.z * .5f;
@ -3807,12 +3807,12 @@ int32_t polymost_voxdraw(voxmodel_t* m, tspriteptr_t const tspr, bool rotate)
if (!shadowHack)
{
pc[3] = (tspr->cstat & 2) ? glblend[tspr->blend].def[!!(tspr->cstat & 512)].alpha : 1.0f;
pc[3] = (tspr->cstat & CSTAT_SPRITE_TRANSLUCENT) ? glblend[tspr->blend].def[!!(tspr->cstat & CSTAT_SPRITE_TRANS_FLIP)].alpha : 1.0f;
pc[3] *= 1.0f - tspr->ownerActor->sx().alpha;
SetRenderStyleFromBlend(!!(tspr->cstat & 2), tspr->blend, !!(tspr->cstat & 512));
SetRenderStyleFromBlend(!!(tspr->cstat & CSTAT_SPRITE_TRANSLUCENT), tspr->blend, !!(tspr->cstat & CSTAT_SPRITE_TRANS_FLIP));
if (!(tspr->cstat & 2) || tspr->ownerActor->sx().alpha > 0.f || pc[3] < 1.0f)
if (!(tspr->cstat & CSTAT_SPRITE_TRANSLUCENT) || tspr->ownerActor->sx().alpha > 0.f || pc[3] < 1.0f)
GLInterface.EnableBlend(true); // else GLInterface.EnableBlend(false);
}
else pc[3] = 1.f;

View file

@ -255,7 +255,7 @@ static tspritetype *viewAddEffect(tspritetype* tsprite, int& spritesortcnt, int
case kViewEffectTrail:
{
int nAng = pTSprite->ang;
if (pTSprite->cstat & 16)
if (pTSprite->cstat & CSTAT_SPRITE_ALIGNMENT_WALL)
{
nAng = (nAng+512)&2047;
}
@ -484,7 +484,7 @@ static tspritetype *viewAddEffect(tspritetype* tsprite, int& spritesortcnt, int
{
pNSprite->ang = (gView->pSprite->ang + 512) & 2047; // always face viewer
pNSprite->cstat |= 48;
pNSprite->cstat &= ~8;
pNSprite->cstat &= ~CSTAT_SPRITE_YFLIP;
pNSprite->picnum = nVoxel;
if (pPlayer->curWeapon == kWeapLifeLeech) // position lifeleech behind player
{
@ -645,7 +645,7 @@ void viewProcessSprites(tspritetype* tsprite, int& spritesortcnt, int32_t cX, in
nAnim--;
}
if ((pTSprite->cstat&48) != 48 && r_voxels && !(owneractor->sx().flags&SPREXT_NOTMD))
if ((pTSprite->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) != CSTAT_SPRITE_ALIGNMENT_SLAB && r_voxels && !(owneractor->sx().flags&SPREXT_NOTMD))
{
int const nRootTile = pTSprite->picnum;
int nAnimTile = pTSprite->picnum + qanimateoffs(pTSprite->picnum, 32768 + (pTSprite->ownerActor->GetIndex() & 16383));
@ -664,7 +664,7 @@ void viewProcessSprites(tspritetype* tsprite, int& spritesortcnt, int32_t cX, in
pTSprite->cstat2 |= CSTAT2_SPRITE_MDLROTATE; // per-sprite rotation setting.
}
if ((pTSprite->cstat&48) != 48 && hw_models && !(owneractor->sx().flags&SPREXT_NOTMD))
if ((pTSprite->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) != CSTAT_SPRITE_ALIGNMENT_SLAB && hw_models && !(owneractor->sx().flags&SPREXT_NOTMD))
{
int const nRootTile = pTSprite->picnum;
int nAnimTile = pTSprite->picnum + qanimateoffs(pTSprite->picnum, 32768 + (pTSprite->ownerActor->GetIndex() & 16383));

View file

@ -281,7 +281,7 @@ void GibFX(DBloodActor* actor, GIBFX *pGFX, CGibPosition *pPos, CGibVelocity *pV
GetActorExtents(actor, &top, &bottom);
for (int i = 0; i < nCount; i++)
{
if (!pPos && (pSprite->cstat&48) == 0)
if (!pPos && (pSprite->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) == 0)
{
int nAngle = Random(2048);
gPos.x = pSprite->x+MulScale(pSprite->clipdist<<2, Cos(nAngle), 30);
@ -303,7 +303,7 @@ void GibFX(DBloodActor* actor, GIBFX *pGFX, CGibPosition *pPos, CGibVelocity *pV
{
pFX->xvel = Random2((pGFX->atd<<18)/120);
pFX->yvel = Random2((pGFX->atd<<18)/120);
switch(pSprite->cstat&48)
switch(pSprite->cstat & CSTAT_SPRITE_ALIGNMENT_MASK)
{
case 16:
pFX->zvel = Random2((pGFX->at11<<18)/120);
@ -380,7 +380,7 @@ void GibThing(DBloodActor* actor, GIBTHING *pGThing, CGibPosition *pPos, CGibVel
{
gibactor->xvel = Random2((pGThing->atc<<18)/120);
gibactor->yvel = Random2((pGThing->atc<<18)/120);
switch (pSprite->cstat&48)
switch (pSprite->cstat & CSTAT_SPRITE_ALIGNMENT_MASK)
{
case 16:
gibactor->zvel = Random2((pGThing->at10<<18)/120);

View file

@ -898,7 +898,7 @@ void TranslateSector(sectortype* pSector, int a2, int a3, int a4, int a5, int a6
int top, bottom;
GetSpriteExtents(pSprite, &top, &bottom);
int floorZ = getflorzofslopeptr(pSector, pSprite->x, pSprite->y);
if (!(pSprite->cstat&48) && floorZ <= bottom)
if (!(pSprite->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) && floorZ <= bottom)
{
if (v14)
RotatePoint((int*)&pSprite->x, (int*)&pSprite->y, v14, v20, v24);
@ -936,7 +936,7 @@ void ZTranslateSector(sectortype* pSector, XSECTOR *pXSector, int a3, int a4)
}
else if (pSprite->flags&2)
pSprite->flags |= 4;
else if (oldZ <= bottom && !(pSprite->cstat&48))
else if (oldZ <= bottom && !(pSprite->cstat & CSTAT_SPRITE_ALIGNMENT_MASK))
{
viewBackupSpriteLoc(actor);
pSprite->z += pSector->floorz-oldZ;
@ -1859,7 +1859,7 @@ void ProcessMotion(void)
{
int top, bottom;
GetSpriteExtents(pSprite, &top, &bottom);
if (bottom >= floorZ && (pSprite->cstat&48) == 0)
if (bottom >= floorZ && (pSprite->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) == 0)
{
viewBackupSpriteLoc(actor);
pSprite->z += vdi;
@ -1879,7 +1879,7 @@ void ProcessMotion(void)
auto pSprite = &actor->s();
int top, bottom;
GetSpriteExtents(pSprite, &top, &bottom);
if (top <= ceilZ && (pSprite->cstat&48) == 0)
if (top <= ceilZ && (pSprite->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) == 0)
{
viewBackupSpriteLoc(actor);
pSprite->z += vdi;
@ -2198,7 +2198,7 @@ void FireballTrapSeqCallback(int, DBloodActor* actor)
{
spritetype* pSprite = &actor->s();
if (pSprite->cstat&32)
actFireMissile(actor, 0, 0, 0, 0, (pSprite->cstat&8) ? 0x4000 : -0x4000, kMissileFireball);
actFireMissile(actor, 0, 0, 0, 0, (pSprite->cstat & CSTAT_SPRITE_YFLIP) ? 0x4000 : -0x4000, kMissileFireball);
else
actFireMissile(actor, 0, 0, bcos(pSprite->ang), bsin(pSprite->ang), 0, kMissileFireball);
}

View file

@ -3372,7 +3372,7 @@ void handle_se04(DDukeActor *actor)
while (auto a2 = it.Next())
{
auto sj = a2->s;
if (sj->cstat & 16)
if (sj->cstat & CSTAT_SPRITE_ALIGNMENT_WALL)
{
if (sc->ceilingstat & CSTAT_SECTOR_SKY)
sj->shade = sc->ceilingshade;
@ -3699,7 +3699,7 @@ void handle_se12(DDukeActor *actor, int planeonly)
DukeSectIterator it(sc);
while (auto a2 = it.Next())
{
if (a2->s->cstat & 16)
if (a2->s->cstat & CSTAT_SPRITE_ALIGNMENT_WALL)
{
if (sc->ceilingstat & CSTAT_SECTOR_SKY)
a2->s->shade = sc->ceilingshade;
@ -3739,7 +3739,7 @@ void handle_se12(DDukeActor *actor, int planeonly)
DukeSectIterator it(actor->sector());
while (auto a2 = it.Next())
{
if (a2->s->cstat & 16)
if (a2->s->cstat & CSTAT_SPRITE_ALIGNMENT_WALL)
{
if (sc->ceilingstat & CSTAT_SECTOR_SKY)
a2->s->shade = sc->ceilingshade;
@ -4933,7 +4933,7 @@ void getglobalz(DDukeActor* actor)
getzrange({ s->x, s->y, s->z - (FOURSLEIGHT) }, s->sector(), &actor->ceilingz, hz, &actor->floorz, lz, zr, CLIPMASK0);
s->cstat2 = cc;
if( lz.type == kHitSprite && (lz.actor()->s->cstat&48) == 0 )
if( lz.type == kHitSprite && (lz.actor()->s->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) == 0 )
{
if( badguy(lz.actor()) && lz.actor()->s->pal != 1)
{

View file

@ -2976,7 +2976,7 @@ void moveactors_d(void)
case DUCK:
case TARGET:
if (s->cstat & 32)
if (s->cstat & CSTAT_SPRITE_ALIGNMENT_FLOOR)
{
t[0]++;
if (t[0] > 60)
@ -3000,8 +3000,8 @@ void moveactors_d(void)
if (act2->s->lotag == s->lotag &&
act2->s->picnum == s->picnum)
{
if ((act2->s->hitag && !(act2->s->cstat & 32)) ||
(!act2->s->hitag && (act2->s->cstat & 32))
if ((act2->s->hitag && !(act2->s->cstat & CSTAT_SPRITE_ALIGNMENT_FLOOR)) ||
(!act2->s->hitag && (act2->s->cstat & CSTAT_SPRITE_ALIGNMENT_FLOOR))
)
{
k = 0;

View file

@ -129,7 +129,7 @@ void animatesprites_d(tspritetype* tsprite, int& spritesortcnt, int x, int y, in
case GREENSLIME + 7:
break;
default:
if (((t->cstat & 16)) || (badguypic(t->picnum) && t->extra > 0) || t->statnum == 10)
if (((t->cstat & CSTAT_SPRITE_ALIGNMENT_WALL)) || (badguypic(t->picnum) && t->extra > 0) || t->statnum == STAT_PLAYER)
continue;
}

View file

@ -107,7 +107,7 @@ void animatesprites_r(tspritetype* tsprite, int& spritesortcnt, int x, int y, in
case NEON6:
continue;
default:
if (((t->cstat & 16)) || (badguypic(t->picnum) && t->extra > 0) || t->statnum == 10)
if (((t->cstat & CSTAT_SPRITE_ALIGNMENT_WALL)) || (badguypic(t->picnum) && t->extra > 0) || t->statnum == STAT_PLAYER)
{
if (s->sector()->shadedsector == 1 && s->statnum != 1)
{
@ -627,7 +627,7 @@ void animatesprites_r(tspritetype* tsprite, int& spritesortcnt, int x, int y, in
break;
}
if (gs.actorinfo[s->picnum].scriptaddress && (t->cstat & 48) != 48)
if (gs.actorinfo[s->picnum].scriptaddress && (t->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) != CSTAT_SPRITE_ALIGNMENT_SLAB)
{
if (t4)
{
@ -723,7 +723,7 @@ void animatesprites_r(tspritetype* tsprite, int& spritesortcnt, int x, int y, in
t->shade = -127;
if (s->statnum == 13 || badguy(s) || (s->picnum == APLAYER && h->GetOwner()))
if ((s->cstat & 48) == 0 && t->statnum != 99)
if ((s->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) == 0 && t->statnum != 99)
if (s->picnum != EXPLOSION2 && s->picnum != DOMELITE && s->picnum != TORNADO && s->picnum != EXPLOSION3 && (s->picnum != SBMOVE || isRRRA()))
{
if (h->dispicnum < 0)

View file

@ -414,7 +414,7 @@ bool GameInterface::DrawAutomapPlayer(int mx, int my, int cposx, int cposy, int
sprx = spr->x;
spry = spr->y;
if ((spr->cstat & CSTAT_SPRITE_BLOCK_ALL) != 0) switch (spr->cstat & 48)
if ((spr->cstat & CSTAT_SPRITE_BLOCK_ALL) != 0) switch (spr->cstat & CSTAT_SPRITE_ALIGNMENT_MASK)
{
case 0:
//break;

View file

@ -288,7 +288,7 @@ void prelevel_d(int g, TArray<DDukeActor*>& actors)
auto si = ac->s;
LoadActor(ac, -1, -1);
if (si->lotag == -1 && (si->cstat & 16))
if (si->lotag == -1 && (si->cstat & CSTAT_SPRITE_ALIGNMENT_WALL))
{
ps[0].exitx = si->x;
ps[0].exity = si->y;

View file

@ -536,7 +536,7 @@ void prelevel_r(int g, TArray<DDukeActor*>& actors)
auto si = ac->s;
LoadActor(ac, -1, -1);
if (si->lotag == -1 && (si->cstat & 16))
if (si->lotag == -1 && (si->cstat & CSTAT_SPRITE_ALIGNMENT_WALL))
{
ps[0].exitx = si->x;
ps[0].exity = si->y;

View file

@ -1380,7 +1380,7 @@ void checkhitsprite_d(DDukeActor* targ, DDukeActor* proj)
s = targ->s;
[[fallthrough]];
default:
if ((s->cstat & 16) && s->hitag == 0 && s->lotag == 0 && s->statnum == 0)
if ((s->cstat & CSTAT_SPRITE_ALIGNMENT_WALL) && s->hitag == 0 && s->lotag == 0 && s->statnum == 0)
break;
if ((pspr->picnum == FREEZEBLAST || proj->GetOwner() != targ) && s->statnum != 4)

View file

@ -2359,7 +2359,7 @@ void checkhitsprite_r(DDukeActor* targ, DDukeActor* proj)
s = targ->s;
[[fallthrough]];
default:
if ((s->cstat & 16) && s->hitag == 0 && s->lotag == 0 && s->statnum == 0)
if ((s->cstat & CSTAT_SPRITE_ALIGNMENT_WALL) && s->hitag == 0 && s->lotag == 0 && s->statnum == 0)
break;
if ((pspr->picnum == SHRINKSPARK || pspr->picnum == FREEZEBLAST || proj->GetOwner() != targ) && s->statnum != 4)

View file

@ -165,11 +165,11 @@ bool initspriteforspawn(DDukeActor* act, const std::initializer_list<int> &exclu
t[0] = t[1] = t[2] = t[3] = t[4] = t[5] = 0;
act->temp_actor = nullptr;
if (sp->cstat & 48)
if (!isIn(sp->picnum, excludes) && (sp->cstat & 48))
if (sp->cstat & CSTAT_SPRITE_ALIGNMENT_MASK)
if (!isIn(sp->picnum, excludes) && (sp->cstat & CSTAT_SPRITE_ALIGNMENT_MASK))
{
if (sp->shade == 127) return false;
if (wallswitchcheck(act) && (sp->cstat & 16))
if (wallswitchcheck(act) && (sp->cstat & CSTAT_SPRITE_ALIGNMENT_WALL))
{
if (sp->picnum != TILE_ACCESSSWITCH && sp->picnum != TILE_ACCESSSWITCH2 && sp->pal)
{