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); }
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); }