- Fuck it, Quadravol will be lever action. - Tiny cleanup. - Rewrite the weapon replacement system (less of a mess now maybe?). - Some menu fixes. - Minimap zoom increments like in the Common Library. - Add missing sound definition for Safety Tether. (This mostly went unnoticed because it's VERY rare to have it play) - Shift Sparkster x3 (DLC2) to slot 7. This way you can have both it and the Quadravol simultaneously. It would be unfair to not let you hold both "iconic" UnSX weapons at once. - Small lore tweak on Quadravol stance swap. - Fix off-by-one bug in looping palette lights. - Re-do logo shader. Use separate layer textures. - Fix Elemental Coating breaking "End Level" damage sectors. (This will be the last batch of changes before I continue working on menus)
716 lines
23 KiB
Text
716 lines
23 KiB
Text
// class replacements
|
|
|
|
extend Class SWWMHandler
|
|
{
|
|
bool nugflip; // h/a nugget flip-flop spawn counter
|
|
|
|
private Class<Actor> GetDRLAReplacee( Class<Actor> a )
|
|
{
|
|
static const String refpool[] =
|
|
{
|
|
"Zombieman",
|
|
"Shotgunguy",
|
|
"Chaingunguy",
|
|
"DoomImp",
|
|
"Demon",
|
|
"Spectre",
|
|
"LostSoul",
|
|
"Cacodemon",
|
|
"HellKnight",
|
|
"BaronOfHell",
|
|
"Arachnotron",
|
|
"PainElemental",
|
|
"Revenant",
|
|
"Fatso",
|
|
"Archvile",
|
|
"Cyberdemon",
|
|
"SpiderMastermind",
|
|
"BossEye",
|
|
"BossBrain"
|
|
};
|
|
static const String babypool[] =
|
|
{
|
|
"RLFormerHumanPistol",
|
|
"RLFormerSergeantShotgun",
|
|
"RLFormerCommandoChaingun",
|
|
"RLImp",
|
|
"RLDemon",
|
|
"RLSpectre",
|
|
"RLLostSoul",
|
|
"RLCacodemon",
|
|
"RLHellKnight",
|
|
"RLBaronOfHell",
|
|
"RLArachnotron",
|
|
"RLPainElemental",
|
|
"RLRevenant",
|
|
"RLMancubus",
|
|
"RLArchvile",
|
|
"RLCyberdemon",
|
|
"RLSpiderMastermindVariantSpawner",
|
|
"RLEasyBossEye",
|
|
"RLBossBrain"
|
|
};
|
|
static const String easypool[] =
|
|
{
|
|
"RLFormerHumanNoArmageddonSpawner",
|
|
"RLFormerSergeantNoArmageddonSpawner",
|
|
"RLFormerCommandoNoArmageddonSpawner",
|
|
"RLImpNoArmageddonSpawner",
|
|
"RLDemonNoArmageddonSpawner",
|
|
"RLSpectreNoArmageddonSpawner",
|
|
"RLLostSoulNoArmageddonSpawner",
|
|
"RLCacodemonNoArmageddonSpawner",
|
|
"RLHellKnightNoArmageddonSpawner",
|
|
"RLBaronOfHellNoArmageddonSpawner",
|
|
"RLArachnotronNoArmageddonSpawner",
|
|
"RLPainElementalNoArmageddonSpawner",
|
|
"RLRevenantNoArmageddonSpawner",
|
|
"RLMancubusNoArmageddonSpawner",
|
|
"RLArchvileNoArmageddonSpawner",
|
|
"RLCyberdemonNoArmageddonSpawner",
|
|
"RLSpiderMastermindNoArmageddonSpawner",
|
|
"RLBossEye",
|
|
"RLBossBrain"
|
|
};
|
|
static const String normalpool[] =
|
|
{
|
|
"RLFormerHumanNoArmageddonSpawner",
|
|
"RLFormerSergeantNoArmageddonSpawner",
|
|
"RLFormerCommandoNoArmageddonSpawner",
|
|
"RLImpNoArmageddonSpawner",
|
|
"RLDemonNoArmageddonSpawner",
|
|
"RLSpectreNoArmageddonSpawner",
|
|
"RLLostSoulNoArmageddonSpawner",
|
|
"RLCacodemonNoArmageddonSpawner",
|
|
"RLHellKnightNoArmageddonSpawner",
|
|
"RLBaronOfHellNoArmageddonSpawner",
|
|
"RLArachnotronNoArmageddonSpawner",
|
|
"RLPainElementalNoArmageddonSpawner",
|
|
"RLRevenantNoArmageddonSpawner",
|
|
"RLMancubusNoArmageddonSpawner",
|
|
"RLArchvileNoArmageddonSpawner",
|
|
"RLCyberdemonNoArmageddonSpawner",
|
|
"RLSpiderMastermindNoArmageddonSpawner",
|
|
"RLBossEye",
|
|
"RLBossBrain"
|
|
};
|
|
static const String hardpool[] =
|
|
{
|
|
"RLFormerHumanSpawner",
|
|
"RLFormerSergeantSpawner",
|
|
"RLFormerCommandoSpawner",
|
|
"RLImpSpawner",
|
|
"RLDemonSpawner",
|
|
"RLSpectreSpawner",
|
|
"RLLostSoulSpawner",
|
|
"RLCacodemonSpawner",
|
|
"RLHellKnightSpawner",
|
|
"RLBaronOfHellSpawner",
|
|
"RLArachnotronSpawner",
|
|
"RLPainElementalSpawner",
|
|
"RLRevenantSpawner",
|
|
"RLMancubusSpawner",
|
|
"RLArchvileSpawner",
|
|
"RLCyberdemonSpawner",
|
|
"RLSpiderMastermindSpawner",
|
|
"RLUVBossEye",
|
|
"RLBossBrain"
|
|
};
|
|
static const String nightmarepool[] =
|
|
{
|
|
"RLEliteFormerHumanSpawner",
|
|
"RLEliteFormerSergeantSpawner",
|
|
"RLEliteFormerCommandoSpawner",
|
|
"RLNightmareImp",
|
|
"RLNightmareDemon",
|
|
"RLNightmareSpectre",
|
|
"RLNightmareLostSoul",
|
|
"RLNightmareCacodemon",
|
|
"RLNightmareHellKnight",
|
|
"RLNightmareBaronOfHell",
|
|
"RLNightmareArachnotron",
|
|
"RLNightmarePainElemental",
|
|
"RLNightmareRevenant",
|
|
"RLNightmareMancubus",
|
|
"RLNightmareArchvile",
|
|
"RLNightmareCyberdemonSpawner",
|
|
"RLNightmareSpiderMastermindSpawner",
|
|
"RLNightmareBossEye",
|
|
"RLNightmareBossBrain"
|
|
};
|
|
static const String technophobiapool[] =
|
|
{
|
|
"RLFormerCyborgBattleRifle",
|
|
"RLFormerCyborgBattleRifle",
|
|
"RLFormerCyborgBattleRifle",
|
|
"RLCyberneticImp",
|
|
"RLCyberneticDemon",
|
|
"RLCyberneticSpectre",
|
|
"RLCyberneticLostSoul",
|
|
"RLCacodemon",
|
|
"RLCyberneticHellKnight",
|
|
"RLCyberneticBaronOfHell",
|
|
"RLCyberneticArachnotron",
|
|
"RLCyberneticPainElemental",
|
|
"RLCyberneticRevenant",
|
|
"RLCyberneticMancubus",
|
|
"RLCyberneticArchvile",
|
|
"RLCyberneticCyberdemonSpawner",
|
|
"RLCyberneticSpiderMastermindSpawner",
|
|
"RLTechnophobiaBossEye",
|
|
"RLTechnophobiaBossBrain"
|
|
};
|
|
static const String armageddonpool[] =
|
|
{
|
|
"RLFormerAssaultTrooper",
|
|
"RLFormerOverwatch",
|
|
"RLFormerShocktrooper",
|
|
"RLArmageddonImp",
|
|
"RLArmageddonDemon",
|
|
"RLArmageddonSpectreSpawner",
|
|
"RLTheHungrySpawner",
|
|
"RLArmageddonCacodemon",
|
|
"RLArmageddonHellKnightSpawner",
|
|
"RLArmageddonBaronOfHell",
|
|
"RLArmageddonArachnotron",
|
|
"RLArmageddonPainElemental",
|
|
"RLArmageddonRevenant",
|
|
"RLArmageddonMancubus",
|
|
"RLArmageddonArchvileSpawner",
|
|
"RLArmageddonCyberdemonSpawner",
|
|
"RLArmageddonSpiderMastermindSpawner",
|
|
"RLArmageddonBossEye",
|
|
"RLArmageddonBossBrain"
|
|
};
|
|
static const String adaptivepool[] =
|
|
{
|
|
"RLAdaptiveFormerHuman",
|
|
"RLAdaptiveFormerSergeant",
|
|
"RLAdaptiveFormerCommando",
|
|
"RLAdaptiveImp",
|
|
"RLAdaptiveDemon",
|
|
"RLAdaptiveSpectre",
|
|
"RLAdaptiveLostSoul",
|
|
"RLAdaptiveCacodemon",
|
|
"RLAdaptiveHellKnight",
|
|
"RLAdaptiveBaronOfHell",
|
|
"RLAdaptiveArachnotron",
|
|
"RLAdaptivePainElemental",
|
|
"RLAdaptiveRevenant",
|
|
"RLAdaptiveMancubus",
|
|
"RLAdaptiveArchvile",
|
|
"RLAdaptiveCyberdemon",
|
|
"RLAdaptiveSpiderMastermind",
|
|
"RLUVBossEye",
|
|
"RLBossBrain"
|
|
};
|
|
switch ( swwm_drlaskill )
|
|
{
|
|
case 0:
|
|
for ( int i=0; i<18; i++ )
|
|
{
|
|
if ( !(a is babypool[i]) ) continue;
|
|
return refpool[i];
|
|
}
|
|
break;
|
|
case 1:
|
|
for ( int i=0; i<18; i++ )
|
|
{
|
|
if ( !(a is easypool[i]) ) continue;
|
|
return refpool[i];
|
|
}
|
|
break;
|
|
case 2:
|
|
for ( int i=0; i<18; i++ )
|
|
{
|
|
if ( !(a is normalpool[i]) ) continue;
|
|
return refpool[i];
|
|
}
|
|
break;
|
|
case 3:
|
|
for ( int i=0; i<18; i++ )
|
|
{
|
|
if ( !(a is hardpool[i]) ) continue;
|
|
return refpool[i];
|
|
}
|
|
break;
|
|
case 4:
|
|
for ( int i=0; i<18; i++ )
|
|
{
|
|
if ( !(a is nightmarepool[i]) ) continue;
|
|
return refpool[i];
|
|
}
|
|
break;
|
|
case 5:
|
|
for ( int i=0; i<18; i++ )
|
|
{
|
|
if ( !(a is technophobiapool[i]) ) continue;
|
|
return refpool[i];
|
|
}
|
|
break;
|
|
case 6:
|
|
for ( int i=0; i<18; i++ )
|
|
{
|
|
if ( !(a is armageddonpool[i]) ) continue;
|
|
return refpool[i];
|
|
}
|
|
break;
|
|
case 7:
|
|
default:
|
|
for ( int i=0; i<18; i++ )
|
|
{
|
|
if ( !(a is adaptivepool[i]) ) continue;
|
|
return refpool[i];
|
|
}
|
|
break;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
override void CheckReplacee( ReplacedEvent e )
|
|
{
|
|
if ( profiling ) curms = MSTime();
|
|
if ( e.Replacement is 'DSparilHax' )
|
|
e.Replacee = 'Sorcerer2';
|
|
// drla stuff, needed so boss deaths work
|
|
if ( !hasdrlamonsters )
|
|
{
|
|
if ( profiling ) checkreplacee_ms += MSTime()-curms;
|
|
return;
|
|
}
|
|
let rep = GetDRLAReplacee(e.Replacement);
|
|
if ( rep ) e.Replacee = rep;
|
|
if ( profiling ) checkreplacee_ms += MSTime()-curms;
|
|
}
|
|
|
|
private Class<Actor> GetDRLAReplacement( Class<Actor> a )
|
|
{
|
|
static const String refpool[] =
|
|
{
|
|
"Zombieman",
|
|
"Shotgunguy",
|
|
"Chaingunguy",
|
|
"DoomImp",
|
|
"Demon",
|
|
"Spectre",
|
|
"LostSoul",
|
|
"Cacodemon",
|
|
"HellKnight",
|
|
"BaronOfHell",
|
|
"Arachnotron",
|
|
"PainElemental",
|
|
"Revenant",
|
|
"Fatso",
|
|
"Archvile",
|
|
"Cyberdemon",
|
|
"SpiderMastermind",
|
|
"BossEye",
|
|
"BossBrain"
|
|
};
|
|
static const String babypool[] =
|
|
{
|
|
"RLFormerHumanPistol",
|
|
"RLFormerSergeantShotgun",
|
|
"RLFormerCommandoChaingun",
|
|
"RLImp",
|
|
"RLDemon",
|
|
"RLSpectre",
|
|
"RLLostSoul",
|
|
"RLCacodemon",
|
|
"RLHellKnight",
|
|
"RLBaronOfHell",
|
|
"RLArachnotron",
|
|
"RLPainElemental",
|
|
"RLRevenant",
|
|
"RLMancubus",
|
|
"RLArchvile",
|
|
"RLCyberdemon",
|
|
"RLSpiderMastermindVariantSpawner",
|
|
"RLEasyBossEye",
|
|
"RLBossBrain"
|
|
};
|
|
static const String easypool[] =
|
|
{
|
|
"RLFormerHumanNoArmageddonSpawner",
|
|
"RLFormerSergeantNoArmageddonSpawner",
|
|
"RLFormerCommandoNoArmageddonSpawner",
|
|
"RLImpNoArmageddonSpawner",
|
|
"RLDemonNoArmageddonSpawner",
|
|
"RLSpectreNoArmageddonSpawner",
|
|
"RLLostSoulNoArmageddonSpawner",
|
|
"RLCacodemonNoArmageddonSpawner",
|
|
"RLHellKnightNoArmageddonSpawner",
|
|
"RLBaronOfHellNoArmageddonSpawner",
|
|
"RLArachnotronNoArmageddonSpawner",
|
|
"RLPainElementalNoArmageddonSpawner",
|
|
"RLRevenantNoArmageddonSpawner",
|
|
"RLMancubusNoArmageddonSpawner",
|
|
"RLArchvileNoArmageddonSpawner",
|
|
"RLCyberdemonNoArmageddonSpawner",
|
|
"RLSpiderMastermindNoArmageddonSpawner",
|
|
"RLBossEye",
|
|
"RLBossBrain"
|
|
};
|
|
static const String normalpool[] =
|
|
{
|
|
"RLFormerHumanNoArmageddonSpawner",
|
|
"RLFormerSergeantNoArmageddonSpawner",
|
|
"RLFormerCommandoNoArmageddonSpawner",
|
|
"RLImpNoArmageddonSpawner",
|
|
"RLDemonNoArmageddonSpawner",
|
|
"RLSpectreNoArmageddonSpawner",
|
|
"RLLostSoulNoArmageddonSpawner",
|
|
"RLCacodemonNoArmageddonSpawner",
|
|
"RLHellKnightNoArmageddonSpawner",
|
|
"RLBaronOfHellNoArmageddonSpawner",
|
|
"RLArachnotronNoArmageddonSpawner",
|
|
"RLPainElementalNoArmageddonSpawner",
|
|
"RLRevenantNoArmageddonSpawner",
|
|
"RLMancubusNoArmageddonSpawner",
|
|
"RLArchvileNoArmageddonSpawner",
|
|
"RLCyberdemonNoArmageddonSpawner",
|
|
"RLSpiderMastermindNoArmageddonSpawner",
|
|
"RLBossEye",
|
|
"RLBossBrain"
|
|
};
|
|
static const String hardpool[] =
|
|
{
|
|
"RLFormerHumanSpawner",
|
|
"RLFormerSergeantSpawner",
|
|
"RLFormerCommandoSpawner",
|
|
"RLImpSpawner",
|
|
"RLDemonSpawner",
|
|
"RLSpectreSpawner",
|
|
"RLLostSoulSpawner",
|
|
"RLCacodemonSpawner",
|
|
"RLHellKnightSpawner",
|
|
"RLBaronOfHellSpawner",
|
|
"RLArachnotronSpawner",
|
|
"RLPainElementalSpawner",
|
|
"RLRevenantSpawner",
|
|
"RLMancubusSpawner",
|
|
"RLArchvileSpawner",
|
|
"RLCyberdemonSpawner",
|
|
"RLSpiderMastermindSpawner",
|
|
"RLUVBossEye",
|
|
"RLBossBrain"
|
|
};
|
|
static const String nightmarepool[] =
|
|
{
|
|
"RLEliteFormerHumanSpawner",
|
|
"RLEliteFormerSergeantSpawner",
|
|
"RLEliteFormerCommandoSpawner",
|
|
"RLNightmareImp",
|
|
"RLNightmareDemon",
|
|
"RLNightmareSpectre",
|
|
"RLNightmareLostSoul",
|
|
"RLNightmareCacodemon",
|
|
"RLNightmareHellKnight",
|
|
"RLNightmareBaronOfHell",
|
|
"RLNightmareArachnotron",
|
|
"RLNightmarePainElemental",
|
|
"RLNightmareRevenant",
|
|
"RLNightmareMancubus",
|
|
"RLNightmareArchvile",
|
|
"RLNightmareCyberdemonSpawner",
|
|
"RLNightmareSpiderMastermindSpawner",
|
|
"RLNightmareBossEye",
|
|
"RLNightmareBossBrain"
|
|
};
|
|
static const String technophobiapool[] =
|
|
{
|
|
"RLFormerCyborgBattleRifle",
|
|
"RLFormerCyborgBattleRifle",
|
|
"RLFormerCyborgBattleRifle",
|
|
"RLCyberneticImp",
|
|
"RLCyberneticDemon",
|
|
"RLCyberneticSpectre",
|
|
"RLCyberneticLostSoul",
|
|
"RLCacodemon",
|
|
"RLCyberneticHellKnight",
|
|
"RLCyberneticBaronOfHell",
|
|
"RLCyberneticArachnotron",
|
|
"RLCyberneticPainElemental",
|
|
"RLCyberneticRevenant",
|
|
"RLCyberneticMancubus",
|
|
"RLCyberneticArchvile",
|
|
"RLCyberneticCyberdemonSpawner",
|
|
"RLCyberneticSpiderMastermindSpawner",
|
|
"RLTechnophobiaBossEye",
|
|
"RLTechnophobiaBossBrain"
|
|
};
|
|
static const String armageddonpool[] =
|
|
{
|
|
"RLFormerAssaultTrooper",
|
|
"RLFormerOverwatch",
|
|
"RLFormerShocktrooper",
|
|
"RLArmageddonImp",
|
|
"RLArmageddonDemon",
|
|
"RLArmageddonSpectreSpawner",
|
|
"RLTheHungrySpawner",
|
|
"RLArmageddonCacodemon",
|
|
"RLArmageddonHellKnightSpawner",
|
|
"RLArmageddonBaronOfHell",
|
|
"RLArmageddonArachnotron",
|
|
"RLArmageddonPainElemental",
|
|
"RLArmageddonRevenant",
|
|
"RLArmageddonMancubus",
|
|
"RLArmageddonArchvileSpawner",
|
|
"RLArmageddonCyberdemonSpawner",
|
|
"RLArmageddonSpiderMastermindSpawner",
|
|
"RLArmageddonBossEye",
|
|
"RLArmageddonBossBrain"
|
|
};
|
|
static const String adaptivepool[] =
|
|
{
|
|
"RLAdaptiveFormerHuman",
|
|
"RLAdaptiveFormerSergeant",
|
|
"RLAdaptiveFormerCommando",
|
|
"RLAdaptiveImp",
|
|
"RLAdaptiveDemon",
|
|
"RLAdaptiveSpectre",
|
|
"RLAdaptiveLostSoul",
|
|
"RLAdaptiveCacodemon",
|
|
"RLAdaptiveHellKnight",
|
|
"RLAdaptiveBaronOfHell",
|
|
"RLAdaptiveArachnotron",
|
|
"RLAdaptivePainElemental",
|
|
"RLAdaptiveRevenant",
|
|
"RLAdaptiveMancubus",
|
|
"RLAdaptiveArchvile",
|
|
"RLAdaptiveCyberdemon",
|
|
"RLAdaptiveSpiderMastermind",
|
|
"RLUVBossEye",
|
|
"RLBossBrain"
|
|
};
|
|
switch ( swwm_drlaskill )
|
|
{
|
|
case 0:
|
|
for ( int i=0; i<18; i++ )
|
|
{
|
|
if ( !(a is refpool[i]) ) continue;
|
|
return babypool[i];
|
|
}
|
|
break;
|
|
case 1:
|
|
for ( int i=0; i<18; i++ )
|
|
{
|
|
if ( !(a is refpool[i]) ) continue;
|
|
return easypool[i];
|
|
}
|
|
break;
|
|
case 2:
|
|
for ( int i=0; i<18; i++ )
|
|
{
|
|
if ( !(a is refpool[i]) ) continue;
|
|
return normalpool[i];
|
|
}
|
|
break;
|
|
case 3:
|
|
for ( int i=0; i<18; i++ )
|
|
{
|
|
if ( !(a is refpool[i]) ) continue;
|
|
return hardpool[i];
|
|
}
|
|
break;
|
|
case 4:
|
|
for ( int i=0; i<18; i++ )
|
|
{
|
|
if ( !(a is refpool[i]) ) continue;
|
|
return nightmarepool[i];
|
|
}
|
|
break;
|
|
case 5:
|
|
for ( int i=0; i<18; i++ )
|
|
{
|
|
if ( !(a is refpool[i]) ) continue;
|
|
return technophobiapool[i];
|
|
}
|
|
break;
|
|
case 6:
|
|
for ( int i=0; i<18; i++ )
|
|
{
|
|
if ( !(a is refpool[i]) ) continue;
|
|
return armageddonpool[i];
|
|
}
|
|
break;
|
|
case 7:
|
|
default:
|
|
for ( int i=0; i<18; i++ )
|
|
{
|
|
if ( !(a is refpool[i]) ) continue;
|
|
return adaptivepool[i];
|
|
}
|
|
break;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
override void CheckReplacement( ReplaceEvent e )
|
|
{
|
|
if ( profiling ) curms = MSTime();
|
|
// respect final replacements
|
|
if ( e.IsFinal )
|
|
{
|
|
if ( profiling ) checkreplacement_ms += MSTime()-curms;
|
|
return;
|
|
}
|
|
// DRLA Monsters stuff
|
|
if ( hasdrlamonsters )
|
|
{
|
|
let rep = GetDRLAReplacement(e.Replacee);
|
|
if ( rep )
|
|
{
|
|
e.Replacement = rep;
|
|
e.IsFinal = true;
|
|
if ( profiling ) checkreplacement_ms += MSTime()-curms;
|
|
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';
|
|
else if ( e.Replacee is 'TeleportFog' ) e.Replacement = 'SWWMTeleportFog';
|
|
else if ( (e.Replacee is 'CommanderKeen') && (!e.Replacement || (e.Replacement == 'CommanderKeen')) )
|
|
{
|
|
if ( SWWMUtility.CheckDehackery(e.Replacee) )
|
|
{
|
|
if ( profiling ) checkreplacement_ms += MSTime()-curms;
|
|
return;
|
|
}
|
|
e.Replacement = 'SWWMHangingKeen';
|
|
}
|
|
else if ( (e.Replacee is 'BossBrain') && (!e.Replacement || (e.Replacement == 'BossBrain')) )
|
|
{
|
|
if ( SWWMUtility.CheckDehackery(e.Replacee) )
|
|
{
|
|
if ( profiling ) checkreplacement_ms += MSTime()-curms;
|
|
return;
|
|
}
|
|
e.Replacement = 'SWWMBossBrain';
|
|
}
|
|
else if ( (e.Replacee is 'RedCard') && !(e.Replacee is 'ChexRedCard') )
|
|
{
|
|
if ( level.GetChecksum() ~== "3805A661D5C4523AFF7BF86991071043" )
|
|
{
|
|
if ( profiling ) checkreplacement_ms += MSTime()-curms;
|
|
return; // don't replace red key in Equinox MAP13
|
|
}
|
|
e.Replacement = 'SWWMRedCard';
|
|
}
|
|
else if ( (e.Replacee is 'BlueCard') && !(e.Replacee is 'ChexBlueCard') ) e.Replacement = 'SWWMBlueCard';
|
|
else if ( (e.Replacee is 'YellowCard') && !(e.Replacee is 'ChexYellowCard') ) e.Replacement = 'SWWMYellowCard';
|
|
else if ( e.Replacee.GetClassName() == 'GreenCard' ) e.Replacement = 'SWWMGreenCard';
|
|
else if ( e.Replacee.GetClassName() == 'RedSkullFake' ) e.Replacement = 'SWWMFakeRedSkull';
|
|
else if ( e.Replacee.GetClassName() == 'BlueSkullFake' ) e.Replacement = 'SWWMFakeBlueSkull';
|
|
else if ( e.Replacee.GetClassName() == 'YellowSkullFake' ) e.Replacement = 'SWWMFakeYellowSkull';
|
|
else if ( e.Replacee.GetClassName() == 'PurpleSkullFake' ) e.Replacement = 'SWWMFakePurpleSkull';
|
|
else if ( e.Replacee is 'RedSkull' ) e.Replacement = iskdizd?'SWWMSilverCardKDiZD':'SWWMRedSkull';
|
|
else if ( e.Replacee is 'BlueSkull' ) e.Replacement = iskdizd?'SWWMGreenCardKDiZD':'SWWMBlueSkull';
|
|
else if ( e.Replacee is 'YellowSkull' ) e.Replacement = iskdizd?'SWWMOrangeCardKDiZD':'SWWMYellowSkull';
|
|
else if ( e.Replacee.GetClassName() == 'PurpleSkull' ) e.Replacement = 'SWWMPurpleSkull';
|
|
else if ( e.Replacee is 'KeyGreen' ) e.Replacement = 'SWWMKeyGreen';
|
|
else if ( e.Replacee is 'KeyBlue' ) e.Replacement = 'SWWMKeyBlue';
|
|
else if ( e.Replacee is 'KeyYellow' ) e.Replacement = 'SWWMKeyYellow';
|
|
else if ( e.Replacee.GetClassName() == 'KeyRed' ) e.Replacement = 'SWWMKeyRed';
|
|
else if ( (e.Replacee is 'Chainsaw') || (e.Replacee is 'Gauntlets') || (e.Replacee is 'FWeapAxe') ) e.Replacement = SWWMUtility.PickSWWMSlot1();
|
|
else if ( (e.Replacee is 'Fist') || (e.Replacee is 'Staff') ) e.Replacement = 'DeepImpact';
|
|
else if ( (e.Replacee is 'Pistol') || (e.Replacee is 'GoldWand') || (e.Replacee is 'FWeapFist') || (e.Replacee is 'CWeapMace') || (e.Replacee is 'MWeapWand') ) e.Replacement = SWWMUtility.PickSWWMSlot2();
|
|
else if ( (e.Replacee is 'Shotgun') || (e.Replacee is 'CWeapStaff') ) e.Replacement = SWWMUtility.IsDoomOne()?SWWMUtility.PickDoomSlot3():SWWMUtility.PickSWWMSlot3();
|
|
else if ( (e.Replacee is 'SuperShotgun') || (e.Replacee is 'MWeapFrost') ) e.Replacement = SWWMUtility.PickSWWMSlot4();
|
|
else if ( e.Replacee is 'Crossbow' ) e.Replacement = SWWMUtility.PickDoomSlot3();
|
|
else if ( (e.Replacee is 'Chaingun') || (e.Replacee is 'Blaster') || (e.Replacee is 'FWeaponPiece3') ) e.Replacement = SWWMUtility.PickSWWMSlot5();
|
|
else if ( (e.Replacee is 'RocketLauncher') || (e.Replacee is 'PhoenixRod') || (e.Replacee is 'FWeapHammer') ) e.Replacement = SWWMUtility.PickSWWMSlot6();
|
|
else if ( (e.Replacee is 'PlasmaRifle') || (e.Replacee is 'SkullRod') ) e.Replacement = SWWMUtility.PickDoomSlot6();
|
|
else if ( e.Replacee is 'CWeapFlame' ) e.Replacement = SWWMUtility.PickSWWMSlot7();
|
|
else if ( e.Replacee is 'MWeapLightning' ) e.Replacement = SWWMUtility.PickSWWMSlot8();
|
|
else if ( (e.Replacee is 'BFG9000') || (e.Replacee is 'Mace') ) e.Replacement = SWWMUtility.PickDoomSlot7();
|
|
else if ( e.Replacee is 'CWeaponPiece2' ) e.Replacement = SWWMUtility.PickSWWMSlot9();
|
|
else if ( e.Replacee is 'MWeaponPiece1' ) e.Replacement = SWWMUtility.PickSWWMSlot0();
|
|
else if ( (e.Replacee is 'ShellBox') || (e.Replacee is 'CrossbowHefty') )
|
|
{
|
|
if ( swwm_ondemandammo ) e.Replacement = 'SWWMShellAmmoBig';
|
|
else e.Replacement = SWWMShellAmmoBig.PickAmmo(true);
|
|
}
|
|
else if ( (e.Replacee is 'Shell') || (e.Replacee is 'CrossbowAmmo') )
|
|
{
|
|
if ( swwm_ondemandammo ) e.Replacement = 'SWWMShellAmmoSmall';
|
|
else e.Replacement = SWWMShellAmmoSmall.PickAmmo(true);
|
|
}
|
|
else if ( e.Replacee is 'ClipBox' )
|
|
{
|
|
if ( swwm_ondemandammo ) e.Replacement = 'SWWMClipAmmoBig';
|
|
else e.Replacement = SWWMClipAmmoBig.PickAmmo(true);
|
|
}
|
|
else if ( (e.Replacee is 'Clip') || (e.Replacee is 'GoldWandAmmo') )
|
|
{
|
|
if ( swwm_ondemandammo ) e.Replacement = 'SWWMClipAmmoSmall';
|
|
else e.Replacement = SWWMClipAmmoSmall.PickAmmo(true);
|
|
}
|
|
else if ( e.Replacee is 'BlasterHefty' )
|
|
{
|
|
if ( swwm_ondemandammo ) e.Replacement = 'SWWMBlastAmmoBig';
|
|
else e.Replacement = SWWMBlastAmmoBig.PickAmmo(true);
|
|
}
|
|
else if ( e.Replacee is 'BlasterAmmo' )
|
|
{
|
|
if ( swwm_ondemandammo ) e.Replacement = 'SWWMBlastAmmoSmall';
|
|
else e.Replacement = SWWMBlastAmmoSmall.PickAmmo(true);
|
|
}
|
|
else if ( (e.Replacee is 'RocketBox') || (e.Replacee is 'PhoenixRodHefty') || (e.Replacee is 'MaceHefty') )
|
|
{
|
|
if ( swwm_ondemandammo ) e.Replacement = 'SWWMRocketAmmoBig';
|
|
else e.Replacement = SWWMRocketAmmoBig.PickAmmo(true);
|
|
}
|
|
else if ( (e.Replacee is 'RocketAmmo') || (e.Replacee is 'PhoenixRodAmmo') || (e.Replacee is 'MaceAmmo') )
|
|
{
|
|
if ( swwm_ondemandammo ) e.Replacement = 'SWWMRocketAmmoSmall';
|
|
else e.Replacement = SWWMRocketAmmoSmall.PickAmmo(true);
|
|
}
|
|
else if ( (e.Replacee is 'CellPack') || (e.Replacee is 'SkullRodHefty') )
|
|
{
|
|
if ( swwm_ondemandammo ) e.Replacement = 'SWWMCellAmmoBig';
|
|
else e.Replacement = SWWMCellAmmoBig.PickAmmo(true);
|
|
}
|
|
else if ( (e.Replacee is 'Cell') || (e.Replacee is 'SkullRodAmmo') )
|
|
{
|
|
if ( swwm_ondemandammo ) e.Replacement = 'SWWMCellAmmoSmall';
|
|
else e.Replacement = SWWMCellAmmoSmall.PickAmmo(true);
|
|
}
|
|
else if ( e.Replacee is 'Mana1' ) e.Replacement = 'FabricatorTier1';
|
|
else if ( e.Replacee is 'Mana2' ) e.Replacement = 'FabricatorTier2';
|
|
else if ( e.Replacee is 'Mana3' ) e.Replacement = 'FabricatorTier3';
|
|
else if ( e.Replacee is 'ArtiBoostMana' ) e.Replacement = 'FabricatorTier4';
|
|
else if ( (e.Replacee is 'Backpack') || (e.Replacee is 'BagOfHolding')
|
|
|| (e.Replacee is 'FWeaponPiece1') || (e.Replacee is 'FWeaponPiece2')
|
|
|| (e.Replacee is 'CWeaponPiece1') || (e.Replacee is 'CWeaponPiece3')
|
|
|| (e.Replacee is 'MWeaponPiece2') || (e.Replacee is 'MWeaponPiece3') ) e.Replacement = 'HammerspaceEmbiggener';
|
|
else if ( e.Replacee is 'ArmorBonus' ) e.Replacement = 'ArmorNuggetItem';
|
|
else if ( e.Replacee is 'HealthBonus' ) e.Replacement = 'HealthNuggetItem';
|
|
else if ( (e.Replacee is 'ArtiTimeBomb') || (e.Replacee is 'ArtiBlastRadius') || (e.Replacee is 'ArtiPoisonBag') || (e.Replacee is 'ArtiHealingRadius') ) e.Replacement = (nugflip=!nugflip)?'HealthNuggetItem':'ArmorNuggetItem';
|
|
else if ( (e.Replacee is 'Stimpack') || (e.Replacee is 'CrystalVial') ) e.Replacement = 'TetraHealthItem';
|
|
else if ( (e.Replacee is 'Medikit') || (e.Replacee is 'ArtiHealth') ) e.Replacement = 'CubeHealthItem';
|
|
else if ( (e.Replacee is 'Soulsphere') || (e.Replacee is 'ArtiSuperHealth') ) e.Replacement = 'RefresherItem';
|
|
else if ( (e.Replacee is 'Megasphere') || (e.Replacee is 'ArtiEgg') || (e.Replacee is 'ArtiBoostArmor') ) e.Replacement = (deathmatch||Random[Replacements](0,3)||SWWMUtility.ItemExists('DivineSprite',worldonly:true)||!SWWMUtility.CheckNeedsItem('DivineSprite',true))?'GrilledCheeseSandwich':'DivineSprite';
|
|
else if ( (e.Replacee is 'Blursphere') || (e.Replacee is 'ArtiInvisibility') ) e.Replacement = (deathmatch||Random[Replacements](0,2)||SWWMUtility.ItemExists('Mykradvo',worldonly:true)||!SWWMUtility.CheckNeedsItem('Mykradvo',true))?'GhostArtifact':'Mykradvo';
|
|
else if ( e.Replacee is 'Radsuit' ) e.Replacement = 'EBarrier';
|
|
else if ( (e.Replacee is 'ArtiFly') ) e.Replacement = 'GravitySuppressor';
|
|
else if ( (e.Replacee is 'InvulnerabilitySphere') || (e.Replacee is 'ArtiInvulnerability') || (e.Replacee is 'ArtiInvulnerability2') ) e.Replacement = (deathmatch||Random[Replacements](0,3)||SWWMUtility.ItemExists('Mykradvo',worldonly:true)||!SWWMUtility.CheckNeedsItem('Mykradvo',true))?'FuckingInvinciball':'Mykradvo';
|
|
else if ( (e.Replacee is 'Berserk') || (e.Replacee == 'ArtiTomeOfPower') || (e.Replacee == 'ArtiSpeedBoots') ) e.Replacement = (deathmatch||Random[Replacements](0,2)||SWWMUtility.ItemExists('AngerySigil',worldonly:true)||!SWWMUtility.CheckNeedsItem('AngerySigil',true))?'Ragekit':'AngerySigil';
|
|
else if ( (e.Replacee is 'AllMap') || (e.Replacee is 'SuperMap') ) e.Replacement = 'Omnisight';
|
|
else if ( (e.Replacee is 'Infrared') || (e.Replacee is 'ArtiTorch') ) e.Replacement = 'SWWMLamp';
|
|
else if ( (e.Replacee is 'GreenArmor') || (e.Replacee is 'SilverShield') || (e.Replacee is 'PlatinumHelm') || (e.Replacee is 'AmuletOfWarding') ) e.Replacement = 'BlastSuitItem';
|
|
else if ( (e.Replacee is 'BlueArmor') || (e.Replacee is 'EnchantedShield') || (e.Replacee is 'MeshArmor') || (e.Replacee is 'FalconShield') ) e.Replacement = 'WarArmorItem';
|
|
else if ( (e.Replacee is 'ArtiDarkServant') || (e.Replacee == 'ArtiTeleportOther') || (e.Replacee == 'ArtiPork') ) e.Replacement = 'ChanceboxSpawner';
|
|
else if ( e.Replacee is 'ArtiTeleport' ) e.Replacement = 'SafetyTether';
|
|
else
|
|
{
|
|
if ( profiling ) checkreplacement_ms += MSTime()-curms;
|
|
return;
|
|
}
|
|
// this last part is kind of ugly, but it works
|
|
// guarantees that OUR replacements are all final
|
|
e.IsFinal = true;
|
|
if ( profiling ) checkreplacement_ms += MSTime()-curms;
|
|
}
|
|
}
|