Ejemplo n.º 1
0
    public void LoadList(IEnumerable <string> keyValues)
    {
        var effects = new List <EffectData>();

        foreach (var keyValue in keyValues)
        {
            var parts            = keyValue.Split(',');
            var effectTemplateId = parts[0];
            var amount           = parts.Length > 0 ? parts[1] : null;

            var effectTemplateData = CriticalEffectsFeature.GetEffectData(effectTemplateId);
            if (effectTemplateData == null)
            {
                continue;
            }

            var data = effectTemplateData.ToJSON() !;
            if (amount != null)
            {
                data = data.Replace("{amt}", amount);
            }
            var effect = new EffectData();
            effect.FromJSON(data);
            effects.Add(effect);
        }
        Def.statusEffects = Def.statusEffects.Union(effects).ToArray();
    }
Ejemplo n.º 2
0
    public void OnLoaded(Dictionary <string, object> values)
    {
        var descriptions = new List <string>();

        string?GetEffectDescription(string effectId)
        {
            var effectData = CriticalEffectsFeature.GetEffectData(effectId);

            if (effectData == null || effectData.targetingData.showInStatusPanel == false)
            {
                return(null);
            }
            return(CriticalEffectsFeature.settings.DescriptionUseName ? effectData.Description.Name : effectData.Description.Details);
        }

        var i = 0;

        foreach (var effectIDs in PenalizedEffectIDs)
        {
            i++;
            foreach (var id in effectIDs)
            {
                var effectDesc = GetEffectDescription(id);
                if (effectDesc == null)
                {
                    continue;
                }
                descriptions.Add(new Text(CriticalEffectsFeature.settings.CritHitText, i, effectDesc).ToString());
            }
        }

        foreach (var id in OnDestroyedEffectIDs)
        {
            var effectDesc = GetEffectDescription(id);
            if (effectDesc == null)
            {
                continue;
            }
            descriptions.Add(new Text(CriticalEffectsFeature.settings.CritDestroyedText, effectDesc).ToString());
        }

        if (DeathMethod != DeathMethod.NOT_SET)
        {
            descriptions.Add(new Text(CriticalEffectsFeature.settings.CritDestroyedDeathText, DeathMethod).ToString());
        }

        if (LinkedStatisticName != null)
        {
            descriptions.Add(new Text(CriticalEffectsFeature.settings.CritLinkedText, LinkedStatisticName).ToString());
        }

        var descriptionTemplate = CriticalEffectsFeature.settings.DescriptionTemplate;

        {
            var actorType = GetUnitType();
            if (actorType != UnitType.UNDEFINED)
            {
                var actorDescription = actorType.ToString();
                descriptionTemplate = $"{actorDescription} {descriptionTemplate}";
            }
        }

        if (descriptions.Count == 0)
        {
            return;
        }

        BonusDescriptions.AddTemplatedExtendedDetail(
            ExtendedDetails.GetOrCreate(Def),
            descriptions,
            CriticalEffectsFeature.settings.ElementTemplate,
            descriptionTemplate,
            CriticalEffectsFeature.settings.DescriptionIdentifier,
            GetUnitType()
            );
    }