Tweakin' things.
This commit is contained in:
parent
a8fa4e5a79
commit
52bf9704a3
8 changed files with 90 additions and 34 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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) )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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++ )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue