Skip to content

tes3cmd command line documentation

John Moonsugar edited this page Sep 18, 2016 · 1 revision

Usage: tes3cmd COMMAND OPTIONS plugin...

VERSION: 0.40-PRE-RELEASE-1

tes3cmd is a powerful low-level command line tool that can examine, edit, and
delete records from a TES3 plugin for Morrowind. It can also generate various
patches and clean plugins too.

COMMANDS
  active
    Add/Remove/List Plugins in your load order.
  clean
    Clean plugins of Evil GMSTs, junk cells, and more.
  common
    Find record IDs common between two plugins.
  delete
    Delete records/subrecords/object instances from plugin.
  diff
    Report differences between two plugins.
  dump
    Dump records as text for easy study.
  esm
    Convert plugin (esp) to master (esm).
  esp
    Convert master (esm) to plugin (esp).
  fixit
    tes3cmd fixes everything it knows how to fix.
  header
    Read/Write plugin Author/Description, sync to masters....
  modify
    Powerful batch record modification via user code extensions.
  multipatch
    Patches problems, merges leveled lists, etc..
  overdial
    Identify overlapping dialog (a source of missing topic bugs).
  recover
    Recover usable records from plugin with 'bad form' errors.
  resetdates
    Reset dates of Bethesda Data Files to original settings.

FOR HELP ON INDIVIDUAL COMMANDS:

  tes3cmd help <command>

GENERAL HELP:

OPTIONS given to commands may be abbreviated, as long as the abbreviations are
unique.

Commands mostly for Morrowind Players: "clean", "header --synchronize". and
"multipatch" (also see: the "fixit" command which rolls these together).

Commands mostly for Modders: "dump", "esp/esm", "modify", and "delete".

tes3cmd uses Perl regular expressions for string matching, the full
documentation can be found here:
  http://perldoc.perl.org/perlre.html
You should at least be aware that the characters "\.?*+|^$()[]{}" have
special meaning in a regular expression and that they are unlike characters
used for matching on a Windows command line.

active - _Add/Remove/List Plugins in your load order

Usage: tes3cmd active OPTIONS plugin1.esp [plugin2.esp...]

OPTIONS:
 --debug
	turn on debug messages

 --off
	deactivate given plugins

 --on
	activate given plugins

DESCRIPTION:

Activates/Deactivates the specified plugins. When no options are specified,
just prints current active load order.

clean - _Clean plugins of Evil GMSTs, junk cells, and more

Usage: tes3cmd clean OPTIONS plugin...

OPTIONS:
 --debug
	turn on debug messages

 --backup-dir
	where backup files get stored. The default is:
	"Data Files/tes3cmd/backups"

 --cell-params
	clean cell subrecords AMBI,WHGT duped from masters

 --dups
	clean other complete records duped from masters

 --gmsts
	clean Evil GMSTs

 --hide-backups
	any created backup files will get stashed in the backup directory
	(--backup-dir)

 --ignore-plugin* <plugin-name>
        skips specified plugin if it appears on command line. plugin name is
        matched by exact, but caseless, string comparison.

 --instances
	clean object instances from cells when duped from masters

 --junk-cells
	clean junk cells (no new info from definition in masters)

 --no-cache
	do not create cache files (used for speedier cleaning)

 --output-dir <dir>
	set output directory to <dir> (default is where input plugin is)

 --overwrite
	overwrite original plugin with clean version (original is backed up)

DESCRIPTION:

Cleans plugins of various junk. If no cleaning options are selected, the
default is to assume the options:

  --instances --cell-params --dups --gmsts --junk-cells

The goal of the "clean" command is that it should always be safe to use it
with no options to get the default cleaning behavior. The different cleaning
operations are explained below:

Much of what is considered "dirt" is with respect to a plugin's masters.
Plugins that do not have masters cannot be checked for duplicate object
definitions and instances (references), cell parameters and junk-cells.

Object Instances (--instances)

  The clean command will clean objects in the plugin that match objects in any
  of its masters. Object instances in cells (sometimes called "references",
  but "object instance" is a more accurate descriptive term) are defined as
  byte sequences starting in the subrecord following a FRMR subrecord, and
  match only if this is the same byte sequence as in the master, along with
  the same Object-Index from the FRMR. NAM0 subrecords are not part of object
  instances, and if instances are deleted from a cell, the NAM0 subrecord for
  the cell is updated to reflect any changing instance count.

Cell Params (--cell-params)

  The subrecords for AMBI (ambient lighting) and WHGT (water height) for
  interior cells are often duplicated from the master of a plugin when the
  plugin is saved in the Construction Set.

Duplicate Records (--dups)

  Object definitions for various record types defined in a master are
  sometimes unnecessarily duplicated in dependent plugins, and this option
  will safely clean them. Only objects that have identical flags and byte
  sequences will be cleaned.

Evil GMSTs (--gmsts)

  An Evil GMST is defined as a GMST from the list of 11 Tribunal GMSTs or 61
  Bloodmoon GMSTs that are inadvertently introduced to a plugin by the
  Construction Set with specific values. Other GMSTs or GMSTs from those lists
  that do not have the specific Evil Values are NOT cleaned by this function.

  To clean GMSTs that are not Evil, you can use the command:
    "tes3cmd delete --type gmst"

Junk Cells (--junk-cells)

  Junk cells are bogus external CELL records that crop up in many plugins due
  to a Construction Set bug. They contain only NAME, DATA and sometimes RGNN
  subrecords with data identical to the master. (In addition, interior cells
  will also be removed if they do not introduce any new information).

Cache Files Feature

  tes3cmd will normally create cached data files for your masters in the
  subdirectory: "Data Files/tes3cmd". If you do not wish tes3cmd to create
  cache files, you can use the --no-cache option. (But it is recommended you
  do use them for speedier cleaning).

EXAMPLES:

# clean my plugin of only Evil GMSTs:
tes3cmd clean --gmsts "my plugin.esp"

# clean 2 plugins and put the cleaned versions in a subdirectory "Clean":
tes3cmd clean --output-dir Clean "my plugin1.esp" "my plugin2.esp"

# clean all plugins in the current directory, replacing the originals with
# the cleaned versions and save the diagnostic output to a file (clean.txt):
tes3cmd clean --overwrite *.esm *.esp > clean.txt

common - _Find record IDs common between two plugins

Usage: tes3cmd common OPTIONS plugin1 plugin2

OPTIONS:
 --debug
	turn on debug messages

DESCRIPTION:

Prints the IDs of records that the 2 given plugins have in common.

EXAMPLES:

# Show the records in common between my plugin and Morrowind.esm:
tes3cmd common "my plugin.esp" "Morrowind.esm"

delete - _Delete records/subrecords/object instances from plugin

Usage: tes3cmd delete OPTIONS plugin...

OPTIONS:
 --debug
	turn on debug messages

 --backup-dir
	where backup files get stored. The default is:
	"Data Files/tes3cmd/backups"

 --exact-id* <id-string>
	only delete records whose ids exactly match given <id-string>

 --exterior
	only delete if record is an Exterior CELL

 --flag* <flag>
	only delete records with given flag. Flags may be given symbolically
	as: (deleted, persistent, ignored, blocked), or via their numeric
	values (i.e. persistent is 0x400).

 --hide-backups
	any created backup files will get stashed in the backup directory
	(--backup-dir)

 --id* <id-regex>
	only delete records whose ids match regular expression pattern
	<id-regex>

 --ignore-plugin* <plugin-name>
        skips specified plugin if it appears on command line. plugin name is
        matched by exact, but caseless, string comparison.

 --instance-match <regex>
	Only delete the object instances that match <regex> in the matching cell

 --instance-no-match <regex>
	Only delete object instances in the cell that do not match <regex>

 --interior
	only delete if record is an Interior CELL

 --match* <regex>
	only delete records that match given regular expression <regex>
	If more than one of these switches is supplied, ALL must match
	for a record to be processed.

 --no-match*|--M* <regex>
	only delete records that do not match given regular expression
	<regex>
	If more than one of these switches is supplied, if ANY match,
	that record will be skipped.

 --sub-match <regex>
	only delete the subrecords that match <regex>

 --sub-no-match <regex>
	only delete the subrecords that do not match <regex>

 --type* <record-type>
	only delete records with the given <record-type>

 Note: starred (*) options can be repeated, and matching of strings is not
 case-sensitive.

DESCRIPTION:

Deletes entire records, or subrecords from records, or object instances from
cell records. You can really damage things with this command, so be careful!

One thing you should be extra careful with is deleting objects from cells.
When objects from a master are "moved" by a plugin, a MVRF group appears
before the object instance that starts with a FRMR subrecord. If you really
want to delete that object, you probably want to delete both the FRMR object
instance and the preceeding MVRF group. A future version of tes3cmd may handle
this situation more elegantly.

Note: documentation for regular expressions:
  http://perldoc.perl.org/perlre.html

EXAMPLES:

# Delete all records with IDs matching the pattern: "foo":
# (Note that this doesn't also delete records that may depend on "foo").
tes3cmd delete --id foo "my plugin.esp"

# Delete all GMST records from a plugin:
tes3cmd delete --type gmst plugin.esp

# Delete all records flagged as "ignored":
tes3cmd delete --flag ignored plugin.esp

# Delete the poisonbloom spell subrecords from all current "_mca_" NPCs in quicksave.ess:
tes3cmd delete --type npc_ --match _mca_ --sub-match spell:poisonbloom quicksave.ess

diff - _Report differences between two plugins

Usage: tes3cmd diff OPTIONS plugin1 plugin2

OPTIONS:
 --debug
	turn on debug messages

 --ignore-type* <record-type>
	ignore given type(s)

 --1-not-2|--e1
	report records in plugin1 that do not exist in plugin2

 --2-not-1|--e2
	report records in plugin2 that do not exist in plugin1

 --equal
	report records in plugin1 that are equal in plugin2

 --not-equal|--ne
	report records in plugin1 that are different in plugin2

 --sortsubrecs
	two records being compared may be functionally equivalent but
	differ because their subrecords are in different order. This
	switch will first sort subrecords before comparison so
	subrecord order will not matter for comparison.

 Note: starred (*) options can be repeated, and matching of strings is not
 case-sensitive.

DESCRIPTION:

Prints a report on the differences between the two TES3 files.
A summary report with up to four sections is printed to standard output
that gives an overview of differences, as lists of record IDs.
(Report sections that would have no items are not printed).

When records in plugin1 are different in plugin2, each of these records is
printed in detail to a file "plugin1-diff.txt" and "plugin2-diff.txt", which
can then be compared textually using a tool such as WinMerge or the ediff
function of Emacs. Note that the output records will be sorted alphabetically
by record type to make the comparison using these tools easier.

To reduce a great deal of "uninteresting" differences when diffing savegames,
the the ModIndex field of CELL.FRMR records are automatically ignored. (Note
that in this case, the ObjIndex appears to only be incremented by one).

EXAMPLES:

# Print report on differences between 2 savegames (output to diff.out):
tes3cmd diff "save1000.ess" "save2000.ess" > diff.out

# You can also use the --ignore-type switch to ignore further subfields in
# order to help reduce the amount of differences as in the following example.
# Report on differences, but ignore the subfields CREA.AIDT and CELL.ND3D:
tes3cmd diff --ignore-type crea.aidt --ignore-type cell.nd3d testa0000.ess testb0000.ess > diff.out

# Just print the records that differ
tes3cmd diff --not-equal "my plugin1.esp" plugin2.esp

dump - _Dump records as text for easy study

Usage: tes3cmd dump OPTIONS plugin...

OPTIONS:
 --debug
	 turn on debug messages

 --ignore-plugin* <plugin-name>
        skips specified plugin if it appears on command line. plugin name is
        matched by exact, but caseless, string comparison.

 --instance-match <regex>
	when printing cells, only print the matching object instances in the
	cell

 --instance-no-match <regex>
	when printing cells, only print the non-matching object instances in
	the cell

 --exact-id* <id-string>
	only dump records whose ids exactly match given <id-string>

 --exterior
	only match if record is an Exterior CELL

 --flag* <flag>
	only dump records with given flag. Flags may be given symbolically
	as: (deleted, persistent, ignored, blocked), or via their numeric
	values (i.e. persistent is 0x400).

 --format* <formatstring>
	Only print out given fields, with fields specified by names enclosed
	with "%". For example, the NPC_ screen name field would be: %name%
	If multiple formats are given each defines a separate line of output.
	Output fields are automatically quoted if they contain whitespace.
	(see also --no-quote).

 --id* <id-regex>
	only process records whose ids match regular expression pattern
	<id-regex>

 --interior
	only match if record is an Interior CELL

 --list
	only list the ids of the records to be dumped, instead of the entire record

 --match* <regex>
	only process records that match given regular expression <regex>
	If more than one of these switches is supplied, ALL must match
	for a record to be dumped.

 --no-banner|--B
	do not print banner identifying the current plugin

 --no-match*|--M* <regex>
	only process records that do not match given regular expression
	<regex>
	If more than one of these switches is supplied, if ANY match,
	that record will be skipped.

 --no-quote
	Turn off automatic quoting of output fields in the --format switches.

 --wrap
	Wrap some long fields for more nicely formatted output.

 --raw <file>
	dump raw records to <file>, instead of as text. If <file> exists, records
	are appended to the end.

 --raw-with-header <file>
	dump raw records with an initial TES3 header record to <file>

 --separator <string>
	separate subrecords with given <string>. Normally subrecords are
	separated by line-breaks. You can use this option to change that so
	they are all printed on one line.

 --type* <record-type>
	only dump records with the given <record-type>

 Note: starred (*) options can be repeated, and matching of strings is not
 case-sensitive.

DESCRIPTION:

Dumps the plugin to stdout in text form for easy perusal or in raw form for
extracting a subset of records to create a new plugin. For large plugins, the
text output can be voluminous. In the text output, a starred subrecord
indicates it is related to following subrecords.

Note: documentation for regular expressions:
  http://perldoc.perl.org/perlre.html

EXAMPLES:

# Print out NPC's by Id and Name and Faction:
tes3cmd dump --type npc_ --format "%id% %name% %faction%" Morrowind.esm

# List all the records in the plugin, just one per line, by type and ID:
tes3cmd dump --list "Drug Realism.esp"

# Dump all records from a plugin. we redirect the output to a file as there
# can be a lot of output:
tes3cmd dump "DwemerClock.esp" > "DwemerClock-dump.txt"

# Dump all records with IDs exactly matching "2247227652827822061":
tes3cmd dump --exact-id 2247227652827822061 LGNPC_AldVelothi_v1_20.esp

# Dump all the DIAL and INFO records from a plugin:
tes3cmd dump --type dial --type info "abotWhereAreAllBirdsGoing.esp"

# Dump all records flagged as persistent (by name) OR blocked (by value)
tes3cmd dump --flag persistent --flag 0x2000 "Suran_Underworld_2.5.esp"

# Dump all object instances in cells that match "galbedir":
# (this will just show you the cell header, and subrecords just for Galbedir
# and her desk and chest in the cell: "Balmora, Guild of Mages"):
tes3cmd dump --instance-match "name:.*galbedir" Morrowind.esm

esm - _Convert plugin (esp) to master (esm)

Usage: tes3cmd esm OPTIONS plugin...

OPTIONS:
 --debug
	turn on debug messages

 --ignore-plugin* <plugin-name>
        skips specified plugin if it appears on command line. plugin name is
        matched by exact, but caseless, string comparison.

 --overwrite
	overwrite output if it exists

DESCRIPTION:

Copies input plugin (.esp) to a master (.esm). If the output file already
exists, you must add the --overwrite option to overwrite it.

EXAMPLES:

# output is: "my plugin.esm"
tes3cmd esm "my plugin.esp"

esp - _Convert master (esm) to plugin (esp)

Usage: tes3cmd esp OPTIONS master...

OPTIONS:
 --debug
	turn on debug messages

 --ignore-plugin* <plugin-name>
        skips specified plugin if it appears on command line. plugin name is
        matched by exact, but caseless, string comparison.

 --overwrite
	overwrite output if it exists

DESCRIPTION:

Copies input master (.esm) to a plugin (.esp). If the output file already
exists, you must add the --overwrite option to overwrite it.

EXAMPLES:

# output is: "my plugin.esp"
tes3cmd esp "my plugin.esm"

fixit - _tes3cmd fixes everything it knows how to fix

Usage: tes3cmd fixit OPTIONS

OPTIONS:
 --debug
	turn on debug messages

 --backup-dir
	where backup files get stored. The default is:
	"Data Files/tes3cmd/backups"

 --hide-backups
	any created backup files will get stashed in the backup directory
	(--backup-dir)

 --ignore-plugin* <plugin-name>
        skips specified plugin if it appears on command line. plugin name is
        matched by exact, but caseless, string comparison.

DESCRIPTION:

The fixit command does the following operations:
- Cleans all your plugins ("tes3cmd clean")
- Synchronizes plugin headers to your masters ("tes3cmd header --synchronize")
- Generates a patch for merged leveled lists and more ("tes3cmd multipatch")
- Resets Dates on Bethesda data files ("tes3cmd resetdates")

header - _Read/Write plugin Author/Description, sync to masters...

Usage: tes3cmd header OPTIONS plugin...

OPTIONS:
 --debug
	turn on debug messages

 --author <author>
	set the Author field to <author>

 --backup-dir
	where backup files get stored. The default is:
	"Data Files/tes3cmd/backups"

 --description <desc>
	set the Description field to <desc>

 --hide-backups
	any created backup files will get stashed in the backup directory
	(--backup-dir)

 --ignore-plugin* <plugin-name>
        skips specified plugin if it appears on command line. plugin name is
        matched by exact, but caseless, string comparison.

 --multiline
	multi-line output for listing field contents

 --synchronize
	same as: --update-masters --update-record-count

 --update-masters
	updates master list to reflect new versions

 --update-record-count
	update record count in header

DESCRIPTION:

When no options are given, the author and description are printed.

Author and Description field values are normally replaced by the given string.
But if the string begins with a "+", the existing value is appended with the
new given value.

If a given value contains the string "\n", it will be replaced by a CRLF.

Note:
 - the Author value should fit in 32 bytes.
 - the Description value should fit in 256 bytes.

If the value supplied will not fit into the plugin header field, you will be
warned.

The --update-masters (or --synchronize) option will clear any warnings
Morrowind gives when it starts up that say: "One or more plugins could not
find the correct versions of the master files they depend on..."

EXAMPLES:

# Show the Author/Description fields for a plugin:
tes3cmd header "my plugin.esp"

# Set the Author field to "john.moonsugar":
tes3cmd header --author john.moonsugar "plugin.esp"

# Append " and friends" to the Author field:
tes3cmd header --author "+ and friends" "plugin.esp"

# Append a Version number to a plugin Description field:
tes3cmd header --description "+\nVersion: 1.0" "plugin.esp"

# update header field for the number of records in the plugin (if incorrect)
# and sync the list of masters to the masters installed in "Data Files"
tes3cmd header --synchronize "my plugin.esp"

modify - _Powerful batch record modification via user code extensions

Usage: tes3cmd modify OPTIONS plugin...

OPTIONS:
 --debug
	turn on debug messages

 --backup-dir
	where backup files get stored. The default is:
	"Data Files/tes3cmd/backups"

 --exact-id* <id-string>
	only modify records whose ids exactly match given <id-string>

 --exterior
	only match if record is an Exterior CELL

 --flag* <flag>
	only modify records with given flag. Flags may be given symbolically
	as: (deleted, persistent, ignored, blocked), or via their numeric
	values (i.e. persistent is 0x400).

 --hide-backups
	any created backup files will get stashed in the backup directory
	(--backup-dir)

 --id* <id-regex>
	only modify records whose ids match regular expression pattern
	<id-regex>

 --ignore-plugin* <plugin-name>
        skips specified plugin if it appears on command line. plugin name is
        matched by exact, but caseless, string comparison.

 --interior
	only match if record is an Interior CELL

 --match* <regex>
	only modify records that match given regular expression <regex>
	If more than one of these switches is supplied, ALL must match
	for a record to be processed.

 --no-match*|--M* <regex>
	only modify records that do not match given regular expression
	<regex>
	If more than one of these switches is supplied, if ANY match,
	that record will be skipped.

 --program-file <file>
	load Perl code to run on each matched record from file named: <file>

 --replace "/a/b/"
	replace regular expression pattern "a" with value "b" for every field
	value in every matching record. you can use any character instead of
	the slash as long as it does not occur in "a" or "b". This is a very
	powerful alternative to the --run option, as it only requires
	understanding of regular expressions, no perl coding is necessary.

 --replacefirst "/a/b/"
	just like --replace, but only replaces the first match.

 --run "<code>"
	specify a string of Perl <code> to run on each matched record

 --sub-match <regex>
	only modify the subrecords that match <regex>. When this option (or
	--sub-no-match) are used, modification only applies to matching
	subrecords. Without either of these options modifications are
	performed on whole records.

 --sub-no-match <regex> only modify the subrecords that do not match <regex>.
	(see also --sub-match above).

 --type* <record-type>
	only modify records with the given <record-type>

 Note: starred (*) options can be repeated, and matching of strings is not
 case-sensitive.

This command allows you to do complex batch modifications of plugin records.
You can really damage things with this command, so be careful!

Note: documentation for regular expressions:
  http://perldoc.perl.org/perlre.html

Example(s):

# Just print the the cell "Ashmelech" from Morrowind.esm. (no modification).
tes3cmd modify --type cell --id ashmelech --run "$R->dump" Morrowind.esm

# Add the prefix "PC_" to the ID of all the statics in a plugin:
tes3cmd modify --type stat --sub-match "id:" --replace "/^/PC_/" pc_data.esp

# Problem: Aleanne's clothing mods do not have restocking inventory
# Solution: create a small patch to change the counts for inventory containers
#   to negative numbers so they will be restocking.
# Step 0: confirm the problem, showing the non-negative counts:
tes3cmd dump --type cont ale_clothing_v?.esp
# Step 1: Create the patch file ale_patch.esp containing just the container records:
tes3cmd dump --type cont --raw-with-header ale_patch.esp ale_clothing_v?.esp
# Step 2: Change all the count fields for the containers in Aleanne's Clothing to -3 (for restocking wares)
tes3cmd modify --type cont --run "$R->set({f=>'count'}, -3)" ale_patch.esp
# Note: on Linux, the quoting would be a little different:
tes3cmd modify --type cont --run '$R->set({f=>"count"}, -3)' ale_patch.esp

# You can also specify a list of indices to restrict which subrecords are modified.
# First, show the subrecord indices for container "_aleanne_chest" from: ale_clothing_v0.esp:
tes3cmd modify --type cont --run "$R->dump" ale_clothing_v0.esp
# Then only modify the last 3 items:
tes3cmd modify --type cont --run "$R->set({i=>[-3..-1],f=>'count'}, 4)" ale_clothing_v0.esp

multipatch - _Patches problems, merges leveled lists, etc.

Usage: tes3cmd multipatch

OPTIONS:
 --debug
	turn on debug messages

 --cellnames
	resolve conflicts with renamed external cells

 --fogbug
	fix interior cells with the fog bug

 --merge-lists
	merges leveled lists used in your active plugins. Note that when you
	use this feature, you do NOT also need other merged lists plugins like
	"Mashed Lists.esp" from Wrye Mash.

	This option has the following sub-options which can be used to remove
	creatures and items (by exact id match) from all leveled lists in
	which they occur:

	--delete-creature*|--dc* <creature-id>
	--delete-item*|--di* <item-id>

 --merge-objects
	merges leveled lists used in your active plugins. Note that when you
	use this feature, you do NOT also need other merged object plugins like
	"Merged_Objects.esp" from TesTool. (NOT IMPLEMENTED YET).

 --no-activate
	do not automatically activate multipatch.esp

 --no-cache
	do not create cache files (used for speedier operation)

 --summons-persist
	fixes summoned creatures crash by making them persistent

DESCRIPTION:

The multipatch produces a patch file based on your current load order to solve
various problems. You should regenerate your multipatch whenever you change
your load order. The goal of the "multipatch" command is that it should always
be safe to use it with no options to get the default patching behavior (if you
do find any problems, please report them and they will be fixed ASAP). When no
options are specified, the following default options are assumed:

  --cellnames --fogbug --merge-lists --merge-objects --summons-persist

The different patching operations are explained below:

Cell Name Patch (--cellnames)

  Creates a patch to ensure renamed cells are not accidentally reverted to
  their original name.

  This solves the following plugin conflict that causes bugs:
  * Master A names external CELL (1, 1) as: "".
  * Plugin B renames CELL (1, 1) to: "My City".
  * Plugin C modifies CELL (1, 1), using the original name "", reverting
    renaming done by plugin B.
  * References in plugin B (such as in scripts) that refer to "My City" break.

  This option works by scanning your currently active plugin load order for
  cell name reversions like those in the above example, and ensures whenever
  possible that cell renaming is properly maintained.

Fog Bug Patch (--fogbug)

  Some video cards are affected by how Morrowind handles a fog density setting
  of zero in interior cells with the result that the interior is pitch black,
  except for some light sources, and no amount of light, night-eye, or gamma
  setting will make the interior visible. This is known as the "fog bug".

  This option creates a patch that fixes all fogbugged cells in your active
  plugins by setting the fog density of those cells to a non-zero value.

Merge Leveled Lists (--merge-lists)

  This feature is similar to what you get with Wrye Mash's "Mashed Lists.esp".
  However, you should not use more than one plugin to merge leveled lists.

Merge Objects (--merge-objects)

  This feature is similar to what you get with TesTools's "Merged_Objects.esp".
  However, you should not use more than one plugin to merge objects.
  (NOT IMPLEMENTED YET)

Summoned creatures persists (--summons-persist)

  There is a bug in Morrowind that can cause the game to crash if you leave a
  cell where an NPC has summoned a creature. The simple workaround is to flag
  summoned creatures as persistent. The Morrowind Patch Project implements
  this fix, however other mods coming later in the load order often revert it.
  This option to the multipatch ensures that known summoned creatures are
  flagged as persistent.

EXAMPLES:

# Create the patch plugin "multipatch.esp" with all default patch options on:
tes3cmd multipatch

overdial - _Identify overlapping dialog (a source of missing topic bugs)

Usage: tes3cmd overdial OPTIONS plugin...

OPTIONS:
 --debug
	turn on debug messages

 --ignore-plugin* <plugin-name>
        skips specified plugin if it appears on command line. plugin name is
        matched by exact, but caseless, string comparison.

 --single
	only test to see if dialog in the first plugin is overlapped. (by
	default all plugins are checked against all other plugins, which is an
	n-squared operation, meaning "possibly very slow").

DESCRIPTION:

Prints the IDs of dialog records that overlap from the set of given plugins.

An overlap is defined as a dialog (DIAL) Topic from one plugin that entirely
contains a dialog Topic from another plugin as a substring. For example, the
mod "White Wolf of Lokken" has a dialog topic "to rescue me" which overlaps
with the dialog topic "rescue me" from "Suran Underworld", which causes the
"Special Guest" quest from SU to get stuck because Ylarra will not offer the
topic "rescue me" when you find her in her cell.

Note that overlap is only a potential problem if the plugins are loaded in the
order they are listed in the output.

Example(s):

# Show dialog overlaps between Lokken and SU:
tes3cmd overdial "BT_Whitewolf_2_0.esm" "Suran_Underworld_2.5.esp"

recover - _Recover usable records from plugin with 'bad form' errors

Usage: tes3cmd recover OPTIONS plugin...

OPTIONS:
 --debug
	turn on debug messages

 --backup-dir
	where backup files get stored. The default is:
	"Data Files/tes3cmd/backups"

 --hide-backups
	any created backup files will get stashed in the backup directory
	(--backup-dir)

 --ignore-plugin* <plugin-name>
        skips specified plugin if it appears on command line. plugin name is
        matched by exact, but caseless, string comparison.

DESCRIPTION:

Attempts to recover readable records from a damaged plugin. You should only
use this when Morrowind gives the following type of error on your plugin:

  "Trying to load a bad form in TES3File::NextForm"

The main reason you would get this error is if the file has been physically
corrupted, where records have been overwritten with random binary junk, or
if the file has been truncated, or otherwise damaged.

This is not for fixing what is commonly referred to as "savegame corruption",
which is almost always not actual corruption but bad data.

In any case, you will get detailed output on what tes3cmd finds damaged.

EXAMPLE(S):

# fix my damaged plugin:
tes3cmd recover "my plugin.esp"

resetdates - _Reset dates of Bethesda Data Files to original settings

Usage: tes3cmd resetdates

OPTIONS:
 --debug
	turn on debug messages

DESCRIPTION:

Resets the dates of the Bethesda masters (.esm) and archives (.bsa) to their
original settings. This may help those people who have problems with textures
and meshes being overridden by the vanilla resources (e.g. as can happen with
the Steam version of Morrowind).

Example(s):

# fix the date settings of Bethesda data files:
tes3cmd resetdates

(this page was automatically generated by: tes3cmd -wikiout)

Clone this wiki locally
You can’t perform that action at this time.