コード例 #1
0
        protected override void RunInt()
        {
            Slate slate = QuestGen.slate;

            if (Rand.Chance(chance.GetValue(slate)))
            {
                if (node != null)
                {
                    if (node.TestRun(QuestGen.slate.DeepCopy()))
                    {
                        node.Run();
                    }
                    else if (elseNode != null && elseNode.TestRun(QuestGen.slate.DeepCopy()))
                    {
                        elseNode.Run();
                    }
                }
            }
            else if (elseNode != null)
            {
                if (elseNode.TestRun(QuestGen.slate.DeepCopy()))
                {
                    elseNode.Run();
                }
                else if (node != null && node.TestRun(QuestGen.slate.DeepCopy()))
                {
                    node.Run();
                }
            }
        }
コード例 #2
0
 protected override void RunInt()
 {
     QuestGen.quest.GiveRewards(parms.GetValue(QuestGen.slate), inSignal.GetValue(QuestGen.slate), customLetterLabel.GetValue(QuestGen.slate), customLetterText.GetValue(QuestGen.slate), customLetterLabelRules.GetValue(QuestGen.slate), customLetterTextRules.GetValue(QuestGen.slate), useDifficultyFactor.GetValue(QuestGen.slate), delegate
     {
         nodeIfChosenPawnSignalUsed?.Run();
     }, variants.GetValue(QuestGen.slate), addCampLootReward.GetValue(QuestGen.slate), QuestGen.slate.Get <Pawn>("asker"));
 }
コード例 #3
0
        protected override void RunInt()
        {
            Slate slate = QuestGen.slate;

            if (QuestNodeEqualUtility.Equal(value1.GetValue(slate), value2.GetValue(slate), compareAs.GetValue(slate)) && node != null)
            {
                node.Run();
            }
        }
コード例 #4
0
 public static void RunInnerNode(QuestNode node, string innerNodeInSignal)
 {
     Slate.VarRestoreInfo restoreInfo = QuestGen.slate.GetRestoreInfo("inSignal");
     QuestGen.slate.Set("inSignal", innerNodeInSignal);
     try
     {
         node.Run();
     }
     finally
     {
         QuestGen.slate.Restore(restoreInfo);
     }
 }
コード例 #5
0
 protected override void RunInt()
 {
     if (HasRoyalTitleInCurrentFaction(QuestGen.slate))
     {
         if (node != null)
         {
             node.Run();
         }
     }
     else if (elseNode != null)
     {
         elseNode.Run();
     }
 }
 protected override void RunInt()
 {
     if (IsHostile(QuestGen.slate))
     {
         if (node != null)
         {
             node.Run();
         }
     }
     else if (elseNode != null)
     {
         elseNode.Run();
     }
 }
コード例 #7
0
 protected override void RunInt()
 {
     if (IsOfRoyalFaction(QuestGen.slate))
     {
         if (node != null)
         {
             node.Run();
         }
     }
     else if (elseNode != null)
     {
         elseNode.Run();
     }
 }
コード例 #8
0
 protected override void RunInt()
 {
     if (IsFreeWorldPawn(QuestGen.slate))
     {
         if (node != null)
         {
             node.Run();
         }
     }
     else if (elseNode != null)
     {
         elseNode.Run();
     }
 }
コード例 #9
0
 protected override void RunInt()
 {
     if (AnyHiddenSitePart(QuestGen.slate))
     {
         if (node != null)
         {
             node.Run();
         }
     }
     else if (elseNode != null)
     {
         elseNode.Run();
     }
 }
コード例 #10
0
		protected override void RunInt()
		{
			if (IsPermanentEnemy(QuestGen.slate))
			{
				if (node != null)
				{
					node.Run();
				}
			}
			else if (elseNode != null)
			{
				elseNode.Run();
			}
		}
コード例 #11
0
        protected override void RunInt()
        {
            Slate slate = QuestGen.slate;

            Slate.VarRestoreInfo restoreInfo = QuestGen.slate.GetRestoreInfo(name.GetValue(slate));
            QuestGen.slate.Set(name.GetValue(slate), value.GetValue(slate));
            try
            {
                node.Run();
            }
            finally
            {
                QuestGen.slate.Restore(restoreInfo);
            }
        }
コード例 #12
0
        protected override void RunInt()
        {
            Slate slate = QuestGen.slate;

            if (Matches(value.GetValue(slate)))
            {
                if (node != null)
                {
                    node.Run();
                }
            }
            else if (elseNode != null)
            {
                elseNode.Run();
            }
        }
コード例 #13
0
        protected override void RunInt()
        {
            Slate slate = QuestGen.slate;

            if (QuestGen.slate.Exists(name.GetValue(slate)))
            {
                if (node != null)
                {
                    node.Run();
                }
            }
            else if (elseNode != null)
            {
                elseNode.Run();
            }
        }
コード例 #14
0
        protected override void RunInt()
        {
            Slate slate = QuestGen.slate;

            if (QuestGenUtility.IsInList(slate, name.GetValue(slate), value.GetValue(slate)))
            {
                if (node != null)
                {
                    node.Run();
                }
            }
            else if (elseNode != null)
            {
                elseNode.Run();
            }
        }
コード例 #15
0
        protected override void RunInt()
        {
            Slate slate = QuestGen.slate;

            for (int i = 0; i < loopCount.GetValue(slate); i++)
            {
                if (storeLoopCounterAs.GetValue(slate) != null)
                {
                    QuestGen.slate.Set(storeLoopCounterAs.GetValue(slate), i);
                }
                try
                {
                    node.Run();
                }
                finally
                {
                    QuestGen.slate.PopPrefix();
                }
            }
        }
コード例 #16
0
        protected override void RunInt()
        {
            Slate  slate = QuestGen.slate;
            string value = prefix.GetValue(slate);
            List <Slate.VarRestoreInfo> varsRestoreInfo = QuestGenUtility.SetVarsForPrefix(parms, value, QuestGen.slate);

            if (!value.NullOrEmpty())
            {
                QuestGen.slate.PushPrefix(value, allowNonPrefixedLookup.GetValue(slate));
            }
            try
            {
                node.Run();
            }
            finally
            {
                if (!value.NullOrEmpty())
                {
                    QuestGen.slate.PopPrefix();
                }
                QuestGenUtility.GetReturnedVars(returnVarNames, value, QuestGen.slate);
                QuestGenUtility.RestoreVarsForPrefix(varsRestoreInfo, QuestGen.slate);
            }
        }
コード例 #17
0
        protected override void RunInt()
        {
            Slate slate = QuestGen.slate;
            Pawn  pawn  = slate.Get <Pawn>("asker");
            bool  num   = useDifficultyFactor.GetValue(slate) ?? true;
            RewardsGeneratorParams value = parms.GetValue(slate);

            value.rewardValue = slate.Get("rewardValue", 0f);
            if (num)
            {
                value.rewardValue *= Find.Storyteller.difficulty.questRewardValueFactor;
            }
            if (slate.Get("debugDontGenerateRewardThings", defaultValue: false))
            {
                DebugActionsQuests.lastQuestGeneratedRewardValue += Mathf.Max(value.rewardValue, 250f);
                return;
            }
            value.minGeneratedRewardValue = 250f;
            value.giverFaction            = pawn?.Faction;
            value.populationIntent        = QuestTuning.PopIncreasingRewardWeightByPopIntentCurve.Evaluate(StorytellerUtilityPopulation.PopulationIntentForQuest);
            if (value.giverFaction == null || value.giverFaction.def.permanentEnemy)
            {
                value.allowGoodwill = false;
            }
            if (value.giverFaction == null || pawn.royalty == null || !pawn.royalty.HasAnyTitleIn(pawn.Faction) || value.giverFaction.HostileTo(Faction.OfPlayer))
            {
                value.allowRoyalFavor = false;
            }
            Slate.VarRestoreInfo restoreInfo = slate.GetRestoreInfo("inSignal");
            if (!inSignal.GetValue(slate).NullOrEmpty())
            {
                slate.Set("inSignal", QuestGenUtility.HardcodedSignalWithQuestID(inSignal.GetValue(slate)));
            }
            try
            {
                QuestPart_Choice questPart_Choice = new QuestPart_Choice();
                questPart_Choice.inSignalChoiceUsed = slate.Get <string>("inSignal");
                bool chosenPawnSignalUsed = false;
                int  num2 = (value.allowGoodwill && value.giverFaction != null && value.giverFaction.HostileTo(Faction.OfPlayer)) ? 1 : (variants.GetValue(slate) ?? (QuestGen.quest.root.autoAccept ? 1 : 3));
                generatedRewards.Clear();
                for (int i = 0; i < num2; i++)
                {
                    QuestPart_Choice.Choice choice = new QuestPart_Choice.Choice();
                    List <Reward>           list   = GenerateRewards(value, slate, i == 0, ref chosenPawnSignalUsed, choice, num2);
                    if (list != null)
                    {
                        questPart_Choice.choices.Add(choice);
                        generatedRewards.Add(list);
                    }
                }
                generatedRewards.Clear();
                if (addCampLootReward.GetValue(slate))
                {
                    for (int j = 0; j < questPart_Choice.choices.Count; j++)
                    {
                        questPart_Choice.choices[j].rewards.Add(new Reward_CampLoot());
                    }
                }
                questPart_Choice.choices.SortByDescending(GetDisplayPriority);
                QuestGen.quest.AddPart(questPart_Choice);
                if (chosenPawnSignalUsed && nodeIfChosenPawnSignalUsed != null)
                {
                    tmpPrevQuestParts.Clear();
                    tmpPrevQuestParts.AddRange(QuestGen.quest.PartsListForReading);
                    nodeIfChosenPawnSignalUsed.Run();
                    List <QuestPart> partsListForReading = QuestGen.quest.PartsListForReading;
                    for (int k = 0; k < partsListForReading.Count; k++)
                    {
                        if (!tmpPrevQuestParts.Contains(partsListForReading[k]))
                        {
                            for (int l = 0; l < questPart_Choice.choices.Count; l++)
                            {
                                bool flag = false;
                                for (int m = 0; m < questPart_Choice.choices[l].rewards.Count; m++)
                                {
                                    if (questPart_Choice.choices[l].rewards[m].MakesUseOfChosenPawnSignal)
                                    {
                                        flag = true;
                                        break;
                                    }
                                }
                                if (flag)
                                {
                                    questPart_Choice.choices[l].questParts.Add(partsListForReading[k]);
                                }
                            }
                        }
                    }
                    tmpPrevQuestParts.Clear();
                }
            }
            finally
            {
                slate.Restore(restoreInfo);
            }
        }