Пример #1
0
        //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);
        }
Пример #2
0
 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));
 }
Пример #3
0
        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);
            }
        }
Пример #5
0
 //Thing
 public static ResearchProjectDef TryGetTech(this Thing book)
 {
     return((book.Stuff != null && book.Stuff.IsWithinCategory(TechDefOf.Knowledge)) ? TechTracker.FindTech(book.Stuff) : null);
 }
Пример #6
0
 public static bool Allows(this Bill bill, ResearchProjectDef tech)
 {
     return(bill.ingredientFilter.Allows(TechTracker.FindTech(tech).Stuff));
 }