diff --git a/docs/rh-log.txt b/docs/rh-log.txt index b816c4c4d..9de02e2d7 100644 --- a/docs/rh-log.txt +++ b/docs/rh-log.txt @@ -1,4 +1,7 @@ -May 16, 2006 +- Implemented Quasar's suggestion to use line flag 2048 as a "reserved" flag + that, if set, clears all the non-original-Doom flags on a line. This is + only for Doom format maps when playing Doom. - Added support for automatically loading ACS objects (even for Doom-format maps). To use it, compile the ACS files as ordinary libraries placed between A_START/A_END markers. Then outside the markers, create a lump diff --git a/src/doomdata.h b/src/doomdata.h index 097ec779f..ccf07d5f5 100644 --- a/src/doomdata.h +++ b/src/doomdata.h @@ -157,6 +157,11 @@ static inline int GET_SPAC (int flags) // [RH] In case I feel like it, here it is... #define ML_3DMIDTEX_ETERNITY 0x0400 +// If this bit is set, then all non-original-Doom bits are cleared when +// translating the line. Only applies when playing Doom with Doom-format maps. +// Hexen format maps and the other games are not affected by this. +#define ML_RESERVED_ETERNITY 0x0800 + // [RH] Extra flags for Strife compatibility #define ML_TRANSLUCENT_STRIFE 0x1000 #define ML_RAILING_STRIFE 0x0200 diff --git a/src/p_xlat.cpp b/src/p_xlat.cpp index d15ef599e..f3a578afb 100644 --- a/src/p_xlat.cpp +++ b/src/p_xlat.cpp @@ -92,6 +92,13 @@ void P_TranslateLineDef (line_t *ld, maplinedef_t *mld) } else { + if (gameinfo.gametype == GAME_Doom) + { + if (flags & ML_RESERVED_ETERNITY) + { + flags &= 0x1FF; + } + } passthrough = (flags & ML_PASSUSE_BOOM); } flags = flags & 0xFFFF01FF; // Ignore flags unknown to DOOM