Christmas Patriarch

Boss And Maps Mutator. Мутатор босс для каждой карты

Простейший мутатор, который позволяет выбирать босса для каждой конкретной карты.
Например, хочется поставить санта-патрика на зимние карты, а на страшные карты хэллоунского патрика. Или вообще спец патриков на разные карты с разными возможностями.

Настройки:

DefaultBoss=KFChar.ZombieBoss_STANDARD - указываем босса для всех не перечисленных в ini карт
BossAndMapsList=(Map=“KF-Bedlam”,Boss=“KFChar.ZombieBoss_HALLOWEEN”) - элемент массива: пара карта-босс

BossAndMapsMut.uc

class BossAndMapsMut extends Mutator config(BossAndMapsMut);

struct BossAndMapsStruct
{
    var config string Map;
    var config string Boss;
};

var config array<BossAndMapsStruct> BossAndMapsList;
var config string DefaultBoss;
var string URL;

function MatchStarting()
{
    SetTimer(2.0, false);
}

function PostBeginPlay()
{
    SaveConfig();
}

function Timer()
{
    local string boss;

    URL = GetShortUrl(Level.GetLocalURL());
    boss = GetBossFromMap(URL);
    KFGameType(Level.Game).EndGameBossClass = boss;
    if (KFGameType(Level.Game).MonsterCollection != None)
        KFGameType(Level.Game).MonsterCollection.Default.EndGameBossClass = boss;
}

function string GetBossFromMap(string map)
{
    local int i;

    for (i = 0; i < BossAndMapsList.Length; i++)
    {
        if (BossAndMapsList[i].Map ~= map)
            return BossAndMapsList[i].Boss;
    }
    return DefaultBoss;
}

function string GetShortUrl(string s)
{
    local int qPos, slashPos, startPos;
    local string result;

    qPos = InStr(s, "?");
    slashPos = InStr(s, "/");
    startPos = Max(slashPos, 0);
    result = Mid(s, startPos + 1, qPos - startPos - 1);
    return result;
}

defaultproperties
{
    BossAndMapsList(0)=(Boss="KFChar.ZombieBoss_HALLOWEEN",Map="KF-Bedlam")
    BossAndMapsList(1)=(Boss="KFChar.ZombieBoss_XMas",Map="KF-IceCave")
    BossAndMapsList(2)=(Boss="KFChar.ZombieBoss_CIRCUS",Map="KF-AbusementPark")
    DefaultBoss="KFChar.ZombieBoss_STANDARD"
    bAddToServerPackages=True
    GroupName="KF-BossAndMaps"
    FriendlyName="BossAndMapsMut"
    Description="BossAndMapsMut"
}

Прописывать как: BossAndMapsMut.BossAndMapsMut
Ссылка на скомпилированный вариант: YaDisk
Автор: Flame