Beispiel #1
0
    public Bonus <T> Multiply(BonusDescription <T> bonus)
    {
        bonus.BonusType = BonusType.Multiplicative;
        bonusDescriptions.Add(bonus);

        return(this);
    }
Beispiel #2
0
    private Bonus <T> Append(BonusDescription <T> bonus)
    {
        bonus.BonusType = BonusType.Additive;
        bonusDescriptions.Add(bonus);

        return(this);
    }
Beispiel #3
0
    public void OnLoaded(Dictionary <string, object> values)
    {
        if (Bonuses.Length < 1)
        {
            return;
        }

        foreach (var bonus in Bonuses)
        {
            var split    = bonus.Split(new[] { ':' }, 2);
            var bonusKey = split[0].Trim();

            if (!OverrideDescriptionsFeature.Resources.TryGetValue(bonusKey, out var settings))
            {
                Control.Logger.Error.Log($"Could not find bonus description \"{bonusKey}\" used by {Def.Description.Id}");
                continue;
            }

            var args = split.Length >= 2 ? split[1].Split(',').Select(c => c.Trim()).ToArray() : new string[0];

            var description = new BonusDescription(settings, args);
            descriptions.Add(description);
        }

        {
            var count = 0;
            foreach (var description in descriptions.Select(x => x.Short).Where(x => x != null).Take(2))
            {
                if (count == 0)
                {
                    Def.BonusValueA = description;
                    count++;
                }
                else if (count == 1)
                {
                    Def.BonusValueB = description;
                }
            }
        }

        AddTemplatedExtendedDetail(
            ExtendedDetails.GetOrCreate(Def),
            descriptions.Select(x => x.Full),
            OverrideDescriptionsFeature.settings.BonusDescriptionsElementTemplate,
            OverrideDescriptionsFeature.settings.BonusDescriptionsDescriptionTemplate,
            OverrideDescriptionsFeature.settings.DescriptionIdentifier
            );
    }