public static QuestPart_Delay Delay(this Quest quest, int delayTicks, Action inner, string inSignalEnable = null, string inSignalDisable = null, string outSignalComplete = null, bool reactivatable = false, IEnumerable <ISelectable> inspectStringTargets = null, string inspectString = null, bool isQuestTimeout = false, string expiryInfoPart = null, string expiryInfoPartTip = null, string debugLabel = null, bool tickHistorically = false, QuestPart.SignalListenMode signalListenMode = QuestPart.SignalListenMode.OngoingOnly) { QuestPart_Delay questPart_Delay = new QuestPart_Delay(); questPart_Delay.delayTicks = delayTicks; questPart_Delay.inSignalEnable = QuestGenUtility.HardcodedSignalWithQuestID(inSignalEnable) ?? QuestGen.slate.Get <string>("inSignal"); questPart_Delay.inSignalDisable = QuestGenUtility.HardcodedSignalWithQuestID(inSignalDisable); questPart_Delay.reactivatable = reactivatable; questPart_Delay.signalListenMode = signalListenMode; if (!inspectStringTargets.EnumerableNullOrEmpty()) { questPart_Delay.inspectString = inspectString; questPart_Delay.inspectStringTargets = new List <ISelectable>(); questPart_Delay.inspectStringTargets.AddRange(inspectStringTargets); } if (isQuestTimeout) { questPart_Delay.isBad = true; questPart_Delay.expiryInfoPart = "QuestExpiresIn".Translate(); questPart_Delay.expiryInfoPartTip = "QuestExpiresOn".Translate(); } else { questPart_Delay.expiryInfoPart = expiryInfoPart; questPart_Delay.expiryInfoPartTip = expiryInfoPartTip; } if (inner != null) { QuestGenUtility.RunInner(inner, questPart_Delay); } if (!outSignalComplete.NullOrEmpty()) { questPart_Delay.outSignalsCompleted.Add(QuestGenUtility.HardcodedSignalWithQuestID(outSignalComplete)); } if (!debugLabel.NullOrEmpty()) { questPart_Delay.debugLabel = debugLabel; } quest.AddPart(questPart_Delay); return(questPart_Delay); }
private void CreateDelayedIncident(int delayTicks, string delayInSignal, string disableSignal, IncidentDef incident, Map map, float points, Faction faction) { Quest quest = QuestGen.quest; QuestPart_Delay questPart_Delay = new QuestPart_Delay(); questPart_Delay.delayTicks = delayTicks; questPart_Delay.inSignalEnable = delayInSignal; questPart_Delay.inSignalDisable = disableSignal; questPart_Delay.debugLabel = questPart_Delay.delayTicks.ToStringTicksToDays() + "_" + incidentDef.ToString(); quest.AddPart(questPart_Delay); QuestPart_Incident questPart_Incident = new QuestPart_Incident(); questPart_Incident.incident = incident; questPart_Incident.inSignal = questPart_Delay.OutSignalCompleted; questPart_Incident.SetIncidentParmsAndRemoveTarget(new IncidentParms { forced = true, target = map, points = points, faction = faction }); quest.AddPart(questPart_Incident); }