Example #1
0
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            int tile;

            if (!this.TryFindTile(out tile))
            {
                return(false);
            }
            Site site = SiteMaker.TryMakeSite_SingleSitePart(SiteCoreDefOf.PrisonerWillingToJoin, "PrisonerRescueQuestThreat", tile, null, true, null, true, null);

            if (site == null)
            {
                return(false);
            }
            site.sitePartsKnown = true;
            Pawn pawn = PrisonerWillingToJoinQuestUtility.GeneratePrisoner(tile, site.Faction);

            site.GetComponent <PrisonerWillingToJoinComp>().pawn.TryAdd(pawn, true);
            int randomInRange = SiteTuning.QuestSiteTimeoutDaysRange.RandomInRange;

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

            this.GetLetterText(pawn, site, site.parts.FirstOrDefault <SitePart>(), randomInRange, out text, out label);
            Find.LetterStack.ReceiveLetter(label, text, this.def.letterDef, site, site.Faction, null);
            return(true);
        }
Example #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);
        }
Example #3
0
        private void FoundMinerals(Pawn worker)
        {
            this.daysWorkingSinceLastMinerals = 0f;
            IntRange preciousLumpSiteDistanceRange = SiteTuning.PreciousLumpSiteDistanceRange;
            int      min  = preciousLumpSiteDistanceRange.min;
            int      max  = preciousLumpSiteDistanceRange.max;
            int      tile = this.parent.Tile;
            int      tile2;

            if (!TileFinder.TryFindNewSiteTile(out tile2, min, max, false, true, tile))
            {
                return;
            }
            Site site = SiteMaker.TryMakeSite_SingleSitePart(SiteCoreDefOf.PreciousLump, (!Rand.Chance(0.6f)) ? "MineralScannerPreciousLumpThreat" : null, tile2, null, true, null, true, null);

            if (site != null)
            {
                site.sitePartsKnown = true;
                site.core.parms.preciousLumpResources = this.targetMineable;
                int randomInRange = SiteTuning.MineralScannerPreciousLumpTimeoutDaysRange.RandomInRange;
                site.GetComponent <TimeoutComp>().StartTimeout(randomInRange * 60000);
                Find.WorldObjects.Add(site);
                Find.LetterStack.ReceiveLetter("LetterLabelFoundPreciousLump".Translate(), "LetterFoundPreciousLump".Translate(this.targetMineable.label, randomInRange, SitePartUtility.GetDescriptionDialogue(site, site.parts.FirstOrDefault <SitePart>()).CapitalizeFirst(), worker.LabelShort, worker.Named("WORKER")), LetterDefOf.PositiveEvent, site, null, null);
            }
        }
        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);
        }
Example #5
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);
        }
        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);
        }
Example #7
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);
        }
Example #8
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);
        }
Example #9
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);
        }
Example #10
0
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            int tile = default(int);

            if (!this.TryFindTile(out tile))
            {
                return(false);
            }
            Site site = SiteMaker.TryMakeSite_SingleSitePart(SiteCoreDefOf.PrisonerWillingToJoin, IncidentWorker_QuestPrisonerWillingToJoin.PrisonerWillingToJoinQuestThreatTag, null, true, null);

            if (site == null)
            {
                return(false);
            }
            site.Tile = tile;
            Pawn pawn = PrisonerWillingToJoinQuestUtility.GeneratePrisoner(tile, site.Faction);

            ((WorldObject)site).GetComponent <PrisonerWillingToJoinComp>().pawn.TryAdd(pawn, true);
            int randomInRange = IncidentWorker_QuestPrisonerWillingToJoin.TimeoutDaysRange.RandomInRange;

            ((WorldObject)site).GetComponent <TimeoutComp>().StartTimeout(randomInRange * 60000);
            Find.WorldObjects.Add(site);
            Find.LetterStack.ReceiveLetter(base.def.letterLabel, this.GetLetterText(pawn, site.Faction, randomInRange), base.def.letterDef, site, null);
            return(true);
        }
Example #11
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);
        }
        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)
        {
            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);
        }
Example #14
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);
        }
Example #15
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);
        }
        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);
        }
Example #18
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);
        }
Example #19
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);
        }
        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);
        }
Example #21
0
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            int tile;

            if (!this.TryFindTile(out tile))
            {
                return(false);
            }
            Site site = SiteMaker.TryMakeSite_SingleSitePart(SiteCoreDefOf.DownedRefugee, (!Rand.Chance(0.3f)) ? "DownedRefugeeQuestThreat" : null, tile, null, true, null, true, null);

            if (site == null)
            {
                return(false);
            }
            site.sitePartsKnown = true;
            Pawn pawn = DownedRefugeeQuestUtility.GenerateRefugee(tile);

            site.GetComponent <DownedRefugeeComp>().pawn.TryAdd(pawn, true);
            int randomInRange = SiteTuning.QuestSiteRefugeeTimeoutDaysRange.RandomInRange;

            site.GetComponent <TimeoutComp>().StartTimeout(randomInRange * 60000);
            Find.WorldObjects.Add(site);
            string text  = this.def.letterLabel;
            string text2 = string.Format(this.def.letterText.AdjustedFor(pawn, "PAWN"), new object[]
            {
                randomInRange,
                pawn.ageTracker.AgeBiologicalYears,
                pawn.story.Title,
                SitePartUtility.GetDescriptionDialogue(site, site.parts.FirstOrDefault <SitePart>())
            }).CapitalizeFirst();
            Pawn mostImportantColonyRelative = PawnRelationUtility.GetMostImportantColonyRelative(pawn);

            if (mostImportantColonyRelative != null)
            {
                PawnRelationDef mostImportantRelation = mostImportantColonyRelative.GetMostImportantRelation(pawn);
                if (mostImportantRelation != null && mostImportantRelation.opinionOffset > 0)
                {
                    pawn.relations.relativeInvolvedInRescueQuest = mostImportantColonyRelative;
                    text2 = text2 + "\n\n" + "RelatedPawnInvolvedInQuest".Translate(new object[]
                    {
                        mostImportantColonyRelative.LabelShort,
                        mostImportantRelation.GetGenderSpecificLabel(pawn)
                    }).AdjustedFor(pawn, "PAWN");
                }
                else
                {
                    PawnRelationUtility.TryAppendRelationsWithColonistsInfo(ref text2, pawn);
                }
                text = text + " " + "RelationshipAppendedLetterSuffix".Translate();
            }
            if (pawn.relations != null)
            {
                pawn.relations.everSeenByPlayer = true;
            }
            Find.LetterStack.ReceiveLetter(text, text2, this.def.letterDef, site, null, null);
            return(true);
        }
Example #22
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);
        }
Example #23
0
        private static void SpawnSiteWithPoints()
        {
            int tile = GenWorld.MouseTile();

            if (tile < 0 || Find.World.Impassable(tile))
            {
                Messages.Message("Impassable", MessageTypeDefOf.RejectInput, historical: false);
                return;
            }
            List <SitePartDef> parts   = new List <SitePartDef>();
            Action             addPart = null;
            float       localPoints    = default(float);
            SitePartDef localPart      = default(SitePartDef);

            addPart = delegate
            {
                List <DebugMenuOption> list = new List <DebugMenuOption>
                {
                    new DebugMenuOption("-Done (" + parts.Count + " parts)-", DebugMenuOptionMode.Action, delegate
                    {
                        List <DebugMenuOption> list2 = new List <DebugMenuOption>();
                        foreach (float item in DebugActionsUtility.PointsOptions(extended: true))
                        {
                            localPoints = item;
                            list2.Add(new DebugMenuOption(item.ToString("F0"), DebugMenuOptionMode.Action, delegate
                            {
                                Site site = SiteMaker.TryMakeSite(parts, tile, disallowNonHostileFactions: true, null, ifHostileThenMustRemainHostile: true, localPoints);
                                if (site == null)
                                {
                                    Messages.Message("Could not find any valid faction for this site.", MessageTypeDefOf.RejectInput, historical: false);
                                }
                                else
                                {
                                    Find.WorldObjects.Add(site);
                                }
                            }));
                        }
                        Find.WindowStack.Add(new Dialog_DebugOptionListLister(list2));
                    })
                };
                foreach (SitePartDef allDef in DefDatabase <SitePartDef> .AllDefs)
                {
                    localPart = allDef;
                    list.Add(new DebugMenuOption(allDef.defName, DebugMenuOptionMode.Action, delegate
                    {
                        parts.Add(localPart);
                        addPart();
                    }));
                }
                Find.WindowStack.Add(new Dialog_DebugOptionListLister(list));
            };
            addPart();
        }
        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);
        }
Example #25
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);
        }
Example #26
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();
        }
Example #27
0
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            int tile;

            if (!this.TryFindTile(out tile))
            {
                return(false);
            }
            Site site = SiteMaker.TryMakeSite_SingleSitePart(SiteCoreDefOf.DownedRefugee, (!Rand.Chance(0.3f)) ? IncidentWorker_QuestDownedRefugee.DownedRefugeeQuestThreatTag : null, null, true, null);

            if (site == null)
            {
                return(false);
            }
            site.Tile = tile;
            Pawn pawn = DownedRefugeeQuestUtility.GenerateRefugee(tile);

            site.GetComponent <DownedRefugeeComp>().pawn.TryAdd(pawn, true);
            int randomInRange = IncidentWorker_QuestDownedRefugee.TimeoutDaysRange.RandomInRange;

            site.GetComponent <TimeoutComp>().StartTimeout(randomInRange * 60000);
            Find.WorldObjects.Add(site);
            string text = string.Format(this.def.letterText.AdjustedFor(pawn), pawn.Label, randomInRange).CapitalizeFirst();
            Pawn   mostImportantColonyRelative = PawnRelationUtility.GetMostImportantColonyRelative(pawn);

            if (mostImportantColonyRelative != null)
            {
                PawnRelationDef mostImportantRelation = mostImportantColonyRelative.GetMostImportantRelation(pawn);
                if (mostImportantRelation != null && mostImportantRelation.opinionOffset > 0)
                {
                    pawn.relations.relativeInvolvedInRescueQuest = mostImportantColonyRelative;
                    text = text + "\n\n" + "RelatedPawnInvolvedInQuest".Translate(new object[]
                    {
                        mostImportantColonyRelative.LabelShort,
                        mostImportantRelation.GetGenderSpecificLabel(pawn)
                    }).AdjustedFor(pawn);
                }
                else
                {
                    PawnRelationUtility.TryAppendRelationsWithColonistsInfo(ref text, pawn);
                }
            }
            if (pawn.relations != null)
            {
                pawn.relations.everSeenByPlayer = true;
            }
            Find.LetterStack.ReceiveLetter(this.def.letterLabel, text, this.def.letterDef, site, null);
            return(true);
        }
        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);
        }
        private void FoundMinerals()
        {
            int tile  = base.parent.Tile;
            int tile2 = default(int);

            if (TileFinder.TryFindNewSiteTile(out tile2, 8, 30, false, true, tile))
            {
                Site site = SiteMaker.TryMakeSite_SingleSitePart(SiteCoreDefOf.PreciousLump, (!Rand.Chance(0.6f)) ? CompLongRangeMineralScanner.MineralScannerPreciousLumpThreatTag : null, null, true, null);
                if (site != null)
                {
                    site.Tile = tile2;
                    Find.WorldObjects.Add(site);
                    Find.LetterStack.ReceiveLetter("LetterLabelFoundPreciousLump".Translate(), "LetterFoundPreciousLump".Translate(), LetterDefOf.PositiveEvent, site, null);
                }
            }
        }
        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);
        }