Example #1
0
 public static string HardcodedSignalWithQuestID(string signal)
 {
     if (!QuestGen.Working)
     {
         return(signal);
     }
     if (signal.NullOrEmpty())
     {
         return(null);
     }
     if (signal.StartsWith("Quest") && signal.IndexOf('.') >= 0)
     {
         return(signal);
     }
     if (signal.IndexOf('.') >= 0)
     {
         int    num  = signal.IndexOf('.');
         string text = signal.Substring(0, num);
         string str  = signal.Substring(num + 1);
         if (!QuestGen.slate.CurrentPrefix.NullOrEmpty())
         {
             text = QuestGen.slate.CurrentPrefix + "/" + text;
         }
         text = NormalizeVarPath(text);
         QuestGen.AddSlateQuestTagToAddWhenFinished(text);
         return(QuestGen.GenerateNewSignal(text + "." + str, ensureUnique: false));
     }
     if (!QuestGen.slate.CurrentPrefix.NullOrEmpty())
     {
         signal = QuestGen.slate.CurrentPrefix + "/" + signal;
     }
     signal = NormalizeVarPath(signal);
     return(QuestGen.GenerateNewSignal(signal, ensureUnique: false));
 }
Example #2
0
        protected override void RunInt()
        {
            Slate                 slate  = QuestGen.slate;
            MapParent             parent = slate.Get <Map>("map").Parent;
            string                text   = QuestGen.GenerateNewSignal("PawnOfRaceKilled");
            QuestPart_PawnsKilled questPart_PawnsKilled = new QuestPart_PawnsKilled();

            questPart_PawnsKilled.inSignalEnable            = (QuestGenUtility.HardcodedSignalWithQuestID(inSignalEnable.GetValue(slate)) ?? QuestGen.slate.Get <string>("inSignal"));
            questPart_PawnsKilled.race                      = race.GetValue(slate);
            questPart_PawnsKilled.requiredInstigatorFaction = Faction.OfPlayer;
            questPart_PawnsKilled.count                     = count.GetValue(slate);
            questPart_PawnsKilled.mapParent                 = parent;
            questPart_PawnsKilled.outSignalPawnKilled       = text;
            if (node != null)
            {
                QuestGenUtility.RunInnerNode(node, questPart_PawnsKilled);
            }
            if (!outSignalComplete.GetValue(slate).NullOrEmpty())
            {
                questPart_PawnsKilled.outSignalsCompleted.Add(QuestGenUtility.HardcodedSignalWithQuestID(outSignalComplete.GetValue(slate)));
            }
            QuestGen.quest.AddPart(questPart_PawnsKilled);
            QuestPart_PawnsAvailable questPart_PawnsAvailable = new QuestPart_PawnsAvailable();

            questPart_PawnsAvailable.inSignalEnable = (QuestGenUtility.HardcodedSignalWithQuestID(inSignalEnable.GetValue(slate)) ?? QuestGen.slate.Get <string>("inSignal"));
            if (!outSignalPawnsNotAvailable.GetValue(slate).NullOrEmpty())
            {
                questPart_PawnsAvailable.outSignalPawnsNotAvailable = QuestGenUtility.HardcodedSignalWithQuestID(outSignalPawnsNotAvailable.GetValue(slate));
            }
            questPart_PawnsAvailable.race              = race.GetValue(slate);
            questPart_PawnsAvailable.requiredCount     = count.GetValue(slate);
            questPart_PawnsAvailable.mapParent         = parent;
            questPart_PawnsAvailable.inSignalDecrement = text;
            QuestGen.quest.AddPart(questPart_PawnsAvailable);
        }
Example #3
0
        protected override void RunInt()
        {
            Slate slate  = QuestGen.slate;
            Map   target = QuestGen.slate.Get <Map>("map");
            float points = QuestGen.slate.Get("points", 0f);
            QuestPart_Incident questPart_Incident = new QuestPart_Incident();

            questPart_Incident.incident = incidentDef.GetValue(slate);
            IncidentParms incidentParms = new IncidentParms();

            incidentParms.forced = true;
            incidentParms.target = target;
            incidentParms.points = points;
            if (!customLetterLabel.GetValue(slate).NullOrEmpty() || customLetterLabelRules.GetValue(slate) != null)
            {
                QuestGen.AddTextRequest("root", delegate(string x)
                {
                    incidentParms.customLetterLabel = x;
                }, QuestGenUtility.MergeRules(customLetterLabelRules.GetValue(slate), customLetterLabel.GetValue(slate), "root"));
            }
            if (!customLetterText.GetValue(slate).NullOrEmpty() || customLetterTextRules.GetValue(slate) != null)
            {
                QuestGen.AddTextRequest("root", delegate(string x)
                {
                    incidentParms.customLetterText = x;
                }, QuestGenUtility.MergeRules(customLetterTextRules.GetValue(slate), customLetterText.GetValue(slate), "root"));
            }
            questPart_Incident.SetIncidentParmsAndRemoveTarget(incidentParms);
            questPart_Incident.inSignal = QuestGenUtility.HardcodedSignalWithQuestID(inSignal.GetValue(slate)) ?? QuestGen.slate.Get <string>("inSignal");
            QuestGen.quest.AddPart(questPart_Incident);
        }
Example #4
0
        public static void RunInnerNode(QuestNode node, QuestPartActivable outerQuestPart)
        {
            string text = QuestGen.GenerateNewSignal("OuterNodeCompleted");

            outerQuestPart.outSignalsCompleted.Add(text);
            RunInnerNode(node, text);
        }
Example #5
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);
        }
        protected override void RunInt()
        {
            Slate slate = QuestGen.slate;
            PawnGenerationRequest request = new PawnGenerationRequest(kindDef.GetValue(slate), faction.GetValue(slate), PawnGenerationContext.NonPlayer, -1, forceGenerateNewPawn: false, newborn: false, allowDead: false, allowDowned: false, canGeneratePawnRelations: true, allowAddictions: allowAddictions.GetValue(slate) ?? true, forcedTraits: forcedTraits.GetValue(slate), biocodeWeaponChance: biocodeWeaponChance.GetValue(slate), mustBeCapableOfViolence: mustBeCapableOfViolence.GetValue(slate), colonistRelationChanceFactor: 1f, forceAddFreeWarmLayerIfNeeded: false, allowGay: true, allowFood: true, inhabitant: false, certainlyBeenInCryptosleep: false, forceRedressWorldPawnIfFormerColonist: false, worldPawnFactionDoesntMatter: false, extraPawnForExtraRelationChance: extraPawnForExtraRelationChance.GetValue(slate), relationWithExtraPawnChanceFactor: relationWithExtraPawnChanceFactor.GetValue(slate));

            request.BiocodeApparelChance = biocodeApparelChance.GetValue(slate);
            Pawn pawn = PawnGenerator.GeneratePawn(request);

            if (ensureNonNumericName.GetValue(slate) && (pawn.Name == null || pawn.Name.Numerical))
            {
                pawn.Name = PawnBioAndNameGenerator.GeneratePawnName(pawn);
            }
            if (storeAs.GetValue(slate) != null)
            {
                QuestGen.slate.Set(storeAs.GetValue(slate), pawn);
            }
            if (addToList.GetValue(slate) != null)
            {
                QuestGenUtility.AddToOrMakeList(QuestGen.slate, addToList.GetValue(slate), pawn);
            }
            if (addToLists.GetValue(slate) != null)
            {
                foreach (string item in addToLists.GetValue(slate))
                {
                    QuestGenUtility.AddToOrMakeList(QuestGen.slate, item, pawn);
                }
            }
            QuestGen.AddToGeneratedPawns(pawn);
            if (!pawn.IsWorldPawn())
            {
                Find.WorldPawns.PassToWorld(pawn);
            }
        }
Example #7
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 #8
0
        protected override void RunInt()
        {
            Slate slate = QuestGen.slate;
            Map   map   = QuestGen.slate.Get <Map>("map");

            if (map != null)
            {
                QuestPart_Infestation questPart = new QuestPart_Infestation();
                questPart.mapParent  = map.Parent;
                questPart.hivesCount = hivesCount.GetValue(slate);
                questPart.tag        = QuestGenUtility.HardcodedTargetQuestTagWithQuestID(tag.GetValue(slate));
                if (!customLetterLabel.GetValue(slate).NullOrEmpty() || customLetterLabelRules.GetValue(slate) != null)
                {
                    QuestGen.AddTextRequest("root", delegate(string x)
                    {
                        questPart.customLetterLabel = x;
                    }, QuestGenUtility.MergeRules(customLetterLabelRules.GetValue(slate), customLetterLabel.GetValue(slate), "root"));
                }
                if (!customLetterText.GetValue(slate).NullOrEmpty() || customLetterTextRules.GetValue(slate) != null)
                {
                    QuestGen.AddTextRequest("root", delegate(string x)
                    {
                        questPart.customLetterText = x;
                    }, QuestGenUtility.MergeRules(customLetterTextRules.GetValue(slate), customLetterText.GetValue(slate), "root"));
                }
                questPart.inSignal = (QuestGenUtility.HardcodedSignalWithQuestID(inSignal.GetValue(slate)) ?? QuestGen.slate.Get <string>("inSignal"));
                QuestGen.quest.AddPart(questPart);
            }
        }
        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 #10
0
        protected override void RunInt()
        {
            Slate            slate            = QuestGen.slate;
            QuestPart_Letter questPart_Letter = new QuestPart_Letter();

            questPart_Letter.inSignal = (QuestGenUtility.HardcodedSignalWithQuestID(inSignal.GetValue(slate)) ?? slate.Get <string>("inSignal"));
            LetterDef letterDef = this.letterDef.GetValue(slate) ?? LetterDefOf.NeutralEvent;

            if (typeof(ChoiceLetter).IsAssignableFrom(letterDef.letterClass))
            {
                ChoiceLetter choiceLetter = LetterMaker.MakeLetter("error", "error", letterDef, QuestGenUtility.ToLookTargets(lookTargets, slate), relatedFaction.GetValue(slate), QuestGen.quest);
                questPart_Letter.letter = choiceLetter;
                QuestGen.AddTextRequest("root", delegate(string x)
                {
                    choiceLetter.label = x;
                }, QuestGenUtility.MergeRules(labelRules.GetValue(slate), label.GetValue(slate), "root"));
                QuestGen.AddTextRequest("root", delegate(string x)
                {
                    choiceLetter.text = x;
                }, QuestGenUtility.MergeRules(textRules.GetValue(slate), text.GetValue(slate), "root"));
            }
            else
            {
                questPart_Letter.letter                = LetterMaker.MakeLetter(letterDef);
                questPart_Letter.letter.lookTargets    = QuestGenUtility.ToLookTargets(lookTargets, slate);
                questPart_Letter.letter.relatedFaction = relatedFaction.GetValue(slate);
            }
            questPart_Letter.chosenPawnSignal               = QuestGenUtility.HardcodedSignalWithQuestID(chosenPawnSignal.GetValue(slate));
            questPart_Letter.useColonistsOnMap              = useColonistsOnMap.GetValue(slate);
            questPart_Letter.useColonistsFromCaravanArg     = useColonistsFromCaravanArg.GetValue(slate);
            questPart_Letter.signalListenMode               = (signalListenMode.GetValue(slate) ?? QuestPart.SignalListenMode.OngoingOnly);
            questPart_Letter.filterDeadPawnsFromLookTargets = filterDeadPawnsFromLookTargets.GetValue(slate);
            QuestGen.quest.AddPart(questPart_Letter);
        }
        protected override void RunInt()
        {
            Slate                   slate                   = QuestGen.slate;
            float                   points                  = QuestGen.slate.Get("points", 0f);
            GameCondition           gameCondition           = GameConditionMaker.MakeCondition(this.gameCondition.GetValue(slate), duration.GetValue(slate));
            QuestPart_GameCondition questPart_GameCondition = new QuestPart_GameCondition();

            questPart_GameCondition.gameCondition = gameCondition;
            List <Rule> list = new List <Rule>();
            Dictionary <string, string> dictionary = new Dictionary <string, string>();

            if (targetWorld.GetValue(slate))
            {
                questPart_GameCondition.targetWorld = true;
                gameCondition.RandomizeSettings(points, null, list, dictionary);
            }
            else
            {
                Map map = GetMap(QuestGen.slate);
                questPart_GameCondition.mapParent = map.Parent;
                gameCondition.RandomizeSettings(points, map, list, dictionary);
            }
            questPart_GameCondition.inSignal = (QuestGenUtility.HardcodedSignalWithQuestID(inSignal.GetValue(slate)) ?? QuestGen.slate.Get <string>("inSignal"));
            QuestGen.quest.AddPart(questPart_GameCondition);
            if (!storeGameConditionDescriptionFutureAs.GetValue(slate).NullOrEmpty())
            {
                slate.Set(storeGameConditionDescriptionFutureAs.GetValue(slate), gameCondition.def.descriptionFuture);
            }
            QuestGen.AddQuestNameRules(list);
            QuestGen.AddQuestDescriptionRules(list);
            QuestGen.AddQuestDescriptionConstants(dictionary);
        }
Example #12
0
 protected override void RunInt()
 {
     if (rules.GetValue(QuestGen.slate) != null)
     {
         QuestGen.AddQuestDescriptionRules(rules.GetValue(QuestGen.slate));
     }
     Resolve();
 }
Example #13
0
        protected override void RunInt()
        {
            Slate              slate              = QuestGen.slate;
            Map                target             = QuestGen.slate.Get <Map>("map");
            float              a                  = QuestGen.slate.Get("points", 0f);
            Faction            faction            = QuestGen.slate.Get <Faction>("enemyFaction");
            QuestPart_Incident questPart_Incident = new QuestPart_Incident();

            questPart_Incident.debugLabel = "raid";
            questPart_Incident.incident   = IncidentDefOf.RaidEnemy;
            IncidentParms incidentParms = new IncidentParms();

            incidentParms.forced             = true;
            incidentParms.target             = target;
            incidentParms.points             = Mathf.Max(a, faction.def.MinPointsToGeneratePawnGroup(PawnGroupKindDefOf.Combat));
            incidentParms.faction            = faction;
            incidentParms.pawnGroupMakerSeed = Rand.Int;
            incidentParms.inSignalEnd        = QuestGenUtility.HardcodedSignalWithQuestID(inSignalLeave.GetValue(slate));
            incidentParms.questTag           = QuestGenUtility.HardcodedTargetQuestTagWithQuestID(tag.GetValue(slate));
            if (!customLetterLabel.GetValue(slate).NullOrEmpty() || customLetterLabelRules.GetValue(slate) != null)
            {
                QuestGen.AddTextRequest("root", delegate(string x)
                {
                    incidentParms.customLetterLabel = x;
                }, QuestGenUtility.MergeRules(customLetterLabelRules.GetValue(slate), customLetterLabel.GetValue(slate), "root"));
            }
            if (!customLetterText.GetValue(slate).NullOrEmpty() || customLetterTextRules.GetValue(slate) != null)
            {
                QuestGen.AddTextRequest("root", delegate(string x)
                {
                    incidentParms.customLetterText = x;
                }, QuestGenUtility.MergeRules(customLetterTextRules.GetValue(slate), customLetterText.GetValue(slate), "root"));
            }
            IncidentWorker_Raid obj = (IncidentWorker_Raid)questPart_Incident.incident.Worker;

            obj.ResolveRaidStrategy(incidentParms, PawnGroupKindDefOf.Combat);
            obj.ResolveRaidArriveMode(incidentParms);
            if (incidentParms.raidArrivalMode.walkIn)
            {
                incidentParms.spawnCenter = walkInSpot.GetValue(slate) ?? QuestGen.slate.Get <IntVec3?>("walkInSpot") ?? IntVec3.Invalid;
            }
            PawnGroupMakerParms defaultPawnGroupMakerParms = IncidentParmsUtility.GetDefaultPawnGroupMakerParms(PawnGroupKindDefOf.Combat, incidentParms);

            defaultPawnGroupMakerParms.points = IncidentWorker_Raid.AdjustedRaidPoints(defaultPawnGroupMakerParms.points, incidentParms.raidArrivalMode, incidentParms.raidStrategy, defaultPawnGroupMakerParms.faction, PawnGroupKindDefOf.Combat);
            IEnumerable <PawnKindDef> pawnKinds = PawnGroupMakerUtility.GeneratePawnKindsExample(defaultPawnGroupMakerParms);

            questPart_Incident.SetIncidentParmsAndRemoveTarget(incidentParms);
            questPart_Incident.inSignal = QuestGenUtility.HardcodedSignalWithQuestID(inSignal.GetValue(slate)) ?? QuestGen.slate.Get <string>("inSignal");
            QuestGen.quest.AddPart(questPart_Incident);
            QuestGen.AddQuestDescriptionRules(new List <Rule>
            {
                new Rule_String("raidPawnKinds", PawnUtility.PawnKindsToLineList(pawnKinds, "  - ", ColoredText.ThreatColor)),
                new Rule_String("raidArrivalModeInfo", incidentParms.raidArrivalMode.textWillArrive.Formatted(faction))
            });
        }
Example #14
0
        public static void Raid(this Quest quest, Map map, float points, Faction faction, string inSignalLeave = null, string customLetterLabel = null, string customLetterText = null, RulePack customLetterLabelRules = null, RulePack customLetterTextRules = null, IntVec3?walkInSpot = null, string tag = null, string inSignal = null, string rootSymbol = "root", PawnsArrivalModeDef raidArrivalMode = null)
        {
            QuestPart_Incident questPart_Incident = new QuestPart_Incident();

            questPart_Incident.debugLabel = "raid";
            questPart_Incident.incident   = IncidentDefOf.RaidEnemy;
            IncidentParms incidentParms = new IncidentParms();

            incidentParms.forced             = true;
            incidentParms.target             = map;
            incidentParms.points             = Mathf.Max(points, faction.def.MinPointsToGeneratePawnGroup(PawnGroupKindDefOf.Combat));
            incidentParms.faction            = faction;
            incidentParms.pawnGroupMakerSeed = Rand.Int;
            incidentParms.inSignalEnd        = inSignalLeave;
            incidentParms.questTag           = QuestGenUtility.HardcodedTargetQuestTagWithQuestID(tag);
            incidentParms.raidArrivalMode    = raidArrivalMode;
            if (!customLetterLabel.NullOrEmpty() || customLetterLabelRules != null)
            {
                QuestGen.AddTextRequest(rootSymbol, delegate(string x)
                {
                    incidentParms.customLetterLabel = x;
                }, QuestGenUtility.MergeRules(customLetterLabelRules, customLetterLabel, rootSymbol));
            }
            if (!customLetterText.NullOrEmpty() || customLetterTextRules != null)
            {
                QuestGen.AddTextRequest(rootSymbol, delegate(string x)
                {
                    incidentParms.customLetterText = x;
                }, QuestGenUtility.MergeRules(customLetterTextRules, customLetterText, rootSymbol));
            }
            IncidentWorker_Raid obj = (IncidentWorker_Raid)questPart_Incident.incident.Worker;

            obj.ResolveRaidStrategy(incidentParms, PawnGroupKindDefOf.Combat);
            obj.ResolveRaidArriveMode(incidentParms);
            if (incidentParms.raidArrivalMode.walkIn)
            {
                incidentParms.spawnCenter = walkInSpot ?? QuestGen.slate.Get <IntVec3?>("walkInSpot") ?? IntVec3.Invalid;
            }
            PawnGroupMakerParms defaultPawnGroupMakerParms = IncidentParmsUtility.GetDefaultPawnGroupMakerParms(PawnGroupKindDefOf.Combat, incidentParms);

            defaultPawnGroupMakerParms.points = IncidentWorker_Raid.AdjustedRaidPoints(defaultPawnGroupMakerParms.points, incidentParms.raidArrivalMode, incidentParms.raidStrategy, defaultPawnGroupMakerParms.faction, PawnGroupKindDefOf.Combat);
            IEnumerable <PawnKindDef> pawnKinds = PawnGroupMakerUtility.GeneratePawnKindsExample(defaultPawnGroupMakerParms);

            questPart_Incident.SetIncidentParmsAndRemoveTarget(incidentParms);
            questPart_Incident.inSignal = inSignal ?? QuestGen.slate.Get <string>("inSignal");
            QuestGen.quest.AddPart(questPart_Incident);
            QuestGen.AddQuestDescriptionRules(new List <Rule>
            {
                new Rule_String("raidPawnKinds", PawnUtility.PawnKindsToLineList(pawnKinds, "  - ", ColoredText.ThreatColor)),
                new Rule_String("raidArrivalModeInfo", incidentParms.raidArrivalMode.textWillArrive.Formatted(faction))
            });
        }
        private bool TrySetVars(Slate slate)
        {
            float   points       = slate.Get("points", 0f);
            Faction factionToUse = slate.Get <Faction>("enemyFaction");
            Pawn    asker        = slate.Get <Pawn>("asker");
            Thing   mustBeHostileToFactionOfResolved = mustBeHostileToFactionOf.GetValue(slate);

            for (int i = 0; i < 2; i++)
            {
                tmpTags.Clear();
                foreach (SitePartOption item in sitePartsTags.GetValue(slate))
                {
                    if (Rand.Chance(item.chance) && (i != 1 || !(item.chance < 1f)))
                    {
                        tmpTags.Add(item.tag);
                    }
                }
                if (!SiteMakerHelper.TryFindSiteParams_MultipleSiteParts(tmpTags.Where((string x) => x != null).Select(delegate(string x)
                {
                    IEnumerable <SitePartDef> enumerable = SiteMakerHelper.SitePartDefsWithTag(x);
                    IEnumerable <SitePartDef> enumerable2 = enumerable.Where((SitePartDef y) => points >= y.minThreatPoints);
                    return((!enumerable2.Any()) ? enumerable : enumerable2);
                }), out List <SitePartDef> siteParts, out Faction faction, factionToUse, disallowNonHostileFactions: true, delegate(Faction x)
                {
                    if (asker != null && asker.Faction != null && asker.Faction == x)
                    {
                        return(false);
                    }
                    return((mustBeHostileToFactionOfResolved == null || mustBeHostileToFactionOfResolved.Faction == null || (x != mustBeHostileToFactionOfResolved.Faction && x.HostileTo(mustBeHostileToFactionOfResolved.Faction))) ? true : false);
                }))
                {
                    continue;
                }
                slate.Set(storeAs.GetValue(slate), siteParts);
                slate.Set("sitePartCount", siteParts.Count);
                if (QuestGen.Working)
                {
                    Dictionary <string, string> dictionary = new Dictionary <string, string>();
                    for (int j = 0; j < siteParts.Count; j++)
                    {
                        dictionary[siteParts[j].defName + "_exists"] = "True";
                    }
                    QuestGen.AddQuestDescriptionConstants(dictionary);
                }
                if (!storeFactionAs.GetValue(slate).NullOrEmpty())
                {
                    slate.Set(storeFactionAs.GetValue(slate), faction);
                }
                return(true);
            }
            return(false);
        }
Example #16
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 #17
0
        protected override void RunInt()
        {
            Slate slate = QuestGen.slate;
            QuestPart_Filter_FactionNonPlayer questPart_Filter_FactionNonPlayer = new QuestPart_Filter_FactionNonPlayer();

            questPart_Filter_FactionNonPlayer.inSignal = QuestGenUtility.HardcodedSignalWithQuestID(inSignal.GetValue(slate)) ?? QuestGen.slate.Get <string>("inSignal");
            if (node != null)
            {
                questPart_Filter_FactionNonPlayer.outSignal = QuestGen.GenerateNewSignal("OuterNodeCompleted");
                QuestGenUtility.RunInnerNode(node, questPart_Filter_FactionNonPlayer.outSignal);
            }
            QuestGen.quest.AddPart(questPart_Filter_FactionNonPlayer);
        }
        protected override void RunInt()
        {
            Slate slate = QuestGen.slate;
            QuestPart_Filter_DecreeNotPossible questPart_Filter_DecreeNotPossible = new QuestPart_Filter_DecreeNotPossible();

            questPart_Filter_DecreeNotPossible.inSignal = (QuestGenUtility.HardcodedSignalWithQuestID(inSignal.GetValue(slate)) ?? QuestGen.slate.Get <string>("inSignal"));
            if (node != null)
            {
                questPart_Filter_DecreeNotPossible.outSignal = QuestGen.GenerateNewSignal("OuterNodeCompleted");
                QuestGenUtility.RunInnerNode(node, questPart_Filter_DecreeNotPossible.outSignal);
            }
            QuestGen.quest.AddPart(questPart_Filter_DecreeNotPossible);
        }
Example #19
0
        public static ChoiceLetter MakeLetter(string labelKeyword, string textKeyword, LetterDef def, LookTargets lookTargets, Faction relatedFaction = null, Quest quest = null)
        {
            ChoiceLetter letter = LetterMaker.MakeLetter("error", "error", def, lookTargets, relatedFaction, quest);

            QuestGen.AddTextRequest(labelKeyword, delegate(string x)
            {
                letter.label = x;
            });
            QuestGen.AddTextRequest(textKeyword, delegate(string x)
            {
                letter.text = x;
            });
            return(letter);
        }
        protected override void RunInt()
        {
            Slate slate = QuestGen.slate;
            PawnsArrivalModeDef   pawnsArrivalModeDef = arrivalMode.GetValue(slate) ?? PawnsArrivalModeDefOf.EdgeWalkIn;
            QuestPart_PawnsArrive pawnsArrive         = new QuestPart_PawnsArrive();

            pawnsArrive.inSignal = QuestGenUtility.HardcodedSignalWithQuestID(inSignal.GetValue(slate)) ?? QuestGen.slate.Get <string>("inSignal");
            pawnsArrive.pawns.AddRange(pawns.GetValue(slate));
            pawnsArrive.arrivalMode = pawnsArrivalModeDef;
            pawnsArrive.joinPlayer  = joinPlayer.GetValue(slate);
            pawnsArrive.mapParent   = QuestGen.slate.Get <Map>("map").Parent;
            if (pawnsArrivalModeDef.walkIn)
            {
                pawnsArrive.spawnNear = walkInSpot.GetValue(slate) ?? QuestGen.slate.Get <IntVec3?>("walkInSpot") ?? IntVec3.Invalid;
            }
            if (!customLetterLabel.GetValue(slate).NullOrEmpty() || customLetterLabelRules.GetValue(slate) != null)
            {
                QuestGen.AddTextRequest("root", delegate(string x)
                {
                    pawnsArrive.customLetterLabel = x;
                }, QuestGenUtility.MergeRules(customLetterLabelRules.GetValue(slate), customLetterLabel.GetValue(slate), "root"));
            }
            if (!customLetterText.GetValue(slate).NullOrEmpty() || customLetterTextRules.GetValue(slate) != null)
            {
                QuestGen.AddTextRequest("root", delegate(string x)
                {
                    pawnsArrive.customLetterText = x;
                }, QuestGenUtility.MergeRules(customLetterTextRules.GetValue(slate), customLetterText.GetValue(slate), "root"));
            }
            QuestGen.quest.AddPart(pawnsArrive);
            if (!isSingleReward.GetValue(slate))
            {
                return;
            }
            QuestPart_Choice questPart_Choice = new QuestPart_Choice();

            questPart_Choice.inSignalChoiceUsed = pawnsArrive.inSignal;
            QuestPart_Choice.Choice choice = new QuestPart_Choice.Choice();
            choice.questParts.Add(pawnsArrive);
            foreach (Pawn pawn in pawnsArrive.pawns)
            {
                choice.rewards.Add(new Reward_Pawn
                {
                    pawn          = pawn,
                    detailsHidden = rewardDetailsHidden.GetValue(slate)
                });
            }
            questPart_Choice.choices.Add(choice);
            QuestGen.quest.AddPart(questPart_Choice);
        }
Example #21
0
        public static void PawnsArrive(this Quest quest, IEnumerable <Pawn> pawns, string inSignal = null, MapParent mapParent = null, PawnsArrivalModeDef arrivalMode = null, bool joinPlayer = false, IntVec3?walkInSpot = null, string customLetterLabel = null, string customLetterText = null, RulePack customLetterLabelRules = null, RulePack customLetterTextRules = null, bool isSingleReward = false, bool rewardDetailsHidden = false)
        {
            _ = QuestGen.slate;
            PawnsArrivalModeDef   pawnsArrivalModeDef = arrivalMode ?? PawnsArrivalModeDefOf.EdgeWalkIn;
            QuestPart_PawnsArrive pawnsArrive         = new QuestPart_PawnsArrive();

            pawnsArrive.inSignal = QuestGenUtility.HardcodedSignalWithQuestID(inSignal) ?? QuestGen.slate.Get <string>("inSignal");
            pawnsArrive.pawns.AddRange(pawns);
            pawnsArrive.arrivalMode = pawnsArrivalModeDef;
            pawnsArrive.joinPlayer  = joinPlayer;
            pawnsArrive.mapParent   = mapParent ?? QuestGen.slate.Get <Map>("map").Parent;
            if (pawnsArrivalModeDef.walkIn)
            {
                pawnsArrive.spawnNear = walkInSpot ?? QuestGen.slate.Get <IntVec3?>("walkInSpot") ?? IntVec3.Invalid;
            }
            if (!customLetterLabel.NullOrEmpty() || customLetterLabelRules != null)
            {
                QuestGen.AddTextRequest("root", delegate(string x)
                {
                    pawnsArrive.customLetterLabel = x;
                }, QuestGenUtility.MergeRules(customLetterLabelRules, customLetterLabel, "root"));
            }
            if (!customLetterText.NullOrEmpty() || customLetterTextRules != null)
            {
                QuestGen.AddTextRequest("root", delegate(string x)
                {
                    pawnsArrive.customLetterText = x;
                }, QuestGenUtility.MergeRules(customLetterTextRules, customLetterText, "root"));
            }
            QuestGen.quest.AddPart(pawnsArrive);
            if (!isSingleReward)
            {
                return;
            }
            QuestPart_Choice questPart_Choice = new QuestPart_Choice();

            questPart_Choice.inSignalChoiceUsed = pawnsArrive.inSignal;
            QuestPart_Choice.Choice choice = new QuestPart_Choice.Choice();
            choice.questParts.Add(pawnsArrive);
            foreach (Pawn pawn in pawnsArrive.pawns)
            {
                choice.rewards.Add(new Reward_Pawn
                {
                    pawn          = pawn,
                    detailsHidden = rewardDetailsHidden
                });
            }
            questPart_Choice.choices.Add(choice);
            QuestGen.quest.AddPart(questPart_Choice);
        }
Example #22
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 #23
0
        protected override void RunInt()
        {
            Slate             slate   = QuestGen.slate;
            QuestPart_Message message = new QuestPart_Message();

            message.inSignal    = (QuestGenUtility.HardcodedSignalWithQuestID(inSignal.GetValue(slate)) ?? slate.Get <string>("inSignal"));
            message.messageType = (messageType.GetValue(slate) ?? MessageTypeDefOf.NeutralEvent);
            message.lookTargets = QuestGenUtility.ToLookTargets(lookTargets, slate);
            QuestGen.AddTextRequest("root", delegate(string x)
            {
                message.message = x;
            }, QuestGenUtility.MergeRules(rules.GetValue(slate), text.GetValue(slate), "root"));
            QuestGen.quest.AddPart(message);
        }
        protected override void RunInt()
        {
            Slate slate  = QuestGen.slate;
            Map   map    = QuestGen.slate.Get <Map>("map");
            float points = QuestGen.slate.Get("points", 0f);
            QuestPart_Incident questPart_Incident = new QuestPart_Incident();

            questPart_Incident.incident = IncidentDefOf.ManhunterPack;
            IncidentParms incidentParms = new IncidentParms();

            incidentParms.forced      = true;
            incidentParms.target      = map;
            incidentParms.points      = points;
            incidentParms.questTag    = QuestGenUtility.HardcodedTargetQuestTagWithQuestID(tag.GetValue(slate));
            incidentParms.spawnCenter = walkInSpot.GetValue(slate) ?? QuestGen.slate.Get <IntVec3?>("walkInSpot") ?? IntVec3.Invalid;
            incidentParms.pawnCount   = animalCount.GetValue(slate);
            if (ManhunterPackIncidentUtility.TryFindManhunterAnimalKind(points, map.Tile, out var animalKind))
            {
                incidentParms.pawnKind = animalKind;
            }
            slate.Set("animalKindDef", animalKind);
            int num = ((incidentParms.pawnCount > 0) ? incidentParms.pawnCount : ManhunterPackIncidentUtility.GetAnimalsCount(animalKind, points));

            QuestGen.slate.Set("animalCount", num);
            if (!customLetterLabel.GetValue(slate).NullOrEmpty() || customLetterLabelRules.GetValue(slate) != null)
            {
                QuestGen.AddTextRequest("root", delegate(string x)
                {
                    incidentParms.customLetterLabel = x;
                }, QuestGenUtility.MergeRules(customLetterLabelRules.GetValue(slate), customLetterLabel.GetValue(slate), "root"));
            }
            if (!customLetterText.GetValue(slate).NullOrEmpty() || customLetterTextRules.GetValue(slate) != null)
            {
                QuestGen.AddTextRequest("root", delegate(string x)
                {
                    incidentParms.customLetterText = x;
                }, QuestGenUtility.MergeRules(customLetterTextRules.GetValue(slate), customLetterText.GetValue(slate), "root"));
            }
            questPart_Incident.SetIncidentParmsAndRemoveTarget(incidentParms);
            questPart_Incident.inSignal = QuestGenUtility.HardcodedSignalWithQuestID(inSignal.GetValue(slate)) ?? QuestGen.slate.Get <string>("inSignal");
            QuestGen.quest.AddPart(questPart_Incident);
            List <Rule> rules = new List <Rule>
            {
                new Rule_String("animalKind_label", animalKind.label),
                new Rule_String("animalKind_labelPlural", animalKind.GetLabelPlural(num))
            };

            QuestGen.AddQuestDescriptionRules(rules);
            QuestGen.AddQuestNameRules(rules);
        }
Example #25
0
        protected override void RunInt()
        {
            Slate slate = QuestGen.slate;

            switch (((outSignals.GetValue(slate) != null) ? outSignals.GetValue(slate).Count() : 0) + ((node != null) ? 1 : 0))
            {
            case 0:
                return;

            case 1:
            {
                QuestPart_PassAny questPart_PassAny = new QuestPart_PassAny();
                foreach (string item in inSignals.GetValue(slate))
                {
                    questPart_PassAny.inSignals.Add(QuestGenUtility.HardcodedSignalWithQuestID(item));
                }
                if (node != null)
                {
                    questPart_PassAny.outSignal = QuestGen.GenerateNewSignal("OuterNodeCompleted");
                    QuestGenUtility.RunInnerNode(node, questPart_PassAny.outSignal);
                }
                else
                {
                    questPart_PassAny.outSignal = QuestGenUtility.HardcodedSignalWithQuestID(outSignals.GetValue(slate).First());
                }
                questPart_PassAny.signalListenMode = signalListenMode.GetValue(slate) ?? QuestPart.SignalListenMode.OngoingOnly;
                QuestGen.quest.AddPart(questPart_PassAny);
                return;
            }
            }
            QuestPart_PassAnyOutMany questPart_PassAnyOutMany = new QuestPart_PassAnyOutMany();

            foreach (string item2 in inSignals.GetValue(slate))
            {
                questPart_PassAnyOutMany.inSignals.Add(QuestGenUtility.HardcodedSignalWithQuestID(item2));
            }
            if (node != null)
            {
                string text = QuestGen.GenerateNewSignal("OuterNodeCompleted");
                questPart_PassAnyOutMany.outSignals.Add(text);
                QuestGenUtility.RunInnerNode(node, text);
            }
            foreach (string item3 in outSignals.GetValue(slate))
            {
                questPart_PassAnyOutMany.outSignals.Add(QuestGenUtility.HardcodedSignalWithQuestID(item3));
            }
            questPart_PassAnyOutMany.signalListenMode = signalListenMode.GetValue(slate) ?? QuestPart.SignalListenMode.OngoingOnly;
            QuestGen.quest.AddPart(questPart_PassAnyOutMany);
        }
Example #26
0
        public static QuestPart_Message Message(this Quest quest, string message, MessageTypeDef messageType = null, bool getLookTargetsFromSignal = false, RulePack rules = null, LookTargets lookTargets = null, string inSignal = null)
        {
            QuestPart_Message questPart = new QuestPart_Message();

            questPart.inSignal    = QuestGenUtility.HardcodedSignalWithQuestID(inSignal) ?? QuestGen.slate.Get <string>("inSignal");
            questPart.messageType = messageType ?? MessageTypeDefOf.NeutralEvent;
            questPart.lookTargets = lookTargets;
            questPart.getLookTargetsFromSignal = getLookTargetsFromSignal;
            QuestGen.AddTextRequest("root", delegate(string x)
            {
                questPart.message = x;
            }, QuestGenUtility.MergeRules(rules, message, "root"));
            QuestGen.quest.AddPart(questPart);
            return(questPart);
        }
Example #27
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 #28
0
        protected override void RunInt()
        {
            Slate slate = QuestGen.slate;
            QuestPart_Filter_AnyPawnAlive questPart_Filter_AnyPawnAlive = new QuestPart_Filter_AnyPawnAlive
            {
                inSignal = (QuestGenUtility.HardcodedSignalWithQuestID(inSignal.GetValue(slate)) ?? QuestGen.slate.Get <string>("inSignal")),
                pawns    = pawns.GetValue(slate)
            };

            if (node != null)
            {
                questPart_Filter_AnyPawnAlive.outSignal = QuestGen.GenerateNewSignal("OuterNodeCompleted");
                QuestGenUtility.RunInnerNode(node, questPart_Filter_AnyPawnAlive.outSignal);
            }
            QuestGen.quest.AddPart(questPart_Filter_AnyPawnAlive);
        }
Example #29
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 #30
0
        public static Pawn GetPawn(this Quest quest, GetPawnParms parms)
        {
            _ = QuestGen.slate;
            IEnumerable <Pawn> source = ExistingUsablePawns(parms);
            int     num = source.Count();
            Faction faction;
            Pawn    pawn = ((!Rand.Chance(parms.canGeneratePawn ? Mathf.Clamp01(1f - (float)num / 10f) : 0f) || (!parms.mustHaveNoFaction && !TryFindFactionForPawnGeneration(parms, out faction))) ? source.RandomElement() : GeneratePawn(parms));

            if (pawn.Faction != null && !pawn.Faction.Hidden)
            {
                QuestPart_InvolvedFactions questPart_InvolvedFactions = new QuestPart_InvolvedFactions();
                questPart_InvolvedFactions.factions.Add(pawn.Faction);
                quest.AddPart(questPart_InvolvedFactions);
            }
            QuestGen.AddToGeneratedPawns(pawn);
            return(pawn);
        }