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(); }
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() ); }