public static void ShowWandererJoinDialog(Pawn pawn, IntVec3 spawnSpot, Map map) { // Added option to reject wanderer string textAsk = "WandererInitial".Translate(pawn.Faction.Name, pawn.GetTitle().ToLower(), GenText.ToCommaList(pawn.story.traits.allTraits.Select(t => t.Label))); textAsk = textAsk.AdjustedFor(pawn); PawnRelationUtility.TryAppendRelationsWithColonistsInfo(ref textAsk, pawn); DiaNode nodeAsk = new DiaNode(textAsk); var textAccept = "RescuedInitial_Accept".Translate(); textAccept = textAccept.AdjustedFor(pawn); DiaOption optionAccept = new DiaOption(textAccept); optionAccept.action = () => { if (Find.WorldPawns.Contains(pawn)) { Find.WorldPawns.RemovePawn(pawn); } GenSpawn.Spawn(pawn, spawnSpot, map); if (pawn.Faction != Faction.OfPlayer) { if (pawn.Faction != null && pawn == pawn.Faction.leader) { pawn.Faction.GenerateNewLeader(); } pawn.SetFaction(Faction.OfPlayer); } Find.CameraDriver.JumpTo(pawn.Position); }; optionAccept.resolveTree = true; nodeAsk.options.Add(optionAccept); var textReject = "RescuedInitial_Reject".Translate(); textReject = textReject.AdjustedFor(pawn); DiaOption optionReject = new DiaOption(textReject); optionReject.action = () => { GuestUtility.BreakupRelations(pawn); }; optionReject.resolveTree = true; nodeAsk.options.Add(optionReject); Find.WindowStack.Add(new Dialog_NodeTree(nodeAsk, true)); }