Exemplo n.º 1
0
        public static void RecipeSkills()
        {
            IEnumerable <RecipeDef> arg_DD_0 = DefDatabase <RecipeDef> .AllDefs;

            TableDataGetter <RecipeDef>[] expr_0B = new TableDataGetter <RecipeDef> [5];
            expr_0B[0] = new TableDataGetter <RecipeDef>("defName", (RecipeDef d) => d.defName);
            expr_0B[1] = new TableDataGetter <RecipeDef>("workSkill", (RecipeDef d) => (d.workSkill != null) ? d.workSkill.defName : string.Empty);
            expr_0B[2] = new TableDataGetter <RecipeDef>("workSpeedStat", (RecipeDef d) => (d.workSpeedStat != null) ? d.workSpeedStat.defName : string.Empty);
            expr_0B[3] = new TableDataGetter <RecipeDef>("workSpeedStat's skillNeedFactors", delegate(RecipeDef d)
            {
                string arg_67_0;
                if (d.workSpeedStat == null)
                {
                    arg_67_0 = string.Empty;
                }
                else if (d.workSpeedStat.skillNeedFactors.NullOrEmpty <SkillNeed>())
                {
                    arg_67_0 = string.Empty;
                }
                else
                {
                    arg_67_0 = (from fac in d.workSpeedStat.skillNeedFactors
                                select fac.skill.defName).ToCommaList(false);
                }
                return(arg_67_0);
            });
            expr_0B[4] = new TableDataGetter <RecipeDef>("workSkillLearnFactor", (RecipeDef d) => d.workSkillLearnFactor);
            DebugTables.MakeTablesDialog <RecipeDef>(arg_DD_0, expr_0B);
        }
Exemplo n.º 2
0
        public static void AnimalBreeding()
        {
            IEnumerable <ThingDef> arg_14B_0 = (from d in DefDatabase <ThingDef> .AllDefs
                                                where d.category == ThingCategory.Pawn && d.race.IsFlesh
                                                select d).OrderByDescending(new Func <ThingDef, float>(DebugOutputsEconomy.GestationDaysEach));

            TableDataGetter <ThingDef>[] expr_4F = new TableDataGetter <ThingDef> [6];
            expr_4F[0] = new TableDataGetter <ThingDef>(string.Empty, (ThingDef d) => d.defName);
            expr_4F[1] = new TableDataGetter <ThingDef>("gestDaysEach", (ThingDef d) => DebugOutputsEconomy.GestationDaysEach(d).ToString("F2"));
            expr_4F[2] = new TableDataGetter <ThingDef>("avgOffspring", (ThingDef d) => (!d.HasComp(typeof(CompEggLayer))) ? ((d.race.litterSizeCurve == null) ? 1f : Rand.ByCurveAverage(d.race.litterSizeCurve)).ToString("F2") : d.GetCompProperties <CompProperties_EggLayer>().eggCountRange.Average.ToString("F2"));
            expr_4F[3] = new TableDataGetter <ThingDef>("gestDaysRaw", (ThingDef d) => (!d.HasComp(typeof(CompEggLayer))) ? d.race.gestationPeriodDays.ToString("F1") : d.GetCompProperties <CompProperties_EggLayer>().eggLayIntervalDays.ToString("F1"));
            expr_4F[4] = new TableDataGetter <ThingDef>("growth per 30d", delegate(ThingDef d)
            {
                float f    = 1f + ((!d.HasComp(typeof(CompEggLayer))) ? ((d.race.litterSizeCurve == null) ? 1f : Rand.ByCurveAverage(d.race.litterSizeCurve)) : d.GetCompProperties <CompProperties_EggLayer>().eggCountRange.Average);
                float num  = d.race.lifeStageAges[d.race.lifeStageAges.Count - 1].minAge * 60f;
                float num2 = num + ((!d.HasComp(typeof(CompEggLayer))) ? d.race.gestationPeriodDays : d.GetCompProperties <CompProperties_EggLayer>().eggLayIntervalDays);
                float p    = 30f / num2;
                return(Mathf.Pow(f, p).ToString("F2"));
            });
            expr_4F[5] = new TableDataGetter <ThingDef>("growth per 60d", delegate(ThingDef d)
            {
                float f    = 1f + ((!d.HasComp(typeof(CompEggLayer))) ? ((d.race.litterSizeCurve == null) ? 1f : Rand.ByCurveAverage(d.race.litterSizeCurve)) : d.GetCompProperties <CompProperties_EggLayer>().eggCountRange.Average);
                float num  = d.race.lifeStageAges[d.race.lifeStageAges.Count - 1].minAge * 60f;
                float num2 = num + ((!d.HasComp(typeof(CompEggLayer))) ? d.race.gestationPeriodDays : d.GetCompProperties <CompProperties_EggLayer>().eggLayIntervalDays);
                float p    = 60f / num2;
                return(Mathf.Pow(f, p).ToString("F2"));
            });
            DebugTables.MakeTablesDialog <ThingDef>(arg_14B_0, expr_4F);
        }
Exemplo n.º 3
0
        private static void DoTableInternalApparel(ThingDef stuff)
        {
            IEnumerable <ThingDef> arg_1D1_0 = from d in DefDatabase <ThingDef> .AllDefs
                                               where d.IsApparel && (stuff == null || (d.MadeFromStuff && stuff.stuffProps.CanMake(d)))
                                               select d;

            TableDataGetter <ThingDef>[] expr_2A = new TableDataGetter <ThingDef> [14];
            expr_2A[0] = new TableDataGetter <ThingDef>("defName", (ThingDef d) => d.defName);
            expr_2A[1] = new TableDataGetter <ThingDef>("bodyParts", (ThingDef d) => GenText.ToSpaceList(from bp in d.apparel.bodyPartGroups
                                                                                                         select bp.defName));
            expr_2A[2] = new TableDataGetter <ThingDef>("layers", (ThingDef d) => GenText.ToSpaceList(from l in d.apparel.layers
                                                                                                      select l.ToString()));
            expr_2A[3] = new TableDataGetter <ThingDef>("tags", (ThingDef d) => GenText.ToSpaceList(from t in d.apparel.tags
                                                                                                    select t.ToString()));
            expr_2A[4]  = new TableDataGetter <ThingDef>("work", (ThingDef d) => d.GetStatValueAbstract(StatDefOf.WorkToMake, stuff).ToString("F0"));
            expr_2A[5]  = new TableDataGetter <ThingDef>("mktval", (ThingDef d) => d.GetStatValueAbstract(StatDefOf.MarketValue, stuff).ToString("F0"));
            expr_2A[6]  = new TableDataGetter <ThingDef>("insCold", (ThingDef d) => d.GetStatValueAbstract(StatDefOf.Insulation_Cold, stuff).ToString("F1"));
            expr_2A[7]  = new TableDataGetter <ThingDef>("insHeat", (ThingDef d) => d.GetStatValueAbstract(StatDefOf.Insulation_Heat, stuff).ToString("F1"));
            expr_2A[8]  = new TableDataGetter <ThingDef>("blunt", (ThingDef d) => d.GetStatValueAbstract(StatDefOf.ArmorRating_Blunt, stuff).ToString("F2"));
            expr_2A[9]  = new TableDataGetter <ThingDef>("sharp", (ThingDef d) => d.GetStatValueAbstract(StatDefOf.ArmorRating_Sharp, stuff).ToString("F2"));
            expr_2A[10] = new TableDataGetter <ThingDef>("SEMultArmor", (ThingDef d) => d.GetStatValueAbstract(StatDefOf.StuffEffectMultiplierArmor, stuff).ToString("F2"));
            expr_2A[11] = new TableDataGetter <ThingDef>("SEMultInsuCold", (ThingDef d) => d.GetStatValueAbstract(StatDefOf.StuffEffectMultiplierInsulation_Cold, stuff).ToString("F2"));
            expr_2A[12] = new TableDataGetter <ThingDef>("SEMultInsuHeat", (ThingDef d) => d.GetStatValueAbstract(StatDefOf.StuffEffectMultiplierInsulation_Heat, stuff).ToString("F2"));
            expr_2A[13] = new TableDataGetter <ThingDef>("equipTime", (ThingDef d) => d.GetStatValueAbstract(StatDefOf.EquipDelay, stuff).ToString("F1"));
            DebugTables.MakeTablesDialog <ThingDef>(arg_1D1_0, expr_2A);
        }
Exemplo n.º 4
0
        public static void MakeTablePairsByThing(List <ThingStuffPair> pairList)
        {
            DefMap <ThingDef, float> totalCommMult = new DefMap <ThingDef, float>();
            DefMap <ThingDef, float> totalComm     = new DefMap <ThingDef, float>();
            DefMap <ThingDef, int>   pairCount     = new DefMap <ThingDef, int>();

            foreach (ThingStuffPair current in pairList)
            {
                DefMap <ThingDef, float> defMap;
                ThingDef thing;
                (defMap = totalCommMult)[thing = current.thing] = defMap[thing] + current.commonalityMultiplier;
                ThingDef thing2;
                (defMap = totalComm)[thing2 = current.thing] = defMap[thing2] + current.Commonality;
                DefMap <ThingDef, int> pairCount2;
                ThingDef thing3;
                (pairCount2 = pairCount)[thing3 = current.thing] = pairCount2[thing3] + 1;
            }
            IEnumerable <ThingDef> arg_192_0 = from d in DefDatabase <ThingDef> .AllDefs
                                               where pairList.Any((ThingStuffPair pa) => pa.thing == d)
                                               select d;

            TableDataGetter <ThingDef>[] expr_F3 = new TableDataGetter <ThingDef> [5];
            expr_F3[0] = new TableDataGetter <ThingDef>("thing", (ThingDef t) => t.defName);
            expr_F3[1] = new TableDataGetter <ThingDef>("pair count", (ThingDef t) => pairCount[t].ToString());
            expr_F3[2] = new TableDataGetter <ThingDef>("total commonality multiplier ", (ThingDef t) => totalCommMult[t].ToString("F4"));
            expr_F3[3] = new TableDataGetter <ThingDef>("total commonality", (ThingDef t) => totalComm[t].ToString("F4"));
            expr_F3[4] = new TableDataGetter <ThingDef>("generateCommonality", (ThingDef t) => t.generateCommonality.ToString("F4"));
            DebugTables.MakeTablesDialog <ThingDef>(arg_192_0, expr_F3);
        }
Exemplo n.º 5
0
        public static void BackstoryCountsPerTag()
        {
            IEnumerable <Backstory>  enumerable      = BackstoryDatabase.allBackstories.Select((KeyValuePair <string, Backstory> kvp) => kvp.Value);
            List <string>            dataSources     = enumerable.SelectMany((Backstory bs) => bs.spawnCategories).Distinct().ToList();
            Dictionary <string, int> countAdulthoods = new Dictionary <string, int>();
            Dictionary <string, int> countChildhoods = new Dictionary <string, int>();

            foreach (Backstory item in enumerable)
            {
                Dictionary <string, int> dictionary = (item.slot == BackstorySlot.Adulthood) ? countAdulthoods : countChildhoods;
                foreach (string spawnCategory in item.spawnCategories)
                {
                    if (!dictionary.ContainsKey(spawnCategory))
                    {
                        dictionary.Add(spawnCategory, 0);
                    }
                    dictionary[spawnCategory]++;
                }
            }
            List <TableDataGetter <string> > list = new List <TableDataGetter <string> >();

            list.Add(new TableDataGetter <string>("tag", (string t) => t));
            list.Add(new TableDataGetter <string>("adulthoods", (string t) => countAdulthoods.ContainsKey(t) ? countAdulthoods[t] : 0));
            list.Add(new TableDataGetter <string>("childhoods", (string t) => countChildhoods.ContainsKey(t) ? countChildhoods[t] : 0));
            DebugTables.MakeTablesDialog(dataSources, list.ToArray());
        }
Exemplo n.º 6
0
        public static void TraitsSampled()
        {
            List <Pawn> testColonists = new List <Pawn>();

            for (int i = 0; i < 4000; i++)
            {
                testColonists.Add(PawnGenerator.GeneratePawn(PawnKindDefOf.Colonist, Faction.OfPlayer));
            }
            DebugTables.MakeTablesDialog(DefDatabase <TraitDef> .AllDefs.SelectMany((TraitDef tr) => tr.degreeDatas), new TableDataGetter <TraitDegreeData>("trait", (TraitDegreeData d) => getTrait(d).defName), new TableDataGetter <TraitDegreeData>("trait commonality", (TraitDegreeData d) => getTrait(d).GetGenderSpecificCommonality(Gender.None).ToString("F2")), new TableDataGetter <TraitDegreeData>("trait commonalityFemale", (TraitDegreeData d) => getTrait(d).GetGenderSpecificCommonality(Gender.Female).ToString("F2")), new TableDataGetter <TraitDegreeData>("degree", (TraitDegreeData d) => d.label), new TableDataGetter <TraitDegreeData>("degree num", (TraitDegreeData d) => (getTrait(d).degreeDatas.Count <= 0) ? "" : d.degree.ToString()), new TableDataGetter <TraitDegreeData>("degree commonality", (TraitDegreeData d) => (getTrait(d).degreeDatas.Count <= 0) ? "" : d.commonality.ToString("F2")), new TableDataGetter <TraitDegreeData>("marketValueFactorOffset", (TraitDegreeData d) => d.marketValueFactorOffset.ToString("F0")), new TableDataGetter <TraitDegreeData>("prevalence among " + 4000 + "\ngenerated Colonists", (TraitDegreeData d) => getPrevalence(d).ToStringPercent()));
            float getPrevalence(TraitDegreeData d)
            {
                float num = 0f;

                foreach (Pawn item in testColonists)
                {
                    Trait trait = item.story.traits.GetTrait(getTrait(d));
                    if (trait != null && trait.Degree == d.degree)
                    {
                        num += 1f;
                    }
                }
                return(num / 4000f);
            }

            TraitDef getTrait(TraitDegreeData d)
            {
                return(DefDatabase <TraitDef> .AllDefs.First((TraitDef td) => td.degreeDatas.Contains(d)));
            }
        }
Exemplo n.º 7
0
        public static void TradeRequestsSampled()
        {
            Map currentMap = Find.CurrentMap;
            IncidentWorker_QuestTradeRequest incidentWorker_QuestTradeRequest = (IncidentWorker_QuestTradeRequest)IncidentDefOf.Quest_TradeRequest.Worker;
            Dictionary <ThingDef, int>       counts = new Dictionary <ThingDef, int>();

            for (int i = 0; i < 100; i++)
            {
                SettlementBase settlementBase = IncidentWorker_QuestTradeRequest.RandomNearbyTradeableSettlement(currentMap.Tile);
                if (settlementBase == null)
                {
                    break;
                }
                TradeRequestComp component = settlementBase.GetComponent <TradeRequestComp>();
                if (incidentWorker_QuestTradeRequest.TryGenerateTradeRequest(component, currentMap))
                {
                    if (!counts.ContainsKey(component.requestThingDef))
                    {
                        counts.Add(component.requestThingDef, 0);
                    }
                    Dictionary <ThingDef, int> dictionary;
                    ThingDef requestThingDef;
                    (dictionary = counts)[requestThingDef = component.requestThingDef] = dictionary[requestThingDef] + 1;
                }
                settlementBase.GetComponent <TradeRequestComp>().Disable();
            }
            DebugTables.MakeTablesDialog(from d in DefDatabase <ThingDef> .AllDefs
                                         where counts.ContainsKey(d)
                                         orderby counts[d] descending
                                         select d, new TableDataGetter <ThingDef>("defName", (ThingDef d) => d.defName), new TableDataGetter <ThingDef>("appearance rate in " + 100 + " trade requests", (ThingDef d) => ((float)counts[d] / 100f).ToStringPercent()));
        }
Exemplo n.º 8
0
        public static void Crops()
        {
            Func <ThingDef, float> workCost = delegate(ThingDef d)
            {
                float num = 1.1f;
                num += d.plant.growDays * 1f;
                return(num + (d.plant.sowWork + d.plant.harvestWork) * 0.00612f);
            };
            IEnumerable <ThingDef> arg_297_0 = from d in DefDatabase <ThingDef> .AllDefs
                                               where d.category == ThingCategory.Plant && d.plant.Harvestable && d.plant.Sowable
                                               orderby d.plant.IsTree
                                               select d;

            TableDataGetter <ThingDef>[] expr_79 = new TableDataGetter <ThingDef> [14];
            expr_79[0]  = new TableDataGetter <ThingDef>("plant", (ThingDef d) => d.defName);
            expr_79[1]  = new TableDataGetter <ThingDef>("product", (ThingDef d) => d.plant.harvestedThingDef.defName);
            expr_79[2]  = new TableDataGetter <ThingDef>("grow time", (ThingDef d) => d.plant.growDays.ToString("F1"));
            expr_79[3]  = new TableDataGetter <ThingDef>("work", (ThingDef d) => (d.plant.sowWork + d.plant.harvestWork).ToString("F0"));
            expr_79[4]  = new TableDataGetter <ThingDef>("harvestCount", (ThingDef d) => d.plant.harvestYield.ToString("F1"));
            expr_79[5]  = new TableDataGetter <ThingDef>("work-cost per cycle", (ThingDef d) => workCost(d).ToString("F2"));
            expr_79[6]  = new TableDataGetter <ThingDef>("work-cost per harvestCount", (ThingDef d) => (workCost(d) / d.plant.harvestYield).ToString("F2"));
            expr_79[7]  = new TableDataGetter <ThingDef>("value each", (ThingDef d) => d.plant.harvestedThingDef.BaseMarketValue.ToString("F2"));
            expr_79[8]  = new TableDataGetter <ThingDef>("harvestValueTotal", (ThingDef d) => (d.plant.harvestYield * d.plant.harvestedThingDef.BaseMarketValue).ToString("F2"));
            expr_79[9]  = new TableDataGetter <ThingDef>("profit per growDay", (ThingDef d) => ((d.plant.harvestYield * d.plant.harvestedThingDef.BaseMarketValue - workCost(d)) / d.plant.growDays).ToString("F2"));
            expr_79[10] = new TableDataGetter <ThingDef>("nutrition per growDay", (ThingDef d) => (d.plant.harvestedThingDef.ingestible == null) ? string.Empty : (d.plant.harvestYield * d.plant.harvestedThingDef.GetStatValueAbstract(StatDefOf.Nutrition, null) / d.plant.growDays).ToString("F2"));
            expr_79[11] = new TableDataGetter <ThingDef>("nutrition", (ThingDef d) => (d.plant.harvestedThingDef.ingestible == null) ? string.Empty : d.plant.harvestedThingDef.GetStatValueAbstract(StatDefOf.Nutrition, null).ToString("F2"));
            expr_79[12] = new TableDataGetter <ThingDef>("fertMin", (ThingDef d) => d.plant.fertilityMin.ToStringPercent());
            expr_79[13] = new TableDataGetter <ThingDef>("fertSensitivity", (ThingDef d) => d.plant.fertilitySensitivity.ToStringPercent());
            DebugTables.MakeTablesDialog <ThingDef>(arg_297_0, expr_79);
        }
Exemplo n.º 9
0
 public static void ThingDamageData()
 {
     DebugTables.MakeTablesDialog(from d in DefDatabase <ThingDef> .AllDefs
                                  where d.useHitPoints
                                  orderby d.category, d.defName
                                  select d, new TableDataGetter <ThingDef>("category", (ThingDef d) => d.category.ToString()), new TableDataGetter <ThingDef>("defName", (ThingDef d) => d.defName), new TableDataGetter <ThingDef>("hp", (ThingDef d) => d.BaseMaxHitPoints.ToString()), new TableDataGetter <ThingDef>("flammability", (ThingDef d) => (!(d.BaseFlammability > 0f)) ? string.Empty : d.BaseFlammability.ToString()), new TableDataGetter <ThingDef>("uses stuff", (ThingDef d) => d.MadeFromStuff.ToStringCheckBlank()), new TableDataGetter <ThingDef>("deterioration rate", (ThingDef d) => (!(d.GetStatValueAbstract(StatDefOf.DeteriorationRate) > 0f)) ? string.Empty : d.GetStatValueAbstract(StatDefOf.DeteriorationRate).ToString()), new TableDataGetter <ThingDef>("days to deterioriate", (ThingDef d) => (!(d.GetStatValueAbstract(StatDefOf.DeteriorationRate) > 0f)) ? string.Empty : ((float)d.BaseMaxHitPoints / d.GetStatValueAbstract(StatDefOf.DeteriorationRate)).ToString()));
 }
        public static void DecreeSelectionWeightsNow()
        {
            IIncidentTarget target = Find.CurrentMap;
            string          label  = "selection weight now\ntarget: " + target.ToString();

            DebugTables.MakeTablesDialog(DefDatabase <QuestScriptDef> .AllDefsListForReading.Where((QuestScriptDef x) => x.IsRootDecree), new TableDataGetter <QuestScriptDef>("defName", (QuestScriptDef x) => x.defName), new TableDataGetter <QuestScriptDef>(label, (QuestScriptDef x) => NaturalRandomQuestChooser.GetNaturalDecreeSelectionWeight(x, target.StoryState).ToString("F3")));
        }
Exemplo n.º 11
0
 public static void BestThingRequestGroup()
 {
     DebugTables.MakeTablesDialog(from x in DefDatabase <ThingDef> .AllDefs
                                  where ListerThings.EverListable(x, ListerThingsUse.Global) || ListerThings.EverListable(x, ListerThingsUse.Region)
                                  orderby x.label
                                  select x, new TableDataGetter <ThingDef>("defName", (ThingDef d) => d.defName), new TableDataGetter <ThingDef>("best local", delegate(ThingDef d)
     {
         IEnumerable <ThingRequestGroup> source2 = ListerThings.EverListable(d, ListerThingsUse.Region) ? ((ThingRequestGroup[])Enum.GetValues(typeof(ThingRequestGroup))).Where((ThingRequestGroup x) => x.StoreInRegion() && x.Includes(d)) : Enumerable.Empty <ThingRequestGroup>();
         if (!source2.Any())
         {
             return("-");
         }
         ThingRequestGroup best2 = source2.MinBy((ThingRequestGroup x) => DefDatabase <ThingDef> .AllDefs.Count((ThingDef y) => ListerThings.EverListable(y, ListerThingsUse.Region) && x.Includes(y)));
         return(best2 + " (defs: " + DefDatabase <ThingDef> .AllDefs.Count((ThingDef x) => ListerThings.EverListable(x, ListerThingsUse.Region) && best2.Includes(x)) + ")");
     }), new TableDataGetter <ThingDef>("best global", delegate(ThingDef d)
     {
         IEnumerable <ThingRequestGroup> source = ListerThings.EverListable(d, ListerThingsUse.Global) ? ((ThingRequestGroup[])Enum.GetValues(typeof(ThingRequestGroup))).Where((ThingRequestGroup x) => x.Includes(d)) : Enumerable.Empty <ThingRequestGroup>();
         if (!source.Any())
         {
             return("-");
         }
         ThingRequestGroup best = source.MinBy((ThingRequestGroup x) => DefDatabase <ThingDef> .AllDefs.Count((ThingDef y) => ListerThings.EverListable(y, ListerThingsUse.Global) && x.Includes(y)));
         return(best + " (defs: " + DefDatabase <ThingDef> .AllDefs.Count((ThingDef x) => ListerThings.EverListable(x, ListerThingsUse.Global) && best.Includes(x)) + ")");
     }));
 }
Exemplo n.º 12
0
        public static void PawnKindsBasics()
        {
            IEnumerable <PawnKindDef> arg_36F_0 = from d in DefDatabase <PawnKindDef> .AllDefs
                                                  where d.race != null && d.RaceProps.Humanlike
                                                  select d into k
                                                  orderby(k.defaultFactionType == null) ? string.Empty : k.defaultFactionType.label, k.combatPower
            select k;

            TableDataGetter <PawnKindDef>[] expr_72 = new TableDataGetter <PawnKindDef> [18];
            expr_72[0]  = new TableDataGetter <PawnKindDef>("defName", (PawnKindDef d) => d.defName);
            expr_72[1]  = new TableDataGetter <PawnKindDef>("faction", (PawnKindDef d) => (d.defaultFactionType == null) ? string.Empty : d.defaultFactionType.defName);
            expr_72[2]  = new TableDataGetter <PawnKindDef>("points", (PawnKindDef d) => d.combatPower.ToString("F0"));
            expr_72[3]  = new TableDataGetter <PawnKindDef>("minAge", (PawnKindDef d) => d.minGenerationAge.ToString("F0"));
            expr_72[4]  = new TableDataGetter <PawnKindDef>("maxAge", (PawnKindDef d) => (d.maxGenerationAge >= 10000) ? string.Empty : d.maxGenerationAge.ToString("F0"));
            expr_72[5]  = new TableDataGetter <PawnKindDef>("recruitDiff", (PawnKindDef d) => d.baseRecruitDifficulty.ToStringPercent());
            expr_72[6]  = new TableDataGetter <PawnKindDef>("itemQuality", (PawnKindDef d) => d.itemQuality.ToString());
            expr_72[7]  = new TableDataGetter <PawnKindDef>("forceNormGearQual", (PawnKindDef d) => d.forceNormalGearQuality.ToStringCheckBlank());
            expr_72[8]  = new TableDataGetter <PawnKindDef>("weapon$", (PawnKindDef d) => d.weaponMoney.ToString());
            expr_72[9]  = new TableDataGetter <PawnKindDef>("apparel$", (PawnKindDef d) => d.apparelMoney.ToString());
            expr_72[10] = new TableDataGetter <PawnKindDef>("techHediffsCh", (PawnKindDef d) => d.techHediffsChance.ToStringPercentEmptyZero("F0"));
            expr_72[11] = new TableDataGetter <PawnKindDef>("techHediffs$", (PawnKindDef d) => d.techHediffsMoney.ToString());
            expr_72[12] = new TableDataGetter <PawnKindDef>("gearHealth", (PawnKindDef d) => d.gearHealthRange.ToString());
            expr_72[13] = new TableDataGetter <PawnKindDef>("invNutrition", (PawnKindDef d) => d.invNutrition.ToString());
            expr_72[14] = new TableDataGetter <PawnKindDef>("addictionChance", (PawnKindDef d) => d.chemicalAddictionChance.ToStringPercent());
            expr_72[15] = new TableDataGetter <PawnKindDef>("combatDrugChance", (PawnKindDef d) => (d.combatEnhancingDrugsChance <= 0f) ? string.Empty : d.combatEnhancingDrugsChance.ToStringPercent());
            expr_72[16] = new TableDataGetter <PawnKindDef>("combatDrugCount", (PawnKindDef d) => (d.combatEnhancingDrugsCount.max <= 0) ? string.Empty : d.combatEnhancingDrugsCount.ToString());
            expr_72[17] = new TableDataGetter <PawnKindDef>("bsCryptosleepComm", (PawnKindDef d) => d.backstoryCryptosleepCommonality.ToStringPercentEmptyZero("F0"));
            DebugTables.MakeTablesDialog <PawnKindDef>(arg_36F_0, expr_72);
        }
Exemplo n.º 13
0
        public static void RacesFoodConsumption()
        {
            Func <ThingDef, int, string> lsName = delegate(ThingDef d, int lsIndex)
            {
                if (d.race.lifeStageAges.Count <= lsIndex)
                {
                    return(string.Empty);
                }
                LifeStageDef def3 = d.race.lifeStageAges[lsIndex].def;
                return(def3.defName);
            };
            Func <ThingDef, int, string> maxFood = delegate(ThingDef d, int lsIndex)
            {
                if (d.race.lifeStageAges.Count <= lsIndex)
                {
                    return(string.Empty);
                }
                LifeStageDef def2 = d.race.lifeStageAges[lsIndex].def;
                return((d.race.baseBodySize * def2.bodySizeFactor * def2.foodMaxFactor).ToString("F2"));
            };
            Func <ThingDef, int, string> hungerRate = delegate(ThingDef d, int lsIndex)
            {
                if (d.race.lifeStageAges.Count <= lsIndex)
                {
                    return(string.Empty);
                }
                LifeStageDef def = d.race.lifeStageAges[lsIndex].def;
                return((d.race.baseHungerRate * def.hungerRateFactor).ToString("F2"));
            };

            DebugTables.MakeTablesDialog(from d in DefDatabase <ThingDef> .AllDefs
                                         where d.race != null && d.race.EatsFood
                                         orderby d.race.baseHungerRate descending
                                         select d, new TableDataGetter <ThingDef>("defName", (ThingDef d) => d.defName), new TableDataGetter <ThingDef>("Lifestage 0", (ThingDef d) => lsName(d, 0)), new TableDataGetter <ThingDef>("maxFood", (ThingDef d) => maxFood(d, 0)), new TableDataGetter <ThingDef>("hungerRate", (ThingDef d) => hungerRate(d, 0)), new TableDataGetter <ThingDef>("Lifestage 1", (ThingDef d) => lsName(d, 1)), new TableDataGetter <ThingDef>("maxFood", (ThingDef d) => maxFood(d, 1)), new TableDataGetter <ThingDef>("hungerRate", (ThingDef d) => hungerRate(d, 1)), new TableDataGetter <ThingDef>("Lifestage 2", (ThingDef d) => lsName(d, 2)), new TableDataGetter <ThingDef>("maxFood", (ThingDef d) => maxFood(d, 2)), new TableDataGetter <ThingDef>("hungerRate", (ThingDef d) => hungerRate(d, 2)), new TableDataGetter <ThingDef>("Lifestage 3", (ThingDef d) => lsName(d, 3)), new TableDataGetter <ThingDef>("maxFood", (ThingDef d) => maxFood(d, 3)), new TableDataGetter <ThingDef>("hungerRate", (ThingDef d) => hungerRate(d, 3)));
        }
Exemplo n.º 14
0
        public static void PawnKindsTechHediffUsage()
        {
            List <TableDataGetter <PawnKindDef> > list = new List <TableDataGetter <PawnKindDef> >();

            list.Add(new TableDataGetter <PawnKindDef>("defName", (PawnKindDef x) => x.defName));
            list.Add(new TableDataGetter <PawnKindDef>("chance", (PawnKindDef x) => x.techHediffsChance.ToStringPercent()));
            list.Add(new TableDataGetter <PawnKindDef>("avg $", (PawnKindDef x) => x.techHediffsMoney.Average.ToString()));
            list.Add(new TableDataGetter <PawnKindDef>("min $", (PawnKindDef x) => x.techHediffsMoney.min.ToString()));
            list.Add(new TableDataGetter <PawnKindDef>("max $", (PawnKindDef x) => x.techHediffsMoney.max.ToString()));
            list.Add(new TableDataGetter <PawnKindDef>("points", (PawnKindDef x) => x.combatPower.ToString()));
            list.AddRange(from t in DefDatabase <ThingDef> .AllDefs
                          where t.isTechHediff && t.techHediffsTags != null
                          orderby t.techLevel descending, t.BaseMarketValue
                          select new TableDataGetter <PawnKindDef>(t.label.Shorten() + "\n$" + t.BaseMarketValue.ToString("F0"), delegate(PawnKindDef k)
            {
                if (k.techHediffsTags != null && t.techHediffsTags.Any((string tag) => k.techHediffsTags.Contains(tag)))
                {
                    if (k.techHediffsMoney.max < t.BaseMarketValue)
                    {
                        return("-");
                    }
                    if (k.techHediffsMoney.min >= t.BaseMarketValue)
                    {
                        return("✓");
                    }
                    return((1f - (t.BaseMarketValue - k.techHediffsMoney.min) / (k.techHediffsMoney.max - k.techHediffsMoney.min)).ToStringPercent("F0"));
                }
                return(string.Empty);
            }));
            DebugTables.MakeTablesDialog(from x in DefDatabase <PawnKindDef> .AllDefs
                                         where x.RaceProps.Humanlike
                                         orderby(x.defaultFactionType == null) ? 2147483647 : ((int)x.defaultFactionType.techLevel), x.combatPower
                                         select x, list.ToArray());
        }
Exemplo n.º 15
0
        public static void PawnKindsWeaponUsage()
        {
            List <TableDataGetter <PawnKindDef> > list = new List <TableDataGetter <PawnKindDef> >();

            list.Add(new TableDataGetter <PawnKindDef>("defName", (PawnKindDef x) => x.defName));
            list.Add(new TableDataGetter <PawnKindDef>("avg $", (PawnKindDef x) => x.weaponMoney.Average.ToString()));
            list.Add(new TableDataGetter <PawnKindDef>("min $", (PawnKindDef x) => x.weaponMoney.min.ToString()));
            list.Add(new TableDataGetter <PawnKindDef>("max $", (PawnKindDef x) => x.weaponMoney.max.ToString()));
            list.Add(new TableDataGetter <PawnKindDef>("points", (PawnKindDef x) => x.combatPower.ToString()));
            list.AddRange(from w in DefDatabase <ThingDef> .AllDefs
                          where w.IsWeapon && !w.weaponTags.NullOrEmpty()
                          orderby w.IsMeleeWeapon descending, w.techLevel, w.BaseMarketValue
                          select new TableDataGetter <PawnKindDef>(w.label.Shorten() + "\n$" + w.BaseMarketValue.ToString("F0"), delegate(PawnKindDef k)
            {
                if (k.weaponTags != null && w.weaponTags.Any((string z) => k.weaponTags.Contains(z)))
                {
                    float num = PawnWeaponGenerator.CheapestNonDerpPriceFor(w);
                    if (k.weaponMoney.max < num)
                    {
                        return("-");
                    }
                    if (k.weaponMoney.min > num)
                    {
                        return("✓");
                    }
                    return((1f - (num - k.weaponMoney.min) / (k.weaponMoney.max - k.weaponMoney.min)).ToStringPercent("F0"));
                }
                return(string.Empty);
            }));
            DebugTables.MakeTablesDialog(from x in DefDatabase <PawnKindDef> .AllDefs
                                         where (int)x.RaceProps.intelligence >= 1
                                         orderby(x.defaultFactionType == null) ? 2147483647 : ((int)x.defaultFactionType.techLevel), x.combatPower
                                         select x, list.ToArray());
        }
Exemplo n.º 16
0
        public static void Turrets()
        {
            DebugTables.MakeTablesDialog(DefDatabase <ThingDef> .AllDefs.Where((ThingDef d) => d.category == ThingCategory.Building && d.building.IsTurret), new TableDataGetter <ThingDef>("defName", (ThingDef d) => d.defName), new TableDataGetter <ThingDef>("market\nvalue", (ThingDef d) => d.GetStatValueAbstract(StatDefOf.MarketValue).ToString("F0")), new TableDataGetter <ThingDef>("cost\nlist", (ThingDef d) => (!d.costList.NullOrEmpty()) ? d.costList.Select((ThingDefCountClass x) => x.Summary).ToCommaList() : ""), new TableDataGetter <ThingDef>("cost\nstuff\ncount", (ThingDef d) => (!d.MadeFromStuff) ? "" : d.costStuffCount.ToString()), new TableDataGetter <ThingDef>("work", (ThingDef d) => d.GetStatValueAbstract(StatDefOf.WorkToBuild).ToString("F0")), new TableDataGetter <ThingDef>("hp", (ThingDef d) => d.GetStatValueAbstract(StatDefOf.MaxHitPoints).ToString("F0")), new TableDataGetter <ThingDef>("damage", (ThingDef d) => damage(d.building.turretGunDef).ToString()), new TableDataGetter <ThingDef>("AP", (ThingDef d) => armorPenetration(d.building.turretGunDef).ToStringPercent()), new TableDataGetter <ThingDef>("stop\npower", (ThingDef d) => (!(stoppingPower(d.building.turretGunDef) > 0f)) ? "" : stoppingPower(d.building.turretGunDef).ToString("F1")), new TableDataGetter <ThingDef>("warmup", (ThingDef d) => warmup(d.building.turretGunDef).ToString("F2")), new TableDataGetter <ThingDef>("burst\nshots", (ThingDef d) => burstShots(d.building.turretGunDef).ToString()), new TableDataGetter <ThingDef>("cooldown", (ThingDef d) => cooldown(d.building.turretGunDef).ToString("F2")), new TableDataGetter <ThingDef>("full\ncycle", (ThingDef d) => fullcycle(d.building.turretGunDef).ToString("F2")), new TableDataGetter <ThingDef>("range", (ThingDef d) => d.building.turretGunDef.Verbs[0].range.ToString("F1")), new TableDataGetter <ThingDef>("projectile\nspeed", (ThingDef d) => (d.building.turretGunDef.projectile == null) ? "" : d.building.turretGunDef.projectile.speed.ToString("F0")), new TableDataGetter <ThingDef>("dps\nmissless", (ThingDef d) => dpsMissless(d.building.turretGunDef).ToString("F2")), new TableDataGetter <ThingDef>("accuracy\ntouch (" + 3f + ")", (ThingDef d) => accTouch(d.building.turretGunDef).ToStringPercent()), new TableDataGetter <ThingDef>("accuracy\nshort (" + 12f + ")", (ThingDef d) => accShort(d.building.turretGunDef).ToStringPercent()), new TableDataGetter <ThingDef>("accuracy\nmed (" + 25f + ")", (ThingDef d) => accMed(d.building.turretGunDef).ToStringPercent()), new TableDataGetter <ThingDef>("accuracy\nlong (" + 40f + ")", (ThingDef d) => accLong(d.building.turretGunDef).ToStringPercent()), new TableDataGetter <ThingDef>("accuracy\navg", (ThingDef d) => accAvg(d.building.turretGunDef).ToString("F2")), new TableDataGetter <ThingDef>("forced\nmiss\nradius", (ThingDef d) => (!(d.building.turretGunDef.Verbs[0].forcedMissRadius > 0f)) ? "" : d.building.turretGunDef.Verbs[0].forcedMissRadius.ToString()), new TableDataGetter <ThingDef>("dps\ntouch", (ThingDef d) => (dpsMissless(d.building.turretGunDef) * accTouch(d.building.turretGunDef)).ToString("F2")), new TableDataGetter <ThingDef>("dps\nshort", (ThingDef d) => (dpsMissless(d.building.turretGunDef) * accShort(d.building.turretGunDef)).ToString("F2")), new TableDataGetter <ThingDef>("dps\nmed", (ThingDef d) => (dpsMissless(d.building.turretGunDef) * accMed(d.building.turretGunDef)).ToString("F2")), new TableDataGetter <ThingDef>("dps\nlong", (ThingDef d) => (dpsMissless(d.building.turretGunDef) * accLong(d.building.turretGunDef)).ToString("F2")), new TableDataGetter <ThingDef>("dps\navg", (ThingDef d) => dpsAvg(d.building.turretGunDef).ToString("F2")), new TableDataGetter <ThingDef>("dpsAvg / $100", (ThingDef d) => (dpsAvg(d.building.turretGunDef) / (d.GetStatValueAbstract(StatDefOf.MarketValue) / 100f)).ToString("F3")), new TableDataGetter <ThingDef>("fuel\nshot capacity", (ThingDef d) => fuelCapacity(d).ToString()), new TableDataGetter <ThingDef>("fuel\ntype", (ThingDef d) => fuelType(d)), new TableDataGetter <ThingDef>("fuel to\nreload", (ThingDef d) => fuelToReload(d).ToString()));
            string fuelCapacity(ThingDef d)
            {
                if (!d.HasComp(typeof(CompRefuelable)))
                {
                    return("");
                }
                return(d.GetCompProperties <CompProperties_Refuelable>().fuelCapacity.ToString());
            }

            string fuelToReload(ThingDef d)
            {
                if (!d.HasComp(typeof(CompRefuelable)))
                {
                    return("");
                }
                return((d.GetCompProperties <CompProperties_Refuelable>().fuelCapacity / d.GetCompProperties <CompProperties_Refuelable>().FuelMultiplierCurrentDifficulty).ToString());
            }

            string fuelType(ThingDef d)
            {
                if (!d.HasComp(typeof(CompRefuelable)))
                {
                    return("");
                }
                return(d.GetCompProperties <CompProperties_Refuelable>().fuelFilter.Summary);
            }
        }
Exemplo n.º 17
0
 public static void Surgeries()
 {
     DebugTables.MakeTablesDialog(from d in DefDatabase <RecipeDef> .AllDefs
                                  where d.IsSurgery
                                  orderby d.WorkAmountTotal(null) descending
                                  select d, new TableDataGetter <RecipeDef>("defName", (RecipeDef d) => d.defName), new TableDataGetter <RecipeDef>("work", (RecipeDef d) => d.WorkAmountTotal(null).ToString("F0")), new TableDataGetter <RecipeDef>("ingredients", (RecipeDef d) => d.ingredients.Select((IngredientCount ing) => ing.ToString()).ToCommaList()), new TableDataGetter <RecipeDef>("skillRequirements", (RecipeDef d) => (d.skillRequirements != null) ? d.skillRequirements.Select((SkillRequirement ing) => ing.ToString()).ToCommaList() : "-"), new TableDataGetter <RecipeDef>("surgerySuccessChanceFactor", (RecipeDef d) => d.surgerySuccessChanceFactor.ToStringPercent()), new TableDataGetter <RecipeDef>("deathOnFailChance", (RecipeDef d) => d.deathOnFailedSurgeryChance.ToStringPercent()));
 }
Exemplo n.º 18
0
        public static void WildMissResults()
        {
            IntVec3           intVec     = new IntVec3(100, 0, 0);
            ShootLine         shootLine  = new ShootLine(IntVec3.Zero, intVec);
            IEnumerable <int> enumerable = Enumerable.Range(0, 101);
            IEnumerable <int> colValues  = Enumerable.Range(0, 12);

            int[,] results = new int[enumerable.Count(), colValues.Count()];
            foreach (int item in enumerable)
            {
                for (int i = 0; i < 10000; i++)
                {
                    ShootLine shootLine2 = shootLine;
                    shootLine2.ChangeDestToMissWild((float)item / 100f);
                    if (shootLine2.dest.z == 0 && shootLine2.dest.x > intVec.x)
                    {
                        results[item, shootLine2.dest.x - intVec.x]++;
                    }
                }
            }
            DebugTables.MakeTablesDialog(colValues, (int cells) => cells.ToString() + "-away\ncell\nhit%", enumerable, (int hitchance) => ((float)hitchance / 100f).ToStringPercent() + " aimon chance", delegate(int cells, int hitchance)
            {
                float num = (float)hitchance / 100f;
                return((cells == 0) ? num.ToStringPercent() : ((float)results[hitchance, cells] / 10000f * (1f - num)).ToStringPercent());
            });
        }
        public static void StunChances()
        {
            Func <ThingDef, float, bool, string> bluntBodyStunChance = delegate(ThingDef d, float dam, bool onHead)
            {
                SimpleCurve obj   = (onHead ? DamageDefOf.Blunt.bluntStunChancePerDamagePctOfCorePartToHeadCurve : DamageDefOf.Blunt.bluntStunChancePerDamagePctOfCorePartToBodyCurve);
                Pawn        pawn2 = PawnGenerator.GeneratePawn(new PawnGenerationRequest(d.race.AnyPawnKind, Find.FactionManager.FirstFactionOfDef(d.race.AnyPawnKind.defaultFactionType), PawnGenerationContext.NonPlayer, -1, forceGenerateNewPawn: true));
                float       x     = dam / d.race.body.corePart.def.GetMaxHealth(pawn2);
                Find.WorldPawns.PassToWorld(pawn2, PawnDiscardDecideMode.Discard);
                return(Mathf.Clamp01(obj.Evaluate(x)).ToStringPercent());
            };
            List <TableDataGetter <ThingDef> > list = new List <TableDataGetter <ThingDef> >();

            list.Add(new TableDataGetter <ThingDef>("defName", (ThingDef d) => d.defName));
            list.Add(new TableDataGetter <ThingDef>("body size", (ThingDef d) => d.race.baseBodySize.ToString("F2")));
            list.Add(new TableDataGetter <ThingDef>("health scale", (ThingDef d) => d.race.baseHealthScale.ToString("F2")));
            list.Add(new TableDataGetter <ThingDef>("body size\n* health scale", (ThingDef d) => (d.race.baseHealthScale * d.race.baseBodySize).ToString("F2")));
            list.Add(new TableDataGetter <ThingDef>("core part\nhealth", delegate(ThingDef d)
            {
                Pawn pawn       = PawnGenerator.GeneratePawn(new PawnGenerationRequest(d.race.AnyPawnKind, Find.FactionManager.FirstFactionOfDef(d.race.AnyPawnKind.defaultFactionType), PawnGenerationContext.NonPlayer, -1, forceGenerateNewPawn: true));
                float maxHealth = d.race.body.corePart.def.GetMaxHealth(pawn);
                Find.WorldPawns.PassToWorld(pawn, PawnDiscardDecideMode.Discard);
                return(maxHealth);
            }));
            list.Add(new TableDataGetter <ThingDef>("stun\nchance\nbody\n5", (ThingDef d) => bluntBodyStunChance(d, 5f, arg3: false)));
            list.Add(new TableDataGetter <ThingDef>("stun\nchance\nbody\n10", (ThingDef d) => bluntBodyStunChance(d, 10f, arg3: false)));
            list.Add(new TableDataGetter <ThingDef>("stun\nchance\nbody\n15", (ThingDef d) => bluntBodyStunChance(d, 15f, arg3: false)));
            list.Add(new TableDataGetter <ThingDef>("stun\nchance\nbody\n20", (ThingDef d) => bluntBodyStunChance(d, 20f, arg3: false)));
            list.Add(new TableDataGetter <ThingDef>("stun\nchance\nhead\n5", (ThingDef d) => bluntBodyStunChance(d, 5f, arg3: true)));
            list.Add(new TableDataGetter <ThingDef>("stun\nchance\nhead\n10", (ThingDef d) => bluntBodyStunChance(d, 10f, arg3: true)));
            list.Add(new TableDataGetter <ThingDef>("stun\nchance\nhead\n15", (ThingDef d) => bluntBodyStunChance(d, 15f, arg3: true)));
            list.Add(new TableDataGetter <ThingDef>("stun\nchance\nhead\n20", (ThingDef d) => bluntBodyStunChance(d, 20f, arg3: true)));
            DebugTables.MakeTablesDialog(DefDatabase <ThingDef> .AllDefs.Where((ThingDef d) => d.category == ThingCategory.Pawn), list.ToArray());
        }
Exemplo n.º 20
0
        public static void Tools()
        {
            var tools = (from x in DefDatabase <ThingDef> .AllDefs.Where((ThingDef x) => !x.tools.NullOrEmpty()).SelectMany((ThingDef x) => x.tools.Select((Tool y) => new
            {
                Parent = (Def)x,
                Tool = y
            })).Concat(DefDatabase <TerrainDef> .AllDefs.Where((TerrainDef x) => !x.tools.NullOrEmpty()).SelectMany((TerrainDef x) => x.tools.Select((Tool y) => new
            {
                Parent = (Def)x,
                Tool = y
            })))
                         .Concat(DefDatabase <HediffDef> .AllDefs.Where((HediffDef x) => x.HasComp(typeof(HediffComp_VerbGiver)) && !x.CompProps <HediffCompProperties_VerbGiver>().tools.NullOrEmpty()).SelectMany((HediffDef x) => x.CompProps <HediffCompProperties_VerbGiver>().tools.Select((Tool y) => new
            {
                Parent = (Def)x,
                Tool = y
            })))
                         orderby x.Parent.defName, x.Tool.power descending
                         select x).ToList();
            Dictionary <Tool, float> selWeight           = tools.ToDictionary(x => x.Tool, x => x.Tool.VerbsProperties.Average((VerbProperties y) => y.AdjustedMeleeSelectionWeight(x.Tool, null, null, null, x.Parent is ThingDef && ((ThingDef)x.Parent).category == ThingCategory.Pawn)));
            Dictionary <Def, float>  selWeightSumInGroup = tools.Select(x => x.Parent).Distinct().ToDictionary((Def x) => x, (Def x) => tools.Where(y => y.Parent == x).Sum(y => selWeight[y.Tool]));

            DebugTables.MakeTablesDialog(tools.Select((x, index) => index), new TableDataGetter <int>("label", (int x) => tools[x].Tool.label), new TableDataGetter <int>("source", (int x) => tools[x].Parent.defName), new TableDataGetter <int>("power", (int x) => tools[x].Tool.power.ToString("0.##")), new TableDataGetter <int>("AP", delegate(int x)
            {
                float num = tools[x].Tool.armorPenetration;
                if (num < 0f)
                {
                    num = tools[x].Tool.power * 0.015f;
                }
                return(num.ToStringPercent());
            }), new TableDataGetter <int>("cooldown", (int x) => tools[x].Tool.cooldownTime.ToString("0.##")), new TableDataGetter <int>("selection weight", (int x) => selWeight[tools[x].Tool].ToString("0.##")), new TableDataGetter <int>("selection weight\nwithin def", (int x) => (selWeight[tools[x].Tool] / selWeightSumInGroup[tools[x].Parent]).ToStringPercent()), new TableDataGetter <int>("chance\nfactor", (int x) => (tools[x].Tool.chanceFactor != 1f) ? tools[x].Tool.chanceFactor.ToString("0.##") : ""), new TableDataGetter <int>("adds hediff", (int x) => (tools[x].Tool.hediff == null) ? "" : tools[x].Tool.hediff.defName), new TableDataGetter <int>("linked body parts", (int x) => (tools[x].Tool.linkedBodyPartsGroup == null) ? "" : tools[x].Tool.linkedBodyPartsGroup.defName), new TableDataGetter <int>("surprise attack", (int x) => (tools[x].Tool.surpriseAttack == null || tools[x].Tool.surpriseAttack.extraMeleeDamages.NullOrEmpty()) ? "" : (tools[x].Tool.surpriseAttack.extraMeleeDamages[0].amount.ToString("0.##") + " (" + tools[x].Tool.surpriseAttack.extraMeleeDamages[0].def.defName + ")")), new TableDataGetter <int>("capacities", (int x) => tools[x].Tool.capacities.ToStringSafeEnumerable()), new TableDataGetter <int>("maneuvers", (int x) => tools[x].Tool.Maneuvers.ToStringSafeEnumerable()), new TableDataGetter <int>("always weapon", (int x) => (!tools[x].Tool.alwaysTreatAsWeapon) ? "" : "always wep"), new TableDataGetter <int>("id", (int x) => tools[x].Tool.id));
        }
Exemplo n.º 21
0
 public static void ThingFillPercents()
 {
     DebugTables.MakeTablesDialog(from d in DefDatabase <ThingDef> .AllDefs
                                  where d.fillPercent > 0f
                                  orderby d.fillPercent descending
                                  select d, new TableDataGetter <ThingDef>("defName", (ThingDef d) => d.defName), new TableDataGetter <ThingDef>("fillPercent", (ThingDef d) => d.fillPercent.ToStringPercent()), new TableDataGetter <ThingDef>("category", (ThingDef d) => d.category.ToString()));
 }
Exemplo n.º 22
0
 public static void PlantsBasics()
 {
     DebugTables.MakeTablesDialog(from d in DefDatabase <ThingDef> .AllDefs
                                  where d.category == ThingCategory.Plant
                                  orderby d.plant.fertilitySensitivity
                                  select d, new TableDataGetter <ThingDef>("defName", (ThingDef d) => d.defName), new TableDataGetter <ThingDef>("growDays", (ThingDef d) => d.plant.growDays.ToString("F2")), new TableDataGetter <ThingDef>("nutrition", (ThingDef d) => (d.ingestible == null) ? "-" : d.GetStatValueAbstract(StatDefOf.Nutrition).ToString("F2")), new TableDataGetter <ThingDef>("nut/day", (ThingDef d) => (d.ingestible == null) ? "-" : (d.GetStatValueAbstract(StatDefOf.Nutrition) / d.plant.growDays).ToString("F4")), new TableDataGetter <ThingDef>("fertilityMin", (ThingDef d) => d.plant.fertilityMin.ToString("F2")), new TableDataGetter <ThingDef>("fertilitySensitivity", (ThingDef d) => d.plant.fertilitySensitivity.ToString("F2")));
 }
Exemplo n.º 23
0
        public static void ThingMasses()
        {
            IOrderedEnumerable <ThingDef> dataSources = from x in DefDatabase <ThingDef> .AllDefsListForReading
                                                        where x.category == ThingCategory.Item || x.Minifiable
                                                        where x.thingClass != typeof(MinifiedThing) && x.thingClass != typeof(UnfinishedThing)
                                                        orderby x.GetStatValueAbstract(StatDefOf.Mass), x.GetStatValueAbstract(StatDefOf.MarketValue)
            select x;

            Func <ThingDef, float, string> perPawn      = (ThingDef d, float bodySize) => (bodySize * 35f / d.GetStatValueAbstract(StatDefOf.Mass)).ToString("F0");
            Func <ThingDef, string>        perNutrition = delegate(ThingDef d)
            {
                if (d.ingestible == null || d.GetStatValueAbstract(StatDefOf.Nutrition) == 0f)
                {
                    return(string.Empty);
                }
                return((d.GetStatValueAbstract(StatDefOf.Mass) / d.GetStatValueAbstract(StatDefOf.Nutrition)).ToString("F2"));
            };

            DebugTables.MakeTablesDialog(dataSources, new TableDataGetter <ThingDef>("defName", delegate(ThingDef d)
            {
                if (d.Minifiable)
                {
                    return(d.defName + " (minified)");
                }
                string text = d.defName;
                if (!d.EverHaulable)
                {
                    text += " (not haulable)";
                }
                return(text);
            }), new TableDataGetter <ThingDef>("mass", (ThingDef d) => d.GetStatValueAbstract(StatDefOf.Mass).ToString()), new TableDataGetter <ThingDef>("per human", (ThingDef d) => perPawn(d, ThingDefOf.Human.race.baseBodySize)), new TableDataGetter <ThingDef>("per muffalo", (ThingDef d) => perPawn(d, ThingDefOf.Muffalo.race.baseBodySize)), new TableDataGetter <ThingDef>("per dromedary", (ThingDef d) => perPawn(d, ThingDefOf.Dromedary.race.baseBodySize)), new TableDataGetter <ThingDef>("per nutrition", (ThingDef d) => perNutrition(d)), new TableDataGetter <ThingDef>("small volume", (ThingDef d) => (!d.smallVolume) ? string.Empty : "small"));
        }
Exemplo n.º 24
0
        public static void AnimalBehavior()
        {
            IEnumerable <PawnKindDef> arg_300_0 = from d in DefDatabase <PawnKindDef> .AllDefs
                                                  where d.race != null && d.RaceProps.Animal
                                                  select d;

            TableDataGetter <PawnKindDef>[] expr_2E = new TableDataGetter <PawnKindDef> [17];
            expr_2E[0]  = new TableDataGetter <PawnKindDef>(string.Empty, (PawnKindDef k) => k.defName);
            expr_2E[1]  = new TableDataGetter <PawnKindDef>("wildness", (PawnKindDef k) => k.RaceProps.wildness.ToStringPercent());
            expr_2E[2]  = new TableDataGetter <PawnKindDef>("manhunterOnDamageChance", (PawnKindDef k) => k.RaceProps.manhunterOnDamageChance.ToStringPercentEmptyZero("F1"));
            expr_2E[3]  = new TableDataGetter <PawnKindDef>("manhunterOnTameFailChance", (PawnKindDef k) => k.RaceProps.manhunterOnTameFailChance.ToStringPercentEmptyZero("F1"));
            expr_2E[4]  = new TableDataGetter <PawnKindDef>("predator", (PawnKindDef k) => k.RaceProps.predator.ToStringCheckBlank());
            expr_2E[5]  = new TableDataGetter <PawnKindDef>("bodySize", (PawnKindDef k) => k.RaceProps.baseBodySize.ToString("F2"));
            expr_2E[6]  = new TableDataGetter <PawnKindDef>("maxPreyBodySize", (PawnKindDef k) => (!k.RaceProps.predator) ? string.Empty : k.RaceProps.maxPreyBodySize.ToString("F2"));
            expr_2E[7]  = new TableDataGetter <PawnKindDef>("canBePredatorPrey", (PawnKindDef k) => k.RaceProps.canBePredatorPrey.ToStringCheckBlank());
            expr_2E[8]  = new TableDataGetter <PawnKindDef>("petness", (PawnKindDef k) => k.RaceProps.petness.ToStringPercent());
            expr_2E[9]  = new TableDataGetter <PawnKindDef>("nuzzleMtbHours", (PawnKindDef k) => (k.RaceProps.nuzzleMtbHours <= 0f) ? string.Empty : k.RaceProps.nuzzleMtbHours.ToString());
            expr_2E[10] = new TableDataGetter <PawnKindDef>("packAnimal", (PawnKindDef k) => k.RaceProps.packAnimal.ToStringCheckBlank());
            expr_2E[11] = new TableDataGetter <PawnKindDef>("herdAnimal", (PawnKindDef k) => k.RaceProps.herdAnimal.ToStringCheckBlank());
            expr_2E[12] = new TableDataGetter <PawnKindDef>("wildGroupSizeMin", (PawnKindDef k) => (k.wildGroupSize.min == 1) ? string.Empty : k.wildGroupSize.min.ToString());
            expr_2E[13] = new TableDataGetter <PawnKindDef>("wildGroupSizeMax", (PawnKindDef k) => (k.wildGroupSize.max == 1) ? string.Empty : k.wildGroupSize.max.ToString());
            expr_2E[14] = new TableDataGetter <PawnKindDef>("CanDoHerdMigration", (PawnKindDef k) => k.RaceProps.CanDoHerdMigration.ToStringCheckBlank());
            expr_2E[15] = new TableDataGetter <PawnKindDef>("herdMigrationAllowed", (PawnKindDef k) => k.RaceProps.herdMigrationAllowed.ToStringCheckBlank());
            expr_2E[16] = new TableDataGetter <PawnKindDef>("mateMtb", (PawnKindDef k) => k.RaceProps.mateMtbHours.ToStringEmptyZero("F0"));
            DebugTables.MakeTablesDialog <PawnKindDef>(arg_300_0, expr_2E);
        }
Exemplo n.º 25
0
        public static void WeaponsRanged()
        {
            Func <ThingDef, int>   damage           = (ThingDef d) => (d.Verbs[0].defaultProjectile != null) ? d.Verbs[0].defaultProjectile.projectile.GetDamageAmount(null) : 0;
            Func <ThingDef, float> armorPenetration = (ThingDef d) => (d.Verbs[0].defaultProjectile == null) ? 0f : d.Verbs[0].defaultProjectile.projectile.GetArmorPenetration(null);
            Func <ThingDef, float> stoppingPower    = (ThingDef d) => (d.Verbs[0].defaultProjectile == null) ? 0f : d.Verbs[0].defaultProjectile.projectile.stoppingPower;
            Func <ThingDef, float> warmup           = (ThingDef d) => d.Verbs[0].warmupTime;
            Func <ThingDef, float> cooldown         = (ThingDef d) => d.GetStatValueAbstract(StatDefOf.RangedWeapon_Cooldown);
            Func <ThingDef, int>   burstShots       = (ThingDef d) => d.Verbs[0].burstShotCount;
            Func <ThingDef, float> fullcycle        = (ThingDef d) => warmup(d) + cooldown(d) + ((d.Verbs[0].burstShotCount - 1) * d.Verbs[0].ticksBetweenBurstShots).TicksToSeconds();
            Func <ThingDef, float> dpsMissless      = delegate(ThingDef d)
            {
                int   num  = burstShots(d);
                float num2 = warmup(d) + cooldown(d);
                num2 += (float)(num - 1) * ((float)d.Verbs[0].ticksBetweenBurstShots / 60f);
                return((float)(damage(d) * num) / num2);
            };
            Func <ThingDef, float> accTouch = (ThingDef d) => d.GetStatValueAbstract(StatDefOf.AccuracyTouch);
            Func <ThingDef, float> accShort = (ThingDef d) => d.GetStatValueAbstract(StatDefOf.AccuracyShort);
            Func <ThingDef, float> accMed   = (ThingDef d) => d.GetStatValueAbstract(StatDefOf.AccuracyMedium);
            Func <ThingDef, float> accLong  = (ThingDef d) => d.GetStatValueAbstract(StatDefOf.AccuracyLong);
            Func <ThingDef, float> accAvg   = (ThingDef d) => (accTouch(d) + accShort(d) + accMed(d) + accLong(d)) / 4f;
            Func <ThingDef, float> dpsAvg   = (ThingDef d) => dpsMissless(d) * accAvg(d);

            DebugTables.MakeTablesDialog((from d in DefDatabase <ThingDef> .AllDefs
                                          where d.IsRangedWeapon
                                          select d).OrderByDescending(dpsAvg), new TableDataGetter <ThingDef>("defName", (ThingDef d) => d.defName), new TableDataGetter <ThingDef>("damage", (ThingDef d) => damage(d).ToString()), new TableDataGetter <ThingDef>("AP", (ThingDef d) => armorPenetration(d).ToStringPercent()), new TableDataGetter <ThingDef>("stop\npower", (ThingDef d) => (!(stoppingPower(d) > 0f)) ? string.Empty : stoppingPower(d).ToString("F1")), new TableDataGetter <ThingDef>("warmup", (ThingDef d) => warmup(d).ToString("F2")), new TableDataGetter <ThingDef>("burst\nshots", (ThingDef d) => burstShots(d).ToString()), new TableDataGetter <ThingDef>("cooldown", (ThingDef d) => cooldown(d).ToString("F2")), new TableDataGetter <ThingDef>("full\ncycle", (ThingDef d) => fullcycle(d).ToString("F2")), new TableDataGetter <ThingDef>("range", (ThingDef d) => d.Verbs[0].range.ToString("F1")), new TableDataGetter <ThingDef>("projectile\nspeed", (ThingDef d) => (d.projectile == null) ? string.Empty : d.projectile.speed.ToString("F0")), new TableDataGetter <ThingDef>("dps\nmissless", (ThingDef d) => dpsMissless(d).ToString("F2")), new TableDataGetter <ThingDef>("accuracy\ntouch (" + 3f + ")", (ThingDef d) => accTouch(d).ToStringPercent()), new TableDataGetter <ThingDef>("accuracy\nshort (" + 12f + ")", (ThingDef d) => accShort(d).ToStringPercent()), new TableDataGetter <ThingDef>("accuracy\nmed (" + 25f + ")", (ThingDef d) => accMed(d).ToStringPercent()), new TableDataGetter <ThingDef>("accuracy\nlong (" + 40f + ")", (ThingDef d) => accLong(d).ToStringPercent()), new TableDataGetter <ThingDef>("accuracy\navg", (ThingDef d) => accAvg(d).ToString("F2")), new TableDataGetter <ThingDef>("forced\nmiss\nradius", (ThingDef d) => (!(d.Verbs[0].forcedMissRadius > 0f)) ? string.Empty : d.Verbs[0].forcedMissRadius.ToString()), new TableDataGetter <ThingDef>("dps\ntouch", (ThingDef d) => (dpsMissless(d) * accTouch(d)).ToString("F2")), new TableDataGetter <ThingDef>("dps\nshort", (ThingDef d) => (dpsMissless(d) * accShort(d)).ToString("F2")), new TableDataGetter <ThingDef>("dps\nmed", (ThingDef d) => (dpsMissless(d) * accMed(d)).ToString("F2")), new TableDataGetter <ThingDef>("dps\nlong", (ThingDef d) => (dpsMissless(d) * accLong(d)).ToString("F2")), new TableDataGetter <ThingDef>("dps\navg", (ThingDef d) => dpsAvg(d).ToString("F2")), new TableDataGetter <ThingDef>("market\nvalue", (ThingDef d) => d.GetStatValueAbstract(StatDefOf.MarketValue).ToString("F0")), new TableDataGetter <ThingDef>("work", (ThingDef d) => d.GetStatValueAbstract(StatDefOf.WorkToMake).ToString("F0")), new TableDataGetter <ThingDef>("dpsAvg*100 / market value", (ThingDef d) => (dpsAvg(d) * 100f / d.GetStatValueAbstract(StatDefOf.MarketValue)).ToString("F3")));
        }
Exemplo n.º 26
0
 public static void RacesButchery()
 {
     DebugTables.MakeTablesDialog(from d in DefDatabase <ThingDef> .AllDefs
                                  where d.race != null
                                  orderby d.race.baseBodySize
                                  select d, new TableDataGetter <ThingDef>("defName", (ThingDef d) => d.defName), new TableDataGetter <ThingDef>("mktval", (ThingDef d) => d.GetStatValueAbstract(StatDefOf.MarketValue).ToString("F0")), new TableDataGetter <ThingDef>("healthScale", (ThingDef d) => d.race.baseHealthScale.ToString("F2")), new TableDataGetter <ThingDef>("hunger rate", (ThingDef d) => d.race.baseHungerRate.ToString("F2")), new TableDataGetter <ThingDef>("wildness", (ThingDef d) => d.race.wildness.ToStringPercent()), new TableDataGetter <ThingDef>("bodySize", (ThingDef d) => d.race.baseBodySize.ToString("F2")), new TableDataGetter <ThingDef>("meatAmount", (ThingDef d) => d.GetStatValueAbstract(StatDefOf.MeatAmount).ToString("F0")), new TableDataGetter <ThingDef>("leatherAmount", (ThingDef d) => d.GetStatValueAbstract(StatDefOf.LeatherAmount).ToString("F0")));
 }
Exemplo n.º 27
0
 public static void TranshumanistBodyParts()
 {
     DebugTables.MakeTablesDialog(DefDatabase <HediffDef> .AllDefs, new List <TableDataGetter <HediffDef> >
     {
         new TableDataGetter <HediffDef>("defName", (HediffDef h) => h.defName),
         new TableDataGetter <HediffDef>("cares", (HediffDef h) => h.countsAsAddedPartOrImplant.ToStringCheckBlank())
     }.ToArray());
 }
Exemplo n.º 28
0
 public static void TranshumanistBodyParts()
 {
     DebugTables.MakeTablesDialog(DefDatabase <HediffDef> .AllDefs, new List <TableDataGetter <HediffDef> >
     {
         new TableDataGetter <HediffDef>("defName", (HediffDef h) => h.defName),
         new TableDataGetter <HediffDef>("cares", (HediffDef h) => typeof(Hediff_Implant).IsAssignableFrom(h.hediffClass).ToStringCheckBlank())
     }.ToArray());
 }
 public static void PawnKindsBasics()
 {
     DebugTables.MakeTablesDialog(from d in DefDatabase <PawnKindDef> .AllDefs
                                  where d.race != null && d.RaceProps.Humanlike
                                  select d into k
                                  orderby(k.defaultFactionType == null) ? "" : k.defaultFactionType.label, k.combatPower
                                  select k, new TableDataGetter <PawnKindDef>("defName", (PawnKindDef d) => d.defName), new TableDataGetter <PawnKindDef>("faction", (PawnKindDef d) => (d.defaultFactionType == null) ? "" : d.defaultFactionType.defName), new TableDataGetter <PawnKindDef>("points", (PawnKindDef d) => d.combatPower.ToString("F0")), new TableDataGetter <PawnKindDef>("minAge", (PawnKindDef d) => d.minGenerationAge.ToString("F0")), new TableDataGetter <PawnKindDef>("maxAge", (PawnKindDef d) => (d.maxGenerationAge >= 10000) ? "" : d.maxGenerationAge.ToString("F0")), new TableDataGetter <PawnKindDef>("recruitDiff", (PawnKindDef d) => d.baseRecruitDifficulty.ToStringPercent()), new TableDataGetter <PawnKindDef>("itemQuality", (PawnKindDef d) => d.itemQuality.ToString()), new TableDataGetter <PawnKindDef>("forceNormGearQual", (PawnKindDef d) => d.forceNormalGearQuality.ToStringCheckBlank()), new TableDataGetter <PawnKindDef>("weapon$", (PawnKindDef d) => d.weaponMoney.ToString()), new TableDataGetter <PawnKindDef>("apparel$", (PawnKindDef d) => d.apparelMoney.ToString()), new TableDataGetter <PawnKindDef>("techHediffsCh", (PawnKindDef d) => d.techHediffsChance.ToStringPercentEmptyZero()), new TableDataGetter <PawnKindDef>("techHediffs$", (PawnKindDef d) => d.techHediffsMoney.ToString()), new TableDataGetter <PawnKindDef>("gearHealth", (PawnKindDef d) => d.gearHealthRange.ToString()), new TableDataGetter <PawnKindDef>("invNutrition", (PawnKindDef d) => d.invNutrition.ToString()), new TableDataGetter <PawnKindDef>("addictionChance", (PawnKindDef d) => d.chemicalAddictionChance.ToStringPercent()), new TableDataGetter <PawnKindDef>("combatDrugChance", (PawnKindDef d) => (!(d.combatEnhancingDrugsChance > 0f)) ? "" : d.combatEnhancingDrugsChance.ToStringPercent()), new TableDataGetter <PawnKindDef>("combatDrugCount", (PawnKindDef d) => (d.combatEnhancingDrugsCount.max <= 0) ? "" : d.combatEnhancingDrugsCount.ToString()), new TableDataGetter <PawnKindDef>("bsCryptosleepComm", (PawnKindDef d) => d.backstoryCryptosleepCommonality.ToStringPercentEmptyZero()));
 }
Exemplo n.º 30
0
 public static void UnfinishedThings()
 {
     DebugTables.MakeTablesDialog(from d in DefDatabase <ThingDef> .AllDefs
                                  where d.isUnfinishedThing
                                  orderby d.category, d.defName
                                  select d, new TableDataGetter <ThingDef>("category", (ThingDef d) => d.category.ToString()), new TableDataGetter <ThingDef>("defName", (ThingDef d) => d.defName), new TableDataGetter <ThingDef>("billGivers", (ThingDef d) => string.Join(", ", (from td in DefDatabase <RecipeDef> .AllDefsListForReading.Where((RecipeDef r) => r.unfinishedThingDef == d).SelectMany((RecipeDef r) => DefDatabase <ThingDef> .AllDefsListForReading.Where((ThingDef td) => td.AllRecipes != null && td.AllRecipes.Contains(r)))
                                                                                                                                                                                                                                                                                     select td.defName).Distinct())));
 }