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); }
// Token: 0x06000075 RID: 117 RVA: 0x00004B08 File Offset: 0x00002D08 private string GetLetterText(Faction alliedFaction, List <Thing> items, int days, Site site, SitePart sitePart) { string result = GrammarResolverSimpleStringExtensions.Formatted(this.def.letterText, alliedFaction.leader.LabelShort, alliedFaction.def.leaderTitle, alliedFaction.Name, GenLabel.ThingsLabel(items, " - "), days.ToString(), SitePartUtility.GetDescriptionDialogue(site, sitePart), GenThing.GetMarketValue(items).ToStringMoney(null)).CapitalizeFirst(); GenThing.TryAppendSingleRewardInfo(ref result, items); return(result); }
private void HostileDefeated() { // Killed all hostiles - Win outcome if (!GenHostility.AnyHostileActiveThreatTo(((MapParent)parent).Map, Faction.OfPlayer)) { active = false; DropPodUtility.DropThingsNear(DropCellFinder.TradeDropSpot(Find.AnyPlayerHomeMap), Find.AnyPlayerHomeMap, rewards, 110, false, true, true); parent.Faction.TryAffectGoodwillWith(Faction.OfPlayer, +15, false, true); if (!Find.WorldObjects.Settlements.Where(s => s.Faction == enemy && !s.Faction.def.hidden && Find.WorldReachability.CanReach(Find.AnyPlayerHomeMap.Tile, s.Tile)).TryRandomElement(out Settlement enemySet)) { Find.LetterStack.ReceiveLetter("LetterLabelOutpostdefensesuccess".Translate(), TranslatorFormattedStringExtensions.Translate("Outpostdefensesuccess", parent.Faction.leader, parent.Faction.def.leaderTitle, GenLabel.ThingsLabel(rewards, string.Empty)), EndGameDefOf.FE_JointRaid.letterDef, null, parent.Faction, null); active = false; return; } List <Thing> rewardsNew = ThingSetMakerDefOf.Reward_StandardByDropPod.root.Generate(new ThingSetMakerParams() { totalMarketValueRange = new FloatRange?(SiteTuning.BanditCampQuestRewardMarketValueRange * SiteTuning.QuestRewardMarketValueThreatPointsFactor.Evaluate(StorytellerUtility.DefaultSiteThreatPointsNow() + 500f)) }); Thing silver = ThingMaker.MakeThing(ThingDefOf.Silver); silver.stackCount = (int)FE_IncidentWorker_Jointraid.SilverBonusRewardCurve.Evaluate(parent.Faction.PlayerGoodwill); int random = new IntRange(Global.DayInTicks * 15, Global.DayInTicks * 25).RandomInRange; enemySet.GetComponent <WorldComp_JointRaid>().StartComp(random, parent.Faction, rewardsNew, silver); string text = TranslatorFormattedStringExtensions.Translate("OutpostdefensesuccessJointRaid", parent.Faction.leader, parent.Faction.def.leaderTitle, GenLabel.ThingsLabel(rewardsNew, string.Empty), random.ToStringTicksToPeriod(), GenThing.GetMarketValue(rewards).ToStringMoney(null), silver.stackCount.ToString(), GenLabel.ThingsLabel(rewards, string.Empty)).CapitalizeFirst(); GenThing.TryAppendSingleRewardInfo(ref text, rewards); Find.LetterStack.ReceiveLetter(EndGameDefOf.FE_JointRaid.letterLabel, text, EndGameDefOf.FE_JointRaid.letterDef, enemySet, parent.Faction, null); } }
protected override bool TryExecuteWorker(IncidentParms parms) { if (!TryFindSettlement(out Faction ally, out Settlement Set)) { return(false); } // Balance List <Thing> rewards = ThingSetMakerDefOf.Reward_StandardByDropPod.root.Generate(new ThingSetMakerParams() { totalMarketValueRange = new FloatRange?(SiteTuning.BanditCampQuestRewardMarketValueRange * SiteTuning.QuestRewardMarketValueThreatPointsFactor.Evaluate(StorytellerUtility.DefaultSiteThreatPointsNow() + 500f)) }); Thing silver = ThingMaker.MakeThing(ThingDefOf.Silver); silver.stackCount = (int)SilverBonusRewardCurve.Evaluate(ally.PlayerGoodwill); int random = new IntRange(Global.DayInTicks * 15, Global.DayInTicks * 25).RandomInRange; Set.GetComponent <WorldComp_JointRaid>().StartComp(random, ally, rewards, silver); string text = def.letterText.Formatted(ally.leader.LabelShort, ally.def.leaderTitle, ally.Name, GenLabel.ThingsLabel(rewards, string.Empty), random.ToStringTicksToPeriod(), GenThing.GetMarketValue(rewards).ToStringMoney(null), silver.stackCount.ToString()).CapitalizeFirst(); GenThing.TryAppendSingleRewardInfo(ref text, rewards); Find.LetterStack.ReceiveLetter(def.letterLabel, text, def.letterDef, Set, ally, null); return(true); }
private bool HostileDefeated() { if (parent.GetComponent <TimedForcedExit>().ForceExitAndRemoveMapCountdownActive) { return(false); } MapParent map = (MapParent)parent; if (map.HasMap && map.Faction == ally && survivors && !GenHostility.AnyHostileActiveThreatTo(map.Map, map.Faction)) { parent.Faction.TryAffectGoodwillWith(Faction.OfPlayer, 12); DropPodUtility.DropThingsNear(DropCellFinder.TradeDropSpot(Find.AnyPlayerHomeMap), Find.AnyPlayerHomeMap, rewards, 110, false, true, true); string text = TranslatorFormattedStringExtensions.Translate("SettlementDefenderWon", parent, TimedForcedExit.GetForceExitAndRemoveMapCountdownTimeLeftString(Global.DayInTicks), parent.Faction.leader) + GenLabel.ThingsLabel(rewards, string.Empty); GenThing.TryAppendSingleRewardInfo(ref text, rewards); Find.LetterStack.ReceiveLetter("LetterLabelSettlementDefenderWon".Translate(), text, LetterDefOf.PositiveEvent, parent, null, null); map.Map.Parent.GetComponent <TimedForcedExit>().StartForceExitAndRemoveMapCountdown(Global.DayInTicks); return(true); } return(false); }
protected override bool TryExecuteWorker(IncidentParms parms) { if (!TryFindFactions(out Faction ally, out Faction enemyFaction) || !TryFindTile(ally, out Settlement sis)) { return(false); } int random = new IntRange(Global.DayInTicks * 15, Global.DayInTicks * 25).RandomInRange; List <Thing> rewards = ThingSetMakerDefOf.Reward_StandardByDropPod.root.Generate(new ThingSetMakerParams() { totalMarketValueRange = new FloatRange?(SiteTuning.BanditCampQuestRewardMarketValueRange * SiteTuning.QuestRewardMarketValueThreatPointsFactor.Evaluate(StorytellerUtility.DefaultSiteThreatPointsNow() + 500f)) }); sis.GetComponent <WorldComp_SettlementDefender>().StartComp(enemyFaction, ally, random, rewards); string text = def.letterText.Formatted(ally.leader.LabelShort, ally.def.leaderTitle, ally.Name, GenLabel.ThingsLabel(rewards, string.Empty), random.ToStringTicksToPeriod(), GenThing.GetMarketValue(rewards).ToStringMoney(null)).CapitalizeFirst(); GenThing.TryAppendSingleRewardInfo(ref text, rewards); Find.LetterStack.ReceiveLetter(def.letterLabel, text, def.letterDef, sis, ally, null); return(true); }
public virtual string GenerateRewards(Pawn pawn, Caravan caravan, Predicate <ThingDef> globalValidator, ThingSetMakerDef thingSetMakerDef) { List <Thing> rewards = new List <Thing>(); if (thingSetMakerDef != null) { ThingSetMakerParams parms = default; parms.validator = globalValidator; parms.qualityGenerator = QualityGenerator.Reward; rewards = thingSetMakerDef.root.Generate(parms); } string rewardsToCommaList = GenThing.ThingsToCommaList(rewards); GenThing.TryAppendSingleRewardInfo(ref rewardsToCommaList, rewards); foreach (Thing itemReward in rewards) { caravan.AddPawnOrItem(itemReward, true); } return(rewardsToCommaList); }
protected override bool TryExecuteWorker(IncidentParms parms) { if (!TryFindAdjcentSettlemet(out Settlement bomber)) { return(false); } float silver = silverCurve.Evaluate(1 - (1 / Find.AnyPlayerHomeMap.wealthWatcher.WealthTotal)); List <Thing> demand = new List <Thing>(); GenerateDemands(demand, silver); silver = GenThing.GetMarketValue(demand); int countdown = countDown.RandomInRange * Global.DayInTicks; string text = TranslatorFormattedStringExtensions.Translate("BombardmentThreat", bomber.Faction.leader, bomber.Faction.def.leaderTitle, bomber.Name, silver.ToStringMoney(null), GenLabel.ThingsLabel(demand, string.Empty), countdown.ToStringTicksToPeriod()); GenThing.TryAppendSingleRewardInfo(ref text, demand); DiaNode nodeRoot = new DiaNode(text); nodeRoot.options.Add(new DiaOption("BombardmentThreat_AcceptThings".Translate()) { action = () => { foreach (Thing t in demand) { TradeUtility.LaunchThingsOfType(t.def, t.stackCount, Find.AnyPlayerHomeMap, null); } }, link = new DiaNode(TranslatorFormattedStringExtensions.Translate("BombardmentThreatAcceptThings", bomber.Faction.leader)) { options = { new DiaOption("OK".Translate()) { resolveTree = true } } } }); if (TradeUtility.ColonyHasEnoughSilver(TradeUtility.PlayerHomeMapWithMostLaunchableSilver(), (int)silver * 2)) { nodeRoot.options.Add(new DiaOption("BombardmentThreat_AcceptSilver".Translate((silver * 2).ToStringMoney())) { action = () => { TradeUtility.LaunchSilver(Find.AnyPlayerHomeMap, (int)silver * 2); }, link = new DiaNode(TranslatorFormattedStringExtensions.Translate("BombardmentThreatAcceptThings", bomber.Faction.leader)) { options = { new DiaOption("OK".Translate()) { resolveTree = true } } } }); } else { nodeRoot.options.Add(new DiaOption("BombardmentThreat_AcceptSilver".Translate(((float)silver * 2).ToStringMoney())) { disabled = true, disabledReason = "BombardmentThreat_AcceptSilverDisabled".Translate() }); } nodeRoot.options.Add(new DiaOption("BombardmentThreat_Refusal".Translate()) { action = () => { Find.AnyPlayerHomeMap.GetComponent <FE_MapComponent_Bombardment>().StartComp(def.durationDays.RandomInRange * Global.DayInTicks, bomber, countdown); }, link = new DiaNode("BombardmentThreatRefusal".Translate(bomber.Faction.leader)) { options = { new DiaOption("OK".Translate()) { resolveTree = true } } } }); string title = "LetterLabelBombardmentTitle".Translate(); Find.WindowStack.Add(new Dialog_NodeTreeWithFactionInfo(nodeRoot, bomber.Faction, true, true, title)); Find.Archive.Add(new ArchivedDialog(nodeRoot.text, title, bomber.Faction)); return(true); }