コード例 #1
0
        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);
        }