Tweakin' things.

This commit is contained in:
Mari the Deer 2021-10-16 09:29:45 +02:00
commit 52bf9704a3
8 changed files with 90 additions and 34 deletions

View file

@ -573,15 +573,7 @@ extend Class SWWMHandler
else if ( e.Replacee is 'TeleportFog' ) e.Replacement = 'SWWMTeleportFog';
else if ( (e.Replacee is 'CommanderKeen') && (!e.Replacement || (e.Replacement == 'CommanderKeen')) )
{
let def = GetDefaultByType(e.Replacee);
bool dehackery = false;
for ( State s=def.SpawnState; s; s=s.NextState )
{
if ( s.bDEHACKED ) dehackery = true;
// keep checking until we hit a loop, just in case
if ( s.NextState && (s.DistanceTo(s.NextState) <= 0) ) break;
}
if ( dehackery )
if ( SWWMUtility.CheckDehackery(e.Replacee) )
{
if ( profiling ) checkreplacement_ms += MSTime()-curms;
return;
@ -590,15 +582,7 @@ extend Class SWWMHandler
}
else if ( (e.Replacee is 'BossBrain') && (!e.Replacement || (e.Replacement == 'BossBrain')) )
{
let def = GetDefaultByType(e.Replacee);
bool dehackery = false;
for ( State s=def.SpawnState; s; s=s.NextState )
{
if ( s.bDEHACKED ) dehackery = true;
// keep checking until we hit a loop, just in case
if ( s.NextState && (s.DistanceTo(s.NextState) <= 0) ) break;
}
if ( dehackery )
if ( SWWMUtility.CheckDehackery(e.Replacee) )
{
if ( profiling ) checkreplacement_ms += MSTime()-curms;
return;

View file

@ -265,6 +265,7 @@ extend Class SWWMHandler
SWWMInterest.Spawn(thekey:Key(e.Thing));
}
if ( indoomvacation == -1 ) indoomvacation = SWWMUtility.InDoomVacation();
if ( inultdoom2 == -1 ) inultdoom2 = SWWMUtility.IsUltDoom2();
if ( e.Thing.GetClass() == 'Pig' )
e.Thing.SetTag("$FN_PIG"); // missing in gzdoom
// eviternity stuff
@ -367,6 +368,16 @@ extend Class SWWMHandler
HeadpatTracker(hp).dvacationarghack = true;
}
}
else if ( inultdoom2 && (e.Thing.GetClassName() == "WolfensteinSS") )
{
e.Thing.SetTag("$FN_ELITEZOMBIE");
//e.Thing.Obituary = "$OB_ELITEZOMBIE";
e.Thing.SeeSound = "grunt/sight";
e.Thing.AttackSound = "grunt/attack";
e.Thing.PainSound = "grunt/pain";
e.Thing.DeathSound = "grunt/death";
e.Thing.ActiveSound = "grunt/active";
}
if ( SWWMUtility.IdentifyingDog(e.Thing) || SWWMUtility.IdentifyingCaco(e.Thing)
|| SWWMUtility.IdentifyingDrug(e.Thing) || SWWMUtility.IdentifyingDoubleBoi(e.Thing) )
{

View file

@ -20,6 +20,7 @@ Class SWWMHandler : EventHandler
int bossmap;
int iwantdie;
int indoomvacation;
int inultdoom2;
// for checkreplacement
bool hasdrlamonsters;
@ -44,6 +45,7 @@ Class SWWMHandler : EventHandler
iwantdie = -1;
bossmap = -1;
indoomvacation = -1;
inultdoom2 = -1;
// this one can be initialized here easily
for ( int i=0; i<AllActorClasses.Size(); i++ )
{

View file

@ -427,8 +427,8 @@ Class SWWMSS : Actor
SeeSound "wolf3d/sssight";
DeathSound "wolf3d/ssdie";
AttackSound "wolf3d/ssfire";
Obituary "$OB_WOLFSS";
Tag "$FN_WOLFSS";
Obituary "$OB_WOLFSS_ORIG";
Tag "$FN_WOLFSS_ORIG";
Species "WolfensteinSS";
DropItem "Clip";
}

View file

@ -864,10 +864,53 @@ Class SWWMUtility
return false;
}
// try to be as thorough as possible in checking if DEHACKED has altered this actor
static clearscope bool CheckDehackery( Class<Actor> cls )
{
let def = GetDefaultByType(cls);
for ( State s=def.SpawnState; s; s=s.NextState )
{
if ( s.bDEHACKED ) return true;
// keep checking until we hit a loop, just in case
if ( s.NextState && (s.DistanceTo(s.NextState) <= 0) ) break;
}
for ( State s=def.SeeState; s; s=s.NextState )
{
if ( s.bDEHACKED ) return true;
// keep checking until we hit a loop, just in case
if ( s.NextState && (s.DistanceTo(s.NextState) <= 0) ) break;
}
for ( State s=def.MissileState; s; s=s.NextState )
{
if ( s.bDEHACKED ) return true;
// keep checking until we hit a loop, just in case
if ( s.NextState && (s.DistanceTo(s.NextState) <= 0) ) break;
}
for ( State s=def.MeleeState; s; s=s.NextState )
{
if ( s.bDEHACKED ) return true;
// keep checking until we hit a loop, just in case
if ( s.NextState && (s.DistanceTo(s.NextState) <= 0) ) break;
}
return false;
}
// because GetTag() returns the localized string, we need to do things the hard way
static clearscope String GetFunTag( Actor a, String defstr = "" )
static play String GetFunTag( Actor a, String defstr = "" )
{
if ( a is 'SWWMMonster' ) return SWWMMonster(a).GetFunTag(defstr);
// look up any fun tag services
let si = ServiceIterator.Find("FunTagService");
Service sv;
String res;
while ( sv = si.Next() )
{
res = sv.GetString("GetFunTag",objectArg:a);
if ( res == "" ) continue;
si.Destroy();
return res;
}
si.Destroy();
int ntags = 1;
String basetag = "";
switch ( a.GetClassName() )
@ -940,16 +983,13 @@ Class SWWMUtility
basetag = "BOSSBRAIN";
break;
case 'WolfensteinSS':
// ensure it's not being replaced
let def = GetDefaultByType('WolfensteinSS');
bool dehackery = false;
for ( State s=def.SpawnState; s; s=s.NextState )
if ( IsUltDoom2() )
{
if ( s.bDEHACKED ) dehackery = true;
// keep checking until we hit a loop, just in case
if ( s.NextState && (s.DistanceTo(s.NextState) <= 0) ) break;
basetag = "ELITEZOMBIE";
break;
}
if ( dehackery ) break;
// ensure it's not being replaced
if ( CheckDehackery('WolfensteinSS') ) break;
case 'SWWMSS':
basetag = "WOLFSS";
break;