Example #1
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);
        }
Example #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);
        }
        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);
        }
Example #4
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);
        }
Example #5
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);
            }
        }
Example #6
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);
        }
Example #7
0
        public static void SignalPassAllSequence(this Quest quest, Action action = null, List <string> inSignals = null, string outSignal = null)
        {
            QuestPart_PassAllSequence questPart_PassAllSequence = new QuestPart_PassAllSequence();

            questPart_PassAllSequence.inSignals = inSignals ?? new List <string>
            {
                QuestGen.slate.Get <string>("inSignal")
            };
            if (action != null)
            {
                outSignal = outSignal ?? QuestGen.GenerateNewSignal("OuterNodeCompleted");
                QuestGenUtility.RunInner(action, outSignal);
            }
            questPart_PassAllSequence.outSignal = outSignal;
            quest.AddPart(questPart_PassAllSequence);
        }
Example #8
0
        public static QuestPart_Filter_FactionNonPlayer FactionNonPlayer(this Quest quest, Action action = null, Action elseAction = null, string inSignal = null, string outSignal = null, string outSignalElse = null, QuestPart.SignalListenMode signalListenMode = QuestPart.SignalListenMode.OngoingOnly)
        {
            QuestPart_Filter_FactionNonPlayer questPart_Filter_FactionNonPlayer = new QuestPart_Filter_FactionNonPlayer();

            questPart_Filter_FactionNonPlayer.inSignal         = QuestGenUtility.HardcodedSignalWithQuestID(inSignal) ?? QuestGen.slate.Get <string>("inSignal");
            questPart_Filter_FactionNonPlayer.signalListenMode = signalListenMode;
            if (action != null)
            {
                QuestGenUtility.RunInner(action, questPart_Filter_FactionNonPlayer.outSignal = QuestGen.GenerateNewSignal("OuterNodeCompleted"));
            }
            if (elseAction != null)
            {
                QuestGenUtility.RunInner(elseAction, questPart_Filter_FactionNonPlayer.outSignalElse = QuestGen.GenerateNewSignal("OuterNodeCompleted"));
            }
            quest.AddPart(questPart_Filter_FactionNonPlayer);
            return(questPart_Filter_FactionNonPlayer);
        }
Example #9
0
        public static QuestPart_PawnJoinOffer PawnJoinOffer(this Quest quest, Pawn pawn, string letterLabel, string letterTitle, string letterText, Action accepted = null, string inSignal = null, string outSignalPawnAccepted = null)
        {
            QuestPart_PawnJoinOffer questPart_PawnJoinOffer = new QuestPart_PawnJoinOffer();

            questPart_PawnJoinOffer.pawn                  = pawn;
            questPart_PawnJoinOffer.inSignalEnable        = inSignal ?? QuestGen.slate.Get <string>("inSignal");
            questPart_PawnJoinOffer.outSignalPawnAccepted = outSignalPawnAccepted ?? QuestGen.GenerateNewSignal("Accepted");
            questPart_PawnJoinOffer.letterLabel           = letterLabel;
            questPart_PawnJoinOffer.letterText            = letterText;
            questPart_PawnJoinOffer.letterTitle           = letterTitle;
            if (accepted != null)
            {
                QuestGenUtility.RunInner(accepted, questPart_PawnJoinOffer.outSignalPawnAccepted);
            }
            quest.AddPart(questPart_PawnJoinOffer);
            return(questPart_PawnJoinOffer);
        }
Example #10
0
        public static QuestPart_Filter_AnyPawnPlayerControlled AnyPawnPlayerControlled(this Quest quest, IEnumerable <Pawn> pawns, Action action = null, Action elseAction = null, string inSignal = null, string outSignal = null, string outSignalElse = null, string inSignalRemovePawn = null, QuestPart.SignalListenMode signalListenMode = QuestPart.SignalListenMode.OngoingOnly)
        {
            QuestPart_Filter_AnyPawnPlayerControlled questPart_Filter_AnyPawnPlayerControlled = new QuestPart_Filter_AnyPawnPlayerControlled();

            questPart_Filter_AnyPawnPlayerControlled.inSignal           = QuestGenUtility.HardcodedSignalWithQuestID(inSignal) ?? QuestGen.slate.Get <string>("inSignal");
            questPart_Filter_AnyPawnPlayerControlled.signalListenMode   = signalListenMode;
            questPart_Filter_AnyPawnPlayerControlled.pawns              = pawns.ToList();
            questPart_Filter_AnyPawnPlayerControlled.inSignalRemovePawn = inSignalRemovePawn;
            if (action != null)
            {
                QuestGenUtility.RunInner(action, questPart_Filter_AnyPawnPlayerControlled.outSignal = QuestGen.GenerateNewSignal("OuterNodeCompleted"));
            }
            if (elseAction != null)
            {
                QuestGenUtility.RunInner(elseAction, questPart_Filter_AnyPawnPlayerControlled.outSignalElse = QuestGen.GenerateNewSignal("OuterNodeCompleted"));
            }
            quest.AddPart(questPart_Filter_AnyPawnPlayerControlled);
            return(questPart_Filter_AnyPawnPlayerControlled);
        }
Example #11
0
        public static QuestPart_Filter_FactionHostileToOtherFaction FactionHostileToOtherFaction(this Quest quest, Faction faction, Faction other, Action action = null, Action elseAction = null, string inSignal = null, string outSignal = null, string outSignalElse = null, QuestPart.SignalListenMode signalListenMode = QuestPart.SignalListenMode.OngoingOnly)
        {
            QuestPart_Filter_FactionHostileToOtherFaction questPart_Filter_FactionHostileToOtherFaction = new QuestPart_Filter_FactionHostileToOtherFaction();

            questPart_Filter_FactionHostileToOtherFaction.inSignal         = QuestGenUtility.HardcodedSignalWithQuestID(inSignal) ?? QuestGen.slate.Get <string>("inSignal");
            questPart_Filter_FactionHostileToOtherFaction.signalListenMode = signalListenMode;
            questPart_Filter_FactionHostileToOtherFaction.faction          = faction;
            questPart_Filter_FactionHostileToOtherFaction.other            = other;
            if (action != null)
            {
                QuestGenUtility.RunInner(action, questPart_Filter_FactionHostileToOtherFaction.outSignal = QuestGen.GenerateNewSignal("OuterNodeCompleted"));
            }
            if (elseAction != null)
            {
                QuestGenUtility.RunInner(elseAction, questPart_Filter_FactionHostileToOtherFaction.outSignalElse = QuestGen.GenerateNewSignal("OuterNodeCompleted"));
            }
            quest.AddPart(questPart_Filter_FactionHostileToOtherFaction);
            return(questPart_Filter_FactionHostileToOtherFaction);
        }
Example #12
0
        public static void SignalPassOutMany(this Quest quest, Action action = null, string inSignal = null, IEnumerable <string> outSignals = null)
        {
            QuestPart_PassOutMany questPart_PassOutMany = new QuestPart_PassOutMany();

            questPart_PassOutMany.inSignal = inSignal ?? QuestGen.slate.Get <string>("inSignal");
            if (action != null)
            {
                string innerNodeInSignal = QuestGen.GenerateNewSignal("OuterNodeCompleted");
                QuestGenUtility.RunInner(action, innerNodeInSignal);
            }
            if (outSignals != null)
            {
                foreach (string outSignal in outSignals)
                {
                    questPart_PassOutMany.outSignals.Add(outSignal);
                }
            }
            quest.AddPart(questPart_PassOutMany);
        }
        public static QuestPart_Delay Delay(this Quest quest, int delayTicks, Action inner, string inSignalEnable = null, string inSignalDisable = null, string outSignalComplete = null, bool reactivatable = false, IEnumerable <ISelectable> inspectStringTargets = null, string inspectString = null, bool isQuestTimeout = false, string expiryInfoPart = null, string expiryInfoPartTip = null, string debugLabel = null, bool tickHistorically = false, QuestPart.SignalListenMode signalListenMode = QuestPart.SignalListenMode.OngoingOnly)
        {
            QuestPart_Delay questPart_Delay = new QuestPart_Delay();

            questPart_Delay.delayTicks       = delayTicks;
            questPart_Delay.inSignalEnable   = QuestGenUtility.HardcodedSignalWithQuestID(inSignalEnable) ?? QuestGen.slate.Get <string>("inSignal");
            questPart_Delay.inSignalDisable  = QuestGenUtility.HardcodedSignalWithQuestID(inSignalDisable);
            questPart_Delay.reactivatable    = reactivatable;
            questPart_Delay.signalListenMode = signalListenMode;
            if (!inspectStringTargets.EnumerableNullOrEmpty())
            {
                questPart_Delay.inspectString        = inspectString;
                questPart_Delay.inspectStringTargets = new List <ISelectable>();
                questPart_Delay.inspectStringTargets.AddRange(inspectStringTargets);
            }
            if (isQuestTimeout)
            {
                questPart_Delay.isBad             = true;
                questPart_Delay.expiryInfoPart    = "QuestExpiresIn".Translate();
                questPart_Delay.expiryInfoPartTip = "QuestExpiresOn".Translate();
            }
            else
            {
                questPart_Delay.expiryInfoPart    = expiryInfoPart;
                questPart_Delay.expiryInfoPartTip = expiryInfoPartTip;
            }
            if (inner != null)
            {
                QuestGenUtility.RunInner(inner, questPart_Delay);
            }
            if (!outSignalComplete.NullOrEmpty())
            {
                questPart_Delay.outSignalsCompleted.Add(QuestGenUtility.HardcodedSignalWithQuestID(outSignalComplete));
            }
            if (!debugLabel.NullOrEmpty())
            {
                questPart_Delay.debugLabel = debugLabel;
            }
            quest.AddPart(questPart_Delay);
            return(questPart_Delay);
        }
Example #14
0
        public static QuestPart_Filter_AnyOnTransporter AnyOnTransporter(this Quest quest, IEnumerable <Pawn> pawns, Thing shuttle, Action action = null, Action elseAction = null, string inSignal = null, string outSignal = null, string outSignalElse = null, string inSignalRemovePawn = null, QuestPart.SignalListenMode signalListenMode = QuestPart.SignalListenMode.OngoingOnly)
        {
            QuestPart_Filter_AnyOnTransporter questPart_Filter_AnyOnTransporter = new QuestPart_Filter_AnyOnTransporter();

            questPart_Filter_AnyOnTransporter.inSignal         = QuestGenUtility.HardcodedSignalWithQuestID(inSignal) ?? QuestGen.slate.Get <string>("inSignal");
            questPart_Filter_AnyOnTransporter.signalListenMode = signalListenMode;
            questPart_Filter_AnyOnTransporter.pawns            = pawns.ToList();
            questPart_Filter_AnyOnTransporter.outSignal        = outSignal;
            questPart_Filter_AnyOnTransporter.outSignalElse    = outSignalElse;
            questPart_Filter_AnyOnTransporter.transporter      = shuttle;
            if (action != null)
            {
                QuestGenUtility.RunInner(action, questPart_Filter_AnyOnTransporter.outSignal = QuestGen.GenerateNewSignal("OuterNodeCompleted"));
            }
            if (elseAction != null)
            {
                QuestGenUtility.RunInner(elseAction, questPart_Filter_AnyOnTransporter.outSignalElse = QuestGen.GenerateNewSignal("OuterNodeCompleted"));
            }
            quest.AddPart(questPart_Filter_AnyOnTransporter);
            return(questPart_Filter_AnyOnTransporter);
        }
Example #15
0
        public static void SignalPassWithFaction(this Quest quest, Faction faction, Action action = null, Action outAction = null, string inSignal = null, string outSignal = null)
        {
            QuestPart_PassWithFactionArg questPart_PassWithFactionArg = new QuestPart_PassWithFactionArg();

            questPart_PassWithFactionArg.inSignal  = inSignal ?? QuestGen.slate.Get <string>("inSignal");
            questPart_PassWithFactionArg.faction   = faction;
            questPart_PassWithFactionArg.outSignal = outSignal;
            if (action != null)
            {
                string innerNodeInSignal = QuestGen.GenerateNewSignal("OuterNodeCompleted");
                QuestGenUtility.RunInner(action, innerNodeInSignal);
            }
            if (outAction != null)
            {
                if (questPart_PassWithFactionArg.outSignal == null)
                {
                    questPart_PassWithFactionArg.outSignal = QuestGen.GenerateNewSignal("OuterNodeCompleted");
                }
                QuestGenUtility.RunInner(outAction, questPart_PassWithFactionArg.outSignal);
            }
            quest.AddPart(questPart_PassWithFactionArg);
        }
        public static QuestPart_ShuttleDelay ShuttleDelay(this Quest quest, int delayTicks, IEnumerable <Pawn> lodgers, Action complete = null, string inSignalEnable = null, IEnumerable <string> inSignalsDisable = null, bool alert = false)
        {
            QuestPart_ShuttleDelay questPart_ShuttleDelay = new QuestPart_ShuttleDelay();

            questPart_ShuttleDelay.inSignalEnable = inSignalEnable ?? QuestGen.slate.Get <string>("inSignal");
            questPart_ShuttleDelay.delayTicks     = delayTicks;
            questPart_ShuttleDelay.alert          = alert;
            if (lodgers != null)
            {
                questPart_ShuttleDelay.lodgers.AddRange(lodgers);
            }
            questPart_ShuttleDelay.expiryInfoPart    = "ShuttleArrivesIn".Translate();
            questPart_ShuttleDelay.expiryInfoPartTip = "ShuttleArrivesOn".Translate();
            if (complete != null)
            {
                string text = QuestGen.GenerateNewSignal("ShuttleDelay");
                QuestGenUtility.RunInner(complete, text);
                questPart_ShuttleDelay.outSignalsCompleted.Add(text);
            }
            quest.AddPart(questPart_ShuttleDelay);
            return(questPart_ShuttleDelay);
        }