コード例 #1
0
        public static void AnySignal(this Quest quest, IEnumerable <string> inSignals = null, Action action = null, IEnumerable <string> outSignals = null, QuestPart.SignalListenMode signalListenMode = QuestPart.SignalListenMode.OngoingOnly)
        {
            _ = QuestGen.slate;
            switch ((outSignals?.Count() ?? 0) + ((action != null) ? 1 : 0))
            {
            case 0:
                return;

            case 1:
            {
                QuestPart_PassAny questPart_PassAny = new QuestPart_PassAny();
                foreach (string inSignal in inSignals)
                {
                    questPart_PassAny.inSignals.Add(QuestGenUtility.HardcodedSignalWithQuestID(inSignal));
                }
                if (action != null)
                {
                    questPart_PassAny.outSignal = QuestGen.GenerateNewSignal("OuterNodeCompleted");
                    QuestGenUtility.RunInner(action, questPart_PassAny.outSignal);
                }
                else
                {
                    questPart_PassAny.outSignal = QuestGenUtility.HardcodedSignalWithQuestID(outSignals.First());
                }
                questPart_PassAny.signalListenMode = signalListenMode;
                quest.AddPart(questPart_PassAny);
                return;
            }
            }
            QuestPart_PassAnyOutMany questPart_PassAnyOutMany = new QuestPart_PassAnyOutMany();

            foreach (string inSignal2 in inSignals)
            {
                questPart_PassAnyOutMany.inSignals.Add(QuestGenUtility.HardcodedSignalWithQuestID(inSignal2));
            }
            if (action != null)
            {
                string text = QuestGen.GenerateNewSignal("OuterNodeCompleted");
                questPart_PassAnyOutMany.outSignals.Add(text);
                QuestGenUtility.RunInner(action, text);
            }
            foreach (string outSignal in outSignals)
            {
                questPart_PassAnyOutMany.outSignals.Add(QuestGenUtility.HardcodedSignalWithQuestID(outSignal));
            }
            questPart_PassAnyOutMany.signalListenMode = signalListenMode;
            quest.AddPart(questPart_PassAnyOutMany);
        }
コード例 #2
0
        public static QuestPart_BetrayalOffer BetrayalOffer(this Quest quest, IEnumerable <Pawn> pawns, ExtraFaction extraFaction, Pawn asker, Action success = null, Action failure = null, Action enabled = null, IEnumerable <string> inSignals = null, string inSignalEnable = null, QuestPart.SignalListenMode signalListenMode = QuestPart.SignalListenMode.OngoingOnly)
        {
            QuestPart_BetrayalOffer questPart_BetrayalOffer = new QuestPart_BetrayalOffer();

            questPart_BetrayalOffer.pawns.AddRange(pawns);
            questPart_BetrayalOffer.asker            = asker;
            questPart_BetrayalOffer.extraFaction     = extraFaction;
            questPart_BetrayalOffer.inSignalEnable   = inSignalEnable ?? QuestGen.slate.Get <string>("inSignal");
            questPart_BetrayalOffer.signalListenMode = signalListenMode;
            if (inSignals != null)
            {
                questPart_BetrayalOffer.inSignals.AddRange(inSignals);
            }
            if (success != null)
            {
                string text = QuestGen.GenerateNewSignal("BetrayalOfferSuccess");
                QuestGenUtility.RunInner(success, text);
                questPart_BetrayalOffer.outSignalSuccess = text;
            }
            if (failure != null)
            {
                string text2 = QuestGen.GenerateNewSignal("BetrayalOfferFailure");
                QuestGenUtility.RunInner(failure, text2);
                questPart_BetrayalOffer.outSignalFailure = text2;
            }
            if (enabled != null)
            {
                string text3 = QuestGen.GenerateNewSignal("BetrayalOfferEnabled");
                QuestGenUtility.RunInner(enabled, text3);
                questPart_BetrayalOffer.outSignalEnabled = text3;
            }
            quest.AddPart(questPart_BetrayalOffer);
            return(questPart_BetrayalOffer);
        }
コード例 #3
0
        public static QuestPart_PassActivable SignalPassActivable(this Quest quest, Action action = null, string inSignalEnable = null, string inSignal = null, string outSignalCompleted = null, IEnumerable <string> outSignalsCompleted = null, string inSignalDisable = null, bool reactivatable = false)
        {
            QuestPart_PassActivable questPart_PassActivable = new QuestPart_PassActivable();

            questPart_PassActivable.inSignalEnable  = inSignalEnable ?? QuestGen.slate.Get <string>("inSignal");
            questPart_PassActivable.inSignalDisable = inSignalDisable;
            questPart_PassActivable.inSignal        = inSignal;
            questPart_PassActivable.reactivatable   = reactivatable;
            if (action != null)
            {
                string text = QuestGen.GenerateNewSignal("OuterNodeCompleted");
                QuestGenUtility.RunInner(action, text);
                questPart_PassActivable.outSignalsCompleted.Add(text);
            }
            if (outSignalsCompleted != null)
            {
                questPart_PassActivable.outSignalsCompleted.AddRange(outSignalsCompleted);
            }
            if (!outSignalCompleted.NullOrEmpty())
            {
                questPart_PassActivable.outSignalsCompleted.Add(outSignalCompleted);
            }
            quest.AddPart(questPart_PassActivable);
            return(questPart_PassActivable);
        }
コード例 #4
0
        public static QuestPart_ShuttleLeaveDelay ShuttleLeaveDelay(this Quest quest, Thing shuttle, int delayTicks, string inSignalEnable = null, IEnumerable <string> inSignalsDisable = null, string outSignalComplete = null, Action complete = null)
        {
            QuestPart_ShuttleLeaveDelay questPart_ShuttleLeaveDelay = new QuestPart_ShuttleLeaveDelay();

            questPart_ShuttleLeaveDelay.inSignalEnable    = inSignalEnable ?? QuestGen.slate.Get <string>("inSignal");
            questPart_ShuttleLeaveDelay.delayTicks        = delayTicks;
            questPart_ShuttleLeaveDelay.shuttle           = shuttle;
            questPart_ShuttleLeaveDelay.expiryInfoPart    = "ShuttleDepartsIn".Translate();
            questPart_ShuttleLeaveDelay.expiryInfoPartTip = "ShuttleDepartsOn".Translate();
            if (inSignalsDisable != null)
            {
                foreach (string item in inSignalsDisable)
                {
                    questPart_ShuttleLeaveDelay.inSignalsDisable.Add(item);
                }
            }
            if (!outSignalComplete.NullOrEmpty())
            {
                questPart_ShuttleLeaveDelay.outSignalsCompleted.Add(outSignalComplete);
            }
            if (complete != null)
            {
                string text = QuestGen.GenerateNewSignal("ShuttleLeaveDelay");
                QuestGenUtility.RunInner(complete, text);
                questPart_ShuttleLeaveDelay.outSignalsCompleted.Add(text);
            }
            quest.AddPart(questPart_ShuttleLeaveDelay);
            return(questPart_ShuttleLeaveDelay);
        }
コード例 #5
0
        public static Quest MakeAndAddTradeRequestQuest(WorldObject destination, string description, TradeRequestComp tradeRequest)
        {
            Quest quest = Quest.MakeRaw();

            quest.SetInitiallyAccepted();
            string text = "Quest" + quest.id + ".TradeRequestSite";

            QuestUtility.AddQuestTag(ref destination.questTags, text);
            QuestPartUtility.MakeAndAddEndCondition <QuestPart_NoWorldObject>(quest, quest.InitiateSignal, QuestEndOutcome.Unknown).worldObject = destination;
            QuestPartUtility.MakeAndAddEndCondition <QuestPart_NoWorldObject>(quest, text + ".TradeRequestFulfilled", QuestEndOutcome.Success);
            if (destination.rewards != null)
            {
                QuestPart_GiveToCaravan questPart_GiveToCaravan = new QuestPart_GiveToCaravan
                {
                    inSignal = text + ".TradeRequestFulfilled",
                    Things   = destination.rewards
                };
                foreach (Thing thing in questPart_GiveToCaravan.Things)
                {
                    thing.holdingOwner = null;
                }
                quest.AddPart(questPart_GiveToCaravan);
            }
            quest.description = description;
            Find.QuestManager.Add(quest);
            return(quest);
        }
コード例 #6
0
        public static QuestPart_ReserveFaction ReserveFaction(this Quest quest, Faction faction)
        {
            QuestPart_ReserveFaction questPart_ReserveFaction = new QuestPart_ReserveFaction();

            questPart_ReserveFaction.faction = faction;
            quest.AddPart(questPart_ReserveFaction);
            return(questPart_ReserveFaction);
        }
コード例 #7
0
        public static QuestPart_ReservePawns ReservePawns(this Quest quest, IEnumerable <Pawn> pawns)
        {
            QuestPart_ReservePawns questPart_ReservePawns = new QuestPart_ReservePawns();

            questPart_ReservePawns.pawns.AddRange(pawns);
            quest.AddPart(questPart_ReservePawns);
            return(questPart_ReservePawns);
        }
コード例 #8
0
        public static QuestPart_BiocodeWeapons BiocodeWeapons(this Quest quest, IEnumerable <Pawn> pawns, string inSignal = null)
        {
            QuestPart_BiocodeWeapons questPart_BiocodeWeapons = new QuestPart_BiocodeWeapons();

            questPart_BiocodeWeapons.pawns.AddRange(pawns);
            questPart_BiocodeWeapons.inSignal = inSignal ?? QuestGen.slate.Get <string>("inSignal");
            quest.AddPart(questPart_BiocodeWeapons);
            return(questPart_BiocodeWeapons);
        }
コード例 #9
0
        public static void Log(this Quest quest, string message, string inSignal = null, QuestPart.SignalListenMode signalListenMode = QuestPart.SignalListenMode.OngoingOnly)
        {
            QuestPart_Log questPart_Log = new QuestPart_Log();

            questPart_Log.inSignal         = QuestGenUtility.HardcodedSignalWithQuestID(inSignal) ?? QuestGen.slate.Get <string>("inSignal");
            questPart_Log.signalListenMode = signalListenMode;
            questPart_Log.message          = message;
            quest.AddPart(questPart_Log);
        }
コード例 #10
0
        public static QuestPart_SendShuttleAwayOnCleanup SendShuttleAwayOnCleanup(this Quest quest, Thing shuttle, bool dropEverything = false)
        {
            QuestPart_SendShuttleAwayOnCleanup questPart_SendShuttleAwayOnCleanup = new QuestPart_SendShuttleAwayOnCleanup();

            questPart_SendShuttleAwayOnCleanup.shuttle        = shuttle;
            questPart_SendShuttleAwayOnCleanup.dropEverything = dropEverything;
            quest.AddPart(questPart_SendShuttleAwayOnCleanup);
            return(questPart_SendShuttleAwayOnCleanup);
        }
コード例 #11
0
        public static QuestPart_SpawnWorldObject SpawnWorldObject(this Quest quest, WorldObject worldObject, List <ThingDef> defsToExcludeFromHyperlinks = null, string inSignal = null)
        {
            QuestPart_SpawnWorldObject questPart_SpawnWorldObject = new QuestPart_SpawnWorldObject();

            questPart_SpawnWorldObject.inSignal = QuestGenUtility.HardcodedSignalWithQuestID(inSignal) ?? QuestGen.slate.Get <string>("inSignal");
            questPart_SpawnWorldObject.defsToExcludeFromHyperlinks = defsToExcludeFromHyperlinks;
            questPart_SpawnWorldObject.worldObject = worldObject;
            quest.AddPart(questPart_SpawnWorldObject);
            return(questPart_SpawnWorldObject);
        }
コード例 #12
0
        public static QuestPart_FeedPawns FeedPawns(this Quest quest, IEnumerable <Pawn> pawns = null, Thing pawnsInTransporter = null, string inSignal = null)
        {
            QuestPart_FeedPawns questPart_FeedPawns = new QuestPart_FeedPawns();

            questPart_FeedPawns.pawnsInTransporter = pawnsInTransporter;
            questPart_FeedPawns.pawns    = pawns?.ToList();
            questPart_FeedPawns.inSignal = QuestGenUtility.HardcodedSignalWithQuestID(inSignal) ?? QuestGen.slate.Get <string>("inSignal");
            quest.AddPart(questPart_FeedPawns);
            return(questPart_FeedPawns);
        }
コード例 #13
0
        public static QuestPart_SetFactionHidden SetFactionHidden(this Quest quest, Faction faction, bool hidden = false, string inSignal = null)
        {
            QuestPart_SetFactionHidden questPart_SetFactionHidden = new QuestPart_SetFactionHidden();

            questPart_SetFactionHidden.faction  = faction;
            questPart_SetFactionHidden.inSignal = inSignal ?? QuestGen.slate.Get <string>("inSignal");
            questPart_SetFactionHidden.hidden   = hidden;
            quest.AddPart(questPart_SetFactionHidden);
            return(questPart_SetFactionHidden);
        }
コード例 #14
0
        public static void Leave(this Quest quest, IEnumerable <Pawn> pawns, string inSignal = null, bool sendStandardLetter = true, bool leaveOnCleanup = true, string inSignalRemovePawn = null)
        {
            QuestPart_Leave questPart_Leave = new QuestPart_Leave();

            questPart_Leave.inSignal = inSignal ?? QuestGen.slate.Get <string>("inSignal");
            questPart_Leave.pawns.AddRange(pawns);
            questPart_Leave.sendStandardLetter = sendStandardLetter;
            questPart_Leave.leaveOnCleanup     = leaveOnCleanup;
            questPart_Leave.inSignalRemovePawn = inSignalRemovePawn;
            quest.AddPart(questPart_Leave);
        }
コード例 #15
0
        public static QuestPart_SetFactionRelations SetFactionRelations(this Quest quest, Faction faction, FactionRelationKind relationKind, string inSignal = null, bool?canSendLetter = null)
        {
            QuestPart_SetFactionRelations questPart_SetFactionRelations = new QuestPart_SetFactionRelations();

            questPart_SetFactionRelations.inSignal      = QuestGenUtility.HardcodedSignalWithQuestID(inSignal) ?? QuestGen.slate.Get <string>("inSignal");
            questPart_SetFactionRelations.faction       = faction;
            questPart_SetFactionRelations.relationKind  = relationKind;
            questPart_SetFactionRelations.canSendLetter = canSendLetter ?? true;
            quest.AddPart(questPart_SetFactionRelations);
            return(questPart_SetFactionRelations);
        }
コード例 #16
0
        public static QuestPart_InvolvedFactions AddInvolvedFaction(this Quest quest, Faction faction)
        {
            QuestPart_InvolvedFactions questPart_InvolvedFactions = ((QuestPart_InvolvedFactions)quest.PartsListForReading.First((QuestPart p) => p is QuestPart_InvolvedFactions)) ?? new QuestPart_InvolvedFactions();

            questPart_InvolvedFactions.factions.Add(faction);
            if (!quest.PartsListForReading.Contains(questPart_InvolvedFactions))
            {
                quest.AddPart(questPart_InvolvedFactions);
            }
            return(questPart_InvolvedFactions);
        }
コード例 #17
0
        public static QuestPart_LeavePlayer LeavePlayer(this Quest quest, IEnumerable <Pawn> pawns, string inSignal = null, Faction replacementFaction = null, string inSignalRemovePawn = null)
        {
            QuestPart_LeavePlayer questPart_LeavePlayer = new QuestPart_LeavePlayer();

            questPart_LeavePlayer.inSignal = QuestGenUtility.HardcodedSignalWithQuestID(inSignal) ?? QuestGen.slate.Get <string>("inSignal");
            questPart_LeavePlayer.pawns.AddRange(pawns);
            questPart_LeavePlayer.replacementFaction = replacementFaction;
            questPart_LeavePlayer.inSignalRemovePawn = inSignalRemovePawn;
            quest.AddPart(questPart_LeavePlayer);
            return(questPart_LeavePlayer);
        }
コード例 #18
0
        public static QuestPart_Choice RewardChoice(this Quest quest, IEnumerable <QuestPart_Choice.Choice> choices = null, string inSignalChoiceUsed = null)
        {
            QuestPart_Choice questPart_Choice = new QuestPart_Choice();

            questPart_Choice.inSignalChoiceUsed = inSignalChoiceUsed;
            if (choices != null)
            {
                questPart_Choice.choices.AddRange(choices);
            }
            quest.AddPart(questPart_Choice);
            return(questPart_Choice);
        }
コード例 #19
0
        public static QuestPart_AssaultColony AssaultColony(this Quest quest, Faction faction, MapParent mapParent, IEnumerable <Pawn> pawns, string inSignal = null, string inSignalRemovePawn = null)
        {
            QuestPart_AssaultColony questPart_AssaultColony = new QuestPart_AssaultColony();

            questPart_AssaultColony.inSignal  = QuestGenUtility.HardcodedSignalWithQuestID(inSignal) ?? QuestGen.slate.Get <string>("inSignal");
            questPart_AssaultColony.faction   = faction;
            questPart_AssaultColony.mapParent = mapParent;
            questPart_AssaultColony.pawns.AddRange(pawns);
            questPart_AssaultColony.inSignalRemovePawn = inSignalRemovePawn;
            quest.AddPart(questPart_AssaultColony);
            return(questPart_AssaultColony);
        }
コード例 #20
0
        public static QuestPart_JoinPlayer JoinPlayer(this Quest quest, MapParent mapParent, IEnumerable <Pawn> pawns, bool joinPlayer = false, bool makePrisoners = false, string inSignal = null)
        {
            QuestPart_JoinPlayer questPart_JoinPlayer = new QuestPart_JoinPlayer();

            questPart_JoinPlayer.inSignal      = QuestGenUtility.HardcodedSignalWithQuestID(inSignal) ?? QuestGen.slate.Get <string>("inSignal");
            questPart_JoinPlayer.joinPlayer    = joinPlayer;
            questPart_JoinPlayer.makePrisoners = makePrisoners;
            questPart_JoinPlayer.mapParent     = mapParent;
            questPart_JoinPlayer.pawns.AddRange(pawns);
            quest.AddPart(questPart_JoinPlayer);
            return(questPart_JoinPlayer);
        }
コード例 #21
0
        public static void SignalPass(this Quest quest, Action action = null, string inSignal = null, string outSignal = null)
        {
            QuestPart_Pass questPart_Pass = new QuestPart_Pass();

            questPart_Pass.inSignal = inSignal ?? QuestGen.slate.Get <string>("inSignal");
            if (action != null)
            {
                outSignal = outSignal ?? QuestGen.GenerateNewSignal("OuterNodeCompleted");
                QuestGenUtility.RunInner(action, outSignal);
            }
            questPart_Pass.outSignal = outSignal;
            quest.AddPart(questPart_Pass);
        }
コード例 #22
0
        public static QuestPart_ExitOnShuttle ExitOnShuttle(this Quest quest, MapParent mapParent, IEnumerable <Pawn> pawns, Faction faction, Thing shuttle, string inSignal = null, bool addFleeToil = true)
        {
            QuestPart_ExitOnShuttle questPart_ExitOnShuttle = new QuestPart_ExitOnShuttle();

            questPart_ExitOnShuttle.inSignal = inSignal ?? QuestGen.slate.Get <string>("inSignal");
            questPart_ExitOnShuttle.pawns.AddRange(pawns);
            questPart_ExitOnShuttle.mapParent   = mapParent;
            questPart_ExitOnShuttle.faction     = faction;
            questPart_ExitOnShuttle.shuttle     = shuttle;
            questPart_ExitOnShuttle.addFleeToil = addFleeToil;
            quest.AddPart(questPart_ExitOnShuttle);
            return(questPart_ExitOnShuttle);
        }
コード例 #23
0
        public static QuestPart_ExtraFaction ExtraFaction(this Quest quest, Faction faction, IEnumerable <Pawn> pawns, ExtraFactionType factionType, bool areHelpers = false, string inSignalRemovePawn = null)
        {
            QuestPart_ExtraFaction questPart_ExtraFaction = new QuestPart_ExtraFaction
            {
                affectedPawns      = pawns.ToList(),
                extraFaction       = new ExtraFaction(faction, factionType),
                areHelpers         = areHelpers,
                inSignalRemovePawn = inSignalRemovePawn
            };

            quest.AddPart(questPart_ExtraFaction);
            return(questPart_ExtraFaction);
        }
コード例 #24
0
        public static QuestPart_WaitForEscort WaitForEscort(this Quest quest, MapParent mapParent, IEnumerable <Pawn> pawns, Faction faction, IntVec3 position, string inSignal = null, bool addFleeToil = true)
        {
            QuestPart_WaitForEscort questPart_WaitForEscort = new QuestPart_WaitForEscort();

            questPart_WaitForEscort.point    = position;
            questPart_WaitForEscort.inSignal = inSignal ?? QuestGen.slate.Get <string>("inSignal");
            questPart_WaitForEscort.pawns.AddRange(pawns);
            questPart_WaitForEscort.mapParent   = mapParent;
            questPart_WaitForEscort.faction     = Faction.Empire;
            questPart_WaitForEscort.addFleeToil = addFleeToil;
            quest.AddPart(questPart_WaitForEscort);
            return(questPart_WaitForEscort);
        }
コード例 #25
0
        public static QuestPart_SendShuttleAway SendShuttleAway(this Quest quest, Thing shuttle, bool dropEverything = false, string inSignal = null)
        {
            if (shuttle == null)
            {
                return(null);
            }
            QuestPart_SendShuttleAway questPart_SendShuttleAway = new QuestPart_SendShuttleAway();

            questPart_SendShuttleAway.inSignal       = QuestGenUtility.HardcodedSignalWithQuestID(inSignal) ?? QuestGen.slate.Get <string>("inSignal");
            questPart_SendShuttleAway.shuttle        = shuttle;
            questPart_SendShuttleAway.dropEverything = dropEverything;
            quest.AddPart(questPart_SendShuttleAway);
            return(questPart_SendShuttleAway);
        }
コード例 #26
0
        public static QuestPart_AddContentsToShuttle AddContentsToShuttle(this Quest quest, Thing shuttle, IEnumerable <Thing> contents, string inSignal = null)
        {
            if (contents == null)
            {
                return(null);
            }
            QuestPart_AddContentsToShuttle questPart_AddContentsToShuttle = new QuestPart_AddContentsToShuttle();

            questPart_AddContentsToShuttle.inSignal = QuestGenUtility.HardcodedSignalWithQuestID(inSignal) ?? QuestGen.slate.Get <string>("inSignal");
            questPart_AddContentsToShuttle.shuttle  = shuttle;
            questPart_AddContentsToShuttle.Things   = contents;
            quest.AddPart(questPart_AddContentsToShuttle);
            return(questPart_AddContentsToShuttle);
        }
コード例 #27
0
        public static QuestPart_Alert Alert(this Quest quest, string label, string explanation, LookTargets lookTargets = null, bool critical = false, bool getLookTargetsFromSignal = false, string inSignalEnable = null, string inSignalDisable = null)
        {
            QuestPart_Alert questPart_Alert = new QuestPart_Alert();

            questPart_Alert.label       = label;
            questPart_Alert.explanation = explanation;
            questPart_Alert.critical    = critical;
            questPart_Alert.getLookTargetsFromSignal = getLookTargetsFromSignal;
            questPart_Alert.lookTargets     = lookTargets;
            questPart_Alert.inSignalEnable  = inSignalEnable ?? QuestGen.slate.Get <string>("inSignal");
            questPart_Alert.inSignalDisable = inSignalDisable;
            quest.AddPart(questPart_Alert);
            return(questPart_Alert);
        }
コード例 #28
0
        public static QuestPart_AddQuestRefugeeDelayedReward AddQuestRefugeeDelayedReward(this Quest quest, Pawn acceptee, Faction faction, IEnumerable <Pawn> pawns, FloatRange marketValueRange, string inSignalRemovePawn = null)
        {
            QuestPart_AddQuestRefugeeDelayedReward questPart_AddQuestRefugeeDelayedReward = new QuestPart_AddQuestRefugeeDelayedReward();

            questPart_AddQuestRefugeeDelayedReward.questDef           = QuestScriptDefOf.RefugeeDelayedReward;
            questPart_AddQuestRefugeeDelayedReward.acceptee           = quest.AccepterPawn;
            questPart_AddQuestRefugeeDelayedReward.inSignal           = QuestGen.slate.Get <string>("inSignal");
            questPart_AddQuestRefugeeDelayedReward.inSignalRemovePawn = inSignalRemovePawn;
            questPart_AddQuestRefugeeDelayedReward.faction            = faction;
            questPart_AddQuestRefugeeDelayedReward.lodgers.AddRange(pawns);
            questPart_AddQuestRefugeeDelayedReward.marketValueRange = marketValueRange;
            quest.AddPart(questPart_AddQuestRefugeeDelayedReward);
            return(questPart_AddQuestRefugeeDelayedReward);
        }
コード例 #29
0
        public static void SignalRandom(this Quest quest, IEnumerable <Action> actions, string inSignal = null, QuestPart.SignalListenMode signalListenMode = QuestPart.SignalListenMode.OngoingOnly)
        {
            QuestPart_PassOutRandom questPart_PassOutRandom = new QuestPart_PassOutRandom();

            questPart_PassOutRandom.inSignal         = QuestGenUtility.HardcodedSignalWithQuestID(inSignal) ?? QuestGen.slate.Get <string>("inSignal");
            questPart_PassOutRandom.signalListenMode = signalListenMode;
            quest.AddPart(questPart_PassOutRandom);
            foreach (Action action in actions)
            {
                string text = QuestGen.GenerateNewSignal("OuterNodeCompleted");
                questPart_PassOutRandom.outSignals.Add(text);
                QuestGenUtility.RunInner(action, text);
            }
        }
コード例 #30
0
        public static QuestPart_AssaultThings AssaultThings(this Quest quest, MapParent mapParent, IEnumerable <Pawn> pawns, Faction assaulterFaction, IEnumerable <Thing> things, string inSignal = null, string inSignalRemovePawn = null, bool excludeFromLookTargets = false)
        {
            QuestPart_AssaultThings questPart_AssaultThings = new QuestPart_AssaultThings();

            questPart_AssaultThings.inSignal  = inSignal ?? QuestGen.slate.Get <string>("inSignal");
            questPart_AssaultThings.mapParent = mapParent;
            questPart_AssaultThings.pawns.AddRange(pawns);
            questPart_AssaultThings.inSignalRemovePawn = inSignalRemovePawn;
            questPart_AssaultThings.faction            = assaulterFaction;
            questPart_AssaultThings.things.AddRange(things);
            questPart_AssaultThings.excludeFromLookTargets = excludeFromLookTargets;
            quest.AddPart(questPart_AssaultThings);
            return(questPart_AssaultThings);
        }