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