protected override void LeaveMap() { if (this.alreadyLeft) { base.LeaveMap(); return; } if (this.groupID < 0) { Log.Error("Drop pod left the map, but its group ID is " + this.groupID); this.Destroy(DestroyMode.Vanish); return; } if (this.destinationTile < 0) { Log.Error("Drop pod left the map, but its destination tile is " + this.destinationTile); this.Destroy(DestroyMode.Vanish); return; } Lord lord = TransporterUtility.FindLord(this.groupID, base.Map); if (lord != null) { base.Map.lordManager.RemoveLord(lord); } TravelingTransportPods travelingTransportPods = (TravelingTransportPods)WorldObjectMaker.MakeWorldObject(WorldObjectDefOf.TravelingTransportPods); travelingTransportPods.Tile = base.Map.Tile; travelingTransportPods.SetFaction(Faction.OfPlayer); travelingTransportPods.destinationTile = this.destinationTile; travelingTransportPods.destinationCell = this.destinationCell; travelingTransportPods.arriveMode = this.arriveMode; travelingTransportPods.attackOnArrival = this.attackOnArrival; Find.WorldObjects.Add(travelingTransportPods); DropPodLeaving.tmpActiveDropPods.Clear(); DropPodLeaving.tmpActiveDropPods.AddRange(base.Map.listerThings.ThingsInGroup(ThingRequestGroup.ActiveDropPod)); for (int i = 0; i < DropPodLeaving.tmpActiveDropPods.Count; i++) { DropPodLeaving dropPodLeaving = DropPodLeaving.tmpActiveDropPods[i] as DropPodLeaving; if (dropPodLeaving != null && dropPodLeaving.groupID == this.groupID) { dropPodLeaving.alreadyLeft = true; travelingTransportPods.AddPod(dropPodLeaving.Contents, true); dropPodLeaving.Contents = null; dropPodLeaving.Destroy(DestroyMode.Vanish); } } }
protected override void LeaveMap() { if (alreadyLeft || !createWorldObject) { base.LeaveMap(); return; } if (groupID < 0) { Log.Error("Drop pod left the map, but its group ID is " + groupID); Destroy(); return; } if (destinationTile < 0) { Log.Error("Drop pod left the map, but its destination tile is " + destinationTile); Destroy(); return; } Lord lord = TransporterUtility.FindLord(groupID, base.Map); if (lord != null) { base.Map.lordManager.RemoveLord(lord); } TravelingTransportPods travelingTransportPods = (TravelingTransportPods)WorldObjectMaker.MakeWorldObject(worldObjectDef ?? WorldObjectDefOf.TravelingTransportPods); travelingTransportPods.Tile = base.Map.Tile; travelingTransportPods.SetFaction(Faction.OfPlayer); travelingTransportPods.destinationTile = destinationTile; travelingTransportPods.arrivalAction = arrivalAction; Find.WorldObjects.Add(travelingTransportPods); tmpActiveDropPods.Clear(); tmpActiveDropPods.AddRange(base.Map.listerThings.ThingsInGroup(ThingRequestGroup.ActiveDropPod)); for (int i = 0; i < tmpActiveDropPods.Count; i++) { DropPodLeaving dropPodLeaving = tmpActiveDropPods[i] as DropPodLeaving; if (dropPodLeaving != null && dropPodLeaving.groupID == groupID) { dropPodLeaving.alreadyLeft = true; travelingTransportPods.AddPod(dropPodLeaving.Contents, justLeftTheMap: true); dropPodLeaving.Contents = null; dropPodLeaving.Destroy(); } } }