Im my current EET install all existing state triggers in AjantiJ and Bajant dialogues have a flag for EndofBG1 1,0 or LT2 (i.e. they are marked being prior BG2), Since I have no Ajantis for BG2 installed and EET would append any BG2 contents to those files, this means that core EET has added those flags.
this is implemented by BG1NPC Project and it's not longer needed in latest version of EET (since I've implemented PID detection auto filtering). The only problematic part of JOIN dialogue files is PID system which is mods added feature (nothing like this exists in vanilla content) because those dialogues don't have any real filtering so they can be triggered just by talking to party NPC (which normally should not trigger any dialogue). Other than PIDs if dialogues are properly filtered (which means following the same rules that Bioware implemented in the original content) than there should be no way for wrong dialogue to show up. Endofbg1 filtering is NOT needed if you don't do sloppy job writing your dialogue triggers. Nothing in vanilla content needed any of those (or at least there wasn't a single report about this yet). Such filtering should be done only if you really don't want something to show up later in the game. Let me quote the documentation why setup-eet_end automatically merges JOIN dialogue files in the first place:
EET is installed in two steps - main components (setup-EET_core installed automatically by setup-EET) on a clean BG2:EE, and additional setup-EET_end component at the end of mod installation process (after any other mods). This second step is used to automatically:
- merge NPC JOIN dialogue files and update all references to them
- update campaign related 2da files that may have missing entries
- export mod added strings that can be used to update mod added content in new installation
- generate code for SoA item importation based on 2da files
Why exactly NPC JOIN dialogue files are being merged? Short answer - interjections. Let's use an example from vanilla game.
Party travels through Athkatla slums where they can meet a shady looking guy that initiates a dialogue: "Yes, you! See this mighty fine sphere here? You can have it for your very own for a mere 500 gold pieces! What do you say?". Now if you have Minsc in the party following interjection is called "Boo says such a sphere will not fit into my pocket. If I can't carry it with me, it's just not a good buy."
The above dialogue piece called 'interjection' is triggered by WAYLANE.DLG and filtered with triggers, in this case See("Minsc") and InParty("Minsc"). Now let's say you didn't meet this guy during your Shadows of Amn travels. What would happen after going back from Throne of Bhaal to Athkatla with Minsc? The dialogue would be interrupted in the place where Minsc is expected to say something (dialogue shutdown/infinite loop and other problems). In order to make JOIN dialogue files valid through whole journey continuous characters that uses more than 1 JOIN dialogue file have them merged with one another.
JOIN dialogue file merging is done automatically, based on PDIALOG variants 2DA entries, at the end of installation process (after all mods are already installed), so modders don't need to change anything when it comes to JOIN dialogue coding. You should patch each dialogue file exactly the same way as you do in vanilla games. State numbers and file names are not altered at that point of installation (just keep in mind that some BG1 files have been renamed due to conflicts with BG2). You can use this reference file that lists different files that are assigned through out the game (green colour cells shows BG1 renamed files - if you're using cpmvars variable libraries thn you don't even need to be aware about it).
Unless BG1 NPC Project also filters code that triggers dialogues with Endofbg1 / chapter variables (not sure if that's the case), additional filters can actually break the JOIN dialogue interjection when party returns to area during different campaign (no links or replies / dialogue aborted etc.).
edit: to clarify using above mentioned example: Let's say that Minsc interjection has been added by mod. If you're going to filter it with chapter variable in his JOIN dialogue file than you should also filter WAYLANE.DLG response that triggers it the same way. Not doing so would break the dialogue. But why would you do it in the first place? That Minsc's line is equally good even if it triggers during ToB when you return to SoA.
Newest version of setup-eet_end implements this code to automatically handle PIDs:
it analyses all triggers that particular dialogue block has at once and add additional filter automatically if IsGabber(Player1) trigger is detected and block is not filtered with chapter / endofbg1 variable yet. Unfortunately PIDs didn't exist in vanilla content so there is no guideline how to code one so there are differences all over the place in different mods but from what I've seen all mods that I've tested used IsGabber(Player1) for PIDs. With this in place problem like this wouldn't happen even if BG1 NPC Project didn't use Endofbg1 filtering at all.
edit: I've mentioned that nothing in vanilla content needed additional filters - there is one exception. Irenicus Dungeon Imoen and SoA Imoen in vanilla game used entirely different DV (Imoen, Imoen2) and considering both of this content happens during single campaign BG2 Imoen dialogues have additional chapter variable filters in EET.
edit: clarified few things in the post. Please let me know if something is still confusing.
Edited by K4thos, 02 March 2017 - 06:05 AM.