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); }
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_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); }
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); }
public static Quest MakeAndAddTradeRequestQuest(WorldObject destination, string description, TradeRequestComp tradeRequest) { Quest quest = Quest.MakeRaw(); quest.SetInitiallyAccepted(); string text = "Quest" + quest.id + ".TradeRequestSite"; QuestUtility.AddQuestTag(ref destination.questTags, text); QuestPartUtility.MakeAndAddEndCondition <QuestPart_NoWorldObject>(quest, quest.InitiateSignal, QuestEndOutcome.Unknown).worldObject = destination; QuestPartUtility.MakeAndAddEndCondition <QuestPart_NoWorldObject>(quest, text + ".TradeRequestFulfilled", QuestEndOutcome.Success); if (destination.rewards != null) { QuestPart_GiveToCaravan questPart_GiveToCaravan = new QuestPart_GiveToCaravan { inSignal = text + ".TradeRequestFulfilled", Things = destination.rewards }; foreach (Thing thing in questPart_GiveToCaravan.Things) { thing.holdingOwner = null; } quest.AddPart(questPart_GiveToCaravan); } quest.description = description; Find.QuestManager.Add(quest); return(quest); }
public static QuestPart_ReserveFaction ReserveFaction(this Quest quest, Faction faction) { QuestPart_ReserveFaction questPart_ReserveFaction = new QuestPart_ReserveFaction(); questPart_ReserveFaction.faction = faction; quest.AddPart(questPart_ReserveFaction); return(questPart_ReserveFaction); }
public static QuestPart_ReservePawns ReservePawns(this Quest quest, IEnumerable <Pawn> pawns) { QuestPart_ReservePawns questPart_ReservePawns = new QuestPart_ReservePawns(); questPart_ReservePawns.pawns.AddRange(pawns); quest.AddPart(questPart_ReservePawns); return(questPart_ReservePawns); }
public static QuestPart_BiocodeWeapons BiocodeWeapons(this Quest quest, IEnumerable <Pawn> pawns, string inSignal = null) { QuestPart_BiocodeWeapons questPart_BiocodeWeapons = new QuestPart_BiocodeWeapons(); questPart_BiocodeWeapons.pawns.AddRange(pawns); questPart_BiocodeWeapons.inSignal = inSignal ?? QuestGen.slate.Get <string>("inSignal"); quest.AddPart(questPart_BiocodeWeapons); return(questPart_BiocodeWeapons); }
public static void Log(this Quest quest, string message, string inSignal = null, QuestPart.SignalListenMode signalListenMode = QuestPart.SignalListenMode.OngoingOnly) { QuestPart_Log questPart_Log = new QuestPart_Log(); questPart_Log.inSignal = QuestGenUtility.HardcodedSignalWithQuestID(inSignal) ?? QuestGen.slate.Get <string>("inSignal"); questPart_Log.signalListenMode = signalListenMode; questPart_Log.message = message; quest.AddPart(questPart_Log); }
public static QuestPart_SendShuttleAwayOnCleanup SendShuttleAwayOnCleanup(this Quest quest, Thing shuttle, bool dropEverything = false) { QuestPart_SendShuttleAwayOnCleanup questPart_SendShuttleAwayOnCleanup = new QuestPart_SendShuttleAwayOnCleanup(); questPart_SendShuttleAwayOnCleanup.shuttle = shuttle; questPart_SendShuttleAwayOnCleanup.dropEverything = dropEverything; quest.AddPart(questPart_SendShuttleAwayOnCleanup); return(questPart_SendShuttleAwayOnCleanup); }
public static QuestPart_SpawnWorldObject SpawnWorldObject(this Quest quest, WorldObject worldObject, List <ThingDef> defsToExcludeFromHyperlinks = null, string inSignal = null) { QuestPart_SpawnWorldObject questPart_SpawnWorldObject = new QuestPart_SpawnWorldObject(); questPart_SpawnWorldObject.inSignal = QuestGenUtility.HardcodedSignalWithQuestID(inSignal) ?? QuestGen.slate.Get <string>("inSignal"); questPart_SpawnWorldObject.defsToExcludeFromHyperlinks = defsToExcludeFromHyperlinks; questPart_SpawnWorldObject.worldObject = worldObject; quest.AddPart(questPart_SpawnWorldObject); return(questPart_SpawnWorldObject); }
public static QuestPart_FeedPawns FeedPawns(this Quest quest, IEnumerable <Pawn> pawns = null, Thing pawnsInTransporter = null, string inSignal = null) { QuestPart_FeedPawns questPart_FeedPawns = new QuestPart_FeedPawns(); questPart_FeedPawns.pawnsInTransporter = pawnsInTransporter; questPart_FeedPawns.pawns = pawns?.ToList(); questPart_FeedPawns.inSignal = QuestGenUtility.HardcodedSignalWithQuestID(inSignal) ?? QuestGen.slate.Get <string>("inSignal"); quest.AddPart(questPart_FeedPawns); return(questPart_FeedPawns); }
public static QuestPart_SetFactionHidden SetFactionHidden(this Quest quest, Faction faction, bool hidden = false, string inSignal = null) { QuestPart_SetFactionHidden questPart_SetFactionHidden = new QuestPart_SetFactionHidden(); questPart_SetFactionHidden.faction = faction; questPart_SetFactionHidden.inSignal = inSignal ?? QuestGen.slate.Get <string>("inSignal"); questPart_SetFactionHidden.hidden = hidden; quest.AddPart(questPart_SetFactionHidden); return(questPart_SetFactionHidden); }
public static void Leave(this Quest quest, IEnumerable <Pawn> pawns, string inSignal = null, bool sendStandardLetter = true, bool leaveOnCleanup = true, string inSignalRemovePawn = null) { QuestPart_Leave questPart_Leave = new QuestPart_Leave(); questPart_Leave.inSignal = inSignal ?? QuestGen.slate.Get <string>("inSignal"); questPart_Leave.pawns.AddRange(pawns); questPart_Leave.sendStandardLetter = sendStandardLetter; questPart_Leave.leaveOnCleanup = leaveOnCleanup; questPart_Leave.inSignalRemovePawn = inSignalRemovePawn; quest.AddPart(questPart_Leave); }
public static QuestPart_SetFactionRelations SetFactionRelations(this Quest quest, Faction faction, FactionRelationKind relationKind, string inSignal = null, bool?canSendLetter = null) { QuestPart_SetFactionRelations questPart_SetFactionRelations = new QuestPart_SetFactionRelations(); questPart_SetFactionRelations.inSignal = QuestGenUtility.HardcodedSignalWithQuestID(inSignal) ?? QuestGen.slate.Get <string>("inSignal"); questPart_SetFactionRelations.faction = faction; questPart_SetFactionRelations.relationKind = relationKind; questPart_SetFactionRelations.canSendLetter = canSendLetter ?? true; quest.AddPart(questPart_SetFactionRelations); return(questPart_SetFactionRelations); }
public static QuestPart_InvolvedFactions AddInvolvedFaction(this Quest quest, Faction faction) { QuestPart_InvolvedFactions questPart_InvolvedFactions = ((QuestPart_InvolvedFactions)quest.PartsListForReading.First((QuestPart p) => p is QuestPart_InvolvedFactions)) ?? new QuestPart_InvolvedFactions(); questPart_InvolvedFactions.factions.Add(faction); if (!quest.PartsListForReading.Contains(questPart_InvolvedFactions)) { quest.AddPart(questPart_InvolvedFactions); } return(questPart_InvolvedFactions); }
public static QuestPart_LeavePlayer LeavePlayer(this Quest quest, IEnumerable <Pawn> pawns, string inSignal = null, Faction replacementFaction = null, string inSignalRemovePawn = null) { QuestPart_LeavePlayer questPart_LeavePlayer = new QuestPart_LeavePlayer(); questPart_LeavePlayer.inSignal = QuestGenUtility.HardcodedSignalWithQuestID(inSignal) ?? QuestGen.slate.Get <string>("inSignal"); questPart_LeavePlayer.pawns.AddRange(pawns); questPart_LeavePlayer.replacementFaction = replacementFaction; questPart_LeavePlayer.inSignalRemovePawn = inSignalRemovePawn; quest.AddPart(questPart_LeavePlayer); return(questPart_LeavePlayer); }
public static QuestPart_Choice RewardChoice(this Quest quest, IEnumerable <QuestPart_Choice.Choice> choices = null, string inSignalChoiceUsed = null) { QuestPart_Choice questPart_Choice = new QuestPart_Choice(); questPart_Choice.inSignalChoiceUsed = inSignalChoiceUsed; if (choices != null) { questPart_Choice.choices.AddRange(choices); } quest.AddPart(questPart_Choice); return(questPart_Choice); }
public static QuestPart_AssaultColony AssaultColony(this Quest quest, Faction faction, MapParent mapParent, IEnumerable <Pawn> pawns, string inSignal = null, string inSignalRemovePawn = null) { QuestPart_AssaultColony questPart_AssaultColony = new QuestPart_AssaultColony(); questPart_AssaultColony.inSignal = QuestGenUtility.HardcodedSignalWithQuestID(inSignal) ?? QuestGen.slate.Get <string>("inSignal"); questPart_AssaultColony.faction = faction; questPart_AssaultColony.mapParent = mapParent; questPart_AssaultColony.pawns.AddRange(pawns); questPart_AssaultColony.inSignalRemovePawn = inSignalRemovePawn; quest.AddPart(questPart_AssaultColony); return(questPart_AssaultColony); }
public static QuestPart_JoinPlayer JoinPlayer(this Quest quest, MapParent mapParent, IEnumerable <Pawn> pawns, bool joinPlayer = false, bool makePrisoners = false, string inSignal = null) { QuestPart_JoinPlayer questPart_JoinPlayer = new QuestPart_JoinPlayer(); questPart_JoinPlayer.inSignal = QuestGenUtility.HardcodedSignalWithQuestID(inSignal) ?? QuestGen.slate.Get <string>("inSignal"); questPart_JoinPlayer.joinPlayer = joinPlayer; questPart_JoinPlayer.makePrisoners = makePrisoners; questPart_JoinPlayer.mapParent = mapParent; questPart_JoinPlayer.pawns.AddRange(pawns); quest.AddPart(questPart_JoinPlayer); return(questPart_JoinPlayer); }
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); }
public static QuestPart_ExitOnShuttle ExitOnShuttle(this Quest quest, MapParent mapParent, IEnumerable <Pawn> pawns, Faction faction, Thing shuttle, string inSignal = null, bool addFleeToil = true) { QuestPart_ExitOnShuttle questPart_ExitOnShuttle = new QuestPart_ExitOnShuttle(); questPart_ExitOnShuttle.inSignal = inSignal ?? QuestGen.slate.Get <string>("inSignal"); questPart_ExitOnShuttle.pawns.AddRange(pawns); questPart_ExitOnShuttle.mapParent = mapParent; questPart_ExitOnShuttle.faction = faction; questPart_ExitOnShuttle.shuttle = shuttle; questPart_ExitOnShuttle.addFleeToil = addFleeToil; quest.AddPart(questPart_ExitOnShuttle); return(questPart_ExitOnShuttle); }
public static QuestPart_ExtraFaction ExtraFaction(this Quest quest, Faction faction, IEnumerable <Pawn> pawns, ExtraFactionType factionType, bool areHelpers = false, string inSignalRemovePawn = null) { QuestPart_ExtraFaction questPart_ExtraFaction = new QuestPart_ExtraFaction { affectedPawns = pawns.ToList(), extraFaction = new ExtraFaction(faction, factionType), areHelpers = areHelpers, inSignalRemovePawn = inSignalRemovePawn }; quest.AddPart(questPart_ExtraFaction); return(questPart_ExtraFaction); }
public static QuestPart_WaitForEscort WaitForEscort(this Quest quest, MapParent mapParent, IEnumerable <Pawn> pawns, Faction faction, IntVec3 position, string inSignal = null, bool addFleeToil = true) { QuestPart_WaitForEscort questPart_WaitForEscort = new QuestPart_WaitForEscort(); questPart_WaitForEscort.point = position; questPart_WaitForEscort.inSignal = inSignal ?? QuestGen.slate.Get <string>("inSignal"); questPart_WaitForEscort.pawns.AddRange(pawns); questPart_WaitForEscort.mapParent = mapParent; questPart_WaitForEscort.faction = Faction.Empire; questPart_WaitForEscort.addFleeToil = addFleeToil; quest.AddPart(questPart_WaitForEscort); return(questPart_WaitForEscort); }
public static QuestPart_SendShuttleAway SendShuttleAway(this Quest quest, Thing shuttle, bool dropEverything = false, string inSignal = null) { if (shuttle == null) { return(null); } QuestPart_SendShuttleAway questPart_SendShuttleAway = new QuestPart_SendShuttleAway(); questPart_SendShuttleAway.inSignal = QuestGenUtility.HardcodedSignalWithQuestID(inSignal) ?? QuestGen.slate.Get <string>("inSignal"); questPart_SendShuttleAway.shuttle = shuttle; questPart_SendShuttleAway.dropEverything = dropEverything; quest.AddPart(questPart_SendShuttleAway); return(questPart_SendShuttleAway); }
public static QuestPart_AddContentsToShuttle AddContentsToShuttle(this Quest quest, Thing shuttle, IEnumerable <Thing> contents, string inSignal = null) { if (contents == null) { return(null); } QuestPart_AddContentsToShuttle questPart_AddContentsToShuttle = new QuestPart_AddContentsToShuttle(); questPart_AddContentsToShuttle.inSignal = QuestGenUtility.HardcodedSignalWithQuestID(inSignal) ?? QuestGen.slate.Get <string>("inSignal"); questPart_AddContentsToShuttle.shuttle = shuttle; questPart_AddContentsToShuttle.Things = contents; quest.AddPart(questPart_AddContentsToShuttle); return(questPart_AddContentsToShuttle); }
public static QuestPart_Alert Alert(this Quest quest, string label, string explanation, LookTargets lookTargets = null, bool critical = false, bool getLookTargetsFromSignal = false, string inSignalEnable = null, string inSignalDisable = null) { QuestPart_Alert questPart_Alert = new QuestPart_Alert(); questPart_Alert.label = label; questPart_Alert.explanation = explanation; questPart_Alert.critical = critical; questPart_Alert.getLookTargetsFromSignal = getLookTargetsFromSignal; questPart_Alert.lookTargets = lookTargets; questPart_Alert.inSignalEnable = inSignalEnable ?? QuestGen.slate.Get <string>("inSignal"); questPart_Alert.inSignalDisable = inSignalDisable; quest.AddPart(questPart_Alert); return(questPart_Alert); }
public static QuestPart_AddQuestRefugeeDelayedReward AddQuestRefugeeDelayedReward(this Quest quest, Pawn acceptee, Faction faction, IEnumerable <Pawn> pawns, FloatRange marketValueRange, string inSignalRemovePawn = null) { QuestPart_AddQuestRefugeeDelayedReward questPart_AddQuestRefugeeDelayedReward = new QuestPart_AddQuestRefugeeDelayedReward(); questPart_AddQuestRefugeeDelayedReward.questDef = QuestScriptDefOf.RefugeeDelayedReward; questPart_AddQuestRefugeeDelayedReward.acceptee = quest.AccepterPawn; questPart_AddQuestRefugeeDelayedReward.inSignal = QuestGen.slate.Get <string>("inSignal"); questPart_AddQuestRefugeeDelayedReward.inSignalRemovePawn = inSignalRemovePawn; questPart_AddQuestRefugeeDelayedReward.faction = faction; questPart_AddQuestRefugeeDelayedReward.lodgers.AddRange(pawns); questPart_AddQuestRefugeeDelayedReward.marketValueRange = marketValueRange; quest.AddPart(questPart_AddQuestRefugeeDelayedReward); return(questPart_AddQuestRefugeeDelayedReward); }
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); } }
public static QuestPart_AssaultThings AssaultThings(this Quest quest, MapParent mapParent, IEnumerable <Pawn> pawns, Faction assaulterFaction, IEnumerable <Thing> things, string inSignal = null, string inSignalRemovePawn = null, bool excludeFromLookTargets = false) { QuestPart_AssaultThings questPart_AssaultThings = new QuestPart_AssaultThings(); questPart_AssaultThings.inSignal = inSignal ?? QuestGen.slate.Get <string>("inSignal"); questPart_AssaultThings.mapParent = mapParent; questPart_AssaultThings.pawns.AddRange(pawns); questPart_AssaultThings.inSignalRemovePawn = inSignalRemovePawn; questPart_AssaultThings.faction = assaulterFaction; questPart_AssaultThings.things.AddRange(things); questPart_AssaultThings.excludeFromLookTargets = excludeFromLookTargets; quest.AddPart(questPart_AssaultThings); return(questPart_AssaultThings); }