KF Monster Scaler Mutator. Мутатор изменение размеров зомби

KF Monster Scaler Mutator. Мутатор изменение размеров зомби

  • Тема закрыта
  • Вы не можете ответить в тему

KF Monster Scaler Mutator. Мутатор изменение размеров зомби KF Monster Scaler Mutator. Мутатор изменение размеров зомби KFMonsterScalerMut.uc Автор: Mutant

Geekrainian #1

    • Группа: Администратор
    • Сообщений: 800

    Отправлено:

    KF Monster Scaler Mutator. Мутатор изменение размеров зомби

    KFMonsterScalerMut.uc

    class KFMonsterScalerMut extends Mutator;
    
    function bool CheckReplacement(Actor Other, out byte bSuperRelevant)
    {
        local float factor;
        local KFMonster zed;
        local float z1, z2, height;
    
        zed = KFMonster(Other);
        if (zed != None && ZombieBoss(zed) == None)
        {
            height = zed.OnlineHeadshotOffset.Z;
            factor = 0.95; // Start with 95% as base
            /*
             * Make the scaling factor more dynamic, depending on how large the monster already is.
             * Each monster has 26 different scalings (0-25).
             */
            if (height < 55)
                factor += (Rand(26) / 166.0); // Min: 0.95, Max: ~1.1
            else if (height < 65)
                factor += (Rand(26) / 178.0); // Min: 0.95, Max: ~1.09
            else
                factor += (Rand(26) / 208.0); // Min: 0.95, Max: ~1.07
            z1 = zed.CollisionHeight; // Save original height
            // Scale related collision / mesh data
            zed.SetDrawScale(zed.DrawScale * factor);
            zed.ColOffset.Z *= factor;
            zed.ColRadius *= factor;
            zed.ColHeight *= factor;
            zed.SeveredArmAttachScale *= factor;
            zed.SeveredLegAttachScale *= factor;
            zed.SeveredHeadAttachScale *= factor;
            zed.OnlineHeadshotOffset.Z *= factor;
            zed.OnlineHeadshotScale *= factor;
            zed.SetCollisionSize(zed.CollisionRadius * factor, zed.CollisionHeight * factor);
            z2 = zed.CollisionHeight; // Save new height
            zed.PrePivot.Z += (z2 - z1) * 1.22; // Keep feet on ground (empirical factor)
            zed.NetUpdateTime = Level.TimeSeconds - 1;
        }
        return true;
    }
    
    defaultproperties
    {
        GroupName="KF-MonsterScaler"
        FriendlyName="Monster Scaler"
        Description="This gives each specimen a slight random size, excluding Patriarch."
    }

    Автор: Mutant

    Назад