Example #1
0
        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));
        }