public static TaleData_Pawn GenerateFrom(Pawn pawn) { TaleData_Pawn taleData_Pawn = new TaleData_Pawn(); taleData_Pawn.pawn = pawn; taleData_Pawn.kind = pawn.kindDef; taleData_Pawn.faction = pawn.Faction; taleData_Pawn.gender = (pawn.RaceProps.hasGenders ? pawn.gender : Gender.None); taleData_Pawn.age = pawn.ageTracker.AgeBiologicalYears; taleData_Pawn.chronologicalAge = pawn.ageTracker.AgeChronologicalYears; taleData_Pawn.everBeenColonistOrTameAnimal = PawnUtility.EverBeenColonistOrTameAnimal(pawn); taleData_Pawn.everBeenQuestLodger = PawnUtility.EverBeenQuestLodger(pawn); taleData_Pawn.isFactionLeader = (pawn.Faction != null && pawn.Faction.leader == pawn); if (pawn.royalty != null) { taleData_Pawn.royalTitles = new List <RoyalTitle>(); foreach (RoyalTitle item in pawn.royalty.AllTitlesForReading) { taleData_Pawn.royalTitles.Add(new RoyalTitle(item)); } } TaggedString text = ""; PawnRelationUtility.TryAppendRelationsWithColonistsInfo(ref text, pawn); taleData_Pawn.relationInfo = text.Resolve(); if (pawn.story != null) { taleData_Pawn.title = pawn.story.title; } if (pawn.RaceProps.Humanlike) { taleData_Pawn.name = pawn.Name; if (pawn.equipment.Primary != null) { taleData_Pawn.primaryEquipment = pawn.equipment.Primary.def; } if (pawn.apparel.WornApparel.TryRandomElement(out Apparel result)) { taleData_Pawn.notableApparel = result.def; } } return(taleData_Pawn); }