private static string GenerateName() { GrammarRequest req = default(GrammarRequest); req.Rules.AddRange(QuestGen.QuestNameRulesReadOnly); foreach (KeyValuePair <string, string> item in QuestGen.QuestNameConstantsReadOnly) { req.Constants.Add(item.Key, item.Value); } QuestGenUtility.AddSlateVars(ref req); Predicate <string> predicate = (string x) => !Find.QuestManager.QuestsListForReading.Any((Quest y) => y.name == x); if (QuestGen.Root.nameMustBeUnique) { return(NameGenerator.GenerateName(req, predicate, appendNumberIfNameUsed: false, "questName")); } string text = null; int i; for (i = 0; i < 20; i++) { text = NameGenerator.GenerateName(req, null, appendNumberIfNameUsed: false, "questName"); if (predicate(text)) { break; } } if (i == 20) { Log.Warning("Generated duplicate quest name. QuestScriptDef: " + QuestGen.Root + ". Quest name: " + text); } return(text); }