Exemplo n.º 1
0
        static bool Prefix(CompLongRangeMineralScanner __instance)
        {
            if (Traverse.Create(__instance).Field("targetMineable").GetValue <ThingDef>() == WTH_DefOf.WTH_MechanoidParts)
            {
                Traverse.Create(__instance).Field("daysWorkingSinceLastMinerals").SetValue(0f);
                if (!TileFinder.TryFindNewSiteTile(out int tile, MinDistance, MaxDistance, true, false))
                {
                    return(false);
                }

                Site site = SiteMaker.MakeSite(WTH_DefOf.WTH_MechanoidTempleCore,
                                               WTH_DefOf.WTH_MechanoidTemplePart,
                                               tile, Faction.OfMechanoids, ifHostileThenMustRemainHostile: true);

                if (site == null)
                {
                    return(false);
                }

                int randomInRange = TimeoutDaysRange.RandomInRange;

                site.Tile = tile;
                site.GetComponent <TimeoutComp>().StartTimeout(ticks: randomInRange * GenDate.TicksPerDay);
                site.SetFaction(Faction.OfMechanoids);

                //site.customLabel = "TODO";
                Find.WorldObjects.Add(o: site);
                Find.LetterStack.ReceiveLetter(label: "WTH_Letter_LRMS_Label".Translate(), text: "WTH_Letter_LRMS_Description".Translate(), textLetterDef: LetterDefOf.PositiveEvent, lookTargets: site);

                return(false);
            }
            return(true);
        }
Exemplo n.º 2
0
        private void AddSingleObject()
        {
            if (selectedFaction == null)
            {
                Messages.Message($"Select faction", MessageTypeDefOf.NeutralEvent, false);
                return;
            }

            if (edit)
            {
                editSite.parts.Clear();
                editSite.parts.Add(new SitePart(editSite, part, part.Worker.GenerateDefaultParams(threatsFloat, editSite.Tile, editSite.Faction)));

                editSite.SetFaction(selectedFaction);

                Messages.Message($"Success", MessageTypeDefOf.NeutralEvent, false);

                return;
            }

            if (Find.WorldSelector.selectedTile == -1)
            {
                Messages.Message($"Select tile", MessageTypeDefOf.NeutralEvent, false);
                return;
            }

            Site site;

            site = SiteMaker.MakeSite(part, Find.WorldSelector.selectedTile, selectedFaction, threatPoints: threatsFloat);

            site.sitePartsKnown = true;
            Find.WorldObjects.Add(site);
        }
Exemplo n.º 3
0
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            if (!TryFindFactions(out Faction alliedFaction, out Faction enemyFaction))
            {
                return(false);
            }
            if (!TryFindTile(out int tile))
            {
                return(false);
            }
            Site site = SiteMaker.MakeSite(SiteCoreDefOf.Nothing, SitePartDefOf.Outpost, tile, enemyFaction);

            site.sitePartsKnown = true;
            List <Thing> list = GenerateRewards(alliedFaction, site.desiredThreatPoints);

            site.GetComponent <DefeatAllEnemiesQuestComp>().StartQuest(alliedFaction, 18, list);
            int randomInRange = SiteTuning.QuestSiteTimeoutDaysRange.RandomInRange;

            site.GetComponent <TimeoutComp>().StartTimeout(randomInRange * 60000);
            Find.WorldObjects.Add(site);
            string text = def.letterText.Formatted(alliedFaction.leader.LabelShort, alliedFaction.def.leaderTitle, alliedFaction.Name, GenLabel.ThingsLabel(list, string.Empty), randomInRange.ToString(), SitePartUtility.GetDescriptionDialogue(site, site.parts.FirstOrDefault()), GenThing.GetMarketValue(list).ToStringMoney()).CapitalizeFirst();

            GenThing.TryAppendSingleRewardInfo(ref text, list);
            Find.LetterStack.ReceiveLetter(def.letterLabel, text, def.letterDef, site, alliedFaction);
            return(true);
        }
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            int  contingency = 0;
            bool tileFound   = false;
            int  tile        = -1;

            while (contingency < 99 && !tileFound)
            {
                TileFinder.TryFindNewSiteTile(out tile, minDist, maxDist, false, true, -1);
                if (Find.WorldGrid[tile].temperature > 0f && Find.WorldGrid[tile].hilliness != Hilliness.Mountainous)
                {
                    tileFound = true;
                }
                contingency++;
            }
            if (!tileFound || tile == -1)
            {
                return(false);
            }
            Site site = SiteMaker.MakeSite(SiteDefOf.AmbrosiaAnimalsLGE, sitePart: null, tile: tile, faction: Faction.OfAncients);

            site.GetComponent <TimeoutComp>().StartTimeout(TimeoutDaysRange.RandomInRange * 60000);
            Find.WorldObjects.Add(site);
            Find.LetterStack.ReceiveLetter("LetterLabelAmbrosiaAnimalsLGE".Translate(), "LetterAmbrosiaAnimalsLGE".Translate(), LetterDefOf.PositiveEvent, site, null);
            return(true);
        }
Exemplo n.º 5
0
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            if (!TryFindFaction(enemyFaction: out faction))
            {
                return(false);
            }
            if (!TryGetRandomAvailableTargetMap(map: out Map map))
            {
                return(false);
            }
            if (faction.leader == null)
            {
                return(false);
            }

            int pirateTile = RandomNearbyHostileSettlement(map.Tile)?.Tile ?? Tile.Invalid;

            if (pirateTile == Tile.Invalid)
            {
                return(false);
            }

            if (!TileFinder.TryFindNewSiteTile(out int tile, minDist: 2, maxDist: 8, allowCaravans: false, preferCloserTiles: true, nearThisTile: pirateTile))
            {
                return(false);
            }

            Site site = SiteMaker.MakeSite(sitePart: SitePartDefOf.Outpost, tile: tile, faction: faction);

            site.Tile           = tile;
            site.sitePartsKnown = true;
            Find.WorldObjects.Add(o: site);
            SendStandardLetter(parms, site, new NamedArgument[] { faction.leader?.LabelShort ?? "MFI_Representative".Translate(), faction.def.leaderTitle, faction.Name });
            return(true);
        }
Exemplo n.º 6
0
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            if (!TryFindTile(tile: out int tile))
            {
                return(false);
            }

            Site site = SiteMaker.MakeSite(WTH_DefOf.WTH_RoamingMechanoidsCore,
                                           WTH_DefOf.WTH_RoamingMechanoidsPart,
                                           tile, Faction.OfMechanoids, ifHostileThenMustRemainHostile: true);

            if (site == null)
            {
                return(false);
            }

            int randomInRange = TimeoutDaysRange.RandomInRange;

            site.Tile = tile;
            site.GetComponent <TimeoutComp>().StartTimeout(ticks: randomInRange * GenDate.TicksPerDay);
            site.SetFaction(Faction.OfMechanoids);

            Find.WorldObjects.Add(o: site);

            Find.LetterStack.ReceiveLetter(this.def.letterLabel, this.def.letterText, this.def.letterDef, site);
            return(true);
        }
Exemplo n.º 7
0
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            if (!TryFindFactions(out var faction, out var faction2))
            {
                return(false);
            }
            if (!TileFinder.TryFindNewSiteTile(out var tile, 8, 30))
            {
                return(false);
            }

            var site = SiteMaker.MakeSite(SitePartDefOf.DownedT5Android, tile, faction2);

            site.Tile = tile;
            var randomInRange = TimeoutDaysRange.RandomInRange;

            site.GetComponent <TimeoutComp>().StartTimeout(randomInRange * 60000);
            Find.WorldObjects.Add(site);

            var labelText  = def.letterLabel;
            var letterText = def.letterText;

            Find.LetterStack.ReceiveLetter(labelText, letterText, def.letterDef, site);
            return(true);
        }
Exemplo n.º 8
0
        // Token: 0x06000DA9 RID: 3497 RVA: 0x000648C0 File Offset: 0x00062CC0
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            Faction faction;
            Faction faction2;

            if (!this.TryFindFactions(out faction, out faction2))
            {
                return(false);
            }
            int tile;

            if (!TileFinder.TryFindNewSiteTile(out tile, 8, 30, false, true, -1))
            {
                return(false);
            }
            Site site = SiteMaker.MakeSite(SiteCoreDefOf.DownedT5Android, SitePartDefOf.Turrets, faction2);

            site.Tile = tile;
            int randomInRange = IncidentWorker_DownedT5Android.TimeoutDaysRange.RandomInRange;

            site.GetComponent <TimeoutComp>().StartTimeout(randomInRange * 60000);
            Find.WorldObjects.Add(site);
            base.SendStandardLetter(site, new string[]
            {
                faction.leader.LabelShort,
                faction.def.leaderTitle,
                faction.Name,
            });
            return(true);
        }
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            if (!TryFindFactions(out Faction ally, out Faction enemyFaction) || !TryFindTile(out int tile))
            {
                return(false);
            }
            Site site = SiteMaker.MakeSite(SiteCoreDefOf.Nothing, EndGameDefOf.Outpost_defense, tile, ally, true);

            List <Thing> rewards = ThingSetMakerDefOf.Reward_StandardByDropPod.root.Generate(new ThingSetMakerParams()
            {
                totalMarketValueRange = new FloatRange?(SiteTuning.BanditCampQuestRewardMarketValueRange * SiteTuning.QuestRewardMarketValueThreatPointsFactor.Evaluate(StorytellerUtility.DefaultSiteThreatPointsNow() - 500))
            });

            int randomInRange = SiteTuning.QuestSiteTimeoutDaysRange.RandomInRange * Global.DayInTicks;

            site.GetComponent <WorldComp_SiteDefense>().StartComp(enemyFaction, rewards);
            site.GetComponent <TimeoutComp>().StartTimeout(randomInRange);

            Find.WorldObjects.Add(site);
            string text = def.letterText.Formatted(ally.leader.LabelShort, ally.def.leaderTitle, ally.Name, GenLabel.ThingsLabel(rewards, string.Empty), randomInRange.ToStringTicksToPeriod(), GenThing.GetMarketValue(rewards).ToStringMoney(null)).CapitalizeFirst();

            GenThing.TryAppendSingleRewardInfo(ref text, rewards);
            Find.LetterStack.ReceiveLetter(def.letterLabel, text, def.letterDef, site, ally, null);
            return(true);
        }
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            Faction faction;
            Faction faction2;

            if (!this.TryFindFactions(out faction, out faction2))
            {
                return(false);
            }
            int tile;

            if (!TileFinder.TryFindNewSiteTile(out tile, 8, 30, false, true, -1))
            {
                return(false);
            }
            Site site = SiteMaker.MakeSite(SiteCoreDefOf.Nothing, SitePartDefOf.Outpost, faction2);

            site.Tile = tile;
            List <Thing> list = this.GenerateRewards(faction);

            site.GetComponent <DefeatAllEnemiesQuestComp>().StartQuest(faction, 8f, list);
            Find.WorldObjects.Add(site);
            base.SendStandardLetter(site, new string[]
            {
                faction.leader.LabelShort,
                faction.def.leaderTitle,
                faction.Name,
                list[0].LabelCap
            });
            return(true);
        }
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            if (!TryFindFaction(enemyFaction: out this.faction))
            {
                return(false);
            }
            if (!this.TryGetRandomAvailableTargetMap(map: out Map map))
            {
                return(false);
            }

            int pirateTile = this.RandomNearbyHostileSettlement(map.Tile)?.Tile ?? Tile.Invalid;

            if (pirateTile == Tile.Invalid)
            {
                return(false);
            }

            if (!TileFinder.TryFindNewSiteTile(tile: out int tile, minDist: 2, maxDist: 8, allowCaravans: false, preferCloserTiles: true, nearThisTile: pirateTile))
            {
                return(false);
            }
            Site site = SiteMaker.MakeSite(core: SiteCoreDefOf.Nothing, sitePart: SitePartDefOf.Outpost, tile: tile, faction: this.faction);

            site.Tile           = tile;
            site.sitePartsKnown = true;
            Find.WorldObjects.Add(o: site);
            this.SendStandardLetter(lookTargets: site, relatedFaction: this.faction, textArgs: new string[]
            {
                this.faction.leader.LabelShort, this.faction.def.leaderTitle, this.faction.Name,
            });
            return(true);
        }
        public static Site CreateToxicCitySite(int tile, int days)
        {
            Site site = SiteMaker.MakeSite(SiteDefOf.ToxicLostCityLGE, sitePart: null, tile: tile, faction: Faction.OfAncients);

            site.GetComponent <TimeoutComp>().StartTimeout(days * 60000);
            Find.WorldObjects.Add(site);
            return(site);
        }
Exemplo n.º 13
0
 public override void AssignDebugData()
 {
     base.AssignDebugData();
     if (TileFinder.TryFindNewSiteTile(out int tile))
     {
         worldObject = SiteMaker.MakeSite((SitePartDef)null, tile, (Faction)null, ifHostileThenMustRemainHostile: true, (float?)null);
     }
 }
        public static Site CreateBombardmentCitySite(int tile, int days)
        {
            Site site = SiteMaker.MakeSite(SiteDefOf.StandartLostCityLGE, SiteDefOf.OrbitalBombardmentLGE, tile, Faction.OfAncients);

            site.GetComponent <TimeoutComp>().StartTimeout(days * 60000);
            Find.WorldObjects.Add(site);
            return(site);
        }
        private void CreateOpbase()
        {
            parent.Faction.TryAffectGoodwillWith(Faction.OfPlayer, -10);
            Site site = SiteMaker.MakeSite(SiteCoreDefOf.Nothing, EndGameDefOf.Outpost_opbase, parent.Tile, enemy, true, new float?());

            site.GetComponent <TimeoutComp>().StartTimeout(SiteTuning.QuestSiteRefugeeTimeoutDaysRange.RandomInRange * Global.DayInTicks);
            site.GetComponent <WorldComp_opbase>().StartComp();
            Find.WorldObjects.Add(site);
        }
Exemplo n.º 16
0
        private void AddLump()
        {
            if (resource == null)
            {
                Messages.Message($"Select resource", MessageTypeDefOf.NeutralEvent, false);
                return;
            }

            if (edit)
            {
                editSite.parts[0].parms.preciousLumpResources = resource;

                if (!string.IsNullOrEmpty(time) && int.TryParse(time, out int t))
                {
                    editSite.GetComponent <TimeoutComp>().StartTimeout(t * 60000);
                }
                else
                {
                    editSite.GetComponent <TimeoutComp>().StartTimeout(-1);
                }

                editSite.parts.Clear();
                editSite.parts.Add(new SitePart(editSite, part, part.Worker.GenerateDefaultParams(threatsFloat, editSite.Tile, editSite.Faction)));

                if (selectedFaction != null)
                {
                    editSite.SetFaction(selectedFaction);
                }

                Messages.Message($"Success", MessageTypeDefOf.NeutralEvent, false);

                return;
            }

            if (Find.WorldSelector.selectedTile == -1)
            {
                Messages.Message($"Select tile", MessageTypeDefOf.NeutralEvent, false);
                return;
            }

            if (selectedFaction == null)
            {
                selectedFaction = Find.FactionManager.AllFactionsListForReading.RandomElement();
            }

            Site site = SiteMaker.MakeSite(Gen.YieldSingle(part), Find.WorldSelector.selectedTile, selectedFaction, threatPoints: threatsFloat);

            site.sitePartsKnown = true;
            site.parts[0].parms.preciousLumpResources = resource;

            if (!string.IsNullOrEmpty(time) && int.TryParse(time, out int timeInt))
            {
                site.GetComponent <TimeoutComp>().StartTimeout(timeInt * 60000);
            }

            Find.WorldObjects.Add(site);
        }
Exemplo n.º 17
0
        public static Site CreateSite(int tile, SitePartDef sitePart, int days, Faction siteFaction)
        {
            Site site = SiteMaker.MakeSite(SiteCoreDefOf.ItemStash, sitePart, tile, siteFaction);

            site.sitePartsKnown = true;
            site.GetComponent <TimeoutComp>().StartTimeout(days * 60000);
            Find.WorldObjects.Add(site);
            return(site);
        }
Exemplo n.º 18
0
        public static Site CreateSite(int tile, SitePartDef sitePart, int days, Faction siteFaction, IList <Thing> items)
        {
            Site site = SiteMaker.MakeSite(PolarisIncidentDefOf.Polaris_TradeShipPodCrashSiteCore, sitePart, tile, siteFaction, true);

            site.sitePartsKnown = true;
            site.GetComponent <TimeoutComp>().StartTimeout(days * 60000);
            site.GetComponent <ItemStashContentsComp>().contents.TryAddRangeOrTransfer(items, false, false);
            Find.WorldObjects.Add(site);
            return(site);
        }
        private void Outcome_Triumph(Caravan caravan)
        {
            Set1.Faction.TryAffectGoodwillWith(Faction.OfPlayer, 45);
            Site site = SiteMaker.MakeSite(SiteCoreDefOf.Nothing, EndGameDefOf.Outpost_opbase, Tile, Set1.Faction, true);

            Utilities.FactionsWar().GetByFaction(site.Faction).resources += FE_WorldComp_FactionsWar.LARGE_EVENT_Cache_RESOURCE_VALUE;
            site.GetComponent <WorldComp_DisputeFOB>().StartComp(Set1, Set2);
            Find.WorldObjects.Add(site);
            Find.WorldObjects.Remove(this);
            Find.LetterStack.ReceiveLetter("LetterLabelDisputeTriumph".Translate(), "DisputeTriumph".Translate(BestCaravanPawnUtility.FindBestDiplomat(caravan), Set1, Set2)
                                           , LetterDefOf.PositiveEvent, site, null, null);
        }
Exemplo n.º 20
0
        internal void CreateAndRevealHackerSite()
        {
            this.foundHackingSite = true;
            this.hackingSite      = SiteMaker.MakeSite(DefDatabase <SiteCoreDef> .GetNamed("ProblemHacker_HackingSite"), (SitePartDef)null, this.hacker.Faction);
            this.hackingSite.GetComponent <RemoteHackerComp> ().pawn.TryAdd(this.hacker, true);
            this.hackerCurrentlyHeld = false;                   //No longer hold the hacker ...
            this.hackingSite.GetComponent <TimeoutComp> ().StartTimeout(120000);
            this.hackingSite.Tile = this.hackingSourceTile;

            Find.WorldObjects.Add(this.hackingSite);

            //IntVec3 spawnCell = CellFinder.RandomSpawnCellForPawnNear (this.hackingSite.Map.Center, this.hackingSite.Map, 4);
            //GenSpawn.Spawn (this.hacker, spawnCell, this.hackingSite.Map, Rot4.Random, false);
        }
Exemplo n.º 21
0
        public override void CompTick()
        {
            if (!active)
            {
                return;
            }

            if (!ParentHasMap)
            {
                if (!enemy.HostileTo(ally))
                {
                    active = false;
                    return;
                }
                if (timer <= Find.TickManager.TicksGame)
                {
                    active = false;

                    Utilities.FactionsWar().GetByFaction(ally).resources -= FE_WorldComp_FactionsWar.SETTLEMENT_RESOURCE_VALUE;
                    if (!Find.WorldObjects.Settlements.Where(f => f.Faction == parent.Faction).Any())
                    {
                        Find.LetterStack.ReceiveLetter("FactionDestroyed".Translate(), "LetterFactionBaseDefeated_FactionDestroyed".Translate(parent.Faction.Name), LetterDefOf.PositiveEvent, null, parent.Faction, null);
                        parent.Faction.defeated = true;
                        return;
                    }

                    Site resuce = SiteMaker.MakeSite(SiteCoreDefOf.Nothing, EndGameDefOf.Outpost_SiteResuce, parent.Tile, enemy, true, StorytellerUtility.DefaultSiteThreatPointsNow());
                    resuce.GetComponent <WorldComp_SettlementResuce>().StartComp(ally);
                    resuce.GetComponent <TimeoutComp>().StartTimeout(new IntRange(9 * Global.DayInTicks, 15 * Global.DayInTicks).RandomInRange);
                    Find.WorldObjects.Remove(parent);
                    Find.WorldObjects.Add(resuce);

                    Find.LetterStack.ReceiveLetter("LetterLabelSettlementDefenderIgnored".Translate(), TranslatorFormattedStringExtensions.Translate("SettlementDefenderIgnored", parent, parent.Faction.leader),
                                                   LetterDefOf.ThreatBig, new LookTargets(parent.Tile), null, null);
                }
                return;
            }
            //Goodwill cost to unforbid items in the ally map
            foreach (Thing thing in FactionThings)
            {
                if (thing.Faction == Faction.OfPlayer || (thing.TryGetComp <CompForbiddable>() != null && !thing.IsForbidden(Faction.OfPlayer)))
                {
                    parent.Faction.TryAffectGoodwillWith(Faction.OfPlayer, -5);
                    FactionThings.Remove(thing);
                    break;
                }
            }
            FriendliesDead();
            HostileDefeated();
        }
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            int tile;

            if (!TileFinder.TryFindNewSiteTile(out tile))
            {
                return(false);
            }
            Site site = SiteMaker.MakeSite(SiteCoreDefOf.Nothing, SitePartDefOf.Outpost, Find.FactionManager.FirstFactionOfDef(FactionDef.Named("ROMV_Sabbat")));

            site.Tile = tile;
            site.GetComponent <HandleVampireQuestComp>().StartQuest();
            Find.WorldObjects.Add(site);
            base.SendStandardLetter(site, "Potato");
            return(true);
        }
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            int tile;

            if (!TryFindNewSiteTile(out tile, 8, 30, false, true, -1))
            {
                return(false);
            }
            Site site = SiteMaker.MakeSite(SiteCoreDefOf.Nothing, DefDatabase <SitePartDef> .GetNamed("ROMV_AncientVampireCrypt"),
                                           Find.FactionManager.FirstFactionOfDef(FactionDef.Named("ROMV_LegendaryVampires")));

            site.Tile = tile;
            site.GetComponent <DefeatAllEnemiesQuestComp>().StartQuest(Faction.OfPlayer, 8f, GenerateRewards());
            Find.WorldObjects.Add(site);
            base.SendStandardLetter(site);
            return(true);
        }
        private void Outcome_Disaster(Caravan caravan)
        {
            Faction.TryAffectGoodwillWith(Faction.OfPlayer, -40);
            bool       chance   = Rand.Chance(0.5f);
            Settlement s        = chance ? Set1 : Set2;
            Settlement turncoat = (Settlement)WorldObjectMaker.MakeWorldObject(WorldObjectDefOf.Settlement);

            turncoat.SetFaction(Find.FactionManager.AllFactionsVisible.Where(f => !f.IsPlayer && f.HostileTo(Faction.OfPlayer)).RandomElementWithFallback(null));
            turncoat.Tile = s.Tile;
            turncoat.Name = s.Name;
            if (turncoat.Faction == null)
            {
                Outcome_Fail(caravan);
                return;
            }

            Settlement friendly = chance ? Set2 : Set1;

            Find.WorldObjects.Remove(s);
            Find.WorldObjects.Remove(chance ? Set2 : Set1);
            Find.WorldObjects.Add(turncoat);
            Site ambush = SiteMaker.MakeSite(SiteCoreDefOf.Nothing, SitePartDefOf.AmbushEdge, Tile, turncoat.Faction, true, StorytellerUtility.DefaultSiteThreatPointsNow());

            Find.LetterStack.ReceiveLetter("LetterLabelDisputeDisaster".Translate(), "DisputeDisaster".Translate(turncoat, turncoat.Faction, friendly)
                                           , LetterDefOf.ThreatBig, turncoat, null, "Disaster");

            LongEventHandler.QueueLongEvent(new Action(() =>
            {
                MapGenerator.GenerateMap(new IntVec3(110, 1, 110), ambush, MapGeneratorDefOf.Encounter);
                List <PawnKindDef> kindDefs = new List <PawnKindDef>();
                for (int i = 0; i < 2; i++)
                {
                    kindDefs.Clear();
                    Lord lord = LordMaker.MakeNewLord(i == 0 ? turncoat.Faction : Faction, new LordJob_AssaultColony(i == 0 ? turncoat.Faction : Faction), ambush.Map);
                    kindDefs  = Utilities.GeneratePawnKindDef(45, i == 0 ? turncoat.Faction : Faction);
                    // Balance
                    IntVec3 vec = CellFinder.RandomClosewalkCellNear(new IntVec3(ambush.Map.Center.x - 30 + (i * 60), ambush.Map.Center.y, ambush.Map.Center.z), ambush.Map, 10);
                    Utilities.GenerateFighter(StorytellerUtility.DefaultSiteThreatPointsNow() + 300, lord, kindDefs, ambush.Map, i == 0 ? turncoat.Faction : Faction, vec);
                }
                CaravanEnterMapUtility.Enter(caravan, ambush.Map, CaravanEnterMode.Center, CaravanDropInventoryMode.DoNotDrop, true);
            }), "GeneratingMapForNewEncounter", false, null);
            Utilities.FactionsWar().GetByFaction(turncoat.Faction).resources += FE_WorldComp_FactionsWar.SETTLEMENT_RESOURCE_VALUE * 2;
            Utilities.FactionsWar().GetByFaction(friendly.Faction).resources -= FE_WorldComp_FactionsWar.SETTLEMENT_RESOURCE_VALUE * 2;
            Find.WorldObjects.Remove(this);
        }
Exemplo n.º 25
0
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            Faction faction;
            Faction faction2;

            if (!this.TryFindFactions(out faction, out faction2))
            {
                return(false);
            }
            int tile;

            if (!TileFinder.TryFindNewSiteTile(out tile, 4, 25, false, true, -1))
            {
                return(false);
            }
            Site     site    = SiteMaker.MakeSite(SiteCoreDefOf.Nothing, SitePartDefOf.Outpost, tile, faction2, true);
            SitePart turrets = new SitePart();

            turrets.def = SitePartDefOf.Turrets;
            site.parts.Add(turrets);
            SitePart arcaneBanditSquad = new SitePart();

            arcaneBanditSquad.def = TorannMagicDefOf.ArcaneBanditSquad;
            site.parts.Add(arcaneBanditSquad);
            site.Tile = tile;
            List <Thing> list = this.GenerateRewards(faction, parms);

            site.GetComponent <DefeatAllEnemiesQuestComp>().StartQuest(faction, 12, list);
            Find.WorldObjects.Add(site);
            string itemList = "";

            for (int i = 0; i < list.Count(); i++)
            {
                itemList += list[i].LabelShort + "\n";
            }
            base.SendStandardLetter(site, faction, new string[]
            {
                faction.leader.LabelShort,
                faction.def.leaderTitle,
                faction.Name,
                itemList
            });
            return(true);
        }
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            Faction faction = parms.faction ?? Find.FactionManager.RandomAlliedFaction(allowHidden: false, allowDefeated: false, allowNonHumanlike: false);

            if (faction == null)
            {
                faction = Find.FactionManager.RandomNonHostileFaction(false, false, false);
                Log.ErrorOnce("MFI: No allied faction found, but event was forced. Using random faction.", 40830425);
            }

            if (!TryFindTile(tile: out int tile))
            {
                return(false);
            }

            Site site = SiteMaker.MakeSite(core: MFI_DefOf.MFI_HuntersLodgeCore,
                                           sitePart: MFI_DefOf.MFI_HuntersLodgePart,
                                           tile: tile, faction: faction, ifHostileThenMustRemainHostile: false);

            if (site == null)
            {
                return(false);
            }

            int randomInRange = TimeoutDaysRange.RandomInRange;

            site.Tile = tile;
            site.GetComponent <TimeoutComp>().StartTimeout(ticks: randomInRange * GenDate.TicksPerDay);
            site.SetFaction(newFaction: faction);
            site.customLabel = site.def.LabelCap + site.parts.First(predicate: x => x.def == MFI_DefOf.MFI_HuntersLodgePart).def.Worker
                               .GetPostProcessedThreatLabel(site, site.parts.FirstOrDefault());

            Find.WorldObjects.Add(o: site);

            string text = string.Format(format: this.def.letterText,
                                        faction,
                                        faction.def.leaderTitle,
                                        SitePartUtility.GetDescriptionDialogue(site, site.parts.FirstOrDefault()),
                                        randomInRange)
                          .CapitalizeFirst();

            Find.LetterStack.ReceiveLetter(label: this.def.letterLabel, text: text, textLetterDef: this.def.letterDef, lookTargets: site);
            return(true);
        }
        // Token: 0x06000DA9 RID: 3497 RVA: 0x000648C0 File Offset: 0x00062CC0
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            Faction faction;

            if (!this.TryFindFactions(out faction))
            {
                return(false);
            }
            int tile;

            if (!TileFinder.TryFindNewSiteTile(out tile, 8, 30, false, true, -1))
            {
                return(false);
            }
            Faction zFaction = Faction.OfInsects;

            foreach (Faction factionZ in Find.FactionManager.AllFactionsListForReading)
            {
                if (factionZ.def.defName == "Zombie")
                {
                    zFaction = factionZ;
                }
            }
            SitePartDef def = DefDatabase <SitePartDef> .GetNamed("ZombieOutpost", false);

            Site site = SiteMaker.MakeSite(SiteCoreDefOf.Nothing, def, tile, faction);
            //site.Tile = tile;
            List <Thing> list = this.GenerateRewards(faction);

            site.GetComponent <DefeatAllEnemiesQuestComp>().StartQuest(faction, 7, list);
            Find.WorldObjects.Add(site);

            /*
             * base.SendStandardLetter(site, new string[]
             * {
             *  faction.leader.LabelShort,
             *  faction.def.leaderTitle,
             *  faction.Name,
             *  list[0].LabelCap
             * });
             */
            return(true);
        }
Exemplo n.º 28
0
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            if (!tryFindTile(out int tile))
            {
                return(false);
            }
            if (!SiteMakerHelper.TryFindSiteParams_SingleSitePart(CavesDefOf.Biomes_SkulltopSprout, (string)null, out SitePartDef sitePart, out Faction faction))
            {
                return(false);
            }
            int  timeout = SiteTuning.QuestSiteTimeoutDaysRange.RandomInRange;
            Site site    = SiteMaker.MakeSite(CavesDefOf.Biomes_SkulltopSprout, sitePart, tile, faction);

            site.sitePartsKnown = true;
            site.GetComponent <TimeoutComp>().StartTimeout(SiteTuning.QuestSiteTimeoutDaysRange.RandomInRange * 60000);
            Find.WorldObjects.Add(site);
            SendStandardLetter(site);
            return(true);
        }
Exemplo n.º 29
0
        // Token: 0x06000DA9 RID: 3497 RVA: 0x000648C0 File Offset: 0x00062CC0
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            if (!this.TryFindFactions(out Faction faction, out Faction faction2))
            {
                return(false);
            }
            if (!TileFinder.TryFindNewSiteTile(out int tile, 8, 30, false, true, -1))
            {
                return(false);
            }
            Site site = SiteMaker.MakeSite(SiteCoreDefOf.DownedT5Android, SitePartDefOf.Turrets, tile, faction2);

            site.Tile = tile;
            int randomInRange = IncidentWorker_DownedT5Android.TimeoutDaysRange.RandomInRange;

            site.GetComponent <TimeoutComp>().StartTimeout(randomInRange * 60000);
            Find.WorldObjects.Add(site);
            return(true);
        }
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            var faction = parms.faction ?? Find.FactionManager.RandomAlliedFaction(false, false, false);

            if (faction == null)
            {
                Log.ErrorOnce("MFI: No allied faction found, but event was forced. Using random faction.", 40830425);
                faction = Find.FactionManager.RandomNonHostileFaction(allowNonHumanlike: false);
            }

            if (!TryFindTile(out var tile))
            {
                return(false);
            }

            var site = SiteMaker.MakeSite(MFI_DefOf.MFI_HuntersLodgePart,
                                          tile, faction, false);

            if (site == null)
            {
                return(false);
            }

            var randomInRange = TimeoutDaysRange.RandomInRange;

            site.Tile = tile;
            site.GetComponent <TimeoutComp>().StartTimeout(randomInRange * GenDate.TicksPerDay);
            site.SetFaction(faction);
            site.customLabel = site.def.LabelCap + site.parts.First(x => x.def == MFI_DefOf.MFI_HuntersLodgePart).def
                               .Worker.GetPostProcessedThreatLabel(site, site.parts.FirstOrDefault());

            Find.WorldObjects.Add(site);

            var text = string.Format(def.letterText,
                                     faction,
                                     faction.def.leaderTitle,
                                     GetDescriptionDialogue(site, site.parts.FirstOrDefault()),
                                     randomInRange)
                       .CapitalizeFirst();

            Find.LetterStack.ReceiveLetter(def.letterLabel, text, def.letterDef, site);
            return(true);
        }