Ejemplo n.º 1
0
        private static void UnlockItem(TacticalItemDef item)
        {
            if (Shared == null)
            {
                Shared = GameUtl.GameComponent <SharedData>();
            }
            var manufacturableTag = Shared.SharedGameTags.ManufacturableTag;

            if (!item.Tags.Any(e => e == manufacturableTag))
            {
                item.Tags.Add(manufacturableTag);
            }
            if (Manufacture.ManufacturableItems.Any(e => e.RelatedItemDef == item))
            {
                Verbo("Already unlocked: {0}", item.name);
                return;
            }
            else
            {
                AddItem(item);
            }
            if (item.CompatibleAmmunition?.Length > 0 && item.CompatibleAmmunition[0] != item)
            {
                UnlockItem(item.CompatibleAmmunition[0]);
            }
        }
Ejemplo n.º 2
0
 private static void AddItem(TacticalItemDef item)
 {
     Verbo("Unlock item: {0}", item.name);
     Manufacture.AddAvailableItem(item);
     PhoenixFaction.NewEntityKnowledge?["item"]?.Remove(item.Guid);
     UnlockCount++;
 }
Ejemplo n.º 3
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());
        }
Ejemplo n.º 4
0
 public static void Prefix(TacticalItemDef tacItemDef, MethodInfo __originalMethod)
 {
     string str = $"Successfully injected into {__originalMethod.ReflectedType}.{__originalMethod.Name}, object is {tacItemDef.GetDisplayName().Localize()}";
     BasicUtil.Log(str, MyMod.storedAPI);
     FileLog.Log(str);
 }