diff --git a/acs/swwmcomp.o b/acs/swwmcomp.o index 1b9db1aad..4ffd4cc4a 100644 Binary files a/acs/swwmcomp.o and b/acs/swwmcomp.o differ diff --git a/language.version b/language.version index a27895be5..6d07eb1c4 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r416 \cu(Sun 28 Mar 11:26:07 CEST 2021)\c-"; -SWWM_SHORTVER="\cw0.9.11b-pre r416 \cu(2021-03-28 11:26:07)\c-"; +SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r417 \cu(Sun 28 Mar 12:30:45 CEST 2021)\c-"; +SWWM_SHORTVER="\cw0.9.11b-pre r417 \cu(2021-03-28 12:30:45)\c-"; diff --git a/swwmcomp.acs b/swwmcomp.acs index abc04250e..d9343e7d6 100644 --- a/swwmcomp.acs +++ b/swwmcomp.acs @@ -3,30 +3,6 @@ // these scripts are redirected to by the compatibility postprocessor -SCRIPT "ZPACK_E1M2_SCRIPT6" ( void ) -{ - TagWait(22); - Door_Open(22,16); - Floor_LowerByValue(22,2,8); - Delay(245); - Door_Close(22,16); - Floor_RaiseByValue(22,2,8); - Delay(24); -} - -SCRIPT "ZPACK_E3M2_SCRIPT9" ( void ) -{ - ACS_Execute(4,0,7); - ClearLineSpecial(); -} - -SCRIPT "ZPACK_E3M8_SCRIPT15" ( void ) -{ - Floor_LowerByValue(49,10,64); - TagWait(49); - Floor_LowerByValue(37,10,120); -} - SCRIPT "HHR_BRAINWALL" ( void ) { SpawnSpotFacing("BossBrain",666); @@ -42,7 +18,7 @@ SCRIPT "NERVE_EXITOPEN" ( void ) SCRIPT "EQUINOX_BRAINCRUSH" ( int tag ) { - SpawnSpotFacing("BossBrain",666); + ScriptCall("SWWMUtility","SpawnVanillaBossBrain",666); Ceiling_CrushAndRaiseDist(tag,8,8,10); } diff --git a/zscript/compat/swwm_compat.zsc b/zscript/compat/swwm_compat.zsc index 9abec2641..72e772b44 100644 --- a/zscript/compat/swwm_compat.zsc +++ b/zscript/compat/swwm_compat.zsc @@ -1,7 +1,6 @@ // 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 +// sometimes shit 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 { @@ -26,22 +25,6 @@ Class SWWMLevelCompatibility : LevelPostProcessor { 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 @@ -62,6 +45,7 @@ Class SWWMLevelCompatibility : LevelPostProcessor OffsetSectorPlane(155,1,-80.); SetLineSpecial(652,ACS_Execute,-Int('NERVE_EXITOPEN')); break; + // INTER-EPISODE PROGRESSION STUFF // Doom E1M8 case '97079958C7E89C1908890730B8B9FEB7': // 1.1-1.2 @@ -157,6 +141,7 @@ Class SWWMLevelCompatibility : LevelPostProcessor } } break; + // EQUINOX: various boss brain setups that could be cheesed with the Ynykron or silver bullet // Equinox MAP04 case 'E66BCCFAD7AC40EFB21E2A19131E1522': EquinoxBossBrainHandle(2406,27); @@ -175,6 +160,7 @@ Class SWWMLevelCompatibility : LevelPostProcessor case '3805A661D5C4523AFF7BF86991071043': EquinoxBossBrainHandle(4106,60); break; + // DOOM VACATION: this wad is weird // Doom Vacation MAP01 (1.4) case 'F286BABF0D152259CD6B996E8920CA70': // Doom Vacation MAP01 (1.5) diff --git a/zscript/utility/swwm_utility.zsc b/zscript/utility/swwm_utility.zsc index 2ab756596..eaf4505e9 100644 --- a/zscript/utility/swwm_utility.zsc +++ b/zscript/utility/swwm_utility.zsc @@ -1808,6 +1808,18 @@ Class SWWMUtility victim.DamageMobj(null,null,victim.Health,'EndLevel',DMG_FORCED|DMG_THRUSTLESS); } + // for Equinox + static play void SpawnVanillaBossBrain( int tid ) + { + let ai = Level.CreateActorIterator(tid); + Actor a; + while ( a = ai.Next() ) + { + let bb = a.Spawn("BossBrain",a.pos,NO_REPLACE); + bb.angle = a.angle; + } + } + // checks if we're playing in doom 1 // this is used so we can sometimes replace the shotgun with a SSG slot weapon static bool IsDoomOne()