CONFLICTS - CHILDREN OF MORROWIND

Children of Morrowind - conflicts and solutions



Known conflicts/incompatibilities:

Children of Morrowind will run problem-free in most games.

However, Children of Morrowind does effect many cells in the game world, and sometimes there can be conflicts between mods, in most cases caused by the local ref bug. Luckily, there are now ways to handle such issues.

 

Psyringe has kindly explained both the problems and the solutions to it:

- Emma -

 

Corrupted savegames, crashes, and how to fix them
- by Psyringe



Children of Morrowind adds many NPCs to areas that are affected by other mods as well - Balmora, Seyda Neen, and many other settlements. Unfortunately there is a particularly nasty bug in Morrowind, the "local ref bug", which can easily lead to problems if many mods affect the same area. Since Children of Morrowind is especially at risk to be affected by this bug, the following section deals with its symptoms, causes, and ways to prevent it.

Usual symptoms of this bug are these:

- missing doors
- missing NPCs (including children)
- Morrowind crashes when trying to load a specific savegame
- Error messages "Reference (some object) not found in master"
- Error messages "Can't load script (some script name)"
- Error messages "Can’t load (some spell name)"

This bug is the cause for many crashes and otherwise inexplicable incompatibilities between mods. None of the mods involved is at fault, and all of them work correctly if the other mods aren't present, but when used together, they happen to trigger a bug in the game engine.

Fortunately, the Morrowind community has developed two tools that can prevent this bug: The Morrowind Code Patch (MCP), and Wrye Mash. With regard to the local ref bug, the MCP offers a more complete solution, which is easier to apply in most cases. However, the MCP is currently (Oct 2008) a fairly new piece of software, so it has a higher risk of having undiscovered bugs or side effects than Wrye Mash's method, which is being used successfully since 2005.

Nevertheless, both programs have been proven to fix the local ref bug, so both will be described here:


a) The Morrowind Code Patch (MCP)

This program, developed by Hrnchamd, patches several bugs in Morrowind which the official patches did not address, including the "local ref bug" described above. Like the official patches, this is a program that modifies your Morrowind.exe.

You can get this patch from here:
http://www.tesnexus.com/downloads/file.php?id=19510

And you can get the most recent information about the patch from the Elder Scrolls Forums - look for a thread called "Repairing the Cogs of Morrowind" in the "Morrowind Mods" subforum:

http://www.bethsoft.com/bgsforums/index.php?showforum=12

The MCP is modular, i.e. you can enable and disable individual features as you like. When you apply it, make sure that the "savegame corruption fix" is enabled, because this is the component that fixes the local ref bug.

As mentioned above, the MCP is still very new at the time of this writing (Oct 2008). It has received thorough testing by its developers, and it has been proven that it actually fixes the local ref bug, but like any new piece of software, it might still have bugs lurking in obscure places, or side effects that have not been fully explored yet. It is therefore recommended to check the forums mentioned above for recent developments, problems, or advice, regarding the MCP.


b) Wrye Mash

Wrye Mash is a program that (among other things) helps you to manage your mods, change your load order, prevent or repair doubling, and prevent the local ref bug.

You can find Wrye Mash here:
http://wrye.ufrealms.net/#WryeMash

And its documentation here:
http://wrye.ufrealms.net/Wrye%20Mash.html

With Wrye Mash, you can prevent the local ref bug by using the "Renumber Refs" function on at least one of any two mods that trigger this bug. You can access this function by right-clicking on a mod and choose "Repair Refs" in the popup menu. Make a backup of the mod file first.

When renumbering refs with Wrye Mash, there are a couple of things to keep in mind. There is a lot of information about these details in Mash's documentation (and in a guide which I will link to further below), so the following descriptions are rather terse. Please refer to Mash's documentation (or the guide mentioned further below) for more information.

- It is easier to renumber refs before you start a new game. When you already have a game in progress, and use "renumber refs" on a mod that was active when you saved this game, then you need to make an "updater" which adjusts your savegame to the changes that you do to the mod - otherwise you will see a lot of doubling.

- You cannot renumber refs on an esm file. You *can* use Mash to transform an esm into an esp, renumber refs, and transform the file back to an esm. However, this is inadvisable in most cases - if you have an esp file which modifies content of the esm file (like a patch plugin that fixes problems in the esm), then you cannot use this esp with an esm with renumbered refs; doing so would lead to doubling.

- It is rarely obvious which combination of mods triggers the local ref bug, i.e. which mods need a renumbering of their references. The output of Mash's "Repair All" function helps to determine them.

- "Renumber refs" greatly reduces the risk that local ref bugs occur, but cannot totally remove it unless you manually assign different numerical ranges to mods that could trigger local ref bugs.

A very good guide on how to diagnose and prevent local ref bugs with Wrye Mash is "Ieldra's guide", which can be found here:
http://abot.silgrad.com/guppy/file/articles/BadRefDebuggingGuide.html


Addendum: Technical details about the local ref bug:

The following section contains some technical information about the local ref bug. It is provided for people interested in a deeper understanding of this bug, but it is not required to read it.

Some necessary definitions:

- object: In Morrowind, an "object" is not something tangible, it's rather a template or a construction plan. For example, the object "barrel_01" defines the look and contents of a barrel.

- reference: Every "thing" that a mod places into the gameworld is a reference. For example, if I go into the construction set and drop a barrel_01 into Arrille's tradehouse, then I have created a *reference* - specifically, a reference to the *object* barrel_01.

- objectindex: Every new reference that a mod places into the gameworld is assigned a number: Its objectindex. When you save a mod in the construction set, then the CS assigns objectindices to all references that this mod creates, starting with 1, and increasing them by 1 for every further reference. If your mod does nothing else than putting two barrels and a scrib into the gameworld, then these three references will have the objectindices 1, 2, and 3.

- modindex: Each active mod has a modindex. The first esm or esp in the current load order has modindex 1, the second one modindex 2, and so on. The game uses modindex and objectindex to identify references: "This is reference no. 12 of mod no. 17", "This is reference no. 12 of mod no. 36", "This is reference no. 352 of mod no. 5", etc.

- persistence: Objects can be persistent or non-persistent. Like all other data, references inherit this setting from the objects they refer to. Persistent objects are always in memory, non-persistent objects are only in memory if they are in the same area as the player.

The specific circumstances under which the local ref bug is triggered are these:

- One mod adds a non-persistent reference to a cell.
- Another mod adds a persistent reference to the same cell.
- Both references happen to have the same objectindex.
- The non-persistent reference gets written to the savegame.

When these four conditions are true, then, upon loading the savegame, Morrowind will confuse the two references. This usually leads to vanishing persistent references (like doors or NPCs), but can also lead to crashes, or error messages like those mentioned at the beginning.

You can test this by yourself with two very simple mods:

- Create one mod which puts a non-persistent reference into the gamworld (and does nothing else). Some clutter will do well, like a cup or a bottle - just make sure that the checkbox for "references persist" is not checked for this object. I'll go with a cup for this example.

- Create another mod which puts a persistent reference into the same cell. You could take an NPC, NPCs are always pesistent.

- Now activate these two mods, remove all others (so that these cannot interfere), and start a new game.

- Enter the cell where you placed the cup and the NPC, take the cup, and leave the cell. Exit the game.

- Restart the game, load your savegame, and re-enter the cell.

You will see that the cup has reappeared, and that the NPC has vanished. This is the local ref bug at work.

What has happened? Obviously the game has confused the cup with the NPC. Both have the same objectindex (which is 1, because both mods only add one reference). The game should be able to distinguish the two references by their modindex (which is different because the two references originate from different mods). But due to a bug in the engine, it cannot do so under these circumstances.

There are other, closely related problems. For example, if two mods place leveled creatures (spawnpoints) with the same objectindex, then the engine confuses those as well, which usually leads to doubling of creatures. Another problem is the addition of references with scripts attachedm which can cause other references with the same objectindex to disappear.

All these problems are caused by bugs in Morrowind's reference management, and can be prevented by the methods mentioned previously.