// level compatibility scripts // sometimes stuff breaks, or certain changes are needed for balance or to mesh // with the mod's mechanics better, this is here for that Class SWWMLevelCompatibility : LevelPostProcessor { private void EquinoxBossBrainHandle( uint lineno, int sectortag ) { // don't spawn boss brains until it's time to crush them for ( uint i=0; i 20 ) SetThingEdNum(i,0); } else if ( pos.x == -5344. ) { ncellsb++; if ( ncellsb > 20 ) SetThingEdNum(i,0); } } break; // Ultimate Doom 2 MAP20 (dv3.1) case '96C5914A9B4A2383DE6BBE363940DF2F': { // add a "sector enter" action for reaching the exit room // and make it trigger a dialogue uint nt = AddThing(9998,(-9360,12768,12)); SetThingFlags(nt,MODES_ALL|MTF_STANDSTILL); // trigger once SetThingSpecial(nt,Thing_Activate); int tiddy = level.FindUniqueTid(9999); SetThingArgument(nt,0,tiddy); nt = AddThing(4206930,(0,0,0)); SetThingID(nt,tiddy); break; } // EQUINOX: various boss brain setups that could be cheesed with the Ynykron or silver bullet // 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; // DOOM VACATION: this wad is weird // Doom Vacation MAP01 (1.4) case 'F286BABF0D152259CD6B996E8920CA70': // Doom Vacation MAP01 (1.5) case 'A52BD2038CF814101AAB7D9C78F9ACE2': // two girls shouldn't be headpattable, as they have use lines around them SetThingArgument(314,0,1); SetThingArgument(315,0,1); SetThingID(314,666); SetThingID(315,667); // unfortunately the line special wrangling has to be done one tic after map load // because ACS is just that goddamn weird break; // Doom 2 MAP07 case '291F24417FB3DD411339AE82EF9B3597': // remove excess backpacks (there's 10 of them for crying out loud) for ( uint i=0; i= 3007) && (ednum <= 3014)) || ((ednum >= 3100) && (ednum <= 3142)) ) SetThingEdNum(i,ednum+4204000); } break; case 'F206766043C4D9BA2C36F76106F96279': case 'FCF009C63BBA5F8CEE71ED5EC0B02CDA': // 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; // ALL of Doom Vacation case 'D07842872226058F93D0957EA46ED782': case 'F286BABF0D152259CD6B996E8920CA70': case '7E2707328B6BCF0ACDC2E80049E21167': case '8AA3E9B8E816E72A04368404402DD8E3': case '8B28736D01492F3701CCD736C97EF125': case '10D3C12050518E806801B12057437403': case '48A7FC1AF2D1CCBFE7C6EFB4EEE97A50': case '73B317A0DA2C75BD903E895A27EEEDB9': case '62158F76FC56B62007C1F167A7921304': case '0D33878E4C8164A792AECCDA56F08D60': case 'A52BD2038CF814101AAB7D9C78F9ACE2': case 'F6413AFAEB73B3848A82F70C2A01E47D': case 'F8CBDC96A7E08CAFC5D7C0E711551E40': case '3E821CC90C38B7D71DDEB0324D3900CC': case '05D0AA06742B3C7DCD79E5F659267656': case '8F6710E3570C2056FDCA591EF89B31A9': case '382E99BBFA9301110630CD5F8F8056DA': case '480F6AD2D2E266DA745FD8FA75EC327D': case '968D97F5952E55DB2464274A8EE5F529': case '5669E396BEDDEA6D90EF5AF5EC892811': // get rid of these dumb skulltag ctf actors for ( uint i=0; i Maces; Maces.Clear(); for ( uint i=0; i