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);
        }
Exemple #2
0
        public override IEnumerable <QuestPart> GenerateQuestParts(int index, RewardsGeneratorParams parms, string customLetterLabel, string customLetterText, RulePack customLetterLabelRules, RulePack customLetterTextRules)
        {
            Slate slate = RimWorld.QuestGen.QuestGen.slate;

            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   = Gen.YieldSingle(pawn);
                yield return(questPart_GiveToCaravan);

                yield break;
            }
            QuestPart_PawnsArrive pawnsArrive = new QuestPart_PawnsArrive();

            pawnsArrive.inSignal = slate.Get <string>("inSignal");
            pawnsArrive.pawns.Add(pawn);
            pawnsArrive.arrivalMode = ((arrivalMode == ArrivalMode.DropPod) ? PawnsArrivalModeDefOf.CenterDrop : PawnsArrivalModeDefOf.EdgeWalkIn);
            pawnsArrive.joinPlayer  = true;
            pawnsArrive.mapParent   = slate.Get <Map>("map").Parent;
            if (!customLetterLabel.NullOrEmpty() || customLetterLabelRules != null)
            {
                RimWorld.QuestGen.QuestGen.AddTextRequest("root", delegate(string x)
                {
                    pawnsArrive.customLetterLabel = x;
                }, QuestGenUtility.MergeRules(customLetterLabelRules, customLetterLabel, "root"));
            }
            if (!customLetterText.NullOrEmpty() || customLetterTextRules != null)
            {
                RimWorld.QuestGen.QuestGen.AddTextRequest("root", delegate(string x)
                {
                    pawnsArrive.customLetterText = x;
                }, QuestGenUtility.MergeRules(customLetterTextRules, customLetterText, "root"));
            }
            yield return(pawnsArrive);
        }