public static void Settle(Map map)
        {
            MapParent  parent     = map.Parent;
            Settlement settlement = SettleUtility.AddNewHome(map.Tile, Faction.OfPlayer);

            map.info.parent = settlement;
            parent?.Destroy();
            Messages.Message("MessageSettledInExistingMap".Translate(), settlement, MessageTypeDefOf.PositiveEvent, historical: false);
            tmpPlayerPawns.Clear();
            tmpPlayerPawns.AddRange(map.mapPawns.AllPawnsSpawned.Where((Pawn x) => x.Faction == Faction.OfPlayer || x.HostFaction == Faction.OfPlayer));
            CaravanEnterMapUtility.DropAllInventory(tmpPlayerPawns);
            tmpPlayerPawns.Clear();
            List <Pawn> prisonersOfColonySpawned = map.mapPawns.PrisonersOfColonySpawned;

            for (int i = 0; i < prisonersOfColonySpawned.Count; i++)
            {
                prisonersOfColonySpawned[i].guest.WaitInsteadOfEscapingForDefaultTicks();
            }
        }
        public static void Enter(Caravan caravan, Map map, Func <Pawn, IntVec3> spawnCellGetter, CaravanDropInventoryMode dropInventoryMode = CaravanDropInventoryMode.DoNotDrop, bool draftColonists = false)
        {
            CaravanEnterMapUtility.tmpPawns.Clear();
            CaravanEnterMapUtility.tmpPawns.AddRange(caravan.PawnsListForReading);
            for (int i = 0; i < CaravanEnterMapUtility.tmpPawns.Count; i++)
            {
                IntVec3 loc = spawnCellGetter(CaravanEnterMapUtility.tmpPawns[i]);
                GenSpawn.Spawn(CaravanEnterMapUtility.tmpPawns[i], loc, map, Rot4.Random, false);
            }
            switch (dropInventoryMode)
            {
            case CaravanDropInventoryMode.DropInstantly:
                CaravanEnterMapUtility.DropAllInventory(CaravanEnterMapUtility.tmpPawns);
                break;

            case CaravanDropInventoryMode.UnloadIndividually:
                for (int j = 0; j < CaravanEnterMapUtility.tmpPawns.Count; j++)
                {
                    CaravanEnterMapUtility.tmpPawns[j].inventory.UnloadEverything = true;
                }
                break;
            }
            if (draftColonists)
            {
                CaravanEnterMapUtility.DraftColonists(CaravanEnterMapUtility.tmpPawns);
            }
            if (map.IsPlayerHome)
            {
                for (int k = 0; k < CaravanEnterMapUtility.tmpPawns.Count; k++)
                {
                    if (CaravanEnterMapUtility.tmpPawns[k].IsPrisoner)
                    {
                        CaravanEnterMapUtility.tmpPawns[k].guest.WaitInsteadOfEscapingForDefaultTicks();
                    }
                }
            }
            caravan.RemoveAllPawns();
            if (caravan.Spawned)
            {
                Find.WorldObjects.Remove(caravan);
            }
            CaravanEnterMapUtility.tmpPawns.Clear();
        }
예제 #3
0
        public static void Settle(Map map)
        {
            MapParent  parent     = map.Parent;
            Settlement settlement = SettleUtility.AddNewHome(map.Tile, Faction.OfPlayer);

            map.info.parent = settlement;
            if (parent != null)
            {
                Find.WorldObjects.Remove(parent);
            }
            Messages.Message("MessageSettledInExistingMap".Translate(), settlement, MessageTypeDefOf.PositiveEvent, false);
            SettleInExistingMapUtility.tmpPlayerPawns.Clear();
            SettleInExistingMapUtility.tmpPlayerPawns.AddRange(from x in map.mapPawns.AllPawnsSpawned
                                                               where x.Faction == Faction.OfPlayer || x.HostFaction == Faction.OfPlayer
                                                               select x);
            CaravanEnterMapUtility.DropAllInventory(SettleInExistingMapUtility.tmpPlayerPawns);
            SettleInExistingMapUtility.tmpPlayerPawns.Clear();
            List <Pawn> prisonersOfColonySpawned = map.mapPawns.PrisonersOfColonySpawned;

            for (int i = 0; i < prisonersOfColonySpawned.Count; i++)
            {
                prisonersOfColonySpawned[i].guest.WaitInsteadOfEscapingForDefaultTicks();
            }
        }