public virtual void Enter(Caravan caravan) { if (!mapParent.HasMap) { return; } Map map = mapParent.Map; List <Pawn> pawns = new List <Pawn>(caravan.PawnsListForReading); Pawn randomPawn = pawns[0]; Faction faction = randomPawn.Faction; if (CellFinder.TryFindRandomEdgeCellWith((IntVec3 c) => !c.Roofed(map) && c.Walkable(map) && c.Standable(map), map, 0f, out IntVec3 pos)) { foreach (var pawn in pawns) { GenSpawn.Spawn(pawn, pos, map); if (pawn.trader != null) { pawn.trader = null; } } } Find.WorldObjects.Remove(caravan); Find.LetterStack.ReceiveLetter("AssistCaravan_GifterArrivedTitle".Translate(), "AssistCaravan_GifterArrived".Translate(), LetterDefOf.PositiveEvent, new LookTargets(randomPawn)); RCellFinder.TryFindRandomSpotJustOutsideColony(randomPawn, out IntVec3 result); LordJob_CaravanBringItems lordJob = new LordJob_CaravanBringItems(result, pawns); Lord lord = LordMaker.MakeNewLord(faction, lordJob, map, pawns); }