public override void Arrived(int tile) { LongEventHandler.QueueLongEvent(delegate() { Map map = GetOrGenerateMapUtility.GetOrGenerateMap(tile, null); //MAP INDEX BUG TaggedString label = "LetterLabelCaravanEnteredEnemyBase".Translate(); TaggedString text = "LetterTransportPodsLandedInEnemyBase".Translate(parent.Label).CapitalizeFirst(); if (parent is Settlement settlement) { SettlementUtility.AffectRelationsOnAttacked(settlement, ref text); } if (!parent.HasMap) { Find.TickManager.Notify_GeneratedPotentiallyHostileMap(); PawnRelationUtility.Notify_PawnsSeenByPlayer_Letter(map.mapPawns.AllPawns, ref label, ref text, "LetterRelatedPawnsInMapWherePlayerLanded".Translate(Faction.OfPlayer.def.pawnsPlural), true, true); } AerialVehicleInFlight aerialVehicle = vehicle.GetAerialVehicle(); CameraJumper.TryJump(map.Center, map); StrafeTargeter.Instance.BeginTargeting(vehicle, vehicle.CompVehicleLauncher.launchProtocol, delegate(IntVec3 start, IntVec3 end) { VehicleSkyfaller_FlyOver skyfaller = VehicleSkyfallerMaker.MakeSkyfallerFlyOver(vehicle.CompVehicleLauncher.Props.skyfallerStrafing, vehicle, start, end); skyfaller.aerialVehicle = aerialVehicle; Thing thing = GenSpawn.Spawn(skyfaller, start, parent.Map, Rot8.North); //REDO - Other rotations? }, null, null, null, true); aerialVehicle.Destroy(); }, "GeneratingMap", false, null, true); }
private void DoArrivalAction(Caravan caravan) { Map orGenerateMap = GetOrGenerateMapUtility.GetOrGenerateMap(this.target.Tile, null); CaravanEnterMapUtility.Enter(caravan, orGenerateMap, CaravanEnterMode.Edge, CaravanDropInventoryMode.UnloadIndividually, false, null); Find.TickManager.CurTimeSpeed = TimeSpeed.Paused; }
private static bool Prefix(Site ___site, PawnsArrivalModeDef ___arrivalMode, List <ActiveDropPodInfo> pods) { if (___site.parts == null) { return(true); } foreach (var part in ___site.parts) { if (part.def != MFI_DefOf.MFI_HuntersLodgePart) { continue; } var lookTarget = TransportPodsArrivalActionUtility.GetLookTarget(pods); var num = !___site.HasMap; var orGenerateMap = GetOrGenerateMapUtility.GetOrGenerateMap(___site.Tile, ___site.PreferredMapSize, null); if (num) { Find.TickManager.Notify_GeneratedPotentiallyHostileMap(); PawnRelationUtility.Notify_PawnsSeenByPlayer_Letter_Send(orGenerateMap.mapPawns.AllPawns, "LetterRelatedPawnsInMapWherePlayerLanded".Translate(Faction.OfPlayer.def.pawnsPlural), LetterDefOf.NeutralEvent, true); } Messages.Message("MessageTransportPodsArrived".Translate(), lookTarget, MessageTypeDefOf.TaskCompletion); ___arrivalMode.Worker.TravelingTransportPodsArrived(pods, orGenerateMap); return(false); } return(true); }
public static void Postfix(CaravanArrivalAction_VisitSettlement __instance, Caravan caravan, Settlement ___settlement) { if (!___settlement.HasMap) { LongEventHandler.QueueLongEvent(delegate() { var filePreset = SettlementGeneration.GetPresetFor(___settlement, out LocationDef locationDef); if (filePreset != null) { customSettlementGeneration = true; locationData = new LocationData { file = filePreset, locationDef = locationDef }; } Map orGenerateMap = GetOrGenerateMapUtility.GetOrGenerateMap(___settlement.Tile, null); CaravanEnterMapUtility.Enter(caravan, orGenerateMap, CaravanEnterMode.Edge, 0, true, null); if (filePreset != null) { SettlementGeneration.InitialiseLocationGeneration(orGenerateMap, filePreset, locationDef); } }, "GeneratingMapForNewEncounter", false, null, true); return; } Map orGenerateMap2 = GetOrGenerateMapUtility.GetOrGenerateMap(___settlement.Tile, null); CaravanEnterMapUtility.Enter(caravan, orGenerateMap2, CaravanEnterMode.Edge, 0, true, null); }
private void DoEnter(Caravan caravan, Site site) { Pawn t = caravan.PawnsListForReading[0]; bool flag = site.Faction == null || site.Faction.HostileTo(Faction.OfPlayer); bool flag2 = !site.HasMap; Map orGenerateMap = GetOrGenerateMapUtility.GetOrGenerateMap(site.Tile, SiteCoreWorker.MapSize, null); if (flag2) { Find.TickManager.Notify_GeneratedPotentiallyHostileMap(); PawnRelationUtility.Notify_PawnsSeenByPlayer_Letter_Send(orGenerateMap.mapPawns.AllPawns, "LetterRelatedPawnsSite".Translate(Faction.OfPlayer.def.pawnsPlural), LetterDefOf.NeutralEvent, true, true); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append("LetterCaravanEnteredMap".Translate(caravan.Label, site).CapitalizeFirst()); LetterDef letterDef; LookTargets lookTargets; this.AppendThreatInfo(stringBuilder, site, orGenerateMap, out letterDef, out lookTargets); Find.LetterStack.ReceiveLetter("LetterLabelCaravanEnteredMap".Translate(site), stringBuilder.ToString(), letterDef ?? LetterDefOf.NeutralEvent, (!lookTargets.IsValid()) ? t : lookTargets, null, null); } else { Find.LetterStack.ReceiveLetter("LetterLabelCaravanEnteredMap".Translate(site), "LetterCaravanEnteredMap".Translate(caravan.Label, site).CapitalizeFirst(), LetterDefOf.NeutralEvent, t, null, null); } Map map = orGenerateMap; CaravanEnterMode enterMode = CaravanEnterMode.Edge; bool draftColonists = flag; CaravanEnterMapUtility.Enter(caravan, map, enterMode, CaravanDropInventoryMode.DoNotDrop, draftColonists, null); }
private void DoEnter(Caravan caravan, Site site) { Pawn t = caravan.PawnsListForReading[0]; bool flag = site.Faction == null || site.Faction.HostileTo(Faction.OfPlayer); bool flag2 = !site.HasMap; Map orGenerateMap = GetOrGenerateMapUtility.GetOrGenerateMap(site.Tile, SiteCoreWorker.MapSize, null); Messages.Message("MessageCaravanArrivedAtDestination".Translate(new object[] { caravan.Label }).CapitalizeFirst(), t, MessageTypeDefOf.TaskCompletion, true); if (flag2) { Find.TickManager.Notify_GeneratedPotentiallyHostileMap(); PawnRelationUtility.Notify_PawnsSeenByPlayer_Letter_Send(orGenerateMap.mapPawns.AllPawns, "LetterRelatedPawnsSite".Translate(new object[] { Faction.OfPlayer.def.pawnsPlural }), LetterDefOf.NeutralEvent, true, true); } Map map = orGenerateMap; CaravanEnterMode enterMode = CaravanEnterMode.Edge; bool draftColonists = flag; CaravanEnterMapUtility.Enter(caravan, map, enterMode, CaravanDropInventoryMode.DoNotDrop, draftColonists, null); }
private void Arrived() { Cthulhu.Utility.DebugReport("Arrived"); if (this.arrived) { return; } this.arrived = true; Map map = Current.Game.FindMap(this.destinationTile); if (map != null) { this.SpawnDropPodsInMap(map, null); } else if (!this.PodsHaveAnyPotentialCaravanOwner) { Caravan caravan = Find.WorldObjects.PlayerControlledCaravanAt(this.destinationTile); if (caravan != null) { this.GivePodContentsToCaravan(caravan); } else { for (int i = 0; i < this.pods.Count; i++) { this.pods[i].innerContainer.ClearAndDestroyContentsOrPassToWorld(DestroyMode.Vanish); } this.RemoveAllPods(); Find.WorldObjects.Remove(this); Messages.Message("MessageTransportPodsArrivedAndLost".Translate(), new GlobalTargetInfo(this.destinationTile), MessageTypeDefOf.NegativeEvent); } } else { MapParent mapParent = Find.WorldObjects.MapParentAt(this.destinationTile); if (mapParent != null && this.attackOnArrival) { LongEventHandler.QueueLongEvent(delegate { Map orGenerateMap = GetOrGenerateMapUtility.GetOrGenerateMap(mapParent.Tile, null); string extraMessagePart = null; if (!mapParent.Faction.HostileTo(Faction.OfPlayer)) { mapParent.Faction.TrySetRelationKind(Faction.OfPlayer, FactionRelationKind.Hostile); //mapParent.Faction.SetHostileTo(Faction.OfPlayer, true); extraMessagePart = "MessageTransportPodsArrived_BecameHostile".Translate( mapParent.Faction.Name ).CapitalizeFirst(); } Find.TickManager.CurTimeSpeed = TimeSpeed.Paused; this.SpawnDropPodsInMap(mapParent.Map, extraMessagePart); }, "GeneratingMapForNewEncounter", false, null); } else { this.SpawnCaravanAtDestinationTile(); } } }
public override void Arrived(List <ActiveDropPodInfo> pods, int tile) { Thing lookTarget = TransportPodsArrivalActionUtility.GetLookTarget(pods); bool flag = !mapParent.HasMap; Map orGenerateMap = GetOrGenerateMapUtility.GetOrGenerateMap(tile, null); Settlement settlement; if ((settlement = orGenerateMap.Parent as Settlement) != null && settlement.Faction != Faction.OfPlayer) { TaggedString letterLabel = "LetterLabelCaravanEnteredEnemyBase".Translate(); TaggedString letterText = "LetterShuttleLandedInEnemyBase".Translate(settlement.Label).CapitalizeFirst(); SettlementUtility.AffectRelationsOnAttacked_NewTmp(settlement, ref letterText); if (flag) { Find.TickManager.Notify_GeneratedPotentiallyHostileMap(); PawnRelationUtility.Notify_PawnsSeenByPlayer_Letter(orGenerateMap.mapPawns.AllPawns, ref letterLabel, ref letterText, "LetterRelatedPawnsInMapWherePlayerLanded".Translate(Faction.OfPlayer.def.pawnsPlural), informEvenIfSeenBefore: true); } Find.LetterStack.ReceiveLetter(letterLabel, letterText, LetterDefOf.NeutralEvent, lookTarget, settlement.Faction); } foreach (ActiveDropPodInfo pod in pods) { pod.missionShuttleHome = missionShuttleHome; pod.missionShuttleTarget = missionShuttleTarget; pod.sendAwayIfQuestFinished = sendAwayIfQuestFinished; pod.questTags = questTags; } PawnsArrivalModeDefOf.Shuttle.Worker.TravelingTransportPodsArrived(pods, orGenerateMap); Messages.Message("MessageShuttleArrived".Translate(), lookTarget, MessageTypeDefOf.TaskCompletion); }
private void DoArrivalAction(Caravan caravan) { Pawn t = caravan.PawnsListForReading[0]; Map orGenerateMap = GetOrGenerateMapUtility.GetOrGenerateMap(this.settlement.Tile, null); CaravanEnterMapUtility.Enter(caravan, orGenerateMap, CaravanEnterMode.Edge, CaravanDropInventoryMode.DoNotDrop, true, null); Find.TickManager.CurTimeSpeed = TimeSpeed.Paused; if (!this.settlement.Faction.HostileTo(Faction.OfPlayer)) { this.settlement.Faction.SetHostileTo(Faction.OfPlayer, true); Find.LetterStack.ReceiveLetter("LetterLabelCaravanEnteredEnemyBase".Translate(), "LetterCaravanEnteredEnemyBaseBecameHostile".Translate(new object[] { caravan.Label, this.settlement.Label, this.settlement.Faction.Name }).CapitalizeFirst(), LetterDefOf.NeutralEvent, t, null); } else { Find.LetterStack.ReceiveLetter("LetterLabelCaravanEnteredEnemyBase".Translate(), "LetterCaravanEnteredEnemyBase".Translate(new object[] { caravan.Label, this.settlement.Label }).CapitalizeFirst(), LetterDefOf.NeutralEvent, t, null); } }
public override IEnumerable <Gizmo> GetCaravanGizmos(Caravan caravan) { if (Visitable) { var action = new Command_Action { icon = SettleUtility.SettleCommandTex, defaultLabel = "EnterCity".Translate(), defaultDesc = "EnterCityDesc".Translate(), action = () => { LongEventHandler.QueueLongEvent(() => { var orGenerateMap = GetOrGenerateMapUtility.GetOrGenerateMap(Tile, null); CaravanEnterMapUtility.Enter(caravan, orGenerateMap, CaravanEnterMode.Edge, CaravanDropInventoryMode.DoNotDrop, draftColonists: true); }, "GeneratingMapForNewEncounter", false, null); }, }; if (this.EnterCooldownBlocksEntering()) { action.disabled = true; action.disabledReason = "MessageEnterCooldownBlocksEntering".Translate(this.EnterCooldownDaysLeft().ToString("0.#")); } yield return(action); } foreach (var gizmo in base.GetCaravanGizmos(caravan)) { yield return(gizmo); } }
public void DoEnter(Caravan caravan) { Pawn t = caravan.PawnsListForReading[0]; bool flag2 = !mapParent.HasMap; Verse.Map orGenerateMap = GetOrGenerateMapUtility.GetOrGenerateMap(mapParent.Tile, MapSize, null); foreach (var a in orGenerateMap.areaManager.AllAreas) { Log.Message($"AREA --> {a.Label} --> {a} --> {a.TrueCount}"); } if (flag2) { Find.TickManager.Notify_GeneratedPotentiallyHostileMap(); PawnRelationUtility.Notify_PawnsSeenByPlayer_Letter_Send(orGenerateMap.mapPawns.AllPawns, "LetterRelatedPawnsSite".Translate(Faction.OfPlayer.def.pawnsPlural), LetterDefOf.NeutralEvent, informEvenIfSeenBefore: true); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append("LetterCaravanEnteredMap".Translate(caravan.Label, generator.ExpandLabel).CapitalizeFirst()); Find.LetterStack.ReceiveLetter($"{Translator.Translate("CaravanEnteredShipCrash")} {generator.ExpandLabel}", stringBuilder.ToString(), LetterDefOf.NeutralEvent); } else { Find.LetterStack.ReceiveLetter($"{Translator.Translate("CaravanEnteredShipCrash")} {generator.ExpandLabel}", "LetterCaravanEnteredMap".Translate(caravan.Label, generator.ExpandLabel).CapitalizeFirst(), LetterDefOf.NeutralEvent, t); } Verse.Map map = orGenerateMap; CaravanEnterMode enterMode = CaravanEnterMode.Edge; CaravanEnterMapUtility.Enter(caravan, map, enterMode, CaravanDropInventoryMode.DoNotDrop); }
public static void Settle(AerialVehicleInFlight aerialVehicle) { Faction faction = aerialVehicle.Faction; if (faction != Faction.OfPlayer) { Log.Error("Cannot settle with non-player faction."); return; } Settlement newHome = SettleUtility.AddNewHome(aerialVehicle.Tile, faction); LongEventHandler.QueueLongEvent(delegate() { GetOrGenerateMapUtility.GetOrGenerateMap(aerialVehicle.Tile, Find.World.info.initialMapSize, null); }, "GeneratingMap", true, new Action <Exception>(GameAndMapInitExceptionHandlers.ErrorWhileGeneratingMap), true); LongEventHandler.QueueLongEvent(delegate() { IntVec3 landingCell = GetLandingCell(newHome.Map, aerialVehicle); //AerialVehicleArrivalAction_LandSpecificCell arrivalAction = new AerialVehicleArrivalAction_LandSpecificCell(aerialVehicle.vehicle, newHome, aerialVehicle.Tile, // aerialVehicle.vehicle.CompVehicleLauncher.launchProtocols.FirstOrDefault(), landingCell, Rot4.North); //arrivalAction.Arrived(aerialVehicle.Tile); VehiclePawn vehicle = (VehiclePawn)GenSpawn.Spawn(aerialVehicle.vehicle, landingCell, newHome.Map); CameraJumper.TryJump(vehicle); aerialVehicle.Destroy(); }, "SpawningColonists", true, new Action <Exception>(GameAndMapInitExceptionHandlers.ErrorWhileGeneratingMap), true); }
public virtual bool TryExecuteEvent(AerialVehicleInFlight aerialVehicle, WorldObject shotDownBy, IntVec3?precalculatedCell = null) { try { Map crashSite; int ticksTillArrival = -1; if (Find.WorldObjects.MapParentAt(aerialVehicle.Tile) is MapParent mapParent) { crashSite = mapParent.Map; } else { int num = CaravanIncidentUtility.CalculateIncidentMapSize(aerialVehicle.vehicle.AllPawnsAboard, aerialVehicle.vehicle.AllPawnsAboard); crashSite = GetOrGenerateMapUtility.GetOrGenerateMap(aerialVehicle.Tile, new IntVec3(num, 1, num), WorldObjectDefOfVehicles.CrashedShipSite); if (shotDownBy is Settlement settlement) { ticksTillArrival = (crashSite.Parent as CrashSite).InitiateReinforcementsRequest(settlement); } } bool validator(IntVec3 c) { bool flag = aerialVehicle.vehicle.PawnOccupiedCells(c, Rot4.East).All(c2 => c2.Standable(crashSite) && !c.Roofed(crashSite) && !c.Fogged(crashSite) && c.InBounds(crashSite)); return(flag); } IntVec3 RandomCentercell() { RCellFinder.TryFindRandomCellNearTheCenterOfTheMapWith(validator, crashSite, out IntVec3 result); return(result); } IntVec3 cell = precalculatedCell ?? RandomCentercell(); if (cell == IntVec3.Invalid) { return(false); } AerialVehicleArrivalAction_CrashSpecificCell arrivalAction = new AerialVehicleArrivalAction_CrashSpecificCell(aerialVehicle.vehicle, crashSite.Parent, crashSite.Tile, aerialVehicle.vehicle.CompVehicleLauncher.launchProtocol, cell, Rot4.East); arrivalAction.Arrived(crashSite.Tile); aerialVehicle.Destroy(); string settlementLabel = shotDownBy?.Label ?? string.Empty; if (ticksTillArrival > 0) { string hoursTillArrival = Ext_Math.RoundTo(ticksTillArrival / 2500f, 1).ToString(); SendCrashSiteLetter(shotDownBy, crashSite.Parent, CrashSiteDef.letterLabel, CrashSiteDef.letterTexts[1], CrashSiteDef.letterDef, crashSite.Parent, new NamedArgument[] { aerialVehicle.Label, settlementLabel, hoursTillArrival }); } else { SendCrashSiteLetter(shotDownBy, crashSite.Parent, CrashSiteDef.letterLabel, CrashSiteDef.letterTexts[0], CrashSiteDef.letterDef, crashSite.Parent, new NamedArgument[] { aerialVehicle.Label, settlementLabel }); } return(true); } catch (Exception ex) { Log.Error($"Failed to execute incident {GetType()}. Exception=\"{ex.Message}\""); return(false); } }
private static Map GenerateNewMapWithSeed(MapParent mapParent, IntVec3 size, string seed) { var prevSeed = Find.World.info.seedString; Find.World.info.seedString = seed; var newMap = GetOrGenerateMapUtility.GetOrGenerateMap(mapParent.Tile, size, null); Find.World.info.seedString = prevSeed; return(newMap); }
public static Map GetOrGenerateMapForIncident(Caravan caravan, IntVec3 size, WorldObjectDef suggestedMapParentDef) { int tile = caravan.Tile; bool flag = Current.Game.FindMap(tile) == null; Map orGenerateMap = GetOrGenerateMapUtility.GetOrGenerateMap(tile, size, suggestedMapParentDef); if (flag && orGenerateMap != null) { caravan.StoryState.CopyTo(orGenerateMap.StoryState); } return orGenerateMap; }
private static void CustomAttackNowNoLetter(Caravan caravan, Settlement settlement) { Map map = GetOrGenerateMapUtility.GetOrGenerateMap(settlement.Tile, null); if (!settlement.HasMap) { Find.TickManager.Notify_GeneratedPotentiallyHostileMap(); } CaravanEnterMapUtility.Enter(caravan, map, CaravanEnterMode.Edge, CaravanDropInventoryMode.DoNotDrop, true, null); Find.GoodwillSituationManager.RecalculateAll(true); }
private void DoEnter(Caravan caravan, Site site) { LookTargets lookTargets = new LookTargets(caravan.PawnsListForReading); bool draftColonists = site.Faction == null || site.Faction.HostileTo(Faction.OfPlayer); bool num = !site.HasMap; Map orGenerateMap = GetOrGenerateMapUtility.GetOrGenerateMap(site.Tile, MapSize, null); if (num) { Find.TickManager.Notify_GeneratedPotentiallyHostileMap(); PawnRelationUtility.Notify_PawnsSeenByPlayer_Letter_Send(orGenerateMap.mapPawns.AllPawns, "LetterRelatedPawnsSite".Translate(Faction.OfPlayer.def.pawnsPlural), LetterDefOf.NeutralEvent, informEvenIfSeenBefore: true); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append("LetterCaravanEnteredMap".Translate(caravan.Label, site).CapitalizeFirst()); AppendThreatInfo(stringBuilder, site, orGenerateMap, out var letterDef, out var allLookTargets); TaggedString letterText = null; SettlementUtility.AffectRelationsOnAttacked_NewTmp(site, ref letterText); if (!letterText.NullOrEmpty()) { if (stringBuilder.Length > 0) { stringBuilder.AppendLine(); } stringBuilder.AppendLineTagged(letterText); } List <HediffDef> list = null; foreach (SitePart part in site.parts) { if (part.def.arrivedLetterHediffHyperlinks.NullOrEmpty()) { continue; } if (list == null) { list = new List <HediffDef>(); } foreach (HediffDef arrivedLetterHediffHyperlink in part.def.arrivedLetterHediffHyperlinks) { if (!list.Contains(arrivedLetterHediffHyperlink)) { list.Add(arrivedLetterHediffHyperlink); } } } ChoiceLetter choiceLetter = LetterMaker.MakeLetter("LetterLabelCaravanEnteredMap".Translate(site), stringBuilder.ToString(), letterDef ?? LetterDefOf.NeutralEvent, allLookTargets.IsValid() ? allLookTargets : lookTargets); choiceLetter.hyperlinkHediffDefs = list; Find.LetterStack.ReceiveLetter(choiceLetter); } else { Find.LetterStack.ReceiveLetter("LetterLabelCaravanEnteredMap".Translate(site), "LetterCaravanEnteredMap".Translate(caravan.Label, site).CapitalizeFirst(), LetterDefOf.NeutralEvent, lookTargets); } CaravanEnterMapUtility.Enter(caravan, orGenerateMap, CaravanEnterMode.Edge, CaravanDropInventoryMode.DoNotDrop, draftColonists); }
public static Map GetOrGenerateMapForIncident(Caravan caravan, IntVec3 size, WorldObjectDef suggestedMapParentDef) { int tile = caravan.Tile; bool num = Current.Game.FindMap(tile) == null; Map orGenerateMap = GetOrGenerateMapUtility.GetOrGenerateMap(tile, size, suggestedMapParentDef); if (num) { orGenerateMap?.retainedCaravanData.Notify_GeneratedTempIncidentMapFor(caravan); } return(orGenerateMap); }
private static void AttackNow(Caravan caravan, EnemyCaravan enemyCaravan) { Pawn t = caravan.PawnsListForReading[0]; Map orGenerateMap = GetOrGenerateMapUtility.GetOrGenerateMap(enemyCaravan.Tile, null); string letterLabel = "LetterLabelCaravanEnteredEnemyBase".Translate(); string letterText = "LetterCaravanEnteredEnemyBase".Translate(caravan.Label, enemyCaravan.Label).CapitalizeFirst(); AffectRelationsOnAttacked(enemyCaravan, ref letterText); Find.TickManager.Notify_GeneratedPotentiallyHostileMap(); PawnRelationUtility.Notify_PawnsSeenByPlayer_Letter(orGenerateMap.mapPawns.AllPawns, ref letterLabel, ref letterText, "LetterRelatedPawnsSettlement".Translate(Faction.OfPlayer.def.pawnsPlural), informEvenIfSeenBefore: true); Find.LetterStack.ReceiveLetter(letterLabel, letterText, LetterDefOf.NeutralEvent, t, enemyCaravan.Faction); CaravanEnterMapUtility.Enter(caravan, orGenerateMap, CaravanEnterMode.Edge, CaravanDropInventoryMode.DoNotDrop, draftColonists: true); }
public override void Arrived(List <ActiveDropPodInfo> pods, int tile) { Thing lookTarget = TransportPodsArrivalActionUtility.GetLookTarget(pods); bool flag = !this.site.HasMap; Map orGenerateMap = GetOrGenerateMapUtility.GetOrGenerateMap(this.site.Tile, SiteCoreWorker.MapSize, null); if (flag) { Find.TickManager.Notify_GeneratedPotentiallyHostileMap(); PawnRelationUtility.Notify_PawnsSeenByPlayer_Letter_Send(orGenerateMap.mapPawns.AllPawns, "LetterRelatedPawnsInMapWherePlayerLanded".Translate(Faction.OfPlayer.def.pawnsPlural), LetterDefOf.NeutralEvent, true, true); } Messages.Message("MessageTransportPodsArrived".Translate(), lookTarget, MessageTypeDefOf.TaskCompletion, true); this.arrivalMode.Worker.TravelingTransportPodsArrived(pods, orGenerateMap); }
public override IEnumerable <Gizmo> GetCaravanGizmos(Caravan caravan) { if (Visitable) { // TODO refactor if (!(this is Citadel)) { var enterLabel = Find.World.GetComponent <WorldComponent_QuestTracker>().quests .Where(q => q.Targets != null && q.Targets.targets.Contains(this)) .Select(q => q.def.EnterCityLabel) .FirstOrDefault() ?? "EnterCity".Translate(); var action = new Command_Action { icon = SettleUtility.SettleCommandTex, defaultLabel = enterLabel, defaultDesc = "EnterCityDesc".Translate(), action = () => { LongEventHandler.QueueLongEvent(() => { var orGenerateMap = GetOrGenerateMapUtility.GetOrGenerateMap(Tile, null); CaravanEnterMapUtility.Enter(caravan, orGenerateMap, CaravanEnterMode.Edge, CaravanDropInventoryMode.DoNotDrop, true); }, "GeneratingMapForNewEncounter", false, null); }, }; if (this.EnterCooldownBlocksEntering()) { action.disabled = true; action.disabledReason = "MessageEnterCooldownBlocksEntering".Translate(this.EnterCooldownDaysLeft().ToString("0.#")); } yield return(action); } if (!Abandoned) { yield return(CaravanVisitUtility.TradeCommand(caravan)); } } foreach (var gizmo in base.GetCaravanGizmos(caravan)) { if (gizmo is Command command && command.defaultLabel == "CommandTrade".Translate()) { continue; } yield return(gizmo); } }
private static void UnitTestStrafing() { Map sourceMap = null; Map targetMap = null; VehiclePawn vehicle = null; foreach (Settlement settlement in Find.WorldObjects.Settlements.Where(s => s.Faction == Faction.OfPlayer)) { Map map = GetOrGenerateMapUtility.GetOrGenerateMap(settlement.Tile, null); if (map.spawnedThings.FirstOrDefault(t => t is VehiclePawn vehicleCheck && vehicleCheck.CompVehicleLauncher != null) is VehiclePawn vehicleTarget) { sourceMap = map; vehicle = vehicleTarget; }
private void DoEnter(Caravan caravan, Site site) { Pawn t = caravan.PawnsListForReading[0]; bool flag = site.Faction == null || site.Faction.HostileTo(Faction.OfPlayer); Map orGenerateMap = GetOrGenerateMapUtility.GetOrGenerateMap(site.Tile, MapSize, null); Find.LetterStack.ReceiveLetter("LetterLabelCaravanEnteredRuins".Translate(), "LetterCaravanEnteredRuins".Translate(caravan.Label).CapitalizeFirst(), LetterDefOf.ThreatBig, t, null, null); Map map = orGenerateMap; CaravanEnterMode enterMode = CaravanEnterMode.Edge; bool draftColonists = flag; CaravanEnterMapUtility.Enter(caravan, map, enterMode, CaravanDropInventoryMode.DoNotDrop, draftColonists, null); }
public bool CheckSetupGateAndMap(Pawn p) { Log.Message(string.Format("Checking for link", new object[0])); bool drafted = p.Drafted; bool flag = Find.Selector.IsSelected(p); bool result; if (this.LinkedGate == null) { if (this.LinkedSite == null) { Messages.Message("RD_StargateNotLinked".Translate(), MessageTypeDefOf.RejectInput); //"Stargate is not linked to a destination!" result = false; } else if (this.LinkedSite.HasMap) { IEnumerable <Thing> source = this.LinkedSite.Map.listerThings.ThingsOfDef(ThingDef.Named("RD_Stargate")); if (source.Count <Thing>() == 0) { Messages.Message("RD_StargateNotLinked".Translate(), MessageTypeDefOf.RejectInput); result = false; } else { this.MakeLink(source.FirstOrDefault <Thing>()); Log.Message(string.Format("Linked extant, unlinked gate!", new object[0])); result = true; } } else { List <Pawn> pawns = new List <Pawn>(); pawns.Add(p); LongEventHandler.QueueLongEvent(delegate() { SitePartWorker_Stargate.tmpPawnsToSpawn.AddRange(pawns); Map orGenerateMap = GetOrGenerateMapUtility.GetOrGenerateMap(this.LinkedSite.Tile, this.LinkedSite.Map.Size, null); }, "GeneratingMapForNewEncounter", false, null); result = false; } } else { Log.Message(string.Format("Linked already!", new object[0])); result = true; } return(result); }
//Generates a map with a defined seed private static Map GenerateNewMapWithSeed(Caravan caravan, IntVec3 size, string seed) { int tile = caravan.Tile; bool flag = Current.Game.FindMap(tile) == null; string seedString = Find.World.info.seedString; Find.World.info.seedString = seed; Map orGenerateMap = GetOrGenerateMapUtility.GetOrGenerateMap(tile, size, DefDatabase <WorldObjectDef> .GetNamed("CaravanCamp", true)); Find.World.info.seedString = seedString; if (flag && orGenerateMap != null) { orGenerateMap.retainedCaravanData.Notify_GeneratedTempIncidentMapFor(caravan); } return(orGenerateMap); }
private void DoEnter(Caravan caravan, Site site) { Pawn t = caravan.PawnsListForReading[0]; bool flag = site.Faction == null || site.Faction.HostileTo(Faction.OfPlayer); Map orGenerateMap = GetOrGenerateMapUtility.GetOrGenerateMap(site.Tile, SiteCoreWorker.MapSize, null); Map map = orGenerateMap; CaravanEnterMode enterMode = CaravanEnterMode.Edge; bool draftColonists = flag; CaravanEnterMapUtility.Enter(caravan, map, enterMode, CaravanDropInventoryMode.DoNotDrop, draftColonists, null); if (flag) { Find.TickManager.CurTimeSpeed = TimeSpeed.Paused; } Messages.Message("MessageCaravanArrivedAtDestination".Translate(caravan.Label).CapitalizeFirst(), t, MessageTypeDefOf.TaskCompletion); }
private static void AttackNow(Caravan caravan, Settlement settlement) { bool num = !settlement.HasMap; Map orGenerateMap = GetOrGenerateMapUtility.GetOrGenerateMap(settlement.Tile, null); TaggedString letterLabel = "LetterLabelCaravanEnteredEnemyBase".Translate(); TaggedString letterText = "LetterCaravanEnteredEnemyBase".Translate(caravan.Label, settlement.Label.ApplyTag(TagType.Settlement, settlement.Faction.GetUniqueLoadID())).CapitalizeFirst(); AffectRelationsOnAttacked(settlement, ref letterText); if (num) { Find.TickManager.Notify_GeneratedPotentiallyHostileMap(); PawnRelationUtility.Notify_PawnsSeenByPlayer_Letter(orGenerateMap.mapPawns.AllPawns, ref letterLabel, ref letterText, "LetterRelatedPawnsSettlement".Translate(Faction.OfPlayer.def.pawnsPlural), informEvenIfSeenBefore: true); } Find.LetterStack.ReceiveLetter(letterLabel, letterText, LetterDefOf.NeutralEvent, caravan.PawnsListForReading, settlement.Faction); CaravanEnterMapUtility.Enter(caravan, orGenerateMap, CaravanEnterMode.Edge, CaravanDropInventoryMode.DoNotDrop, draftColonists: true); }
public void EstablishFarcasterLink() { mapHome = this.Map; Messages.Message("GU_FarcasterActivated".Translate(), MessageTypeDefOf.PositiveEvent); FarcasterDestination worldObjectFarcaster = (FarcasterDestination)WorldObjectMaker.MakeWorldObject(DefDatabase <WorldObjectDef> .GetNamed("GU_FarcasterDestinationSigmaAlcyon", true)); mapParent = (MapParent)worldObjectFarcaster; mapParent.Tile = TileFinder.RandomStartingTile(); mapParent.SetFaction(Faction.OfPlayer); worldObjectFarcaster.mapHome = mapHome; worldObjectFarcaster.mapGen = DefDatabase <MapGeneratorDef> .GetNamed("GU_FarcasterMapSigmaAlcyon", true); Find.WorldObjects.Add(mapParent); myMap = new Map(); LongEventHandler.QueueLongEvent(delegate { myMap = GetOrGenerateMapUtility.GetOrGenerateMap(mapParent.Tile, Find.World.info.initialMapSize, null); }, "GU_LinkingWithFarcasters", true, new Action <Exception>(GameAndMapInitExceptionHandlers.ErrorWhileGeneratingMap)); LongEventHandler.QueueLongEvent(delegate { originalBiome = myMap.TileInfo.biome; originalTile = mapParent.Tile; myMap.TileInfo.biome = DefDatabase <BiomeDef> .GetNamed("GU_SigmaAlcyonIIb", true); mapParent.Tile = base.Tile; mapFarcast = myMap; //Remote Farcaster portal spawning Building_AncientFarcaster building_AncientFarcaster = (Building_AncientFarcaster)ThingMaker.MakeThing(DefDatabase <ThingDef> .GetNamed("GU_AncientFarcasterPortal", true)); building_AncientFarcaster.mapHome = mapHome; building_AncientFarcaster.locationHome = this.Position; building_AncientFarcaster.SetFaction(Faction.OfPlayer); GenSpawn.Spawn(building_AncientFarcaster, myMap.Center, myMap); locationFarcast = building_AncientFarcaster.Position; //An auxiliary pad too Building_Storage building_AncientPad = (Building_Storage)ThingMaker.MakeThing(DefDatabase <ThingDef> .GetNamed("GU_AncientFarcasterPad", true)); building_AncientPad.SetFaction(Faction.OfPlayer); GenSpawn.Spawn(building_AncientPad, myMap.Center - GenAdj.CardinalDirections[0] * 4, myMap); //Farcaster portal spawning ends here }, "GU_LinkingWithFarcasters", true, new Action <Exception>(GameAndMapInitExceptionHandlers.ErrorWhileGeneratingMap)); }
public override void Arrived(List <ActiveDropPodInfo> pods, int tile) { Thing lookTarget = TransportPodsArrivalActionUtility.GetLookTarget(pods); bool flag = !settlement.HasMap; Map orGenerateMap = GetOrGenerateMapUtility.GetOrGenerateMap(settlement.Tile, null); string letterLabel = "LetterLabelCaravanEnteredEnemyBase".Translate(); string letterText = "LetterTransportPodsLandedInEnemyBase".Translate(settlement.Label).CapitalizeFirst(); SettlementUtility.AffectRelationsOnAttacked(settlement, ref letterText); if (flag) { Find.TickManager.Notify_GeneratedPotentiallyHostileMap(); PawnRelationUtility.Notify_PawnsSeenByPlayer_Letter(orGenerateMap.mapPawns.AllPawns, ref letterLabel, ref letterText, "LetterRelatedPawnsInMapWherePlayerLanded".Translate(Faction.OfPlayer.def.pawnsPlural), informEvenIfSeenBefore: true); } Find.LetterStack.ReceiveLetter(letterLabel, letterText, LetterDefOf.NeutralEvent, lookTarget, settlement.Faction); arrivalMode.Worker.TravelingTransportPodsArrived(pods, orGenerateMap); }
private void DoArrivalAction(Caravan caravan) { bool flag = !this.target.HasMap; if (flag) { this.target.SetFaction(Faction.OfPlayer); } Map orGenerateMap = GetOrGenerateMapUtility.GetOrGenerateMap(this.target.Tile, null); CaravanEnterMapUtility.Enter(caravan, orGenerateMap, CaravanEnterMode.Edge, CaravanDropInventoryMode.UnloadIndividually, false, null); if (flag) { Find.TickManager.Notify_GeneratedPotentiallyHostileMap(); Find.LetterStack.ReceiveLetter("EscapeShipFoundLabel".Translate(), "EscapeShipFound".Translate(), LetterDefOf.PositiveEvent, new GlobalTargetInfo(this.target.Map.Center, this.target.Map, false), null, null); } }