mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-12-11 13:11:48 +00:00
17e689ecdf
Genesis of Descent E1M2 is impossible to complete on ITYTD/HNTR. I had to decompile the ACS script to figure out what was going on, basically at one point you get locked into a room and have to kill exactly 3 enemies with TID 215 for the door to unlock. One of these is a Baron tagged for only Medium and Hard, in his place is an Imp #1184 that has all the right script setups but is not set to appear on any difficulty. The fix is to simply have this imp appear on Easy. Thanks to brick' for the fix.
2177 lines
72 KiB
Text
2177 lines
72 KiB
Text
|
|
class LevelCompatibility : LevelPostProcessor
|
|
{
|
|
protected void Apply(Name checksum, String mapname)
|
|
{
|
|
switch (checksum)
|
|
{
|
|
case 'none':
|
|
return;
|
|
|
|
case '9BC9E12781903D7C2D5697A5E0AEFD6F': // HACX.WAD map05 from 21.10.2010
|
|
case '9527DD0809FDA39CCFC316A21D135783': // HACX.WAD map05 from 20.10.2010
|
|
{
|
|
// fix non-functional self-referencing sector hack.
|
|
for(int i = 578; i < 582; i++)
|
|
SetLineSectorRef(i, Line.back, 91);
|
|
|
|
for(int i = 707; i < 714; i++)
|
|
SetLineSectorRef(i, Line.back, 91);
|
|
|
|
SetLineSectorRef(736, Line.front, 91);
|
|
SetLineSectorRef(659, Line.front, 91);
|
|
SetLineSpecial(659, Transfer_Heights, 60);
|
|
break;
|
|
}
|
|
|
|
|
|
case 'E2B5D1400279335811C1C1C0B437D9C8': // Deathknights of the Dark Citadel, map54
|
|
{
|
|
// This map has two gear boxes which are flagged for player cross
|
|
// activation instead of the proper player uses activation.
|
|
SetLineActivation(943, SPAC_Use);
|
|
SetLineActivation(963, SPAC_Use);
|
|
break;
|
|
}
|
|
|
|
case '3F249EDD62A3A08F53A6C53CB4C7ABE5': // Artica 3 map01
|
|
{
|
|
ClearLineSpecial(66);
|
|
break;
|
|
}
|
|
|
|
case 'F481922F4881F74760F3C0437FD5EDD0': // Community Chest 3 map03
|
|
{
|
|
// I have no idea how this conveyor belt setup manages to work under Boom.
|
|
// Set the sector the voodoo doll ends up standing on when sectors tagged
|
|
// 1 are raised so that the voodoo doll will be carried.
|
|
SetLineSpecial(3559, Sector_CopyScroller, 17, 6);
|
|
break;
|
|
}
|
|
|
|
case '5B862477519B21B30059A466F2FF6460': // Khorus, map08
|
|
{
|
|
// This map uses a voodoo conveyor with slanted walls to shunt the
|
|
// voodoo doll into side areas. For some reason, this voodoo doll
|
|
// is unable to slide on them, because the slide calculation gets
|
|
// them slightly inside the walls and thinks they are stuck. I could
|
|
// not reproduce this with the real player, which is what has me
|
|
// stumped. So, help them out be attaching some ThrustThing specials
|
|
// to the walls.
|
|
SetLineSpecial(443, ThrustThing, 96, 4);
|
|
SetLineFlags(443, Line.ML_REPEAT_SPECIAL);
|
|
SetLineActivation(443, SPAC_Push);
|
|
SetLineSpecial(455, ThrustThing, 96, 4);
|
|
SetLineFlags(455, Line.ML_REPEAT_SPECIAL);
|
|
SetLineActivation(455, SPAC_Push);
|
|
break;
|
|
}
|
|
|
|
case '3D1E36E50F5A8D289E15433941605224': // Master Levels, catwalk.wad
|
|
{
|
|
// make it impossible to open door to 1-way bridge before getting red key
|
|
ClearSectorTags(35);
|
|
AddSectorTag(35, 15);
|
|
for(int i=605; i<609;i++)
|
|
{
|
|
SetLineActivation(i, SPAC_Cross);
|
|
SetLineSpecial(i, Door_Open, 15, 64);
|
|
}
|
|
break;
|
|
}
|
|
|
|
case '3B9CAA02952F405269353FAAD8F8EC33': // Master Levels, nessus.wad
|
|
{
|
|
// move secret sector from too-thin doorframe to BFG closet
|
|
SetSectorSpecial(211, 0);
|
|
SetSectorSpecial(212, 1024);
|
|
// lower floor a bit so secret sector can be entered fully
|
|
OffsetSectorPlane(212, Sector.floor, -16);
|
|
// make secret door stay open so you can't get locked in closet
|
|
SetLineSpecial(1008, Door_Open, 0, 64);
|
|
break;
|
|
}
|
|
|
|
case '7ED9800213C00D6E7FB98652AB48B3DE': // Ultimate Simplicity, map04
|
|
{
|
|
// Add missing map spots on easy and medium skills
|
|
// Demons will teleport into starting room making 100% kills possible
|
|
SetThingSkills(31, 31);
|
|
SetThingSkills(32, 31);
|
|
break;
|
|
}
|
|
|
|
case '1891E029994B023910CFE0B3209C3CDB': // Ultimate Simplicity, map07
|
|
{
|
|
// It is possible to get stuck on skill 0 or 1 when no shots have been fired
|
|
// after sector 17 became accessible and before entering famous mancubus room.
|
|
// Monsters from the mentioned sector won't be alerted and so
|
|
// they won't teleport into the battle. ACS will wait forever for their deaths.
|
|
SetLineSpecial(397, NoiseAlert);
|
|
SetLineSpecial(411, NoiseAlert);
|
|
break;
|
|
}
|
|
|
|
case 'F0E6F30F57B0425F17E43600AA813E80': // Ultimate Simplicity, map11
|
|
{
|
|
// If door (sector #309) is closed it cannot be open again
|
|
// from one side potentially blocking level progression
|
|
ClearLineSpecial(2445);
|
|
break;
|
|
}
|
|
|
|
case '952CC8D03572E17BA550B01B366EFBB9': // Cheogsh map01
|
|
{
|
|
// make the blue key spawn above the 3D floor
|
|
SetThingZ(918, 296);
|
|
break;
|
|
}
|
|
|
|
case 'D62DCA9EC226DE49108D5DD9271F7631': // Cheogsh 2 map04
|
|
{
|
|
// Stuff in megasphere cage is positioned too low
|
|
for(int i=1640; i<=1649; i++)
|
|
{
|
|
SetThingZ(i, 528);
|
|
}
|
|
break;
|
|
}
|
|
|
|
case '0F898F0688AECD42F2CD102FAE06F271': // TNT: Evilution MAP07
|
|
{
|
|
// Dropping onto the outdoor lava now also raises the
|
|
// triangle sectors.
|
|
SetLineSpecial(320, Floor_RaiseToNearest, 16, 32);
|
|
SetLineActivation(320, SPAC_Cross);
|
|
SetLineSpecial(959, Floor_RaiseToNearest, 16, 32);
|
|
SetLineActivation(959, SPAC_Cross);
|
|
SetLineSpecial(960, Floor_RaiseToNearest, 16, 32);
|
|
SetLineActivation(960, SPAC_Cross);
|
|
// Dropping into the holes themselves raises sectors
|
|
for(int i=0; i<9; i++)
|
|
{
|
|
SetLineSpecial(999+i, Floor_RaiseToNearest, 16, 32);
|
|
SetLineActivation(999+i, SPAC_Cross);
|
|
}
|
|
break;
|
|
}
|
|
|
|
case '1E785E841A5247B6223C042EC712EBB3': // TNT: Evilution MAP08
|
|
{
|
|
// Missing texture when lowering sector to red keycard
|
|
SetWallTexture(480, Line.back, Side.bottom, "METAL2");
|
|
break;
|
|
}
|
|
|
|
case 'DFC18B92BF3E8142B8684ECD8BD2EF06': // TNT: Evilution map15
|
|
{
|
|
// raise up sector with its counterpart so 100% kills becomes possible
|
|
AddSectorTag(330, 11);
|
|
break;
|
|
}
|
|
|
|
case '55C8DA7B531AE47014AD73FFF4687A36': // TNT: Evilution MAP21
|
|
{
|
|
// Missing texture that is most likely unintentional
|
|
SetWallTexture(1138, Line.front, Side.top, "PANEL4");
|
|
break;
|
|
}
|
|
|
|
case '2C4A3356C5EB3526D2C72A4AA4B18A36': // TNT: Evilution map29
|
|
{
|
|
// remove mancubus who always gets stuck in teleport tunnel, preventing
|
|
// 100% kills on HMP
|
|
SetThingFlags(405, 0);
|
|
break;
|
|
}
|
|
|
|
case 'A53AE580A4AF2B5D0B0893F86914781E': // TNT: Evilution map31
|
|
case '55192065F7FAA7D161767145DA008293': // TNT Anthology/GOG MAP31
|
|
{
|
|
// The famous missing yellow key...
|
|
SetThingFlags(470, 2016);
|
|
// Fix textures on the two switches that rise from the floor in the eastern area
|
|
for (int i = 0; i < 8; i++)
|
|
{
|
|
SetLineFlags(1676 + i, 0, Line.ML_DONTPEGBOTTOM);
|
|
}
|
|
break;
|
|
}
|
|
|
|
case 'D99AD22FF21A41B4EECDB3A7C803D75E': // TNT: Evilution map32
|
|
{
|
|
// door can close permanently; make switch that opens it repeatable
|
|
SetLineFlags(872, Line.ML_REPEAT_SPECIAL);
|
|
// switch should only open way to red key, don't lower bars yet,
|
|
// instead make line just before red key open bars
|
|
ClearSectorTags(197);
|
|
AddSectorTag(197, 8);
|
|
SetLineSpecial(1279, Floor_LowerToLowest, 8, 32);
|
|
SetLineActivation(1240, SPAC_Cross);
|
|
SetLineSpecial(1240, Floor_LowerToLowest, 38, 32);
|
|
break;
|
|
}
|
|
|
|
case '56D4060662C290791822EDB7225273B7': // Plutonia Experiment MAP08
|
|
{
|
|
// Raising ceiling causing a HOM.
|
|
OffsetSectorPlane(130, Sector.ceiling, 16);
|
|
break;
|
|
}
|
|
|
|
case '25A16C30CD10157382C01E5DD9C6604B': // Plutonia Experiment MAP10
|
|
{
|
|
// Missing textures
|
|
SetWallTexture(548, Line.front, Side.bottom, "METAL");
|
|
SetSectorTexture(71, Sector.ceiling, "FLOOR7_1");
|
|
SetWallTexture(1010, Line.front, Side.top, "GSTONE1");
|
|
break;
|
|
}
|
|
|
|
case '1EF7DEAECA03DE03BF363A3193757B5C': // PLUTONIA.wad map11
|
|
{
|
|
SetLineSectorRef(41, Line.back, 6);
|
|
break;
|
|
}
|
|
|
|
case 'B02ACA32AE9630042543037BA630CDE9': // Plutonia Experiment MAP13
|
|
{
|
|
// Textures on wrong side at level start.
|
|
SetWallTexture(107, Line.back, Side.top, "A-BROWN1");
|
|
SetWallTexture(119, Line.back, Side.top, "A-BROWN1");
|
|
break;
|
|
}
|
|
|
|
case 'ECA0559E85EFFB6966ECB8DE01E3A35B': // Plutonia Experiment MAP16
|
|
{
|
|
// Have it so that the slime pit at the end of the level can
|
|
// actually kill the player.
|
|
SetSectorSpecial(95, 768);
|
|
SetSectorSpecial(96, 768);
|
|
break;
|
|
}
|
|
|
|
case '9D84B423D8FD28553DDE23B55F97CF4A': // Plutonia Experiment MAP25
|
|
{
|
|
// Missing texture at level exit.
|
|
SetWallTexture(1152, Line.front, Side.top, "A-BROCK2");
|
|
break;
|
|
}
|
|
|
|
case 'ABC4EB5A1535ECCD0061AD14F3547908': // Plutonia Experiment, map26
|
|
{
|
|
SetSectorSpecial(156, 0);
|
|
// Missing textures
|
|
SetWallTexture(322, Line.front, Side.top, "A-MUD");
|
|
SetWallTexture(323, Line.front, Side.top, "A-MUD");
|
|
break;
|
|
}
|
|
|
|
case 'A2634C462717328CC1AD81E81EE77B08': // Plutonia Experiment MAP28
|
|
{
|
|
// Missing textures
|
|
SetWallTexture(675, Line.front, Side.bottom, "BRICK10");
|
|
SetWallTexture(676, Line.front, Side.bottom, "BRICK10");
|
|
SetWallTexture(834, Line.front, Side.bottom, "WOOD8");
|
|
SetWallTexture(835, Line.front, Side.bottom, "WOOD8");
|
|
SetWallTexture(2460, Line.front, Side.top, "BIGDOOR7");
|
|
SetWallTexture(2496, Line.front, Side.top, "BRICK10");
|
|
|
|
// Allow a player to leave the room in deathmatch without
|
|
// needing another player to activate a switch.
|
|
SetLineSpecial(1033, Floor_LowerToLowest, 10, 8);
|
|
SetLineActivation(1033, SPAC_Use);
|
|
break;
|
|
}
|
|
|
|
case '850AC6D62F0AC57A4DD7EBC2689AC38E': // Plutonia Experiment MAP29
|
|
{
|
|
// Texture applied on bottom instead of top
|
|
SetWallTexture(2842, Line.front, Side.top, "A-BROCK2");
|
|
break;
|
|
}
|
|
|
|
case '279BB50468FE9F5B36C6D821E4902369': // Plutonia Experiment map30
|
|
{
|
|
// Missing texture and unpegged gate texture during boss reveal
|
|
SetWallTexture(730, Line.front, Side.bottom, "ROCKRED1");
|
|
SetLineFlags(730, 0, Line.ML_DONTPEGBOTTOM);
|
|
// flag items in deathmatch-only area correctly so that 100% items
|
|
// are possible in solo
|
|
SetThingFlags(250, 17);
|
|
SetThingFlags(251, 17);
|
|
SetThingFlags(252, 17);
|
|
SetThingFlags(253, 17);
|
|
SetThingFlags(254, 17);
|
|
SetThingFlags(206, 17);
|
|
break;
|
|
}
|
|
|
|
case 'D5F64E02679A81B82006AF34A6A8EAC3': // Plutonia Experiment MAP32
|
|
{
|
|
// Missing textures
|
|
TextureID mosrok = TexMan.CheckForTexture("A-MOSROK", TexMan.Type_Wall);
|
|
for(int i=0; i<4; i++)
|
|
{
|
|
SetWallTextureID(569+i, Line.front, Side.top, MOSROK);
|
|
}
|
|
SetWallTexture(805, Line.front, Side.top, "A-BRICK3");
|
|
break;
|
|
}
|
|
|
|
case '3B68019EE3154C284B90F0CAEDBD8D8A': // Plutonia 2 MAP05
|
|
{
|
|
// Missing texture
|
|
TextureID step1 = TexMan.CheckForTexture("STEP1", TexMan.Type_Wall);
|
|
SetWallTextureID(1525, Line.front, Side.bottom, step1);
|
|
break;
|
|
}
|
|
|
|
case 'FB613B36589FFB09AA2C03633A7D13F4': // Plutonia 2 MAP20
|
|
{
|
|
// Remove the pain elementals stuck in the closet boxes that cannot teleport.
|
|
SetThingFlags(758,0);
|
|
SetThingFlags(759,0);
|
|
SetThingFlags(764,0);
|
|
SetThingFlags(765,0);
|
|
break;
|
|
}
|
|
|
|
case 'A3165C53F9BF0B7D80CDB14665A349EB': // Plutonia 2 MAP23
|
|
{
|
|
// Arch-vile in outdoor secret area sometimes don't spawn if revenants
|
|
// block its one-time teleport. Make this teleport repeatable to ensure
|
|
// maxkills are always possible.
|
|
SetLineFlags(756, Line.ML_REPEAT_SPECIAL);
|
|
break;
|
|
}
|
|
|
|
case '9191658A6705B131AB005948E2FDFCE1': // Plutonia 2 MAP24
|
|
{
|
|
// Fix improperly pegged blue door
|
|
for(int i = 957; i <= 958; i++)
|
|
{
|
|
SetLineFlags(i, 0, Line.ML_DONTPEGTOP);
|
|
level.lines[i].sidedef[0].SetTextureYOffset(Side.top,-24);
|
|
}
|
|
break;
|
|
}
|
|
|
|
case 'EF251B8F36DE709901B0D32A97F341D7': // Plutonia 2 MAP27
|
|
{
|
|
// Remove the monsters stuck in the closet boxes that cannot teleport.
|
|
|
|
// Top row, 2nd from left
|
|
SetThingFlags(156,0);
|
|
SetThingFlags(210,0);
|
|
SetThingFlags(211,0);
|
|
|
|
// 2nd row, 2nd-5th from left
|
|
for(int i = 242; i <= 249; i++)
|
|
SetThingFlags(i,0);
|
|
|
|
// 3rd row, rightmost box
|
|
SetThingFlags(260,0);
|
|
SetThingFlags(261,0);
|
|
SetThingFlags(266,0);
|
|
SetThingFlags(271,0);
|
|
SetThingFlags(272,0);
|
|
SetThingFlags(277,0);
|
|
SetThingFlags(278,0);
|
|
SetThingFlags(283,0);
|
|
|
|
break;
|
|
}
|
|
|
|
case '4CB7AAC5C43CF32BDF05FD36481C1D9F': // Plutonia: Revisited map27
|
|
{
|
|
SetLineSpecial(1214, Plat_DownWaitUpStayLip, 20, 64, 150);
|
|
SetLineSpecial(1215, Plat_DownWaitUpStayLip, 20, 64, 150);
|
|
SetLineSpecial(1216, Plat_DownWaitUpStayLip, 20, 64, 150);
|
|
SetLineSpecial(1217, Plat_DownWaitUpStayLip, 20, 64, 150);
|
|
SetLineSpecial(1227, Plat_DownWaitUpStayLip, 20, 64, 150);
|
|
break;
|
|
}
|
|
|
|
case '5B26545FF21B051CA06D389CE535684C': // doom.wad e1m4
|
|
{
|
|
// missing textures
|
|
SetWallTexture(693, Line.back, Side.top, "BROWN1");
|
|
// fix HOM errors with sectors too low
|
|
OffsetSectorPlane(9, Sector.floor, 8);
|
|
OffsetSectorPlane(105, Sector.floor, 8);
|
|
OffsetSectorPlane(132, Sector.floor, 8);
|
|
OffsetSectorPlane(137, Sector.floor, 8);
|
|
break;
|
|
}
|
|
|
|
case 'A24FE135D5B6FD427FE27BEF89717A65': // doom.wad e2m2
|
|
{
|
|
// missing textures
|
|
SetWallTexture(947, Line.back, Side.top, "BROWN1");
|
|
SetWallTexture(1596, Line.back, Side.top, "WOOD1");
|
|
break;
|
|
}
|
|
|
|
case '1BC04D646B32D3A3E411DAF3C1A38FF8': // doom.wad e2m4
|
|
{
|
|
// missing textures
|
|
SetWallTexture(551, Line.back, Side.top, "PIPE4");
|
|
SetWallTexture(865, Line.back, Side.bottom, "STEP5");
|
|
SetWallTexture(1062, Line.front, Side.top, "GSTVINE1");
|
|
SetWallTexture(1071, Line.front, Side.top, "MARBLE1");
|
|
// Door requiring yellow keycard can only be opened once,
|
|
// change other side to one-shot Door_Open
|
|
SetLineSpecial(165, Door_Open, 0, 16);
|
|
SetLineFlags(165, 0, Line.ML_REPEAT_SPECIAL);
|
|
break;
|
|
}
|
|
|
|
case '99C580AD8FABE923CAB485CB7F3C5E5D': // doom.wad e2m5
|
|
{
|
|
// missing textures
|
|
SetWallTexture(590, Line.back, Side.top, "GRAYBIG");
|
|
SetWallTexture(590, Line.front, Side.bottom, "BROWN1");
|
|
SetWallTexture(1027, Line.back, Side.top, "SP_HOT1");
|
|
// Replace tag for eastern secret at level start to not
|
|
// cause any action to the two-Baron trap
|
|
ClearSectorTags(127);
|
|
AddSectorTag(127, 100);
|
|
SetLineSpecial(382, Door_Open, 100, 16);
|
|
SetLineSpecial(388, Door_Open, 100, 16);
|
|
break;
|
|
}
|
|
|
|
case '3838AB29292587A7EE3CA71E7040868D': // doom.wad e2m6
|
|
{
|
|
// missing texture
|
|
SetWallTexture(1091, Line.back, Side.top, "compspan");
|
|
break;
|
|
}
|
|
|
|
case '8590F489879870C098CD7029C3187159': // doom.wad e2m7
|
|
{
|
|
// missing texture
|
|
SetWallTexture(1286, Line.front, Side.bottom, "SHAWN2");
|
|
break;
|
|
}
|
|
|
|
case '8A6399FAAA2E68649D4E4B16642074BE': // doom.wad e2m9
|
|
{
|
|
// missing textures
|
|
SetWallTexture(121, Line.back, Side.top, "SW1LION");
|
|
SetWallTexture(123, Line.back, Side.top, "GSTONE1");
|
|
SetWallTexture(140, Line.back, Side.top, "GSTONE1");
|
|
break;
|
|
}
|
|
|
|
case 'BBDC4253AE277DA5FCE2F19561627496': // Doom E3M2
|
|
{
|
|
// Switch at index finger repeatable in case of being stuck
|
|
SetLineFlags(368, Line.ML_REPEAT_SPECIAL);
|
|
break;
|
|
}
|
|
|
|
case '2B65CB046EA40D2E44576949381769CA': // Commercial Doom e3m4
|
|
{
|
|
// This line is erroneously specified as Door_Raise that monsters
|
|
// can operate. If they do, they block you off from half the map. Change
|
|
// this into a one-shot Door_Open so that it won't close.
|
|
SetLineSpecial(1069, Door_Open, 0, 16);
|
|
SetLineFlags(1069, 0, Line.ML_REPEAT_SPECIAL);
|
|
// Fix HOM error from AASTINKY texture
|
|
SetWallTexture(470, Line.front, Side.top, "BIGDOOR2");
|
|
break;
|
|
}
|
|
|
|
case '100106C75157B7DECB0DCAD2A59C1919': // Doom E3M5
|
|
{
|
|
// Replace AASTINKY textures
|
|
SetWallTexture(833, Line.front, Side.mid, "FIREWALL");
|
|
SetWallTexture(834, Line.front, Side.mid, "FIREWALL");
|
|
SetWallTexture(836, Line.front, Side.mid, "FIREWALL");
|
|
SetWallTexture(839, Line.front, Side.mid, "FIREWALL");
|
|
// Missing textures at the door leading to the BFG
|
|
SetWallTexture(1329, Line.back, Side.bottom, "METAL");
|
|
SetWallTexture(1330, Line.back, Side.bottom, "METAL");
|
|
break;
|
|
}
|
|
|
|
case '5AC51CA9F1B57D4538049422A5E37291': // doom.wad e3m7
|
|
{
|
|
// missing textures
|
|
SetWallTexture(901, Line.back, Side.bottom, "GSTONE1");
|
|
SetWallTexture(971, Line.back, Side.top, "SP_HOT1");
|
|
break;
|
|
}
|
|
|
|
case 'FE97DCB9E6235FB3C52AE7C143160D73': // Doom E3M9
|
|
{
|
|
// Missing textures
|
|
SetWallTexture(102, Line.back, Side.bottom, "STONE3");
|
|
SetWallTexture(445, Line.back, Side.bottom, "GRAY4");
|
|
// First door cannot be opened from inside and can stop you
|
|
// from finishing the level if somehow locked in.
|
|
SetLineSpecial(24, Door_Open, 0, 16);
|
|
SetLineActivation(24, SPAC_Use);
|
|
SetLineFlags(24, Line.ML_REPEAT_SPECIAL);
|
|
// Door that requires blue skull can only be opened once,
|
|
// make it repeatable in case of being locked
|
|
SetLineFlags(194, Line.ML_REPEAT_SPECIAL);
|
|
break;
|
|
}
|
|
|
|
case 'DA0C8281AC70EEC31127C228BCD7FE2C': // doom.wad e4m1
|
|
{
|
|
// missing textures
|
|
TextureID support3 = TexMan.CheckForTexture("SUPPORT3", TexMan.Type_Wall);
|
|
for(int i=0; i<4; i++)
|
|
{
|
|
SetWallTextureID(252+i, Line.back, Side.top, SUPPORT3);
|
|
}
|
|
SetWallTexture(322, Line.back, Side.bottom, "GSTONE1");
|
|
SetWallTexture(470, Line.front, Side.top, "GSTONE1");
|
|
break;
|
|
}
|
|
|
|
case '771092812F38236C9DF2CB06B2D6B24F': // Ultimate Doom E4M2
|
|
{
|
|
// Missing texture
|
|
SetWallTexture(165, Line.back, Side.top, "WOOD5");
|
|
break;
|
|
}
|
|
|
|
case 'F6EE16F770AD309D608EA0B1F1E249FC': // Ultimate Doom, e4m3
|
|
{
|
|
// Remove unreachable secrets
|
|
SetSectorSpecial(124, 0);
|
|
SetSectorSpecial(125, 0);
|
|
// clear staircase to secret area
|
|
SetSectorSpecial(127, 0);
|
|
SetSectorSpecial(128, 0);
|
|
SetSectorSpecial(129, 0);
|
|
SetSectorSpecial(130, 0);
|
|
SetSectorSpecial(131, 0);
|
|
SetSectorSpecial(132, 0);
|
|
SetSectorSpecial(133, 0);
|
|
SetSectorSpecial(134, 0);
|
|
SetSectorSpecial(136, 0);
|
|
SetSectorSpecial(137, 0);
|
|
SetSectorSpecial(138, 0);
|
|
SetSectorSpecial(147, 0);
|
|
SetSectorSpecial(148, 0);
|
|
SetSectorSpecial(149, 0);
|
|
SetSectorSpecial(150, 0);
|
|
SetSectorSpecial(151, 0);
|
|
SetSectorSpecial(152, 0);
|
|
SetSectorSpecial(155, 0);
|
|
// Stuck Imp
|
|
SetThingXY(69, -656, -1696);
|
|
// One line special at the northern lifts is incorrect, change
|
|
// to a repeatable line you can walk over to lower lift
|
|
SetLineSpecial(46, Plat_DownWaitUpStayLip, 1, 32, 105, 0);
|
|
SetLineActivation(46, SPAC_AnyCross);
|
|
SetLineFlags(46, Line.ML_REPEAT_SPECIAL);
|
|
break;
|
|
}
|
|
|
|
case 'AAECADD4D97970AFF702D86FAFAC7D17': // doom.wad e4m4
|
|
{
|
|
// missing textures
|
|
TextureID brownhug = TexMan.CheckForTexture("BROWNHUG", TexMan.Type_Wall);
|
|
SetWallTextureID(427, Line.back, Side.top, BROWNHUG);
|
|
SetWallTextureID(558, Line.back, Side.top, BROWNHUG);
|
|
SetWallTextureID(567, Line.front, Side.top, BROWNHUG);
|
|
SetWallTextureID(572, Line.front, Side.top, BROWNHUG);
|
|
break;
|
|
}
|
|
|
|
case 'C2E09AB0BDD03925305A48AE935B71CA': // Ultimate Doom E4M5
|
|
{
|
|
// Missing textures
|
|
SetWallTexture(19, Line.back, Side.bottom, "GSTONE1");
|
|
SetWallTexture(109, Line.back, Side.top, "GSTONE1");
|
|
SetWallTexture(711, Line.back, Side.bottom, "FIRELAV2");
|
|
SetWallTexture(713, Line.back, Side.bottom, "FIRELAV2");
|
|
// Lower ceiling on teleporter to fix HOMs.
|
|
OffsetSectorPlane(35, Sector.ceiling, -24);
|
|
break;
|
|
}
|
|
|
|
case 'CBBFF61A8C231DFFC8E8A2A2BAEB77FF': // Ultimate Doom E4M6
|
|
{
|
|
// Textures on wrong side at Yellow Skull room.
|
|
SetWallTexture(475, Line.back, Side.top, "MARBLE2");
|
|
SetWallTexture(476, Line.back, Side.top, "MARBLE2");
|
|
SetWallTexture(479, Line.back, Side.top, "MARBLE2");
|
|
SetWallTexture(480, Line.back, Side.top, "MARBLE2");
|
|
SetWallTexture(481, Line.back, Side.top, "MARBLE2");
|
|
SetWallTexture(482, Line.back, Side.top, "MARBLE2");
|
|
break;
|
|
}
|
|
|
|
case '94D4C869A0C02EF4F7375022B36AAE45': // Ultimate Doom, e4m7
|
|
{
|
|
// Remove unreachable secrets
|
|
SetSectorSpecial(263, 0);
|
|
SetSectorSpecial(264, 0);
|
|
break;
|
|
}
|
|
|
|
case '2DC939E508AB8EB68AF79D5B60568711': // Ultimate Doom E4M8
|
|
{
|
|
// Missing texture
|
|
SetWallTexture(425, Line.front, Side.mid, "SP_HOT1");
|
|
break;
|
|
}
|
|
|
|
case 'AB24AE6E2CB13CBDD04600A4D37F9189': // doom2.wad map02
|
|
case '1EC0AF1E3985650F0C9000319C599D0C': // doom2bfg.wad map02
|
|
{
|
|
// Missing textures
|
|
TextureID stone4 = TexMan.CheckForTexture("STONE4", TexMan.Type_Wall);
|
|
SetWallTextureID(327, Line.front, Side.bottom, stone4);
|
|
SetWallTextureID(328, Line.front, Side.bottom, stone4);
|
|
SetWallTextureID(338, Line.front, Side.bottom, stone4);
|
|
SetWallTextureID(339, Line.front, Side.bottom, stone4);
|
|
break;
|
|
}
|
|
|
|
case 'CEC791136A83EEC4B91D39718BDF9D82': // doom2.wad map04
|
|
{
|
|
// missing textures
|
|
SetWallTexture(456, Line.back, Side.top, "SUPPORT3");
|
|
TextureID stone = TexMan.CheckForTexture("STONE", TexMan.Type_Wall);
|
|
SetWallTextureID(108, Line.front, Side.top, STONE);
|
|
SetWallTextureID(109, Line.front, Side.top, STONE);
|
|
SetWallTextureID(110, Line.front, Side.top, STONE);
|
|
SetWallTextureID(111, Line.front, Side.top, STONE);
|
|
SetWallTextureID(127, Line.front, Side.top, STONE);
|
|
SetWallTextureID(128, Line.front, Side.top, STONE);
|
|
// remove erroneous blue keycard pickup ambush sector tags
|
|
// (nearby viewing windows, and the lights)
|
|
ClearSectorTags(19);
|
|
ClearSectorTags(20);
|
|
ClearSectorTags(23);
|
|
ClearSectorTags(28);
|
|
ClearSectorTags(33);
|
|
ClearSectorTags(34);
|
|
ClearSectorTags(83);
|
|
ClearSectorTags(85);
|
|
// Visually align floors between crushers
|
|
SetLineSpecial(3, Transfer_Heights, 14, 6);
|
|
break;
|
|
}
|
|
|
|
case '9E061AD7FBCD7FAD968C976CB4AA3B9D': // doom2.wad map05
|
|
{
|
|
// fix bug with opening westmost door in door hallway
|
|
// incorrect sector tagging - see doomwiki.org for more info
|
|
ClearSectorTags(4);
|
|
ClearSectorTags(153);
|
|
// Missing textures
|
|
SetWallTexture(489, Line.back, Side.top, "SUPPORT3");
|
|
SetWallTexture(560, Line.back, Side.top, "SUPPORT3");
|
|
break;
|
|
}
|
|
|
|
case '291F24417FB3DD411339AE82EF9B3597': // Doom II MAP07
|
|
{
|
|
// Missing texture at BFG deathmatch spawn.
|
|
SetWallTexture(168, Line.back, Side.bottom, "BRONZE3");
|
|
SetLineFlags(168, 0, Line.ML_DONTPEGBOTTOM);
|
|
break;
|
|
}
|
|
|
|
case '66C46385EB1A23D60839D1532522076B': // doom2.wad map08
|
|
{
|
|
// Missing texture
|
|
SetWallTexture(101, Line.back, Side.top, "BRICK7");
|
|
break;
|
|
}
|
|
|
|
case '6C620F43705BEC0ABBABBF46AC3E62D2': // Doom II MAP10
|
|
{
|
|
// Allow player to leave exit room
|
|
SetLineSpecial(786, Door_Raise, 0, 16, 150, 0);
|
|
SetLineActivation(786, SPAC_Use);
|
|
SetLineFlags(786, Line.ML_REPEAT_SPECIAL);
|
|
break;
|
|
}
|
|
|
|
case '1AF4DEC2627360A55B3EB397BC15C39D': // Doom II MAP12
|
|
{
|
|
// Missing texture
|
|
SetWallTexture(648, Line.back, Side.bottom, "PIPES");
|
|
// Remove erroneous tag for teleporter at the south building
|
|
ClearSectorTags(149);
|
|
break;
|
|
}
|
|
|
|
case 'FBA6547B9FD44E95671A923A066E516F': // Doom II MAP13
|
|
{
|
|
// Missing texture
|
|
SetWallTexture(622, Line.back, Side.top, "BROWNGRN");
|
|
break;
|
|
}
|
|
|
|
case '5BDA34DA60C0530794CC1EA2DA017976': // doom2.wad map14
|
|
{
|
|
// missing textures
|
|
SetWallTexture(429, Line.front, Side.top, "BSTONE2");
|
|
SetWallTexture(430, Line.front, Side.top, "BSTONE2");
|
|
SetWallTexture(531, Line.front, Side.top, "BSTONE1");
|
|
SetWallTexture(1259, Line.back, Side.top, "BSTONE2");
|
|
SetWallTexture(1305, Line.back, Side.top, "BSTONE2");
|
|
|
|
TextureID bstone2 = TexMan.CheckForTexture("BSTONE2", TexMan.Type_Wall);
|
|
for(int i=0; i<3; i++)
|
|
{
|
|
SetWallTextureID(607+i, Line.back, Side.top, BSTONE2);
|
|
}
|
|
|
|
TextureID tanrock5 = TexMan.CheckForTexture("TANROCK5", TexMan.Type_Wall);
|
|
for(int i=0; i<7; i++)
|
|
{
|
|
SetWallTextureID(786+i, Line.back, Side.top, TANROCK5);
|
|
}
|
|
|
|
TextureID bstone1 = TexMan.CheckForTexture("BSTONE1", TexMan.Type_Wall);
|
|
for(int i=0; i<3; i++)
|
|
{
|
|
SetWallTextureID(1133+i, Line.back, Side.top, BSTONE1);
|
|
SetWallTextureID(1137+i, Line.back, Side.top, BSTONE1);
|
|
SetWallTextureID(1140+i, Line.back, Side.top, BSTONE1);
|
|
}
|
|
|
|
// Raise floor between lifts to correspond with others.
|
|
OffsetSectorPlane(106, Sector.floor, 16);
|
|
break;
|
|
}
|
|
|
|
case '1A540BA717BF9EC85F8522594C352F2A': // Doom II, map15
|
|
{
|
|
// Remove unreachable secret
|
|
SetSectorSpecial(147, 0);
|
|
// Missing textures
|
|
SetWallTexture(94, Line.back, Side.top, "METAL");
|
|
SetWallTexture(95, Line.back, Side.top, "METAL");
|
|
SetWallTexture(989, Line.back, Side.top, "BRICK10");
|
|
break;
|
|
}
|
|
|
|
case '6B60F37B91309DFF1CDF02E5E476210D': // Doom II MAP16
|
|
{
|
|
// Missing textures
|
|
SetWallTexture(162, Line.back, Side.top, "BRICK6");
|
|
SetWallTexture(303, Line.front, Side.top, "STUCCO");
|
|
SetWallTexture(304, Line.front, Side.top, "STUCCO");
|
|
break;
|
|
}
|
|
|
|
case 'E1CFD5C6E60C3B6C30F8B95FC287E9FE': // Doom II MAP17
|
|
{
|
|
// Missing texture
|
|
SetWallTexture(379, Line.back, Side.top, "METAL2");
|
|
break;
|
|
}
|
|
|
|
case '0D491365C1B88B7D1B603890100DD03E': // doom2.wad map18
|
|
{
|
|
// missing textures
|
|
SetWallTexture(451, Line.front, Side.mid, "metal");
|
|
SetWallTexture(459, Line.front, Side.mid, "metal");
|
|
SetWallTexture(574, Line.front, Side.top, "grayvine");
|
|
break;
|
|
}
|
|
|
|
case 'B5506B1E8F2FC272AD0C77B9E0DF5491': // doom2.wad map19
|
|
{
|
|
// missing textures
|
|
SetWallTexture(355, Line.back, Side.top, "STONE2");
|
|
SetWallTexture(736, Line.front, Side.top, "SLADWALL");
|
|
SetWallTexture(1181, Line.back, Side.top, "MARBLE1");
|
|
|
|
TextureID step4 = TexMan.CheckForTexture("STEP4", TexMan.Type_Wall);
|
|
for(int i=0; i<3; i++)
|
|
{
|
|
SetWallTextureID(286+i, Line.back, Side.bottom, STEP4);
|
|
}
|
|
// Southwest teleporter in the teleporter room now works on
|
|
// easier difficulties
|
|
SetThingSkills(112, 31);
|
|
break;
|
|
}
|
|
|
|
case 'EBDAC00E9D25D884B2C8F4B1F0390539': // doom2.wad map21
|
|
{
|
|
// push ceiling down in glitchy sectors above the stair switches
|
|
OffsetSectorPlane(50, Sector.ceiling, -56);
|
|
OffsetSectorPlane(54, Sector.ceiling, -56);
|
|
break;
|
|
}
|
|
|
|
case '4AA9B3CE449FB614497756E96509F096': // Doom II MAP22
|
|
{
|
|
// Only use switch once to raise sector to rocket launcher
|
|
SetLineFlags(120, 0, Line.ML_REPEAT_SPECIAL);
|
|
break;
|
|
}
|
|
|
|
case '94893A0DC429A22ADC4B3A73DA537E16': // Doom II MAP25
|
|
{
|
|
// Missing texture at bloodfall near level start
|
|
SetWallTexture(436, Line.back, Side.top, "STONE6");
|
|
break;
|
|
}
|
|
|
|
case '1037366026AAB4B0CF11BAB27DB90E4E': // Doom II MAP26
|
|
{
|
|
// Missing texture at level exit
|
|
SetWallTexture(761, Line.back, Side.top, "METAL2");
|
|
break;
|
|
}
|
|
|
|
case '110F84DE041052B59307FAF0293E6BC0': // Doom II, map27
|
|
{
|
|
// Remove unreachable secret
|
|
SetSectorSpecial(93, 0);
|
|
// Missing texture
|
|
SetWallTexture(582, Line.back, Side.top, "ZIMMER3");
|
|
// Make line near switch to level exit passable
|
|
SetLineFlags(342, 0, Line.ML_BLOCKING);
|
|
// Can leave Pain Elemental room if stuck
|
|
SetLineSpecial(580, Door_Open, 0, 16);
|
|
SetLineActivation(580, SPAC_Use);
|
|
SetLineSpecial(581, Door_Open, 0, 16);
|
|
SetLineActivation(581, SPAC_Use);
|
|
break;
|
|
}
|
|
|
|
case '84BB2C8ED2343C91136B87F1832E7CA5': // Doom II MAP28
|
|
{
|
|
// Missing textures
|
|
TextureID ashwall6 = TexMan.CheckForTexture("ASHWALL6", TexMan.Type_Wall);
|
|
for(int i=0; i<5; i++)
|
|
{
|
|
SetWallTextureID(103+i, Line.front, Side.top, ASHWALL6);
|
|
}
|
|
SetWallTexture(221, Line.front, Side.bottom, "BFALL1");
|
|
SetWallTexture(391, Line.front, Side.top, "BIGDOOR5");
|
|
SetWallTexture(531, Line.back, Side.top, "WOOD8");
|
|
SetWallTexture(547, Line.back, Side.top, "WOOD8");
|
|
SetWallTexture(548, Line.back, Side.top, "WOOD8");
|
|
// Raise holes near level exit when walking over them
|
|
for(int i=0; i<12; i++)
|
|
{
|
|
SetLineSpecial(584+i, Floor_RaiseToNearest, 5, 8);
|
|
SetLineActivation(584+i, SPAC_Cross);
|
|
}
|
|
break;
|
|
}
|
|
|
|
case '20251EDA21B2F2ECF6FF5B8BBC00B26C': // Doom II, MAP29
|
|
{
|
|
// Missing textures on teleporters
|
|
TextureID support3 = TexMan.CheckForTexture("SUPPORT3", TexMan.Type_Wall);
|
|
for(int i=0;i<4;i++)
|
|
{
|
|
SetWallTextureID(405+i, Line.back, Side.bottom, SUPPORT3);
|
|
SetWallTextureID(516+i, Line.back, Side.bottom, SUPPORT3);
|
|
SetWallTextureID(524+i, Line.back, Side.bottom, SUPPORT3);
|
|
SetWallTextureID(1146+i, Line.back, Side.bottom, SUPPORT3);
|
|
SetWallTextureID(1138+i, Line.back, Side.bottom, SUPPORT3);
|
|
}
|
|
// Fix missing textures at switch with Arch-Vile.
|
|
OffsetSectorPlane(152, Sector.ceiling, -32);
|
|
SetWallTexture(603, Line.back, Side.top, "WOOD5");
|
|
break;
|
|
}
|
|
|
|
case '915409A89746D6BFD92C7956BE6A0A2D': // Doom II: BFG Edition MAP33
|
|
{
|
|
// Missing textures on sector with a Super Shotgun at map start.
|
|
TextureID rock2 = TexMan.CheckForTexture("ROCK2", TexMan.Type_Wall);
|
|
for(int i=0; i<4; i++)
|
|
{
|
|
SetWallTextureID(567+i, Line.front, Side.bottom, ROCK2);
|
|
SetWallTextureID(567+i, Line.back, Side.top, ROCK2);
|
|
}
|
|
// Tags the linedefs on the teleporter at the end of the level so that
|
|
// it's possible to leave the room near the yellow keycard door.
|
|
for(int i=0; i<2; i++)
|
|
{
|
|
SetLineSpecial(400+i, Teleport, 0, 36);
|
|
SetLineSpecial(559+i, Teleport, 0, 36);
|
|
}
|
|
break;
|
|
}
|
|
|
|
case 'FF635FB9A2F076566299910F8C78F707': // nerve.wad, level04
|
|
{
|
|
SetSectorSpecial(868, 0);
|
|
break;
|
|
}
|
|
|
|
case 'D94587625BA779644D58151A87897CF1': // heretic.wad e1m2
|
|
{
|
|
// Missing textures
|
|
TextureID mossrck1 = TexMan.CheckForTexture("MOSSRCK1", TexMan.Type_Wall);
|
|
SetWallTextureID( 477, Line.back, Side.top, mossrck1);
|
|
SetWallTextureID( 478, Line.back, Side.top, mossrck1);
|
|
SetWallTextureID( 479, Line.back, Side.top, mossrck1);
|
|
SetWallTextureID(1057, Line.front, Side.top, mossrck1);
|
|
break;
|
|
}
|
|
|
|
case 'ADD0FAC41AFB0B3C9B9F3C0006F93805': // heretic.wad e1m3
|
|
{
|
|
// Broken door between the hallway that leads to a Torch
|
|
// and the passage that has a Bag of Holding at its end
|
|
OffsetSectorPlane(86, Sector.floor, -128);
|
|
OffsetSectorPlane(86, Sector.ceiling, -128);
|
|
break;
|
|
}
|
|
|
|
case '916318D8B06DAC2D83424B23E4B66531': // heretic.wad e1m4
|
|
{
|
|
// Wrong sector offsets
|
|
OffsetSectorPlane( 0, Sector.ceiling, 8);
|
|
OffsetSectorPlane( 1, Sector.ceiling, 8);
|
|
OffsetSectorPlane( 2, Sector.ceiling, 8);
|
|
OffsetSectorPlane( 3, Sector.ceiling, 8);
|
|
OffsetSectorPlane( 4, Sector.ceiling, 8);
|
|
OffsetSectorPlane( 6, Sector.ceiling, 8);
|
|
OffsetSectorPlane( 6, Sector.floor, 8);
|
|
OffsetSectorPlane(17, Sector.ceiling, 8);
|
|
// Yellow key door
|
|
OffsetSectorPlane(284, Sector.floor, -8);
|
|
OffsetSectorPlane(284, Sector.ceiling, -8);
|
|
// Missing textures
|
|
SetWallTexture(490, Line.back, Side.bottom, "GRSTNPB");
|
|
TextureID woodwl = TexMan.CheckForTexture("WOODWL", TexMan.Type_Wall);
|
|
SetWallTextureID( 722, Line.front, Side.bottom, woodwl);
|
|
SetWallTextureID( 911, Line.front, Side.bottom, woodwl);
|
|
SetWallTextureID(1296, Line.front, Side.bottom, woodwl);
|
|
break;
|
|
}
|
|
|
|
case '397A0E17A39542E4E8294E156FAB0502': // heretic.wad e2m2
|
|
{
|
|
// Missing green door statues on easy and hard difficulties
|
|
SetThingSkills(17, 31);
|
|
SetThingSkills(18, 31);
|
|
break;
|
|
}
|
|
|
|
case 'FAA0550BE9923B3A3332B4F7DB897A4A': // heretic.wad e2m7
|
|
{
|
|
// missing texture
|
|
TextureID looserck = TexMan.CheckForTexture("LOOSERCK", TexMan.Type_Wall);
|
|
SetWallTextureID( 629, Line.back, Side.top, looserck);
|
|
break;
|
|
}
|
|
|
|
case 'CA3773ED313E8899311F3DD0CA195A68': // heretic.wad e3m6
|
|
{
|
|
// Quartz flask outside of map
|
|
SetThingSkills(373, 0);
|
|
// Missing wall torch on hard difficulty
|
|
SetThingSkills(448, 31);
|
|
// Missing textures
|
|
TextureID mossrck1 = TexMan.CheckForTexture("MOSSRCK1", TexMan.Type_Wall);
|
|
SetWallTextureID(343, Line.front, Side.top, mossrck1);
|
|
SetWallTextureID(370, Line.front, Side.top, mossrck1);
|
|
break;
|
|
}
|
|
|
|
case '5E3FCFDE78310BB89F92B1626A47D0AD': // heretic.wad E4M7
|
|
{
|
|
// Missing textures
|
|
TextureID cstlrck = TexMan.CheckForTexture("CSTLRCK", TexMan.Type_Wall);
|
|
SetWallTextureID(1274, Line.front, Side.top, cstlrck);
|
|
SetWallTextureID(1277, Line.back, Side.top, cstlrck);
|
|
SetWallTextureID(1278, Line.front, Side.top, cstlrck);
|
|
break;
|
|
}
|
|
|
|
case '30D1480A6D4F3A3153739D4CCF659C4E': // heretic.wad E4M8
|
|
{
|
|
// multiplayer teleporter prevents exit on cooperative
|
|
SetThingFlags(78,MTF_DEATHMATCH);
|
|
break;
|
|
}
|
|
|
|
case '6CDA2721AA1076F063557CF89D88E92B': // hexen.wad map08
|
|
{
|
|
// Amulet of warding accidentally shifted outside of map
|
|
SetThingXY(256,-1632,2352);
|
|
// Icon of the defender outside of map
|
|
SetThingSkills(261,0);
|
|
break;
|
|
}
|
|
|
|
case '39C594CAC07EE51C80F757DA465FCC94': // strife1.wad map10
|
|
{
|
|
// fix the shooting range by matching sector 138 and 145 properties together
|
|
OffsetSectorPlane(145, Sector.floor, -32);
|
|
OffsetSectorPlane(145, Sector.ceiling, 40);
|
|
SetSectorTexture(145, Sector.floor, "F_CONCRP");
|
|
SetSectorLight(138, 192);
|
|
SetWallTexture(3431, Line.back, Side.top, "BRKGRY01");
|
|
break;
|
|
}
|
|
|
|
case '8D7A24B169717907DDA8399D8C1655DF': // strife1.wad map15
|
|
{
|
|
SetWallTexture(319, Line.back, Side.top, "WALTEK21");
|
|
break;
|
|
}
|
|
|
|
case 'D5FD90FA7A8133E7BFED682D3D313962': // strife1.wad map21
|
|
{
|
|
SetWallTexture(603, Line.front, Side.bottom, "IRON04");
|
|
break;
|
|
}
|
|
|
|
case '775CBC35C0A58326FE87AAD638FF9E2A': // Strife1.wad map29
|
|
case 'A75099ACB622C7013EE737480FCB0D67': // SVE.wad map29
|
|
// disable teleporter that would always teleport into a blocking position.
|
|
ClearLineSpecial(271);
|
|
break;
|
|
|
|
case 'DB31D71B11E3E4393B9C0CCB44A8639F': // rop_2015.wad e1m5
|
|
{
|
|
// Lower floor a bit so secret switch becomes accessible
|
|
OffsetSectorPlane(527, Sector.floor, -32);
|
|
break;
|
|
}
|
|
|
|
case 'CC3911090452D7C39EC8B3D97CEFDD6F': // jenesis.wad map16
|
|
{
|
|
// Missing texture with hardware renderer because of wrongly lowered sector
|
|
ClearSectorTags(483);
|
|
break;
|
|
}
|
|
|
|
case 'B68EB7CFB4CC481796E2919B9C16DFBD': // Moc11.wad e1m6
|
|
{
|
|
SetVertex(1650, -3072, 2671);
|
|
SetVertex(1642, -2944, 2671);
|
|
break;
|
|
}
|
|
|
|
case '5C594C67CF7721005DE71429F9811370': // Eternal Doom map03
|
|
{
|
|
// fix broken staircase. The compatibility option is not sufficient
|
|
// to reliably handle this so clear the tags from the unwanted sectors.
|
|
ClearSectorTags(212);
|
|
ClearSectorTags(213);
|
|
ClearSectorTags(214);
|
|
break;
|
|
}
|
|
case '9A4615498C3451413F1CD3D15099ACC7': // Eternal Doom map05
|
|
{
|
|
// an imp and two cyberdemons are located at the softlock area
|
|
SetThingFlags(272, GetThingFlags (272) | MTF_NOCOUNT);
|
|
SetThingFlags(273, GetThingFlags (273) | MTF_NOCOUNT);
|
|
SetThingFlags(274, GetThingFlags (274) | MTF_NOCOUNT);
|
|
break;
|
|
}
|
|
case '8B55842D5A509902738040AF10B4E787': // Eternal Doom map10
|
|
{
|
|
// soulsphere at the end of the level is there merely to replicate the start of the next map
|
|
SetThingFlags(548, GetThingFlags (548) | MTF_NOCOUNT);
|
|
break;
|
|
}
|
|
|
|
case 'DCE862393CAAA6FF1294FB7056B53057': // UAC Ultra map07
|
|
{
|
|
// Contains a scroller depending on Boom side effects
|
|
SetLineSpecial(391, Sector_CopyScroller, 99, 6);
|
|
break;
|
|
}
|
|
|
|
case '9D50EBE17CEC78938C7A668DB0768611': // Strain map07
|
|
{
|
|
// Make the exit accessible
|
|
SetLineFlags(1021, 0, Line.ML_BLOCKING);
|
|
break;
|
|
}
|
|
|
|
case '3D8ED20BF5CAAE6D6AE0E10999C75084': // hgarden.pk3 map01
|
|
{
|
|
// spawn trees on top of arches
|
|
SetThingZ(399, 168);
|
|
SetThingZ(400, 168);
|
|
SetThingZ(401, 168);
|
|
SetThingZ(402, 168);
|
|
SetThingZ(403, 168);
|
|
SetThingZ(404, 168);
|
|
break;
|
|
}
|
|
|
|
case '6DC9F6CCEAE7A91AEC48EBE506F22BC4': // void.wad MAP01
|
|
{
|
|
// Slightly squash the pillars in the starting room with "stimpacks"
|
|
// floating on them so that they can be obtained.
|
|
OffsetSectorPlane( 62, Sector.floor, -8);
|
|
OffsetSectorPlane( 63, Sector.floor, -8);
|
|
OffsetSectorPlane(118, Sector.floor, -8);
|
|
OffsetSectorPlane(119, Sector.floor, -8);
|
|
for (int i = 0; i < 8; ++i)
|
|
{
|
|
SetWallYScale(286 + i, Line.front, Side.bottom, 1.090909);
|
|
SetWallYScale(710 + i, Line.front, Side.bottom, 1.090909);
|
|
}
|
|
break;
|
|
}
|
|
|
|
case '57386AEF275684BA06756359B08F4391': // Perdition's Gate MAP03
|
|
{
|
|
// Stairs where one sector is too thin to score.
|
|
SetSectorSpecial(227, 0);
|
|
break;
|
|
}
|
|
|
|
case 'F1A9938C4FC3906A582AB7D5088B5F87': // Perdition's Gate MAP12
|
|
{
|
|
// Sector unintentionally left as a secret near switch
|
|
SetSectorSpecial(112, 0);
|
|
break;
|
|
}
|
|
|
|
case '5C419E581D9570F44A24163A83032086': // Perdition's Gate MAP27
|
|
{
|
|
// Sectors unintentionally left as secrets and cannot be scored
|
|
SetSectorSpecial(338, 0);
|
|
SetSectorSpecial(459, 0);
|
|
break;
|
|
}
|
|
|
|
case 'FCCA97FC851F6473EAA069F74247B317': // pg-raw.wad map31
|
|
{
|
|
SetLineSectorRef(331, Line.front, 74);
|
|
SetLineSectorRef(326, Line.front, 74);
|
|
SetLineSectorRef(497, Line.front, 74);
|
|
SetLineSectorRef(474, Line.front, 74);
|
|
SetLineSectorRef(471, Line.front, 74);
|
|
SetLineSectorRef(327, Line.front, 74);
|
|
SetLineSectorRef(328, Line.front, 74);
|
|
SetLineSectorRef(329, Line.front, 74);
|
|
AddSectorTag(74, 4);
|
|
SetLineSpecial(357, Transfer_Heights, 4, 6);
|
|
break;
|
|
}
|
|
|
|
case '5379C080299EB961792B50AD96821543': // Hell to Pay MAP14
|
|
{
|
|
// Two secrets are unreachable without jumping and crouching.
|
|
SetSectorSpecial(82, 0);
|
|
SetSectorSpecial(83, 0);
|
|
break;
|
|
}
|
|
|
|
case '7837B5334A277F107515D649BCEFB682': // Hell to Pay MAP22
|
|
{
|
|
// Four enemies (six if multiplayer) never spawn in the map,
|
|
// so the lines closest to them should teleport them instead.
|
|
SetLineSpecial(1835, Teleport, 0, 40);
|
|
SetLineActivation(1835, SPAC_MCross);
|
|
SetLineFlags(1835, Line.ML_REPEAT_SPECIAL);
|
|
|
|
SetLineSpecial(1847, Teleport, 0, 40);
|
|
SetLineActivation(1847, SPAC_MCross);
|
|
SetLineFlags(1847, Line.ML_REPEAT_SPECIAL);
|
|
break;
|
|
}
|
|
|
|
case '1A1AB6415851B9F17715A0C36412752E': // Hell to Pay MAP24
|
|
{
|
|
// Remove Chaingunner far below the map, making 100% kills
|
|
// impractical.
|
|
SetThingFlags(70, 0);
|
|
break;
|
|
}
|
|
|
|
case 'A7ACB57A2CAF17434D0DFE0FAC0E0480': // Hell to Pay MAP28
|
|
{
|
|
// Three Lost Souls placed outside the map for some reason.
|
|
for(int i=0; i<3; i++)
|
|
{
|
|
SetThingFlags(217+i, 0);
|
|
}
|
|
break;
|
|
}
|
|
|
|
case '2F1A18633C30E938B50B6D928C730CB6': // Hell to Pay MAP29
|
|
{
|
|
// Three Lost Souls placed outside the map, again...
|
|
for(int i=0; i<3; i++)
|
|
{
|
|
SetThingFlags(239+i, 0);
|
|
}
|
|
break;
|
|
}
|
|
|
|
case '712BB4CFBD0753178CA0C6814BE4C288': // beta version of map12 BTSX_E1
|
|
{
|
|
// patch some rendering glitches that are problematic to detect
|
|
AddSectorTag(545, 32000);
|
|
AddSectorTag(1618, 32000);
|
|
SetLineSpecial(2853, Sector_Set3DFloor, 32000, 4);
|
|
AddSectorTag(439, 32001);
|
|
AddSectorTag(458, 32001);
|
|
SetLineSpecial(2182, Sector_Set3DFloor, 32001, 4);
|
|
AddSectorTag(454, 32002);
|
|
AddSectorTag(910, 32002);
|
|
SetLineSpecial(2410, Sector_Set3DFloor, 32002, 4, 1);
|
|
break;
|
|
}
|
|
|
|
case '5A24FC83A3F9A2D6D54AF04E2E96684F': // AV.WAD MAP01
|
|
{
|
|
SetLineSectorRef(225, Line.back, 36);
|
|
SetLineSectorRef(222, Line.back, 36);
|
|
SetLineSectorRef(231, Line.back, 36);
|
|
|
|
SetLineSectorRef(223, Line.back, 36);
|
|
SetLineSectorRef(224, Line.back, 36);
|
|
SetLineSectorRef(227, Line.back, 36);
|
|
|
|
SetLineSectorRef(229, Line.back, 39);
|
|
SetLineSectorRef(233, Line.back, 39);
|
|
|
|
TextureID nukage = TexMan.CheckForTexture("NUKAGE1", TexMan.Type_Flat);
|
|
SetWallTextureID(222, Line.front, Side.bottom, nukage);
|
|
SetWallTextureID(223, Line.front, Side.bottom, nukage);
|
|
SetWallTextureID(224, Line.front, Side.bottom, nukage);
|
|
SetWallTextureID(225, Line.front, Side.bottom, nukage);
|
|
SetWallTextureID(227, Line.front, Side.bottom, nukage);
|
|
SetWallTextureID(231, Line.front, Side.bottom, nukage);
|
|
SetWallTextureID(229, Line.front, Side.bottom, nukage);
|
|
SetWallTextureID(233, Line.front, Side.bottom, nukage);
|
|
|
|
for(int i = 0; i < 8; i++)
|
|
{
|
|
SetLineSectorRef(i+234, Line.back, 37);
|
|
SetLineSectorRef(i+243, Line.back, 37);
|
|
SetWallTextureID(i+234, Line.back, Side.bottom, nukage);
|
|
SetWallTextureID(i+243, Line.back, Side.bottom, nukage);
|
|
}
|
|
|
|
SetLineSpecial(336, Transfer_Heights, 32000, 6);
|
|
AddSectorTag(40, 32000);
|
|
AddSectorTag(38, 32000);
|
|
AddSectorTag(37, 32000);
|
|
AddSectorTag(34, 32000);
|
|
break;
|
|
}
|
|
|
|
case '32FADD80710CAFCC2B09B4610C3340B3': // ksutra.wad map01
|
|
{
|
|
// This rebuilds the ending pit with a 3D floor.
|
|
for(int i = Line.front; i <= Line.back; i++)
|
|
{
|
|
SetLineSectorRef(509, i, 129);
|
|
SetLineSectorRef(510, i, 129);
|
|
SetLineSectorRef(522, i, 129);
|
|
SetLineSectorRef(526, i, 129);
|
|
SetLineSectorRef(527, i, 129);
|
|
for(int j = 538; j <= 544; j++)
|
|
{
|
|
SetLineSectorRef(j, i, 129);
|
|
}
|
|
for(int j = 547; j <= 552; j++)
|
|
{
|
|
SetLineSectorRef(j, i, 129);
|
|
}
|
|
}
|
|
AddSectorTag(129, 32000);
|
|
SetSectorLight(129, 160);
|
|
for(int i = 148; i <= 151; i++)
|
|
{
|
|
AddSectorTag(i, 32000);
|
|
SetSectorLight(i, 160);
|
|
}
|
|
SetSectorTexture(126, Sector.Ceiling, "GRASS1");
|
|
OffsetSectorPlane(126, Sector.Floor, 72);
|
|
OffsetSectorPlane(126, Sector.Ceiling, 128);
|
|
SetLineSpecial(524, Sector_Set3DFloor, 32000, 1, 0, 255);
|
|
SetWallTexture(524, Line.Front, Side.Mid, "ASHWALL3");
|
|
SetWallTexture(537, Line.Front, Side.Bottom, "ASHWALL3");
|
|
SetWallTexture(536, Line.Front, Side.Bottom, "ASHWALL3");
|
|
SetWallTexture(546, Line.Front, Side.Bottom, "ASHWALL3");
|
|
SetWallTexture(449, Line.Front, Side.Mid, "-");
|
|
break;
|
|
}
|
|
|
|
case '9C14350A111C3DC6A8AF04D950E6DDDB': // ma_val.pk3 map01
|
|
{
|
|
// Missing wall textures with hardware renderer
|
|
OffsetSectorPlane(7072, Sector.floor, -48);
|
|
OffsetSectorPlane(7073, Sector.floor, -32);
|
|
// Missing teleporting monsters
|
|
SetThingFlags(376, 0x200);
|
|
SetThingFlags(377, 0x300);
|
|
for (int i = 437; i < 449; ++i)
|
|
{
|
|
SetThingFlags(i, 0x600);
|
|
}
|
|
// Stuck imp
|
|
SetThingXY(8, 1200, -1072);
|
|
break;
|
|
}
|
|
|
|
case '5B8689912D21E91D899C61BBBDD44D7C': // altar of evil.wad map01
|
|
{
|
|
// Missing teleport destination on easy skill
|
|
SetThingSkills(115, 31);
|
|
break;
|
|
}
|
|
|
|
case 'CCF699953746087E46185B2A40D9F8AF': // satanx.wad map01
|
|
{
|
|
// Restore monster cross flag for DeHackEd friendly marine
|
|
GetDefaultActor('WolfensteinSS').bActivateMCross = true;
|
|
break;
|
|
}
|
|
|
|
case 'D67CECE3F60083383DF992B8C824E4AC': // Icarus: Alien Vanguard MAP13
|
|
{
|
|
// Moves sector special to platform with Berserk powerup. The
|
|
// map's only secret can now be scored.
|
|
SetSectorSpecial(119, 0);
|
|
SetSectorSpecial(122, 1024);
|
|
break;
|
|
}
|
|
|
|
case '61373587339A768854E2912CC99A4781': // Icarus: Alien Vanguard MAP15
|
|
{
|
|
// Can press use on the lift to reveal the secret Shotgun,
|
|
// making 100% secrets possible.
|
|
SetLineSpecial(222, Plat_DownWaitUpStayLip, 11, 64, 105, 0);
|
|
SetLineActivation(222, SPAC_Use);
|
|
SetLineFlags(222, Line.ML_REPEAT_SPECIAL);
|
|
break;
|
|
}
|
|
|
|
case '9F66B0797925A09D4DC0725540F8EEF7': // Icarus: Alien Vanguard MAP16
|
|
{
|
|
// Can press use on the walls at the secret Rocket Launcher in
|
|
// case of getting stuck.
|
|
for(int i=0; i<7; i++)
|
|
{
|
|
SetLineSpecial(703+i, Plat_DownWaitUpStayLip, 14, 64, 105, 0);
|
|
SetLineActivation(703+i, SPAC_Use);
|
|
SetLineFlags(703+i, Line.ML_REPEAT_SPECIAL);
|
|
}
|
|
break;
|
|
}
|
|
|
|
case '09645D198010BF634EF0DE3EFCB0052C': // Flashback to Hell MAP12
|
|
{
|
|
// Can press use behind bookshelf in case of getting stuck.
|
|
SetLineSpecial(4884, Plat_DownWaitUpStayLip, 15, 32, 105, 0);
|
|
SetLineActivation(4884, SPAC_UseBack);
|
|
SetLineFlags(4884, Line.ML_REPEAT_SPECIAL);
|
|
break;
|
|
}
|
|
|
|
case '7FB847B522DE80D0B2A217E1EF8D1A15': // av.wad map28
|
|
{
|
|
// Fix the soulsphere in a secret area (sector 324)
|
|
// so that it doesn't end up in an unreachable position.
|
|
SetThingXY(516, -934, 48);
|
|
break;
|
|
}
|
|
|
|
case '11EA5B8357DEB70A8F00900117831191': // kdizd_12.pk3 z1m3
|
|
{
|
|
// Fix incorrectly tagged underwater sector which causes render glitches.
|
|
AddSectorTag(7857, 82);
|
|
break;
|
|
}
|
|
|
|
case '7B1EB6C1231CD03E90F4A1C0D51A8B6D': // ur_final.wad map17
|
|
{
|
|
SetLineSpecial(3020, Transfer_Heights, 19);
|
|
break;
|
|
}
|
|
|
|
case '01592ACF001C534076556D9E1B5D85E7': // Darken2.wad map12
|
|
{
|
|
// fix some holes the player can fall in. This map went a bit too far with lighting hacks depending on holes in the floor.
|
|
OffsetSectorPlane(126, Sector.floor, 1088);
|
|
level.sectors[126].SetPlaneLight(Sector.floor, level.sectors[125].GetLightLevel() - level.sectors[126].GetLightLevel());
|
|
OffsetSectorPlane(148, Sector.floor, 1136);
|
|
level.sectors[148].SetPlaneLight(Sector.floor, level.sectors[122].GetLightLevel() - level.sectors[148].GetLightLevel());
|
|
OffsetSectorPlane(149, Sector.floor, 1136);
|
|
level.sectors[149].SetPlaneLight(Sector.floor, level.sectors[122].GetLightLevel() - level.sectors[149].GetLightLevel());
|
|
OffsetSectorPlane(265, Sector.floor, 992);
|
|
level.sectors[265].SetPlaneLight(Sector.floor, level.sectors[264].GetLightLevel() - level.sectors[265].GetLightLevel());
|
|
OffsetSectorPlane(279, Sector.floor, 1072);
|
|
level.sectors[279].SetPlaneLight(Sector.floor, level.sectors[267].GetLightLevel() - level.sectors[279].GetLightLevel());
|
|
SetSectorTexture(279, Sector.floor, "OMETL13");
|
|
OffsetSectorPlane(280, Sector.floor, 1072);
|
|
level.sectors[280].SetPlaneLight(Sector.floor, level.sectors[267].GetLightLevel() - level.sectors[280].GetLightLevel());
|
|
SetSectorTexture(280, Sector.floor, "OMETL13");
|
|
OffsetSectorPlane(281, Sector.floor, 1072);
|
|
level.sectors[281].SetPlaneLight(Sector.floor, level.sectors[267].GetLightLevel() - level.sectors[281].GetLightLevel());
|
|
SetSectorTexture(281, Sector.floor, "OMETL13");
|
|
OffsetSectorPlane(292, Sector.floor, 1056);
|
|
level.sectors[292].SetPlaneLight(Sector.floor, level.sectors[291].GetLightLevel() - level.sectors[292].GetLightLevel());
|
|
OffsetSectorPlane(472, Sector.floor, 1136);
|
|
level.sectors[472].SetPlaneLight(Sector.floor, level.sectors[216].GetLightLevel() - level.sectors[472].GetLightLevel());
|
|
OffsetSectorPlane(473, Sector.floor, 1136);
|
|
level.sectors[473].SetPlaneLight(Sector.floor, level.sectors[216].GetLightLevel() - level.sectors[473].GetLightLevel());
|
|
OffsetSectorPlane(526, Sector.floor, 1024);
|
|
level.sectors[526].SetPlaneLight(Sector.floor, level.sectors[525].GetLightLevel() - level.sectors[526].GetLightLevel());
|
|
OffsetSectorPlane(527, Sector.floor, 1024);
|
|
level.sectors[527].SetPlaneLight(Sector.floor, level.sectors[500].GetLightLevel() - level.sectors[527].GetLightLevel());
|
|
OffsetSectorPlane(528, Sector.floor, 1024);
|
|
level.sectors[528].SetPlaneLight(Sector.floor, level.sectors[525].GetLightLevel() - level.sectors[528].GetLightLevel());
|
|
OffsetSectorPlane(554, Sector.floor, 1024);
|
|
level.sectors[554].SetPlaneLight(Sector.floor, level.sectors[500].GetLightLevel() - level.sectors[554].GetLightLevel());
|
|
OffsetSectorPlane(588, Sector.floor, 928);
|
|
level.sectors[588].SetPlaneLight(Sector.floor, level.sectors[587].GetLightLevel() - level.sectors[588].GetLightLevel());
|
|
OffsetSectorPlane(604, Sector.floor, 1056);
|
|
level.sectors[604].SetPlaneLight(Sector.floor, level.sectors[298].GetLightLevel() - level.sectors[604].GetLightLevel());
|
|
OffsetSectorPlane(697, Sector.floor, 1136);
|
|
level.sectors[697].SetPlaneLight(Sector.floor, level.sectors[696].GetLightLevel() - level.sectors[697].GetLightLevel());
|
|
OffsetSectorPlane(698, Sector.floor, 1136);
|
|
level.sectors[698].SetPlaneLight(Sector.floor, level.sectors[696].GetLightLevel() - level.sectors[698].GetLightLevel());
|
|
OffsetSectorPlane(699, Sector.floor, 1136);
|
|
level.sectors[699].SetPlaneLight(Sector.floor, level.sectors[696].GetLightLevel() - level.sectors[699].GetLightLevel());
|
|
OffsetSectorPlane(700, Sector.floor, 1136);
|
|
level.sectors[700].SetPlaneLight(Sector.floor, level.sectors[696].GetLightLevel() - level.sectors[700].GetLightLevel());
|
|
break;
|
|
}
|
|
|
|
case '3B1F637295F5669E99BE63F1B1CA29DF': // titan426.wad map01
|
|
{
|
|
// Missing teleport destinations on easy skill
|
|
SetThingSkills(138, 31); // secret
|
|
SetThingSkills(1127, 31); // return from exit room
|
|
break;
|
|
}
|
|
|
|
case '5E9AF879343D6E44E429F91D57777D26': // cchest.wad map16
|
|
{
|
|
// Fix misplaced vertex
|
|
SetVertex(202, -2, -873);
|
|
break;
|
|
}
|
|
case 'E9EB4D16CA7E491E98D61615E4613E70': // sigil.wad e5m2
|
|
{
|
|
// Floating Skulls missing in lower difficulties
|
|
SetThingSkills(113, 31);
|
|
SetThingSkills(114, 31);
|
|
break;
|
|
}
|
|
case 'C43B99F34E5211F9AF24459842852B0D': // sigil.wad e5m4
|
|
{
|
|
// Fix missing texture on the Baron-invulnerability-secret platform
|
|
SetWallTexture(1926, Line.back, Side.bottom, "MARBLE3");
|
|
break;
|
|
}
|
|
case 'A7C4FC8CAEB3E375B7214E35C6298B03': // Illusions of Home e1m6
|
|
{
|
|
// Convert zero-tagged GR door into regular open-stay door to fix map
|
|
SetLineActivation(37, SPAC_Use);
|
|
SetLineSpecial(37, Door_Open, 0, 16);
|
|
SetLineActivation(203, SPAC_Use);
|
|
SetLineSpecial(203, Door_Open, 0, 16);
|
|
break;
|
|
}
|
|
case '5084755C29FB0A1912113E36F37C958A': // Illusions of Home e3m4
|
|
{
|
|
// Fix action of final switch
|
|
SetLineSpecial(765, Door_Open, 6, 16);
|
|
break;
|
|
}
|
|
case '0EF86635676FD512CE0E962040125553': // Illusions of Home e3m7
|
|
{
|
|
// Fix red key and missing texture in red key area
|
|
SetThingFlags(247, 2016);
|
|
SetThingSkills(247, 31);
|
|
SetWallTexture(608, Line.back, Side.bottom, "GRAY5");
|
|
break;
|
|
}
|
|
|
|
case '63BDD083A98A48C04B8CD58AA857F77D': // Scythe MAP22
|
|
{
|
|
// Wall behind start creates HOM in software renderer due to weird sector
|
|
OffsetSectorPlane(236, Sector.Floor, -40);
|
|
break;
|
|
}
|
|
|
|
case '1C795660D2BA9FC93DA584C593FD1DA3': // Scythe 2 MAP17
|
|
{
|
|
// Texture displays incorrectly in hardware renderer
|
|
SetVertex(2687, -4540, -1083); //Fixes bug with minimal effect on geometry
|
|
break;
|
|
}
|
|
case '7483D7BDB8375358F12D146E1D63A85C': // Scythe 2 MAP24
|
|
{
|
|
// Missing texture
|
|
TextureID adel_q62 = TexMan.CheckForTexture("ADEL_Q62", TexMan.Type_Wall);
|
|
SetWallTextureID(7775, Line.front, Side.bottom, adel_q62);
|
|
break;
|
|
}
|
|
|
|
case '16E621E46F87418F6F8DB71D68433AE0': // Hell Revealed MAP23
|
|
{
|
|
// Arachnotrons near beginning sometimes don't spawn if imps block
|
|
// their one-time teleport. Make these teleports repeatable to ensure
|
|
// maxkills are always possible.
|
|
SetLineFlags(2036, Line.ML_REPEAT_SPECIAL);
|
|
SetLineFlags(2038, Line.ML_REPEAT_SPECIAL);
|
|
SetLineFlags(2039, Line.ML_REPEAT_SPECIAL);
|
|
SetLineFlags(2040, Line.ML_REPEAT_SPECIAL);
|
|
break;
|
|
}
|
|
case '145C4DFCF843F2B92C73036BA0E1D98A': // Hell Revealed MAP26
|
|
{
|
|
// The 4 archviles that produce the ghost monsters cannot be killed
|
|
// Make them not count so they still produce ghosts while allowing 100% kills.
|
|
SetThingFlags(320, GetThingFlags (320) | MTF_NOCOUNT);
|
|
SetThingFlags(347, GetThingFlags (347) | MTF_NOCOUNT);
|
|
SetThingFlags(495, GetThingFlags (495) | MTF_NOCOUNT);
|
|
SetThingFlags(496, GetThingFlags (496) | MTF_NOCOUNT);
|
|
break;
|
|
}
|
|
|
|
case '0E379EEBEB189F294ED122BC60D10A68': // Hellbound MAP29
|
|
{
|
|
// Remove the cyberdemons stuck in the closet boxes that cannot teleport.
|
|
SetThingFlags(2970,0);
|
|
SetThingFlags(2969,0);
|
|
SetThingFlags(2968,0);
|
|
SetThingFlags(2169,0);
|
|
SetThingFlags(2168,0);
|
|
SetThingFlags(2167,0);
|
|
break;
|
|
}
|
|
|
|
case '66B931B03618EDE5C022A1EC87189158': // Restoring Deimos MAP03
|
|
{
|
|
// Missing teleport destination on easy skill
|
|
SetThingSkills(62, 31);
|
|
break;
|
|
}
|
|
|
|
case '6B9D31106CE290205A724FA61C165A80': // Restoring Deimos MAP07
|
|
{
|
|
// Missing map spots on easy skill
|
|
SetThingSkills(507, 31);
|
|
SetThingSkills(509, 31);
|
|
break;
|
|
}
|
|
|
|
case '17314071AB76F4789763428FA2E8DA4C': // Skulldash Expanded Edition MAP04
|
|
{
|
|
// Missing teleport destination on easy skill
|
|
SetThingSkills(164, 31);
|
|
break;
|
|
}
|
|
|
|
case '1B27E04F707E7988800582F387F609CD': // One against hell (ONE1.wad)
|
|
{
|
|
//Turn map spots into teleport destinations so that teleports work
|
|
SetThingEdNum(19, 14);
|
|
SetThingEdNum(20, 14);
|
|
SetThingEdNum(22, 14);
|
|
SetThingEdNum(23, 14);
|
|
SetThingEdNum(34, 14);
|
|
SetThingEdNum(35, 14);
|
|
SetThingEdNum(36, 14);
|
|
SetThingEdNum(39, 14);
|
|
SetThingEdNum(40, 14);
|
|
SetThingEdNum(172, 14);
|
|
SetThingEdNum(173, 14);
|
|
SetThingEdNum(225, 14);
|
|
SetThingEdNum(226, 14);
|
|
SetThingEdNum(247, 14);
|
|
break;
|
|
}
|
|
|
|
case '25E178C981BAC28BA586B3B0A2A0FD72': // swan fox doom v2.4.wad map13
|
|
{
|
|
//Actors with no game mode will now appear
|
|
SetThingFlags(0, MTF_SINGLE|MTF_COOPERATIVE|MTF_DEATHMATCH);
|
|
for(int i = 2; i < 452; i++)
|
|
SetThingFlags(i, MTF_SINGLE|MTF_COOPERATIVE|MTF_DEATHMATCH);
|
|
//Awaken monsters with Thing_Hate, since NoiseAlert is unreliable
|
|
SetThingID(465, 9);
|
|
SetLineSpecial(1648, 177, 9);
|
|
for(int i = 1650; i <= 1653; i++)
|
|
SetLineSpecial(i, 177, 9);
|
|
SetLineSpecial(1655, 177, 9);
|
|
break;
|
|
}
|
|
|
|
case 'FDFB3D209CC0F3706AAF3E51646003D5': // swan fox doom v2.4.wad map23
|
|
{
|
|
//Missing Teleport Destination on Easy/Normal difficulty
|
|
SetThingSkills(650, SKILLS_ALL);
|
|
//Fix the exit portal to allow walking into it instead of shooting it
|
|
SetLineSpecial(1970, Exit_Normal, 0);
|
|
SetLineActivation(1970, SPAC_Cross);
|
|
ClearLineSpecial(2010);
|
|
SetWallTexture(1966, Line.back, Side.mid, "TELR1");
|
|
OffsetSectorPlane(170, Sector.floor, -120);
|
|
break;
|
|
}
|
|
|
|
case 'BC969ED0191CCD9B69B316864362B0D7': // swan fox doom v2.4.wad map24
|
|
{
|
|
//Actors with no game mode will now appear
|
|
for(int i = 1; i < 88; i++)
|
|
SetThingFlags(i, MTF_SINGLE|MTF_COOPERATIVE|MTF_DEATHMATCH);
|
|
break;
|
|
}
|
|
|
|
case 'ED740248422026326650F6A4BC1C0A5A': // swan fox doom v2.4.wad map25
|
|
{
|
|
//Actors with no game mode will now appear
|
|
for(int i = 0; i < 8; i++)
|
|
SetThingFlags(i, MTF_SINGLE|MTF_COOPERATIVE|MTF_DEATHMATCH);
|
|
for(int i = 9; i < 26; i++)
|
|
SetThingFlags(i, MTF_SINGLE|MTF_COOPERATIVE|MTF_DEATHMATCH);
|
|
break;
|
|
}
|
|
|
|
case '52F532F95E2D5862E56F7214FA5C5C59': // Toon Doom II (toon2b.wad) map10
|
|
{
|
|
//This lift needs to be repeatable to prevent trapping the player
|
|
SetLineSpecial(224, Plat_DownWaitUpStayLip, 5, 32, 105);
|
|
SetLineActivation(224, SPAC_Use);
|
|
SetLineFlags(224, Line.ML_REPEAT_SPECIAL);
|
|
break;
|
|
}
|
|
|
|
case '3345D12AD97F20EDCA5E27BA4288F758': // Toon Doom II (toon2b.wad) map30
|
|
{
|
|
//These doors need to be repeatable to prevent trapping the player
|
|
SetLineSpecial(417, Door_Raise, 17, 16, 150);
|
|
SetLineActivation(417, SPAC_Use);
|
|
SetLineFlags(417, Line.ML_REPEAT_SPECIAL);
|
|
SetLineSpecial(425, Door_Raise, 15, 16, 150);
|
|
SetLineActivation(425, SPAC_Use);
|
|
SetLineFlags(425, Line.ML_REPEAT_SPECIAL);
|
|
SetLineSpecial(430, Door_Raise, 16, 16, 150);
|
|
SetLineActivation(430, SPAC_Use);
|
|
SetLineFlags(430, Line.ML_REPEAT_SPECIAL);
|
|
break;
|
|
}
|
|
|
|
case 'BA1288DF7A7AD637948825EA87E18728': // Valletta's Doom Nightmare (vltnight.wad) map02
|
|
{
|
|
//This door's backside had a backwards linedef so it wouldn't work
|
|
FlipLineCompletely(306);
|
|
//Set the exit to point to Position 0, since that's the only one on the next map
|
|
SetLineSpecial(564, Exit_Normal, 0);
|
|
break;
|
|
}
|
|
|
|
case '9B966DA88265AC8972B7E15C86928AFB': // Clavicula Nox: Revised Edition map01
|
|
{
|
|
// All swimmable water in Clavicula Nox is Vavoom-style, and doesn't work.
|
|
// Change it to ZDoom-style and extend the control sector heights to fill.
|
|
// Lava also sometimes needs the damage effect added manually.
|
|
SetLineSpecial(698, 160, 4, 2, 0, 128);
|
|
OffsetSectorPlane(121, Sector.floor, -32);
|
|
break;
|
|
}
|
|
|
|
case '9FD0C47C2E132F64B48CA5BFBDE47F1D': // clavnoxr map02
|
|
{
|
|
SetLineSpecial(953, 160, 12, 2, 0, 128);
|
|
OffsetSectorPlane(139, Sector.floor, -24);
|
|
SetLineSpecial(989, 160, 13, 2, 0, 128);
|
|
OffsetSectorPlane(143, Sector.floor, -24);
|
|
SetLineSpecial(1601, 160, 19, 2, 0, 128);
|
|
SetLineSpecial(1640, 160, 20, 2, 0, 128);
|
|
SetLineSpecial(1641, 160, 21, 2, 0, 128);
|
|
OffsetSectorPlane(236, Sector.floor, -96);
|
|
break;
|
|
}
|
|
|
|
case '969B9691007490CF022B632B2729CA49': // clavnoxr map03
|
|
{
|
|
SetLineSpecial(96, 160, 1, 2, 0, 128);
|
|
OffsetSectorPlane(11, Sector.floor, -80);
|
|
SetLineSpecial(955, 160, 13, 2, 0, 128);
|
|
OffsetSectorPlane(173, Sector.floor, -16);
|
|
SetLineSpecial(1082, 160, 14, 2, 0, 128);
|
|
OffsetSectorPlane(195, Sector.floor, -16);
|
|
SetLineSpecial(1111, 160, 15, 2, 0, 128);
|
|
OffsetSectorPlane(203, Sector.floor, -16);
|
|
SetLineSpecial(1115, 160, 16, 2, 0, 128);
|
|
OffsetSectorPlane(204, Sector.floor, -16);
|
|
SetLineSpecial(1163, 160, 17, 2, 0, 128);
|
|
OffsetSectorPlane(216, Sector.floor, -56);
|
|
SetLineSpecial(1169, 160, 18, 2, 0, 128);
|
|
OffsetSectorPlane(217, Sector.floor, -16);
|
|
break;
|
|
}
|
|
|
|
case '748EDAEB3990F13B22C13C593631B2E6': // clavnoxr map04
|
|
{
|
|
SetLineSpecial(859, 160, 22, 2, 0, 128);
|
|
SetLineSpecial(861, 160, 23, 2, 0, 128);
|
|
OffsetSectorPlane(172, Sector.floor, -168);
|
|
break;
|
|
}
|
|
|
|
case 'A066B0B432FAE8ED20B83383F9E03E12': // clavnoxr map05
|
|
{
|
|
SetLineSpecial(1020, 160, 2, 2, 0, 128);
|
|
SetSectorSpecial(190, 69);
|
|
OffsetSectorPlane(190, Sector.floor, -24);
|
|
break;
|
|
}
|
|
|
|
case '5F36D758ED26CAE907FA79902330877D': // clavnoxr map06
|
|
{
|
|
SetLineSpecial(1086, 160, 1, 2, 0, 128);
|
|
SetLineSpecial(60, 160, 4, 2, 0, 128);
|
|
SetLineSpecial(561, 160, 2, 2, 0, 128);
|
|
SetLineSpecial(280, 160, 3, 2, 0, 128);
|
|
SetLineSpecial(692, 160, 5, 2, 0, 128);
|
|
SetLineSpecial(1090, 160, 7, 2, 0, 128);
|
|
SetLineSpecial(1091, 160, 8, 2, 0, 128);
|
|
SetLineSpecial(1094, 160, 9, 2, 0, 128);
|
|
SetLineSpecial(1139, 160, 12, 2, 0, 128);
|
|
SetLineSpecial(1595, 160, 16, 2, 0, 128);
|
|
SetLineSpecial(1681, 160, 17, 2, 0, 128);
|
|
SetLineSpecial(1878, 160, 20, 2, 0, 128);
|
|
SetLineSpecial(1882, 160, 22, 2, 0, 128);
|
|
OffsetSectorPlane(8, Sector.floor, -64);
|
|
OffsetSectorPlane(34, Sector.floor, -24);
|
|
OffsetSectorPlane(64, Sector.floor, -16);
|
|
OffsetSectorPlane(102, Sector.floor, -16);
|
|
OffsetSectorPlane(170, Sector.floor, -64);
|
|
OffsetSectorPlane(171, Sector.floor, -64);
|
|
OffsetSectorPlane(178, Sector.floor, -16);
|
|
OffsetSectorPlane(236, Sector.floor, -16);
|
|
OffsetSectorPlane(250, Sector.floor, -16);
|
|
OffsetSectorPlane(283, Sector.floor, -64);
|
|
OffsetSectorPlane(284, Sector.floor, -56);
|
|
break;
|
|
}
|
|
|
|
case 'B7E98C1EA1B38B707ADA8097C25CFA75': // clavnoxr map07
|
|
{
|
|
SetLineSpecial(1307, 160, 22, 2, 0, 128);
|
|
SetLineSpecial(1305, 160, 23, 2, 0, 128);
|
|
OffsetSectorPlane(218, Sector.floor, -64);
|
|
break;
|
|
}
|
|
|
|
case '7DAB2E8BB5759D742211505A3E5054D1': // clavnoxr map08
|
|
{
|
|
SetLineSpecial(185, 160, 1, 2, 0, 128);
|
|
SetLineSpecial(735, 160, 13, 2, 0, 128);
|
|
OffsetSectorPlane(20, Sector.floor, -16);
|
|
SetSectorSpecial(20, 69);
|
|
OffsetSectorPlane(102, Sector.floor, -64);
|
|
break;
|
|
}
|
|
|
|
case 'C17A9D1350399E251C70711EB22856AE': // clavnoxr map09
|
|
{
|
|
SetLineSpecial(63, 160, 1, 2, 0, 128);
|
|
SetLineSpecial(84, 160, 2, 2, 0, 128);
|
|
SetLineSpecial(208, 160, 4, 2, 0, 128);
|
|
SetLineSpecial(326, 160, 6, 2, 0, 128);
|
|
SetLineSpecial(433, 160, 10, 2, 0, 128);
|
|
OffsetSectorPlane(6, Sector.floor, -64);
|
|
OffsetSectorPlane(9, Sector.floor, -64);
|
|
OffsetSectorPlane(34, Sector.floor, -64);
|
|
OffsetSectorPlane(59, Sector.floor, -64);
|
|
SetSectorSpecial(75, 69);
|
|
OffsetSectorPlane(75, Sector.floor, -64);
|
|
break;
|
|
}
|
|
|
|
case 'B6BB8A1792FE51C773E6770CD91DB618': // clavnoxr map11
|
|
{
|
|
SetLineSpecial(1235, 160, 23, 2, 0, 128);
|
|
SetLineSpecial(1238, 160, 24, 2, 0, 128);
|
|
OffsetSectorPlane(240, Sector.floor, -80);
|
|
break;
|
|
}
|
|
|
|
case 'ADDF57B80E389F86D324571D43F3CAB7': // clavnoxr map12
|
|
{
|
|
SetLineSpecial(1619, 160, 19, 2, 0, 128);
|
|
SetLineSpecial(1658, 160, 20, 2, 0, 128);
|
|
SetLineSpecial(1659, 160, 21, 2, 0, 128);
|
|
OffsetSectorPlane(254, Sector.floor, -160);
|
|
// Raising platforms in MAP12 didn't work, so this will redo them.
|
|
SetLineSpecial(1469, 160, 6, 1, 0, 255);
|
|
OffsetSectorPlane(65, Sector.floor, -8);
|
|
OffsetSectorPlane(65, Sector.ceiling, 8);
|
|
break;
|
|
}
|
|
|
|
case '75E2685CA8AB29108DBF1AC98C5450AC': // Ancient Beliefs (beliefs.wad) map01
|
|
{
|
|
//Actors with no game mode will now appear
|
|
SetThingFlags(0, MTF_SINGLE|MTF_COOPERATIVE|MTF_DEATHMATCH);
|
|
for(int i = 2; i < 7; i++)
|
|
SetThingFlags(i, MTF_SINGLE|MTF_COOPERATIVE|MTF_DEATHMATCH);
|
|
break;
|
|
}
|
|
|
|
case 'C4850382A78BF637AC9FC58153E03C87': // sapphire.wad map01
|
|
{
|
|
SetLineSpecial(11518, 9, 0, 0, 0, 0);
|
|
break;
|
|
}
|
|
|
|
case 'BA530202AF0BA0C6CBAE6A0C7076FB72': // Requiem MAP04
|
|
{
|
|
// Flag deathmatch berserk for 100% items in single-player
|
|
SetThingFlags(284, 17);
|
|
// Make Hell Knight trap switch repeatable to prevent softlock
|
|
SetLineFlags(823, Line.ML_REPEAT_SPECIAL);
|
|
break;
|
|
}
|
|
|
|
case '104415DDEBCAFB9783CA60807C46B57D': // Requiem MAP05
|
|
{
|
|
// Raise spectre pit near soulsphere if player drops into it
|
|
for(int i = 0; i < 4; i++)
|
|
{
|
|
SetLineSpecial(2130+i, Floor_LowerToHighest, 28, 8, 128);
|
|
SetLineActivation(2130+i, SPAC_Cross);
|
|
}
|
|
break;
|
|
}
|
|
|
|
case '1B0AF5286D4E914C5E903BC505E6A844': // Requiem MAP06
|
|
{
|
|
// Flag deathmatch berserks for 100% items in single-player
|
|
SetThingFlags(103, 17);
|
|
SetThingFlags(109, 17);
|
|
// Shooting the cross before all Imps spawn in can make 100%
|
|
// kills impossible, add line actions and change sector tag
|
|
for(int i = 0; i < 7; i++)
|
|
{
|
|
SetLineSpecial(1788+i, Floor_RaiseToNearest, 100, 32);
|
|
SetLineActivation(1788+i, SPAC_Cross);
|
|
}
|
|
SetLineSpecial(1796, Floor_RaiseToNearest, 100, 32);
|
|
SetLineActivation(1796, SPAC_Cross);
|
|
SetLineSpecial(1800, Floor_RaiseToNearest, 100, 32);
|
|
SetLineActivation(1800, SPAC_Cross);
|
|
SetLineSpecial(1802, Floor_RaiseToNearest, 100, 32);
|
|
SetLineActivation(1802, SPAC_Cross);
|
|
ClearSectorTags(412);
|
|
AddSectorTag(412, 100);
|
|
// Shootable cross at demon-faced floor changed to repeatable
|
|
// action to prevent softlock if "spikes" are raised again
|
|
SetLineFlags(2600, Line.ML_REPEAT_SPECIAL);
|
|
break;
|
|
}
|
|
|
|
case '3C10B1B017E902BE7CDBF2436DF56973': // Requiem MAP08
|
|
{
|
|
// Flag deathmatch soulsphere for 100% items in single-player
|
|
SetThingFlags(48, 17);
|
|
// Allow player to leave inescapable lift using the walls
|
|
for(int i = 0; i < 3; i++)
|
|
{
|
|
SetLineSpecial(2485+i, Plat_DownWaitUpStayLip, 68, 64, 105, 0);
|
|
SetLineActivation(2485+i, SPAC_Use);
|
|
SetLineFlags(2485+i, Line.ML_REPEAT_SPECIAL);
|
|
}
|
|
SetLineSpecial(848, Plat_DownWaitUpStayLip, 68, 64, 105, 0);
|
|
SetLineActivation(848, SPAC_UseBack);
|
|
SetLineFlags(848, Line.ML_REPEAT_SPECIAL);
|
|
SetLineSpecial(895, Plat_DownWaitUpStayLip, 68, 64, 105, 0);
|
|
SetLineActivation(895, SPAC_UseBack);
|
|
SetLineFlags(895, Line.ML_REPEAT_SPECIAL);
|
|
break;
|
|
}
|
|
|
|
case '14FE46ED0458979118007E1906A0C9BC': // Requiem MAP09
|
|
{
|
|
// Flag deathmatch items for 100% items in single-player
|
|
for(int i = 0; i < 6; i++)
|
|
SetThingFlags(371+i, 17);
|
|
|
|
for(int i = 0; i < 19; i++)
|
|
SetThingFlags(402+i, 17);
|
|
|
|
SetThingFlags(359, 17);
|
|
SetThingFlags(389, 17);
|
|
SetThingFlags(390, 17);
|
|
// Change sides of blue skull platform to be repeatable
|
|
for(int i = 0; i < 4; i++)
|
|
SetLineFlags(873+i, Line.ML_REPEAT_SPECIAL);
|
|
// Make switch that raises bars near yellow skull repeatable
|
|
SetLineFlags(2719, Line.ML_REPEAT_SPECIAL);
|
|
break;
|
|
}
|
|
|
|
case '53A6369C3C8DA4E7AC443A8F8684E38E': // Requiem MAP12
|
|
{
|
|
// Remove unreachable secrets
|
|
SetSectorSpecial(352, 0);
|
|
SetSectorSpecial(503, 0);
|
|
// Change action of eastern switch at pool of water so that it
|
|
// lowers the floor properly, making the secret accessible
|
|
SetLineSpecial(4873, Floor_LowerToLowest, 62, 8);
|
|
break;
|
|
}
|
|
|
|
case '2DAB6E4B19B4F2763695267D39CD0275': // Requiem MAP13
|
|
{
|
|
// Fix missing nukage at starting bridge on hardware renderer
|
|
for(int i = 0; i < 4; i++)
|
|
SetLineSectorRef(2152+i, Line.back, 8);
|
|
break;
|
|
}
|
|
|
|
case 'F55FB2A8DC68CFC75E4340EF4ED7A8BF': // Requiem MAP21
|
|
{
|
|
// Fix self-referencing floor hack
|
|
for(int i = 0; i < 4; i++)
|
|
SetLineSectorRef(3+i, Line.back, 219);
|
|
|
|
SetLineSpecial(8, Transfer_Heights, 80);
|
|
// Fix south side of pit hack so textures don't bleed through
|
|
// the fake floor on hardware renderer
|
|
SetLineSectorRef(267, Line.back, 63);
|
|
SetLineSectorRef(268, Line.back, 63);
|
|
SetLineSectorRef(270, Line.back, 63);
|
|
SetLineSectorRef(271, Line.back, 63);
|
|
SetLineSectorRef(274, Line.back, 63);
|
|
SetLineSectorRef(275, Line.back, 63);
|
|
SetLineSectorRef(3989, Line.back, 63);
|
|
SetLineSectorRef(3994, Line.back, 63);
|
|
// Fix fake 3D bridge on hardware renderer
|
|
SetLineSectorRef(506, Line.back, 841);
|
|
SetLineSectorRef(507, Line.back, 841);
|
|
SetLineSectorRef(536, Line.back, 841);
|
|
SetLineSectorRef(537, Line.back, 841);
|
|
SetLineSectorRef(541, Line.back, 841);
|
|
SetLineSectorRef(547, Line.back, 841);
|
|
AddSectorTag(90, 1000);
|
|
AddSectorTag(91, 1000);
|
|
SetSectorTexture(90, Sector.floor, "MFLR8_4");
|
|
SetSectorTexture(91, Sector.floor, "MFLR8_4");
|
|
|
|
SetLineSectorRef(553, Line.back, 841);
|
|
SetLineSectorRef(554, Line.back, 841);
|
|
SetLineSectorRef(559, Line.back, 841);
|
|
SetLineSectorRef(560, Line.back, 841);
|
|
SetLineSectorRef(562, Line.back, 841);
|
|
SetLineSectorRef(568, Line.back, 841);
|
|
AddSectorTag(96, 1000);
|
|
AddSectorTag(97, 1000);
|
|
SetSectorTexture(96, Sector.floor, "MFLR8_4");
|
|
SetSectorTexture(97, Sector.floor, "MFLR8_4");
|
|
SetLineSpecial(505, Transfer_Heights, 1000);
|
|
// Fix randomly appearing ceiling at deep water
|
|
SetLineSectorRef(1219, Line.front, 233);
|
|
SetLineSectorRef(1222, Line.front, 233);
|
|
SetLineSectorRef(1223, Line.front, 233);
|
|
SetLineSectorRef(1228, Line.front, 233);
|
|
// Make switch in sky room repeatable so player does not get
|
|
// trapped at red cross if returning a second time
|
|
SetLineFlags(3870, Line.ML_REPEAT_SPECIAL);
|
|
// Move unreachable item bonuses
|
|
SetThingXY(412, -112, 6768);
|
|
SetThingXY(413, -112, 6928);
|
|
SetThingXY(414, -96, 6928);
|
|
SetThingXY(415, -96, 6768);
|
|
// Remove unreachable secret at exit megasphere
|
|
SetSectorSpecial(123, 0);
|
|
break;
|
|
}
|
|
|
|
case '2499CF9A9351BE9BC4E9C66FC9F291A7': // Requiem MAP23
|
|
{
|
|
// Have arch-vile who creates ghost monsters not count as a kill
|
|
SetThingFlags(0, GetThingFlags(0) | MTF_NOCOUNT);
|
|
// Remove secret at switch that can only be scored by crouching
|
|
SetSectorSpecial(240, 0);
|
|
break;
|
|
}
|
|
|
|
case '1497894956B3C8EBE8A240B7FDD99C6A': // Memento Mori 2 MAP25
|
|
{
|
|
// an imp is used for the lift activation and cannot be killed
|
|
SetThingFlags(51, GetThingFlags (51) | MTF_NOCOUNT);
|
|
break;
|
|
}
|
|
|
|
case '51960F3E9D46449E98DBC7D97F49DB23': // Shotgun Symphony E1M1
|
|
{
|
|
// harmless cyberdemon included for the 'story' sake
|
|
SetThingFlags(158, GetThingFlags (158) | MTF_NOCOUNT);
|
|
break;
|
|
}
|
|
|
|
case '60D362BAE16B4C10A1DCEE442C878CAE': // 50 Shades of Graytall MAP06
|
|
{
|
|
// there are four invisibility spheres used for decoration
|
|
SetThingFlags(144, GetThingFlags (144) | MTF_NOCOUNT);
|
|
SetThingFlags(145, GetThingFlags (145) | MTF_NOCOUNT);
|
|
SetThingFlags(194, GetThingFlags (194) | MTF_NOCOUNT);
|
|
SetThingFlags(195, GetThingFlags (195) | MTF_NOCOUNT);
|
|
break;
|
|
}
|
|
|
|
case 'C104E740CC3F70BCFD5D2EA8E833318D': // 50 Monsters MAP29
|
|
{
|
|
// there are two invisibility spheres used for decoration
|
|
SetThingFlags(111, GetThingFlags (111) | MTF_NOCOUNT);
|
|
SetThingFlags(112, GetThingFlags (112) | MTF_NOCOUNT);
|
|
break;
|
|
}
|
|
|
|
case '76393C84102480A4C75A4674C9C3217A': // Deadly Standards 2 E2M8
|
|
{
|
|
// 923 lost souls are used as environmental hazard
|
|
for (int i = 267; i < 275; i++)
|
|
SetThingFlags (i, GetThingFlags (i) | MTF_NOCOUNT);
|
|
for (int i = 482; i < 491; i++)
|
|
SetThingFlags (i, GetThingFlags (i) | MTF_NOCOUNT);
|
|
for (int i = 510; i < 522; i++)
|
|
SetThingFlags (i, GetThingFlags (i) | MTF_NOCOUNT);
|
|
for (int i = 880; i < 1510; i++)
|
|
SetThingFlags (i, GetThingFlags (i) | MTF_NOCOUNT);
|
|
for (int i = 1622; i < 1660; i++)
|
|
SetThingFlags (i, GetThingFlags (i) | MTF_NOCOUNT);
|
|
|
|
for (int i = 1682; i < 1820; i++)
|
|
SetThingFlags (i, GetThingFlags (i) | MTF_NOCOUNT);
|
|
for (int i = 1847; i < 1875; i++)
|
|
SetThingFlags (i, GetThingFlags (i) | MTF_NOCOUNT);
|
|
for (int i = 2110; i < 2114; i++)
|
|
SetThingFlags (i, GetThingFlags (i) | MTF_NOCOUNT);
|
|
for (int i = 2243; i < 2293; i++)
|
|
SetThingFlags (i, GetThingFlags (i) | MTF_NOCOUNT);
|
|
|
|
SetThingFlags(493, GetThingFlags (493) | MTF_NOCOUNT);
|
|
SetThingFlags(573, GetThingFlags (573) | MTF_NOCOUNT);
|
|
SetThingFlags(613, GetThingFlags (613) | MTF_NOCOUNT);
|
|
SetThingFlags(614, GetThingFlags (614) | MTF_NOCOUNT);
|
|
SetThingFlags(1679, GetThingFlags (1679) | MTF_NOCOUNT);
|
|
SetThingFlags(1680, GetThingFlags (1680) | MTF_NOCOUNT);
|
|
break;
|
|
}
|
|
|
|
case '42B4D294A60BE4E3500AF150291CF6D4': // Hell Ground MAP05
|
|
{
|
|
// 5 cyberdemons are located at the 'pain end' sector
|
|
for (int i = 523; i < 528; i++)
|
|
SetThingFlags (i, GetThingFlags (i) | MTF_NOCOUNT);
|
|
break;
|
|
}
|
|
|
|
case '0C0513A9821F26F3D7997E3B0359A318': // Mayhem 1500 MAP06
|
|
{
|
|
// there's an archvile behind the bossbrain at the very end that can't be killed
|
|
SetThingFlags(61, GetThingFlags (61) | MTF_NOCOUNT);
|
|
break;
|
|
}
|
|
|
|
case '00641DA23DDE998F6725BC5896A0DBC2': // 20 Years of Doom E1M8
|
|
{
|
|
// 32 lost souls are located at the 'pain end' sector
|
|
for (int i = 1965; i < 1975; i++)
|
|
SetThingFlags (i, GetThingFlags (i) | MTF_NOCOUNT);
|
|
for (int i = 2189; i < 2202; i++)
|
|
SetThingFlags (i, GetThingFlags (i) | MTF_NOCOUNT);
|
|
for (int i = 2311; i < 2320; i++)
|
|
SetThingFlags (i, GetThingFlags (i) | MTF_NOCOUNT);
|
|
break;
|
|
}
|
|
|
|
case 'EEBDD9CA280F6FF06C30AF2BEE85BF5F': // 2002ad10.wad E3M3
|
|
{
|
|
// swarm of cacodemons at the end meant to be pseudo-endless and not killed
|
|
for (int i = 467; i < 547; i++)
|
|
SetThingFlags (i, GetThingFlags (i) | MTF_NOCOUNT);
|
|
break;
|
|
}
|
|
|
|
case '988DFF5BB7073B857DEE3957A91C8518': // Speed of Doom MAP14
|
|
{
|
|
// you can get only one of the soulspheres, the other, depending on your choice, becomes unavailable
|
|
SetThingFlags(1044, GetThingFlags (1044) | MTF_NOCOUNT);
|
|
SetThingFlags(1045, GetThingFlags (1045) | MTF_NOCOUNT);
|
|
break;
|
|
}
|
|
|
|
case '361734AC5D78E872A05335C83E4F6DB8': // inf-lutz.wad E3M8
|
|
{
|
|
// there is a trap with 10 cyberdemons at the end of the map, you are not meant to kill them
|
|
for (int i = 541; i < 546; i++)
|
|
SetThingFlags (i, GetThingFlags (i) | MTF_NOCOUNT);
|
|
for (int i = 638; i < 643; i++)
|
|
SetThingFlags (i, GetThingFlags (i) | MTF_NOCOUNT);
|
|
break;
|
|
}
|
|
|
|
case '8F844B272E7235E82EA78AD2A2EB2D4A': // Serenity E3M7
|
|
{
|
|
// two spheres can't be obtained and thus should not count towards 100% items
|
|
SetThingFlags(443, GetThingFlags (443) | MTF_NOCOUNT);
|
|
SetThingFlags(444, GetThingFlags (444) | MTF_NOCOUNT);
|
|
// one secret is unobtainable
|
|
SetSectorSpecial (97, 0);
|
|
break;
|
|
}
|
|
|
|
case 'A50AC05CCE4F07413A0C4883C5E24215': // dbimpact.wad e1m7
|
|
{
|
|
SetLineFlags(1461, Line.ML_REPEAT_SPECIAL);
|
|
SetLineFlags(1468, Line.ML_REPEAT_SPECIAL);
|
|
break;
|
|
}
|
|
|
|
case 'E0D747B9EE58A0CB74B9AD54423AC15C': // return01.wad e1m2
|
|
{
|
|
// fix broken switch to raise the exit bridge
|
|
SetLineSpecial(1248, Floor_RaiseByValue, 39, 8, 512);
|
|
break;
|
|
}
|
|
|
|
case '1C35384B22BD805F51B3B2C9D17D62E4': // 007ltsd.wad E4M7
|
|
{
|
|
// Fix impassable exit line
|
|
SetLineFlags(6842, 0, Line.ML_BLOCKING);
|
|
break;
|
|
}
|
|
|
|
case '50E394239FF64264950D11883E933553': // 1024.wad map05
|
|
{
|
|
// Change duplicate player 2 start to player 3 start
|
|
SetThingEdNum(59, 3);
|
|
break;
|
|
}
|
|
|
|
case '3F0965ADCEB2F4A7BF46FADF6DD941B0': // phocas2.wad map01
|
|
{
|
|
// turn map spot into teleport dest.
|
|
SetThingEdNum(699, 9044);
|
|
break;
|
|
}
|
|
|
|
case 'C8E727FFBA0BA445666C80340BF3D0AC': // god_.WAD E1M2
|
|
{
|
|
// fix bad skill flags for a monster that's required to be killed.
|
|
SetThingSkills(1184, 1);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|