.NTF - nbreeze/closers-rev GitHub Wiki

Introduction

.NTF is a file format that holds an array of a specific structure of data. The data structure can contain different data types.

No, it does not mean National Imagery Transmission Format. It's also not the Lotus Note Template format. I don't even know what the extension stands for, but it's definitely not something you can find off of a Google search.

All of the .NTF files used here have been decoded and decrypted for demonstration purposes.

Types

The following data types have been identified:

enum {
  NTF_DATA_TYPE_CHAR = 2,
  NTF_DATA_TYPE_INT = 5,
  NTF_DATA_TYPE_UNICODE_STRING = 8,
  NTF_DATA_TYPE_FLOAT = 9
}

Header

In this example, we'll use a file called ENCHANT_GRADE_FACTOR.NTF. This file contains values of a multiplier that is applied directly to the enchantment bonus of an item.

02 00 00 00 08 00 00 00 09 00 00 00 05 00 00 00    ................
09 00 00 00 49 00 47 00 5F 00 4E 00 4F 00 52 00    ....I.G._.N.O.R.
4D 00 41 00 4C 00 CD CC 4C 3F 08 00 00 00 49 00    M.A.L.MLL?....I.
47 00 5F 00 4D 00 41 00 47 00 49 00 43 00 66 66    G._.M.A.G.I.C.ff
66 3F 07 00 00 00 49 00 47 00 5F 00 52 00 41 00    f?....I.G._.R.A.
52 00 45 00 00 00 80 3F 08 00 00 00 49 00 47 00    R.E....?....I.G.
5F 00 45 00 4C 00 49 00 54 00 45 00 00 00 A0 3F    _.E.L.I.T.E....?
09 00 00 00 49 00 47 00 5F 00 4C 00 45 00 47 00    ....I.G._.L.E.G.
45 00 4E 00 44 00 66 66 A6 3F 2A 00 00 00 42 00    E.N.D.ff&?*...B.
00 00 58 00 00 00 70 00 00 00 8A 00 00 00 

It begins with an array that defines the layout of the data struct. This array contains a list of data type enumerations that the struct defines in order. It starts with a int32, indicating the size of the array.

Analyzing the file, we have 02 00 00 00 which is 2. Reading the type array, we have the values 08 00 00 00 and 09 00 00 00, which correspond to NTF_DATA_TYPE_UNICODE_STRING and NTF_DATA_TYPE_FLOAT. Therefore, the structure we have can be defined as:

{
  wchar_t * str;
  float fl1;
}

After the array, there is another int32 that defines how many instances of our struct is stored in the file. In this file, this value is 05 00 00 00, which is 5.

Footer

Because strings can have variable lengths, the .NTF file format also stores the ending file pointers of each struct stored in an int32 array. This array can be reached by using the following method:

unsigned OFFSET_ARRAY_POS = FILE_SIZE - (structCount * 4)

...where FILE_SIZE is the total size of the file.

OFFSET_ARRAY is an array of file offsets that indicate the ending offset of each element. It can also be used to quickly traverse to a random struct element stored in the file.

Looking at the end of our file, we can see that this offset array is defined as:

{
  0x0000002a, // 2A 00 00 00
  0x00000042, // 42 00 00 00
  0x00000058, // 58 00 00 00
  0x00000070, // 70 00 00 00
  0x0000008a  // 8A 00 00 00
}

Data

After the structCount integer is the actual raw data.

:warning: When it comes to reading a unicode wide string, the member variable starts with a int32 that specifies how many characters (not bytes!) the string has before the string of wchar_t's. For wide strings, each character is 2 bytes long. The string is also not always null-terminated.

Iterating through the data, our file comes out as:

{ 9, L"IG_NORMAL", 0.8f },
{ 8, L"IG_MAGIC", 0.9f },
{ 7, L"IG_RARE", 1.0f },
{ 8, L"IG_ELITE", 1.25f },
{ 9, L"IG_LEGEND", 1.3f }

Remarks

As far as the format itself is concerned, it does have its benefits.

  • Well-suited for storing an array of flat, multi-variable structures. Clearly this was the purpose in mind for this format, and of course, it does this well.
  • Random access to different structure elements in the file. This is made possible by using the OFFSET_ARRAY.

There are a few issues with it, though.

  • Not suitable with nested structures. It has been done, but it involves storing each nested structure as a string. Although the string itself can be parsed normally, it's preferred to use a LUA file or another environment instead where nested structures are supported natively.
  • No random access to a structure's member variable. If you want to access a certain variable within a structure, you would have to traverse the data type array, and this becomes even more crucial when the structure has a variable-length member like a string. This isn't an issue with structures that don't have a lot of members, but if a structure has a lot of members, consider using something else or caching.

Appendix

A.1. ENCHANT_ITEM_LEVEL.NTF

This file contains the item level bonus per enhancement level. Each short member specifies the item level bonus for a gear item type, which are Cores, Modules, Trinkets, and Receivers, respectively.

Raw:

05 00 00 00 02 00 00 00 04 00 00 00 04 00 00 00    ................
04 00 00 00 04 00 00 00 1E 00 00 00 01 00 00 00    ................
00 00 00 00 00 02 00 00 00 00 00 00 00 00 03 01    ................
00 01 00 01 00 01 00 04 01 00 01 00 01 00 01 00    ................
05 01 00 01 00 01 00 01 00 06 02 00 02 00 02 00    ................
02 00 07 02 00 02 00 02 00 02 00 08 02 00 02 00    ................
02 00 02 00 09 03 00 03 00 03 00 03 00 0A 03 00    ................
03 00 03 00 03 00 0B 04 00 04 00 04 00 04 00 0C    ................
05 00 05 00 05 00 05 00 0D 09 00 09 00 09 00 09    ................
00 0E 0E 00 0E 00 0E 00 0E 00 0F 14 00 14 00 14    ................
00 14 00 10 1A 00 1A 00 1A 00 1A 00 11 20 00 20    ................
00 20 00 20 00 12 26 00 26 00 26 00 26 00 13 2C    ......&.&.&.&..,
00 2C 00 2C 00 2C 00 14 32 00 32 00 32 00 32 00    .,.,.,..2.2.2.2.
15 32 00 32 00 32 00 32 00 16 32 00 32 00 32 00    .2.2.2.2..2.2.2.
32 00 17 32 00 32 00 32 00 32 00 18 32 00 32 00    2..2.2.2.2..2.2.
32 00 32 00 19 32 00 32 00 32 00 32 00 1A 32 00    2.2..2.2.2.2..2.
32 00 32 00 32 00 1B 32 00 32 00 32 00 32 00 1C    2.2.2..2.2.2.2..
32 00 32 00 32 00 32 00 1D 32 00 32 00 32 00 32    2.2.2.2..2.2.2.2
00 1E 32 00 32 00 32 00 32 00 25 00 00 00 2E 00    ..2.2.2.2.%.....
00 00 37 00 00 00 40 00 00 00 49 00 00 00 52 00    [email protected].
00 00 5B 00 00 00 64 00 00 00 6D 00 00 00 76 00    ..[...d...m...v.
00 00 7F 00 00 00 88 00 00 00 91 00 00 00 9A 00    ................
00 00 A3 00 00 00 AC 00 00 00 B5 00 00 00 BE 00    ..#...,...5...>.
00 00 C7 00 00 00 D0 00 00 00 D9 00 00 00 E2 00    ..G...P...Y...b.
00 00 EB 00 00 00 F4 00 00 00 FD 00 00 00 06 01    ..k...t...}.....
00 00 0F 01 00 00 18 01 00 00 21 01 00 00 2A 01    ..........!...*.
00 00   

struct Info:

Member count: 5 (05 00 00 00)

{
  char; // 2
  short; // 4
  short; // 4
  short; // 4
  short; // 4
}

Total struct elements: 30 (1E 00 00 00)

Data:

{ 1, 0, 0, 0, 0 },
{ 2, 0, 0, 0, 0 },
{ 3, 1, 1, 1, 1 },
{ 4, 1, 1, 1, 1 },
{ 5, 1, 1, 1, 1 },
{ 6, 2, 2, 2, 2 },
{ 7, 2, 2, 2, 2 },
{ 8, 2, 2, 2, 2 },
{ 9, 3, 3, 3, 3 },
{ 10, 3, 3, 3, 3 },
{ 11, 4, 4, 4, 4 },
{ 12, 5, 5, 5, 5 },
{ 13, 9, 9, 9, 9 },
{ 14, 14, 14, 14, 14 },
{ 15, 20, 20, 20, 20 },
{ 16, 26, 26, 26, 26 },
{ 17, 32, 32, 32, 32 },
{ 18, 38, 38, 38, 38 },
{ 19, 44, 44, 44, 44 },
{ 20, 50, 50, 50, 50 },
{ 21, 50, 50, 50, 50 },
{ 22, 50, 50, 50, 50 },
{ 23, 50, 50, 50, 50 },
{ 24, 50, 50, 50, 50 },
{ 25, 50, 50, 50, 50 },
{ 26, 50, 50, 50, 50 },
{ 27, 50, 50, 50, 50 },
{ 28, 50, 50, 50, 50 },
{ 29, 50, 50, 50, 50 },
{ 30, 50, 50, 50, 50 }

A.2. ENCHANT_ITEM_FACTOR.NTF

Raw:

05 00 00 00 05 00 00 00 09 00 00 00 09 00 00 00    ................
09 00 00 00 09 00 00 00 14 00 00 00 01 00 00 00    ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00    ................
00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00    ................
00 00 00 00 00 00 00 00 00 00 00 00 05 00 00 00    ................
00 00 A0 40 00 00 20 40 33 33 53 40 00 00 00 00    ...@...@33S@....
06 00 00 00 00 00 C0 40 00 00 60 40 66 66 96 40    ......@@..`@ff.@
00 00 00 00 07 00 00 00 00 00 E0 40 00 00 90 40    ..........`@...@
00 00 C0 40 00 00 00 00 08 00 00 00 00 00 10 41    ..@@...........A
00 00 B0 40 9A 99 E9 40 00 00 00 00 09 00 00 00    [email protected]@........
00 00 30 41 00 00 D0 40 33 33 0B 41 00 00 00 00    [email protected]....
0A 00 00 00 00 00 60 41 00 00 F0 40 00 00 20 41    ......`[email protected]
00 00 00 00 0B 00 00 00 00 00 88 41 00 00 08 41    ...........A...A
CD CC 34 41 00 00 00 00 0C 00 00 00 00 00 A0 41    ML4A...........A
00 00 18 41 33 33 4B 41 00 00 00 00 0D 00 00 00    ...A33KA........
00 00 B8 41 00 00 28 41 00 00 60 41 00 00 00 00    ..8A..(A..`A....
0E 00 00 00 00 00 D0 41 00 00 38 41 CD CC 74 41    ......PA..8AMLtA
00 00 00 00 0F 00 00 00 00 00 F0 41 00 00 48 41    ..........pA..HA
9A 99 85 41 00 00 00 00 10 00 00 00 00 00 08 42    ...A...........B
00 00 58 41 00 00 90 41 00 00 00 00 11 00 00 00    ..XA...A........
00 00 18 42 00 00 68 41 66 66 9A 41 00 00 00 00    ...B..hAff.A....
12 00 00 00 00 00 28 42 00 00 78 41 9A 99 A5 41    ......(B..xA..%A
00 00 00 00 13 00 00 00 00 00 38 42 00 00 84 41    ..........8B...A
00 00 B0 41 00 00 00 00 14 00 00 00 00 00 48 42    ..0A..........HB
00 00 8C 41 66 66 BA 41 00 00 00 00 30 00 00 00    ...Aff:A....0...
44 00 00 00 58 00 00 00 6C 00 00 00 80 00 00 00    D...X...l.......
94 00 00 00 A8 00 00 00 BC 00 00 00 D0 00 00 00    ....(...<...P...
E4 00 00 00 F8 00 00 00 0C 01 00 00 20 01 00 00    d...x...........
34 01 00 00 48 01 00 00 5C 01 00 00 70 01 00 00    4...H...\...p...
84 01 00 00 98 01 00 00 AC 01 00 00                ........,...

struct Info:

Member count: 5 (05 00 00 00)

{
  int; // 5
  float; // 9
  float; // 9
  float; // 9
  float; // 9
}

Total struct elements: 20 (14 00 00 00)

Data:

{ 1, 0f, 0f, 0f, 0f },
{ 2, 0f, 0f, 0f, 0f },
{ 3, 0f, 0f, 0f, 0f },
{ 4, 0f, 0f, 0f, 0f },
{ 5, 5f, 2.5f, 3.3f, 0f },
{ 6, 6f, 3.5f, 4.7f, 0f },
{ 7, 7f, 4.5f, 6f, 0f },
{ 8, 9f, 5.5f, 7.3f, 0f },
{ 9, 11f, 6.5f, 8.7f, 0f },
{ 10, 14f, 7.5f, 10f, 0f },
{ 11, 17f, 8.5f, 11.3f, 0f },
{ 12, 20f, 9.5f, 12.7f, 0f },
{ 13, 23f, 10.5f, 14f, 0f },
{ 14, 26f, 11.5f, 15.3f, 0f },
{ 15, 30f, 12.5f, 16.7f, 0f },
{ 16, 34f, 13.5f, 18f, 0f },
{ 17, 38f, 14.5f, 19.3f, 0f },
{ 18, 42f, 15.5f, 20.7f, 0f },
{ 19, 46f, 16.5f, 22f, 0f },
{ 20, 50f, 17.5f, 23.3f, 0f }

A.3. ENCHANT_DEFAULT_STAT.NTF

This file contains the base value of the enchantment bonus. The base value is determined by the item's type and required level.

Raw:

05 00 00 00 05 00 00 00 09 00 00 00 09 00 00 00    ................
09 00 00 00 09 00 00 00 63 00 00 00 01 00 00 00    ........c.......
00 00 D0 41 00 00 20 41 00 00 00 43 00 00 00 00    ..PA...A...C....
02 00 00 00 00 00 18 42 00 00 50 41 00 00 08 43    .......B..PA...C
00 00 00 00 03 00 00 00 00 00 40 42 00 00 88 41    [email protected]
00 00 08 43 00 00 00 00 04 00 00 00 00 00 68 42    ...C..........hB
00 00 A8 41 00 00 10 43 00 00 00 00 05 00 00 00    ..(A...C........
00 00 88 42 00 00 C0 41 00 00 18 43 00 00 00 00    [email protected]....
06 00 00 00 00 00 9C 42 00 00 E0 41 00 00 18 43    .......B..`A...C
00 00 00 00 07 00 00 00 00 00 B4 42 00 00 00 42    ..........4B...B
00 00 20 43 00 00 00 00 08 00 00 00 00 00 C8 42    ...C..........HB
00 00 10 42 00 00 28 43 00 00 00 00 09 00 00 00    ...B..(C........
00 00 DC 42 00 00 20 42 00 00 28 43 00 00 00 00    ..\B...B..(C....
0A 00 00 00 00 00 F4 42 00 00 30 42 00 00 30 43    ......tB..0B..0C
00 00 00 00 0B 00 00 00 00 00 04 43 00 00 3C 42    ...........C..<B
00 00 38 43 00 00 00 00 0C 00 00 00 00 00 10 43    ..8C...........C
00 00 4C 42 00 00 38 43 00 00 00 00 0D 00 00 00    ..LB..8C........
00 00 1C 43 00 00 5C 42 00 00 40 43 00 00 00 00    ...C..\B..@C....
0E 00 00 00 00 00 26 43 00 00 6C 42 00 00 40 43    ......&C..lB..@C
00 00 00 00 0F 00 00 00 00 00 32 43 00 00 7C 42    ..........2C..|B
00 00 48 43 00 00 00 00 10 00 00 00 00 00 3E 43    ..HC..........>C
00 00 88 42 00 00 50 43 00 00 00 00 11 00 00 00    ...B..PC........
00 00 48 43 00 00 90 42 00 00 50 43 00 00 A0 40    ..HC...B..PC...@
12 00 00 00 00 00 54 43 00 00 98 42 00 00 58 43    ......TC...B..XC
00 00 A0 41 13 00 00 00 00 00 60 43 00 00 A0 42    ...A......`C...B
00 00 60 43 00 00 0C 42 14 00 00 00 00 00 6C 43    ..`C...B......lC
00 00 A8 42 00 00 60 43 00 00 48 42 15 00 00 00    ..(B..`C..HB....
00 00 78 43 00 00 B2 42 00 00 68 43 00 00 82 42    ..xC..2B..hC...B
16 00 00 00 00 00 82 43 00 00 BA 42 00 00 70 43    .......C..:B..pC
00 00 A0 42 17 00 00 00 00 00 88 43 00 00 C2 42    ...B.......C..BB
00 00 70 43 00 00 BE 42 18 00 00 00 00 00 8E 43    ..pC..>B.......C
00 00 CC 42 00 00 78 43 00 00 DC 42 19 00 00 00    ..LB..xC..\B....
00 00 94 43 00 00 D4 42 00 00 80 43 00 00 FA 42    ...C..TB...C..zB
1A 00 00 00 00 00 9B 43 00 00 DC 42 00 00 80 43    .......C..\B...C
00 00 0C 43 1B 00 00 00 00 00 A1 43 00 00 E6 42    ...C......!C..fB
00 00 84 43 00 00 1B 43 1C 00 00 00 00 00 A7 43    ...C...C......'C
00 00 F0 42 00 00 84 43 00 00 2A 43 1D 00 00 00    ..pB...C..*C....
00 00 AE 43 00 00 F8 42 00 00 88 43 00 00 39 43    ...C..xB...C..9C
1E 00 00 00 00 00 B4 43 00 00 01 43 00 00 8C 43    ......4C...C...C
00 00 48 43 1F 00 00 00 00 00 BB 43 00 00 05 43    ..HC......;C...C
00 00 8C 43 00 00 57 43 20 00 00 00 00 00 C1 43    ...C..WC......AC
00 00 0A 43 00 00 90 43 00 00 66 43 21 00 00 00    ...C...C..fC!...
00 00 C8 43 00 00 0F 43 00 00 94 43 00 00 75 43    ..HC...C...C..uC
22 00 00 00 00 00 CF 43 00 00 14 43 00 00 94 43    ".....OC...C...C
00 00 82 43 23 00 00 00 00 00 D6 43 00 00 19 43    ...C#.....VC...C
00 00 98 43 00 80 89 43 24 00 00 00 00 00 DC 43    ...C...C$.....\C
00 00 1D 43 00 00 9C 43 00 00 91 43 25 00 00 00    ...C...C...C%...
00 00 E3 43 00 00 22 43 00 00 9C 43 00 80 98 43    ..cC.."C...C...C
26 00 00 00 00 00 EA 43 00 00 27 43 00 00 A0 43    &.....jC..'C...C
00 00 A0 43 27 00 00 00 00 00 F1 43 00 00 2C 43    ...C'.....qC..,C
00 00 A4 43 00 80 A7 43 28 00 00 00 00 00 F8 43    ..$C..'C(.....xC
00 00 31 43 00 00 A4 43 00 00 AF 43 29 00 00 00    ..1C..$C../C)...
00 00 00 44 00 00 37 43 00 00 A8 43 00 80 B6 43    ...D..7C..(C..6C
2A 00 00 00 00 80 03 44 00 00 3C 43 00 00 A8 43    *......D..<C..(C
00 00 BE 43 2B 00 00 00 00 00 07 44 00 00 41 43    ..>C+......D..AC
00 00 AC 43 00 80 C5 43 2C 00 00 00 00 00 0B 44    ..,C..EC,......D
00 00 46 43 00 00 B0 43 00 00 CD 43 2D 00 00 00    ..FC..0C..MC-...
00 80 0E 44 00 00 4C 43 00 00 B0 43 00 80 D4 43    ...D..LC..0C..TC
2E 00 00 00 00 80 12 44 00 00 51 43 00 00 B4 43    .......D..QC..4C
00 00 DC 43 2F 00 00 00 00 00 16 44 00 00 56 43    ..\C/......D..VC
00 00 B8 43 00 80 E3 43 30 00 00 00 00 00 1A 44    ..8C..cC0......D
00 00 5C 43 00 00 B8 43 00 00 EB 43 31 00 00 00    ..\C..8C..kC1...
00 00 1E 44 00 00 61 43 00 00 BC 43 00 80 F2 43    ...D..aC..<C..rC
32 00 00 00 00 80 21 44 00 00 67 43 00 00 C0 43    2.....!D..gC..@C
00 00 FA 43 33 00 00 00 00 80 25 44 00 00 6D 43    ..zC3.....%D..mC
00 00 C0 43 00 C0 00 44 34 00 00 00 00 80 29 44    ..@[email protected].....)D
00 00 72 43 00 00 C4 43 00 80 04 44 35 00 00 00    ..rC..DC...D5...
00 80 2D 44 00 00 78 43 00 00 C8 43 00 40 08 44    [email protected]
36 00 00 00 00 00 32 44 00 00 7E 43 00 00 C8 43    6.....2D..~C..HC
00 00 0C 44 37 00 00 00 00 00 36 44 00 00 82 43    ...D7.....6D...C
00 00 CC 43 00 C0 0F 44 38 00 00 00 00 00 3A 44    [email protected].....:D
00 00 85 43 00 00 CC 43 00 80 13 44 39 00 00 00    ...C..LC...D9...
00 80 3E 44 00 00 88 43 00 00 D0 43 00 40 17 44    ..>[email protected]
3A 00 00 00 00 80 42 44 00 00 8B 43 00 00 D4 43    :.....BD...C..TC
00 00 1B 44 3B 00 00 00 00 00 47 44 00 00 8E 43    ...D;.....GD...C
00 00 D4 43 00 C0 1E 44 3C 00 00 00 00 00 4B 44    [email protected]<.....KD
00 00 91 43 00 00 D8 43 00 80 22 44 3D 00 00 00    ...C..XC.."D=...
00 80 4F 44 00 00 94 43 00 00 DC 43 00 00 26 44    ..OD...C..\C..&D
3E 00 00 00 00 00 54 44 00 80 97 43 00 00 DC 43    >.....TD...C..\C
00 C0 29 44 3F 00 00 00 00 80 58 44 00 80 9A 43    .@)D?.....XD...C
00 00 E0 43 00 40 2D 44 40 00 00 00 00 00 5D 44    ..`C.@-D@.....]D
00 00 9E 43 00 00 E4 43 00 00 31 44 41 00 00 00    ...C..dC..1DA...
00 80 61 44 00 00 A1 43 00 00 E4 43 00 80 34 44    ..aD..!C..dC..4D
42 00 00 00 00 00 66 44 00 80 A4 43 00 00 E8 43    B.....fD..$C..hC
00 00 38 44 43 00 00 00 00 00 6B 44 00 00 A8 43    ..8DC.....kD..(C
00 00 EC 43 00 00 3C 44 44 00 00 00 00 80 6F 44    ..lC..<DD.....oD
00 00 AB 43 00 00 EC 43 00 C0 3F 44 45 00 00 00    ..+C..lC.@?DE...
00 80 74 44 00 80 AE 43 00 00 F0 43 00 C0 43 44    ..tD...C..pC.@CD
46 00 00 00 00 00 79 44 00 00 B2 43 00 00 F0 43    F.....yD..2C..pC
00 40 47 44 47 00 00 00 00 00 7E 44 00 80 B5 43    .@GDG.....~D..5C
00 00 F4 43 00 40 4B 44 48 00 00 00 00 80 81 44    [email protected]
00 00 B9 43 00 00 F8 43 00 40 4F 44 49 00 00 00    ..9C..xC.@ODI...
00 00 84 44 00 80 BC 43 00 00 F8 43 00 40 53 44    ...D..<C..xC.@SD
4A 00 00 00 00 80 86 44 00 00 C0 43 00 00 FC 43    J......D..@C..|C
00 40 57 44 4B 00 00 00 00 00 89 44 00 00 C4 43    [email protected]
00 00 00 44 00 40 5B 44 4C 00 00 00 00 C0 8B 44    ...D.@[[email protected]
00 80 C7 43 00 00 00 44 00 C0 5F 44 4D 00 00 00    ..GC...D.@_DM...
00 40 8E 44 00 80 CB 43 00 00 02 44 00 C0 63 44    [email protected].@cD
4E 00 00 00 00 00 91 44 00 00 CF 43 00 00 04 44    N......D..OC...D
00 00 68 44 4F 00 00 00 00 C0 93 44 00 00 D3 43    [email protected]
00 00 04 44 00 80 6C 44 50 00 00 00 00 40 96 44    [email protected]
00 00 D7 43 00 00 06 44 00 80 70 44 51 00 00 00    ..WC...D..pDQ...
00 00 99 44 00 80 DA 43 00 00 08 44 00 00 75 44    ...D..ZC...D..uD
52 00 00 00 00 C0 9B 44 00 80 DE 43 00 00 08 44    [email protected]..^C...D
00 40 79 44 53 00 00 00 00 C0 9E 44 00 80 E2 43    .@[email protected]
00 00 0A 44 00 00 7E 44 54 00 00 00 00 80 A1 44    ...D..~DT.....!D
00 80 E6 43 00 00 0A 44 00 40 81 44 55 00 00 00    [email protected]...
00 40 A4 44 00 00 EB 43 00 00 0C 44 00 80 83 44    .@$D..kC...D...D
56 00 00 00 00 40 A7 44 00 00 EF 43 00 00 0E 44    V....@'D..oC...D
00 E0 85 44 57 00 00 00 00 40 AA 44 00 00 F3 43    .`.DW....@*D..sC
00 00 0E 44 00 40 88 44 58 00 00 00 00 40 AD 44    [email protected]....@-D
00 80 F7 43 00 00 10 44 00 A0 8A 44 59 00 00 00    ..wC...D...DY...
00 40 B0 44 00 00 FC 43 00 00 12 44 00 00 8D 44    .@0D..|C...D...D
5A 00 00 00 00 40 B3 44 00 00 00 44 00 00 12 44    [email protected]
00 80 8F 44 5B 00 00 00 00 80 B6 44 00 40 02 44    ...D[[email protected]
00 00 14 44 00 00 92 44 5C 00 00 00 00 80 B9 44    ...D...D\.....9D
00 80 04 44 00 00 16 44 00 80 94 44 5D 00 00 00    ...D...D...D]...
00 C0 BC 44 00 C0 06 44 00 00 16 44 00 00 97 44    .@<[email protected]
5E 00 00 00 00 00 C0 44 00 00 09 44 00 00 18 44    ^[email protected]
00 A0 99 44 5F 00 00 00 00 40 C3 44 00 80 0B 44    [email protected]
00 00 1A 44 00 40 9C 44 60 00 00 00 00 80 C6 44    [email protected]`.....FD
00 C0 0D 44 00 00 1A 44 00 E0 9E 44 61 00 00 00    [email protected].`.Da...
00 C0 C9 44 00 40 10 44 00 00 1C 44 00 80 A1 44    .@[email protected]..!D
62 00 00 00 00 40 CD 44 00 80 12 44 00 00 1C 44    [email protected]
00 40 A4 44 63 00 00 00 00 80 D0 44 00 00 15 44    .@$Dc.....PD...D
00 00 1E 44 00 E0 A6 44 30 00 00 00 44 00 00 00    ...D.`&D0...D...
58 00 00 00 6C 00 00 00 80 00 00 00 94 00 00 00    X...l...........
A8 00 00 00 BC 00 00 00 D0 00 00 00 E4 00 00 00    (...<...P...d...
F8 00 00 00 0C 01 00 00 20 01 00 00 34 01 00 00    x...........4...
48 01 00 00 5C 01 00 00 70 01 00 00 84 01 00 00    H...\...p.......
98 01 00 00 AC 01 00 00 C0 01 00 00 D4 01 00 00    ....,[email protected]...
E8 01 00 00 FC 01 00 00 10 02 00 00 24 02 00 00    h...|.......$...
38 02 00 00 4C 02 00 00 60 02 00 00 74 02 00 00    8...L...`...t...
88 02 00 00 9C 02 00 00 B0 02 00 00 C4 02 00 00    ........0...D...
D8 02 00 00 EC 02 00 00 00 03 00 00 14 03 00 00    X...l...........
28 03 00 00 3C 03 00 00 50 03 00 00 64 03 00 00    (...<...P...d...
78 03 00 00 8C 03 00 00 A0 03 00 00 B4 03 00 00    x...........4...
C8 03 00 00 DC 03 00 00 F0 03 00 00 04 04 00 00    H...\...p.......
18 04 00 00 2C 04 00 00 40 04 00 00 54 04 00 00    ....,[email protected]...
68 04 00 00 7C 04 00 00 90 04 00 00 A4 04 00 00    h...|.......$...
B8 04 00 00 CC 04 00 00 E0 04 00 00 F4 04 00 00    8...L...`...t...
08 05 00 00 1C 05 00 00 30 05 00 00 44 05 00 00    ........0...D...
58 05 00 00 6C 05 00 00 80 05 00 00 94 05 00 00    X...l...........
A8 05 00 00 BC 05 00 00 D0 05 00 00 E4 05 00 00    (...<...P...d...
F8 05 00 00 0C 06 00 00 20 06 00 00 34 06 00 00    x...........4...
48 06 00 00 5C 06 00 00 70 06 00 00 84 06 00 00    H...\...p.......
98 06 00 00 AC 06 00 00 C0 06 00 00 D4 06 00 00    ....,[email protected]...
E8 06 00 00 FC 06 00 00 10 07 00 00 24 07 00 00    h...|.......$...
38 07 00 00 4C 07 00 00 60 07 00 00 74 07 00 00    8...L...`...t...
88 07 00 00 9C 07 00 00 B0 07 00 00 C4 07 00 00    ........0...D...
D8 07 00 00                                        X...

struct Info:

Member count: 5 (05 00 00 00)

{
  int; // 5
  float; // 9
  float; // 9
  float; // 9
  float; // 9
}

Total struct elements: 99 (63 00 00 00)

Data:

{  1 , 26.0 , 10.0 , 128.0 , 0.0 },
{  2 , 38.0 , 13.0 , 136.0 , 0.0 },
{  3 , 48.0 , 17.0 , 136.0 , 0.0 },
{  4 , 58.0 , 21.0 , 144.0 , 0.0 },
{  5 , 68.0 , 24.0 , 152.0 , 0.0 },
{  6 , 78.0 , 28.0 , 152.0 , 0.0 },
{  7 , 90.0 , 32.0 , 160.0 , 0.0 },
{  8 , 100.0 , 36.0 , 168.0 , 0.0 },
{  9 , 110.0 , 40.0 , 168.0 , 0.0 },
{  10 , 122.0 , 44.0 , 176.0 , 0.0 },
{  11 , 132.0 , 47.0 , 184.0 , 0.0 },
{  12 , 144.0 , 51.0 , 184.0 , 0.0 },
{  13 , 156.0 , 55.0 , 192.0 , 0.0 },
{  14 , 166.0 , 59.0 , 192.0 , 0.0 },
{  15 , 178.0 , 63.0 , 200.0 , 0.0 },
{  16 , 190.0 , 68.0 , 208.0 , 0.0 },
{  17 , 200.0 , 72.0 , 208.0 , 5.0 },
{  18 , 212.0 , 76.0 , 216.0 , 20.0 },
{  19 , 224.0 , 80.0 , 224.0 , 35.0 },
{  20 , 236.0 , 84.0 , 224.0 , 50.0 },
{  21 , 248.0 , 89.0 , 232.0 , 65.0 },
{  22 , 260.0 , 93.0 , 240.0 , 80.0 },
{  23 , 272.0 , 97.0 , 240.0 , 95.0 },
{  24 , 284.0 , 102.0 , 248.0 , 110.0 },
{  25 , 296.0 , 106.0 , 256.0 , 125.0 },
{  26 , 310.0 , 110.0 , 256.0 , 140.0 },
{  27 , 322.0 , 115.0 , 264.0 , 155.0 },
{  28 , 334.0 , 120.0 , 264.0 , 170.0 },
{  29 , 348.0 , 124.0 , 272.0 , 185.0 },
{  30 , 360.0 , 129.0 , 280.0 , 200.0 },
{  31 , 374.0 , 133.0 , 280.0 , 215.0 },
{  32 , 386.0 , 138.0 , 288.0 , 230.0 },
{  33 , 400.0 , 143.0 , 296.0 , 245.0 },
{  34 , 414.0 , 148.0 , 296.0 , 260.0 },
{  35 , 428.0 , 153.0 , 304.0 , 275.0 },
{  36 , 440.0 , 157.0 , 312.0 , 290.0 },
{  37 , 454.0 , 162.0 , 312.0 , 305.0 },
{  38 , 468.0 , 167.0 , 320.0 , 320.0 },
{  39 , 482.0 , 172.0 , 328.0 , 335.0 },
{  40 , 496.0 , 177.0 , 328.0 , 350.0 },
{  41 , 512.0 , 183.0 , 336.0 , 365.0 },
{  42 , 526.0 , 188.0 , 336.0 , 380.0 },
{  43 , 540.0 , 193.0 , 344.0 , 395.0 },
{  44 , 556.0 , 198.0 , 352.0 , 410.0 },
{  45 , 570.0 , 204.0 , 352.0 , 425.0 },
{  46 , 586.0 , 209.0 , 360.0 , 440.0 },
{  47 , 600.0 , 214.0 , 368.0 , 455.0 },
{  48 , 616.0 , 220.0 , 368.0 , 470.0 },
{  49 , 632.0 , 225.0 , 376.0 , 485.0 },
{  50 , 646.0 , 231.0 , 384.0 , 500.0 },
{  51 , 662.0 , 237.0 , 384.0 , 515.0 },
{  52 , 678.0 , 242.0 , 392.0 , 530.0 },
{  53 , 694.0 , 248.0 , 400.0 , 545.0 },
{  54 , 712.0 , 254.0 , 400.0 , 560.0 },
{  55 , 728.0 , 260.0 , 408.0 , 575.0 },
{  56 , 744.0 , 266.0 , 408.0 , 590.0 },
{  57 , 762.0 , 272.0 , 416.0 , 605.0 },
{  58 , 778.0 , 278.0 , 424.0 , 620.0 },
{  59 , 796.0 , 284.0 , 424.0 , 635.0 },
{  60 , 812.0 , 290.0 , 432.0 , 650.0 },
{  61 , 830.0 , 296.0 , 440.0 , 664.0 },
{  62 , 848.0 , 303.0 , 440.0 , 679.0 },
{  63 , 866.0 , 309.0 , 448.0 , 693.0 },
{  64 , 884.0 , 316.0 , 456.0 , 708.0 },
{  65 , 902.0 , 322.0 , 456.0 , 722.0 },
{  66 , 920.0 , 329.0 , 464.0 , 736.0 },
{  67 , 940.0 , 336.0 , 472.0 , 752.0 },
{  68 , 958.0 , 342.0 , 472.0 , 767.0 },
{  69 , 978.0 , 349.0 , 480.0 , 783.0 },
{  70 , 996.0 , 356.0 , 480.0 , 797.0 },
{  71 , 1016.0 , 363.0 , 488.0 , 813.0 },
{  72 , 1036.0 , 370.0 , 496.0 , 829.0 },
{  73 , 1056.0 , 377.0 , 496.0 , 845.0 },
{  74 , 1076.0 , 384.0 , 504.0 , 861.0 },
{  75 , 1096.0 , 392.0 , 512.0 , 877.0 },
{  76 , 1118.0 , 399.0 , 512.0 , 895.0 },
{  77 , 1138.0 , 407.0 , 520.0 , 911.0 },
{  78 , 1160.0 , 414.0 , 528.0 , 928.0 },
{  79 , 1182.0 , 422.0 , 528.0 , 946.0 },
{  80 , 1202.0 , 430.0 , 536.0 , 962.0 },
{  81 , 1224.0 , 437.0 , 544.0 , 980.0 },
{  82 , 1246.0 , 445.0 , 544.0 , 997.0 },
{  83 , 1270.0 , 453.0 , 552.0 , 1016.0 },
{  84 , 1292.0 , 461.0 , 552.0 , 1034.0 },
{  85 , 1314.0 , 470.0 , 560.0 , 1052.0 },
{  86 , 1338.0 , 478.0 , 568.0 , 1071.0 },
{  87 , 1362.0 , 486.0 , 568.0 , 1090.0 },
{  88 , 1386.0 , 495.0 , 576.0 , 1109.0 },
{  89 , 1410.0 , 504.0 , 584.0 , 1128.0 },
{  90 , 1434.0 , 512.0 , 584.0 , 1148.0 },
{  91 , 1460.0 , 521.0 , 592.0 , 1168.0 },
{  92 , 1484.0 , 530.0 , 600.0 , 1188.0 },
{  93 , 1510.0 , 539.0 , 600.0 , 1208.0 },
{  94 , 1536.0 , 548.0 , 608.0 , 1229.0 },
{  95 , 1562.0 , 558.0 , 616.0 , 1250.0 },
{  96 , 1588.0 , 567.0 , 616.0 , 1271.0 },
{  97 , 1614.0 , 577.0 , 624.0 , 1292.0 },
{  98 , 1642.0 , 586.0 , 624.0 , 1314.0 },
{  99 , 1668.0 , 596.0 , 632.0 , 1335.0 }

A.4. ENCHANT_DEFAULT_STAT_FACTOR.NTF

This file contains a multiplicative factor that is multiplied directly to the enchantment bonus base value. This factor is subtracted by 1 before applied to the base value.

Raw:

05 00 00 00 05 00 00 00 09 00 00 00 09 00 00 00    ................
09 00 00 00 09 00 00 00 1E 00 00 00 01 00 00 00    ................
66 66 86 3F 66 66 86 3F CD CC 8C 3F C3 F5 88 3F    ff.?ff.?ML.?Cu.?
02 00 00 00 1F 85 8B 3F 1F 85 8B 3F 33 33 93 3F    .......?...?33.?
7B 14 8E 3F 03 00 00 00 E1 7A 94 3F E1 7A 94 3F    {..?....az.?az.?
A4 70 9D 3F 3D 0A 97 3F 04 00 00 00 B8 1E A5 3F    $p.?=..?....8.%?
B8 1E A5 3F 7B 14 AE 3F 14 AE A7 3F 05 00 00 00    8.%?{..?..'?....
71 3D AA 3F C3 F5 A8 3F 33 33 B3 3F 1F 85 AB 3F    q=*?Cu(?333?..+?
06 00 00 00 29 5C AF 3F CD CC AC 3F 9A 99 B9 3F    ....)\/?ML,?..9?
29 5C AF 3F 07 00 00 00 8F C2 B5 3F 85 EB B1 3F    )\/?.....B5?.k1?
00 00 C0 3F E1 7A B4 3F 08 00 00 00 A4 70 BD 3F    ..@?az4?....$p=?
3D 0A B7 3F 14 AE C7 3F 9A 99 B9 3F 09 00 00 00    =.7?..G?..9?....
7B 14 CE 3F B8 1E C5 3F D7 A3 D0 3F 14 AE C7 3F    {.N?8.E?W#P?..G?
0A 00 00 00 0A D7 E3 3F 3D 0A D7 3F 48 E1 DA 3F    .....Wc?=.W?HaZ?
9A 99 D9 3F 0B 00 00 00 D7 A3 00 40 7B 14 EE 3F    ..Y?....W#.@{.n?
66 66 E6 3F D7 A3 F0 3F 0C 00 00 00 B8 1E 15 40    fff?W#p?....8..@
3D 0A 07 40 E1 7A F4 3F EC 51 08 40 0D 00 00 00    =..@azt?lQ.@....
85 EB 31 40 CD CC 1C 40 5C 8F 02 40 7B 14 1E 40    .k1@ML.@\..@{..@
0E 00 00 00 1F 85 4B 40 33 33 33 40 F6 28 0C 40    ......K@333@v(.@
E1 7A 34 40 0F 00 00 00 CD CC 6C 40 AE 47 51 40    [email protected]@.GQ@
14 AE 17 40 5C 8F 52 40 10 00 00 00 66 66 76 40    ...@\[email protected]@
7B 14 5E 40 B8 1E 25 40 29 5C 5F 40 11 00 00 00    {.^@8.%@)\_@....
EC 51 80 40 F6 28 6C 40 8F C2 35 40 7B 14 6E 40    lQ.@v([email protected]@{.n@
12 00 00 00 5C 8F 82 40 33 33 73 40 9A 99 49 40    ....\..@[email protected]@
7B 14 7E 40 13 00 00 00 CD CC 84 40 71 3D 7A 40    {[email protected].@q=z@
85 EB 61 40 00 00 88 40 14 00 00 00 3D 0A 87 40    .ka@...@....=..@
D7 A3 80 40 00 00 80 40 71 3D 92 40 15 00 00 00    W#.@...@q=.@....
AE 47 89 40 F6 28 84 40 3D 0A 8F 40 E1 7A 9C 40    .G.@v(.@=..@az.@
16 00 00 00 1F 85 8B 40 14 AE 87 40 7B 14 9E 40    .......@...@{..@
52 B8 A6 40 17 00 00 00 8F C2 8D 40 33 33 8B 40    R8&@.....B.@33.@
B8 1E AD 40 C3 F5 B0 40 18 00 00 00 00 00 90 40    8.-@Cu0@.......@
52 B8 8E 40 F6 28 BC 40 33 33 BB 40 19 00 00 00    R8.@v(<@33;@....
85 EB 91 40 AE 47 91 40 33 33 CB 40 A4 70 C5 40    [email protected].@33K@$pE@
1A 00 00 00 F6 28 94 40 CD CC 94 40 71 3D DA 40    ....v(.@ML.@q=Z@
14 AE CF 40 1B 00 00 00 66 66 96 40 EC 51 98 40    [email protected].@lQ.@
AE 47 E9 40 85 EB D9 40 1C 00 00 00 D7 A3 98 40    [email protected]@....W#.@
0A D7 9B 40 EC 51 F8 40 F6 28 E4 40 1D 00 00 00    .W.@lQx@v(d@....
48 E1 9A 40 29 5C 9F 40 14 AE 03 41 66 66 EE 40    Ha.@)\[email protected]@
1E 00 00 00 B8 1E 9D 40 48 E1 A2 40 33 33 0B 41    ....8..@Ha"@33.A
D7 A3 F8 40 30 00 00 00 44 00 00 00 58 00 00 00    W#[email protected]...
6C 00 00 00 80 00 00 00 94 00 00 00 A8 00 00 00    l...........(...
BC 00 00 00 D0 00 00 00 E4 00 00 00 F8 00 00 00    <...P...d...x...
0C 01 00 00 20 01 00 00 34 01 00 00 48 01 00 00    ........4...H...
5C 01 00 00 70 01 00 00 84 01 00 00 98 01 00 00    \...p...........
AC 01 00 00 C0 01 00 00 D4 01 00 00 E8 01 00 00    ,[email protected]...
FC 01 00 00 10 02 00 00 24 02 00 00 38 02 00 00    |.......$...8...
4C 02 00 00 60 02 00 00 74 02 00 00                L...`...t...

struct Info:

Member count: 5 (05 00 00 00)

{
  int; // 5
  float; // 9
  float; // 9
  float; // 9
  float; // 9
}

Total struct elements: 30 (1E 00 00 00)

Data:

{ 1 , 1.05 , 1.045 , 1.1 , 1.07 },
{ 2 , 1.09 , 1.09 , 1.15 , 1.11 },
{ 3 , 1.16 , 1.16 , 1.23 , 1.18 },
{ 4 , 1.29 , 1.29 , 1.36 , 1.31 },
{ 5 , 1.33 , 1.32 , 1.4 , 1.34 },
{ 6 , 1.37 , 1.35 , 1.45 , 1.37 },
{ 7 , 1.42 , 1.39 , 1.5 , 1.41 },
{ 8 , 1.48 , 1.43 , 1.56 , 1.45 },
{ 9 , 1.61 , 1.54 , 1.63 , 1.56 },
{ 10 , 1.78 , 1.68 , 1.71 , 1.7 },
{ 11 , 2.01 , 1.86 , 1.8 , 1.88 },
{ 12 , 2.33 , 2.11 , 1.91 , 2.13 },
{ 13 , 2.78 , 2.45 , 2.04 , 2.47 },
{ 14 , 3.18 , 2.8 , 2.19 , 2.82 },
{ 15 , 3.70 , 3.27 , 2.37 , 3.29 },
{ 16 , 3.85 , 3.47 , 2.58 , 3.49 },
{ 17 , 4.01 , 3.69 , 2.84 , 3.72 },
{ 18 , 4.08 , 3.8 , 3.15 , 3.97 },
{ 19 , 4.15 , 3.91 , 3.53 , 4.25 },
{ 20 , 4.22 , 4.02 , 4.0 , 4.57 },
{ 21 , 4.29 , 4.13 , 4.47 , 4.89 },
{ 22 , 4.36 , 4.24 , 4.94 , 5.21 },
{ 23 , 4.43 , 4.35 , 5.41 , 5.53 },
{ 24 , 4.5 , 4.46 , 5.88 , 5.85 },
{ 25 , 4.56 , 4.54 , 6.35 , 6.17 },
{ 26 , 4.63 , 4.65 , 6.82 , 6.49 },
{ 27 , 4.7 , 4.76 , 7.29 , 6.81 },
{ 28 , 4.77 , 4.87 , 7.76 , 7.13 },
{ 29 , 4.84 , 4.98 , 8.23 , 7.45 },
{ 30 , 4.91 , 5.09 , 8.7 , 7.77 }