protected override bool TestRunInt(Slate slate) { if (mustBeColonist.GetValue(slate) && mustBePrisoner.GetValue(slate)) { return(false); } return(PawnsFinder.AllMaps_FreeColonistsAndPrisoners.Any(p => GoodPawn(p, slate))); }
protected override void GiveQuest(IncidentParms parms, QuestScriptDef questDef) { Slate slate = new Slate(); slate.Set("points", parms.points); slate.Set("map", (Map)parms.target); QuestUtility.SendLetterQuestAvailable(QuestUtility.GenerateQuestAndMakeAvailable(questDef, slate)); }
public override void Notify_GeneratedByQuestGen(SitePart part, Slate slate, List <Rule> outExtraDescriptionRules, Dictionary <string, string> outExtraDescriptionConstants) { base.Notify_GeneratedByQuestGen(part, slate, outExtraDescriptionRules, outExtraDescriptionConstants); int mechanoidsCount = GetMechanoidsCount(part.site, part.parms); outExtraDescriptionRules.Add(new Rule_String("count", mechanoidsCount.ToString())); outExtraDescriptionConstants.Add("count", mechanoidsCount.ToString()); }
private bool IsGoodFaction(Faction faction, Slate slate) { if (faction.def.hidden && (this.allowedHiddenFactions.GetValue(slate) == null || !this.allowedHiddenFactions.GetValue(slate).Contains(faction))) { return(false); } if (this.ofPawn.GetValue(slate) != null && faction != this.ofPawn.GetValue(slate).Faction) { return(false); } if (this.exclude.GetValue(slate) != null && this.exclude.GetValue(slate).Contains(faction)) { return(false); } if (this.mustBePermanentEnemy.GetValue(slate) && !faction.def.permanentEnemy) { return(false); } if (!this.allowEnemy.GetValue(slate) && faction.HostileTo(Faction.OfPlayer)) { return(false); } if (!this.allowNeutral.GetValue(slate) && faction.PlayerRelationKind == FactionRelationKind.Neutral) { return(false); } if (!this.allowAlly.GetValue(slate) && faction.PlayerRelationKind == FactionRelationKind.Ally) { return(false); } if (!(this.allowPermanentEnemy.GetValue(slate) ?? true) && faction.def.permanentEnemy) { return(false); } if (this.playerCantBeAttackingCurrently.GetValue(slate) && SettlementUtility.IsPlayerAttackingAnySettlementOf(faction)) { return(false); } if (this.peaceTalksCantExist.GetValue(slate)) { if (this.PeaceTalksExist(faction)) { return(false); } string tag = QuestNode_QuestUnique.GetProcessedTag("PeaceTalks", faction); if (Find.QuestManager.questsInDisplayOrder.Any((Quest q) => q.tags.Contains(tag))) { return(false); } } if (this.leaderMustBeSafe.GetValue(slate) && (faction.leader == null || faction.leader.Spawned || faction.leader.IsPrisoner)) { return(false); } Thing value = this.mustBeHostileToFactionOf.GetValue(slate); return(value == null || value.Faction == null || (value.Faction != faction && faction.HostileTo(value.Faction))); }
public override void Notify_GeneratedByQuestGen(SitePart part, Slate slate, List <Rule> outExtraDescriptionRules, Dictionary <string, string> outExtraDescriptionConstants) { base.Notify_GeneratedByQuestGen(part, slate, outExtraDescriptionRules, outExtraDescriptionConstants); int enemiesCount = GetEnemiesCount(part.site, part.parms); float num = QuestTuning.PointsToRaidSourceRaidsMTBDaysCurve.Evaluate(part.parms.threatPoints); outExtraDescriptionRules.Add(new Rule_String("enemiesCount", enemiesCount.ToString())); outExtraDescriptionRules.Add(new Rule_String("mtbDays", ((int)(num * 60000f)).ToStringTicksToPeriod(allowSeconds: true, shortForm: false, canUseDecimals: false))); }
City RandomNearbyCity(Map homeMap, Slate slate) { return(Find.WorldObjects.Settlements .OfType <City>() .Where(s => s.Visitable == visitable.GetValue(slate) && s.Abandoned == abandoned.GetValue(slate) && s.HasMap == hasMap.GetValue(slate)) .RandomByDistance(homeMap?.Parent, Mathf.CeilToInt(maxTileDistance.GetValue(slate)))); }
protected override void RunInt() { Slate slate = QuestGen.slate; if (value1.GetValue(slate) > value2.GetValue(slate) && node != null) { node.Run(); } }
protected override void RunInt() { Slate slate = QuestGen.slate; QuestPart_ReplaceLostLeaderReferences questPart_ReplaceLostLeaderReferences = new QuestPart_ReplaceLostLeaderReferences(); questPart_ReplaceLostLeaderReferences.inSignal = QuestGenUtility.HardcodedSignalWithQuestID(inSignal.GetValue(slate)); questPart_ReplaceLostLeaderReferences.signalListenMode = signalListenMode.GetValue(slate) ?? QuestPart.SignalListenMode.OngoingOnly; QuestGen.quest.AddPart(questPart_ReplaceLostLeaderReferences); }
protected override void RunInt() { Slate slate = QuestGen.slate; Map map = QuestGen.slate.Get <Map>("map"); Thing ship = IncidentWorkerTraderShip.MakeTraderShip(map); QuestGen.slate.Set(storeAs.GetValue(slate), ship, false); QuestGen.slate.Set(storeAs.GetValue(slate) + "_label", ship.LabelCap, false); }
protected override void RunInt() { Slate slate = QuestGen.slate; QuestGen.quest.AddPart(new QuestPart_RequirementsToAcceptColonistWithTitle { minimumTitle = minimumTitle.GetValue(slate), faction = faction.GetValue(slate) }); }
protected override bool TestRunInt(Slate slate) { var mPawn = pawn.GetValue(slate); if (mPawn == null) { return(false); } return(GetAllAvailableMutations(slate).Any()); }
public override void Notify_GeneratedByQuestGen(SitePart part, Slate slate, List <Rule> outExtraDescriptionRules, Dictionary <string, string> outExtraDescriptionConstants) { base.Notify_GeneratedByQuestGen(part, slate, outExtraDescriptionRules, outExtraDescriptionConstants); int animalsCount = GetAnimalsCount(part.parms); string output = GenLabel.BestKindLabel(part.parms.animalKind, Gender.None, plural: true, animalsCount); outExtraDescriptionRules.Add(new Rule_String("count", animalsCount.ToString())); outExtraDescriptionRules.Add(new Rule_String("kindLabel", output)); outExtraDescriptionConstants.Add("count", animalsCount.ToString()); }
protected override bool TestRunInt(Slate slate) { var pawn = target.GetValue(slate); if (pawn == null || !MutagenDefOf.defaultMutagen.CanTransform(pawn)) { return(false); } return(GetTransformations(slate).Any()); }
public static void GenerateBestowingCeremonyQuest(Pawn pawn, Faction faction) { Slate slate = new Slate(); slate.Set("titleHolder", pawn); slate.Set("bestowingFaction", faction); if (QuestScriptDefOf.BestowingCeremony.CanRun(slate)) { QuestUtility.SendLetterQuestAvailable(QuestUtility.GenerateQuestAndMakeAvailable(QuestScriptDefOf.BestowingCeremony, slate)); } }
public override void Notify_GeneratedByQuestGen(SitePart part, Slate slate, List <Rule> outExtraDescriptionRules, Dictionary <string, string> outExtraDescriptionConstants) { base.Notify_GeneratedByQuestGen(part, slate, outExtraDescriptionRules, outExtraDescriptionConstants); Faction faction = Find.FactionManager.AllFactionsListForReading.Find(f => !f.defeated && !f.IsPlayer && f.RelationKindWith(Faction.OfPlayer) == FactionRelationKind.Hostile && f.def.defName.Contains("VFEV_Vikings")); if (faction == null) { faction = Find.FactionManager.RandomEnemyFaction(false, false, true, TechLevel.Neolithic); } part.site.SetFaction(faction); }
public override void Notify_GeneratedByQuestGen(SitePart part, Slate slate, List <Rule> outExtraDescriptionRules, Dictionary <string, string> outExtraDescriptionConstants) { base.Notify_GeneratedByQuestGen(part, slate, outExtraDescriptionRules, outExtraDescriptionConstants); ThingDef thingDef = slate.Get <ThingDef>("itemStashSingleThing", null, false); IEnumerable <ThingDef> enumerable = slate.Get <IEnumerable <ThingDef> >("itemStashThings", null, false); List <Thing> list = this.GenThingList(); part.things = new ThingOwner <Thing>(part, false, LookMode.Deep); part.things.TryAddRangeOrTransfer(list, false, false); outExtraDescriptionRules.Add(new Rule_String("itemStashContents", GenLabel.ThingsLabel(list, " - "))); outExtraDescriptionRules.Add(new Rule_String("itemStashContentsValue", GenThing.GetMarketValue(list).ToStringMoney(null))); }
static void GenerateIntelQuest(Faction faction, string name, int goodwill) { Slate slate = new Slate(); slate.Set("points", StorytellerUtility.DefaultThreatPointsNow(Find.World)); slate.Set("asker", faction.leader); Quest newQuest = QuestUtility.GenerateQuestAndMakeAvailable(DefDatabase <QuestScriptDef> .GetNamed(name), slate); QuestUtility.SendLetterQuestAvailable(newQuest); faction.lastTraderRequestTick = Find.TickManager.TicksGame; faction.TryAffectGoodwillWith(Faction.OfPlayer, -goodwill, canSendMessage: false, canSendHostilityLetter: true, "GoodwillChangedReason_RequestedIntel".Translate()); }
public override void Notify_GeneratedByQuestGen(SitePart part, Slate slate, List <Rule> outExtraDescriptionRules, Dictionary <string, string> outExtraDescriptionConstants) { base.Notify_GeneratedByQuestGen(part, slate, outExtraDescriptionRules, outExtraDescriptionConstants); if (part.site.ActualThreatPoints > 0f) { outExtraDescriptionRules.Add(new Rule_String("lumpThreatDescription", "\n\n" + "PreciousLumpHostileThreat".Translate())); } else { outExtraDescriptionRules.Add(new Rule_String("lumpThreatDescription", "")); } }
protected override bool TestRunInt(Slate slate) { if (value1.GetValue(slate) > value2.GetValue(slate)) { if (node != null) { return(node.TestRun(slate)); } return(true); } return(false); }
public bool CanRun(Slate slate) { try { return(root.TestRun(slate.DeepCopy())); } catch (Exception arg) { Log.Error("Error while checking if can generate quest: " + arg); } return(false); }
private bool SetFaction(out Faction faction, Slate slate) { var factionDef2 = factionDef.GetValue(slate); if (factionDef2 != null) { faction = Find.FactionManager.FirstFactionOfDef(factionDef2); return(faction != null); } faction = null; return(false); }
protected override bool TestRunInt(Slate slate) { if (slate.TryGet(storeAs.GetValue(slate), out Faction var) && IsGoodFaction(var, slate)) { return(true); } if (TryFindFaction(out var, slate)) { slate.Set(storeAs.GetValue(slate), var); return(true); } return(false); }
protected override void DoFind(Pawn worker) { Slate slate = new Slate(); slate.Set("map", parent.Map); slate.Set("targetMineable", targetMineable); slate.Set("worker", worker); if (QuestScriptDefOf.LongRangeMineralScannerLump.CanRun(slate)) { Quest quest = QuestUtility.GenerateQuestAndMakeAvailable(QuestScriptDefOf.LongRangeMineralScannerLump, slate); Find.LetterStack.ReceiveLetter(quest.name, quest.description, LetterDefOf.PositiveEvent, null, null, quest); } }
public override void Notify_GeneratedByQuestGen(SitePart part, Slate slate, List <Rule> outExtraDescriptionRules, Dictionary <string, string> outExtraDescriptionConstants) { base.Notify_GeneratedByQuestGen(part, slate, outExtraDescriptionRules, outExtraDescriptionConstants); Pawn pawn = PrisonerWillingToJoinQuestUtility.GeneratePrisoner(part.site.Tile, part.site.Faction); part.things = new ThingOwner <Pawn>(part, oneStackOnly: true); part.things.TryAdd(pawn); PawnRelationUtility.Notify_PawnsSeenByPlayer(Gen.YieldSingle(pawn), out string pawnRelationsInfo, informEvenIfSeenBefore: true, writeSeenPawnsNames: false); string output = pawnRelationsInfo.NullOrEmpty() ? "" : ((string)("\n\n" + "PawnHasTheseRelationshipsWithColonists".Translate(pawn.LabelShort, pawn) + "\n\n" + pawnRelationsInfo)); slate.Set("prisoner", pawn); outExtraDescriptionRules.Add(new Rule_String("prisonerFullRelationInfo", output)); }
private static DiaOption RequestAICoreQuest(Map map, Faction faction, Pawn negotiator) { TaggedString taggedString = "RequestAICoreInformation".Translate(ThingDefOf.AIPersonaCore.label, 1500.ToString()); if (faction.PlayerGoodwill < 40) { DiaOption diaOption = new DiaOption(taggedString); diaOption.Disable("NeedGoodwill".Translate(40.ToString("F0"))); return(diaOption); } bool num = PlayerItemAccessibilityUtility.ItemStashHas(ThingDefOf.AIPersonaCore); Slate slate = new Slate(); slate.Set("points", StorytellerUtility.DefaultThreatPointsNow(Find.World)); slate.Set("asker", faction.leader); slate.Set("itemStashSingleThing", ThingDefOf.AIPersonaCore); bool flag = QuestScriptDefOf.OpportunitySite_ItemStash.CanRun(slate); if (num || !flag) { DiaOption diaOption2 = new DiaOption(taggedString); diaOption2.Disable("NoKnownAICore".Translate(1500)); return(diaOption2); } if (AmountSendableSilver(map) < 1500) { DiaOption diaOption3 = new DiaOption(taggedString); diaOption3.Disable("NeedSilverLaunchable".Translate(1500)); return(diaOption3); } return(new DiaOption(taggedString) { action = delegate { Quest quest = QuestUtility.GenerateQuestAndMakeAvailable(QuestScriptDefOf.OpportunitySite_ItemStash, slate); if (!quest.hidden) { QuestUtility.SendLetterQuestAvailable(quest); } TradeUtility.LaunchThingsOfType(ThingDefOf.Silver, 1500, map, null); Current.Game.GetComponent <GameComponent_OnetimeNotification>().sendAICoreRequestReminder = false; }, link = new DiaNode("RequestAICoreInformationResult".Translate(faction.leader).CapitalizeFirst()) { options = { OKToRoot(faction, negotiator) } } }); }
public static DiaNode RoyalHeirChangeCandidates(Faction faction, Pawn factionRepresentative, Pawn negotiator) { DiaNode diaNode = new DiaNode("ChooseHeir".Translate(negotiator.Named("HOLDER"))); RoyalTitleDef title = negotiator.royalty.GetCurrentTitle(faction); Pawn heir2 = negotiator.royalty.GetHeir(faction); foreach (Pawn item in PawnsFinder.AllMaps_FreeColonistsAndPrisonersSpawned) { DiaOption diaOption = new DiaOption(item.Name.ToStringFull); if (item == negotiator || item == heir2) { continue; } if (item.royalty != null) { RoyalTitleDef currentTitle = item.royalty.GetCurrentTitle(faction); if (currentTitle != null && currentTitle.seniority >= title.seniority) { continue; } } if (item.IsQuestLodger()) { continue; } Pawn heir = item; Action confirmedAct = delegate { QuestScriptDef changeRoyalHeir = QuestScriptDefOf.ChangeRoyalHeir; Slate slate = new Slate(); slate.Set("points", title.changeHeirQuestPoints); slate.Set("asker", factionRepresentative); slate.Set("titleHolder", negotiator); slate.Set("titleHeir", heir); slate.Set("titlePreviousHeir", negotiator.royalty.GetHeir(faction)); Quest quest = QuestUtility.GenerateQuestAndMakeAvailable(changeRoyalHeir, slate); if (!quest.hidden) { QuestUtility.SendLetterQuestAvailable(quest); } }; diaOption.link = RoyalHeirChangeConfirm(faction, negotiator, heir2, confirmedAct); diaNode.options.Add(diaOption); } DiaOption diaOption2 = new DiaOption("GoBack".Translate()); diaOption2.linkLateBind = ResetToRoot(faction, negotiator); diaNode.options.Add(diaOption2); return(diaNode); }
protected override bool TestRunInt(Slate slate) { if (!TraderShips.settings.enableQuests) { return(false); } if (slate.Get <Map>("map") == null) { return(false); } return(true); }
public void LoadSlate(Slate newSlate) { slate = newSlate; lblKey.Text = slate.name; lblNameField.Text = slate.name; lblIdField.Text = slate.fieldID; for (int i = 0; i < slate.questions.Count; i++) { SlateCompView componentView = LoadControl("~/CustomControls/SlateCompView.ascx") as SlateCompView; componentView.loadQuestion(slate.questions[i]); PanelPreguntas.Controls.Add(componentView); } }
public override IEnumerable <QuestPart> GenerateQuestParts(int index, RewardsGeneratorParams parms, string customLetterLabel, string customLetterText, RulePack customLetterLabelRules, RulePack customLetterTextRules) { Slate slate = RimWorld.QuestGen.QuestGen.slate; for (int i = 0; i < items.Count; i++) { Pawn pawn = items[i] as Pawn; if (pawn != null) { RimWorld.QuestGen.QuestGen.AddToGeneratedPawns(pawn); if (!pawn.IsWorldPawn()) { Find.WorldPawns.PassToWorld(pawn); } } } if (parms.giveToCaravan) { QuestPart_GiveToCaravan questPart_GiveToCaravan = new QuestPart_GiveToCaravan(); questPart_GiveToCaravan.inSignal = slate.Get <string>("inSignal"); questPart_GiveToCaravan.Things = items; yield return(questPart_GiveToCaravan); } else { QuestPart_DropPods dropPods = new QuestPart_DropPods(); dropPods.inSignal = slate.Get <string>("inSignal"); if (!customLetterLabel.NullOrEmpty() || customLetterLabelRules != null) { RimWorld.QuestGen.QuestGen.AddTextRequest("root", delegate(string x) { dropPods.customLetterLabel = x; }, QuestGenUtility.MergeRules(customLetterLabelRules, customLetterLabel, "root")); } if (!customLetterText.NullOrEmpty() || customLetterTextRules != null) { RimWorld.QuestGen.QuestGen.AddTextRequest("root", delegate(string x) { dropPods.customLetterText = x; }, QuestGenUtility.MergeRules(customLetterTextRules, customLetterText, "root")); } dropPods.mapParent = slate.Get <Map>("map").Parent; dropPods.useTradeDropSpot = true; dropPods.Things = items; yield return(dropPods); } slate.Set("itemsReward_items", items); slate.Set("itemsReward_totalMarketValue", TotalMarketValue); }
protected override void RunInt() { Slate slate = QuestGen.slate; if (factionDef != null && SetFaction(out Faction var, slate) || (!QuestGen.slate.TryGet(storeAs.GetValue(slate), out var) || !IsGoodFaction(var, QuestGen.slate)) && TryFindFaction(out var, QuestGen.slate)) { QuestGen.slate.Set(storeAs.GetValue(slate), var); if (!var.Hidden) { QuestPart_InvolvedFactions questPart_InvolvedFactions = new QuestPart_InvolvedFactions(); questPart_InvolvedFactions.factions.Add(var); QuestGen.quest.AddPart(questPart_InvolvedFactions); } } }