war 3 replay information

46
[CODE]================ ======================== ================================== ===== 1.0 Introduction ====================== ======================== ================================= An important word ahead. The information in this document is addressed to developers who want to create programs, tools and websites that help to enrich the gaming experience for the *whole* WarCraft III community. We absolutely do not tolerate hacks and cheats. Therefore you MUST NOT use the information provided in this document for any of these purposes. This file is meant to contain a description of the replay format itself. Additional notes and explanations on single fields and/or algorithms will (eventually) be moved to a seperate file ("w3g_notes.txt") some day. The whole file is still under construction. The meaning of some fields is still unknown and "known" fields might be wrong. Please contact us if you figure out any unknown values or find a replay that simply does not conform with the description of a "known" field. Convention: ----------- Sections directly related to data stored in the replay file are written in square brackets []. ====================== ======================== ================================= 2.0 [Header] ====================== ======================== ================================= The replay file consist of a header followed by a variable number of compressed data blocks. The header has the following format: offset | size/type | Description -------+-----------+----------------------------------------------------------- 0x0000 | 28 chars | zero terminated strin g "Warcraft III recorded game\0x1A\0" 0x001c | 1 dword | fileoffset of first compressed data block (header size)  | | 0x40 for WarCraft III with patch <= v1.06  | | 0x44 for WarCraft III patch >= 1.07 and TFT replays 0x0020 | 1 dword | overall size of compressed file 0x0024 | 1 dword | replay header version:  | | 0x00 for WarCraft III with patch <= 1.06  | | 0x01 for WarCraft III patch >= 1.07 and TFT replays 0x0028 | 1 dword | overall size of decompressed data (excluding header) 0x002c | 1 dword | number of compressed data blocks in file 0x0030 | n bytes | SubHeader (see section 2.1 and 2.2) The size of the header excluding the subheader is 0x30 bytes so far. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2.1 [SubHeader] for header version 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This header was used for all replays saved with WarCraft III patch version v1.06 and below. offset | size/type | Description -------+-----------+-----------------------------------------------------------

Upload: lomlette

Post on 04-Jun-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 1/46

[CODE]===============================================================================1.0 Introduction===============================================================================

An important word ahead.The information in this document is addressed to developers who want to createprograms, tools and websites that help to enrich the gaming experience for the*whole* WarCraft III community.We absolutely do not tolerate hacks and cheats. Therefore you MUST NOT usethe information provided in this document for any of these purposes.

This file is meant to contain a description of the replay format itself.Additional notes and explanations on single fields and/or algorithms will(eventually) be moved to a seperate file ("w3g_notes.txt") some day.

The whole file is still under construction. The meaning of some fields is stillunknown and "known" fields might be wrong. Please contact us if you figure outany unknown values or find a replay that simply does not conform with thedescription of a "known" field.

Convention:-----------Sections directly related to data stored in the replay file are written in

square brackets [].

===============================================================================2.0 [Header]===============================================================================

The replay file consist of a header followed by a variable number of compresseddata blocks. The header has the following format:

offset | size/type | Description-------+-----------+-----------------------------------------------------------0x0000 | 28 chars | zero terminated string "Warcraft III recorded game\0x1A\0"

0x001c | 1 dword | fileoffset of first compressed data block (header size)  | | 0x40 for WarCraft III with patch <= v1.06  | | 0x44 for WarCraft III patch >= 1.07 and TFT replays0x0020 | 1 dword | overall size of compressed file0x0024 | 1 dword | replay header version:  | | 0x00 for WarCraft III with patch <= 1.06  | | 0x01 for WarCraft III patch >= 1.07 and TFT replays0x0028 | 1 dword | overall size of decompressed data (excluding header)0x002c | 1 dword | number of compressed data blocks in file0x0030 | n bytes | SubHeader (see section 2.1 and 2.2)

The size of the header excluding the subheader is 0x30 bytes so far.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -2.1 [SubHeader] for header version 0- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

This header was used for all replays saved with WarCraft III patch versionv1.06 and below.

offset | size/type | Description-------+-----------+-----------------------------------------------------------

Page 2: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 2/46

0x0000 | 1 word | unknown (always zero so far)0x0002 | 1 word | version number (corresponds to patch 1.xx)0x0004 | 1 word | build number (see section 2.3)0x0006 | 1 word | flags  | | 0x0000 for single player games  | | 0x8000 for multiplayer games (LAN or Battle.net)0x0008 | 1 dword | replay length in msec0x000C | 1 dword | CRC32 checksum for the header  | | (the checksum is calculated for the complete header  | | including this field which is set to zero)

Overall header size for version 0 is 0x40 bytes.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -2.2 [SubHeader] for header version 1- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

This header is used for all replays saved with WarCraft III patch versionv1.07 and above.

offset | size/type | Description-------+-----------+-----------------------------------------------------------0x0000 | 1 dword | version identifier string reading:

  | | 'WAR3' for WarCraft III Classic  | | 'W3XP' for WarCraft III Expansion Set 'The Frozen Throne'  | | (note that this string is saved in little endian format  | | in the replay file)0x0004 | 1 dword | version number (corresponds to patch 1.xx so far)0x0008 | 1 word | build number (see section 2.3)0x000A | 1 word | flags  | | 0x0000 for single player games  | | 0x8000 for multiplayer games (LAN or Battle.net)0x000C | 1 dword | replay length in msec0x0010 | 1 dword | CRC32 checksum for the header  | | (the checksum is calculated for the complete header  | | including this field which is set to zero)

Overall header size for version 1 is 0x44 bytes.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -2.3 Version information- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 game version | version in replay | version of war3.exe | release date--------------+-------------------+---------------------+----------------  1.00 | 1.00.4448 | 1.0. 0.4448 | 2002-07-03  1.01 | 1.01.4482 | 1.0. 1.4482 | 2002-07-05  1.01b | 1.01.4482 | 1.0. 1.4483 | 2002-07-10

  1.01c | 1.01.4482 | ? | 2002-07-28  1.02 | 1.02.4531 | 1.0. 1.4531 | 2002-08-15  1.02a | 1.02.4531 | 1.0. 1.4563 | 2002-09-06  1.03 | 1.03.4572 | 1.0. 3.4653 | 2002-10-09  1.04 | 1.04.4654 | 1.0. 3.4709 | 2002-11-04  1.04b | 1.04.4654 | 1.0. 3.4709 | 2002-11-07  1.04c | 1.04.4654 | 1.0. 4.4905 | 2003-01-30  1.05 | 1.05.4654 | 1.0. 5.4944 | 2003-01-30  1.06 | 1.06.4656 | 1.0. 6.5551 | 2003-06-03  1.07 | 1.07.6031 | 1.0. 7.5535 | 2003-07-01

Page 3: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 3/46

  1.10 | 1.10.6034 | 1.0.10.5610 | 2003-06-30  1.11 | 1.11.6035 | 1.0.11.5616 | 2003-07-15  1.12 | 1.12.6036 | 1.0.12.5636 | 2003-07-31  1.13 | 1.13.6037 | 1.0.13.5816 | 2003-12-16  1.13b | 1.13.6037 | 1.0.13.5818 | 2003-12-19  1.14 | 1.14.6039 | 1.0.14.5840 | 2004-01-07  1.14b | 1.14.6040 | 1.0.14.5846 | 2004-01-10  1.15 | 1.15.6043 | 1.0.15.5917 | 2004-04-14  1.16 | 1.16.6046 | 1.0.16.5926 | 2004-05-10  1.17 | 1.17.6050 | 1.0.17.5988 | 2004-09-20  1.18 | 1.18.6051 | 1.0.18.6030 | 2005-03-01

 Notes on specific patches:  o The mpq file for patch 1.02a is named 1.02c.  o Patch 1.04b was only available as standalone patch (not on bnet)  and solely adds a new copy protection to war3.exe.  o The minor version number of the 'war3.exe' is wrong for patches  1.02, 1.02a, 1.04, 1.04b.  o Blizzard released no standalone versions of the patches:  1.01c, 1.04c, 1.10.  o Replays of patch 1.14 and 1.14b are incompatible

 General notes:

  o There are no differences in replays between minor versions  (except for patch 1.14 and 1.14b).  o Check the file properties of the existing war3.exe to get the current  installed version of Warcraft III (see column 3).  o There are no differences in version and build numbers between RoC and TFT.  o There are no differences between various language versions.  o You can identify the replay version of the installed game by extracting  the 'product version number' from the version resource of the 'war3.exe'.  o You can identify the version of the 'war3.exe' by extracting the  'file version number' from the version resource of the file.  o On early patches build number of replays and 'war3.exe' are equal.  Later on they differ.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -2.4 WarCraft III The Frozen Throne beta replay information- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

2.4.1 Beta for Frozen Throne retail (version 1.07)--------------------------------------------------

Beta replays are similar to RoC / final TFT replays.Here comes a list of version numbers, header version and build numbers:

version | subheader version | build# | release date--------+-------------------+--------+--------------

 301 | version 0 | 6010 | 2003-03-04 302 | version 0 | 6011 | 2003-03-11 303 | version 0 | 6012 | 2003-03-14 304 | version 0 | 6013 | 2003-03-19 304a | version 0 | 6013 | 2003-03-24 305 | version 1(*) | 6015 | 2003-03-28 305a | version 1(*) | 6016 | 2003-03-30 306 | version 1 | 6018 | 2003-04-08 307 | version 1 | 6019 | 2003-04-11 308 | version 1 | 6021 | 2003-04-16

Page 4: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 4/46

 309 | version 1 | 6022 | 2003-04-17 310 | version 1 | 6023 | 2003-04-24 311 | version 1 | 6027 | 2003-04-30 312 | version 1 | 6030 | 2003-05-13 313 | version 1 | 6031 | 2003-05-19 314 | version 1 | 6034 | 2003-05-30 314a | version 1 | 6034 | 2003-06-02 315 | version 1 | 6034 | 2003-06-10

 (*) Patch 305 and 305a still use the old V0 GameVersion scheme (2 words).

  Notes:  o 313 replays might be convertable to FT retail 1.07 replays.  o 315 replays might be convertable to FT retail 1.10/1.11 replays.

2.4.1 Beta versions of various patches--------------------------------------

These patches were only distributed through the 'Westfall' gateway.

 game | version | version | date | version | in replay | of war3.exe | of release | beta for---------+--------------+-----------------+--------------+----------------  1.15 | 1. 15.6041 | 1.0.15.5900 | 2004-04-16 | patch 1.15

  1.401 | 1.401.6042 | 401.0. 0.5911 | 2004-04-22 | patch 1.15  1.402 | | | 2004-04-24 | patch 1.15  1.403 | | | 2004-06-23 | Ladder XP  1.404 | | | 2004-08-14 | patch 1.17  1.405 | | | 2004-08-19 | patch 1.17  1.406 | | | 2004-08-31 | patch 1.17

===============================================================================3.0 [Data block header]===============================================================================

Each compressed data block consists of a header followed by compressed data.

The first data block starts at the address denoted in the replay file header.All following addresses are relative to the start of the data block header.The decompressed data blocks append to a single continueous data stream(disregarding the block headers). The content of this stream (see section 4) iscompletely independent of the original block boundaries.

offset | size/type | Description-------+-----------+-----------------------------------------------------------0x0000 | 1 word | size n of compressed data block (excluding header)0x0002 | 1 word | size of decompressed data block (currently 8k)0x0004 | 1 dword | unknown (probably checksum)0x0008 | n bytes | compressed data (decompress using zlib)

To decompress one block with zlib: 1. call 'inflate_init' 2. call 'inflate' with Z_SYNC_FLUSH for the block

The last block is padded with 0 bytes up to the 8K border. These bytes canbe disregarded.

//TODO: add decompression details and move explanation to seperate file

Page 5: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 5/46

===============================================================================4.0 [Decompressed data]===============================================================================

Decompressed data is a collection of data items that appear back to back inthe stream. The offsets for these items vary depending on the size of everysingle item.

This section describes the records that always appear at the beginning ofa replay data stream. They hold information about settings and players rightbefore the start of the game. Data about the game in progress is describedin section 5.

The order of the start up items is as follows:

 # | Size | Name---+----------+-------------------------- 1 | 4 byte | Unknown (0x00000110 - another record id?) 2 | variable | PlayerRecord (see 4.1) 3 | variable | GameName (null terminated string) (see 4.2) 4 | 1 byte | Nullbyte 5 | variable | Encoded String (null terminated) (see 4.3)  | | - GameSettings (see 4.4)  | | - Map&CreatorName (see 4.5)

 6 | 4 byte | PlayerCount (see 4.6) 7 | 4 byte | GameType (see 4.7) 8 | 4 byte | LanguageID (see 4.8) 9 | variable | PlayerList (see 4.9)10 | variable | GameStartRecord (see 4.11)

The following sections describe these items in detail.After the static items (as described above) there follow variable informationorganized in blocks that are described in section 5.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -4.1 [PlayerRecord]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

offset | size/type | Description-------+-----------+-----------------------------------------------------------0x0000 | 1 byte | RecordID:  | | 0x00 for game host  | | 0x16 for additional players (see 4.9)0x0001 | 1 byte | PlayerID0x0002 | n bytes | PlayerName (null terminated string)  n+2 | 1 byte | size of additional data:  | | 0x01 = custom  | | 0x08 = ladder

Depending on the game type one of these records follows:

o For custom games:

  offset | size/type | Description  -------+-----------+---------------------------------------------------------  0x0000 | 1 byte | null byte (1 byte)

o For ladder games:

Page 6: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 6/46

  offset | size/type | Description  -------+-----------+---------------------------------------------------------  0x0000 | 4 bytes | runtime of players Warcraft.exe in milliseconds  0x0004 | 4 bytes | player race flags:  | | 0x01=human  | | 0x02=orc  | | 0x04=nightelf  | | 0x08=undead  | | (0x10=daemon)  | | 0x20=random  | | 0x40=race selectable/fixed (see notes in section 4.11)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -4.2 [GameName]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

This is a plain null terminated string reading the name of the game.

Only in custom battle.net games you can name your game, otherwise the nameis fixed:

o For ladder games it reads "BNet".

o For custom LAN games it holds a localized string including the game creators  player name.  Examples: a game created by the player 'Blue' results in:  "Blue's game" for the english version of Warcraft III  "Spiel von Blue" for the german version

o For custom single player games it holds a localized fixed string.  "local game" for the english version  "Lokales Spiel" for the german version

o Following is a list for all localized strings (encoded in plain ASCII) used  by WarCraft III patch version 1.06 and earlier  (see war3.mpq\UI\FrameDef\GlobalStrings.fdf: GAMENAME, LOCAL_GAME):

  English : "%s's Game" : "local game"  Czech (1029): "Hra %s" : "Místní hra"  German (1031): "Spiel von %s" : "Lokales Spiel"  Spanish (1034): "Partida de %s" : "Partida local"  French (1036): "Partie de %s" : "Partie locale"  Italian (1040): "Partita di %s" : "Partita locale"  Polish (1045): "Gra (%s)" : "Gra lokalna"

  %s denotes the game creators player name.

o The following list shows all localized strings (encoded in plain ASCII) used  by WarCraft III patch version 1.07 and later

  (see war3.mpq\UI\FrameDef\GlobalStrings.fdf: GAMENAME, LOCAL_GAME):

  German (1031): "Lokales Spiel (%s)" : "Lokales Spiel"

  %s denotes the game creators player name.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -4.3 [Encoded String]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Page 7: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 7/46

There are the GameSetting and three null-terminated strings here back-to-back,all encoded into a single null terminated string.(But we don't know the reason for this encoding!)

Every even byte-value was incremented by 1. So all encoded bytes are odd.A control-byte stores the transformations for the next 7 bytes.

Since all NullBytes were transformed to 1, they will never occure inside theencoded string. But a NullByte marks the end of the encoded string.

The encoded string starts with a control byte.The control byte holds a bitfield with one bit for each byte of the next 7bytes block. Bit 1 (not Bit 0) corresponds to the following byte right afterthe control-byte, bit 2 to the next, and so on.Only Bit 1-7 contribute to encoded string. Bit 0 is unused and always set.

Decoding these bytes works as follows:

If the corresponding bit is a '1' then the character is moved over directly.If the corresponding bit is a '0' then subtract 1 from the character.

After a control-byte and the belonging 7 bytes follows a new control-byteuntil you find a NULL character in the stream.

Example decompression code (in 'C'):

char* EncodedString;char* DecodedString;char mask;int pos=0;int dpos=0;

while (EncodedString[pos] != 0){  if (pos%8 == 0) mask=EncodedString[pos];

  else  {  if ((mask & (0x1 << (pos%8))) == 0)  DecodedString[dpos++] = EncodedString[pos] - 1;  else  DecodedString[dpos++] = EncodedString[pos];  }  pos++;}

Alternatively one could interprete the encoding scheme as follow:Bit 0 of every character was moved to the control byte and set to 1 afterwards.

TODO: Maybe this gives a simpler decoding algorithm.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -4.4 [GameSettings]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Make sure you have decoded the GameSettings (see 4.3).

Page 8: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 8/46

The game settings (extended options on create game screen) are packed usingvarious flags distributed over 13 bytes.For details about the single options read the file "support/Readme/(PC)UIMainMenus.html"in your WarCraft III installation directory.

Denoted below are only nonzero flags.

offset | bitnr | Description-------+-------+---------------------------------------------------------------0x0000 | 0,1 | Game Speed: 0 = slow, 1 = normal, 2 = fast, 3 = unused-------+-------+---------------------------------------------------------------0x0001 | 0 | Visibility: 'hide terrain'  | 1 | Visibility: 'map explored'  | 2 | Visibility: 'always visible' (no fog of war)  | 3 | Visibility: 'default'  | 4,5 | Observer : 0 = off or 'Referees' (see 0x0003 Bit6)  | | 1 = unused  | | 2 = 'Obs on Defeat'  | | 3 = on or 'Referees'  | 6 | Teams Together (team members are placed at neighbored places)-------+-------+---------------------------------------------------------------0x0002 | 1,2 | Fixed teams: 0 = off, 1 = unused, 2 = unused, 3 = on-------+-------+---------------------------------------------------------------

0x0003 | 0 | Full Shared Unit Control  | 1 | Random Hero  | 2 | Random Races  | 6 | Observer: Referees (other observer bits are 0 or 3)-------+-------+---------------------------------------------------------------0x0004 | | 00x0005 | | unknown (0 in ladder games, but not in custom)0x0006 | | 00x0007 | | unknown (0 in ladder games, but not in custom)0x0008 | | 0-------+-------+---------------------------------------------------------------0x0009 | 4Byte | Map Checksum //TODO: find algorithm - 0C | |

-------+-------+---------------------------------------------------------------

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -4.5 [Map&CreatorName]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Make sure you have decoded the three Strings (see 4.3).

First is the map name, second is the game creators name (can be "Battle.Net"for ladder) and a third is an always empty string.

Here ends the encoded string. There should not be any unprocessed decodedbytes left.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -4.6 [PlayerCount]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

4 bytes - num players or num slots  in Bnet games is the exact ## of players  in Custom games, is the ## of slots on the join game screen

Page 9: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 9/46

  in Single Player custom games is 12

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -4.7 [GameType]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

offset | size/type | Description-------+-----------+-----------------------------------------------------------0x0000 | 1 byte | Game Type:  | | (0x00 = unknown, just in a few pre 1.03 custom games)  | | 0x01 = Ladder -> 1on1 or FFA  Custom -> Scenario (not 100% sure about this)  | | 0x09 = Custom game  | | 0x1D = Single player game  | | 0x20 = Ladder Team game (AT or RT, 2on2/3on3/4on4)0x0001 | 1 byte | PrivateFlag for custom games:  | | 0x00 - if it is a public LAN/Battle.net game  | | 0x08 - if it is a private Battle.net game0x0002 | 1 word | unknown (always 0x0000 so far)

TODO:  values in patch >=1.07:  01 00 00 00 : ladder 1on1 / custom scenario

  20 00 00 00 : ladder team  09 00 00 00 : custom game  09 A8 12 00 : custom game  09 A0 12 00 : custom game  09 A8 42 00 : custom game  09 A8 14 00 : custom game  09 A0 14 00 : custom game  01 40 13 00 : custom game  09 A0 42 00 : custom game  09 A8 44 00 : custon game

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

4.8 [LanguageID]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -4 byte - (independent of realm, map, gametype !)Might be another checksum or encoded language.I found the following numbers in my replays:

C4 F0 12 00 - patch 1.10 ger90 F1 12 00 - patch 1.06 ger90 F1 12 00 - patch 1.05 gerA0 F6 6D 00 - patch 1.04 ger24 F8 12 00 - patch 1.04 eng(?)A0 F6 6D 00 - patch 1.03 gerC0 F6 6D 00 - patch 1.02 ger

//TODO: Find out what this field is really about.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -4.9 [PlayerList]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

The player list is an array of PlayerRecords for all additional players(excluding the game host and any computer players).

Page 10: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 10/46

If there is only one human player in the game it is not present at all!Per additional player there is the following structure in the file:

offset | size/type | Description-------+-----------+-----------------------------------------------------------0x0000 | 4/11 byte | PlayerRecord (see 4.1)0x000? | 4 byte | unknown  | | (always 0x00000000 for patch version >= 1.07  | | always 0x00000001 for patch version <= 1.06)

This record is repeated as long as the first byte equals the additionalplayer record ID (0x16).

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -4.10 [GameStartRecord]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

offset | size/type | Description-------+-----------+-----------------------------------------------------------0x0000 | 1 byte | RecordID - always 0x190x0001 | 1 word | number of data bytes following0x0003 | 1 byte | nr of SlotRecords following (== nr of slots on startscreen)0x0004 | n bytes | nr * SlotRecord (see 4.11)

  n+4 | 1 dword | RandomSeed (see 4.12)  n+8 | 1 byte | SelectMode  | | 0x00 - team & race selectable (for standard custom games)  | | 0x01 - team not selectable  | | (map setting: fixed alliances in WorldEditor)  | | 0x03 - team & race not selectable  | | (map setting: fixed player properties in WorldEditor)  | | 0x04 - race fixed to random  | | (extended map options: random races selected)  | | 0xcc - Automated Match Making (ladder)  n+9 | 1 byte | StartSpotCount (nr. of start positions in map)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -4.11 [SlotRecord]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

offset | size/type | Description-------+-----------+-----------------------------------------------------------0x0000 | 1 byte | player id (0x00 for computer players)0x0001 | 1 byte | map download percent: 0x64 in custom, 0xff in ladder0x0002 | 1 byte | slotstatus:  | | 0x00 empty slot  | | 0x01 closed slot  | | 0x02 used slot

0x0003 | 1 byte | computer player flag:  | | 0x00 for human player  | | 0x01 for computer player0x0004 | 1 byte | team number:0 - 11  | | (team 12 == observer or referee)0x0005 | 1 byte | color (0-11):  | | value+1 matches player colors in world editor:  | | (red, blue, cyan, purple, yellow, orange, green,  | | pink, gray, light blue, dark green, brown)  | | color 12 == observer or referee

Page 11: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 11/46

0x0006 | 1 byte | player race flags (as selected on map screen):  | | 0x01=human  | | 0x02=orc  | | 0x04=nightelf  | | 0x08=undead  | | 0x20=random  | | 0x40=race selectable/fixed (see notes below)0x0007 | 1 byte | computer AI strength: (only present in v1.03 or higher)  | | 0x00 for easy  | | 0x01 for normal  | | 0x02 for insane  | | for non-AI players this seems to be always 0x010x0008 | 1 byte | player handicap in percent (as displayed on startscreen)  | | valid values: 0x32, 0x3C, 0x46, 0x50, 0x5A, 0x64  | | (field only present in v1.07 or higher)

 Notes:  o This record is only 7 bytes in pre 1.03 replays.  The last two fields are missing there.

  o For pre v1.07 replays this record is only 8 bytes.  The last field is missing there.

  o For open and closed slots team and color fields are undetermined.

  o For WarCraft III patch version <= 1.06:  If bit 6 of player race flags is additionally set (0x40 added) then the  race is fixed by the map (see also section 4.10).

  o For WarCraft III patch version >= 1.07:  If bit 6 of player race flags is additionally set (0x40 added) then the  race is selectable by the player - otherwise it is a ladder game or the  race is fixed by the map (see also section 4.10).

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -4.12 [RandomSeed]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -This field is the best bet on the random seed the Warcraft III engine isinitialized with. The replay data that follows requires already a set up seed(since starting positions and race are fixed at this time).

For custom games (no matter if battle.net or LAN) this dword appears to bethe runtime of the Warcraft.exe of the game host in milliseconds.

For ladder games the value variies very much - probably the battle.net serverhands out a 'real' seed (not runtime based) to the clients.

===============================================================================

5.0 [ReplayData]===============================================================================

This section describes the Replay data following directly after the static datadescribed in section 4. It represents information about the game in progress.

Replay data is segmented into seperate blocks of either fixed or variable size.The order of these blocks is not fixed and not all known blocktypes have to bepresent in a replay.

Page 12: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 12/46

Blocks always start with one byte representing the block ID. Using this ID onecan identify specific blocks while skipping unwanted (using the block size).Below all known blocks are listed by their block ID followed by a descriptionof the data following the ID. Denoted in square brackets is the overall sizeof each block (including the one byte block ID).

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x17 - LeaveGame [ 14 byte ]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  1 dword - reason  0x01 - connection closed by remote game  0x0C - connection closed by local game  0x0E - unknown (rare) (almost like 0x01)  1 byte - PlayerID  1 dword - result - see table below  1 dword - unknown (number of replays saved this warcraft session?)

 Key for Table:  player = player according to PlayerID  saver = replay saver ( = player of very last leave-action)  INC = the unknown parameter in the last leave-action was incremented by 1  (compared to the other LeaveGame actions before)  [?] = entries marked with this symbol are true for common replays but

  we encountered at least one nonconform replay.  [O] = if the replay saver was an observer it regularly happens that  players get a result of 0x01

  Reason | Result | Description ===========+========+=======================================================  0x01 | 0x01 | player left (disconnected or saver is observer) [O]  (remote) | 0x07 | player left  | 0x08 | player lost (was completly erased)  | 0x09 | player won  | 0x0A | draw (long lasting tournament game)  | 0x0B | player left (was observer) [?] -----------+--------+-------------------------------------------------------

  0x0E | 0x01 | player left [?]  (remote) | 0x07 | player left [?]  | 0x0B | player left (was observer) [?] ===========+========+=======================================================  0x0C | 0x01 | saver disc. / observer left [O]  (not last)| 0x07 | saver lost, no info about the player [?]  | 0x08 | saver lost (erased), no info about the player  | 0x09 | saver won, no info about the player  | 0x0A | draw (long lasting tournament game)  | 0x0B | saver lost (obs or obs on defeat) [?] -----------+--------+-------------------------------------------------------  last 0x0C | 0x01 | saver disconnected (rep.saver)| 0x07 | with INC => saver won

  | | w/o INC => saver lost  | 0x08 | saver lost (completly erased)  | 0x09 | saver won  | 0x0B | with INC => saver won most times, but not always [?]  | | w/o INC => saver left (was obs or obs on defeat) [?]

 Personal note:  o Until now we have not found a robust winner detection algorithm that  works for every replay :(  We checked about 6000 replays. Normal ladder games works well,

Page 13: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 13/46

  but especially FFA games saved by an observer are very &§*#$.  So here is still work to do...

 Notes:  o Do NOT use the marked lines ([?],[N]) for winner detection.  If you use these you will probably increase the detection rate but also  get false detections.  The unmarked lines proofed to be fail-safe (at least until now).

  o If at least one player gets a draw result the whole game is draw.

  o The result*s* of the replay saver - he can get more than one because all  local leave actions (reason=0x0C) belong to this result - do not  contradict (except in draw games). There is never a win and a loss result  at the same time (if you use the none marked lines).

  o All result-values in a leave-action are player specific results.  E.g. if one player of a team quits he gets a 'lost' result value - even  if his team mate later wins the game.

  o If you get a win result for a player his team is definitely the winner and  all other teams lost.

  o If the result for every player of a team is "loss" the whole team lost.

  o Even WarCraft cannot see into the future ;). If the saver of a team replay  leaves the game first, you will always detect a 'saver-lost' result.  It is impossible to detect who is the winner in this replay.  Unfortunately this happens quite often. Imagine a 2vs2 game: One team was  nearly beaten, both players say 'gg' and leave. If the replay saver (one of  these losers) quits only 1 second before his team mate, you cannot detect  the winner in this replay.  Our strategy in this situation is to assume that the whole replay saver  team lost. This might not be correct in every situation (but from the  replay we will never know).  An alternative strategy could be: The team with the most remaining players  wins. This can be wrong too e.g. if in a 2on2 one team nearly won when one

  of the players of this team disconnects but the second player finishes the  work.  In 2on2 games both strategies lead to same result.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x1A - unknown (first startblock) [ 5 byte ]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  1 dword - unknown (always 0x01 so far)

 Notes:  o This block seems to be always the first block at start of game.  It is never repeated.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x1B - unknown (second startblock) [ 5 byte ]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  1 dword - unknown (always 0x01 so far)

 Notes:  o This block seems to be always the second block at start of game.  It is never repeated.

Page 14: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 14/46

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x1C - unknown (third startblock) [ 5 byte ]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  1 dword - unknown (always 0x01 so far)

 Notes:  o This block seems to be always the third block at start of game.  It is never repeated.  o Rarely there is a chat block (0x20) or a LeaveGame block (0x17) between  2nd startblock (0x1B) and this 3rd startblock (0x1C)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x1E - TimeSlot block [ n+3 byte ]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - for details see block 0x1F

 Notes:  o For patch version <= 1.02 this block was used instead of block 0x1F.  o This block also rarely appears in version >= 1.07. In this case the usual  RandomSeed block (0x22) does *not* follow though.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x1F - TimeSlot block [ n+3 byte ]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  1 word - n = number of bytes that follow  1 word - time increment (milliseconds)  about 250 ms in battle.net  about 100 ms in LAN and single player  n-2 byte - CommandData block(s) (not present if n=2)

 For every player which has executed an action during this time slot there is at least one 'Command data block'.

 CommandData block:  1 byte - PlayerID  1 word - Action block length  n byte - Action block(s) (see file 'w3g_actions.txt' for details)

 Notes:  o The 'time increments' are only correct for replays played at fastest speed.  o Accumulate all 'time increments' to get the time of current action(s).  o This block is always followed by a 'Random Seed' block (0x22)  o For patch version <= 1.02 this block has the ID 0x1E.  o A detailed description of the action block format and all valid actions can  be found in the seperate document 'w3g_actions.txt'.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x20 - Player chat message (patch version >= 1.07) [ n+4 byte ]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  1 byte - PlayerID (message sender)  1 word - n = number of bytes that follow  1 byte - flags  0x10 for delayed startup screen messages? (see note)  0x20 for normal messages  1 dword - chat mode (not present if flag = 0x10):

Page 15: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 15/46

  0x00 for messages to all players  0x01 for messages to allies  0x02 for messages to observers or referees  0x03+N for messages to specific player N (with N = slotnumber)

  n bytes - zero terminated string containing the text message

 Notes:  o This block was introduced with patch 1.07.  o Only messages send and received by the player who saved the replay are  present.  o Messages to observers are not saved.  o The slot number corresponds to the record number as per section 4.11  starting with zero (first record = slot 0).  o To get the time of the chat command, accumulate all 'time increments' from  the 'TimeSlot' blocks (see above, block 0x1E and 0x1F).

 Notes on chat messages with flag = 0x10:  o Only appears on startup between action block 0x1B and 0x1C.  o The 'chat mode' dword is not present. The message text starts right after  the flag field. The length value reflects this correctly.  o These chat messages do not appear when the replay is watched with WarCraft.  o The messages only appear in custom game replays. Maybe these are chat  messages written in the game startup screen, which were send right before

  the game was started and could not be shown there in time because of lag.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x22 - unknown (Checksum or random number/seed for next frame) [ 6 byte ]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  1 byte - number of bytes following (always 0x04 so far)  1 dword - unknown (very random)

 Notes:  o For patch version <= 1.02 this block has the ID 0x20.  o This message eventually syncs the random seed used for any calculation  within the previous or next frame between all clients.

  It might be a complete gamescene checksum too though.  o This block follows always after a 'TimeSlot' block.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x23 - unknown [ 11 byte ]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Maybe:  1 dword - unknown  1 byte - unknown (always 4?)  1 dword - unknown (random?)  1 byte - unknown (always 0?)

 Notes:  o Very rare.  o Appears in front of a 'LeaveGame' action.

 Examples:  23 4C 0D 00 00 04 0B B0 B1 FC 00 -> "#L........." 3404 4 4239503371 0  23 64 07 00 00 04 AC 34 28 7E 00 -> "#d.....4(~." 1892 4 2116564140 0  23 FB 0D 00 00 04 DD B8 B1 87 00 -> "#.........." 3579 4 2276571357 0  23 D5 15 00 00 04 19 ED 43 72 00 -> "#.......Cr." 5589 4 1917054233 0  23 1B 03 00 00 04 D8 2E 81 4F 00 -> "#........O." 795 4 1333866200 0

Page 16: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 16/46

  23 F2 04 00 00 04 91 7F C6 01 00 -> "#........." 1266 4 29786001 0

  all following back-to-back in a single replay:  23 3A 03 00 00 04 B5 1F DC 80 00 -> "#:........." 826 4 2161909685 0  23 3B 03 00 00 04 DE A7 93 77 00 -> "#;.......w." 827 4 2006165470 0  23 3C 03 00 00 04 A9 A6 78 3B 00 -> "#<......x;." 828 4 997762729 0  23 3D 03 00 00 04 25 87 97 9C 00 -> "#=....%...." 829 4 2627176229 0

TODO: more analysis

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x2F - Forced game end countdown (map is revealed) [ 9 byte ]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  1 dword - mode:  0x00 countdown is running  0x01 countdown is over (end is forced *now*)  1 dword - countdown time in sec

 Notes:  o This block was introduced with patch 1.07.  o Only found in battle.net tournament games which last too long.  o Normally countdown starts with 4:58 and the block is repeated every 30s

  (4:58, 4:28, 3:58, ..., 0:58, 0:28, 0:00, now).  o On first occurence of this block the "fog of war" is turned off  (the complete map is revealed to all player).

===============================================================================6.0 General notes===============================================================================

o It seems that the following things are *not* to be found in the replay:  + the Battle.net realm  + the time/date of the game  + the level/exp/record of the players in a ladder game

o You may add your own data at the end of the replay file - Warcraft III  ignores them (except for official blizzard replays, see section 6.1).  This might be useful e.g. for an replay database tool when storing a  description of the game right with the replay data.

o The saver of the replay is the last player leaving the game. This  'LeaveGame'-Action (see 5.0) is also the very last action of the replay.  This means the player id of the replay saver is the 9th last byte of the  uncompressed replay (so you don't have to parse the action-blocks to get the  name of the replay saver). This method does not work for official Blizzard  replays.

o Warcraft starts showing a replay with the game hosts point of view.

o The game type is not explicitly recorded in the replay:  - there is no difference between AT (arranged team) and RT (random team)  ladder games replay wise  - one can detect team games by the team number in slot records  - one can detect FFA games by all players having different team numbers  and there are more than 2 in the game

o One can start Warcraft with the parameter '-loadfile' to play back a replay

Page 17: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 17/46

  immediately: War3.exe -loadfile "replayfilename"  Before patch 1.14 there was a side effect: the single-player user-name was  automatically changed to 'WorldEdit'.

o There was no patch 1.07, 1.08 and 1.09 for WarCraft III classic.  Patch 1.10 was released after patch 1.06 reflecting the release of  WarCraft III expansion set 'The Frozen Throne'.

o WarCraft III Frozen Throne was shipped with patch version 1.07 but was  immediately patched to version 1.10. There was no patch 1.08 or 1.09.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -6.1 Notes on official Blizzard Replays- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

These replays are automatically obtained by Blizzard during or after high levelladder games and tournament final games. They are available for downloadthrough the official Battle.net web page and show some differences to normalreplays saved by users.

Differences: o The build number (see 2.2) is always zero.

 o The filesize is 132 byte larger than denoted in header (see below).

 o The map record (see 4.4) always reads '01 01 01 F9 01 01 FF FF FF FF'.

 o The values of the unknown PlayerList entry (see 4.9) of all players in the  replay is equal to the LanguageID (see 4.8).

 o The number of SlotRecords (Byte 0x0003 of [GameStartRecord] in section 4.10)  is always zero - there are no slot records (see 4.11) present.

 o The StartSpotCount (see [GameStartRecord] in section 4.10) is always 0xCC.

 o There is a signature block at the end of the replay:

  1 dword : 4E 47 49 53 = 'NGIS' <=> 'SIGN'  128 Byte : signature

Notes: o Since the lack of all slot records, one has to generate these data:  iterate slotNumber from 1 to number of PlayerRecords (see 4.1)  player id = slotNumber  slotstatus = 0x02 (used)  computerflag = 0x00 (human player)  team number = (slotNumber -1) mod 2 (team membership alternates in  PlayerRecord)  color = unknown (player gets random colors)  race = as in PlayerRecord

  computerAI = 0x01 (non computer player)  handicap = 0x64 (100%)

 o Tournament replays are given a unique name using the following scheme:  'YYYYMMDDhhmmxxxxx-TAG-TYPEp.w3g'  where:  YYYY - year of the beginning of the game in greenwitch mean time (GMT)  MM - month ...  DD - day ...  hh - hour ...

Page 18: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 18/46

  mm - minutes ...  xxxxx - numeric ID  TAG - 'W3XP' for FrozenThrone, 'WAR3' for Classic  TYPE - standard or race/map limitations,...  without limitations (day of week):  FRI - friday  SAT - saturday  SUN - sunday  race limitation tournament:  HUM - Human  ORC - Orc  NLF - Nightelf  UND - Undead  RND - Random  map limitation tournament:  CLD - Coldheart  FLD - Floodplains  GNW - Gnollwood  LST - Lost Temple  RCK - Turtle Rock  WET - Wetlands  p - number of players per team

  File name examples:

  20030816204000041-W3XP-SAT1.w3g  Frozen Throne 1on1 tournament on Saturday august 16th  (round started at 20:40 GMT)  20030817222400050-W3XP-SUN2.w3g  Frozen Throne 2on2 tournament on Sunday august 17th  20030820205400081-W3XP-LST1.w3g  TFT 1on1 "Lost Temple"-only tournament on august 20th

o Since one cannot change the name of the replay file, there has to be a  checksum in the signature (or maybe within the replay data itself).

o This feature was officially announced by Blizzard a couple of days after the

  release of patch 1.12. It might have been present in previous versions of  the game though.

TODO: - signature analysis[/CODE]

[CODE]===============================================================================1.0 Introduction===============================================================================

This document describes the format of the actions found in the TimeSlot blocksof the replay (see 'w3g_format.txt' section 5 for details):

0x1F - TimeSlot block (rarely also 0x1E)  1 word - number of bytes that follow  1 word - time increment (milliseconds)  about 250 ms in battle.net  about 100 ms in LAN and single player  n-2 byte - CommandData block(s) (not present if n=2)

For every player which has executed an action during the last time slot thereis at least one 'CommandData' block.

Page 19: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 19/46

CommandData block:  1 byte - PlayerID  1 word - Action block length  n byte - Action block(s) (may contain multiple actions !)

Action block:  1 byte - ActionID (see 2.0)  n byte - action arguments (see 2.0)

Notes:  o The number of 'Action blocks' can only be determined by parsing the actions  up to the denoted Action block length.  o The 'time increments' are only correct for replays played at fastest speed.  o Accumulate all 'time increments' to get the time of current action(s).

TODO: analyse time increments of slow/normal speed

===============================================================================1.1 Standardized APMs===============================================================================

This section defines a standardized Actions-Per-Minute(APM) value.

With it we hope to make APM values more comparable inbetween all current andfuture replay tools out there and coming. Please use it in your tool too :D

The main goal is an easy-to-implement algorithm. This way even simple replaytools should have no difficulties at all to calculate it.

Basic rules: o Only count in-game actions (no map-signals, no chat). o Every counted action increments the player action counter by one. o Do not filter out any player action. o APM = numbers of actions of a player / time this player played.

Accordingly all actions in section 2.0 are marked in the headline:

 [APM+] = Action is counted. [APM?] = Special, please read the notes on this action (0x16, 0x19). [APM-] = Action is not counted.

Additionally you have to pay attention to the pause/unpause actions in order todetermine the played time correctly: Pause game (action 0x01):  o Stop the time at the first occurence of this action  (there might be multiple ones).  o The pause action itself is not counted.  o Do NOT stop counting the actions within a pause  (but skip actions like map signals as usual). Resume game (action 0x02):

  o Resume counting the time at first occurence of this action  (there might be multiple ones).  o Do not count this action itself.

Due to this simple method there are the following inadequacies: o Cancelling a unit/building by pressing Escape key will be counted twice  (Action 0x61 + Action 0x10 with unitid=0x08000D00). o Map signal are uncounted. They are no real in-game actions and can very  easily abused to increase the APM value. o No 'tab' action are counted (since patch 1.14b).

Page 20: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 20/46

  (Prior to patch 1.14b only the last action of a complete cycle through all  subgroups was not counted.)

Keep in mind that for the APM value it is not important, which consequenceswithin the game an action has. It is only significant *how often* it is used.If a player executes a specific action once every minute, it only results ina 1 APM difference at the end.Do you really need a APM precision better than say ±5 APMs ?

Note: o If you decide to develop your own APM system (e.g. by filtering some user  actions) please do *not* call it APM.  Call it TrueAPM, RealAPM, myAPM, UserAPM or something like that instead.

===============================================================================2.0 Action ID's===============================================================================

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x01 - Pause game [ 1 byte ] [APM-]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - no additional data

 Notes:  o Due to lag there can be multiple pause or unpause actions, but they didn't  stack. The first unpause will resume the game, no matter how many pause  actions came before.

  o There can be other actions between pause and resume action  (e.g. map signal action, actions issued before game pausing but delayed  by network latency)

  o The length of the replay (found in replay header) is the effective play  time excluding any pause

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x02 - Resume game [ 1 byte ] [APM-]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - no additional data

 Note:  o See notes for Pause game action

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x03 - Set game speed in single player game (options menu) [ 2 byte ] [APM-]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 byte - game speed:

  0x00 - slow  0x01 - normal  0x02 - fast

 Note:  o Time increments (see 1.0) are only correct for fast speed.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x04 - Increase game speed in single player game (Num+) [ 1 byte ] [APM-]

Page 21: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 21/46

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - no additional data

 Note:  o Time increments (see 1.0) are only correct for fast speed.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x05 - Decrease game speed in single player game (Num-) [ 1 byte ] [APM-]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - no additional data

 Note:  o Time increments (see 1.0) are only correct for fast speed.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x06 - Save game [ n bytes ] [APM-]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - n bytes - savegame name (null terminated string)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x07 - Save game finished [ 5 bytes ] [APM-]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 dword - unknown (always 0x00000001 so far)

 This action is supposed to signal that saving the game finished. It normally follows a 0x06 action.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x10 - Unit/building ability (no additional parameters) [ 15 bytes ] [APM+]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 word - AbilityFlags (see section 3) ('byte' for patch version < 1.13)

 1 dword - ItemID (see section 4)

 1 dword - unknownA (0xFFFFFFFF) (only present for patch version >= 1.07) 1 dword - unknownB (0xFFFFFFFF) (only present for patch version >= 1.07)

 Note:  o For pre v1.07 replays this record is only 6 bytes.

  o For pre v1.13 replays AbilityFlags is a Byte and therefore  the whole block 1 byte smaller.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x11 - Unit/building ability [ 22 bytes ] [APM+]

  (with target position)- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 word - AbilityFlags (see section 3) ('byte' for patch version < 1.13)

 1 dword - ItemID (see section 4)

 1 dword - unknownA (0xFFFFFFFF) (only present for patch version >= 1.07) 1 dword - unknownB (0xFFFFFFFF) (only present for patch version >= 1.07)

 1 dword - target location X

Page 22: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 22/46

 1 dword - target location Y

 Note:  o For pre v1.07 replays this record is only 14 bytes.

  o For pre v1.13 replays AbilityFlags is a Byte and therefore  the whole block 1 byte smaller.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x12 - Unit/building ability [ 30 bytes ] [APM+]  (with target position and target object ID)- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 word - AbilityFlags (see section 3) ('byte' for patch version < 1.13)

 1 dword - ItemID (see section 4)

 1 dword - unknownA (0xFFFFFFFF) (only present for patch version >= 1.07) 1 dword - unknownB (0xFFFFFFFF) (only present for patch version >= 1.07)

 1 dword - target position X coordinate 1 dword - target position Y coordinate

 1 dword - objectID1

 1 dword - objectID2

 objectID1 == objectID2 == FF FF FF FF for no object (e.g. rally on ground)

 Note:  o For pre v1.07 replays this record is only 22 bytes.

  o For pre v1.13 replays AbilityFlags is a Byte and therefore  the whole block 1 byte smaller.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x13 - Give item to Unit / Drop item on ground [ 38 bytes ] [APM+]

  (with target position, object ID A and B)- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 word - AbilityFlags (see section 3) ('byte' for patch version < 1.13)

 1 dword - ItemID (see section 4)

 1 dword - unknownA (0xFFFFFFFF) (only present for patch version >= 1.07) 1 dword - unknownB (0xFFFFFFFF) (only present for patch version >= 1.07)

 1 dword - target location X 1 dword - target location Y

 1 dword - Target_objectID_1

 1 dword - Target_objectID_2

 1 dword - Item_objectID_1 1 dword - Item_objectID_2

 Notes:  o For pre v1.07 replays this record is only 30 bytes.

  o For pre v1.13 replays AbilityFlags is a Byte and therefore  the whole block 1 byte smaller.

Page 23: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 23/46

  o Target_objectID 1 and 2 is 0xFFFFFFFF for ground

 Example: drop potion on ground:  13  40  21 00 0D 00  5B 10 58 C3  97 CE 1B 44  FF FF FF FF  FF FF FF FF  11 2D 00 00  D3 96 00 00

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x14 - Unit/building ability [ 43 bytes ] [APM+]  (with two target positions and two item ID's)- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 word - AbilityFlags (see section 3) ('byte' for patch version < 1.13)

 1 dword - ItemID_A (see section 4)

 1 dword - unknownA (0xFFFFFFFF) (only present for patch version >= 1.07)

 1 dword - unknownB (0xFFFFFFFF) (only present for patch version >= 1.07)

 1 dword - target location A_X 1 dword - target location A_Y

 1 dword - ItemID_B (see section 4)

 9 byte - unknown

 1 dword - target location B_X 1 dword - target location B_Y

 Notes:

  o For pre v1.07 replays this record is only 35 bytes.

  o For pre v1.13 replays AbilityFlags is a Byte and therefore  the whole block 1 byte smaller.

 Examples:

  (human townhall rightclick on tree (tree not direct accessible))  Felwood:  14 00 03000D00 000024C5 0000B844 72745443 40 00100100 000000FF 000024C5 0000B844  . . . . . . . . $ . . . . D r t T C @ . . . . . . . . . . $ . . .. D

  Lordaeron Summer:  14 00 03000D00 0000D8C4 00005044 746C544C 40 00100100 000000FF 0000D8C4 00005044  . . . . . . . . . . . . P D t l T L @ . . . . . . . . . . . . . .P D

  Village-Autumn:  14 00 03000D00 000070C4 00007044 77745446 40 00100100 000000FF 000070C4 00007044

Page 24: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 24/46

  . . . . . . . . p . . . p D w t T F @ . . . . . . . . . . p . . .p D

  Dungeon:  14 00 03000D00 0000A0C3 00009844 68735444 40 00100100 000000FF 0000A0C3 00009844  . . . . . . . . . . . . . D h s T D @ . . . . . . . . . . . . . .. D

  (rightclicks)[==]  14 00 03000D00 0000D845 000000C6 6C6F676E 08 00A05500 0000000F 0000D845 000000C6  . . . . . . . . . E . . . . l o g n . . . U . . . . . . . . E . .. .

  14 00 03000D00 0000C0C4 00001BC6 77745442 40 00100100 000000FF 0000C0C4 00001BC6  . . . . . . . . . . . . . . w t T B @ . . . . . . . . . . . . . .. .

  14 00 03000D00 00008845 0000BE45 746C544C 40 00100100 000000FF 00008845 0000BE45  . . . . . . . . . E . . . E t l T L @ . . . . . . . . . . . E . .. E

  14 00 03000D00 00004AC5 0000C3C5 65746165 08 00905908 00000001 00004AC5 0000C3C5  . . . . . . . . J . . . . . e t a e . . . Y . . . . . . . J . . .. .

  14 00 03000D00 000080C4 0000D845 6C6F6775 08 0090590A 00000001 000080C4 0000D845  . . . . . . . . . . . . . E l o g u . . . Y . . . . . . . . . . .. E

  (attack)[!=]  14 18 0F000D00 BA387FC3 2C6F6FC5 746C544C 40 00100100 000000FF 0000A0C3 00007

4C5  . . . . . . . 8  . , o o . t l T L @ . . . . . . . . . . . . . . t.

  (undead gold)[==]  14 04 6C6F6775 0000F044 00002C45 6C6F676E 08 00A05500 0000000F 0000F044 00002C45  . . l o g u . . . D . . , E l o g n . . . U . . . . . . . . D . ., E"

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x16 - Change Selection (Unit, Building, Area) [ 4+n*8 bytes ] [APM?]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 byte - select mode:  0x01 - add to selection (select)  0x02 - remove from selection (deselect) 1 word - number (n) of units/buildings

 block repeated n times:  1 dword - ObjectID1  1 dword - ObjectID2

Page 25: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 25/46

  (ObjectID1 == ObjectID2 for starting town hall and trees ?)

 Note:  o If one simply selects a new unit then this results in a single 'add to  selection'-action (16 01) preceded by a 'remove from selection'-action  (16 02) for the complete old selection.

 APM-Note:  o Every 'Change Selection' action (both 'select' and 'deselect') increases  the APM counter by one [APM+], BUT:  o Do *not* count a 'select' action that follows *immediately* after a  'deselect' action within the *same* CommandData block.  This is reasonable because mostly all deselect actions in front of select  actions are autogenerated by WarCraft and therefore the whole deselect/  select combo action needs to be counted as 1 action only.  o Example pseudo algorithm:

  FOREACH TimeSlot-block DO  ...

  FOREACH CommandData-block DO  id = ReadPlayerID()  LastActionWasDeselect = FALSE;  ...

  FOREACH Action-block DO  actionid = ReadActionID()  ...  IF (actionid == 0x16) THEN  IF (selectMode == deselect) THEN  countThisActionAsAPM()  LastActionWasDeselect = TRUE;  ELSE  IF (!LastActionWasDeselect) THEN countThisActionAsAPM()  LastActionWasDeselect = FALSE;  ENDIF  ELSE

  LastActionWasDeselect = FALSE;  ENDIF  ...  ENDFOREACH  ...  ENDFOREACH  ...  ENDFOREACH

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x17 - Assign Group Hotkey [ 4+n*8 bytes ] [APM+]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 1 byte - group number (0-9)  the group number is shifted by one:  key '1' is group0, ... , key '9' is group8 and key '0' is group9 1 word - number (n) of items in selection

 block repeated n times:  1 dword - ObjectID1  1 dword - ObjectID2

 Note:

Page 26: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 26/46

  o There is no extra 'add to group' action (Shift-[1..0]). Instead the  whole *new* group is listed with an 'assign group hotkey' action.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x18 - Select Group Hotkey [ 3 bytes ] [APM+]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 byte - group number (0-9)  the group number is shifted by one:  key '1' is group0, ... , key '9' is group8 and key '0' is group9 1 byte - unknown (always 0x03)

 Note:  o There is no deselect action (0x16 02) issued for the previous selection.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x19 - Select Subgroup (patch version >= 1.14b) [ 13 bytes ] [APM?]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 dword - ItemID (see section 4) 1 dword - ObjectID1 (see section 5) 1 dword - ObjectID2

 Notes:

  o Always following a 0x1A-Action (Pre subselection)

  o The ItemID and the ObjectID represents the first unit in the newly  selected subgroup.  This can be used to associate ItemID's with ObjectID's for one unit!

  o Nearly all 'Select Subgroup' actions are autogenerated.

 TODO:  o Find algorithm to detect real 'SelectSubgroup' actions (TAB-key pressed)  for APM counting.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x19 - Select Subgroup (patch version < 1.14b) [ 2 bytes ] [APM?]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 byte - subgroup number (0-11, 0xFF)

 Notes:  o There is a special subgroup action: 0x19 0xFF  It is an auto-generated action in the replay and might mean something  like "update subgroups" (e.g. when a summoned unit disappears or peasant  turns into militia etc.).

  o Most 'select subgroup 0'-actions (0x19 00) are autogenerated too (e.g. if  one selects a subgroup and then selects a completely different unit).

  o Since patch 1.13 nearly all 'Select Subgroup' actions are autogenerated.  Very often WarCraft seems to write a complete subgroup status to the replay.  For every player there is an 'Update Subgroup' action (0x19 0xFF)  followed immediately by a 'Select Subgroup' action where the subgroup  number represents the current subgroup status. This status does not always  correspond to the currently selected subgroup of this player. (TODO: why?)

 APM-Note:  o Only count this action if 'subgroup number' is neither 0x00 nor 0xFF.

Page 27: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 27/46

  o Do *not* count a 'Select Subgroup' action that follows *immediately* after  a 'Update Subgroup' action within the *same* CommandData block.  (Adapt the example pseudo algorithm of action 0x16.)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x1A - Pre Subselection [ 1 byte ] [APM-]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - no additional data

 Notes:  o Mostly followed by a 0x19-Action (Select Subgroup) but not always

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x1B - Unknown [ 10 bytes ] [APM-]0x1A for WarCraft III patch version <= 1.14b- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 byte - unknown (always 0x01 so far) 1 dword - unknown (ObjectID1?) 1 dword - unknown (ObjectID2?)

 Notes:

  o Only in scenarios, maybe a trigger-related command

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x1C - Select Ground Item [ 10 bytes ] [APM+]0x1B for WarCraft III patch version <= 1.14b- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 byte - unknown (flags? always 0x04 so far) 1 dword - ObjectID1 1 dword - ObjectID2

 Notes:  o Leftclick on an item laying on the ground (selecting it).

  o This action is normally preceded by a deselect (0x16 02) and subgroup  update (0x19 FF) action.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x1D - Cancel hero revival [ 9 bytes ] [APM+]0x1C for WarCraft III patch version <= 1.14b- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 dword - UnitID1 (always a hero) 1 dword - UnitID2 (always a hero)

 Notes:

  o This action is only present in LAN/Multiplayer games.

  o It is issued for every canceled hero revival - regardless which spot  in the "build/revival queue" the hero had.

  o It is not issued for canceling hero training. There you get the "usual"  "61 10 40 08 00 0D 00 ..." action sequence.

  o This action is normally preceded by a deselect (0x16 02) and subgroup  update (0x19 FF) action.

Page 28: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 28/46

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x1E - Remove unit from building queue [ 6 bytes ] [APM+]0x1D for WarCraft III patch version <= 1.14b- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 byte - SlotNr (0 = unit currently build,  1 = first unit in queue,  2 = second unit in queue,  ...  6 = last unit in queue) 1 dword - ItemID (StringID for the canceled unit)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x21 - unknown [ 9 bytes ] [APM-]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 dword - unknown [A] (0x000064F0 so far) 1 dword - unknown [B] (0x000064F0 so far)

 Note:  o Very very rare action block.  o Found in replays with patch version 1.04 and 1.05.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x20, 0x22-0x32 - Single Player Cheats [ * bytes ] [APM-]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 Action | Size | Cheat | Description -------+--------+--------------------------+-------------------------------  0x20 | 1 Byte | TheDudeAbides | Fast cooldown  0x22 | 1 Byte | SomebodySetUpUsTheBomb | Instant defeat  0x23 | 1 Byte | WarpTen | Speeds construction  0x24 | 1 Byte | IocainePowder | Fast Death/Decay  0x25 | 1 Byte | PointBreak | Removes food limit  0x26 | 1 Byte | WhosYourDaddy | God mode

  0x27 | 6 Byte | KeyserSoze [amount] | Gives you X Gold  0x28 | 6 Byte | LeafitToMe [amount] | Gives you X Lumber  0x29 | 1 Byte | ThereIsNoSpoon | Unlimited Mana  0x2A | 1 Byte | StrengthAndHonor | No defeat  0x2B | 1 Byte | itvexesme | Disable victory conditions  0x2C | 1 Byte | WhoIsJohnGalt | Enable research  0x2D | 6 Byte | GreedIsGood [amount] | Gives you X Gold and Lumber  0x2E | 5 Byte | DayLightSavings [time] | Set a time of day  0x2F | 1 Byte | ISeeDeadPeople | Remove fog of war  0x30 | 1 Byte | Synergy | Disable tech tree requirements  0x31 | 1 Byte | SharpAndShiny | Research upgrades  0x32 | 1 Byte | AllYourBaseAreBelongToUs | Instant victory  | | |

  ? | | Motherland [race][level] | Campain level jump

 Additional Parameter:  o Action 0x27,0x28,0x2D: Adding Resources  1 byte - unknown (always 0xFF)  1 dword - (signed) amount of ressources

  o Action 0x2E: Set time of day  1 float - time (IEEE single precision float, 4Bytes)

Page 29: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 29/46

 Notes:  o Action 0x21 is not a cheat (see action above).  o Cheat "TenthLevelTaurenChieftain" (changes background music) does not  appear in replays.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x50 - Change ally options [ 6 bytes ] [APM-]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 byte - player slot number (0-11)(including computer AI players) 1 dword - flags  bit 0-4 - set if allied with player (value 0x1F)  bit 5 - set if vision shared with player (value 0x20)  bit 6 - set if unit control is shared with player (value 0x40)  bit 10 - set if "allied victory" is ticked (value 0x0400)  (for patch version >= 1.07, see note)

 Notes:  o All other bits not listed above are unused (zero).

  o The parameter to this action always reflects the current status of all  options.

  o There is a action for every player where at least one option was changed.

  o Changing the "allied victory" option results in an action for every player  in game (no matter if ally or non-ally).

  o On patch version <= 1.06 the "allied victory" option was represented by  bit 9 (value 0x0200).

  o Shared unit control is linked to both shared vision and ally up.  If either of them is unticked shared unit control is disabled too.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x51 - Transfer resources [ 10 bytes ] [APM-]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 byte - player slot number (0-11)(including computer AI players) 1 dword - Gold to transfer 1 dword - Lumber to transfer

 Note:  o Transfering resources to multiple players results in an action for every  involved player.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x60 - Map trigger chat command (?) [ n bytes ] [APM-]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 dword - unknownA

 1 dword - unknownB n bytes - null terminated string (chat command or trigger name)

 Note:  o unknownA == unknownB so far

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x61 - ESC pressed [ 1 byte ] [APM+]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Page 30: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 30/46

 no additional data

 Notes:  o This action often precedes cancel build/train actions.

  o But it is also found seperately (e.g. when leaving the 'choose skill'  subdialog of heros using ESC).

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x62 - Scenario Trigger [ 13 bytes ] [APM-]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 dword - unknown [A] 1 dword - unknown [B] 1 dword - unknown (counter) (only present for patch version >= 1.07)

 Notes:  o A=B in all replays so far.

  o Probably sync action for custom map timer triggers.

  o The third dword counts upwards in TFT azure tower defense map games.

  o The third dword was missing for replays with patch version <= 1.06

  o For pre v1.07 replays this record is only 9 bytes.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x66 - Enter choose hero skill submenu [ 1 byte ] [APM+]0x65 for WarCraft III patch version <= 1.06- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - no additional data

 Notes:  o This action is issued if you select a hero and enter his 'choose skill'  submenu. It does not matter wether one actually can choose a new skill

  (because of level up) or not.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x67 - Enter choose building submenu [ 1 byte ] [APM+]0x66 for WarCraft III patch version <= 1.06- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - no additional data

 Notes:  o This action is issued if you select a worker (peon, peasant, acolyte, wisp)  and enter the build submenu to choose a building to create.  It does not matter whether one really builds something.

  o It is usually followed by a build action (0x11) or a ESC action (0x61).

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x68 - Minimap signal (ping) [ 13 bytes ] [APM-]0x67 for WarCraft III patch version <= 1.06- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 dword - Location X 1 dword - Location Y

Page 31: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 31/46

 1 dword - unknown (00 00 A0 40)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x69 - Continue Game (BlockB) [ 17 bytes ] [APM-]0x68 for WarCraft III patch version <= 1.06- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 dword - unknown [C] 1 dword - unknown [D] 1 dword - unknown [A] 1 dword - unknown [B]

 Notes:  o This action is issued if the game winner chooses 'continue game' or  if 'observer on defeat' is enabled and a loser chooses 'continue game'.

  o Always combined with 0x6A action (see below).

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x6A - Continue Game (BlockA) [ 17 bytes ] [APM-]0x69 for WarCraft III patch version <= 1.06- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 dword - unknown [A]

 1 dword - unknown [B] 1 dword - unknown [C] 1 dword - unknown [D]

 Notes:  o This action is issued if the game winner chooses 'continue game' or  if 'observer on defeat' is enabled and loser choose 'continue game'.

  o Only present for replay saver, 'continue game' of other players results in  normal 'leave game' action.

  o Always followed by a 0x69 action (see above) with data [C][D][A][B].

  o Parameters [A][B] look similar to those of 0x62 action.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0x75 - Unknown [ 2 bytes ] [APM-]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 byte - unknown

 Notes:  o Only in scenarios, maybe a trigger-related command

===============================================================================

3.0 AbilityFlags===============================================================================

Ability flags represent additional attributes of an action.E.g.: If bit 0 is set the action was queued (by pressing the shift key) and  will only be executed after the previous action was finished.

Unfortunately Warcraft sets some of the bits automatically, even when theplayer didn't press a modifier button/key (e.g. subgroup command flag).

Page 32: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 32/46

The Flag item used to have BYTE size until patch 1.12. With patch 1.13 itwas extended to a WORD.Flag value is composed of the following values

  0x0001 - queue command (shift held down)  0x0002 - ? (apply to all units in subgroup ?)  0x0004 - ? (area effect ?)  0x0008 - group command (all units in current selection)  0x0010 - move group without formation (formation disabled)  0x0020 - ?  0x0040 - ctrl held down (subgroup command)  sometimes automatically added  (e.g. subgroup worker -> rightclick mine without ctrl)

 new since patch 1.13  0x0100 - autocast on/off command

Examples:  0x42 - rightclick item in inventory  0x44 - use ability (revive hero, cast spell)  0x48 - ctrl group command (group peasants -> goldmine)

  0x44 - detonate Wisp (area effect unit ability ?)

  0x4C - use WON (area effect item ?)  0x00 - use ability (Stop, Hold, uproot, Mirrorimage etc.)  0x40 - Train unit / Research / Buy (resources changed?)  (Orc burrow - combatpositions)  0x42 - use special ability (that changes unit stats ???)  (heros: skill ability, HU townhall: call to arms)  0x44 - Summon (summon units and train heros)

TODO: further research, verification

===============================================================================4.0 ItemID's

===============================================================================

There are two types of ItemID's - alphanumeric and stringencoded: o Both types are 4 Bytes long. o Stringencoded ID's contain four valid characters. o Alphanumeric ID's have always the format: ?? ?? 0D 00

===============================================================================4.1 Stringencoded ItemID's===============================================================================

Stringencoded ItemID's are used for:

 o Constructing a building o Upgrading a building (Tier2, Tier3, tower upgrades) o Training units/heros o Skilling hero abilities o Researching abilities/skills/spells o Researching upgrades o Buying items/merc./heros

Stringencoded ID's contain four valid characters, giving a representative namefor the unit/hero/item/ability.

Page 33: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 33/46

Blizzard used some kind of naming convention for some things:The lowbyte (little Endian style) of the string may mean:  'A' - Hero ability

  'e' - Night Elf unit  'E' - Night Elf hero

  'h' - Human unit  'H' - Human hero

  'o' - Orc unit  'O' - Orc hero

  'R' - Research item

  'u' - Undead unit  'U' - Undead hero

For Hero abilities ('A') the next byte denotes the race (E=elf,H=human,O=orc,U=undead).For Research items ('R') the next byte denotes the race (e=elf,h=human,o=orc,u=undead).

Shop items and mercenaries don't fit into this naming sceme - e.g. some thingsstart with a 'h'. But the hole string is always unequivocal.

A complete list of string encoded ID's used can be found in the file  "war3.mpq/Scripts/common.ai" (units & buildings)and in the files  "war3.mpq/Units/*Strings.txt" (units, abilities, upgrades, items)in your WarCraft directory.

Even more information (including gold cost etc.) about the String ID's can be foundin the "war3.mpq/Units/*.slk" data files.

Following are some example ID's:

  ewsp - Elf Wisp  esen - Elf Huntress (Sentinel?)  etoa - Elf tree of ages (tier2)  Resm - Research Elf Melee Attack+1  opeo - Orc peon  ostr - Orc stronghold (tier2)  uaco - UD acolyte  AOsf - Ability Orc: shadow wolves  AOmi - Ability Orc: mirror image  Obla - Orc Blademaster  Ofar - Orc Farseer

  Otch - Orc Tauren Chieftain  wneg - wand of negation (WON)  gemt - gem of true seeing  edob - Elf huntress hall  emow - Elf moon well  oalt - Orc altar  otrb - Orc burrow  usep - UD crypt  uzig - UD ziggurat

Page 34: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 34/46

===============================================================================4.2 Numeric ItemID's===============================================================================

Numeric ItemID's are only used on EXECUTION of abilities/spells.(e.g. hero spells, unit spells, autocast on/off)

Alphanumeric IDs have always the format: ?? ?? 0D 00

Following is a list of alphanumeric ID's found so far:

  03 00 0D 00 - rightclick  04 00 0D 00 - stop

  08 00 0D 00 - cancel (train, research) (often preceded by an ESC action 0x61)

  0C 00 0D 00 - set rally point

  0F 00 0D 00 - attack  10 00 0D 00 - attack ground (e.g. Orc Catapult) [11-40-ID-ClickX/Y]

  12 00 0D 00 - move unit

  16 00 0D 00 - patrol

  19 00 0D 00 - hold position

  - - - - - -  21 00 0D 00 - give away item (from inventory to unit or ground) [13-40-ID-ClickX/Y-UnitID-ItemID]  - - - - - -  22 00 0D 00 - swap item place 7 (slot of item to swap with!)  23 00 0D 00 - swap item place 8  24 00 0D 00 - swap item place 4

  25 00 0D 00 - swap item place 5  26 00 0D 00 - swap item place 1  27 00 0D 00 - swap item place 2  - - - - - -  28 00 0D 00 - use item place 7  29 00 0D 00 - use item place 8  2A 00 0D 00 - use item place 4  2B 00 0D 00 - use item place 5  2C 00 0D 00 - use item place 1  2D 00 0D 00 - use item place 2  - - - - - -

  31 00 0D 00 - return resources (tested with ghoul with lumber)

  32 00 0D 00 - mine (ghoul -> lumber)

  37 00 0D 00 - use ability: reveal area (N goblin laboratory) [11-40-ID-ClickX/Y]  - - - - - -  38 00 0D 00 - use ability: repair (HU peasant, Orc peon) [12-40-ID-ClickX/Y-UnitID]  39 00 0D 00 - enable autocast: repair (HU peasant, Orc peon) [10-42-ID]  3A 00 0D 00 - disable autocast: repair (HU peasant, Orc peon) [

Page 35: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 35/46

10-42-ID]  - - - - - -  3B 00 0D 00 - revive hero (first of 1 or more dead heros) [12-44-ID-ClickX/Y-UnitID]  3C 00 0D 00 - revive hero (second of 2 or more dead heros) [12-44-ID-ClickX/Y-UnitID]  3D 00 0D 00 - revive hero (third of 3 or more dead heros) [12-44-ID-ClickX/Y-UnitID]  3E 00 0D 00 - revive hero (fourth of 4 or more dead heros) [12-44-ID-ClickX/Y-UnitID]  3F 00 0D 00 - revive hero (fifth of 5 dead heros) [12-44-ID-ClickX/Y-UnitID]  - - - - - -

  48 00 0D 00 - use ability: kaboom (Goblin sapper) [12-44-ID-ClickX/Y-TargetID] [Action14]  49 00 0D 00 - enable autocast: kaboom (Goblin sapper) [10-42-ID]  4A 00 0D 00 - disable autocast: kaboom (Goblin sapper) [10-42-ID]

  - - - - - -  4E 00 0D 00 - load unit (NE mine/Zepellin) [12-44-ID-ClickX/Y-TargetID]

  4F 00 0D 00 - remove single unit (click unit) (NE mine/Zepellin) [12-02-ID-ClickX/Y-TargetID]  50 00 0D 00 - unload all units (NE mine/Zepellin) [12-40-ID-ClickX/Y-TargetID] [Action11]  51 00 0D 00 - all wisp exit mine (button) (NE gold mine) [10-40-ID]  - - - - - -

  53 00 0D 00 - enable autocast: load corpses (UD: meat wagon) [10-42-ID]  54 00 0D 00 - disable autocast: load corpses (UD: meat wagon) [10-42-ID]  55 00 0D 00 - use ability: load corpses (UD: meat wagon) [

10-40-ID]  56 00 0D 00 - use ability: unload corpses (UD: meat wagon) [10-40-ID]  57 00 0D 00 - use ability: enable defend (HU footman) [10-42-ID]  58 00 0D 00 - use ability: disable defend (HU footman) [10-42-ID]  59 00 0D 00 - use ability: area dispell (Hu priest) [11-44-ID-ClickX/Y]

  5C 00 0D 00 - use ability: flare (Hu Mortar team) [11-44-ID-ClickX/Y]

  5F 00 0D 00 - use ability: heal (Hu priest) [12-44-ID-ClickX/Y-TargetID]  60 00 0D 00 - enable autocast heal (Hu priest) [10-42-ID]  61 00 0D 00 - disable autocast heal (Hu priest) [10-42-ID]  62 00 0D 00 - use ability: inner fire (Hu priest) [12-44-ID-ClickX/Y-TargetID]  63 00 0D 00 - enable autocast inner fire (Hu priest) [10-42-ID]

Page 36: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 36/46

  64 00 0D 00 - disable autocast inner fire (Hu priest) [10-42-ID]  65 00 0D 00 - use ability: invisibility (Hu sorcress) [12-44-ID-ClickX/Y-TargetID]

  68 00 0D 00 - use ability: call to arms (Hu peasant) [10-42-ID]  69 00 0D 00 - use ability: return to work (Hu militia) [10-42-ID]  6A 00 0D 00 - use ability: polymorph (Hu sorcress) [12-44-ID-ClickX/Y-TargetID]  6B 00 0D 00 - use ability: slow (Hu sorcress) [12-44-ID-ClickX/Y-TargetID]  6C 00 0D 00 - enable autocast slow (Hu sorcress) [10-42-ID]  6D 00 0D 00 - disable autocast slow (Hu sorcress) [10-42-ID]

  72 00 0D 00 - call to arms (Hu townhall)  73 00 0D 00 - return to work (Hu townhall)

  76 00 0D 00 - use ability: avatar (Hu Mountain King ultimate) [10-40-ID]

  79 00 0D 00 - use ability: blizzard (Hu Archmage) [11-44-ID-ClickX/Y] [11-5C-ID-ClickX/Y]  7A 00 0D 00 - use ability: divine shield (Hu Paladin) [10-40-ID]  7B 00 0D 00 - use ability: divine shield - turn off(Hu Paladin) [10-40-ID]  7C 00 0D 00 - use ability: holy light (Hu Paladin) [12-44-ID-ClickX/Y-TargetID]  7D 00 0D 00 - use ability: mass teleportation (Hu Archmage) [12-44-ID-ClickX/Y-TargetID]  7E 00 0D 00 - use ability: revive (Hu Paladin ultimate) [10-44-ID]  7F 00 0D 00 - use ability: storm bolt (Hu Mountain King) [

12-44-ID-ClickX/Y-TargetID]  80 00 0D 00 - use ability: clap (Hu Mountain King) [10-40-ID]  81 00 0D 00 - use ability: summon water elemental (Hu Archmage) [10-44-ID]

  - - - - - -  83 00 0D 00 - peons into combat positions (Orc Burrow)  (p1.07) 84 00 0D 00 - Berserk (Orc troll berserker) [10- ]  85 00 0D 00 - use ability: bloodlust (Orc Shaman) [12-44-ID-ClickX/Y-TargetID]  86 00 0D 00 - enable autocast bloodlust (Orc Shaman) [

10-42-ID]  87 00 0D 00 - disable autocast bloodlust (Orc Shaman) [10-42-ID]  88 00 0D 00 - use ability: devour (Orc Kodo beast) [12-44-ID-ClickX/Y-TargetID]  89 00 0D 00 - use ability: sentry ward (Orc Witch Doctor) [11-44-ID-ClickX/Y]  8A 00 0D 00 - use ability: entangle (Orc Raider) [12-44-ID-ClickX/Y-TargetID]

Page 37: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 37/46

  8D 00 0D 00 - use ability: healing ward (Orc Witch Doctor) [11-44-ID-ClickX/Y]  8E 00 0D 00 - use ability: lightning shield (Orc Shaman) [12-44-ID-ClickX/Y-TargetID]  8F 00 0D 00 - use ability: purge (Orc Shaman) [12-44-ID-ClickX/Y-TargetID]

  91 00 0D 00 - return to work (Orc Burrow)  92 00 0D 00 - use ability: stasis trap (Orc Witch Doctor) [11-44-ID-ClickX/Y]

  97 00 0D 00 - use ability: chain lightning (Orc Farseer) [12-44-ID-ClickX/Y-TargetID]

  99 00 0D 00 - use ability: earthquake (Orc Farseer ultimate) [11-44-ID-ClickX/Y]  9A 00 0D 00 - use ability: farsight (Orc Farseer) [11-44-ID-ClickX/Y]  9B 00 0D 00 - use ability: mirror image (Orc Blademaster)

  9D 00 0D 00 - use ability: shockwave (Orc Tauren Chieftain) [12-44-ID-ClickX/Y-TargetID] [14- ]  9E 00 0D 00 - use ability: shadow wolves (Orc Farseer)  9F 00 0D 00 - use ability: war stomp (Orc Tauren Chieftain) [

10-40-ID]  A0 00 0D 00 - use ability: blade storm (Orc Blademaster ultimate) [10-42-ID]  A1 00 0D 00 - use ability: wind walk (Orc Blademaster) [10-42-ID]

  - - - - - -  A3 00 0D 00 - use ability: shadowmeld (NE females)  A4 00 0D 00 - use ability: dispell magic (NE Dryad) [12-44-ID-ClickX/Y-TargetID]  A5 00 0D 00 - enable autocast: dispell magic (NE Dryad) [10-42-ID]  A6 00 0D 00 - disable autocast: dispell magic (NE Dryad) [

10-42-ID]

  AA 00 0D 00 - use ability: transform: DotC -> bear (NE DotC) [10-42-ID] (followed by [19-FF])  AB 00 0D 00 - use ability: transform: bear -> DotC (NE DotC) [10-42-ID] (followed by [19-FF])

  AE 00 0D 00 - use ability: pick up archer (NE hippogryph) [12-44-ID-ClickX/Y-TargetID]  AF 00 0D 00 - use ability: mount hippogryph (NE archer) [12-44-ID-ClickX/Y-TargetID]  B0 00 0D 00 - use ability: cyclone (NE DotT) [12-44-ID-ClickX/Y-TargetID]

  B1 00 0D 00 - use ability: detonate (NE Wisp)  B2 00 0D 00 - use ability: eat tree (NE Ancient) [12-44-ID-ClickX/Y-TargetID] [14- ]  B3 00 0D 00 - use ability: entangle goldmine (NE Tree of Life) [12-40-ID-ClickX/Y-TargetID] [14- ]

  B5 00 0D 00 - use ability: feary fire (NE DotT) [12-44-ID-ClickX/Y-TargetID]  B6 00 0D 00 - enable autocast: feary fire (NE DotT) [10-42-ID]

Page 38: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 38/46

  B7 00 0D 00 - disable autocast: feary fire (NE DotT) [10-42-ID]

  BB 00 0D 00 - use ability: transform into crow form (NE DotT) [10-42-ID] (followed by [19-FF])  BC 00 0D 00 - use ability: transform back from crow form (NE DotT) [10-42-ID] (followed by [19-FF])  BD 00 0D 00 - use ability: replenish life/mana (NE Moon well) [12-44-ID-ClickX/Y-TargetID]  BE 00 0D 00 - enable autocast: replenish life/mana (NE Moon well) [10-42-ID]  BF 00 0D 00 - disable autocast: replenish life/mana (NE Moon well) [10-42-ID]  C0 00 0D 00 - use ability: rejuvenation (NE DotC) [12-44-ID-ClickX/Y-TargetID]  C1 00 0D 00 - use ability: renew (repair) (NE Wisp) [12-40-ID-ClickX/Y-UnitID]  C2 00 0D 00 - enable autocast: renew (repair) (NE Wisp) [10-42-ID]  C3 00 0D 00 - disable autocast: renew (repair) (NE Wisp) [10-42-ID]  C4 00 0D 00 - use ability: roar (NE DotC) [10-44-ID]  C5 00 0D 00 - use ability: root (NE Ancient) [

11-04-ID-ClickX/Y]  C6 00 0D 00 - use ability: uproot (NE Ancient) [10-40-ID]

  CB 00 0D 00 - use ability: entangling roots (NE KotG) [12-44-ID-ClickX/Y-TargetID]

  CD 00 0D 00 - use ability: searing arrow (NE PotM) [12-44-ID-ClickX/Y-TargetID]  CE 00 0D 00 - enable autocast: searing arrow (NE PotM) [10-42-ID]  CF 01 0D 00 - disable autocast: searing arrow (NE PotM) [10-42-ID]

  D0 00 0D 00 - use ability: summon treants (NE KotG)  D1 00 0D 00 - use ability: immolation ON (NE Daemon Hunter) [10-42-ID]  D2 00 0D 00 - use ability: immolation OFF (NE Daemon Hunter) [10-42-ID]  D3 00 0D 00 - use ability: manaburn (NE Daemon Hunter) [12-44-ID-ClickX/Y-TargetID]  D4 00 0D 00 - use ability: metamorphosis ((NE DH ultimate) [10-40-ID]  D5 00 0D 00 - use ability: scout owl (NE PotM) [10-44-ID]  D6 00 0D 00 - use ability: sentinel (NE huntress) [12-5C-ID-ClickX/Y-TargetID] [14- ]

  D7 00 0D 00 - use ability: starfall (NE PotM ultimate) [10-40-ID]  D8 00 0D 00 - use ability: tranquility (NE KotG ultimate) [10-40-ID]

  - - - - - -  DA 00 0D 00 - use ability: anti magic shell (UD Banshee) [12-44-ID-ClickX/Y-TargetID]

  DC 00 0D 00 - use ability: cannibalize (UD Ghoul) [

Page 39: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 39/46

10-40-ID]  DD 00 0D 00 - use ability: cripple (UD Necromancer) [12-44-ID-ClickX/Y-TargetID]  DE 00 0D 00 - use ability: curse (UD Banshee) [12-44-ID-ClickX/Y-TargetID]  DF 00 0D 00 - enable autocast: curse (UD Banshee) [10-42-ID]  E0 00 0D 00 - disable autocast: curse (UD Banshee) [10-42-ID]

  E4 00 0D 00 - use ability: possession (UD Banshee) [12-44-ID-ClickX/Y-TargetID]

  E6 00 0D 00 - enable autocast: raise skeletons (UD Necromancer) [10-42-ID]  E7 00 0D 00 - disable autocast: raise skeletons (UD Necromancer) [10-42-ID]  E8 00 0D 00 - use ability: raise skeletons (UD Necromancer) [10-40-ID]  E9 00 0D 00 - use ability: sacrifice (UD Acolyte button) [12-44-ID-ClickX/Y-UnitID]  EA 00 0D 00 - use ability: restore (repair) (UD Acolyte) [12-40-ID-ClickX/Y-UnitID]  EB 00 0D 00 - enable autocast: restore (repair) (UD Acolyte) [

10-42-ID]  EC 00 0D 00 - disable autocast: restore (repair) (UD Acolyte) [10-42-ID]  ED 00 0D 00 - use ability: sacrifice (Sacrificial Pit's button) [12-44-ID-ClickX/Y-UnitID]  EE 00 0D 00 - transform: gargoyle -> stone (UD Gargoyle) [10-42-ID] (followed by a [19-FF])  EF 00 0D 00 - transform: stone -> gargoyle (UD Gargoyle) [10-42-ID] (followed by a [19-FF])

  F1 00 0D 00 - use ability: unholy frenzy (UD Necromancer) [12-44-ID-ClickX/Y-TargetID]  F2 00 0D 00 - use ability: unsummon (UD Acolyte) [

12-44-ID-ClickX/Y-TargetID]  F3 00 0D 00 - use ability: web (UD Crypt fiend) [12-44-ID-ClickX/Y-TargetID]  F4 00 0D 00 - enable autocast: web (UD Crypt fiend) [10-42-ID]  F5 00 0D 00 - disable autocast: web (UD Crypt fiend) [10-42-ID]

  F9 00 0D 00 - use ability: animate dead (UD DeathKnight ultimate) [10-44-ID]  FA 00 0D 00 - use ability: swarm (UD Dreadlord) [12-44-ID-ClickX/Y-TargetID]  FB 00 0D 00 - use ability: dark ritual (UD Lich) [

12-44-ID-ClickX/Y-TargetID]

  FD 00 0D 00 - use ability: death and decay (UD Lich ultimate) [11-44-ID-ClickX/Y]  FE 00 0D 00 - use ability: death coil (UD DeathKnight) [12-44-ID-ClickX/Y-TargetID]  FF 00 0D 00 - use ability: death pact (UD DeathKnight) [12-44-ID-ClickX/Y-TargetID]  00 01 0D 00 - use ability: Inferno (UD Dreadlord ultimate) [11-44-ID-ClickX/Y]

Page 40: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 40/46

  01 01 0D 00 - use ability: frost armor (UD Lich) [12-44-ID-ClickX/Y-TargetID]  02 01 0D 00 - use ability: frost nova (UD Lich) [12-44-ID-ClickX/Y-TargetID]  03 01 0D 00 - use ability: sleep (UD Dreadlord) [12-44-ID-ClickX/Y-TargetID]  - - - - - -  04 01 0D 00 - use ability: dark conversion (N Malganis) [12-44-ID-ClickX/Y-TargetID]  05 01 0D 00 - use ability: Dark portal (N Archimonde) [11-44-ID-ClickX/Y]  06 01 0D 00 - use ability: Finger of death (N Archimonde) [12-44-ID-ClickX/Y-TargetID]  07 01 0D 00 - use ability: Firebolt (N Warlock) [12-44-ID-ClickX/Y-TargetID]

  (p1.07) 0E 01 0D 00 - use ability: Rain of Fire (Hero: Pit Lord) [11-44-ID-ClickX/Y]  use ability: Chaos rain (Archimonde) [11-44-ID-ClickX/Y]  use ability: Fire rain (daemonic statue) [11-44-ID-ClickX/Y]

  12 01 0D 00 - use ability: soul preservation (N Malganis) [

12-44-ID-ClickX/Y-TargetID]  13 01 0D 00 - use ability: cold arrows (N Sylvana) [12-44-ID-ClickX/Y-TargetID]  14 01 0D 00 - enable autocast: cold arrows (N Sylvana) [10-42-ID]  15 01 0D 00 - disable autocast: cold arrows (N Sylvana) [10-42-ID]  16 01 0D 00 - use ability: animate dead (N Satyr Hellcaller) [10-40-ID]  17 01 0D 00 - use ability: devour (N Storm Wyrm) [12-44-ID-ClickX/Y-TargetID]  18 01 0D 00 - use ability: heal (N Troll Shadowpriest) [12-44-ID-ClickX/Y-TargetID]

  19 01 0D 00 - enable autocast: heal (N Troll Shadowpriest) [10-42-ID]  1A 01 0D 00 - disable autocast: heal (N Troll Shadowpriest) [10-42-ID]

  1C 01 0D 00 - use ability: creep storm bolt (N Stone Golem) [12-44-ID-ClickX/Y-TargetID] [14- ]  1D 01 0D 00 - use ability: creep thunder clap (N Granit Golem) [10-40-ID]

  (p1.07) 2E 01 0D 00 - use ability: reveal (HU Arcane Tower) [11-]

  - - - - - -  E9 01 0D 00 - enable autocast frost armor (UD Lich) [10-42-ID] (added patch 1.03) (<p1.07) EA 01 0D 00 - disable autocast frost armor (UD Lich) [10-42-ID] (added patch 1.03)  (p1.07) EA 01 0D 00 - enable autocast frost armor (UD Lich) [10-42-ID]  (p1.07) EB 01 0D 00 - disable autocast frost armor (UD Lich) [10- ]

Page 41: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 41/46

  all unitIDs below are introduced with patch 1.07:

  EE 01 0D 00 - revive first dead hero on tavern [12- ]  EF 01 0D 00 - revive second dead hero on tavern [12- ]  F0 01 0D 00 - revive third dead hero on tavern [12- ]  F1 01 0D 00 - revive 4th dead hero on tavern [12- ]  F2 01 0D 00 - revive 5th dead hero on tavern [12- ]

  - - - - - -  F9 01 0D 00 - Cloud (HU dragonhawk rider) [11- ]  FA 01 0D 00 - Control Magic (HU spell breaker) [12- ]

  00 02 0D 00 - Aerial Shackles (HU dragonhawk rider) [12- ]

  03 02 0D 00 - Spell Steal (HU spell breaker) [12- ]

  04 02 0D 00 - enable autocast: Spell Steal (HU spell breaker) [10- ]  05 02 0D 00 - disable autocast: Spell Steal (HU spell breaker) [10- ]  06 02 0D 00 - Banish (HU blood mage) [12- ]  07 02 0D 00 - Siphon Mana (HU blood mage / Dark Ranger) [12- ]  08 02 0D 00 - Flame Strike (HU blood mage) [11- ]  09 02 0D 00 - Phoenix (HU blood mage ultimate) [10- ]  - - - - - -

  0A 02 0D 00 - Ancestral Spirit (Orc spirit walker) [10- ]

  0D 02 0D 00 - transform to Corporeal Form (Orc spirit walker) [10- ]  0E 02 0D 00 - transform to Ethereal Form (Orc spirit walker) [10- ]

  13 02 0D 00 - spirit link (Orc spirit walker) [12- ]  14 02 0D 00 - Unstable Concoction (Orc troll batrider) [12- ]  15 02 0D 00 - Healing Wave (Orc shadow hunter) [

12- ]  16 02 0D 00 - Hex (Orc shadow hunter) [12- ]  17 02 0D 00 - Big Bad Voodoo (Orc shadow hunter ultimate) [10- ]  18 02 0D 00 - Serpent Ward (Orc shadow hunter) [11- ]

  - - - - - -  1C 02 0D 00 - build Hippogryph Rider (NE archer / hippogryph) [

Page 42: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 42/46

10- ]  1D 02 0D 00 - separate Archer (NE hippograph raider) [10- ]

  1F 02 0D 00 - War Club (NE mountain giant) [12- ]  20 02 0D 00 - Mana Flare (NE faerie dragon) [10- ]  21 02 0D 00 - Mana Flare (NE faerie dragon) [10- ]  22 02 0D 00 - Phase Shift (NE faerie dragon) [10- ]  23 02 0D 00 - enable autocast: Phase Shift (NE faerie dragon) [10- ]  24 02 0D 00 - disable autocast: Phase Shift (NE faerie dragon) [10- ]

  28 02 0D 00 - Taunt (NE mountain giant) [10- ]

  2A 02 0D 00 - enable autocast: Spirit of Vengeance (NE vengeance ultimate) [10- ]  2B 02 0D 00 - disable autocast: Spirit of Vengeance (NE vengeance ultimate) [10- ]

  2C 02 0D 00 - Spirit of Vengeance (NE vengeance ultimate) [10- ]  2D 02 0D 00 - Blink (NE warden) [11- ]  2E 02 0D 00 - Fan of Knives (NE warden) [10- ]  2F 02 0D 00 - Shadow Strike (NE warden) [12- ]  30 02 0D 00 - Vengeance (NE warden ultimate) [10- ]  - - - - - -  31 02 0D 00 - Absorb Mana (UD destroyer) [12- ]

  33 02 0D 00 - morph to Destroyer (UD obsidian statue) [10- ]

  35 02 0D 00 - Burrow (UD crypt fiend / carrion beetle) [10- ]  36 02 0D 00 - Unburrow (UD crypt fiend / carrion beetle) [10- ]

  38 02 0D 00 - Devour Magic (UD destroyer) [11- ]

  3B 02 0D 00 - Orb of Annihilation (UD destroyer) [12- ]

  3C 02 0D 00 - enable autocast: Orb of Annihilation (UD destroyer) [10- ]  3D 02 0D 00 - disable autocast: Orb of Annihilation (UD destroyer) [10- ]

  41 02 0D 00 - Essence of Blight (UD obsidian statue) [10- ]  42 02 0D 00 - enable autocast: Essence of Blight (UD obsidian statue) [10- ]  43 02 0D 00 - disable autocast: Essence of Blight (UD obsidian statu

Page 43: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 43/46

e) [10- ]  44 02 0D 00 - Spirit Touch (UD obsidian statue) [10- ]  45 02 0D 00 - enable autocast: Spirit Touch (UD obsidian statue) [10- ]  46 02 0D 00 - disable autocast: Spirit Touch (UD obsidian statue) [10- ]

  48 02 0D 00 - enable autocast: Carrion Beetles (UD crypt lord) [10- ]  49 02 0D 00 - disable autocast: Carrion Beetles (UD crypt lord) [10- ]  4A 02 0D 00 - Carrion Beetle (UD crypt lord) [10- ]  4B 02 0D 00 - Impale (UD crypt lord) [12- ]  4C 02 0D 00 - Locust Swarm (UD crypt lord ultimate) [10- ]

  - - - - - -  51 02 0D 00 - Frenzy (beastmasters quilbeast) [10- ]  52 02 0D 00 - enable autocast: Frenzy (beastmasters quilbeast) [10- ]

  53 02 0D 00 - disable autocast: Frenzy (beastmasters quilbeast) [10- ]

  - - - - - -  56 02 0D 00 - Change Shop Buyer [12- ]  - - - - - -

  61 02 0D 00 - Black Arrow (Hero: Dark Ranger) [12- ]  62 02 0D 00 - enable autocast: Black Arrow (Hero: Dark Ranger) [10- ]  63 02 0D 00 - disable autocast: Black Arrow (Hero: Dark Ranger) [

10- ]  64 02 0D 00 - Breath of Fire (Hero: Pandaren Brewmaster) [12- ]  65 02 0D 00 - Charm (Hero: Dark Ranger ultimate) [12- ]

  67 02 0D 00 - Doom (Hero: Pit Lord ultimate) [12- ]

  69 02 0D 00 - Drunken Haze (Hero: Pandaren Brewmaster) [12- ]  6A 02 0D 00 - Storm, Earth and Fire (Hero: Pandaren ultimate) [10- ]

  6B 02 0D 00 - Forked Lightning (Hero: Naga Sea Witch) [12- ]  6C 02 0D 00 - Howl of Terror (Hero: Pit Lord) [10- ]  6D 02 0D 00 - Mana Shield (Hero: Naga Sea Witch) [10- ]  6E 02 0D 00 - Mana Shield (Hero: Naga Sea Witch) [10- ]

  70 02 0D 00 - Silence (Hero: Dark Ranger) [

Page 44: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 44/46

11- ]  71 02 0D 00 - Stampede (Hero: Beastmaster ultimate) [12- ] [14- ]  72 02 0D 00 - Summon Bear (Hero: Beastmaster) [10- ]  73 02 0D 00 - Summon Quilbeast (Hero: Beastmaster) [10- ]  74 02 0D 00 - Summon Hawk (Hero: Beastmaster) [10- ]  75 02 0D 00 - Tornado (Hero: Naga Sea Witch ultimate) [11- ]  76 02 0D 00 - Summon Prawn (N Makrura Snapper) [10- ]

  (p1.15) AC 02 0D 00 - Cluster Rockets (Hero: Goblin Tinker) [11- ]

  (p1.15) B0 02 0D 00 - Robo-Goblin (Hero: Goblin Tinker ultimate) [10- ]  (p1.15) B1 02 0D 00 - Revert to Tinker (Hero: Goblin Tinker) [10- ]  (p1.15) B2 02 0D 00 - Pocket Factory (Hero: Goblin Tinker) [11- ]

  (p1.17) B6 02 0D 00 - Acid Bomb (Hero: Goblin Alchemist) [12- ]  (p1.17) B7 02 0D 00 - Chemical Rage (Hero: Goblin Alchemist) [10- ]  (p1.17) B8 02 0D 00 - Healing Spray (Hero: Goblin Alchemist) [11- ]  (p1.17) B9 02 0D 00 - Transmute (Hero: Goblin Alchemist) [10- ]

  (p1.17) BB 02 0D 00 - Summon Lava Spawn (Hero: Fire Lord) [10- ]  (p1.17) BC 02 0D 00 - Soulburn (Hero: Fire Lord) [12- ]

  (p1.17) BD 02 0D 00 - Volcano (Hero: Fire Lord) [11- ]  (p1.18) BE 02 0D 00 - Incinerate (Hero: Fire Lord) [10- ]  (p1.18) BF 02 0D 00 - enable autocast: Incinerate (Hero: Fire Lord) [10- ]  (p1.18) C0 02 0D 00 - disable autocast: Incinerate (Hero: Fire Lord) [10- ]

The following abilities are present in the world editor but cannot be usedin the game (and therefore the ItemID remains unknown):

  - Tank Load Pilot (HU) (game crashes)  - Tank Drop Pilot (HU) (Msg: "no pilot present")  - Pilot Tank (HU) (Msg: "unit not a tank")

  - Gold2Lumber Exchange (disabled)  - Lumber2Gold Exchange (disabled)

===============================================================================5.0 Object ID's

Page 45: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 45/46

===============================================================================

Every single object (units, heros, items, buildings, summons, even trees) in areplay gets a unique number, the ObjectID. It is used as a reference to thisobject in 'change selection' actions or for denoting target objects.Warcraft generates the number probably just-in-time and (more or less)upcounting.

One ObjectID consists of two doubleword numbers. Sometimes these numbers areequal (probably for all objects that exist at the start of the game).

Notes: o ObjectIDs are still an unsolved problem in replays.  (And will maybe never be solved in a usable way.  Maybe the new action 0x1A introduced with patch 1.14b can be used to get  some usable information out of the ObjectID's.)

===============================================================================6.0 Click Coordinates===============================================================================

 Click coordinates are standard IEEE single precision floats (4 bytes) corresponding to the coordinates in World Editor.

 Notes:  o The center of the map has the coordinates (0,0).  //FIXME: its rather the center of map coordinate range

  o The range of the coordinates depends on the size of the map and the  equivalent settings in the World Editor.

  o Maximum range is -16384.000 to 16384.000 (256x256 maps).

  o Buildings can only be placed on a discrete grid.  The grid step size is 64.00 Units per grid line.

===============================================================================7.0 General notes=============================================================================== o Patch 1.07 represents the retail version of the expansion pack  'The Frozen Throne' (TFT). It was immediatlely followed by a patch 1.10 that  brought both TFT and ROC to the same patch level. Actually both game  versions seem to use the improved TFT game engine.

 o There are only user inputs in a replay. There are no computer actions, no  'training complete' data, no results of fights, no information about death  of units, etc..

 o Most actions in the replay are right-click actions. The true actions they  are translated to by the game remain hidden.

 o There are no special actions for build, skill, train etc.  There are only five basic actions for this task (0x10 - 0x14) that  differ in the number of arguments provided.  The true nature of the action is only detectable by the provided ItemID.

 o Build actions that failed due to unsufficient resources are not saved  in the replay !

Page 46: War 3 Replay Information

8/13/2019 War 3 Replay Information

http://slidepdf.com/reader/full/war-3-replay-information 46/46

 o There is no difference regarding action codes between a train action for a  single building and a train action for two or more buildings.  One cannot determine whether a unit is build in all of the selected  buildings or only in one. It depends on resources and food supply but is  not denoted in the replay.

 o There are no notifications in the replay, if a player overrides a command  before it was executed (e.g. by giving the unit a new order while it is on  the way to execute an ability at a distant location/target).  Therefore for all actions 0x11-0x14 one cannot be sure whether the assigned  action was really executed.

 o Changing map colors (friend/foe) is not recorded in replay.

 o Selecting already selected units gives no additional actions in the replay!

 o Day/night changes are not denoted in the replay data.

 o Any field of view changes (e.g. click on minimap, 'space', 'ctrl-c')  are not saved in the replay.

 o In replays of patch version <= 1.06 only chat messages that activate  map triggers are saved (action 0x60).

===============================================================================8.0 Notes on older Patches===============================================================================Pre Patch 1.14b: o Action 0x19 was used instead of action 0x1A. o Action 0x1B - 0x1E were shifted down by one (0x1A - 0x1D).

Pre patch 1.13: o AbilityFlag (action 0x10-0x14) was only a byte, instead of a word. o Actions 0x10 - 0x14 were 1 byte shorter.

Pre patch 1.07: o Chat text messages were not saved o Actions 0x10 - 0x14 were 8 bytes shorter. o Actions 0x62 used to be 4 bytes shorter. o There was *one* action missing between 0x63 and 0x65 (the specific action  is still unknown). So all following actions were shifted by one.

Pre patch 1.03: o (TODO)

Frozen Throne Beta Replays: o (not investigated)[/CODE]