Legion of Bones support.
This commit is contained in:
parent
24ae3ee3b7
commit
e9013694f0
7 changed files with 137 additions and 24 deletions
|
|
@ -210,49 +210,49 @@ extend Class SWWMHandler
|
|||
case 0:
|
||||
for ( int i=0; i<18; i++ )
|
||||
{
|
||||
if ( !(a is babypool[i]) ) continue;
|
||||
if ( !(a.GetClassName() == babypool[i]) ) continue;
|
||||
return refpool[i];
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
for ( int i=0; i<18; i++ )
|
||||
{
|
||||
if ( !(a is easypool[i]) ) continue;
|
||||
if ( !(a.GetClassName() == easypool[i]) ) continue;
|
||||
return refpool[i];
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
for ( int i=0; i<18; i++ )
|
||||
{
|
||||
if ( !(a is normalpool[i]) ) continue;
|
||||
if ( !(a.GetClassName() == normalpool[i]) ) continue;
|
||||
return refpool[i];
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
for ( int i=0; i<18; i++ )
|
||||
{
|
||||
if ( !(a is hardpool[i]) ) continue;
|
||||
if ( !(a.GetClassName() == hardpool[i]) ) continue;
|
||||
return refpool[i];
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
for ( int i=0; i<18; i++ )
|
||||
{
|
||||
if ( !(a is nightmarepool[i]) ) continue;
|
||||
if ( !(a.GetClassName() == nightmarepool[i]) ) continue;
|
||||
return refpool[i];
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
for ( int i=0; i<18; i++ )
|
||||
{
|
||||
if ( !(a is technophobiapool[i]) ) continue;
|
||||
if ( !(a.GetClassName() == technophobiapool[i]) ) continue;
|
||||
return refpool[i];
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
for ( int i=0; i<18; i++ )
|
||||
{
|
||||
if ( !(a is armageddonpool[i]) ) continue;
|
||||
if ( !(a.GetClassName() == armageddonpool[i]) ) continue;
|
||||
return refpool[i];
|
||||
}
|
||||
break;
|
||||
|
|
@ -260,7 +260,7 @@ extend Class SWWMHandler
|
|||
default:
|
||||
for ( int i=0; i<18; i++ )
|
||||
{
|
||||
if ( !(a is adaptivepool[i]) ) continue;
|
||||
if ( !(a.GetClassName() == adaptivepool[i]) ) continue;
|
||||
return refpool[i];
|
||||
}
|
||||
break;
|
||||
|
|
@ -268,12 +268,66 @@ extend Class SWWMHandler
|
|||
return null;
|
||||
}
|
||||
|
||||
private Class<Actor> GetLOBReplacee( Class<Actor> a )
|
||||
{
|
||||
static const String refpool[] =
|
||||
{
|
||||
"Zombieman",
|
||||
"Shotgunguy",
|
||||
"Chaingunguy",
|
||||
"DoomImp",
|
||||
"Demon",
|
||||
"Spectre",
|
||||
"Cacodemon",
|
||||
"HellKnight",
|
||||
"BaronOfHell",
|
||||
"Revenant",
|
||||
"Fatso",
|
||||
"Arachnotron",
|
||||
"Archvile"
|
||||
};
|
||||
static const String reppool[] =
|
||||
{
|
||||
"LOBZombieman",
|
||||
"LOBShotgunguy",
|
||||
"LOBChaingunguy",
|
||||
"LOBDoomImp",
|
||||
"LOBDemon",
|
||||
"LOBSpectre",
|
||||
"LOBCacodemon",
|
||||
"LOBHellKnight",
|
||||
"LOBBaronOfHell",
|
||||
"LOBRevenant",
|
||||
"LOBFatso",
|
||||
"LOBArachnotron",
|
||||
"LOBArchvile"
|
||||
};
|
||||
for ( int i=0; i<13; i++ )
|
||||
{
|
||||
if ( !(a.GetClassName() == reppool[i]) ) continue;
|
||||
return refpool[i];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
override void CheckReplacee( ReplacedEvent e )
|
||||
{
|
||||
if ( profiling ) ProfileTick();
|
||||
// these are all needed so boss deaths work
|
||||
if ( e.Replacement is 'DSparilHax' )
|
||||
e.Replacee = 'Sorcerer2';
|
||||
// drla stuff, needed so boss deaths work
|
||||
// LOB "double death" stuff
|
||||
if ( haslegionofbones && swwm_lobdoubled )
|
||||
{
|
||||
let rep = GetLOBReplacee(e.Replacement);
|
||||
if ( rep )
|
||||
{
|
||||
e.Replacee = rep;
|
||||
if ( profiling ) ProfileTock(PT_CHECKREPLACEE);
|
||||
return;
|
||||
}
|
||||
}
|
||||
// drla stuff
|
||||
if ( !hasdrlamonsters )
|
||||
{
|
||||
if ( profiling ) ProfileTock(PT_CHECKREPLACEE);
|
||||
|
|
@ -489,49 +543,49 @@ extend Class SWWMHandler
|
|||
case 0:
|
||||
for ( int i=0; i<18; i++ )
|
||||
{
|
||||
if ( !(a is refpool[i]) ) continue;
|
||||
if ( !(a.GetClassName() == refpool[i]) ) continue;
|
||||
return babypool[i];
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
for ( int i=0; i<18; i++ )
|
||||
{
|
||||
if ( !(a is refpool[i]) ) continue;
|
||||
if ( !(a.GetClassName() == refpool[i]) ) continue;
|
||||
return easypool[i];
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
for ( int i=0; i<18; i++ )
|
||||
{
|
||||
if ( !(a is refpool[i]) ) continue;
|
||||
if ( !(a.GetClassName() == refpool[i]) ) continue;
|
||||
return normalpool[i];
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
for ( int i=0; i<18; i++ )
|
||||
{
|
||||
if ( !(a is refpool[i]) ) continue;
|
||||
if ( !(a.GetClassName() == refpool[i]) ) continue;
|
||||
return hardpool[i];
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
for ( int i=0; i<18; i++ )
|
||||
{
|
||||
if ( !(a is refpool[i]) ) continue;
|
||||
if ( !(a.GetClassName() == refpool[i]) ) continue;
|
||||
return nightmarepool[i];
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
for ( int i=0; i<18; i++ )
|
||||
{
|
||||
if ( !(a is refpool[i]) ) continue;
|
||||
if ( !(a.GetClassName() == refpool[i]) ) continue;
|
||||
return technophobiapool[i];
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
for ( int i=0; i<18; i++ )
|
||||
{
|
||||
if ( !(a is refpool[i]) ) continue;
|
||||
if ( !(a.GetClassName() == refpool[i]) ) continue;
|
||||
return armageddonpool[i];
|
||||
}
|
||||
break;
|
||||
|
|
@ -539,7 +593,7 @@ extend Class SWWMHandler
|
|||
default:
|
||||
for ( int i=0; i<18; i++ )
|
||||
{
|
||||
if ( !(a is refpool[i]) ) continue;
|
||||
if ( !(a.GetClassName() == refpool[i]) ) continue;
|
||||
return adaptivepool[i];
|
||||
}
|
||||
break;
|
||||
|
|
@ -547,6 +601,48 @@ extend Class SWWMHandler
|
|||
return null;
|
||||
}
|
||||
|
||||
private Class<Actor> GetLOBReplacement( Class<Actor> a )
|
||||
{
|
||||
static const String refpool[] =
|
||||
{
|
||||
"Zombieman",
|
||||
"Shotgunguy",
|
||||
"Chaingunguy",
|
||||
"DoomImp",
|
||||
"Demon",
|
||||
"Spectre",
|
||||
"Cacodemon",
|
||||
"HellKnight",
|
||||
"BaronOfHell",
|
||||
"Revenant",
|
||||
"Fatso",
|
||||
"Arachnotron",
|
||||
"Archvile"
|
||||
};
|
||||
static const String reppool[] =
|
||||
{
|
||||
"LOBZombieman",
|
||||
"LOBShotgunguy",
|
||||
"LOBChaingunguy",
|
||||
"LOBDoomImp",
|
||||
"LOBDemon",
|
||||
"LOBSpectre",
|
||||
"LOBCacodemon",
|
||||
"LOBHellKnight",
|
||||
"LOBBaronOfHell",
|
||||
"LOBRevenant",
|
||||
"LOBFatso",
|
||||
"LOBArachnotron",
|
||||
"LOBArchvile"
|
||||
};
|
||||
for ( int i=0; i<13; i++ )
|
||||
{
|
||||
if ( !(a.GetClassName() == refpool[i]) ) continue;
|
||||
return reppool[i];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
override void CheckReplacement( ReplaceEvent e )
|
||||
{
|
||||
if ( profiling ) ProfileTick();
|
||||
|
|
@ -568,6 +664,18 @@ extend Class SWWMHandler
|
|||
return;
|
||||
}
|
||||
}
|
||||
// LOB "double death" stuff
|
||||
if ( haslegionofbones && swwm_lobdoubled )
|
||||
{
|
||||
let rep = GetLOBReplacement(e.Replacee);
|
||||
if ( rep )
|
||||
{
|
||||
e.Replacement = rep;
|
||||
e.IsFinal = true;
|
||||
if ( profiling ) ProfileTock(PT_CHECKREPLACEMENT);
|
||||
return;
|
||||
}
|
||||
}
|
||||
// only replace vanilla blood if no other gore mod is doing it
|
||||
if ( (((e.Replacee == "Blood") && (!e.Replacement || e.Replacement == "Blood")) || (bludtypes.Find(e.Replacee.GetClassName()) < bludtypes.Size())) && swwm_blood ) e.Replacement = "mkBlood";
|
||||
else if ( e.Replacee is 'ItemFog' ) e.Replacement = 'SWWMItemFog';
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ Class SWWMHandler : EventHandler
|
|||
Array<Service> funtagsv, mergemonstersv;
|
||||
|
||||
// for checkreplacement
|
||||
bool hasdrlamonsters;
|
||||
bool hasdrlamonsters, haslegionofbones;
|
||||
int iskdizd;
|
||||
Array<String> bludtypes;
|
||||
|
||||
|
|
@ -73,12 +73,11 @@ Class SWWMHandler : EventHandler
|
|||
bossmap = -1;
|
||||
indoomvacation = -1;
|
||||
inultdoom2 = -1;
|
||||
// this one can be initialized here easily
|
||||
// class-checking ones can be initialized here easily
|
||||
for ( int i=0; i<AllActorClasses.Size(); i++ )
|
||||
{
|
||||
if ( AllActorClasses[i].GetClassName() != "RLMonster" ) continue;
|
||||
hasdrlamonsters = true;
|
||||
break;
|
||||
if ( AllActorClasses[i].GetClassName() == "RLMonster" ) hasdrlamonsters = true;
|
||||
else if ( AllActorClasses[i].GetClassName() == "LOBZombieman" ) haslegionofbones = true;
|
||||
}
|
||||
for ( int i=0; i<AllClasses.Size(); i++ )
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue