static void FixBloodlinePrerequisite(BlueprintFeature feat) { var components = feat.ComponentsArray.Where(c => !(c is PrerequisiteFeature || c is PrerequisiteFeaturesFromList)).ToList(); foreach (var p in feat.GetComponents <PrerequisiteFeature>()) { BlueprintProgression crossbloodline; if (crossbloodForBloodline.TryGetValue(p.Feature as BlueprintProgression, out crossbloodline)) { var prereq = Helpers.PrerequisiteFeaturesFromList(p.Feature, crossbloodline); prereq.Group = p.Group; components.Add(prereq); } else { components.Add(p); } } foreach (var prereq in feat.GetComponents <PrerequisiteFeaturesFromList>().ToList()) { var features = prereq.Features.ToList(); foreach (var f in prereq.Features) { BlueprintProgression crossbloodline; if (crossbloodForBloodline.TryGetValue(f as BlueprintProgression, out crossbloodline)) { features.Add(crossbloodline); } } var newPrereq = Helpers.PrerequisiteFeaturesFromList(features); newPrereq.Group = prereq.Group; components.Add(newPrereq); } feat.SetComponents(components); }
public static void SetFeatureInfo(BlueprintFeature feat, String name, String displayName, String description, String guid, Sprite icon, FeatureGroup group, params BlueprintComponent[] components) { feat.name = name; feat.SetComponents(components); feat.Groups = new [] { group }; feat.SetNameDescriptionIcon(displayName, description, icon); Main.library.AddAsset(feat, guid); }