private static void PassPawnsToWorld(Map map) { bool flag = map.ParentFaction != null && map.ParentFaction.HostileTo(Faction.OfPlayer); List <Pawn> list = map.mapPawns.AllPawns.ToList(); for (int i = 0; i < list.Count; i++) { try { Pawn pawn = list[i]; if (pawn.Spawned) { pawn.DeSpawn(); } if (pawn.IsColonist && flag) { map.ParentFaction.kidnapped.KidnapPawn(pawn, null); } else { if (pawn.Faction == Faction.OfPlayer || pawn.HostFaction == Faction.OfPlayer) { PawnBanishUtility.Banish(pawn, map.Tile); } MapDeiniter.CleanUpAndPassToWorld(pawn); } } catch (Exception ex) { Log.Error("Could not despawn and pass to world " + list[i] + ": " + ex); } } }
private static void PassPawnsToWorld(Map map) { List <Pawn> list = new List <Pawn>(); List <Pawn> list2 = new List <Pawn>(); bool flag = map.ParentFaction != null && map.ParentFaction.HostileTo(Faction.OfPlayer); List <Pawn> list3 = map.mapPawns.AllPawns.ToList <Pawn>(); for (int i = 0; i < list3.Count; i++) { Find.Storyteller.Notify_PawnEvent(list3[i], AdaptationEvent.LostBecauseMapClosed, null); try { Pawn pawn = list3[i]; if (pawn.Spawned) { pawn.DeSpawn(DestroyMode.Vanish); } if (pawn.IsColonist && flag) { list.Add(pawn); map.ParentFaction.kidnapped.Kidnap(pawn, null); } else { if (pawn.Faction == Faction.OfPlayer || pawn.HostFaction == Faction.OfPlayer) { list2.Add(pawn); PawnBanishUtility.Banish(pawn, map.Tile); } MapDeiniter.CleanUpAndPassToWorld(pawn); } } catch (Exception ex) { Log.Error(string.Concat(new object[] { "Could not despawn and pass to world ", list3[i], ": ", ex }), false); } } if (list.Any <Pawn>() || list2.Any <Pawn>()) { StringBuilder stringBuilder = new StringBuilder(); if (list.Any <Pawn>()) { list.SortByDescending((Pawn x) => x.RaceProps.Humanlike); for (int j = 0; j < list.Count; j++) { stringBuilder.AppendLine(string.Concat(new string[] { " - ", list[j].LabelCap, " (", "capturedBy".Translate(map.ParentFaction.Name), ")" })); } } if (list2.Any <Pawn>()) { list2.SortByDescending((Pawn x) => x.RaceProps.Humanlike); for (int k = 0; k < list2.Count; k++) { stringBuilder.AppendLine(" - " + list2[k].LabelCap); } } string label; string text; if (map.IsPlayerHome) { label = "LetterLabelPawnsLostBecauseMapClosed_Home".Translate(); text = "LetterPawnsLostBecauseMapClosed_Home".Translate(); } else { label = "LetterLabelPawnsLostBecauseMapClosed_Caravan".Translate(); text = "LetterPawnsLostBecauseMapClosed_Caravan".Translate(); } text = text + ":\n\n" + stringBuilder.ToString().TrimEndNewlines(); Find.LetterStack.ReceiveLetter(label, text, LetterDefOf.NegativeEvent, new GlobalTargetInfo(map.Tile), null, null); } }