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); }
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); }