private void Arrive() { //Log.Message("Init State_VisitPoint "+brain.ownedPawns.Count + " - "+brain.faction.name); foreach (var pawn in lord.ownedPawns) { if (pawn.needs?.mood == null) { Data.visitorMoods.Add(pawn.thingIDNumber, 0.5f); } else { Data.visitorMoods.Add(pawn.thingIDNumber, pawn.needs.mood.CurInstantLevel); } //Log.Message("Added "+pawn.NameStringShort+": "+pawn.needs.mood.CurLevel); var tweak = 0; // -0.1f; var regularity = Mathf.Lerp(-0.5f, 0.25f, Mathf.InverseLerp(-100, 100, lord.faction.PlayerGoodwill)); // negative factions have lower expectations float expectations = tweak + regularity; Data.visitorMoods[pawn.thingIDNumber] += expectations; pawn.Arrive(); } GuestUtility.OnLordArrived(lord); // Lessons LessonAutoActivator.TeachOpportunity(ConceptDef.Named("GuestBeds"), lord.ownedPawns.FirstOrDefault(), OpportunityType.Important); if (PlayerHasSkilledNegotiator) { LessonAutoActivator.TeachOpportunity(ConceptDef.Named("RecruitGuest"), lord.ownedPawns.FirstOrDefault(), OpportunityType.GoodToKnow); } }