private const string IpcGetCurrentQuestId = "Questionable.GetCurrentQuestId";
     private const string IpcGetCurrentlyActiveEventQuests = "Questionable.GetCurrentlyActiveEventQuests";
     private const string IpcStartQuest = "Questionable.StartQuest";
+    private const string IpcStartSingleQuest = "Questionable.StartSingleQuest";
 
     private readonly ICallGateProvider<bool> _isRunning;
     private readonly ICallGateProvider<string?> _getCurrentQuestId;
     private readonly ICallGateProvider<List<string>> _getCurrentlyActiveEventQuests;
     private readonly ICallGateProvider<string, bool> _startQuest;
+    private readonly ICallGateProvider<string, bool> _startSingleQuest;
 
     public QuestionableIpc(
         QuestController questController,
             eventInfoComponent.GetCurrentlyActiveEventQuests().Select(q => q.ToString()).ToList());
 
         _startQuest = pluginInterface.GetIpcProvider<string, bool>(IpcStartQuest);
-        _startQuest.RegisterFunc((string questId) => StartQuest(questController, questRegistry, questId));
+        _startQuest.RegisterFunc((string questId) => StartQuest(questController, questRegistry, questId, false));
+
+        _startSingleQuest = pluginInterface.GetIpcProvider<string, bool>(IpcStartSingleQuest);
+        _startSingleQuest.RegisterFunc((string questId) => StartQuest(questController, questRegistry, questId, true));
     }
 
-    private static bool StartQuest(QuestController qc, QuestRegistry qr, string questId)
+    private static bool StartQuest(QuestController qc, QuestRegistry qr, string questId, bool single)
     {
         if (ElementId.TryFromString(questId, out var elementId) && elementId != null && qr.TryGetQuest(elementId, out var quest))
         {
             qc.SetNextQuest(quest);
-            qc.Start("IPCQuestSelection");
+            if (single)
+                qc.StartSingleQuest("IPCQuestSelection");
+            else
+                qc.Start("IPCQuestSelection");
             return true;
         }
         return false;