Feature #4306

(mod/OpenCS?) Avoid dialogue reordering if two plugins modify the same entry while adding dialogue before it

Added by rot tor about 2 months ago.

Target version:
Start date:
% Done:




This is a design issue with the way the game builds its doubly-linked dialogue list. Is there something OpenMW can/should do about it?

When adding a new dialogue entry in the Construction Set, the entries before and after it are modified (because their NNAM and PNAM records change to show that a new dialogue ID comes after/before them). When these before/after entries are not deliberately edited except for the automatic NNAM/PNAM change, the dialogue plugin is called "dirty"; modders need to remove these records (by manually going into File>Data Files...>Details, finding the entries and toggling their 'ignore' flags, or, more commonly, outside of the CS by using third party tools), then the plugin is called "clean".
To simplify the following list of cases take "dirty" to mean any plugins that modify the original master's dialogue line(s), deliberately or not:

  • 2+ clean plugins add dialogue before or after the same line: dialogue from the plugin loaded last comes first, no issue
  • 2+ dirty plugins modify the same line and add no new dialogue entries, or only add dialogue entries after the original line: same, no issue
  • 1 dirty plugin modifies the same line and loads before clean plugins that add dialogue before the line: same, no issue
  • 1 dirty plugin modifies the same line and loads after plugins (clean or dirty) that add dialogue before the line: the dialogue that was first loaded before the line ends up repositioned after the line

Plugin 1 modifies Greeting 1 "[You have failed your Oath of Silence]" and adds two entries before it:

(new entry) A
(new entry) B
(modified entry) [You have failed your Oath of Silence]

Plugin 2 adds two entries before that Greeting 1 but doesn't "dirty" it:

(new entry) X
(new entry) Y
(clean entry not modified) [You have failed your Oath of Silence]

Result when Plugin 1 is loaded after Plugin 2:

[You have failed your Oath of Silence]

There were formerly reports of much worse and less logical issues with reordering that I haven't been able to reproduce. From my testing, the CS and the game engine simply give priority to PNAM records when building/reordering the dialogue list.

For the Morrowind game, the easy answer is that no mods should modify the original ESM lines except for your favorite bug fixing patch, and that any mods that modify the same line are by nature incompatible. In practice it's more complicated, especially since when the original masters fail to use "nolore" there is no other way to make a topic unavailable than directly editing the lines, and even mods that simply need to apply the same modification to a line might end up with incompatible dialogue ordering.

For OpenMW/OpenCS, beyond making it easier to clean dialogue (or preventing OpenCS from automatically modifying dialogue records that don't belong to the active plugin when you add new dialogue next to them) I'm not sure what could be done better.

Also available in: Atom PDF