//Bill public static bool Allows(this Bill bill, IEnumerable <ResearchProjectDef> homework) { var textBooks = homework.Select(x => TechTracker.FindTech(x).Stuff); bool result = bill.ingredientFilter.AllowedThingDefs.Intersect(textBooks).Any(); return(result); }
public override bool TryMakePreToilReservations(bool errorOnFailed) { project = techComp.homework?.Where(x => job.bill.Allows(x)).Intersect(techComp.knownTechs).Reverse().FirstOrDefault(); if (project == null) { return(false); } techStuff = TechTracker.FindTech(project).Stuff; return(base.TryMakePreToilReservations(errorOnFailed)); }
public static IEnumerable <StatDrawEntry> Postfix(IEnumerable <StatDrawEntry> values, Thing thing) { foreach (StatDrawEntry entry in values) { yield return(entry); } if (thing.def.IsWeapon) { string tech = TechTracker.FindTech(thing.def)?.Tech.LabelCap ?? "None".Translate(); yield return(new StatDrawEntry(StatCategoryDefOf.Weapon, "WeaponAssociatedTech".Translate(), tech, "WeaponAssociatedTechDesc".Translate(), 10000, null, null, false)); bool known = unlocked.weapons.Contains(thing.def); yield return(new StatDrawEntry(StatCategoryDefOf.Weapon, "WeaponKnown".Translate(), known.ToStringYesNo(), "WeaponKnownDesc".Translate(), 9999, null, null, false)); bool free = SimpleWeapons.Contains(thing.def) || UniversalWeapons.Contains(thing.def); yield return(new StatDrawEntry(StatCategoryDefOf.Weapon, "WeaponRequiresTraining".Translate(), (!free).ToStringYesNo(), "WeaponRequiresTrainingDesc".Translate(), 9998, null, null, false)); } }
protected void LearnWeaponGroup(ThingDef weapon, Pawn pawn, CompKnowledge techComp) { bool groupRanged = ModBaseHumanResources.LearnRangedWeaponsByGroup && weapon.IsRangedWeapon; bool groupMelee = ModBaseHumanResources.LearnMeleeWeaponsByGroup && weapon.IsMeleeWeapon; if (TechTracker.FindTechs(weapon).Any() && (groupRanged || groupMelee)) { foreach (ThingDef sister in TechTracker.FindTech(weapon).Weapons) { if ((groupRanged && sister.IsRangedWeapon) || (groupMelee && sister.IsMeleeWeapon)) { techComp.LearnWeapon(sister); Messages.Message("MessageTrainingComplete".Translate(pawn, sister), MessageTypeDefOf.TaskCompletion); } } } else { techComp.LearnWeapon(weapon); Messages.Message("MessageTrainingComplete".Translate(pawn, weapon), MessageTypeDefOf.TaskCompletion); } }
//Thing public static ResearchProjectDef TryGetTech(this Thing book) { return((book.Stuff != null && book.Stuff.IsWithinCategory(TechDefOf.Knowledge)) ? TechTracker.FindTech(book.Stuff) : null); }
public static bool Allows(this Bill bill, ResearchProjectDef tech) { return(bill.ingredientFilter.Allows(TechTracker.FindTech(tech).Stuff)); }