public static void LogPlantProportions() { Dictionary <ThingDef, float> dictionary = new Dictionary <ThingDef, float>(); foreach (ThingDef key in Find.CurrentMap.Biome.AllWildPlants) { dictionary.Add(key, 0f); } float num = 0f; foreach (IntVec3 c in Find.CurrentMap.AllCells) { Plant plant = c.GetPlant(Find.CurrentMap); if (plant != null && dictionary.ContainsKey(plant.def)) { Dictionary <ThingDef, float> dictionary2; ThingDef def; (dictionary2 = dictionary)[def = plant.def] = dictionary2[def] + 1f; num += 1f; } } foreach (ThingDef thingDef in Find.CurrentMap.Biome.AllWildPlants) { Dictionary <ThingDef, float> dictionary2; ThingDef key2; (dictionary2 = dictionary)[key2 = thingDef] = dictionary2[key2] / num; } Dictionary <ThingDef, float> dictionary3 = PlantUtility.CalculateDesiredPlantProportions(Find.CurrentMap.Biome); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendLine("PLANT EXPECTED FOUND"); foreach (ThingDef thingDef2 in Find.CurrentMap.Biome.AllWildPlants) { stringBuilder.AppendLine(string.Concat(new string[] { thingDef2.LabelCap, " ", dictionary3[thingDef2].ToStringPercent(), " ", dictionary[thingDef2].ToStringPercent() })); } Log.Message(stringBuilder.ToString(), false); }