private IEnumerable <ItemMod> CreateItemMods(ModLocation location, IEnumerable <StatIdValuePair> statValuePairs) { if (statValuePairs == null) { yield break; } // this list is used to translate the stats in order of appearance, // using merged.Keys wouldn't guarantee that var statIds = new List <string>(); var merged = new Dictionary <string, int>(); foreach (var pair in statValuePairs) { var stat = pair.StatId; statIds.Add(stat); var value = pair.Value; if (merged.ContainsKey(stat)) { value += merged[stat]; } merged[stat] = value; } var lines = EquipmentData.StatTranslator.GetTranslations(statIds) .Select(t => t.Translate(merged)) .Where(l => l != null); foreach (var line in lines) { var attr = ItemMod.Numberfilter.Replace(line, "#"); var isLocal = StatLocalityChecker.DetermineLocal(SelectedBase.ItemClass, location, attr); yield return(new ItemMod(line, isLocal)); } }
private ItemMod ItemModFromString(string attribute, ModLocation location, IEnumerable <ValueColoring> valueColor = null) { var isLocal = StatLocalityChecker.DetermineLocal(ItemClass, location, attribute); var itemMod = new ItemMod(attribute, isLocal); if (valueColor != null) { itemMod.ValueColors = valueColor.ToList(); } return(itemMod); }