Пример #1
0
        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());
        }
Пример #2
0
 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);
     }
 }