From 26b8646ec1191c342c9351ac190c892885b92a7b Mon Sep 17 00:00:00 2001 From: Nemrtvi <26684396+Nemrtvi@users.noreply.github.com> Date: Mon, 25 Mar 2019 07:40:06 +0100 Subject: [PATCH 1/7] Redo Strife accent letters There are no longer any spaces between the letters and their respective accents. In the previous state of GZDoom, these letters were forcibly squished by 1px vertically, and it made for a terribly inconsistent look (especially with the Strife E). --- .../game-strife/fonts/defsmallfont/00C0.lmp | Bin 166 -> 172 bytes .../game-strife/fonts/defsmallfont/00C1.lmp | Bin 166 -> 172 bytes .../game-strife/fonts/defsmallfont/00C2.lmp | Bin 166 -> 176 bytes .../game-strife/fonts/defsmallfont/00C8.lmp | Bin 147 -> 148 bytes .../game-strife/fonts/defsmallfont/00C9.lmp | Bin 147 -> 147 bytes .../game-strife/fonts/defsmallfont/00CA.lmp | Bin 147 -> 149 bytes .../game-strife/fonts/defsmallfont/00CC.lmp | Bin 83 -> 83 bytes .../game-strife/fonts/defsmallfont/00CD.lmp | Bin 83 -> 83 bytes .../game-strife/fonts/defsmallfont/00CE.lmp | Bin 118 -> 118 bytes .../game-strife/fonts/defsmallfont/00D2.lmp | Bin 162 -> 170 bytes .../game-strife/fonts/defsmallfont/00D3.lmp | Bin 162 -> 170 bytes .../game-strife/fonts/defsmallfont/00D4.lmp | Bin 164 -> 172 bytes .../game-strife/fonts/defsmallfont/00D9.lmp | Bin 156 -> 157 bytes .../game-strife/fonts/defsmallfont/00DA.lmp | Bin 156 -> 157 bytes .../game-strife/fonts/defsmallfont/00DB.lmp | Bin 155 -> 157 bytes .../game-strife/fonts/defsmallfont/00DD.lmp | Bin 158 -> 154 bytes .../game-strife/fonts/defsmallfont/0150.lmp | Bin 168 -> 177 bytes .../game-strife/fonts/defsmallfont/0170.lmp | Bin 161 -> 160 bytes 18 files changed, 0 insertions(+), 0 deletions(-) diff --git a/wadsrc_extra/static/filter/game-strife/fonts/defsmallfont/00C0.lmp b/wadsrc_extra/static/filter/game-strife/fonts/defsmallfont/00C0.lmp index 0ba3368a1386fd438c1d5a28aea4c5fecdd92ac2..f6a85de06032b0f416f102403ee91817f0f518dc 100644 GIT binary patch literal 172 zcmXAiQ4N4F3`9G~*n%1yAfO2XFn|F55r6;$AdS_>c-<~}>s`}!vt$tovhc33!43zU zaKQ}^ybwlp#a^n%ug9WVLsF#{_mY__$UG!^#k!x&Jhir}HQRUTw_U%ZhL{^{%}OA=^~)= E0_Sf$h5!Hn literal 166 zcmX|)!3}^g2t}zHZJfrtcQ2g0JAeZ?fD1T+%L#kb*Vah#$P0YJC{aX$O!OHRSYd-5 z4mjb08=79fN?9LOQ!Q$0zgp2S5H&X^AvlSWmcf{P9-Xz<0|^|I51yx~?dq@e0wUHq AMgRZ+ diff --git a/wadsrc_extra/static/filter/game-strife/fonts/defsmallfont/00C2.lmp b/wadsrc_extra/static/filter/game-strife/fonts/defsmallfont/00C2.lmp index acea55a33cd3409aa525d73c7c8fa8a5297d6c07..0e1ca243117919e2e8130f9536862d3d1094feea 100644 GIT binary patch literal 176 zcmXwy(G7qg3`9$eXq?6k9Du|HT)+YRcK{b~0T+Yrq3=YGJh*Eq4Az@ju#tU&85US! zgB=by;eya4sjbJYm}@L4-PRK^rG}h~>Yqpccn^*5ksje1G}FZ4tERbIF) BJWK!p diff --git a/wadsrc_extra/static/filter/game-strife/fonts/defsmallfont/00C8.lmp b/wadsrc_extra/static/filter/game-strife/fonts/defsmallfont/00C8.lmp index 2ae54ea148ed9ed33138f9a335ab33095cef5de1..27eab31ac4c2e22631f56815acd1980450c23428 100644 GIT binary patch literal 148 zcmXwxyA6Oa3`A{-PuPW;p4t)%umB4%05w};?-8CAi1nPivy(}Rh^Wl;1yZOouXs literal 147 zcmXAhyAgme3`3pp3%k%#Gk^*fU;!3j09v-h*(1CV-#tmT&z>!rS+E6NVS^nGIN^dD u9*DjEDshlrCl?E793}VGr|Rw*EtWFwS*?-&l-Y!dvwA?TUzriQHuwNr2`@$f diff --git a/wadsrc_extra/static/filter/game-strife/fonts/defsmallfont/00C9.lmp b/wadsrc_extra/static/filter/game-strife/fonts/defsmallfont/00C9.lmp index 7368e46b37804dcfa9c662a8fa49fa83188532e3..5b484d57994f25060e780c617c35e9bc8c09ee2f 100644 GIT binary patch literal 147 zcmYj}u@QhU3K_-;1fSx#Tur12$jtfDAVGJ~O#d7u@i` r3vtwTN|>41h$4wi&3egLGpBJ=rMdpak!;@IG+jRk6N%Ll2a@>#5-Bn; diff --git a/wadsrc_extra/static/filter/game-strife/fonts/defsmallfont/00CC.lmp b/wadsrc_extra/static/filter/game-strife/fonts/defsmallfont/00CC.lmp index 204b2e8fdc4910fb64c9affc768d48f2e4724e07..6560c2ba70d714dfe9b7a896b2f633898339bd7e 100644 GIT binary patch delta 37 hcmWFzo?xu-=rIs@d;e$P@b-QJ20#uYn>Q5v2LN!P5_SLp delta 37 lcmWFzo?xut{pj)I$KKxm892PXpLjn30w9Nx%^M2-0{~J-5k&w1 diff --git a/wadsrc_extra/static/filter/game-strife/fonts/defsmallfont/00CD.lmp b/wadsrc_extra/static/filter/game-strife/fonts/defsmallfont/00CD.lmp index 1e86dc114cd08783d139b7e412ac551a75b58de9..4bafd8b2ecfecacfa6a74a5628dd32ecc6aee9ef 100644 GIT binary patch delta 44 ncmWFzo}i=t=rIs@d;e$Pc>MSY7=SqJPo8)~z<<Amcv(D?t|o delta 44 pcmWFzo}i=d{pj)I$KKxm88{w4e&YQE2tXWm5CsPR85n`|e*grK71IC! diff --git a/wadsrc_extra/static/filter/game-strife/fonts/defsmallfont/00CE.lmp b/wadsrc_extra/static/filter/game-strife/fonts/defsmallfont/00CE.lmp index 291543fc9ff9bd19c3615a5d5d14e06feeb992a2..ff19a7c40dc354e683c5b5c5471b501a45e01097 100644 GIT binary patch delta 22 bcmXRbo8Zp(=rIs@d;e$P08&pThAIL8i`Wa< delta 22 bcmXRbo8Zpp{pj)I$KKxm88|@H#85>5e_aZw diff --git a/wadsrc_extra/static/filter/game-strife/fonts/defsmallfont/00D2.lmp b/wadsrc_extra/static/filter/game-strife/fonts/defsmallfont/00D2.lmp index 0daaba4ecd83b2bdfd46342a3d0d159fdf47cdfc..80788d6f9fe07ba6056709783a810074ab461f72 100644 GIT binary patch literal 170 zcmX|)%MpMe3eC%&@=; z8|-kv36+oKWY=INuYKEX1RLG^sH`0lF_TXs9KXSGR&3vGG3dfe{W6grw^k&G?4%R diff --git a/wadsrc_extra/static/filter/game-strife/fonts/defsmallfont/00D3.lmp b/wadsrc_extra/static/filter/game-strife/fonts/defsmallfont/00D3.lmp index 7dcb65cfc7a0c7eb90fdccd7b0ad57dd8e080ff9..9aebc7b42b02edd95743214b60aefb0a3b55ce8f 100644 GIT binary patch literal 170 zcmX|)yA6Oa3`A|d5!2Ap)6p;hBQOFBumC-)Veb*1QzX)}&pGQnNfHs2nYzFVI~;Jr z1vfnKLep*KWgY0BQL>IG_o@*wWMS73eM>L1Sr~Or?qQgRnTT>0N@9d#@?Q`Bj{rE% literal 162 zcmYL?!3}^Q5Cjj1O034GZ@Y`_L=z!H30o?IU|har;8W;SrgC{aY5Oymp;tgyij w2b^%h4Iv~u#dqXWtw%JQx`E8eN|9)aeI;l8i)y_ii#SF+E0hOqZ?*Q*3%?vRbpQYW diff --git a/wadsrc_extra/static/filter/game-strife/fonts/defsmallfont/00D4.lmp b/wadsrc_extra/static/filter/game-strife/fonts/defsmallfont/00D4.lmp index 7b41d7b8861153ee4057a04c5bec09644fb83ad4..ef2dacfc5e5f34b4361ee5967421758e1d5ab823 100644 GIT binary patch literal 172 zcmZXNu?>JQ3wd!|G@KIg6K_vH=uT|E8( literal 164 zcmd;L;9y{2U}P`=k`_Sh48#FI91Fx*KwJ*QEkHaGi01$?GqX1c{AXkXQI9}O1`ZJ8 s(UZpz&Z9?_fG0p5KsL-^FcW4M01N~jS|2bi+$Gc9NqRR~G_znc?*c1qu)_ff pPPiZp`scAoyK~M2LKX%?T1rhisYpFhHH_cB_jJQ3Jv}Ru>=DjMuyp=^OYd2th&Wl;D{QdC0ViB= s!vj8On<5V5N7XkaT#;y+b7m8&s@5=YR}F|oH?*ldn}HcjvqGr<3>=RiKY`0}Jb3~(0IZM$D2#3bQ0PAZcvv;x literal 156 zcmXYp!4ZHk2n0!-DE8vpzi%wS4s5^%EWs9qKJW-Kvth{%%)~@gXu-RJ4ea0mC%C{3 t9#ETPc^ySwRZLyY4DMyhIGhF%^p?$uRV~t0*|B!F#^e2mEd+KQwVTK>z>% literal 155 zcmXwx!4ZHU3TDe)CR12jMbt<8 literal 158 zcmXYqyA6Oa3`CueM8q_7l(a~08G#X4fC(tsFU}s}8L;$xXP;z`QbZ)kM4w@S6*k!6 zfD15UcU(-5VDhumnr60UNLYJ9D=WoFzt*S?0kDjFLno$i$psffY8` z;eZn^xS{ECT_p_ck1|S#m|1m6IVQ3%Gy-xSh!!da<dM;SyU$;6ytffY8` x;eZn^xFKha^L9P+2}>o+EnEgw<3=KwIUydw{kIxwjdiPeIH5#Mt0%1e_W_?uInw|D diff --git a/wadsrc_extra/static/filter/game-strife/fonts/defsmallfont/0170.lmp b/wadsrc_extra/static/filter/game-strife/fonts/defsmallfont/0170.lmp index 826cb05ae5bce50f0660ac4e6f30245ac0be4780..9fad344057671d63ee3f635e155dc3d834e4caf7 100644 GIT binary patch literal 160 zcmYL>Q4N4F3waISccvab1VoI9Kj6_hiBGurHI}CrSUVo|{4ee9$dV@ppW9cZ9KbCekr2qf` From 6c91d15b0a95d9009ba55ebfbb8e132c53fc70c6 Mon Sep 17 00:00:00 2001 From: "alexey.lysiuk" Date: Mon, 25 Mar 2019 12:59:36 +0200 Subject: [PATCH 2/7] - fixed adjustment of options menu slider with mouse https://forum.zdoom.org/viewtopic.php?t=64063 --- wadsrc/static/zscript/ui/menu/optionmenuitems.zs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wadsrc/static/zscript/ui/menu/optionmenuitems.zs b/wadsrc/static/zscript/ui/menu/optionmenuitems.zs index 246710e946..c4b65a46d3 100644 --- a/wadsrc/static/zscript/ui/menu/optionmenuitems.zs +++ b/wadsrc/static/zscript/ui/menu/optionmenuitems.zs @@ -811,8 +811,8 @@ class OptionMenuSliderBase : OptionMenuItem lm.ReleaseFocus(); } - int slide_left = mDrawX+8*CleanXfac_1; - int slide_right = slide_left + (10*8*CleanXfac_1 >> mSliderShort); // 12 char cells with 8 pixels each. + int slide_left = mDrawX+16*CleanXfac_1; + int slide_right = slide_left + (10*16*CleanXfac_1 >> mSliderShort); // 10 char cells with 16 pixels each. if (type == Menu.MOUSE_Click) { From 95bcc46acc5a601dc3a593aa39fbe97c011b73fb Mon Sep 17 00:00:00 2001 From: usernameak Date: Mon, 25 Mar 2019 21:40:41 +0200 Subject: [PATCH 3/7] Fixed postprocess shaders with 2 or more textures --- src/rendering/gl/shaders/gl_postprocessshader.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rendering/gl/shaders/gl_postprocessshader.cpp b/src/rendering/gl/shaders/gl_postprocessshader.cpp index 0e87275e00..09a23dbec1 100644 --- a/src/rendering/gl/shaders/gl_postprocessshader.cpp +++ b/src/rendering/gl/shaders/gl_postprocessshader.cpp @@ -221,7 +221,7 @@ void PostProcessShaderInstance::BindTextures() { glUniform1i(location, textureUnit); - glActiveTexture(GL_TEXTURE0 + 1); + glActiveTexture(GL_TEXTURE0 + textureUnit); auto it = mTextureHandles.find(tex); if (it == mTextureHandles.end()) { From 493d4b420095cda537c661ee094a49b3d9edb7b4 Mon Sep 17 00:00:00 2001 From: Nemrtvi <26684396+Nemrtvi@users.noreply.github.com> Date: Mon, 25 Mar 2019 23:23:52 +0100 Subject: [PATCH 4/7] Em dash for Strife Necessary for Russian quest logs. --- .../game-strife/fonts/defsmallfont2/2014.lmp | Bin 0 -> 138 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 wadsrc_extra/static/filter/game-strife/fonts/defsmallfont2/2014.lmp diff --git a/wadsrc_extra/static/filter/game-strife/fonts/defsmallfont2/2014.lmp b/wadsrc_extra/static/filter/game-strife/fonts/defsmallfont2/2014.lmp new file mode 100644 index 0000000000000000000000000000000000000000..b09ea4d63eda3971e9ae8f48fb490d326d29e80f GIT binary patch literal 138 zcmbu%p%s8I5CqY^XnHw|!r|i9;cz${E{?i$Ob>|v#?7Lps#&X~4LdrF11B!rcrfrn NVY}4q%)g09CLg54ASM6+ literal 0 HcmV?d00001 From ddc67fb1bcbc0e429a0cb3c7ba6ae15d74c4bfca Mon Sep 17 00:00:00 2001 From: Rachael Alexanderson Date: Mon, 25 Mar 2019 23:51:43 -0400 Subject: [PATCH 5/7] - fix missing texture in Strife MAP15 --- wadsrc/static/zscript/level_compatibility.zs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/wadsrc/static/zscript/level_compatibility.zs b/wadsrc/static/zscript/level_compatibility.zs index 0c83e8e64f..4ed450d9a4 100644 --- a/wadsrc/static/zscript/level_compatibility.zs +++ b/wadsrc/static/zscript/level_compatibility.zs @@ -892,6 +892,12 @@ class LevelCompatibility native play break; } + case '8D7A24B169717907DDA8399D8C1655DF': // strife1.wad map15 + { + SetWallTexture(319, Line.back, Side.top, "WALTEK21"); + break; + } + case 'DB31D71B11E3E4393B9C0CCB44A8639F': // rop_2015.wad e1m5 { // Lower floor a bit so secret switch becomes accessible From 0422f40d80d9a80c17fb9bab76205c12d82898af Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 26 Mar 2019 17:02:40 +0100 Subject: [PATCH 6/7] - restored calling OnRegister for event handlers after loading a savegame It should be said in no uncertain terms that OnRegister operates on an uninitialized level so it should only be used for setting up the registering process of the event handler itself and nothing else - not even the event handler's data!!! --- src/events.cpp | 7 +++++++ src/events.h | 2 ++ src/p_saveg.cpp | 1 + 3 files changed, 10 insertions(+) diff --git a/src/events.cpp b/src/events.cpp index 5b39d7f547..69de8cca54 100755 --- a/src/events.cpp +++ b/src/events.cpp @@ -46,6 +46,13 @@ EventManager staticEventManager; EventManager eventManager; +void EventManager::CallOnRegister() +{ + for (DStaticEventHandler* handler = FirstEventHandler; handler; handler = handler->next) + { + handler->OnRegister(); + } +} bool EventManager::RegisterHandler(DStaticEventHandler* handler) { diff --git a/src/events.h b/src/events.h index 79c75023a7..7608dfa1ae 100755 --- a/src/events.h +++ b/src/events.h @@ -240,6 +240,8 @@ struct EventManager ~EventManager() { Shutdown(); } bool ShouldCallStatic(bool forplay); + // for use after loading a savegame. The old handler explicitly reinstalled all handlers instead of doing a list deserialization which resulted in OnRegister being called even when a save was loaded. + void CallOnRegister(); // register bool RegisterHandler(DStaticEventHandler* handler); // unregister diff --git a/src/p_saveg.cpp b/src/p_saveg.cpp index 7421185ee3..b7584bb1df 100644 --- a/src/p_saveg.cpp +++ b/src/p_saveg.cpp @@ -994,6 +994,7 @@ void FLevelLocals::Serialize(FSerializer &arc, bool hubload) // [ZZ] serialize events arc("firstevent", localEventManager->FirstEventHandler) ("lastevent", localEventManager->LastEventHandler); + localEventManager->CallOnRegister(); Thinkers.SerializeThinkers(arc, hubload); arc("polyobjs", Polyobjects); SerializeSubsectors(arc, "subsectors"); From 0341a3d75ba05e0711ff9de20fc51ec12d0f6e74 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 26 Mar 2019 00:38:54 +0100 Subject: [PATCH 7/7] - made the gross railing hack for Strife a compatibility option and restricted it to MAP04 The side effects here broke other maps and this is really too glitchy to be turned on unless really necesasary. --- src/doomdef.h | 3 ++- src/gamedata/g_mapinfo.cpp | 1 + src/gamedata/g_mapinfo.h | 2 +- src/gamedata/stringtable.cpp | 2 +- src/maploader/compatibility.cpp | 1 + src/maploader/maploader.cpp | 5 ----- src/maploader/udmf.cpp | 2 +- src/p_map.cpp | 2 +- wadsrc/static/mapinfo/strife.txt | 1 + wadsrc/static/menudef.txt | 1 + wadsrc/static/zscript/constants.zs | 3 ++- 11 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/doomdef.h b/src/doomdef.h index 42b5168500..1e0abadafa 100644 --- a/src/doomdef.h +++ b/src/doomdef.h @@ -330,7 +330,8 @@ enum : unsigned int COMPATF2_PUSHWINDOW = 1 << 6, // Disable the window check in CheckForPushSpecial() COMPATF2_CHECKSWITCHRANGE = 1 << 7, // Enable buggy CheckSwitchRange behavior COMPATF2_EXPLODE1 = 1 << 8, // No vertical explosion thrust - COMPATF2_EXPLODE2 = 1 << 9 // Use original explosion code throughout. + COMPATF2_EXPLODE2 = 1 << 9, // Use original explosion code throughout. + COMPATF2_RAILING = 1 << 10, // Bugged Strife railings. }; // Emulate old bugs for select maps. These are not exposed by a cvar diff --git a/src/gamedata/g_mapinfo.cpp b/src/gamedata/g_mapinfo.cpp index 969affe212..6f7d88694c 100644 --- a/src/gamedata/g_mapinfo.cpp +++ b/src/gamedata/g_mapinfo.cpp @@ -1644,6 +1644,7 @@ MapFlagHandlers[] = { "compat_checkswitchrange", MITYPE_COMPATFLAG, 0, COMPATF2_CHECKSWITCHRANGE }, { "compat_explode1", MITYPE_COMPATFLAG, 0, COMPATF2_EXPLODE1 }, { "compat_explode2", MITYPE_COMPATFLAG, 0, COMPATF2_EXPLODE2 }, + { "compat_railing", MITYPE_COMPATFLAG, 0, COMPATF2_RAILING }, { "cd_start_track", MITYPE_EATNEXT, 0, 0 }, { "cd_end1_track", MITYPE_EATNEXT, 0, 0 }, { "cd_end2_track", MITYPE_EATNEXT, 0, 0 }, diff --git a/src/gamedata/g_mapinfo.h b/src/gamedata/g_mapinfo.h index f9cd2f6f4a..f4c74de085 100644 --- a/src/gamedata/g_mapinfo.h +++ b/src/gamedata/g_mapinfo.h @@ -225,7 +225,7 @@ enum ELevelFlags : unsigned int LEVEL2_FORCETEAMPLAYOFF = 0x00080000, LEVEL2_CONV_SINGLE_UNFREEZE = 0x00100000, - LEVEL2_RAILINGHACK = 0x00200000, // but UDMF requires them to be separate to have more control + // = 0x00200000, // unused, was LEVEL2_RAILINGHACK LEVEL2_DUMMYSWITCHES = 0x00400000, LEVEL2_HEXENHACK = 0x00800000, // Level was defined in a Hexen style MAPINFO diff --git a/src/gamedata/stringtable.cpp b/src/gamedata/stringtable.cpp index a710ac000c..3505470c26 100644 --- a/src/gamedata/stringtable.cpp +++ b/src/gamedata/stringtable.cpp @@ -97,7 +97,7 @@ TArray> FStringTable::parseCSV(const TArray &buffer) while (vend > vcopy && myisspace((unsigned char)vend[-1])) *--vend = 0; // skip over trailing whitespace */ - for (int i = 0; i < bufLength; ++i) + for (size_t i = 0; i < bufLength; ++i) { if (buffer[i] == '"') { diff --git a/src/maploader/compatibility.cpp b/src/maploader/compatibility.cpp index 11283dbe12..63586a1a71 100644 --- a/src/maploader/compatibility.cpp +++ b/src/maploader/compatibility.cpp @@ -167,6 +167,7 @@ static FCompatOption Options[] = { "checkswitchrange", COMPATF2_CHECKSWITCHRANGE, SLOT_COMPAT2 }, { "explode1", COMPATF2_EXPLODE1, SLOT_COMPAT2 }, { "explode2", COMPATF2_EXPLODE2, SLOT_COMPAT2 }, + { "railing", COMPATF2_RAILING, SLOT_COMPAT2 }, { NULL, 0, 0 } }; diff --git a/src/maploader/maploader.cpp b/src/maploader/maploader.cpp index 81da37591a..fb5866d79c 100644 --- a/src/maploader/maploader.cpp +++ b/src/maploader/maploader.cpp @@ -3004,11 +3004,6 @@ void MapLoader::LoadLevel(MapData *map, const char *lumpname, int position) if (!map->HasBehavior && !map->isText) { - // set compatibility flags - if (gameinfo.gametype == GAME_Strife) - { - Level->flags2 |= LEVEL2_RAILINGHACK; - } Level->flags2 |= LEVEL2_DUMMYSWITCHES; } diff --git a/src/maploader/udmf.cpp b/src/maploader/udmf.cpp index b8eac3744a..a1caea6598 100644 --- a/src/maploader/udmf.cpp +++ b/src/maploader/udmf.cpp @@ -2161,7 +2161,7 @@ public: case NAME_Strife: namespace_bits = St; Level->Translator = P_LoadTranslator("xlat/strife_base.txt"); - Level->flags2 |= LEVEL2_DUMMYSWITCHES|LEVEL2_RAILINGHACK; + Level->flags2 |= LEVEL2_DUMMYSWITCHES; floordrop = true; break; default: diff --git a/src/p_map.cpp b/src/p_map.cpp index 00183fd10b..6f7165b4c5 100644 --- a/src/p_map.cpp +++ b/src/p_map.cpp @@ -976,7 +976,7 @@ bool PIT_CheckLine(FMultiBlockLinesIterator &mit, FMultiBlockLinesIterator::Chec // better than Strife's handling of rails, which lets you jump into rails // from either side. How long until somebody reports this as a bug and I'm // forced to say, "It's not a bug. It's a feature?" Ugh. - (!(tm.thing->Level->flags2 & LEVEL2_RAILINGHACK) || + (!(tm.thing->Level->i_compatflags2 & COMPATF2_RAILING) || open.bottom == tm.thing->Sector->floorplane.ZatPoint(ref))) { open.bottom += 32; diff --git a/wadsrc/static/mapinfo/strife.txt b/wadsrc/static/mapinfo/strife.txt index b4649c2626..d38f742e67 100644 --- a/wadsrc/static/mapinfo/strife.txt +++ b/wadsrc/static/mapinfo/strife.txt @@ -627,6 +627,7 @@ map MAP04 LOOKUP "TXT_STRIFE_MAP04" sky1 = "SKYMNT02" music = "D_FAST" cluster = 1 + compat_railing } map MAP05 LOOKUP "TXT_STRIFE_MAP05" diff --git a/wadsrc/static/menudef.txt b/wadsrc/static/menudef.txt index 12f7685ace..dc7ae08342 100644 --- a/wadsrc/static/menudef.txt +++ b/wadsrc/static/menudef.txt @@ -1661,6 +1661,7 @@ OptionMenu "CompatPhysicsMenu" protected Option "$CMPTMNU_MISSILECLIP", "compat_MISSILECLIP", "YesNo" Option "$CMPTMNU_EXPLODE1", "compat_explode1", "YesNo" Option "$CMPTMNU_EXPLODE2", "compat_explode2", "YesNo" + Option "$CMPTMNU_RAILINGHACK", "compat_railing", "YesNo" Class "CompatibilityMenu" } diff --git a/wadsrc/static/zscript/constants.zs b/wadsrc/static/zscript/constants.zs index 4fdc29fdac..ad3065fe42 100644 --- a/wadsrc/static/zscript/constants.zs +++ b/wadsrc/static/zscript/constants.zs @@ -1341,5 +1341,6 @@ enum ECompatFlags COMPATF2_PUSHWINDOW = 1 << 6, // Disable the window check in CheckForPushSpecial() COMPATF2_CHECKSWITCHRANGE = 1 << 7, // Enable buggy CheckSwitchRange behavior COMPATF2_EXPLODE1 = 1 << 8, // No vertical explosion thrust - COMPATF2_EXPLODE2 = 1 << 9 // Use original explosion code throughout. + COMPATF2_EXPLODE2 = 1 << 9, // Use original explosion code throughout. + COMPATF2_RAILING = 1 << 10, // Bugged Strife railings. };