private void ParseQuests(IList <string> lines) { for (int i = 0; i < lines.Count; i++) { if (!lines[i].ToUpper().StartsWith(QuestKey)) { continue; } var loadedNPC = NPCObject.Get(LoadedObjectID); if (loadedNPC == null) { return; } while (++i < lines.Count) { if (lines[i].StartsWith("[")) { return; } if (String.IsNullOrEmpty(lines[i])) { continue; } int.TryParse(lines[i], out int index); if (index == 0) { continue; } QuestInfo info = Envir.GetQuestInfo(Math.Abs(index)); if (info == null) { return; } if (index > 0) { info.NpcIndex = LoadedObjectID; } else { info.FinishNpcIndex = LoadedObjectID; } if (loadedNPC.Quests.All(x => x != info)) { loadedNPC.Quests.Add(info); } } } }