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)); }
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); }
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); }
public static void RunInnerNode(QuestNode node, QuestPartActivable outerQuestPart) { string text = QuestGen.GenerateNewSignal("OuterNodeCompleted"); outerQuestPart.outSignalsCompleted.Add(text); RunInnerNode(node, text); }
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); } }
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); }
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); }
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); }
protected override void RunInt() { if (rules.GetValue(QuestGen.slate) != null) { QuestGen.AddQuestDescriptionRules(rules.GetValue(QuestGen.slate)); } Resolve(); }
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)) }); }
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); }
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); }
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); }
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); }
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); }
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); } }
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); }
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); }
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); }
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); }
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); }
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); }
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); }