private static void TestQuestPart() { List <DebugMenuOption> list = new List <DebugMenuOption>(); foreach (Type item in typeof(QuestPart).AllSubclassesNonAbstract()) { Type localQuestPartType = item; list.Add(new DebugMenuOption(localQuestPartType.Name, DebugMenuOptionMode.Action, delegate { Quest quest = Quest.MakeRaw(); quest.name = "DEBUG QUEST (" + localQuestPartType.Name + ")"; QuestPart questPart = (QuestPart)Activator.CreateInstance(localQuestPartType); quest.AddPart(questPart); questPart.AssignDebugData(); quest.description = "A debug quest to test " + localQuestPartType.Name + "\n\n" + Scribe.saver.DebugOutputFor(questPart); Find.QuestManager.Add(quest); Find.LetterStack.ReceiveLetter("Dev: Quest", quest.description, LetterDefOf.PositiveEvent, LookTargets.Invalid, null, quest); })); } Find.WindowStack.Add(new Dialog_DebugOptionListLister(list)); }