mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-28 06:53:58 +00:00
- made 3D floor damage transfers optional by adding a new flag bit (2048) and made that mode automatic for the old ZDoom-based light only transfer special.
This commit is contained in:
parent
5228a67ff5
commit
e63871d6f5
4 changed files with 9 additions and 6 deletions
|
@ -943,7 +943,8 @@ int MapLoader::Set3DFloor(line_t * line, int param, int param2, int alpha)
|
||||||
// if flooding is used the floor must be non-solid and is automatically made shootthrough and seethrough
|
// if flooding is used the floor must be non-solid and is automatically made shootthrough and seethrough
|
||||||
if ((param2 & 128) && !(flags & FF_SOLID)) flags |= FF_FLOOD | FF_SEETHROUGH | FF_SHOOTTHROUGH;
|
if ((param2 & 128) && !(flags & FF_SOLID)) flags |= FF_FLOOD | FF_SEETHROUGH | FF_SHOOTTHROUGH;
|
||||||
if (param2 & 512) flags |= FF_FADEWALLS;
|
if (param2 & 512) flags |= FF_FADEWALLS;
|
||||||
if (param2&1024) flags |= FF_RESET;
|
if (param2 & 1024) flags |= FF_RESET;
|
||||||
|
if (param2 & 2048) flags |= FF_NODAMAGE;
|
||||||
FTextureID tex = line->sidedef[0]->GetTexture(side_t::top);
|
FTextureID tex = line->sidedef[0]->GetTexture(side_t::top);
|
||||||
if (!tex.Exists() && alpha < 255)
|
if (!tex.Exists() && alpha < 255)
|
||||||
{
|
{
|
||||||
|
@ -970,7 +971,7 @@ int MapLoader::Set3DFloor(line_t * line, int param, int param2, int alpha)
|
||||||
|
|
||||||
void MapLoader::Spawn3DFloors ()
|
void MapLoader::Spawn3DFloors ()
|
||||||
{
|
{
|
||||||
static int flagvals[] = {512, 2+512, 512+1024};
|
static int flagvals[] = {512+2048, 2+512+2048, 512+1024+2048};
|
||||||
|
|
||||||
for (auto &line : Level->lines)
|
for (auto &line : Level->lines)
|
||||||
{
|
{
|
||||||
|
|
|
@ -217,10 +217,11 @@ void P_PlayerOnSpecial3DFloor(player_t* player)
|
||||||
// Player must be on top of the floor to be affected...
|
// Player must be on top of the floor to be affected...
|
||||||
if(player->mo->Z() != rover->top.plane->ZatPoint(player->mo)) continue;
|
if(player->mo->Z() != rover->top.plane->ZatPoint(player->mo)) continue;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//Water and DEATH FOG!!! heh
|
//Water and DEATH FOG!!! heh
|
||||||
if (player->mo->Z() > rover->top.plane->ZatPoint(player->mo) ||
|
if ((rover->flags & FF_NODAMAGE) ||
|
||||||
|
player->mo->Z() > rover->top.plane->ZatPoint(player->mo) ||
|
||||||
player->mo->Top() < rover->bottom.plane->ZatPoint(player->mo))
|
player->mo->Top() < rover->bottom.plane->ZatPoint(player->mo))
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@ typedef enum
|
||||||
FF_UPPERTEXTURE = 0x20000,
|
FF_UPPERTEXTURE = 0x20000,
|
||||||
FF_LOWERTEXTURE = 0x40000,
|
FF_LOWERTEXTURE = 0x40000,
|
||||||
FF_THINFLOOR = 0x80000, // EDGE
|
FF_THINFLOOR = 0x80000, // EDGE
|
||||||
FF_SCROLLY = 0x100000, // EDGE - not yet implemented!!!
|
FF_NODAMAGE = 0x100000, // no damage transfers
|
||||||
FF_FIX = 0x200000, // use floor of model sector as floor and floor of real sector as ceiling
|
FF_FIX = 0x200000, // use floor of model sector as floor and floor of real sector as ceiling
|
||||||
FF_INVERTSECTOR = 0x400000, // swap meaning of sector planes
|
FF_INVERTSECTOR = 0x400000, // swap meaning of sector planes
|
||||||
FF_DYNAMIC = 0x800000, // created by partitioning another 3D-floor due to overlap
|
FF_DYNAMIC = 0x800000, // created by partitioning another 3D-floor due to overlap
|
||||||
|
|
|
@ -234,7 +234,8 @@ struct F3DFloor native play
|
||||||
FF_UPPERTEXTURE = 0x20000,
|
FF_UPPERTEXTURE = 0x20000,
|
||||||
FF_LOWERTEXTURE = 0x40000,
|
FF_LOWERTEXTURE = 0x40000,
|
||||||
FF_THINFLOOR = 0x80000, // EDGE
|
FF_THINFLOOR = 0x80000, // EDGE
|
||||||
FF_SCROLLY = 0x100000, // EDGE - not yet implemented!!!
|
FF_SCROLLY = 0x100000, // old leftover definition
|
||||||
|
FF_NODAMAGE = 0x100000, // no damage transfers
|
||||||
FF_FIX = 0x200000, // use floor of model sector as floor and floor of real sector as ceiling
|
FF_FIX = 0x200000, // use floor of model sector as floor and floor of real sector as ceiling
|
||||||
FF_INVERTSECTOR = 0x400000, // swap meaning of sector planes
|
FF_INVERTSECTOR = 0x400000, // swap meaning of sector planes
|
||||||
FF_DYNAMIC = 0x800000, // created by partitioning another 3D-floor due to overlap
|
FF_DYNAMIC = 0x800000, // created by partitioning another 3D-floor due to overlap
|
||||||
|
|
Loading…
Reference in a new issue