private void FillTabGuest(Rect rect) { //ConceptDatabase.KnowledgeDemonstrated(ConceptDefOf.PrisonerTab, KnowledgeAmount.GuiFrame); var friends = SelPawn.GetFriendsInColony(); var friendsRequired = GuestUtility.FriendsRequired(SelPawn.MapHeld) + SelPawn.GetEnemiesInColony(); float friendPercentage = 100f * friends / friendsRequired; { var mayBuy = SelPawn.MayBuy(); var tryImprove = SelPawn.ImproveRelationship(); var tryRecruit = SelPawn.TryRecruit(); listingStandard.ColumnWidth = size.x - 20; var comp = SelPawn.GetComp <CompGuest>(); if (comp != null) { listingStandard.Gap(); DoAreaRestriction(listingStandard, comp); CheckboxLabeled(listingStandard, "MayBuy".Translate(), ref mayBuy); CheckboxLabeled(listingStandard, "ImproveRelationship".Translate(), ref tryImprove); CheckboxLabeled(listingStandard, "ShouldTryToRecruit".Translate(), ref tryRecruit); comp.mayBuy = mayBuy; comp.chat = tryImprove; comp.recruit = tryRecruit; listingStandard.Gap(50); DrawSetDefaultButton(rect); DrawSendHomeButton(rect); } if (SelPawn.Faction != null) { listingStandard.Label(txtRecruitmentPenalty + ": " + SelPawn.RecruitPenalty().ToString("##0")); listingStandard.Label(txtFactionGoodwill + ": " + SelPawn.Faction.PlayerGoodwill.ToString("##0")); } listingStandard.Gap(); listingStandard.Label(string.Format("{0}:", "FriendsRequirement".Translate(friends, friendsRequired))); listingStandard.Slider(Mathf.Clamp(friendPercentage, 0, 100), 0, 100); if (friendPercentage <= 99) { var color = GUI.color; GUI.color = Color.red; listingStandard.Label("NotEnoughFriends".Translate(SelPawn.GetMinRecruitOpinion()).AdjustedFor(SelPawn)); GUI.color = color; } else { listingStandard.Label("CanNowBeRecruited".Translate().AdjustedFor(SelPawn)); } // Will only have squadBrain while "checked in", becomes null again when guests leave var squadBrain = SelPawn.GetLord(); if (squadBrain != null) { var lordToil = squadBrain.CurLordToil as LordToil_VisitPoint; if (lordToil != null && SelPawn.Faction != null) { listingStandard.Label(txtHospitality + ":"); listingStandard.Slider(lordToil.GetVisitScore(SelPawn), 0f, 1f); } } } }