TESTool

From Morrowind Modding Wiki
Jump to: navigation, search


TESTool
No image
Author Ghostwheel
Version 1.3
Download Morrowind Modding History
Website N/A

TESTool by ghostwheel is a helper utility useful to both players and modders.

Available functions

  • Remove unnecessary data including GMST entries
  • Merge leveled lists for all active plugins
  • Merge changes to TES objects and dialog entries
  • Generate a detailed conflict report for a given list of plugins
  • Manage list of currently active plugins with possibility to update an .esp's or .esm's file header (version and master file sizes) and to change plugin loading order.
  • A one-click "JUST FIX IT!" button that automatically executes a set of tasks to reduce conflicts.

Use of the TESTool Merge Dialog function and "JUST FIX IT!" button are no longer recommended.

Suggestions for use

It is suggested that TESTool be used solely for cleaning mods and generating a Merged Objects plugin.

The Merge Leveled Lists function of TESTool appends rather than resequences leveled list entries, this can be resolved with aerelorn's Leveled List Resequencer which should be used in conjunction with TESTool. Run TESTool and then run Leveled List Resequencer

Better alternatives to TESTool for generating a leveled list plugin are Wrye Mash and tes3cmd. Neither of those programs require a resequencer.

The Merged Objects and Merged Levelled List .esp's, regardless of the utility used to generate the latter, must appear last in the load order in the Data Files window on startup.

Cleaning Mods

TESTool's cleaning process will do the following:

  • Remove any default GMST records (including “evil” 72 entries).
  • Remove any records that are identical to the records found in Morrowind.esm, Tribunal.esm or Bloodmoon.esm, the default ESM files. There only two exceptions to this:
    • For INFO records NNAM/PNAM fields are ignored during comparison (unless restricted dialog cleaning has been enabled)
    • LTEX records (land textures) are not removed.
  • Remove any object references inside CELL records that are identical to the references in the default ESM files.
  • Remove AMBI (ambient light) and WGHT (water level) fields from the CELL records that are identical to the references in the default ESM files.
  • Remove empty CELL records that do not have any related LAND/PGRD records. If restricted cell cleaning is enabled, then only STANDARD empty cells will be removed.
  • Remove any DIAL (dialog) records that do not have associated INFO records, unless it is a journal dialog (type 4).
  • Remove any duplicate objects (two objects with same ID) if requested by users. Re-saving plugin in the TES Construction Set will also eliminate duplicate objects.
  • During save the plugin will be automatically upgraded to the file format version 1.3

To minimise the chance of damaging one of their plugins mod users should enable both "Restricted dialog cleaning" and "Restricted cell cleaning" in TESTool's options menu.

Merged Objects

One of the most common conflicts between plugins is the case when two plugins update different fields for the same object. For example one plugin affects game play settings and modifies weapon statistics and another plugin provides new look for the weapon and updates only its model. Another case would be when two different plugins add different items to the same container or to the same NPC/creature. The "Merge Objects for active plugins" function in TESTool should identify and resolve majority of such conflicts.

Objects will be merged only for the enabled ESP/ESM plugins - any non-active plugin in the "Data Files" folder will be ignored. Generated objects are saved in the file "Merged_Objects.esp" in the "Data Files" folder. Or just simply regenerate it each time you select / deselect active plugins.

Make sure that this file is loaded after all other plugins. You can use mlox for this.

Only the following object types will be merged using this function: CLAS (class), FACT (faction), SOUN (sound), SKIL (skill), MGEF (magic effect), REGN (region info), BSGN (birthsign), STAT (static), DOOR (door), MISC (miscellaneous object), WEAP (weapon), CONT (container), SPEL (spell), CREA (creature), BODY (body part), LIGH (light), ENCH (enchantment), NPC_ (NPC), ARMO (armor), CLOT (clothing), REPA (repair item), ACTI (activator), APPA (alchemy apparatus), LOCK (lockpick), PROB (security probe), INGR (alchemy ingredient), BOOK (book), ALCH (alchemy potion).

TESTool will identify objects defined in multiple plugins, identify what actual changes were made by each plugin (if object in question is defined in one of the standard ESMs) and merge those changes into the new object definition. In the case of two or more plugins changing the same object property, information from latest plugin (the one with the latest modified date, i.e. the one loading later in your load order) will be used.

For many fields, comparison is done on the attribute level. For example if one plugin changes weapon weight and another changes weapon range, even though both those values are stored in the WPDT field, they will be recognized and merged.

Currently, following fields will be merged on the attribute level: MGEF.MEDT, MISC.MCDT, WEAP.WPDT, SPEL.SPDT, CREA.AIDT, CREA.NPDT, LIGH.LHDT, ENCH.ENDT, NPC_.AIDT, NPC_.NPDT, ARMO.AODT, CLOT.CTDT, REPA.RIDT, APPA.AADT, LOCK.LKDT, PROB.PBDT, BOOK.BKDT, ALCH.ALDT.

TESTool will not merge weapon, armor or clothing objects if plugins define them as different types (e.g. helm vs boots). Also, it is important to mention that only necessary objects will be saved in the “Merged_Objects.esp” - if the merged object is identical to the object in the plugin with the latest date, it will not be saved, but you will find appropriate warnings in the log file. This behavior can be overridden by using “Merge unchanged objects” option

Worked example of "Merge Objects for active plugins" function

Morrowind loads last the most recent mods, so suppose for the following example that mod1 is the eldest, then there is mod2, and the most recent mod is mod3. Morrowind loads mod1, then mod2, and then mod3)

Object present in Morrowind.esm: example -> a sword:

  • Weight = 100
  • Price = 200
  • Damage = 1-5 pts (for each type of attack)
  • 3D Model = sword.nif

This sword is modified by mod1 with this data:

  • Weight = 150
  • Price = 200
  • Damage = 1-5
  • 3D Model = sword.nif

It is also modified by mod2:

  • Weight = 120
  • Price = 250
  • Damage = 1-5
  • 3D Model = sword.nif

And by mod3:

  • Weight = 100
  • Price = 200
  • Damage = 2-8
  • 3D Model = sword.nif

If you load only one of those three mods, you will only get the modification of the weapon corresponding to the mod that you have chosen. If you load these three mods without changing or adding anything the only data used by Morrowind is the data of the last loaded mod, which is mod 3.

If you use the same mods but you use the Merge Objects function then TESTool is going to "scan" Morrowind and the mods. If one part of the definition of an object is modified, it'll add it to the new "merged_objects.esp" mod. If two mods are modifying the same part of the definition of an object then TESTool uses the last available data, which means that it takes the data that are from the mod loading latest in your load order.

In this example, TESTool is going to scan Morrowind.esm:

  • Weight = 100
  • Price = 200
  • Damage = 1-5 pts
  • 3D Model = sword.nif

then it scans mod1, and you'll get a weapon like this:

  • Weight = 150
  • Price = 200
  • Damage = 1-5
  • 3D Model = sword.nif

Then it scans mod2 and the sword data are:

  • Weight = 120
  • Price = 250
  • Damage = 1-5
  • 3D Model = sword.nif

Then it scans mod3, and you'll get the final data (which will be stored in the merged_objects mod):

  • Weight = 120 (from mod2)
  • Price = 250 (from mod2)
  • Damage = 2-8 (from mod3)
  • 3D Model = sword.nif (from Morrowind, because none of the three mods is modifying this part of the definition of the sword)

The weight and the price data taken by TESTool are from mod2 and not (as written above) from the mod loading last in the load order, which is mod3. This is absolutely normal! It happens because the weight and price data in mod 3 are exactly the same as the data in Morrowind.esm, which means that they are the same data as in the game without any mods. TESTool does not care about data that is exactly the same as that initially present in the game. In any other case TESTool chooses the data from the mod loading last in the load order.

Problems with "Merge Objects for active plugins" function

With large mod lists TESTool's "Merge Objects for active plugins" function can crash. It appears that an index which TESTool uses to keep track of the objects it's merging can be overwhelmed by a user with a large number of mods.

abot created MMOG (Morrowind Merged Objects Generator) which uses tes3cmd in tandem with TESTool to bypass this problem.

External Links

Ghostwheel's TESTool Morrowind Mod History download
aerelorn's Leveled List Resequencer Morrowind Mod History download
abot's MMOG (Morrowind Merged Objects Generator)