Sigil 2 (v1.0) and Eviternity 2 (RC5) support.

+ Invinciball activation now voiced by Demo (thanks, Vyolette).
+ Retooled exit line merging (should fix those pesky duplicate exit markers).

Note: Oneliners for the Eviternity 2 final boss are not voiced yet.
This commit is contained in:
Mari the Deer 2024-01-04 19:50:26 +01:00
commit cbb1b2a8cb
36 changed files with 1177 additions and 165 deletions

View file

@ -50,6 +50,7 @@ extend Class SWWMUtility
if ( gameinfo.gametype&GAME_DOOM )
{
if ( IsEviternity() ) return true;
if ( IsEviternityTwo() ) return true;
if ( IsUltDoom2() ) return true;
}
return false;
@ -73,6 +74,18 @@ extend Class SWWMUtility
return false;
}
// detect eviternity 2 (naive method)
static bool IsEviternityTwo()
{
foreach ( cls:AllActorClasses )
{
if ( cls.GetClassName() != "EviternatusAnta" )
continue;
return true;
}
return false;
}
// detect doom vacation
static bool InDoomVacation()
{

View file

@ -41,6 +41,8 @@ extend Class SWWMUtility
basetag = "SPECTRE";
break;
case 'LostSoul':
case 'LostSoulEvit2':
case 'LostSoulCount':
basetag = "LOST";
break;
case 'Cacodemon':
@ -78,6 +80,8 @@ extend Class SWWMUtility
basetag = "SPIDER";
break;
case 'Cyberdemon':
case 'CyberdemonEvit2':
case 'CyberdemonMAP24':
basetag = "CYBER";
break;
case 'SWWMBossBrain':
@ -223,6 +227,46 @@ extend Class SWWMUtility
case 'NightmareDemon':
basetag = "NDEMON";
break;
// eviternity 2
case 'FormerCorporal':
basetag = "FCORPORAL";
break;
case 'AstralArachnotron':
basetag = "ASTRALARACH";
break;
case 'AstralCacodemon':
basetag = "ASTRAL";
break;
case 'Veilimp':
basetag = "VEILIMP";
break;
case 'GoldenAstralCaco':
case 'GoldenAstralCacoBoss':
basetag = "ASTRALGOLD";
break;
case 'DukeOfHell':
basetag = "DUKE";
break;
case 'AstralBabyCaco':
basetag = "ASTRALBABY";
break;
case 'NAC':
basetag = "NAC";
break;
case 'AstralMancubus':
basetag = "ASTRALFATSO";
break;
case 'NecromenaceA':
case 'NecromenaceB':
case 'NecromenaceC':
case 'NecromenaceD':
basetag = "NECROMENACE";
break;
case 'EviternatusAnta':
case 'EviternatusBete':
case 'EviternatusCeph':
basetag = "EVITERNATUS";
break;
}
if ( basetag == "" ) return a.GetTag(defstr);
String funtag = "FN_"..basetag.."_FUN";
@ -263,6 +307,11 @@ extend Class SWWMUtility
if ( a == 'StealthRevenant' ) return 'Revenant';
if ( a == 'StealthShotgunGuy' ) return 'ShotgunGuy';
if ( a == 'StealthZombieMan' ) return 'ZombieMan';
// eviternity 2 hackery
if ( a.GetClassName() == 'LostSoulEvit2' ) return 'LostSoul';
if ( a.GetClassName() == 'LostSoulCount' ) return 'LostSoul';
if ( a.GetClassName() == 'CyberdemonEvit2' ) return 'Cyberdemon';
if ( a.GetClassName() == 'CyberdemonMAP24' ) return 'Cyberdemon';
// heretic monsters
if ( a == 'Sorcerer2' ) return 'Sorcerer1';
if ( a == 'HereticImpLeader' ) return 'HereticImp';

View file

@ -676,4 +676,15 @@ extend Class SWWMUtility
// is the point behind both lines?
return (Level.PointOnLineSide(p,a) && Level.PointOnLineSide(p,b));
}
static bool SameSpecial( Line a, Line b )
{
if ( a.special != b.special ) return false;
for ( int i=0; i<5; i++ )
{
if ( a.args[i] != b.args[i] )
return false;
}
return true;
}
}