TesOtherMod:Save Game Offset List

This following article contains offset lists for the character data in SAVETREE.DAT and explanations of the format of this file.

Overall File Format
It took me a while to figure out the overall format since the structure I
first assumed was wrong, leading me down the wrong track.  The way I
currently understand it makes more sense and describes the entire file from
beginning to end.  The SAVETREE.DAT file is made of a number of blocks in the
following format.
:Begin Block
::[4 bytes] = Block Type
::[Integer] = Block Size from current position, in bytes
::[ Block Information] = Depends on Block Type
:End Block
This structure is repeated until a block of size 0 is encountered.  Following
this is 81 bytes at the end of the file which has not been identified yet.
The total size of each block is the Block Size read + 4 (due to the block
type). The following is a list of the various block types found in a number
of files (bytes appear as they found in file, in hexadecimal). As it turns
out the size of the block actually determines the main type, with the block
type bytes specifying some other data (such as sub-type).  The sizes of the
blocks along with their possible types are listed below. Block size is does
not include the 4 bytes of block type.

The block type bytes may be different for various block sizes.

There is currently nothing known about these bytes, save the one for character data.
Character Data Offsets
What follows is a list of offsets for the character data. It also works partially for mobs but not perfectly, indicating some difference between the two. These came from a variety of sources. Initially someone (Ken, jerry_fletcher@hotmail.com) emailed me some Battlespire modules for UGE, some sort of universal game editor. This gave me the basis for most of the attribute and skill offsets, but didn't describe the format very accurately. From hacking the game by creating classes with various attributes and looking at the savegame I was able to determine the other offsets in time.

The 'Normal' attribute and skills are the values when no spell or item modifies are in place. For example a characters natural Stealth is 45%. He/she puts on a pair of boots which modifies Stealth by +10%. Now their stealth is at 55% while their normal stealth value remains at 45%.

The 'Count' attribute is related to skill advancement. For instance, each time the character jumps this count is incremented. When it reaches a certain level the jumping skill increases and the count is reset.

The 'Offset' is the distance from the start of the character field, including the 4 bytes of block type characters.

The 'Field Size/Type' gives the size of the field. Long Integers are defined as 4 bytes while Integers are 2.

There are currently three unknown entries in the skill list. Their estimated
values are given although this is not yet confirmed.  They are based on the
skill offset list found in Daggerfall.  The skill order is the same except
for the skills not found in Battlespire (like the language skills etc...).
The running skill is quite certain, based on the position in the list and the
fact that running potions exist in the game.  The merchant skill is a best
guess but other possibilities for this offset are either streetwise or
etiquette.  Similarly lock-picking may be replaced by pick-pocketing or
mercantile. There is a possibility that a new skill exists at these locations,
one not found in Daggerfall.  Verification of these skills are still required
(e-mail me!).
Item Data Offsets
The following is the list of known and some unknown variables found in the
item block.  Thanks to Cory Orndorff (orn9124@kutztown.edu) for sending me
some offsets to get me started.  Again, the 'Offset' is the distance from
the beginning of the block, including the 4 byte block type.