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]); } }
private static void AddItem(TacticalItemDef item) { Verbo("Unlock item: {0}", item.name); Manufacture.AddAvailableItem(item); PhoenixFaction.NewEntityKnowledge?["item"]?.Remove(item.Guid); UnlockCount++; }
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()); }
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); }