raze/wadsrc/static/zscript/games/level_compatibility.zs
2023-12-05 21:58:36 +01:00

79 lines
2.8 KiB
Text

class LevelCompatibility : LevelPostProcessor
{
protected void Apply(Name checksum, String mapname)
{
switch (checksum)
{
case 'none':
return;
case '91003239cfe780bf4c1de08e0a2b7cc2': // Duke E2L1
case 'b522da99f32a71ab31fc27aaba9b7f43': // Duke E2L1 World Tour
SplitSector(37, 269, 274); // sector bleeds into another area.
break;
case '459c71d47b5beaa058253e162fd5a5c2': // World Tour e5l1.map
for(int i = 1373; i <= 1376; i++) SetSpriteSector(i, 860); // fix bad sector in a few sprites.
break;
case 'c3bfb6a6e7cded2e5fe16cea86632d79': // CP07
SplitSector(33, 192, 196); // sector bleeds into another area.
break;
case '24c7b1434070dbe01fa83c6a48926ed9': // RR E1L1.map
SplitSector(47, 367, 375); // sector bleeds into another area.
walls[4592].dragpoint((1615., -2715.)); // fix overlapping sectors
break;
case 'd7bf49213531cd2607e0459b950ac454': // RR E2L7.map
// need to add a sprite with texture (RRJAILDOOR) lotag = 48, hitag = 32, sector = 534
// see premap_r.cpp, line 477.
break;
case '491a04a732cd5aa253703216ff2feff4': // RR E1L2.map
walls[3312].cstat |= CSTAT_WALL_BOTTOM_SWAP; // missing lower texture .
break;
case '4f2233ed8fb32f6a3deebc7803dbed69': // SW $plax.map
SplitSector(64, 281, 283); // sector bleeds into another area.
break;
case '5e49c7f6c496e337d59d0c072ed1879b': // SW $bath.map
SplitSector(198, 1105, 1125); // sector bleeds into another area.
break;
case 'b4ee363e9d15adc5c9becd01520acd23': // SW $outpost.map
SetSpriteLotag(442, -1); // silence a misplaced and *very* annoying ambient sound.
break;
case '25d4164814f10cd71d26d52d494c4fb8': // WT $auto.map
sectors[152].exflags |= SECTOREX_DONTCLIP; // workaround for sector object overlapping with an outer wall.
break;
case '2bac4971499306ee6c86462e6a03dae8': // WT $volcano.map (original version)
case '67207fb90130ad561479301c0970c7ba': // WT $volcano.map (fixed version)
sectors[118].ceilingstat &= ~CSTAT_SECTOR_SKY;
sectors[57].ceilingstat &= ~CSTAT_SECTOR_SKY;
sectors[281].ceilingstat &= ~CSTAT_SECTOR_SKY;
break;
case '745182e393945e0d308e8e0a5ee80c3c': // SW Last Warrior level 4.
sw_serp_continue(); // Do not make the serpent's death end the game. The menu has no second episode so this needs to continue.
break;
case 'c6f9e49e397c0b424e8030abc23ac003': // TD $shore.map
ChangeSpriteFlags(298, CSTAT_SPRITE_YFLIP, 0); // flip inverted keyhole
ChangeSpriteFlags(307, CSTAT_SPRITE_YFLIP, 0); // flip inverted keyhole
break;
case 'ef6331237eb36c84a4f7b9f5c3cd225d': // TD level 10
ChangeSpriteFlags(179, CSTAT_SPRITE_XFLIP | CSTAT_SPRITE_YFLIP, 0); // flip the inverted card reader
break;
}
}
}