Example #1
0
        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);
                }
            }
        }
Example #2
0
        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();
                }
            }
        }