diff --git a/docs/rh-log.txt b/docs/rh-log.txt index 82ecd2a47a..d9dc532fcf 100644 --- a/docs/rh-log.txt +++ b/docs/rh-log.txt @@ -1,3 +1,7 @@ +July 11, 2006 (Changes by Graf Zahl) +- Changed the additive scrollers option into a compatibility flag so that it can + be changed from the menu. + July 10, 2006 - Fixed closed doors between the front sector's floor and ceiling the right way. I was just missing a non-null texture check. diff --git a/src/d_main.cpp b/src/d_main.cpp index a3d83ea5e7..21ae355ad0 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -396,6 +396,7 @@ CVAR (Flag, compat_soundtarget, compatflags, COMPATF_SOUNDTARGET); CVAR (Flag, compat_dehhealth, compatflags, COMPATF_DEHHEALTH); CVAR (Flag, compat_trace, compatflags, COMPATF_TRACE); CVAR (Flag, compat_dropoff, compatflags, COMPATF_DROPOFF); +CVAR (Flag, compat_boomscroll, compatflags, COMPATF_BOOMSCROLL); //========================================================================== // diff --git a/src/doomdef.h b/src/doomdef.h index 2d2e19f108..fdb174ed0e 100644 --- a/src/doomdef.h +++ b/src/doomdef.h @@ -274,6 +274,7 @@ enum COMPATF_DEHHEALTH = 1 << 12, // Limit deh.MaxHealth to the health bonus (as in Doom2.exe) COMPATF_TRACE = 1 << 13, // Trace ignores lines with the same sector on both sides COMPATF_DROPOFF = 1 << 14, // Monsters cannot move when hanging over a dropoff + COMPATF_BOOMSCROLL = 1 << 15, // Scrolling sectors are additive like in Boom }; // phares 3/20/98: diff --git a/src/g_level.cpp b/src/g_level.cpp index 86e99edfe2..68242e781d 100644 --- a/src/g_level.cpp +++ b/src/g_level.cpp @@ -259,7 +259,8 @@ static const char *MapInfoMapLevel[] = "compat_soundtarget", "compat_dehhealth", "compat_trace", - "compat_dropoff", + "compat_dropoff", + "compat_boomscroll", NULL }; @@ -359,7 +360,7 @@ MapHandlers[] = { MITYPE_REDIRECT, lioffset(RedirectMap), 0 }, { MITYPE_CLRFLAG, LEVEL_LAXMONSTERACTIVATION, LEVEL_LAXACTIVATIONMAPINFO }, { MITYPE_SETFLAG, LEVEL_LAXMONSTERACTIVATION, LEVEL_LAXACTIVATIONMAPINFO }, - { MITYPE_SETFLAG, LEVEL_ADDITIVE_SCROLLERS, 0 }, + { MITYPE_COMPATFLAG, COMPATF_BOOMSCROLL}, { MITYPE_SETFLAG, LEVEL_CAVERNS_OF_DARKNESS, 0 }, { MITYPE_LUMPNAME, lioffset(exitpic), 0 }, { MITYPE_LUMPNAME, lioffset(exitpic), 0 }, @@ -390,6 +391,7 @@ MapHandlers[] = { MITYPE_COMPATFLAG, COMPATF_DEHHEALTH}, { MITYPE_COMPATFLAG, COMPATF_TRACE}, { MITYPE_COMPATFLAG, COMPATF_DROPOFF}, + { MITYPE_COMPATFLAG, COMPATF_BOOMSCROLL}, }; static const char *MapInfoClusterLevel[] = @@ -1000,7 +1002,8 @@ static void ParseMapInfoLower (MapInfoHandler *handlers, break; case MITYPE_COMPATFLAG: - SC_MustGetNumber(); + if (!SC_CheckNumber()) sc_Number = 1; + if (levelinfo != NULL) { if (sc_Number) levelinfo->compatflags |= (DWORD)handler->data1; diff --git a/src/g_level.h b/src/g_level.h index 945dc04ce6..b73c064ab6 100644 --- a/src/g_level.h +++ b/src/g_level.h @@ -93,20 +93,19 @@ #define LEVEL_LAXMONSTERACTIVATION UCONST64(0x400000000) // Monsters can open doors depending on the door speed #define LEVEL_LAXACTIVATIONMAPINFO UCONST64(0x800000000) // LEVEL_LAXMONSTERACTIVATION is not a default. -#define LEVEL_ADDITIVE_SCROLLERS UCONST64(0x1000000000) // scrollers add their momentum instead of averaging it -#define LEVEL_CAVERNS_OF_DARKNESS UCONST64(0x2000000000) // to translate the special sector types of CoD. +#define LEVEL_CAVERNS_OF_DARKNESS UCONST64(0x1000000000) // to translate the special sector types of CoD. -#define LEVEL_KEEPFULLINVENTORY UCONST64(0x4000000000) // doesn't reduce the amount of inventory items to 1 +#define LEVEL_KEEPFULLINVENTORY UCONST64(0x2000000000) // doesn't reduce the amount of inventory items to 1 -#define LEVEL_MUSICDEFINED UCONST64(0x8000000000) // a marker to disable the $map command in SNDINFO for this map -#define LEVEL_MONSTERFALLINGDAMAGE UCONST64(0x10000000000) -#define LEVEL_CLIPMIDTEX UCONST64(0x20000000000) -#define LEVEL_WRAPMIDTEX UCONST64(0x40000000000) +#define LEVEL_MUSICDEFINED UCONST64(0x4000000000) // a marker to disable the $map command in SNDINFO for this map +#define LEVEL_MONSTERFALLINGDAMAGE UCONST64(0x8000000000) +#define LEVEL_CLIPMIDTEX UCONST64(0x10000000000) +#define LEVEL_WRAPMIDTEX UCONST64(0x20000000000) -#define LEVEL_CROUCH_NO UCONST64(0x80000000000) -#define LEVEL_CROUCH_YES UCONST64(0x100000000000) +#define LEVEL_CROUCH_NO UCONST64(0x40000000000) +#define LEVEL_CROUCH_YES UCONST64(0x80000000000) -#define LEVEL_PAUSE_MUSIC_IN_MENUS UCONST64(0x200000000000) +#define LEVEL_PAUSE_MUSIC_IN_MENUS UCONST64(0x100000000000) struct acsdefered_s; diff --git a/src/m_options.cpp b/src/m_options.cpp index d46b3fc9fc..68f1562e14 100644 --- a/src/m_options.cpp +++ b/src/m_options.cpp @@ -987,6 +987,7 @@ static menuitem_t CompatibilityItems[] = { { bitflag, "DEH health settings like Doom2.exe", {&compatflags}, {0}, {0}, {0}, {(value_t *)COMPATF_DEHHEALTH} }, { bitflag, "Self ref. sectors don't block shots", {&compatflags}, {0}, {0}, {0}, {(value_t *)COMPATF_TRACE} }, { bitflag, "Monsters get stuck over dropoffs", {&compatflags}, {0}, {0}, {0}, {(value_t *)COMPATF_DROPOFF} }, + { bitflag, "Boom scrollers are additive", {&compatflags}, {0}, {0}, {0}, {(value_t *)COMPATF_BOOMSCROLL} }, { discrete, "Interpolate monster movement", {&nomonsterinterpolation}, {2.0}, {0.0}, {0.0}, {NoYes} }, }; diff --git a/src/p_mobj.cpp b/src/p_mobj.cpp index 70c1c3b84f..2c5f631c44 100644 --- a/src/p_mobj.cpp +++ b/src/p_mobj.cpp @@ -2703,7 +2703,7 @@ void AActor::Tick () // Some levels designed with Boom in mind actually want things to accelerate // at neighboring scrolling sector boundaries. But it is only important for // non-player objects. - if (player != NULL || !(level.flags & LEVEL_ADDITIVE_SCROLLERS)) + if (player != NULL || !(i_compatflags & COMPATF_BOOMSCROLL)) { if (countx > 1) {