private void Arrived() { if (this.arrived) { return; } this.arrived = true; if (TravelingShipsUtility.TryAddToLandedFleet(this, this.destinationTile)) { return; } if (this.arrivalAction == ShipArrivalAction.BombingRun) { MapParent parent = Find.World.worldObjects.MapParentAt(this.destinationTile); if (parent != null) { Messages.Message("MessageBombedSettlement".Translate(new object[] { parent.ToString(), parent.Faction.Name }), parent, MessageTypeDefOf.NeutralEvent); Find.World.worldObjects.Remove(parent); } this.SwitchOriginToDest(); //TravelingShips travelingShips = (TravelingShips)WorldObjectMaker.MakeWorldObject(ShipNamespaceDefOfs.TravelingSuborbitalShip); //travelingShips.ships.AddRange(this.ships); //travelingShips.Tile = this.destinationTile; //travelingShips.SetFaction(Faction.OfPlayer); //travelingShips.destinationTile = this.initialTile; //travelingShips.destinationCell = this.launchCell; //travelingShips.arriveMode = this.arriveMode; //travelingShips.arrivalAction = TravelingShipArrivalAction.EnterMapFriendly; //Find.WorldObjects.Add(travelingShips); //Find.WorldObjects.Remove(this); } else if (arrivalAction == ShipArrivalAction.Despawn) { this.Destroy(); } else { Map map = Current.Game.FindMap(this.destinationTile); if (map != null) { this.SpawnShipsInMap(map, null); } else if (!this.LandedShipHasCaravanOwner) { for (int i = 0; i < this.ships.Count; i++) { this.ships[i].GetDirectlyHeldThings().ClearAndDestroyContentsOrPassToWorld(DestroyMode.Vanish); } this.RemoveAllShip(); Find.WorldObjects.Remove(this); Messages.Message("MessageTransportPodsArrivedAndLost".Translate(), new GlobalTargetInfo(this.destinationTile), MessageTypeDefOf.NegativeEvent); } else { Settlement Settlement = Find.WorldObjects.Settlements.Find((Settlement x) => x.Tile == this.destinationTile); if (Settlement != null && Settlement.Faction != Faction.OfPlayer && this.arrivalAction != ShipArrivalAction.StayOnWorldMap) { LongEventHandler.QueueLongEvent(delegate { Map map2 = GetOrGenerateMapUtility.GetOrGenerateMap(Settlement.Tile, Find.World.info.initialMapSize, null);; string extraMessagePart = null; if (this.arrivalAction == ShipArrivalAction.EnterMapAssault && !Settlement.Faction.HostileTo(Faction.OfPlayer)) { Settlement.Faction.TrySetRelationKind(Faction.OfPlayer, FactionRelationKind.Hostile); extraMessagePart = "MessageTransportPodsArrived_BecameHostile".Translate(new object[] { Settlement.Faction.Name }).CapitalizeFirst(); } Find.TickManager.CurTimeSpeed = TimeSpeed.Paused; Current.Game.CurrentMap = map2; Find.CameraDriver.JumpToCurrentMapLoc(map2.Center); this.SpawnShipsInMap(map2, extraMessagePart); }, "GeneratingMapForNewEncounter", false, null); } else { this.SpawnCaravanAtDestinationTile(); } } } }
private void Arrived() { if (this.arrived) { return; } this.arrived = true; if (TravelingShipsUtility.TryAddToLandedFleet(this, this.destinationTile)) { return; } if (this.arrivalAction == TravelingShipArrivalAction.BombingRun) { TravelingShips travelingShips = (TravelingShips)WorldObjectMaker.MakeWorldObject(ShipNamespaceDefOfs.TravelingSuborbitalShip); travelingShips.Tile = this.destinationTile; travelingShips.SetFaction(Faction.OfPlayer); travelingShips.destinationTile = this.initialTile; travelingShips.destinationCell = this.launchCell; travelingShips.arriveMode = this.arriveMode; travelingShips.arrivalAction = TravelingShipArrivalAction.EnterMapFriendly; Find.WorldObjects.Add(travelingShips); Find.WorldObjects.Remove(this); } else { Map map = Current.Game.FindMap(this.destinationTile); if (map != null) { this.SpawnShipsInMap(map, null); } else if (!this.LandedShipHasCaravanOwner) { for (int i = 0; i < this.ships.Count; i++) { this.ships[i].GetInnerContainer().ClearAndDestroyContentsOrPassToWorld(DestroyMode.Vanish); } this.RemoveAllPods(); Find.WorldObjects.Remove(this); Messages.Message("MessageTransportPodsArrivedAndLost".Translate(), new GlobalTargetInfo(this.destinationTile), MessageSound.Negative); } else { FactionBase factionBase = Find.WorldObjects.FactionBases.Find((FactionBase x) => x.Tile == this.destinationTile); if (factionBase != null && factionBase.Faction != Faction.OfPlayer && this.arrivalAction != TravelingShipArrivalAction.StayOnWorldMap) { LongEventHandler.QueueLongEvent(delegate { Map map2 = AttackCaravanArrivalActionUtility.GenerateFactionBaseMap(factionBase); string extraMessagePart = null; if (this.arrivalAction == TravelingShipArrivalAction.EnterMapAssault && !factionBase.Faction.HostileTo(Faction.OfPlayer)) { factionBase.Faction.SetHostileTo(Faction.OfPlayer, true); extraMessagePart = "MessageTransportPodsArrived_BecameHostile".Translate(new object[] { factionBase.Faction.Name }).CapitalizeFirst(); } Find.TickManager.CurTimeSpeed = TimeSpeed.Paused; Current.Game.VisibleMap = map2; Find.CameraDriver.JumpTo(map2.Center); this.SpawnShipsInMap(map2, extraMessagePart); }, "GeneratingMapForNewEncounter", false, null); } else { this.SpawnCaravanAtDestinationTile(); } } } }