private Conversation DlgToConversation(Dlg dlg, int conversationID)
        {
            Conversation conversation = template.CreateConversation(conversationID, dlg.name);
            conversation.ActorID = CurrentActorID;
            conversation.ConversantID = CurrentConversantID;

            // Add START dialogue entry:
            DialogueEntry firstDialogueEntry = template.CreateDialogueEntry(FirstDialogueEntryID, conversationID, "START");
            firstDialogueEntry.ActorID = CurrentActorID;
            firstDialogueEntry.ConversantID = CurrentConversantID;
            firstDialogueEntry.Sequence = "None()";
            conversation.dialogueEntries.Add(firstDialogueEntry);

            // Convert EntryList into dialogue entries:
            foreach (var entry in dlg.EntryList) {
                int dialogueEntryID = EntryIDToDialogueEntryID(dlg, entry.ID);
                DialogueEntry dialogueEntry = template.CreateDialogueEntry(dialogueEntryID, conversationID, entry.Comment);
                dialogueEntry.ActorID = LookupSpeaker(entry, CurrentConversantID);
                dialogueEntry.ConversantID = CurrentActorID;
                AddTextToDialogueEntry(entry.Text, dialogueEntry, EntryType.Entry);
                if (entry.ShowOnce) dialogueEntry.conditionsString = string.Format("Dialog[{0}] ~= \"WasDisplayed\"", dialogueEntryID);
                conversation.dialogueEntries.Add(dialogueEntry);
                MarkEntryScripts(entry, dialogueEntry, dlg.name);
            }

            // Convert ReplyList into dialogue entries:
            foreach (var reply in dlg.ReplyList) {
                int dialogueEntryID = ReplyIDToDialogueEntryID(dlg, reply.ID);
                DialogueEntry dialogueEntry = template.CreateDialogueEntry(dialogueEntryID, conversationID, reply.Comment);
                dialogueEntry.ActorID = CurrentActorID;
                dialogueEntry.ConversantID = CurrentConversantID;
                AddTextToDialogueEntry(reply.Text, dialogueEntry, EntryType.Reply);
                if (reply.ShowOnce) dialogueEntry.conditionsString = string.Format("Dialog[{0}] ~= \"WasDisplayed\"", dialogueEntryID);
                conversation.dialogueEntries.Add(dialogueEntry);
                MarkEntryScripts(reply, dialogueEntry, dlg.name);
            }

            // Convert StartingList links:
            foreach (var startingEntry in dlg.StartingList) {
                Link link = new Link();
                link.originConversationID = conversationID;
                link.destinationConversationID = conversationID;
                link.originDialogueID = FirstDialogueEntryID;
                int destinationDialogueID = EntryIDToDialogueEntryID(dlg, startingEntry.Index);
                link.destinationDialogueID = destinationDialogueID;
                firstDialogueEntry.outgoingLinks.Add(link);
                MarkLinkCondition(startingEntry, conversation, destinationDialogueID, dlg.name);
            }

            // Convert EntryList[*].RepliesList links:
            foreach (var entry in dlg.EntryList) {
                DialogueEntry dialogueEntry = conversation.GetDialogueEntry(EntryIDToDialogueEntryID(dlg, entry.ID));
                foreach (var reply in entry.RepliesList) {
                    Link link = new Link();
                    link.originConversationID = conversation.id;
                    link.destinationConversationID = conversation.id;
                    link.originDialogueID = EntryIDToDialogueEntryID(dlg, entry.ID);
                    int destinationDialogueID = ReplyIDToDialogueEntryID(dlg, reply.Index);
                    link.destinationDialogueID = destinationDialogueID;
                    dialogueEntry.outgoingLinks.Add(link);
                    //---Was: MarkLinkCondition(entry, conversation, destinationDialogueID, dlg.name);
                    MarkLinkCondition(reply, conversation, destinationDialogueID, dlg.name);
                }
            }

            // Convert ReplyList[*].EntriesList links:
            foreach (var reply in dlg.ReplyList) {
                DialogueEntry dialogueEntry = conversation.GetDialogueEntry(ReplyIDToDialogueEntryID(dlg, reply.ID));
                foreach (var entry in reply.EntriesList) {
                    Link link = new Link();
                    link.originConversationID = conversation.id;
                    link.destinationConversationID = conversation.id;
                    link.originDialogueID = ReplyIDToDialogueEntryID(dlg, reply.ID);
                    int destinationDialogueID = EntryIDToDialogueEntryID(dlg, entry.Index);
                    link.destinationDialogueID = destinationDialogueID;
                    dialogueEntry.outgoingLinks.Add(link);
                    //---Was: MarkLinkCondition(reply, conversation, destinationDialogueID, dlg.name);
                    MarkLinkCondition(entry, conversation, destinationDialogueID, dlg.name);
                }
            }

            // Return the conversation:
            return conversation;
        }
 private int EntryIDToDialogueEntryID(Dlg dlg, int entryID)
 {
     return (1 + entryID);
 }
 private int ReplyIDToDialogueEntryID(Dlg dlg, int replyID)
 {
     return (1 + dlg.EntryList.Count + replyID);
 }