public static void MakeDropPodAt(IntVec3 c, DropPodInfo info) { DropPodIncoming dropPodIncoming = (DropPodIncoming)ThingMaker.MakeThing(ThingDef.Named("DropPodCrashingIncoming"), null); dropPodIncoming.contents = info; GenSpawn.Spawn(dropPodIncoming, c); }
public static void DropThingGroupsNear(IntVec3 dropCenter, List <List <Thing> > thingsGroups, int openDelay = 110, bool canInstaDropDuringInit = true, bool leaveSlag = false, bool canRoofPunch = true) { foreach (List <Thing> current in thingsGroups) { IntVec3 intVec; if (!DropCellFinder.TryFindDropSpotNear(dropCenter, out intVec, true, canRoofPunch)) { Log.Warning(string.Concat(new object[] { "DropThingsNear failed to find a place to drop ", current.FirstOrDefault <Thing>(), " near ", dropCenter, ". Dropping on random square instead." })); intVec = CellFinderLoose.RandomCellWith((IntVec3 c) => c.Walkable(), 1000); } for (int i = 0; i < current.Count; i++) { current[i].SetForbidden(true, false); } if (canInstaDropDuringInit && Find.TickManager.TicksGame < 2) { foreach (Thing current2 in current) { GenPlace.TryPlaceThing(current2, intVec, ThingPlaceMode.Near); } } else { DropPodInfo dropPodInfo = new DropPodInfo(); foreach (Thing current3 in current) { dropPodInfo.containedThings.Add(current3); } dropPodInfo.openDelay = openDelay; dropPodInfo.leaveSlag = leaveSlag; MakeDropPodAt(intVec, dropPodInfo); } } }