152 lines
5.3 KiB
Text
152 lines
5.3 KiB
Text
// level compatibility scripts
|
|
// sometimes shit breaks because of old and wrong scripting
|
|
// usually stuff that uses CheckInventory to look for keys, instead of, y'know,
|
|
// using ACS_LockedExecute
|
|
|
|
Class SWWMLevelCompatibility : LevelPostProcessor
|
|
{
|
|
private void EquinoxBossBrainHandle( uint lineno, int sectortag )
|
|
{
|
|
// don't spawn boss brains until it's time to crush them
|
|
for ( int i=0; i<GetThingCount(); i++ )
|
|
{
|
|
if ( GetThingEdNum(i) != 88 ) continue;
|
|
SetThingEdNum(i,9001);
|
|
SetThingID(i,666);
|
|
}
|
|
// change the crusher line
|
|
SetLineSpecial(lineno,ACS_Execute,-Int('EQUINOX_BRAINCRUSH'),0,sectortag);
|
|
}
|
|
|
|
protected void Apply( Name checksum, String mapname )
|
|
{
|
|
int numcol = 6;
|
|
switch ( checksum )
|
|
{
|
|
case 'none':
|
|
return;
|
|
// ZPack E1M2
|
|
case 'BA13454A41D931685B6A4B28E6946B6B':
|
|
// script uses checkinventory for red key
|
|
SetLineSpecial(225,ACS_LockedExecuteDoor,-Int('ZPACK_E1M2_SCRIPT6'),0,0,0,1);
|
|
SetLineSpecial(228,ACS_LockedExecuteDoor,-Int('ZPACK_E1M2_SCRIPT6'),0,0,0,1);
|
|
break;
|
|
// ZPack E3M2
|
|
case '17BD38E0B2FB8E760885FE46325DFF3A':
|
|
// script uses checkinventory for red skull
|
|
SetLineSpecial(5913,ACS_LockedExecute,-Int('ZPACK_E3M2_SCRIPT9'),0,0,0,4);
|
|
break;
|
|
// ZPack E3M8
|
|
case '13C5952A04014122271F50134DB4521F':
|
|
// script uses checkinventory for yellow skull
|
|
SetLineSpecial(22610,ACS_LockedExecute,-Int('ZPACK_E3M8_SCRIPT15'),0,0,0,6);
|
|
break;
|
|
// okuplok
|
|
case 'F7F353146676920238935A8D0D1B6E8E':
|
|
// add 7 more backpacks on top of existing one, for a full embiggening
|
|
// (players will need it)
|
|
for ( int i=0; i<7; i++ ) AddThing(8,(11808,-2016,384));
|
|
break;
|
|
// holy hell revealed
|
|
case '83569A062B5261C6BB4A034BA8245D24':
|
|
// remove boss brain and re-spawn it when end is reached, prevents cheesing the map with the ynykron
|
|
SetThingEdNum(50183,9001);
|
|
SetThingID(50183,666);
|
|
SetLineSpecial(21964,ACS_Execute,-Int('HHR_BRAINWALL'));
|
|
break;
|
|
// NRFTL MAP08
|
|
case '7EB864A03948C3F918F9223B2D1F8911':
|
|
// prevent easy cheesing of the exit teleporter
|
|
AddSectorTag(155,24);
|
|
OffsetSectorPlane(155,1,-80.);
|
|
SetLineSpecial(652,ACS_Execute,-Int('NERVE_EXITOPEN'));
|
|
break;
|
|
// Micro Slaughter Community Project MAP13
|
|
case 'E45AA3BE411845AA0DEE7CA5DAAB65FE':
|
|
// reduce OBSCENELY EXCESSIVE number of cell packs in voodoo doll conveyors (400), which will cause immense lag when replaced with mod ammo
|
|
// unsurprisingly, this actually makes the map go from completely unplayable to having perfectly smooth performance (gee, I wonder why)
|
|
int ncellsa = 0, ncellsb = 0;
|
|
for ( int i=0; i<GetThingCount(); i++ )
|
|
{
|
|
if ( GetThingEdNum(i) != 17 ) continue;
|
|
Vector3 pos = GetThingPos(i);
|
|
if ( pos.y != 480. ) continue;
|
|
if ( pos.x == -5472. )
|
|
{
|
|
ncellsa++;
|
|
if ( ncellsa > 20 ) SetThingEdNum(i,0);
|
|
}
|
|
else if ( pos.x == -5344. )
|
|
{
|
|
ncellsb++;
|
|
if ( ncellsb > 20 ) SetThingEdNum(i,0);
|
|
}
|
|
}
|
|
break;
|
|
// Equinox MAP04
|
|
case 'E66BCCFAD7AC40EFB21E2A19131E1522':
|
|
EquinoxBossBrainHandle(2406,27);
|
|
// raise floor by 10 units so its untextured lower lines don't glitch out at eye level
|
|
OffsetSectorPlane(248,0,10.);
|
|
break;
|
|
// Equinox MAP07
|
|
case 'A0B6B83DC8BD50FC84170572840DE585':
|
|
EquinoxBossBrainHandle(3423,31);
|
|
break;
|
|
// Equinox MAP10
|
|
case 'F91E3FE225F10EECBE21486E1BB14834':
|
|
EquinoxBossBrainHandle(2813,29);
|
|
break;
|
|
// Equinox MAP13
|
|
case '3805A661D5C4523AFF7BF86991071043':
|
|
EquinoxBossBrainHandle(4106,60);
|
|
break;
|
|
// Kinsie's Test Map (HERETIC)
|
|
case '0EADB2F82732A968B8513E4DC6138439':
|
|
numcol = 7;
|
|
// Kinsie's Test Map (HEXEN)
|
|
case 'D70250F93C6B6072DA39D9672B37F236':
|
|
numcol = 11;
|
|
// Kinsie's Test Map (DOOM)
|
|
case '959A613006CC3AA912C4A22908B7566A':
|
|
for ( int i=0; i<numcol; i++ )
|
|
AddThing(4206900+i,(1472+64*i,640,0));
|
|
break;
|
|
}
|
|
switch ( checksum )
|
|
{
|
|
// ALL of Equinox
|
|
case '9705315427A2F951A538B23C39199236':
|
|
case '54E9953A3C1A88641E00AA353BAF46E9':
|
|
case 'DD3986E184829DAB73160F4C122155F9':
|
|
case 'B3E6CAE9983EA1DC4D9544DA26118569':
|
|
case '3E4DFC55EAE85A7FE02DD21ED33AABCA':
|
|
case 'ECCB69F1BBF91D8F67D8583EA2546863':
|
|
case 'E66BCCFAD7AC40EFB21E2A19131E1522':
|
|
case 'A0B6B83DC8BD50FC84170572840DE585':
|
|
case '9BA1ACB72D878AFA3CB22B810D6CCD9A':
|
|
case 'A26749D9B9CD70ECED5C7B6BAB6D859E':
|
|
case '3805A661D5C4523AFF7BF86991071043':
|
|
case 'F91E3FE225F10EECBE21486E1BB14834':
|
|
case '838BA30EB0B003C070414093BFDFA72A':
|
|
// replace certain animated flats with duplicates
|
|
// this avoids unintended TERRAIN defs from applying to them
|
|
level.ReplaceTextures("SLIME01","EQNXSL01",0);
|
|
level.ReplaceTextures("SLIME02","EQNXSL02",0);
|
|
level.ReplaceTextures("SLIME03","EQNXSL03",0);
|
|
level.ReplaceTextures("SLIME04","EQNXSL04",0);
|
|
level.ReplaceTextures("SLIME09","EQNXSL09",0);
|
|
level.ReplaceTextures("SLIME10","EQNXSL10",0);
|
|
level.ReplaceTextures("SLIME11","EQNXSL11",0);
|
|
level.ReplaceTextures("SLIME12","EQNXSL12",0);
|
|
level.ReplaceTextures("BLOOD1","EQNXBLD1",0);
|
|
level.ReplaceTextures("BLOOD2","EQNXBLD2",0);
|
|
level.ReplaceTextures("BLOOD3","EQNXBLD3",0);
|
|
level.ReplaceTextures("RROCK05","EQNXRR05",0);
|
|
level.ReplaceTextures("RROCK06","EQNXRR06",0);
|
|
level.ReplaceTextures("RROCK07","EQNXRR07",0);
|
|
level.ReplaceTextures("RROCK08","EQNXRR08",0);
|
|
break;
|
|
}
|
|
}
|
|
}
|