public override void DoEnter(Caravan caravan)
        {
            Pawn t     = caravan.PawnsListForReading[0];
            bool flag2 = !MapParent.HasMap;

            Verse.Map orGenerateMap = GetOrGenerateMap(MapParent.Tile, MapSize, null);
            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, Site).CapitalizeFirst());
                Find.LetterStack.ReceiveLetter($"{Translator.Translate("CaravanEnteredMassiveFire")} {Site.Label}", stringBuilder.ToString(), LetterDefOf.NeutralEvent);
            }
            else
            {
                Find.LetterStack.ReceiveLetter($"{Translator.Translate("CaravanEnteredMassiveFire")} {Site.Label}", "LetterCaravanEnteredMap".Translate(caravan.Label, Site).CapitalizeFirst(), LetterDefOf.NeutralEvent, t);
            }
            Verse.Map map      = orGenerateMap;
            IntVec3   enterPos = new IntVec3(82, 0, 5);

            CaravanEnterMapUtility.Enter(caravan, map, (Pawn p) => enterPos);

            DoomsdaySite site = (DoomsdaySite)MapParent;
            var          comp = site.GetComponent <DoomsdayUltimatumComp>();

            if (comp.HelpingFactions != null)
            {
                CacheAndChangeRelations(comp);

                GeneratePawns(comp, ref enterPos, map);
            }
        }
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            if (!settings.Active)
            {
                return(false);
            }

            int          spawnPoint = GetPlace();
            DoomsdaySite site       = (DoomsdaySite)WorldObjectMaker.MakeWorldObject(WorldObjectsDefOfLocal.DoomsdayUltimatumCamp);

            site.Tile = spawnPoint;
            site.SetFaction(GetEnemyFaction());
            var comp = site.GetComponent <DoomsdayUltimatumComp>();

            comp.SetTimer(Rand.Range(10, 20));

            CommunicationDialog dialog = QuestsManager.Communications.AddCommunication(QuestsManager.Communications.UniqueIdManager.GetNextDialogID(), "DoomsdayCardLabel".Translate(), "DoomsdayDesc".Translate(site.Faction.Name), site.Faction, def, new List <CommOption> {
                new CommOption_DiscussWithOtherFactions(site, site.Faction)
            });

            comp.Dialog = dialog;

            site.comp = comp;
            List <Faction> factions = Find.FactionManager.AllFactionsListForReading.Where(f => !f.IsPlayer && !f.def.hidden && f != site.Faction && f.RelationKindWith(site.Faction) == FactionRelationKind.Hostile).ToList();

            comp.FactionSilver = Mathf.Clamp(factions.Count * Rand.Range(2000, 4000), 15000, 35000);

            Find.WorldObjects.Add(site);

            SendStandardLetter(parms, site);

            DoomsdaySite.ActiveSite = site;

            return(true);
        }