private static void UnlockItemByResearch(List <GeoFactionDef> factions, ResearchElement tech, TacticalItemDef item) { if (tech.Rewards.Any(e => (e.BaseDef as ManufactureResearchRewardDef)?.Items?.Contains(item) ?? false)) { return; } Verbo("Adding {0} to {1} ({2})", item.name, tech.ResearchDef.name, (Func <string>)tech.GetLocalizedName); if (Shared == null) { Shared = GameUtl.GameComponent <SharedData>(); } if (!item.Tags.Any(e => e == Shared.SharedGameTags.ManufacturableTag)) { item.Tags.Add(Shared.SharedGameTags.ManufacturableTag); } var rewards = tech.Rewards.ToList(); var items = new List <ItemDef> { item }; if (item.CompatibleAmmunition != null) { items.AddRange(item.CompatibleAmmunition); } rewards.Add(new ManufactureResearchReward(new ManufactureResearchRewardDef() { Items = items.ToArray(), ValidForFactions = factions })); typeof(ResearchElement).GetProperty("Rewards").SetValue(tech, rewards.ToArray()); }
private static void CheckUncapTech(Type screen, ResearchElement tech, ref IPatch patch) { //Verbo( "Checking {0} for uncap", tech?.ResearchDef.name ); if (tech?.IsCompleted == true) { if (patch == null) { patch = new UncapAug().PatchAugUncap(screen); if (patch != null) { Info("Tech {0} is researched, uncapped augmentations", tech.ResearchDef.name); } } } else { Unpatch(ref patch); } }