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());
        }
Example #4
0
        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)));
        }
Example #5
0
        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)));
        }
Example #6
0
 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))));
 }
Example #7
0
        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);
        }
Example #10
0
        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());
        }
Example #12
0
        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());
        }
Example #13
0
        protected override bool TestRunInt(Slate slate)
        {
            var pawn = target.GetValue(slate);

            if (pawn == null || !MutagenDefOf.defaultMutagen.CanTransform(pawn))
            {
                return(false);
            }

            return(GetTransformations(slate).Any());
        }
Example #14
0
        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));
            }
        }
Example #15
0
        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)));
        }
Example #17
0
        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", ""));
     }
 }
Example #19
0
 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);
 }
Example #21
0
        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);
        }
Example #22
0
 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));
        }
Example #25
0
        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)
                    }
                }
            });
        }
Example #26
0
        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);
        }
Example #30
0
        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);
                }
            }
        }