Christmas Patriarch

KF Crazy Mutator - Replacing monster skins

The mutator completely shuffles the monster skins.

Source code:

KFMutCrazy.uc

class KFMutCrazy extends Mutator;
var int LastSetWave;
function PostBeginPlay()
{
    SetTimer(0.1,False);
}
function Timer()
{
    local KFGameType KF;
    local int i,j;
    KF = KFGameType(Level.Game);
    if ( KF!=None )
    {
        for( i=0; i<KF.InitSquads.Length; i++ )
        {
            for( j=0; j<KF.InitSquads[i].MSquad.Length; j++ )
                KF.InitSquads[i].MSquad[j] = GetReplaceClass(KF.InitSquads[i].MSquad[j]);
        }
        for( i=0; i<KF.MonsterCollection.default.SpecialSquads.Length; i++ )
        {
            for( j=0; j<KF.MonsterCollection.default.SpecialSquads[i].ZedClass.Length; j++ )
                ReplaceMonsterStr(KF.MonsterCollection.default.SpecialSquads[i].ZedClass[j]);
        }
        for( i=0; i<KF.MonsterCollection.default.FinalSquads.Length; i++ )
        {
            for( j=0; j<KF.MonsterCollection.default.FinalSquads[i].ZedClass.Length; j++ )
                ReplaceMonsterStr(KF.MonsterCollection.default.FinalSquads[i].ZedClass[j]);
        }
        KF.FallbackMonster = GetReplaceClass( Class<KFMonster>(KF.FallbackMonster) );
        KF.MonsterCollection.default.EndGameBossClass = string(Class'ZombieBossMix');
    }
    Destroy();
}
final function Class<KFMonster> GetReplaceClass( Class<KFMonster> MC )
{
    switch( MC )
    {
    case Class'ZombieClot':
        return Class'ZombieClotMix';
    case Class'ZombieBloat':
        return Class'ZombieBloatMix';
    case Class'ZombieCrawler':
        return Class'ZombieCrawlerMix';
    case Class'ZombieStalker':
        return Class'ZombieStalkerMix';
    case Class'ZombieSiren':
        return Class'ZombieSirenMix';
    case Class'ZombieScrake':
        return Class'ZombieScrakeMix';
    case Class'ZombieFleshPound':
        return Class'ZombieFleshPoundMix';
    case Class'ZombieGorefast':
        return Class'ZombieGorefastMix';
    case Class'ZombieBoss':
        return Class'ZombieBossMix';
    default:
        return MC;
    }
}
final function ReplaceMonsterStr( out string MC )
{
    if( MC~="KFChar.ZombieClot" )
        MC = "KFChar.ZombieClotMix";
    else if( MC~="KFChar.ZombieBloat" )
        MC = "KFChar.ZombieBloatMix";
    else if( MC~="KFChar.ZombieCrawler" )
        MC = "KFChar.ZombieCrawlerMix";
    else if( MC~="KFChar.ZombieStalker" )
        MC = "KFChar.ZombieStalkerMix";
    else if( MC~="KFChar.ZombieSiren" )
        MC = "KFChar.ZombieSirenMix";
    else if( MC~="KFChar.ZombieScrake" )
        MC = "KFChar.ZombieScrakeMix";
    else if( MC~="KFChar.ZombieFleshPound" )
        MC = "KFChar.ZombieFleshPoundMix";
    else if( MC~="KFChar.ZombieGorefast" )
        MC = "KFChar.ZombieGorefastMix";
    else if( MC~="KFChar.ZombieBoss" )
        MC = "KFChar.ZombieBossMix";
}
defaultproperties
{
    GroupName="KF-MonsterMut"
    FriendlyName="Scramble Mode!"
    Description="Give specimen random models"
}