* Exempt drop shadows from encore remapping.

* Make MT_GHOST's encoremapping depend on whether the source was encoremapped.
* Revamp how sector typegroup 2, type 15 inverts the encoremapping (so planes don't get awkwardly desynchronised).
This commit is contained in:
toaster 2018-08-26 15:15:03 +01:00
parent b505ea43f0
commit cdf5874ff5
3 changed files with 12 additions and 6 deletions

View file

@ -13114,7 +13114,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
1000, // mass
8, // damage
sfx_None, // activesound
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_SCENERY, // flags
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_SCENERY|MF_DONTENCOREMAP, // flags
S_NULL // raisestate
},
@ -16599,7 +16599,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
0, // damage
sfx_None, // activesound
MF_NOGRAVITY|MF_SCENERY, // flags
MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP, // flags
S_NULL // raisestate
},

View file

@ -1599,6 +1599,9 @@ mobj_t *P_SpawnGhostMobj(mobj_t *mobj)
if (mobj->flags2 & MF2_OBJECTFLIP)
ghost->flags |= MF2_OBJECTFLIP;
if (!(mobj->flags & MF_DONTENCOREMAP))
mobj->flags &= ~MF_DONTENCOREMAP;
return ghost;
}

View file

@ -39,7 +39,7 @@ INT32 doorclosed;
static boolean R_NoEncore(sector_t *sector, boolean ceiling)
{
boolean invertencore = (GETSECSPECIAL(sector->special, 2) != 15);
boolean invertencore = (GETSECSPECIAL(sector->special, 2) == 15);
#if 0 // perfect implementation
INT32 val = GETSECSPECIAL(sector->special, 3);
if (val != 1 && val != 3 // spring panel
@ -47,11 +47,14 @@ static boolean R_NoEncore(sector_t *sector, boolean ceiling)
if ((!(sector->special & (1<<8)) || (sector->special & ((4|8)<<8))) // spring panel
#endif
&& GETSECSPECIAL(sector->special, 4) != 6) // sneaker panel
return !invertencore;
return invertencore;
if (invertencore)
return false;
if (ceiling)
return ((boolean)(sector->flags & SF_FLIPSPECIAL_CEILING) == invertencore);
return ((boolean)(sector->flags & SF_FLIPSPECIAL_FLOOR) == invertencore);
return ((boolean)(sector->flags & SF_FLIPSPECIAL_CEILING));
return ((boolean)(sector->flags & SF_FLIPSPECIAL_FLOOR));
}
//