private void SetInfoText() { traitEntries.ForEach(delegate(GameObject tl) { UnityEngine.Object.Destroy(tl.gameObject); }); traitEntries.Clear(); characterNameTitle.SetTitle(stats.Name); for (int i = 1; i < stats.Traits.Count; i++) { Trait trait = stats.Traits[i]; LocText locText = (!trait.PositiveTrait) ? badTrait : goodTrait; LocText locText2 = Util.KInstantiateUI <LocText>(locText.gameObject, locText.transform.parent.gameObject, false); locText2.gameObject.SetActive(true); locText2.text = stats.Traits[i].Name; locText2.color = ((!trait.PositiveTrait) ? Constants.NEGATIVE_COLOR : Constants.POSITIVE_COLOR); locText2.GetComponent <ToolTip>().SetSimpleTooltip(trait.description); for (int num = 0; num < trait.SelfModifiers.Count; num++) { GameObject gameObject = Util.KInstantiateUI(attributeLabelTrait.gameObject, locText.transform.parent.gameObject, false); gameObject.SetActive(true); LocText componentInChildren = gameObject.GetComponentInChildren <LocText>(); string format = (!(trait.SelfModifiers[num].Value > 0f)) ? UI.CHARACTERCONTAINER_ATTRIBUTEMODIFIER_DECREASED : UI.CHARACTERCONTAINER_ATTRIBUTEMODIFIER_INCREASED; componentInChildren.text = string.Format(format, Strings.Get("STRINGS.DUPLICANTS.ATTRIBUTES." + trait.SelfModifiers[num].AttributeId.ToUpper() + ".NAME")); if (!(trait.SelfModifiers[num].AttributeId == "GermResistance")) { goto IL_01bd; } goto IL_01bd; IL_01bd: Klei.AI.Attribute attribute = Db.Get().Attributes.Get(trait.SelfModifiers[num].AttributeId); string text = attribute.Description; string text2 = text; text = text2 + "\n\n" + Strings.Get("STRINGS.DUPLICANTS.ATTRIBUTES." + trait.SelfModifiers[num].AttributeId.ToUpper() + ".NAME") + ": " + trait.SelfModifiers[num].GetFormattedString(null); List <AttributeConverter> convertersForAttribute = Db.Get().AttributeConverters.GetConvertersForAttribute(attribute); for (int j = 0; j < convertersForAttribute.Count; j++) { string text3 = convertersForAttribute[j].DescriptionFromAttribute(convertersForAttribute[j].multiplier * trait.SelfModifiers[num].Value, null); if (text3 != string.Empty) { text = text + "\n • " + text3; } } componentInChildren.GetComponent <ToolTip>().SetSimpleTooltip(text); traitEntries.Add(gameObject); } if (trait.disabledChoreGroups != null) { GameObject gameObject2 = Util.KInstantiateUI(attributeLabelTrait.gameObject, locText.transform.parent.gameObject, false); gameObject2.SetActive(true); LocText componentInChildren2 = gameObject2.GetComponentInChildren <LocText>(); componentInChildren2.text = trait.GetDisabledChoresString(false); string text4 = string.Empty; string text5 = string.Empty; for (int k = 0; k < trait.disabledChoreGroups.Length; k++) { if (k > 0) { text4 += ", "; text5 += "\n"; } text4 += trait.disabledChoreGroups[k].Name; text5 += trait.disabledChoreGroups[k].description; } componentInChildren2.GetComponent <ToolTip>().SetSimpleTooltip(string.Format(DUPLICANTS.TRAITS.CANNOT_DO_TASK_TOOLTIP, text4, text5)); traitEntries.Add(gameObject2); } if (trait.ignoredEffects != null && trait.ignoredEffects.Length > 0) { GameObject gameObject3 = Util.KInstantiateUI(attributeLabelTrait.gameObject, locText.transform.parent.gameObject, false); gameObject3.SetActive(true); LocText componentInChildren3 = gameObject3.GetComponentInChildren <LocText>(); componentInChildren3.text = trait.GetIgnoredEffectsString(false); string text6 = string.Empty; string text7 = string.Empty; for (int l = 0; l < trait.ignoredEffects.Length; l++) { if (l > 0) { text6 += ", "; text7 += "\n"; } text6 += Strings.Get("STRINGS.DUPLICANTS.MODIFIERS." + trait.ignoredEffects[l].ToUpper() + ".NAME"); text7 += Strings.Get("STRINGS.DUPLICANTS.MODIFIERS." + trait.ignoredEffects[l].ToUpper() + ".CAUSE"); } componentInChildren3.GetComponent <ToolTip>().SetSimpleTooltip(string.Format(DUPLICANTS.TRAITS.IGNORED_EFFECTS_TOOLTIP, text6, text7)); traitEntries.Add(gameObject3); } if (Strings.TryGet("STRINGS.DUPLICANTS.TRAITS." + trait.Id.ToUpper() + ".SHORT_DESC", out StringEntry result)) { GameObject gameObject4 = Util.KInstantiateUI(attributeLabelTrait.gameObject, locText.transform.parent.gameObject, false); gameObject4.SetActive(true); LocText componentInChildren4 = gameObject4.GetComponentInChildren <LocText>(); componentInChildren4.text = result.String; componentInChildren4.GetComponent <ToolTip>().SetSimpleTooltip(Strings.Get("STRINGS.DUPLICANTS.TRAITS." + trait.Id.ToUpper() + ".SHORT_DESC_TOOLTIP")); traitEntries.Add(gameObject4); } traitEntries.Add(locText2.gameObject); } aptitudeEntries.ForEach(delegate(GameObject al) { UnityEngine.Object.Destroy(al.gameObject); }); aptitudeEntries.Clear(); expectationLabels.ForEach(delegate(LocText el) { UnityEngine.Object.Destroy(el.gameObject); }); expectationLabels.Clear(); foreach (KeyValuePair <SkillGroup, float> skillAptitude in stats.skillAptitudes) { if (skillAptitude.Value != 0f) { SkillGroup skillGroup = Db.Get().SkillGroups.Get(skillAptitude.Key.IdHash); if (skillGroup == null) { Debug.LogWarningFormat("Role group not found for aptitude: {0}", skillAptitude.Key); } else { GameObject gameObject5 = Util.KInstantiateUI(aptitudeEntry.gameObject, aptitudeEntry.transform.parent.gameObject, false); LocText locText3 = Util.KInstantiateUI <LocText>(aptitudeLabel.gameObject, gameObject5, false); locText3.gameObject.SetActive(true); locText3.text = skillGroup.Name; string empty = string.Empty; if (skillGroup.choreGroupID != string.Empty) { ChoreGroup choreGroup = Db.Get().ChoreGroups.Get(skillGroup.choreGroupID); empty = string.Format(DUPLICANTS.ROLES.GROUPS.APTITUDE_DESCRIPTION_CHOREGROUP, skillGroup.Name, DUPLICANTSTATS.APTITUDE_BONUS, choreGroup.description); } else { empty = string.Format(DUPLICANTS.ROLES.GROUPS.APTITUDE_DESCRIPTION, skillGroup.Name, DUPLICANTSTATS.APTITUDE_BONUS); } locText3.GetComponent <ToolTip>().SetSimpleTooltip(empty); float num2 = (float)DUPLICANTSTATS.APTITUDE_ATTRIBUTE_BONUSES[stats.skillAptitudes.Count - 1]; LocText locText4 = Util.KInstantiateUI <LocText>(attributeLabelAptitude.gameObject, gameObject5, false); locText4.gameObject.SetActive(true); locText4.text = "+" + num2 + " " + skillAptitude.Key.relevantAttributes[0].Name; string text8 = skillAptitude.Key.relevantAttributes[0].Description; string text2 = text8; text8 = text2 + "\n\n" + skillAptitude.Key.relevantAttributes[0].Name + ": +" + DUPLICANTSTATS.APTITUDE_ATTRIBUTE_BONUSES[stats.skillAptitudes.Count - 1]; List <AttributeConverter> convertersForAttribute2 = Db.Get().AttributeConverters.GetConvertersForAttribute(skillAptitude.Key.relevantAttributes[0]); for (int m = 0; m < convertersForAttribute2.Count; m++) { text8 = text8 + "\n • " + convertersForAttribute2[m].DescriptionFromAttribute(convertersForAttribute2[m].multiplier * num2, null); } locText4.GetComponent <ToolTip>().SetSimpleTooltip(text8); gameObject5.gameObject.SetActive(true); aptitudeEntries.Add(gameObject5); } } } if (stats.stressTrait != null) { LocText locText5 = Util.KInstantiateUI <LocText>(expectationRight.gameObject, expectationRight.transform.parent.gameObject, false); locText5.gameObject.SetActive(true); locText5.text = string.Format(UI.CHARACTERCONTAINER_STRESSTRAIT, stats.stressTrait.Name); locText5.GetComponent <ToolTip>().SetSimpleTooltip(stats.stressTrait.GetTooltip()); expectationLabels.Add(locText5); } if (stats.congenitaltrait != null) { LocText locText6 = Util.KInstantiateUI <LocText>(expectationRight.gameObject, expectationRight.transform.parent.gameObject, false); locText6.gameObject.SetActive(true); locText6.text = string.Format(UI.CHARACTERCONTAINER_CONGENITALTRAIT, stats.congenitaltrait.Name); locText6.GetComponent <ToolTip>().SetSimpleTooltip(stats.congenitaltrait.GetTooltip()); expectationLabels.Add(locText6); } description.text = stats.personality.description; }