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 '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 picnum 11 (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; } } }