public void ArriveTunnel(List <Pawn> pawns)
 {
     for (int i = 0; i < pawns.Count; i++)
     {
         //    IntVec3 dropCenter = map.listerBuildings.allBuildingsColonist.FindAll(x => x.TryGetCompFast<CompPowerPlant>() != null).RandomElement().Position;
         IntVec3 dropCenter;
         if (DropCellFinder.TryFindRaidDropCenterClose(out dropCenter, map))
         {
             DeepStrikeUtility.DropThingsNear(dropCenter, map, Gen.YieldSingle <Thing>(pawns[i]), 50, false, false, true, DeepStrikeType.Tunnel);
         }
     }
     Tunnellers.Clear();
 }
        public void DoStrike(DeepStrike strike)
        {
            string str = string.Empty;

            foreach (var item in strike.Members)
            {
                switch (item.DeepStrike().pawnsArrivalMode)
                {
                case DeepStrikeType.DropPod:
                    Droppers.Add(item);
                    break;

                case DeepStrikeType.DropPara:
                    break;

                case DeepStrikeType.DropShip:
                    break;

                case DeepStrikeType.Fly:
                    Flyers.Add(item);
                    break;

                case DeepStrikeType.Teleport:
                    Teleporters.Add(item);
                    break;

                case DeepStrikeType.Tunnel:
                    Tunnellers.Add(item);
                    break;

                default:
                    break;
                }
            }
            List <Pawn> pawns = new List <Pawn>();

            if (!Droppers.NullOrEmpty())
            {
                str += str == string.Empty ? DeepStrikeUtility.DeepstrikeArrivalmode(DeepStrikeType.DropPod) : ", " + DeepStrikeUtility.DeepstrikeArrivalmode(DeepStrikeType.DropPod);
                pawns.AddRange(Droppers);
                ArriveDropPod(Droppers);
                Droppers.Clear();
            }
            if (!Flyers.NullOrEmpty())
            {
                str += str == string.Empty ? DeepStrikeUtility.DeepstrikeArrivalmode(DeepStrikeType.Fly) : ", " + DeepStrikeUtility.DeepstrikeArrivalmode(DeepStrikeType.Fly);
                pawns.AddRange(Flyers);
                ArriveFly(Flyers);
                Flyers.Clear();
            }
            if (!Teleporters.NullOrEmpty())
            {
                str += str == string.Empty ? DeepStrikeUtility.DeepstrikeArrivalmode(DeepStrikeType.Teleport) : ", " + DeepStrikeUtility.DeepstrikeArrivalmode(DeepStrikeType.Teleport);
                pawns.AddRange(Teleporters);
                ArriveTeleport(Teleporters);
                Teleporters.Clear();
            }
            if (!Tunnellers.NullOrEmpty())
            {
                str += str == string.Empty ? DeepStrikeUtility.DeepstrikeArrivalmode(DeepStrikeType.Tunnel) : ", " + DeepStrikeUtility.DeepstrikeArrivalmode(DeepStrikeType.Tunnel);
                pawns.AddRange(Tunnellers);
                ArriveTunnel(Tunnellers);
                Tunnellers.Clear();
            }
            Find.LetterStack.ReceiveLetter("AdeptusMechanicus.DeepStrike_Incomming".Translate(pawns.Find(x => x.Faction != null).Faction.def.pawnSingular), "AdeptusMechanicus.DeepStrike_Incomming_Letter".Translate(pawns.Find(x => x.Faction != null).Faction.def.pawnsPlural, str), LetterDefOf.ThreatBig, pawns, pawns.Find(x => x.Faction != null).Faction, null);
            strike.struck = true;
        }