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); }
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); }
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); }
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); }
// 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 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) { 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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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 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); }
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); }
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 (!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); }