diff --git a/src/compatibility.cpp b/src/compatibility.cpp index 9fd9f5746..080391af1 100644 --- a/src/compatibility.cpp +++ b/src/compatibility.cpp @@ -90,6 +90,8 @@ enum CP_SETTHINGFLAGS, CP_SETVERTEX, CP_SETTHINGSKILLS, + CP_SETSECTORTEXTURE, + CP_SETSECTORLIGHT, }; // EXTERNAL FUNCTION PROTOTYPES -------------------------------------------- @@ -398,6 +400,33 @@ void ParseCompatibility() sc.MustGetNumber(); CompatParams.Push(sc.Number); } + else if (sc.Compare("setsectortexture")) + { + if (flags.ExtCommandIndex == ~0u) flags.ExtCommandIndex = CompatParams.Size(); + CompatParams.Push(CP_SETSECTORTEXTURE); + sc.MustGetNumber(); + CompatParams.Push(sc.Number); + sc.MustGetString(); + CompatParams.Push(sc.MustMatchString(SectorPlanes)); + sc.MustGetString(); + const FString texName = sc.String; + const unsigned int texIndex = TexNames.Find(texName); + const unsigned int texCount = TexNames.Size(); + if (texIndex == texCount) + { + TexNames.Push(texName); + } + CompatParams.Push(texIndex); + } + else if (sc.Compare("setsectorlight")) + { + if (flags.ExtCommandIndex == ~0u) flags.ExtCommandIndex = CompatParams.Size(); + CompatParams.Push(CP_SETSECTORLIGHT); + sc.MustGetNumber(); + CompatParams.Push(sc.Number); + sc.MustGetNumber(); + CompatParams.Push(sc.Number); + } else { sc.UnGet(); @@ -690,6 +719,35 @@ void SetCompatibilityParams() i += 3; break; } + case CP_SETSECTORTEXTURE: + { + if ((unsigned)CompatParams[i + 1] < level.sectors.Size()) + { + sector_t *sec = &level.sectors[CompatParams[i+1]]; + assert (sec != nullptr); + secplane_t& plane = sector_t::floor == CompatParams[i + 2] + ? sec->floorplane + : sec->ceilingplane; + assert(TexNames.Size() > (unsigned int)CompatParams[i + 3]); + const FTextureID texID = TexMan.GetTexture(TexNames[CompatParams[i + 3]], FTexture::TEX_Any); + + sec->SetTexture(CompatParams[i + 2], texID); + } + i += 4; + break; + } + case CP_SETSECTORLIGHT: + { + if ((unsigned)CompatParams[i + 1] < level.sectors.Size()) + { + sector_t *sec = &level.sectors[CompatParams[i+1]]; + assert (sec != nullptr); + + sec->SetLightLevel((unsigned)CompatParams[i + 2]); + } + i += 3; + break; + } } } } diff --git a/wadsrc/static/compatibility.txt b/wadsrc/static/compatibility.txt index e11ba449b..4c9576e18 100644 --- a/wadsrc/static/compatibility.txt +++ b/wadsrc/static/compatibility.txt @@ -488,9 +488,16 @@ F6EE16F770AD309D608EA0B1F1E249FC // Ultimate Doom, e4m3 { setsectorspecial 147 0 } +EBDAC00E9D25D884B2C8F4B1F0390539 // doom2.wad map21 +{ + // push ceiling down in glitchy sectors above the stair switches + setsectoroffset 50 ceil -56 + setsectoroffset 54 ceil -56 +} 110F84DE041052B59307FAF0293E6BC0 // Doom II, map27 { setsectorspecial 93 0 + setwalltexture 582 back top ZIMMER3 } ABC4EB5A1535ECCD0061AD14F3547908 // Plutonia Experiment, map26 { @@ -626,3 +633,13 @@ CA3773ED313E8899311F3DD0CA195A68 // e3m6 setwalltexture 1277 back top CSTLRCK setwalltexture 1278 front top CSTLRCK } + +39C594CAC07EE51C80F757DA465FCC94 // strife1.wad map10 +{ + // fix the shooting range by matching sector 138 and 145 properties together + setsectoroffset 145 floor -32 + setsectoroffset 145 ceil 40 + setsectortexture 145 floor F_CONCRP + setsectorlight 138 192 + setwalltexture 3431 back top BRKGRY01 +} \ No newline at end of file diff --git a/wadsrc/static/iwadinfo.txt b/wadsrc/static/iwadinfo.txt index 777a94f85..526c41c5a 100644 --- a/wadsrc/static/iwadinfo.txt +++ b/wadsrc/static/iwadinfo.txt @@ -110,6 +110,7 @@ IWad MustContain = "MAP35", "I_RELB", "FXAA_F" BannerColors = "f0 f0 f0", "6b 3c 18" Required = "Strife: Quest for the Sigil" + Load = "voices.wad" } IWad @@ -412,6 +413,7 @@ Names "hexdd.wad" "hexendemo.wad" "hexdemo.wad" + "sve.wad" "strife1.wad" "strife0.wad" "strife.wad" @@ -430,5 +432,4 @@ Names "hacx2.wad" "square1.pk3" "delaweare.wad" - "sve.wad" }