Tes4Mod:Save File Format/ACHR

This page describes the save file format for both ACHR and ACRE change records, since the two records share an identical format.  An ACHR Change Record (change record type 50) describes changes to placed instances of the game's non-player characters (ACHR mod file records).  An ACRE Change Record (change record type 51) describes changes to placed instances of the game's creatures (ACRE mod file records).

An ACHR change record, specifically the change record for formid 0x00000014, also provides most of the information about the player character.  However, this information is detailed on a separate article, , because the most important subrecords are unique to the player's change record.

The ACHR/ACRE change records are far more complicated than any other change records.  Significant portions of the ACHR/ACRE change records have not yet been deciphered; other sections are, at best, poorly understood.  This article specifically focusses on sections of the change records that are somewhat understood; all of the information on this article has been verified from actual save files.  A separate article is dedicated to deciphering the more mysterious sections of the records.

Names of Subrecords
Using text file dumps, it is possible to identify the subrecord names associated with most of the record's overall Flags.  The following table lists all such subrecord names.  It also provides a one-line summary of what subrecords may appear when that flag is set, if known, and therefore provides a brief overview of the extent to which ACHR/ACRE records are understood. 
"Standard subrecord" means that a single subrecord appears in a fixed location whenever the corresponding byte is set.
In many cases, the data appears in the Properties structure.  This structure has its own system of flags which are used to identify the specific properties contained in the structure.  These properties can appear in any order within the structure, and the properties that appear are only loosely related to the record's overall Flags.
Yellow rows are ones that are also found (with the same meaning) in REFR change records.
Pink rows are ones  whose location is unknown; these rows are all documented on a separate page.

Summary information about the location and size of the known subrecords is listed in the next section.



Locations of Subrecords



 

Actor Flag
The Actor Flag is always present in ACHR/ACRE change records.  Its length is a constant 1 byte.  Its value determines how much additional information is contained in the ACHR/ACRE change record, although the details of the additional information are not understood.

The Actor Flag has the following known values:
0 - High
1 - Mid High
2 - Mid Low
3 - Low
FF - None
The name associated with each value comes from the text file dumps.  Additional information about the Actor Flag, such as its significance and what data is associated with the flag, is uncertain but ACHR Uncertainties documents what has been determined so far.

 
 

Properties

This section was previously identified as the " " section, but was renamed for consistency with REFR change records and Inventory properties.
It is always present in ACHR/ACRE subrecords, although it may be empty.  Within this section, the individual properties can appear in any order -- each property is preceded by a flag identifying its contents. The full list of possible property flags and the format associated with each flag is documented on a separate Properties article.

Havok Moved
The Havok Moved subrecord is present immediately following the Properties section when byte 3 (0x00000008) is set in an ACHR/ACRE change record's overall Flags.  This data is in addition to any that may appear in place of the Moved subrecord.  The meaning of the Havok Moved data is unknown.

Unlike the Miscellaneous Section of the REFR change records, only Havok Moved ever appears in this location in ACHR/ACRE change records, and its appearance seems to be reliable -- with the caveat that ACHR/ACRE records are less well understood overall than REFR records.



Scale
The Scale subrecord is present when byte 4 (0x00000010) is set in an ACHR/ACRE/REFR change record's overall Flags. Its length is a constant 4 bytes, and provides the size of this particular object relative to the standard object size.

Note that there is also a Scale property (property flag 0x37), but the property is only found in Inventories, not in REFR property sections.