protected override bool TryExecuteWorker(IncidentParms parms)
        {
            Map map = (Map)parms.target;

            if (!base.TryResolveParms(parms))
            {
                return(false);
            }
            IntVec3 travelDest;

            if (!RCellFinder.TryFindTravelDestFrom(parms.spawnCenter, map, out travelDest))
            {
                Log.Warning("Failed to do traveler incident from " + parms.spawnCenter + ": couldn't find anywhere for the traveler to go.");
                return(false);
            }
            List <Pawn> list = base.SpawnPawns(parms);

            if (list.Count == 0)
            {
                return(false);
            }
            string text;

            if (list.Count == 1)
            {
                text = "SingleTravelerPassing".Translate(new object[]
                {
                    list[0].story.Title.ToLower(),
                    parms.faction.Name,
                    list[0].Name
                });
                text = text.AdjustedFor(list[0]);
            }
            else
            {
                text = "GroupTravelersPassing".Translate(new object[]
                {
                    parms.faction.Name
                });
            }
            Messages.Message(text, list[0], MessageTypeDefOf.NeutralEvent);
            LordJob_TravelAndExit lordJob = new LordJob_TravelAndExit(travelDest);

            LordMaker.MakeNewLord(parms.faction, lordJob, map, list);
            string empty  = string.Empty;
            string empty2 = string.Empty;

            PawnRelationUtility.Notify_PawnsSeenByPlayer_Letter(list, ref empty, ref empty2, "LetterRelatedPawnsNeutralGroup".Translate(), true, true);
            if (!empty2.NullOrEmpty())
            {
                Find.LetterStack.ReceiveLetter(empty, empty2, LetterDefOf.NeutralEvent, list[0], null);
            }
            return(true);
        }
예제 #2
0
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            Map     map = (Map)parms.target;
            bool    result;
            IntVec3 travelDest;

            if (!base.TryResolveParms(parms))
            {
                result = false;
            }
            else if (!RCellFinder.TryFindTravelDestFrom(parms.spawnCenter, map, out travelDest))
            {
                Log.Warning("Failed to do traveler incident from " + parms.spawnCenter + ": Couldn't find anywhere for the traveler to go.", false);
                result = false;
            }
            else
            {
                List <Pawn> list = base.SpawnPawns(parms);
                if (list.Count == 0)
                {
                    result = false;
                }
                else
                {
                    string text;
                    if (list.Count == 1)
                    {
                        text = "SingleTravelerPassing".Translate(new object[]
                        {
                            list[0].story.Title,
                            parms.faction.Name,
                            list[0].Name
                        });
                        text = text.AdjustedFor(list[0], "PAWN");
                    }
                    else
                    {
                        text = "GroupTravelersPassing".Translate(new object[]
                        {
                            parms.faction.Name
                        });
                    }
                    Messages.Message(text, list[0], MessageTypeDefOf.NeutralEvent, true);
                    LordJob_TravelAndExit lordJob = new LordJob_TravelAndExit(travelDest);
                    LordMaker.MakeNewLord(parms.faction, lordJob, map, list);
                    PawnRelationUtility.Notify_PawnsSeenByPlayer_Letter_Send(list, "LetterRelatedPawnsNeutralGroup".Translate(new object[]
                    {
                        Faction.OfPlayer.def.pawnsPlural
                    }), LetterDefOf.NeutralEvent, true, true);
                    result = true;
                }
            }
            return(result);
        }
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            Map map = (Map)parms.target;

            if (!TryResolveParms(parms))
            {
                return(false);
            }
            if (!RCellFinder.TryFindTravelDestFrom(parms.spawnCenter, map, out var travelDest))
            {
                Log.Warning(string.Concat("Failed to do traveler incident from ", parms.spawnCenter, ": Couldn't find anywhere for the traveler to go."));
                return(false);
            }
            List <Pawn> list = SpawnPawns(parms);

            if (list.Count == 0)
            {
                return(false);
            }
            string text;

            if (list.Count == 1)
            {
                text = "SingleTravelerPassing".Translate(list[0].story.Title, parms.faction.Name, list[0].Name.ToStringFull, list[0].Named("PAWN"));
                text = text.AdjustedFor(list[0]);
            }
            else
            {
                text = "GroupTravelersPassing".Translate(parms.faction.Name);
            }
            Messages.Message(text, list[0], MessageTypeDefOf.NeutralEvent);
            LordJob_TravelAndExit lordJob = new LordJob_TravelAndExit(travelDest);

            LordMaker.MakeNewLord(parms.faction, lordJob, map, list);
            PawnRelationUtility.Notify_PawnsSeenByPlayer_Letter_Send(list, "LetterRelatedPawnsNeutralGroup".Translate(Faction.OfPlayer.def.pawnsPlural), LetterDefOf.NeutralEvent, informEvenIfSeenBefore: true);
            return(true);
        }