Add support for E1M4B and E1M8B as part of Wadfusion.

This commit is contained in:
Mari the Deer 2024-10-20 13:58:22 +02:00
commit d47eb2f1e3
6 changed files with 57 additions and 5 deletions

View file

@ -1,3 +1,3 @@
[default]
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r1156 \cu(Mon Oct 7 10:51:27 CEST 2024)\c-";
SWWM_SHORTVER="\cw1.3pre r1156 \cu(2024-10-07 10:51:27)\c-";
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r1157 \cu(Sun Oct 20 13:58:22 CEST 2024)\c-";
SWWM_SHORTVER="\cw1.3pre r1157 \cu(2024-10-20 13:58:22)\c-";

View file

@ -65,6 +65,9 @@ F6EE16F770AD309D608EA0B1F1E249FC
F951882CB5A8DEF910F0ED966A1054C5
FB564DF28BC8D4BF70F60FB3256BCF9D
FE97DCB9E6235FB3C52AE7C143160D73
# E1M4B + E1M8B
1D80B17F6283346D35EDB86CD684C4D3
A1F105211112747EE50BA520462A471E
# DOOM II
0BB515B79E0A6C42C4846C4E6F5F1D73
0D491365C1B88B7D1B603890100DD03E

View file

@ -86,6 +86,31 @@ Class SWWMLevelCompatibility : LevelPostProcessor
for ( int i=118; i<=125; i++ )
SetThingEdNum(i,0);
break;
case 'A1F105211112747EE50BA520462A471E':
{
// E1M8B
level.nextsecretmap = level.nextmap; // so the handler can detect this
level.nextmap = "E2M1";
// no damage in exit sector
SetSectorSpecial(538,0);
// paint it black
for ( int i=1; i<4; i++ )
level.Sectors[538].SetSpecialColor(i,"Black");
// teleport sequence
static const int exitlines[] =
{
3048, 3055, 3073,
3074, 3075, 3076,
3077, 3078, 3079,
3080, 3081, 3082
};
for ( int i=0; i<12; i++ )
SetLineSpecial(exitlines[i],ACS_Execute,-Int('E1M8_KNOCKOUT'));
// remove enemies
for ( int i=183; i<=190; i++ )
SetThingEdNum(i,0);
break;
}
// Doom E2M8
case 'EFFE91DF41AD41F6973C06F0AD67DDB9':
level.nextsecretmap = level.nextmap; // so the handler can detect this

View file

@ -123,7 +123,8 @@ extend Class SWWMHandler
MAP_HMAP40,
MAP_HMAP60,
MAP_EVMAP30, // eviternity
MAP_EVIIMAP30 // eviternity 2
MAP_EVIIMAP30, // eviternity 2
MAP_DE1M8B // "tech gone bad"
};
static play void AddBoss( int tid, String tag, bool endgame = false )
@ -178,6 +179,8 @@ extend Class SWWMHandler
|| (mapsum ~== "97079958C7E89C1908890730B8B9FEB7")
|| (mapsum ~== "058FB092EA1B70DA1E3CBF501C4A91A1") )
return MAP_DE1M8;
if ( mapsum ~== "A1F105211112747EE50BA520462A471E" )
return MAP_DE1M8B;
if ( mapsum ~== "EFFE91DF41AD41F6973C06F0AD67DDB9" )
return MAP_DE2M8;
if ( mapsum ~== "EF128313112110ED6C1549AF96AF26C9" )
@ -239,7 +242,7 @@ extend Class SWWMHandler
private void VanillaBossSpawn( WorldEvent e )
{
if ( bossmap == -1 ) bossmap = WhichVanillaBossMap();
if ( bossmap == MAP_DE1M8 )
if ( (bossmap == MAP_DE1M8) || (bossmap == MAP_DE1M8B) )
{
if ( e.Thing is 'BaronOfHell' )
{

View file

@ -251,6 +251,7 @@ extend Class SWWMHandler
switch ( whichboss )
{
case MAP_DE1M8:
case MAP_DE1M8B:
SendInterfaceEvent(consoleplayer,"swwmsetdialogue.PHOBOS");
break;
case MAP_DE2M8:

View file

@ -234,11 +234,31 @@ Class SWWMStats : SWWMStaticThinker
|| (li.cluster != level.cluster)
|| FindLevelStats(li.mapname) )
continue;
// wadfusion hack for E1M4B and E1M8B
bool wf_hack = false;
if ( (li.mapname == "E1M4") && LevelInfo.MapExists("E1M4B") )
{
let cv = CVar.GetCVar("wf_blackroomswap_e1m4b");
if ( cv && cv.GetBool() )
{
wf_hack = true;
li = LevelInfo.FindLevelInfo("E1M4B");
}
}
else if ( (li.mapname == "E1M8") && LevelInfo.MapExists("E1M8B") )
{
let cv = CVar.GetCVar("wf_blackroomswap_e1m8b");
if ( cv && cv.GetBool() )
{
wf_hack = true;
li = LevelInfo.FindLevelInfo("E1M8B");
}
}
let ls = new("LevelStat");
// we can automatically assume that all levels from the same cluster will have this flag as well
ls.hub = !!(level.clusterflags&level.CLUSTER_HUB);
ls.visited = false;
ls.cluster = li.cluster;
ls.cluster = wf_hack?1:li.cluster; // force cluster to be 1 for Romero's extra maps
ls.levelname = li.LookupLevelName();
// level name may contain trailing whitespace due to DEHACKED nonsense, so strip it
ls.levelname.StripRight();