コード例 #1
0
        protected override void RunInt()
        {
            Slate                   slate                   = QuestGen.slate;
            float                   points                  = QuestGen.slate.Get("points", 0f);
            GameCondition           gameCondition           = GameConditionMaker.MakeCondition(this.gameCondition.GetValue(slate), duration.GetValue(slate));
            QuestPart_GameCondition questPart_GameCondition = new QuestPart_GameCondition();

            questPart_GameCondition.gameCondition = gameCondition;
            List <Rule> list = new List <Rule>();
            Dictionary <string, string> dictionary = new Dictionary <string, string>();

            if (targetWorld.GetValue(slate))
            {
                questPart_GameCondition.targetWorld = true;
                gameCondition.RandomizeSettings(points, null, list, dictionary);
            }
            else
            {
                Map map = GetMap(QuestGen.slate);
                questPart_GameCondition.mapParent = map.Parent;
                gameCondition.RandomizeSettings(points, map, list, dictionary);
            }
            questPart_GameCondition.inSignal = (QuestGenUtility.HardcodedSignalWithQuestID(inSignal.GetValue(slate)) ?? QuestGen.slate.Get <string>("inSignal"));
            QuestGen.quest.AddPart(questPart_GameCondition);
            if (!storeGameConditionDescriptionFutureAs.GetValue(slate).NullOrEmpty())
            {
                slate.Set(storeGameConditionDescriptionFutureAs.GetValue(slate), gameCondition.def.descriptionFuture);
            }
            QuestGen.AddQuestNameRules(list);
            QuestGen.AddQuestDescriptionRules(list);
            QuestGen.AddQuestDescriptionConstants(dictionary);
        }
コード例 #2
0
        private bool TrySetVars(Slate slate)
        {
            float   points       = slate.Get("points", 0f);
            Faction factionToUse = slate.Get <Faction>("enemyFaction");
            Pawn    asker        = slate.Get <Pawn>("asker");
            Thing   mustBeHostileToFactionOfResolved = mustBeHostileToFactionOf.GetValue(slate);

            for (int i = 0; i < 2; i++)
            {
                tmpTags.Clear();
                foreach (SitePartOption item in sitePartsTags.GetValue(slate))
                {
                    if (Rand.Chance(item.chance) && (i != 1 || !(item.chance < 1f)))
                    {
                        tmpTags.Add(item.tag);
                    }
                }
                if (!SiteMakerHelper.TryFindSiteParams_MultipleSiteParts(tmpTags.Where((string x) => x != null).Select(delegate(string x)
                {
                    IEnumerable <SitePartDef> enumerable = SiteMakerHelper.SitePartDefsWithTag(x);
                    IEnumerable <SitePartDef> enumerable2 = enumerable.Where((SitePartDef y) => points >= y.minThreatPoints);
                    return((!enumerable2.Any()) ? enumerable : enumerable2);
                }), out List <SitePartDef> siteParts, out Faction faction, factionToUse, disallowNonHostileFactions: true, delegate(Faction x)
                {
                    if (asker != null && asker.Faction != null && asker.Faction == x)
                    {
                        return(false);
                    }
                    return((mustBeHostileToFactionOfResolved == null || mustBeHostileToFactionOfResolved.Faction == null || (x != mustBeHostileToFactionOfResolved.Faction && x.HostileTo(mustBeHostileToFactionOfResolved.Faction))) ? true : false);
                }))
                {
                    continue;
                }
                slate.Set(storeAs.GetValue(slate), siteParts);
                slate.Set("sitePartCount", siteParts.Count);
                if (QuestGen.Working)
                {
                    Dictionary <string, string> dictionary = new Dictionary <string, string>();
                    for (int j = 0; j < siteParts.Count; j++)
                    {
                        dictionary[siteParts[j].defName + "_exists"] = "True";
                    }
                    QuestGen.AddQuestDescriptionConstants(dictionary);
                }
                if (!storeFactionAs.GetValue(slate).NullOrEmpty())
                {
                    slate.Set(storeFactionAs.GetValue(slate), faction);
                }
                return(true);
            }
            return(false);
        }
コード例 #3
0
        public static Site GenerateSite(IEnumerable <SitePartDefWithParams> sitePartsParams, int tile, Faction faction, bool hiddenSitePartsPossible = false, RulePack singleSitePartRules = null)
        {
            _ = QuestGen.slate;
            bool flag = false;

            foreach (SitePartDefWithParams sitePartsParam in sitePartsParams)
            {
                if (sitePartsParam.def.defaultHidden)
                {
                    flag = true;
                    break;
                }
            }
            if (flag || hiddenSitePartsPossible)
            {
                SitePartParams        parms = SitePartDefOf.PossibleUnknownThreatMarker.Worker.GenerateDefaultParams(0f, tile, faction);
                SitePartDefWithParams val   = new SitePartDefWithParams(SitePartDefOf.PossibleUnknownThreatMarker, parms);
                sitePartsParams = sitePartsParams.Concat(Gen.YieldSingle(val));
            }
            Site        site = SiteMaker.MakeSite(sitePartsParams, tile, faction);
            List <Rule> list = new List <Rule>();
            Dictionary <string, string> dictionary = new Dictionary <string, string>();
            List <string> list2 = new List <string>();
            int           num   = 0;

            for (int i = 0; i < site.parts.Count; i++)
            {
                List <Rule> list3 = new List <Rule>();
                Dictionary <string, string> dictionary2 = new Dictionary <string, string>();
                site.parts[i].def.Worker.Notify_GeneratedByQuestGen(site.parts[i], QuestGen.slate, list3, dictionary2);
                if (site.parts[i].hidden)
                {
                    continue;
                }
                if (singleSitePartRules != null)
                {
                    List <Rule> list4 = new List <Rule>();
                    list4.AddRange(list3);
                    list4.AddRange(singleSitePartRules.Rules);
                    string text = QuestGenUtility.ResolveLocalText(list4, dictionary2, "root", capitalizeFirstSentence: false);
                    list.Add(new Rule_String("sitePart" + num + "_description", text));
                    if (!text.NullOrEmpty())
                    {
                        list2.Add(text);
                    }
                }
                for (int j = 0; j < list3.Count; j++)
                {
                    Rule        rule        = list3[j].DeepCopy();
                    Rule_String rule_String = rule as Rule_String;
                    if (rule_String != null && num != 0)
                    {
                        rule_String.keyword = "sitePart" + num + "_" + rule_String.keyword;
                    }
                    list.Add(rule);
                }
                foreach (KeyValuePair <string, string> item in dictionary2)
                {
                    string text2 = item.Key;
                    if (num != 0)
                    {
                        text2 = "sitePart" + num + "_" + text2;
                    }
                    if (!dictionary.ContainsKey(text2))
                    {
                        dictionary.Add(text2, item.Value);
                    }
                }
                num++;
            }
            if (!list2.Any())
            {
                list.Add(new Rule_String("allSitePartsDescriptions", "HiddenOrNoSitePartDescription".Translate()));
                list.Add(new Rule_String("allSitePartsDescriptionsExceptFirst", "HiddenOrNoSitePartDescription".Translate()));
            }
            else
            {
                list.Add(new Rule_String("allSitePartsDescriptions", list2.ToClauseSequence().Resolve()));
                if (list2.Count >= 2)
                {
                    list.Add(new Rule_String("allSitePartsDescriptionsExceptFirst", list2.Skip(1).ToList().ToClauseSequence()));
                }
                else
                {
                    list.Add(new Rule_String("allSitePartsDescriptionsExceptFirst", "HiddenOrNoSitePartDescription".Translate()));
                }
            }
            QuestGen.AddQuestDescriptionRules(list);
            QuestGen.AddQuestNameRules(list);
            QuestGen.AddQuestDescriptionConstants(dictionary);
            QuestGen.AddQuestNameConstants(dictionary);
            QuestGen.AddQuestNameRules(new List <Rule>
            {
                new Rule_String("site_label", site.Label)
            });
            return(site);
        }