public string CustomDescriptionString(string baseDescription)
        {
            StringBuilder builder = new StringBuilder(baseDescription);

            builder.AppendLine();
            builder.AppendLine();
            if (sourceName != null)
            {
                builder.AppendLine("QE_GenomeSequencerDescription_Name".Translate() + ": " + sourceName);
            }
            if (kindDef?.race != null)
            {
                builder.AppendLine("QE_GenomeSequencerDescription_Race".Translate() + ": " + kindDef.race.LabelCap);
            }
            if (backStoryChild != null)
            {
                builder.AppendLine("QE_BrainScanDescription_BackshortChild".Translate() + ": " + backStoryChild.title.CapitalizeFirst());
            }
            if (backStoryAdult != null)
            {
                builder.AppendLine("QE_BrainScanDescription_BackshortAdult".Translate() + ": " + backStoryAdult.title.CapitalizeFirst());
            }

            //Skills
            if (!isAnimal && skills.Count > 0)
            {
                builder.AppendLine("QE_BrainScanDescription_Skills".Translate());
                foreach (ComparableSkillRecord skill in skills.OrderBy(skillRecord => skillRecord.def.index))
                {
                    builder.AppendLine(skill.ToString());
                }
            }

            if (isAnimal)
            {
                builder.AppendLine("QE_BrainScanDescription_Training".Translate());
                foreach (var training in trainingSteps.OrderBy(trainingPair => trainingPair.Key.index))
                {
                    builder.AppendLine("    " + training.Key.LabelCap + ": " + training.Value);
                }
            }

            //Hediffs
            HediffInfo.GenerateDescForHediffList(ref builder, hediffInfos);

            return(builder.ToString().TrimEndNewlines());
        }
        /// <summary>
        /// This helper function appends the data stored in the genome sequence to the item description in-game.
        /// </summary>
        public string CustomDescriptionString(string baseDescription)
        {
            StringBuilder builder = new StringBuilder();

            if (IsValidTemplate())
            {
                builder.AppendLine(baseDescription);
                builder.AppendLine();
                builder.AppendLine();

                builder.AppendLine("QE_GenomeSequencerDescription_Name".Translate() + ": " + sourceName);
                builder.AppendLine("QE_GenomeSequencerDescription_Race".Translate() + ": " + pawnKindDef.race.LabelCap);
                builder.AppendLine("QE_GenomeSequencerDescription_Gender".Translate() + ": " + GenderUtility.GetLabel(gender, pawnKindDef.race.race.Animal).CapitalizeFirst());

                if (hair != null && hair.texPath != null)
                {
                    builder.AppendLine("QE_GenomeSequencerDescription_Hair".Translate() + ": " + hair.ToString());
                }

                //Traits
                if (traits.Count > 0)
                {
                    builder.AppendLine("QE_GenomeSequencerDescription_Traits".Translate());
                    foreach (ExposedTraitEntry traitEntry in traits)
                    {
                        builder.AppendLine("    " + traitEntry.def.DataAtDegree(traitEntry.degree).label.CapitalizeFirst());
                    }
                }

                //Hediffs
                HediffInfo.GenerateDescForHediffList(ref builder, hediffInfos);
            }
            else
            {
                builder.AppendLine("QE_BlankGenomeTemplateDescription".Translate());
            }

            return(builder.ToString().TrimEndNewlines());
        }