PageRenderTime 125ms CodeModel.GetById 24ms RepoModel.GetById 2ms app.codeStats 1ms

/ghost-legacy/w3g_actions.txt

http://ghostcb.googlecode.com/
Plain Text | 1648 lines | 1261 code | 387 blank | 0 comment | 0 complexity | 36c77c1907b47da0ded6c89ddd67dc04 MD5 | raw file
  1. *******************************************************************************
  2. * WarCraft III Replay action format description *
  3. * *
  4. * document version: 1.00 *
  5. * document date : 2005-04-30 *
  6. * document authors: blue, nagger *
  7. * *
  8. * For more informtion about w3g file format, please visit: *
  9. * http://w3g.deepnode.de *
  10. * and *
  11. * http://warcraft.kliegman.com *
  12. * *
  13. * Check out the developer forum on: *
  14. * http://shadowflare.gameproc.com *
  15. * or contact us via mail *
  16. * mailto:w3g_format@deepnode.de *
  17. * *
  18. *******************************************************************************
  19. ===============================================================================
  20. Table of Content
  21. ===============================================================================
  22. 1.0 Introduction
  23. 1.1 Standardized APMs
  24. 2.0 Action ID's
  25. 3.0 AbilityFlags
  26. 4.0 ItemID's
  27. 4.1 Stringencoded ItemID's
  28. 4.2 Numeric ItemID's
  29. 5.0 ObjectID's
  30. 6.0 Click Coordinates
  31. 7.0 General notes
  32. 8.0 Notes on older Patches
  33. 9.0 Credits
  34. 10.0 Document revision history
  35. ===============================================================================
  36. DISCLAIMER (please read it ...)
  37. ===============================================================================
  38. All information in this document was solely obtained by looking at the replay
  39. file and guessing the meaning of each single field. All knowledge about the
  40. games mechanics is based on experience obtained by playing the game.
  41. Neither reverse engineering was used nor any copyrighted files modified.
  42. It is explicitly prohibited to use the information provided in this document
  43. for any illegal activities including hacking, cheating and pirating.
  44. Thank you Blizzard for your great games and a quite straight-forward
  45. WarCraft III replay file format ;-)
  46. The use of the information provided in this document is free of charge as long
  47. as you follow the rules above. Furthermore you may copy it freely as long as
  48. the file is unchanged (please mail us about any error or addition - we like
  49. to keep things centralized).
  50. We would really appreciate it if you credit us in your project or drop us
  51. a line via mail - because we like to know if the work put into this document
  52. was anything worth after all ...
  53. ===============================================================================
  54. 1.0 Introduction
  55. ===============================================================================
  56. This document describes the format of the actions found in the TimeSlot blocks
  57. of the replay (see 'w3g_format.txt' section 5 for details):
  58. 0x1F - TimeSlot block (rarely also 0x1E)
  59. 1 word - number of bytes that follow
  60. 1 word - time increment (milliseconds)
  61. about 250 ms in battle.net
  62. about 100 ms in LAN and single player
  63. n-2 byte - CommandData block(s) (not present if n=2)
  64. For every player which has executed an action during the last time slot there
  65. is at least one 'CommandData' block.
  66. CommandData block:
  67. 1 byte - PlayerID
  68. 1 word - Action block length
  69. n byte - Action block(s) (may contain multiple actions !)
  70. Action block:
  71. 1 byte - ActionID (see 2.0)
  72. n byte - action arguments (see 2.0)
  73. Notes:
  74. o The number of 'Action blocks' can only be determined by parsing the actions
  75. up to the denoted Action block length.
  76. o The 'time increments' are only correct for replays played at fastest speed.
  77. o Accumulate all 'time increments' to get the time of current action(s).
  78. TODO: analyse time increments of slow/normal speed
  79. ===============================================================================
  80. 1.1 Standardized APMs
  81. ===============================================================================
  82. This section defines a standardized Actions-Per-Minute(APM) value.
  83. With it we hope to make APM values more comparable inbetween all current and
  84. future replay tools out there and coming. Please use it in your tool too :D
  85. The main goal is an easy-to-implement algorithm. This way even simple replay
  86. tools should have no difficulties at all to calculate it.
  87. Basic rules:
  88. o Only count in-game actions (no map-signals, no chat).
  89. o Every counted action increments the player action counter by one.
  90. o Do not filter out any player action.
  91. o APM = numbers of actions of a player / time this player played.
  92. Accordingly all actions in section 2.0 are marked in the headline:
  93. [APM+] = Action is counted.
  94. [APM?] = Special, please read the notes on this action (0x16, 0x19).
  95. [APM-] = Action is not counted.
  96. Additionally you have to pay attention to the pause/unpause actions in order to
  97. determine the played time correctly:
  98. Pause game (action 0x01):
  99. o Stop the time at the first occurence of this action
  100. (there might be multiple ones).
  101. o The pause action itself is not counted.
  102. o Do NOT stop counting the actions within a pause
  103. (but skip actions like map signals as usual).
  104. Resume game (action 0x02):
  105. o Resume counting the time at first occurence of this action
  106. (there might be multiple ones).
  107. o Do not count this action itself.
  108. Due to this simple method there are the following inadequacies:
  109. o Cancelling a unit/building by pressing Escape key will be counted twice
  110. (Action 0x61 + Action 0x10 with unitid=0x08000D00).
  111. o Map signal are uncounted. They are no real in-game actions and can very
  112. easily abused to increase the APM value.
  113. o No 'tab' action are counted (since patch 1.14b).
  114. (Prior to patch 1.14b only the last action of a complete cycle through all
  115. subgroups was not counted.)
  116. Keep in mind that for the APM value it is not important, which consequences
  117. within the game an action has. It is only significant *how often* it is used.
  118. If a player executes a specific action once every minute, it only results in
  119. a 1 APM difference at the end.
  120. Do you really need a APM precision better than say ?5 APMs ?
  121. Note:
  122. o If you decide to develop your own APM system (e.g. by filtering some user
  123. actions) please do *not* call it APM.
  124. Call it TrueAPM, RealAPM, myAPM, UserAPM or something like that instead.
  125. ===============================================================================
  126. 2.0 Action ID's
  127. ===============================================================================
  128. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  129. 0x01 - Pause game [ 1 byte ] [APM-]
  130. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  131. no additional data
  132. Notes:
  133. o Due to lag there can be multiple pause or unpause actions, but they didn't
  134. stack. The first unpause will resume the game, no matter how many pause
  135. actions came before.
  136. o There can be other actions between pause and resume action
  137. (e.g. map signal action, actions issued before game pausing but delayed
  138. by network latency)
  139. o The length of the replay (found in replay header) is the effective play
  140. time excluding any pause
  141. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  142. 0x02 - Resume game [ 1 byte ] [APM-]
  143. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  144. no additional data
  145. Note:
  146. o See notes for Pause game action
  147. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  148. 0x03 - Set game speed in single player game (options menu) [ 2 byte ] [APM-]
  149. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  150. 1 byte - game speed:
  151. 0x00 - slow
  152. 0x01 - normal
  153. 0x02 - fast
  154. Note:
  155. o Time increments (see 1.0) are only correct for fast speed.
  156. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  157. 0x04 - Increase game speed in single player game (Num+) [ 1 byte ] [APM-]
  158. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  159. no additional data
  160. Note:
  161. o Time increments (see 1.0) are only correct for fast speed.
  162. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  163. 0x05 - Decrease game speed in single player game (Num-) [ 1 byte ] [APM-]
  164. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  165. no additional data
  166. Note:
  167. o Time increments (see 1.0) are only correct for fast speed.
  168. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  169. 0x06 - Save game [ n bytes ] [APM-]
  170. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  171. n bytes - savegame name (null terminated string)
  172. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  173. 0x07 - Save game finished [ 5 bytes ] [APM-]
  174. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  175. 1 dword - unknown (always 0x00000001 so far)
  176. This action is supposed to signal that saving the game finished.
  177. It normally follows a 0x06 action.
  178. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  179. 0x10 - Unit/building ability (no additional parameters) [ 15 bytes ] [APM+]
  180. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  181. 1 word - AbilityFlags (see section 3) ('byte' for patch version < 1.13)
  182. 1 dword - ItemID (see section 4)
  183. 1 dword - unknownA (0xFFFFFFFF) (only present for patch version >= 1.07)
  184. 1 dword - unknownB (0xFFFFFFFF) (only present for patch version >= 1.07)
  185. Note:
  186. o For pre v1.07 replays this record is only 6 bytes.
  187. o For pre v1.13 replays AbilityFlags is a Byte and therefore
  188. the whole block 1 byte smaller.
  189. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  190. 0x11 - Unit/building ability [ 22 bytes ] [APM+]
  191. (with target position)
  192. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  193. 1 word - AbilityFlags (see section 3) ('byte' for patch version < 1.13)
  194. 1 dword - ItemID (see section 4)
  195. 1 dword - unknownA (0xFFFFFFFF) (only present for patch version >= 1.07)
  196. 1 dword - unknownB (0xFFFFFFFF) (only present for patch version >= 1.07)
  197. 1 dword - target location X
  198. 1 dword - target location Y
  199. Note:
  200. o For pre v1.07 replays this record is only 14 bytes.
  201. o For pre v1.13 replays AbilityFlags is a Byte and therefore
  202. the whole block 1 byte smaller.
  203. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  204. 0x12 - Unit/building ability [ 30 bytes ] [APM+]
  205. (with target position and target object ID)
  206. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  207. 1 word - AbilityFlags (see section 3) ('byte' for patch version < 1.13)
  208. 1 dword - ItemID (see section 4)
  209. 1 dword - unknownA (0xFFFFFFFF) (only present for patch version >= 1.07)
  210. 1 dword - unknownB (0xFFFFFFFF) (only present for patch version >= 1.07)
  211. 1 dword - target position X coordinate
  212. 1 dword - target position Y coordinate
  213. 1 dword - objectID1
  214. 1 dword - objectID2
  215. objectID1 == objectID2 == FF FF FF FF for no object (e.g. rally on ground)
  216. Note:
  217. o For pre v1.07 replays this record is only 22 bytes.
  218. o For pre v1.13 replays AbilityFlags is a Byte and therefore
  219. the whole block 1 byte smaller.
  220. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  221. 0x13 - Give item to Unit / Drop item on ground [ 38 bytes ] [APM+]
  222. (with target position, object ID A and B)
  223. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  224. 1 word - AbilityFlags (see section 3) ('byte' for patch version < 1.13)
  225. 1 dword - ItemID (see section 4)
  226. 1 dword - unknownA (0xFFFFFFFF) (only present for patch version >= 1.07)
  227. 1 dword - unknownB (0xFFFFFFFF) (only present for patch version >= 1.07)
  228. 1 dword - target location X
  229. 1 dword - target location Y
  230. 1 dword - Target_objectID_1
  231. 1 dword - Target_objectID_2
  232. 1 dword - Item_objectID_1
  233. 1 dword - Item_objectID_2
  234. Notes:
  235. o For pre v1.07 replays this record is only 30 bytes.
  236. o For pre v1.13 replays AbilityFlags is a Byte and therefore
  237. the whole block 1 byte smaller.
  238. o Target_objectID 1 and 2 is 0xFFFFFFFF for ground
  239. Example: drop potion on ground:
  240. 13
  241. 40
  242. 21 00 0D 00
  243. 5B 10 58 C3
  244. 97 CE 1B 44
  245. FF FF FF FF
  246. FF FF FF FF
  247. 11 2D 00 00
  248. D3 96 00 00
  249. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  250. 0x14 - Unit/building ability [ 43 bytes ] [APM+]
  251. (with two target positions and two item ID's)
  252. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  253. 1 word - AbilityFlags (see section 3) ('byte' for patch version < 1.13)
  254. 1 dword - ItemID_A (see section 4)
  255. 1 dword - unknownA (0xFFFFFFFF) (only present for patch version >= 1.07)
  256. 1 dword - unknownB (0xFFFFFFFF) (only present for patch version >= 1.07)
  257. 1 dword - target location A_X
  258. 1 dword - target location A_Y
  259. 1 dword - ItemID_B (see section 4)
  260. 9 byte - unknown
  261. 1 dword - target location B_X
  262. 1 dword - target location B_Y
  263. Notes:
  264. o For pre v1.07 replays this record is only 35 bytes.
  265. o For pre v1.13 replays AbilityFlags is a Byte and therefore
  266. the whole block 1 byte smaller.
  267. Examples:
  268. (human townhall rightclick on tree (tree not direct accessible))
  269. Felwood:
  270. 14 00 03000D00 000024C5 0000B844 72745443 40 00100100 000000FF 000024C5 0000B844
  271. . . . . . . . . $ . . . . D r t T C @ . . . . . . . . . . $ . . . . D
  272. Lordaeron Summer:
  273. 14 00 03000D00 0000D8C4 00005044 746C544C 40 00100100 000000FF 0000D8C4 00005044
  274. . . . . . . . . . . . . P D t l T L @ . . . . . . . . . . . . . . P D
  275. Village-Autumn:
  276. 14 00 03000D00 000070C4 00007044 77745446 40 00100100 000000FF 000070C4 00007044
  277. . . . . . . . . p . . . p D w t T F @ . . . . . . . . . . p . . . p D
  278. Dungeon:
  279. 14 00 03000D00 0000A0C3 00009844 68735444 40 00100100 000000FF 0000A0C3 00009844
  280. . . . . . . . . . . . . . D h s T D @ . . . . . . . . . . . . . . . D
  281. (rightclicks)[==]
  282. 14 00 03000D00 0000D845 000000C6 6C6F676E 08 00A05500 0000000F 0000D845 000000C6
  283. . . . . . . . . . E . . . . l o g n . . . U . . . . . . . . E . . . .
  284. 14 00 03000D00 0000C0C4 00001BC6 77745442 40 00100100 000000FF 0000C0C4 00001BC6
  285. . . . . . . . . . . . . . . w t T B @ . . . . . . . . . . . . . . . .
  286. 14 00 03000D00 00008845 0000BE45 746C544C 40 00100100 000000FF 00008845 0000BE45
  287. . . . . . . . . . E . . . E t l T L @ . . . . . . . . . . . E . . . E
  288. 14 00 03000D00 00004AC5 0000C3C5 65746165 08 00905908 00000001 00004AC5 0000C3C5
  289. . . . . . . . . J . . . . . e t a e . . . Y . . . . . . . J . . . . .
  290. 14 00 03000D00 000080C4 0000D845 6C6F6775 08 0090590A 00000001 000080C4 0000D845
  291. . . . . . . . . . . . . . E l o g u . . . Y . . . . . . . . . . . . E
  292. (attack)[!=]
  293. 14 18 0F000D00 BA387FC3 2C6F6FC5 746C544C 40 00100100 000000FF 0000A0C3 000074C5
  294. . . . . . . . 8  . , o o . t l T L @ . . . . . . . . . . . . . . t .
  295. (undead gold)[==]
  296. 14 04 6C6F6775 0000F044 00002C45 6C6F676E 08 00A05500 0000000F 0000F044 00002C45
  297. . . l o g u . . . D . . , E l o g n . . . U . . . . . . . . D . . , E"
  298. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  299. 0x16 - Change Selection (Unit, Building, Area) [ 4+n*8 bytes ] [APM?]
  300. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  301. 1 byte - select mode:
  302. 0x01 - add to selection (select)
  303. 0x02 - remove from selection (deselect)
  304. 1 word - number (n) of units/buildings
  305. block repeated n times:
  306. 1 dword - ObjectID1
  307. 1 dword - ObjectID2
  308. (ObjectID1 == ObjectID2 for starting town hall and trees ?)
  309. Note:
  310. o If one simply selects a new unit then this results in a single 'add to
  311. selection'-action (16 01) preceded by a 'remove from selection'-action
  312. (16 02) for the complete old selection.
  313. APM-Note:
  314. o Every 'Change Selection' action (both 'select' and 'deselect') increases
  315. the APM counter by one [APM+], BUT:
  316. o Do *not* count a 'select' action that follows *immediately* after a
  317. 'deselect' action within the *same* CommandData block.
  318. This is reasonable because mostly all deselect actions in front of select
  319. actions are autogenerated by WarCraft and therefore the whole deselect/
  320. select combo action needs to be counted as 1 action only.
  321. o Example pseudo algorithm:
  322. FOREACH TimeSlot-block DO
  323. ...
  324. FOREACH CommandData-block DO
  325. id = ReadPlayerID()
  326. LastActionWasDeselect = FALSE;
  327. ...
  328. FOREACH Action-block DO
  329. actionid = ReadActionID()
  330. ...
  331. IF (actionid == 0x16) THEN
  332. IF (selectMode == deselect) THEN
  333. countThisActionAsAPM()
  334. LastActionWasDeselect = TRUE;
  335. ELSE
  336. IF (!LastActionWasDeselect) THEN countThisActionAsAPM()
  337. LastActionWasDeselect = FALSE;
  338. ENDIF
  339. ELSE
  340. LastActionWasDeselect = FALSE;
  341. ENDIF
  342. ...
  343. ENDFOREACH
  344. ...
  345. ENDFOREACH
  346. ...
  347. ENDFOREACH
  348. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  349. 0x17 - Assign Group Hotkey [ 4+n*8 bytes ] [APM+]
  350. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  351. 1 byte - group number (0-9)
  352. the group number is shifted by one:
  353. key '1' is group0, ... , key '9' is group8 and key '0' is group9
  354. 1 word - number (n) of items in selection
  355. block repeated n times:
  356. 1 dword - ObjectID1
  357. 1 dword - ObjectID2
  358. Note:
  359. o There is no extra 'add to group' action (Shift-[1..0]). Instead the
  360. whole *new* group is listed with an 'assign group hotkey' action.
  361. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  362. 0x18 - Select Group Hotkey [ 3 bytes ] [APM+]
  363. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  364. 1 byte - group number (0-9)
  365. the group number is shifted by one:
  366. key '1' is group0, ... , key '9' is group8 and key '0' is group9
  367. 1 byte - unknown (always 0x03)
  368. Note:
  369. o There is no deselect action (0x16 02) issued for the previous selection.
  370. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  371. 0x19 - Select Subgroup (patch version >= 1.14b) [ 13 bytes ] [APM?]
  372. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  373. 1 dword - ItemID (see section 4)
  374. 1 dword - ObjectID1 (see section 5)
  375. 1 dword - ObjectID2
  376. Notes:
  377. o Always following a 0x1A-Action (Pre subselection)
  378. o The ItemID and the ObjectID represents the first unit in the newly
  379. selected subgroup.
  380. This can be used to associate ItemID's with ObjectID's for one unit!
  381. o Nearly all 'Select Subgroup' actions are autogenerated.
  382. TODO:
  383. o Find algorithm to detect real 'SelectSubgroup' actions (TAB-key pressed)
  384. for APM counting.
  385. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  386. 0x19 - Select Subgroup (patch version < 1.14b) [ 2 bytes ] [APM?]
  387. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  388. 1 byte - subgroup number (0-11, 0xFF)
  389. Notes:
  390. o There is a special subgroup action: 0x19 0xFF
  391. It is an auto-generated action in the replay and might mean something
  392. like "update subgroups" (e.g. when a summoned unit disappears or peasant
  393. turns into militia etc.).
  394. o Most 'select subgroup 0'-actions (0x19 00) are autogenerated too (e.g. if
  395. one selects a subgroup and then selects a completely different unit).
  396. o Since patch 1.13 nearly all 'Select Subgroup' actions are autogenerated.
  397. Very often WarCraft seems to write a complete subgroup status to the replay.
  398. For every player there is an 'Update Subgroup' action (0x19 0xFF)
  399. followed immediately by a 'Select Subgroup' action where the subgroup
  400. number represents the current subgroup status. This status does not always
  401. correspond to the currently selected subgroup of this player. (TODO: why?)
  402. APM-Note:
  403. o Only count this action if 'subgroup number' is neither 0x00 nor 0xFF.
  404. o Do *not* count a 'Select Subgroup' action that follows *immediately* after
  405. a 'Update Subgroup' action within the *same* CommandData block.
  406. (Adapt the example pseudo algorithm of action 0x16.)
  407. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  408. 0x1A - Pre Subselection [ 1 byte ] [APM-]
  409. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  410. no additional data
  411. Notes:
  412. o Mostly followed by a 0x19-Action (Select Subgroup) but not always
  413. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  414. 0x1B - Unknown [ 10 bytes ] [APM-]
  415. 0x1A for WarCraft III patch version <= 1.14b
  416. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  417. 1 byte - unknown (always 0x01 so far)
  418. 1 dword - unknown (ObjectID1?)
  419. 1 dword - unknown (ObjectID2?)
  420. Notes:
  421. o Only in scenarios, maybe a trigger-related command
  422. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  423. 0x1C - Select Ground Item [ 10 bytes ] [APM+]
  424. 0x1B for WarCraft III patch version <= 1.14b
  425. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  426. 1 byte - unknown (flags? always 0x04 so far)
  427. 1 dword - ObjectID1
  428. 1 dword - ObjectID2
  429. Notes:
  430. o Leftclick on an item laying on the ground (selecting it).
  431. o This action is normally preceded by a deselect (0x16 02) and subgroup
  432. update (0x19 FF) action.
  433. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  434. 0x1D - Cancel hero revival [ 9 bytes ] [APM+]
  435. 0x1C for WarCraft III patch version <= 1.14b
  436. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  437. 1 dword - UnitID1 (always a hero)
  438. 1 dword - UnitID2 (always a hero)
  439. Notes:
  440. o This action is only present in LAN/Multiplayer games.
  441. o It is issued for every canceled hero revival - regardless which spot
  442. in the "build/revival queue" the hero had.
  443. o It is not issued for canceling hero training. There you get the "usual"
  444. "61 10 40 08 00 0D 00 ..." action sequence.
  445. o This action is normally preceded by a deselect (0x16 02) and subgroup
  446. update (0x19 FF) action.
  447. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  448. 0x1E - Remove unit from building queue [ 6 bytes ] [APM+]
  449. 0x1D for WarCraft III patch version <= 1.14b
  450. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  451. 1 byte - SlotNr (0 = unit currently build,
  452. 1 = first unit in queue,
  453. 2 = second unit in queue,
  454. ...
  455. 6 = last unit in queue)
  456. 1 dword - ItemID (StringID for the canceled unit)
  457. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  458. 0x21 - unknown [ 9 bytes ] [APM-]
  459. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  460. 1 dword - unknown [A] (0x000064F0 so far)
  461. 1 dword - unknown [B] (0x000064F0 so far)
  462. Note:
  463. o Very very rare action block.
  464. o Found in replays with patch version 1.04 and 1.05.
  465. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  466. 0x20, 0x22-0x32 - Single Player Cheats [ * bytes ] [APM-]
  467. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  468. Action | Size | Cheat | Description
  469. -------+--------+--------------------------+-------------------------------
  470. 0x20 | 1 Byte | TheDudeAbides | Fast cooldown
  471. 0x22 | 1 Byte | SomebodySetUpUsTheBomb | Instant defeat
  472. 0x23 | 1 Byte | WarpTen | Speeds construction
  473. 0x24 | 1 Byte | IocainePowder | Fast Death/Decay
  474. 0x25 | 1 Byte | PointBreak | Removes food limit
  475. 0x26 | 1 Byte | WhosYourDaddy | God mode
  476. 0x27 | 6 Byte | KeyserSoze [amount] | Gives you X Gold
  477. 0x28 | 6 Byte | LeafitToMe [amount] | Gives you X Lumber
  478. 0x29 | 1 Byte | ThereIsNoSpoon | Unlimited Mana
  479. 0x2A | 1 Byte | StrengthAndHonor | No defeat
  480. 0x2B | 1 Byte | itvexesme | Disable victory conditions
  481. 0x2C | 1 Byte | WhoIsJohnGalt | Enable research
  482. 0x2D | 6 Byte | GreedIsGood [amount] | Gives you X Gold and Lumber
  483. 0x2E | 5 Byte | DayLightSavings [time] | Set a time of day
  484. 0x2F | 1 Byte | ISeeDeadPeople | Remove fog of war
  485. 0x30 | 1 Byte | Synergy | Disable tech tree requirements
  486. 0x31 | 1 Byte | SharpAndShiny | Research upgrades
  487. 0x32 | 1 Byte | AllYourBaseAreBelongToUs | Instant victory
  488. | | |
  489. ? | | Motherland [race][level] | Campain level jump
  490. Additional Parameter:
  491. o Action 0x27,0x28,0x2D: Adding Resources
  492. 1 byte - unknown (always 0xFF)
  493. 1 dword - (signed) amount of ressources
  494. o Action 0x2E: Set time of day
  495. 1 float - time (IEEE single precision float, 4Bytes)
  496. Notes:
  497. o Action 0x21 is not a cheat (see action above).
  498. o Cheat "TenthLevelTaurenChieftain" (changes background music) does not
  499. appear in replays.
  500. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  501. 0x50 - Change ally options [ 6 bytes ] [APM-]
  502. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  503. 1 byte - player slot number (0-11)(including computer AI players)
  504. 1 dword - flags
  505. bit 0-4 - set if allied with player (value 0x1F)
  506. bit 5 - set if vision shared with player (value 0x20)
  507. bit 6 - set if unit control is shared with player (value 0x40)
  508. bit 10 - set if "allied victory" is ticked (value 0x0400)
  509. (for patch version >= 1.07, see note)
  510. Notes:
  511. o All other bits not listed above are unused (zero).
  512. o The parameter to this action always reflects the current status of all
  513. options.
  514. o There is a action for every player where at least one option was changed.
  515. o Changing the "allied victory" option results in an action for every player
  516. in game (no matter if ally or non-ally).
  517. o On patch version <= 1.06 the "allied victory" option was represented by
  518. bit 9 (value 0x0200).
  519. o Shared unit control is linked to both shared vision and ally up.
  520. If either of them is unticked shared unit control is disabled too.
  521. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  522. 0x51 - Transfer resources [ 10 bytes ] [APM-]
  523. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  524. 1 byte - player slot number (0-11)(including computer AI players)
  525. 1 dword - Gold to transfer
  526. 1 dword - Lumber to transfer
  527. Note:
  528. o Transfering resources to multiple players results in an action for every
  529. involved player.
  530. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  531. 0x60 - Map trigger chat command (?) [ n bytes ] [APM-]
  532. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  533. 1 dword - unknownA
  534. 1 dword - unknownB
  535. n bytes - null terminated string (chat command or trigger name)
  536. Note:
  537. o unknownA == unknownB so far
  538. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  539. 0x61 - ESC pressed [ 1 byte ] [APM+]
  540. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  541. no additional data
  542. Notes:
  543. o This action often precedes cancel build/train actions.
  544. o But it is also found seperately (e.g. when leaving the 'choose skill'
  545. subdialog of heros using ESC).
  546. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  547. 0x62 - Scenario Trigger [ 13 bytes ] [APM-]
  548. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  549. 1 dword - unknown [A]
  550. 1 dword - unknown [B]
  551. 1 dword - unknown (counter) (only present for patch version >= 1.07)
  552. Notes:
  553. o A=B in all replays so far.
  554. o Probably sync action for custom map timer triggers.
  555. o The third dword counts upwards in TFT azure tower defense map games.
  556. o The third dword was missing for replays with patch version <= 1.06
  557. o For pre v1.07 replays this record is only 9 bytes.
  558. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  559. 0x66 - Enter choose hero skill submenu [ 1 byte ] [APM+]
  560. 0x65 for WarCraft III patch version <= 1.06
  561. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  562. no additional data
  563. Notes:
  564. o This action is issued if you select a hero and enter his 'choose skill'
  565. submenu. It does not matter wether one actually can choose a new skill
  566. (because of level up) or not.
  567. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  568. 0x67 - Enter choose building submenu [ 1 byte ] [APM+]
  569. 0x66 for WarCraft III patch version <= 1.06
  570. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  571. no additional data
  572. Notes:
  573. o This action is issued if you select a worker (peon, peasant, acolyte, wisp)
  574. and enter the build submenu to choose a building to create.
  575. It does not matter whether one really builds something.
  576. o It is usually followed by a build action (0x11) or a ESC action (0x61).
  577. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  578. 0x68 - Minimap signal (ping) [ 13 bytes ] [APM-]
  579. 0x67 for WarCraft III patch version <= 1.06
  580. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  581. 1 dword - Location X
  582. 1 dword - Location Y
  583. 1 dword - unknown (00 00 A0 40)
  584. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  585. 0x69 - Continue Game (BlockB) [ 17 bytes ] [APM-]
  586. 0x68 for WarCraft III patch version <= 1.06
  587. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  588. 1 dword - unknown [C]
  589. 1 dword - unknown [D]
  590. 1 dword - unknown [A]
  591. 1 dword - unknown [B]
  592. Notes:
  593. o This action is issued if the game winner chooses 'continue game' or
  594. if 'observer on defeat' is enabled and a loser chooses 'continue game'.
  595. o Always combined with 0x6A action (see below).
  596. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  597. 0x6A - Continue Game (BlockA) [ 17 bytes ] [APM-]
  598. 0x69 for WarCraft III patch version <= 1.06
  599. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  600. 1 dword - unknown [A]
  601. 1 dword - unknown [B]
  602. 1 dword - unknown [C]
  603. 1 dword - unknown [D]
  604. Notes:
  605. o This action is issued if the game winner chooses 'continue game' or
  606. if 'observer on defeat' is enabled and loser choose 'continue game'.
  607. o Only present for replay saver, 'continue game' of other players results in
  608. normal 'leave game' action.
  609. o Always followed by a 0x69 action (see above) with data [C][D][A][B].
  610. o Parameters [A][B] look similar to those of 0x62 action.
  611. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  612. 0x75 - Unknown [ 2 bytes ] [APM-]
  613. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  614. 1 byte - unknown
  615. Notes:
  616. o Only in scenarios, maybe a trigger-related command
  617. ===============================================================================
  618. 3.0 AbilityFlags
  619. ===============================================================================
  620. Ability flags represent additional attributes of an action.
  621. E.g.: If bit 0 is set the action was queued (by pressing the shift key) and
  622. will only be executed after the previous action was finished.
  623. Unfortunately Warcraft sets some of the bits automatically, even when the
  624. player didn't press a modifier button/key (e.g. subgroup command flag).
  625. The Flag item used to have BYTE size until patch 1.12. With patch 1.13 it
  626. was extended to a WORD.
  627. Flag value is composed of the following values
  628. 0x0001 - queue command (shift held down)
  629. 0x0002 - ? (apply to all units in subgroup ?)
  630. 0x0004 - ? (area effect ?)
  631. 0x0008 - group command (all units in current selection)
  632. 0x0010 - move group without formation (formation disabled)
  633. 0x0020 - ?
  634. 0x0040 - ctrl held down (subgroup command)
  635. sometimes automatically added
  636. (e.g. subgroup worker -> rightclick mine without ctrl)
  637. new since patch 1.13
  638. 0x0100 - autocast on/off command
  639. Examples:
  640. 0x42 - rightclick item in inventory
  641. 0x44 - use ability (revive hero, cast spell)
  642. 0x48 - ctrl group command (group peasants -> goldmine)
  643. 0x44 - detonate Wisp (area effect unit ability ?)
  644. 0x4C - use WON (area effect item ?)
  645. 0x00 - use ability (Stop, Hold, uproot, Mirrorimage etc.)
  646. 0x40 - Train unit / Research / Buy (resources changed?)
  647. (Orc burrow - combatpositions)
  648. 0x42 - use special ability (that changes unit stats ???)
  649. (heros: skill ability, HU townhall: call to arms)
  650. 0x44 - Summon (summon units and train heros)
  651. TODO: further research, verification
  652. ===============================================================================
  653. 4.0 ItemID's
  654. ===============================================================================
  655. There are two types of ItemID's - alphanumeric and stringencoded:
  656. o Both types are 4 Bytes long.
  657. o Stringencoded ID's contain four valid characters.
  658. o Alphanumeric ID's have always the format: ?? ?? 0D 00
  659. ===============================================================================
  660. 4.1 Stringencoded ItemID's
  661. ===============================================================================
  662. Stringencoded ItemID's are used for:
  663. o Constructing a building
  664. o Upgrading a building (Tier2, Tier3, tower upgrades)
  665. o Training units/heros
  666. o Skilling hero abilities
  667. o Researching abilities/skills/spells
  668. o Researching upgrades
  669. o Buying items/merc./heros
  670. Stringencoded ID's contain four valid characters, giving a representative name
  671. for the unit/hero/item/ability.
  672. Blizzard used some kind of naming convention for some things:
  673. The lowbyte (little Endian style) of the string may mean:
  674. 'A' - Hero ability
  675. 'e' - Night Elf unit
  676. 'E' - Night Elf hero
  677. 'h' - Human unit
  678. 'H' - Human hero
  679. 'o' - Orc unit
  680. 'O' - Orc hero
  681. 'R' - Research item
  682. 'u' - Undead unit
  683. 'U' - Undead hero
  684. For Hero abilities ('A') the next byte denotes the race (E=elf,H=human,O=orc,U=undead).
  685. For Research items ('R') the next byte denotes the race (e=elf,h=human,o=orc,u=undead).
  686. Shop items and mercenaries don't fit into this naming sceme - e.g. some things
  687. start with a 'h'. But the hole string is always unequivocal.
  688. A complete list of string encoded ID's used can be found in the file
  689. "war3.mpq/Scripts/common.ai" (units & buildings)
  690. and in the files
  691. "war3.mpq/Units/*Strings.txt" (units, abilities, upgrades, items)
  692. in your WarCraft directory.
  693. Even more information (including gold cost etc.) about the String ID's can be found
  694. in the "war3.mpq/Units/*.slk" data files.
  695. Following are some example ID's:
  696. ewsp - Elf Wisp
  697. esen - Elf Huntress (Sentinel?)
  698. etoa - Elf tree of ages (tier2)
  699. Resm - Research Elf Melee Attack+1
  700. opeo - Orc peon
  701. ostr - Orc stronghold (tier2)
  702. uaco - UD acolyte
  703. AOsf - Ability Orc: shadow wolves
  704. AOmi - Ability Orc: mirror image
  705. Obla - Orc Blademaster
  706. Ofar - Orc Farseer
  707. Otch - Orc Tauren Chieftain
  708. wneg - wand of negation (WON)
  709. gemt - gem of true seeing
  710. edob - Elf huntress hall
  711. emow - Elf moon well
  712. oalt - Orc altar
  713. otrb - Orc burrow
  714. usep - UD crypt
  715. uzig - UD ziggurat
  716. ===============================================================================
  717. 4.2 Numeric ItemID's
  718. ===============================================================================
  719. Numeric ItemID's are only used on EXECUTION of abilities/spells.
  720. (e.g. hero spells, unit spells, autocast on/off)
  721. Alphanumeric IDs have always the format: ?? ?? 0D 00
  722. Following is a list of alphanumeric ID's found so far:
  723. 03 00 0D 00 - rightclick
  724. 04 00 0D 00 - stop
  725. 08 00 0D 00 - cancel (train, research) (often preceded by an ESC action 0x61)
  726. 0C 00 0D 00 - set rally point
  727. 0F 00 0D 00 - attack
  728. 10 00 0D 00 - attack ground (e.g. Orc Catapult) [11-40-ID-ClickX/Y]
  729. 12 00 0D 00 - move unit
  730. 16 00 0D 00 - patrol
  731. 19 00 0D 00 - hold position
  732. - - - - - -
  733. 21 00 0D 00 - give away item (from inventory to unit or ground) [13-40-ID-ClickX/Y-UnitID-ItemID]
  734. - - - - - -
  735. 22 00 0D 00 - swap item place 7 (slot of item to swap with!)
  736. 23 00 0D 00 - swap item place 8
  737. 24 00 0D 00 - swap item place 4
  738. 25 00 0D 00 - swap item place 5
  739. 26 00 0D 00 - swap item place 1
  740. 27 00 0D 00 - swap item place 2
  741. - - - - - -
  742. 28 00 0D 00 - use item place 7
  743. 29 00 0D 00 - use item place 8
  744. 2A 00 0D 00 - use item place 4
  745. 2B 00 0D 00 - use item place 5
  746. 2C 00 0D 00 - use item place 1
  747. 2D 00 0D 00 - use item place 2
  748. - - - - - -
  749. 31 00 0D 00 - return resources (tested with ghoul with lumber)
  750. 32 00 0D 00 - mine (ghoul -> lumber)
  751. 37 00 0D 00 - use ability: reveal area (N goblin laboratory) [11-40-ID-ClickX/Y]
  752. - - - - - -
  753. 38 00 0D 00 - use ability: repair (HU peasant, Orc peon) [12-40-ID-ClickX/Y-UnitID]
  754. 39 00 0D 00 - enable autocast: repair (HU peasant, Orc peon) [10-42-ID]
  755. 3A 00 0D 00 - disable autocast: repair (HU peasant, Orc peon) [10-42-ID]
  756. - - - - - -
  757. 3B 00 0D 00 - revive hero (first of 1 or more dead heros) [12-44-ID-ClickX/Y-UnitID]
  758. 3C 00 0D 00 - revive hero (second of 2 or more dead heros) [12-44-ID-ClickX/Y-UnitID]
  759. 3D 00 0D 00 - revive hero (third of 3 or more dead heros) [12-44-ID-ClickX/Y-UnitID]
  760. 3E 00 0D 00 - revive hero (fourth of 4 or more dead heros) [12-44-ID-ClickX/Y-UnitID]
  761. 3F 00 0D 00 - revive hero (fifth of 5 dead heros) [12-44-ID-ClickX/Y-UnitID]
  762. - - - - - -
  763. 48 00 0D 00 - use ability: kaboom (Goblin sapper) [12-44-ID-ClickX/Y-TargetID] [Action14]
  764. 49 00 0D 00 - enable autocast: kaboom (Goblin sapper) [10-42-ID]
  765. 4A 00 0D 00 - disable autocast: kaboom (Goblin sapper) [10-42-ID]
  766. - - - - - -
  767. 4E 00 0D 00 - load unit (NE mine/Zepellin) [12-44-ID-ClickX/Y-TargetID]
  768. 4F 00 0D 00 - remove single unit (click unit) (NE mine/Zepellin) [12-02-ID-ClickX/Y-TargetID]
  769. 50 00 0D 00 - unload all units (NE mine/Zepellin) [12-40-ID-ClickX/Y-TargetID] [Action11]
  770. 51 00 0D 00 - all wisp exit mine (button) (NE gold mine) [10-40-ID]
  771. - - - - - -
  772. 53 00 0D 00 - enable autocast: load corpses (UD: meat wagon) [10-42-ID]
  773. 54 00 0D 00 - disable autocast: load corpses (UD: meat wagon) [10-42-ID]
  774. 55 00 0D 00 - use ability: load corpses (UD: meat wagon) [10-40-ID]
  775. 56 00 0D 00 - use ability: unload corpses (UD: meat wagon) [10-40-ID]
  776. 57 00 0D 00 - use ability: enable defend (HU footman) [10-42-ID]
  777. 58 00 0D 00 - use ability: disable defend (HU footman) [10-42-ID]
  778. 59 00 0D 00 - use ability: area dispell (Hu priest) [11-44-ID-ClickX/Y]
  779. 5C 00 0D 00 - use ability: flare (Hu Mortar team) [11-44-ID-ClickX/Y]
  780. 5F 00 0D 00 - use ability: heal (Hu priest) [12-44-ID-ClickX/Y-TargetID]
  781. 60 00 0D 00 - enable autocast heal (Hu priest) [10-42-ID]
  782. 61 00 0D 00 - disable autocast heal (Hu priest) [10-42-ID]
  783. 62 00 0D 00 - use ability: inner fire (Hu priest) [12-44-ID-ClickX/Y-TargetID]
  784. 63 00 0D 00 - enable autocast inner fire (Hu priest) [10-42-ID]
  785. 64 00 0D 00 - disable autocast inner fire (Hu priest) [10-42-ID]
  786. 65 00 0D 00 - use ability: invisibility (Hu sorcress) [12-44-ID-ClickX/Y-TargetID]
  787. 68 00 0D 00 - use ability: call to arms (Hu peasant) [10-42-ID]
  788. 69 00 0D 00 - use ability: return to work (Hu militia) [10-42-ID]
  789. 6A 00 0D 00 - use ability: polymorph (Hu sorcress) [12-44-ID-ClickX/Y-TargetID]
  790. 6B 00 0D 00 - use ability: slow (Hu sorcress) [12-44-ID-ClickX/Y-TargetID]
  791. 6C 00 0D 00 - enable autocast slow (Hu sorcress) [10-42-ID]
  792. 6D 00 0D 00 - disable autocast slow (Hu sorcress) [10-42-ID]
  793. 72 00 0D 00 - call to arms (Hu townhall)
  794. 73 00 0D 00 - return to work (Hu townhall)
  795. 76 00 0D 00 - use ability: avatar (Hu Mountain King ultimate) [10-40-ID]
  796. 79 00 0D 00 - use ability: blizzard (Hu Archmage) [11-44-ID-ClickX/Y] [11-5C-ID-ClickX/Y]
  797. 7A 00 0D 00 - use ability: divine shield (Hu Paladin) [10-40-ID]
  798. 7B 00 0D 00 - use ability: divine shield - turn off(Hu Paladin) [10-40-ID]
  799. 7C 00 0D 00 - use ability: holy light (Hu Paladin) [12-44-ID-ClickX/Y-TargetID]
  800. 7D 00 0D 00 - use ability: mass teleportation (Hu Archmage) [12-44-ID-ClickX/Y-TargetID]
  801. 7E 00 0D 00 - use ability: revive (Hu Paladin ultimate) [10-44-ID]
  802. 7F 00 0D 00 - use ability: storm bolt (Hu Mountain King) [12-44-ID-ClickX/Y-TargetID]
  803. 80 00 0D 00 - use ability: clap (Hu Mountain King) [10-40-ID]
  804. 81 00 0D 00 - use ability: summon water elemental (Hu Archmage) [10-44-ID]
  805. - - - - - -
  806. 83 00 0D 00 - peons into combat positions (Orc Burrow)
  807. (p1.07) 84 00 0D 00 - Berserk (Orc troll berserker) [10- ]
  808. 85 00 0D 00 - use ability: bloodlust (Orc Shaman) [12-44-ID-ClickX/Y-TargetID]
  809. 86 00 0D 00 - enable autocast bloodlust (Orc Shaman) [10-42-ID]
  810. 87 00 0D 00 - disable autocast bloodlust (Orc Shaman) [10-42-ID]
  811. 88 00 0D 00 - use ability: devour (Orc Kodo beast) [12-44-ID-ClickX/Y-TargetID]
  812. 89 00 0D 00 - use ability: sentry ward (Orc Witch Doctor) [11-44-ID-ClickX/Y]
  813. 8A 00 0D 00 - use ability: entangle (Orc Raider) [12-44-ID-ClickX/Y-TargetID]
  814. 8D 00 0D 00 - use ability: healing ward (Orc Witch Doctor) [11-44-ID-ClickX/Y]
  815. 8E 00 0D 00 - use ability: lightning shield (Orc Shaman) [12-44-ID-ClickX/Y-TargetID]
  816. 8F 00 0D 00 - use ability: purge (Orc Shaman) [12-44-ID-ClickX/Y-TargetID]
  817. 91 00 0D 00 - return to work (Orc Burrow)
  818. 92 00 0D 00 - use ability: stasis trap (Orc Witch Doctor) [11-44-ID-ClickX/Y]
  819. 97 00 0D 00 - use ability: chain lightning (Orc Farseer) [12-44-ID-ClickX/Y-TargetID]
  820. 99 00 0D 00 - use ability: earthquake (Orc Farseer ultimate) [11-44-ID-ClickX/Y]
  821. 9A 00 0D 00 - use ability: farsight (Orc Farseer) [11-44-ID-ClickX/Y]
  822. 9B 00 0D 00 - use ability: mirror image (Orc Blademaster)
  823. 9D 00 0D 00 - use ability: shockwave (Orc Tauren Chieftain) [12-44-ID-ClickX/Y-TargetID] [14- ]
  824. 9E 00 0D 00 - use ability: shadow wolves (Orc Farseer)
  825. 9F 00 0D 00 - use ability: war stomp (Orc Tauren Chieftain) [10-40-ID]
  826. A0 00 0D 00 - use ability: blade storm (Orc Blademaster ultimate) [10-42-ID]
  827. A1 00 0D 00 - use ability: wind walk (Orc Blademaster) [10-42-ID]
  828. - - - - - -
  829. A3 00 0D 00 - use ability: shadowmeld (NE females)
  830. A4 00 0D 00 - use ability: dispell magic (NE Dryad) [12-44-ID-ClickX/Y-TargetID]
  831. A5 00 0D 00 - enable autocast: dispell magic (NE Dryad) [10-42-ID]
  832. A6 00 0D 00 - disable autocast: dispell magic (NE Dryad) [10-42-ID]
  833. AA 00 0D 00 - use ability: transform: DotC -> bear (NE DotC) [10-42-ID] (followed by [19-FF])
  834. AB 00 0D 00 - use ability: transform: bear -> DotC (NE DotC) [10-42-ID] (followed by [19-FF])
  835. AE 00 0D 00 - use ability: pick up archer (NE hippogryph) [12-44-ID-ClickX/Y-TargetID]
  836. AF 00 0D 00 - use ability: mount hippogryph (NE archer) [12-44-ID-ClickX/Y-TargetID]
  837. B0 00 0D 00 - use ability: cyclone (NE DotT) [12-44-ID-ClickX/Y-TargetID]
  838. B1 00 0D 00 - use ability: detonate (NE Wisp)
  839. B2 00 0D 00 - use ability: eat tree (NE Ancient) [12-44-ID-ClickX/Y-TargetID] [14- ]
  840. B3 00 0D 00 - use ability: entangle goldmine (NE Tree of Life) [12-40-ID-ClickX/Y-TargetID] [14- ]
  841. B5 00 0D 00 - use ability: feary fire (NE DotT) [12-44-ID-ClickX/Y-TargetID]
  842. B6 00 0D 00 - enable autocast: feary fire (NE DotT) [10-42-ID]
  843. B7 00 0D 00 - disable autocast: feary fire (NE DotT) [10-42-ID]
  844. BB 00 0D 00 - use ability: transform into crow form (NE DotT) [10-42-ID] (followed by [19-FF])
  845. BC 00 0D 00 - use ability: transform back from crow form (NE DotT) [10-42-ID] (followed by [19-FF])
  846. BD 00 0D 00 - use ability: replenish life/mana (NE Moon well) [12-44-ID-ClickX/Y-TargetID]
  847. BE 00 0D 00 - enable autocast: replenish life/mana (NE Moon well) [10-42-ID]
  848. BF 00 0D 00 - disable autocast: replenish life/mana (NE Moon well) [10-42-ID]
  849. C0 00 0D 00 - use ability: rejuvenation (NE DotC) [12-44-ID-ClickX/Y-TargetID]
  850. C1 00 0D 00 - use ability: renew (repair) (NE Wisp) [12-40-ID-ClickX/Y-UnitID]
  851. C2 00 0D 00 - enable autocast: renew (repair) (NE Wisp) [10-42-ID]
  852. C3 00 0D 00 - disable autocast: renew (repair) (NE Wisp) [10-42-ID]
  853. C4 00 0D 00 - use ability: roar (NE DotC) [10-44-ID]
  854. C5 00 0D 00 - use ability: root (NE Ancient) [11-04-ID-ClickX/Y]
  855. C6 00 0D 00 - use ability: uproot (NE Ancient) [10-40-ID]
  856. CB 00 0D 00 - use ability: entangling roots (NE KotG) [12-44-ID-ClickX/Y-TargetID]
  857. CD 00 0D 00 - use ability: searing arrow (NE PotM) [12-44-ID-ClickX/Y-TargetID]
  858. CE 00 0D 00 - enable autocast: searing arrow (NE PotM) [10-42-ID]
  859. CF 01 0D 00 - disable autocast: searing arrow (NE PotM) [10-42-ID]
  860. D0 00 0D 00 - use ability: summon treants (NE KotG)
  861. D1 00 0D 00 - use ability: immolation ON (NE Daemon Hunter) [10-42-ID]
  862. D2 00 0D 00 - use ability: immolation OFF (NE Daemon Hunter) [10-42-ID]
  863. D3 00 0D 00 - use ability: manaburn (NE Daemon Hunter) [12-44-ID-ClickX/Y-TargetID]
  864. D4 00 0D 00 - use ability: metamorphosis ((NE DH ultimate) [10-40-ID]
  865. D5 00 0D 00 - use ability: scout owl (NE PotM) [10-44-ID]
  866. D6 00 0D 00 - use ability: sentinel (NE huntress) [12-5C-ID-ClickX/Y-TargetID] [14- ]
  867. D7 00 0D 00 - use ability: starfall (NE PotM ultimate) [10-40-ID]
  868. D8 00 0D 00 - use ability: tranquility (NE KotG ultimate) [10-40-ID]
  869. - - - - - -
  870. DA 00 0D 00 - use ability: anti magic shell (UD Banshee) [12-44-ID-ClickX/Y-TargetID]
  871. DC 00 0D 00 - use ability: cannibalize (UD Ghoul) [10-40-ID]
  872. DD 00 0D 00 - use ability: cripple (UD Necromancer) [12-44-ID-ClickX/Y-TargetID]
  873. DE 00 0D 00 - use ability: curse (UD Banshee) [12-44-ID-ClickX/Y-TargetID]
  874. DF 00 0D 00 - enable autocast: curse (UD Banshee) [10-42-ID]
  875. E0 00 0D 00 - disable autocast: curse (UD Banshee) [10-42-ID]
  876. E4 00 0D 00 - use ability: possession (UD Banshee) [12-44-ID-ClickX/Y-TargetID]
  877. E6 00 0D 00 - enable autocast: raise skeletons (UD Necromancer) [10-42-ID]
  878. E7 00 0D 00 - disable autocast: raise skeletons (UD Necromancer) [10-42-ID]
  879. E8 00 0D 00 - use ability: raise skeletons (UD Necromancer) [10-40-ID]
  880. E9 00 0D 00 - use ability: sacrifice (UD Acolyte button) [12-44-ID-ClickX/Y-UnitID]
  881. EA 00 0D 00 - use ability: restore (repair) (UD Acolyte) [12-40-ID-ClickX/Y-UnitID]
  882. EB 00 0D 00 - enable autocast: restore (repair) (UD Acolyte) [10-42-ID]
  883. EC 00 0D 00 - disable autocast: restore (repair) (UD Acolyte) [10-42-ID]
  884. ED 00 0D 00 - use ability: sacrifice (Sacrificial Pit's button) [12-44-ID-ClickX/Y-UnitID]
  885. EE 00 0D 00 - transform: gargoyle -> stone (UD Gargoyle) [10-42-ID] (followed by a [19-FF])
  886. EF 00 0D 00 - transform: stone -> gargoyle (UD Gargoyle) [10-42-ID] (followed by a [19-FF])
  887. F1 00 0D 00 - use ability: unholy frenzy (UD Necromancer) [12-44-ID-ClickX/Y-TargetID]
  888. F2 00 0D 00 - use ability: unsummon (UD Acolyte) [12-44-ID-ClickX/Y-TargetID]
  889. F3 00 0D 00 - use ability: web (UD Crypt fiend) [12-44-ID-ClickX/Y-TargetID]
  890. F4 00 0D 00 - enable autocast: web (UD Crypt fiend) [10-42-ID]
  891. F5 00 0D 00 - disable autocast: web (UD Crypt fiend) [10-42-ID]
  892. F9 00 0D 00 - use ability: animate dead (UD DeathKnight ultimate) [10-44-ID]
  893. FA 00 0D 00 - use ability: swarm (UD Dreadlord) [12-44-ID-ClickX/Y-TargetID]
  894. FB 00 0D 00 - use ability: dark ritual (UD Lich) [12-44-ID-ClickX/Y-TargetID]
  895. FD 00 0D 00 - use ability: death and decay (UD Lich ultimate) [11-44-ID-ClickX/Y]
  896. FE 00 0D 00 - use ability: death coil (UD DeathKnight) [12-44-ID-ClickX/Y-TargetID]
  897. FF 00 0D 00 - use ability: death pact (UD DeathKnight) [12-44-ID-ClickX/Y-TargetID]
  898. 00 01 0D 00 - use ability: Inferno (UD Dreadlord ultimate) [11-44-ID-ClickX/Y]
  899. 01 01 0D 00 - use ability: frost armor (UD Lich) [12-44-ID-ClickX/Y-TargetID]
  900. 02 01 0D 00 - use ability: frost nova (UD Lich) [12-44-ID-ClickX/Y-TargetID]
  901. 03 01 0D 00 - use ability: sleep (UD Dreadlord) [12-44-ID-ClickX/Y-TargetID]
  902. - - - - - -
  903. 04 01 0D 00 - use ability: dark conversion (N Malganis) [12-44-ID-ClickX/Y-TargetID]
  904. 05 01 0D 00 - use ability: Dark portal (N Archimonde) [11-44-ID-ClickX/Y]
  905. 06 01 0D 00 - use ability: Finger of death (N Archimonde) [12-44-ID-ClickX/Y-TargetID]
  906. 07 01 0D 00 - use ability: Firebolt (N Warlock) [12-44-ID-ClickX/Y-TargetID]
  907. (p1.07) 0E 01 0D 00 - use ability: Rain of Fire (Hero: Pit Lord) [11-44-ID-ClickX/Y]
  908. use ability: Chaos rain (Archimonde) [11-44-ID-ClickX/Y]
  909. use ability: Fire rain (daemonic statue) [11-44-ID-ClickX/Y]
  910. 12 01 0D 00 - use ability: soul preservation (N Malganis) [12-44-ID-ClickX/Y-TargetID]
  911. 13 01 0D 00 - use ability: cold arrows (N Sylvana) [12-44-ID-ClickX/Y-TargetID]
  912. 14 01 0D 00 - enable autocast: cold arrows (N Sylvana) [10-42-ID]
  913. 15 01 0D 00 - disable autocast: cold arrows (N Sylvana) [10-42-ID]
  914. 16 01 0D 00 - use ability: animate dead (N Satyr Hellcaller) [10-40-ID]
  915. 17 01 0D 00 - use ability: devour (N Storm Wyrm) [12-44-ID-ClickX/Y-TargetID]
  916. 18 01 0D 00 - use ability: heal (N Troll Shadowpriest) [12-44-ID-ClickX/Y-TargetID]
  917. 19 01 0D 00 - enable autocast: heal (N Troll Shadowpriest) [10-42-ID]
  918. 1A 01 0D 00 - disable autocast: heal (N Troll Shadowpriest) [10-42-ID]
  919. 1C 01 0D 00 - use ability: creep storm bolt (N Stone Golem) [12-44-ID-ClickX/Y-TargetID] [14- ]
  920. 1D 01 0D 00 - use ability: creep thunder clap (N Granit Golem) [10-40-ID]
  921. (p1.07) 2E 01 0D 00 - use ability: reveal (HU Arcane Tower) [11-]
  922. - - - - - -
  923. E9 01 0D 00 - enable autocast frost armor (UD Lich) [10-42-ID] (added patch 1.03)
  924. (<p1.07) EA 01 0D 00 - disable autocast frost armor (UD Lich) [10-42-ID] (added patch 1.03)
  925. (p1.07) EA 01 0D 00 - enable autocast frost armor (UD Lich) [10-42-ID]
  926. (p1.07) EB 01 0D 00 - disable autocast frost armor (UD Lich) [10- ]
  927. all unitIDs below are introduced with patch 1.07:
  928. EE 01 0D 00 - revive first dead hero on tavern [12- ]
  929. EF 01 0D 00 - revive second dead hero on tavern [12- ]
  930. F0 01 0D 00 - revive third dead hero on tavern [12- ]
  931. F1 01 0D 00 - revive 4th dead hero on tavern [12- ]
  932. F2 01 0D 00 - revive 5th dead hero on tavern [12- ]
  933. - - - - - -
  934. F9 01 0D 00 - Cloud (HU dragonhawk rider) [11- ]
  935. FA 01 0D 00 - Control Magic (HU spell breaker) [12- ]
  936. 00 02 0D 00 - Aerial Shackles (HU dragonhawk rider) [12- ]
  937. 03 02 0D 00 - Spell Steal (HU spell breaker) [12- ]
  938. 04 02 0D 00 - enable autocast: Spell Steal (HU spell breaker) [10- ]
  939. 05 02 0D 00 - disable autocast: Spell Steal (HU spell breaker) [10- ]
  940. 06 02 0D 00 - Banish (HU blood mage) [12- ]
  941. 07 02 0D 00 - Siphon Mana (HU blood mage / Dark Ranger) [12- ]
  942. 08 02 0D 00 - Flame Strike (HU blood mage) [11- ]
  943. 09 02 0D 00 - Phoenix (HU blood mage ultimate) [10- ]
  944. - - - - - -
  945. 0A 02 0D 00 - Ancestral Spirit (Orc spirit walker) [10- ]
  946. 0D 02 0D 00 - transform to Corporeal Form (Orc spirit walker) [10- ]
  947. 0E 02 0D 00 - transform to Ethereal Form (Orc spirit walker) [10- ]
  948. 13 02 0D 00 - spirit link (Orc spirit walker) [12- ]
  949. 14 02 0D 00 - Unstable Concoction (Orc troll batrider) [12- ]
  950. 15 02 0D 00 - Healing Wave (Orc shadow hunter) [12- ]
  951. 16 02 0D 00 - Hex (Orc shadow hunter) [12- ]
  952. 17 02 0D 00 - Big Bad Voodoo (Orc shadow hunter ultimate) [10- ]
  953. 18 02 0D 00 - Serpent Ward (Orc shadow hunter) [11- ]
  954. - - - - - -
  955. 1C 02 0D 00 - build Hippogryph Rider (NE archer / hippogryph) [10- ]
  956. 1D 02 0D 00 - separate Archer (NE hippograph raider) [10- ]
  957. 1F 02 0D 00 - War Club (NE mountain giant) [12- ]
  958. 20 02 0D 00 - Mana Flare (NE faerie dragon) [10- ]
  959. 21 02 0D 00 - Mana Flare (NE faerie dragon) [10- ]
  960. 22 02 0D 00 - Phase Shift (NE faerie dragon) [10- ]
  961. 23 02 0D 00 - enable autocast: Phase Shift (NE faerie dragon) [10- ]
  962. 24 02 0D 00 - disable autocast: Phase Shift (NE faerie dragon) [10- ]
  963. 28 02 0D 00 - Taunt (NE mountain giant) [10- ]
  964. 2A 02 0D 00 - enable autocast: Spirit of Vengeance (NE vengeance ultimate) [10- ]
  965. 2B 02 0D 00 - disable autocast: Spirit of Vengeance (NE vengeance ultimate) [10- ]
  966. 2C 02 0D 00 - Spirit of Vengeance (NE vengeance ultimate) [10- ]
  967. 2D 02 0D 00 - Blink (NE warden) [11- ]
  968. 2E 02 0D 00 - Fan of Knives (NE warden) [10- ]
  969. 2F 02 0D 00 - Shadow Strike (NE warden) [12- ]
  970. 30 02 0D 00 - Vengeance (NE warden ultimate) [10- ]
  971. - - - - - -
  972. 31 02 0D 00 - Absorb Mana (UD destroyer) [12- ]
  973. 33 02 0D 00 - morph to Destroyer (UD obsidian statue) [10- ]
  974. 35 02 0D 00 - Burrow (UD crypt fiend / carrion beetle) [10- ]
  975. 36 02 0D 00 - Unburrow (UD crypt fiend / carrion beetle) [10- ]
  976. 38 02 0D 00 - Devour Magic (UD destroyer) [11- ]
  977. 3B 02 0D 00 - Orb of Annihilation (UD destroyer) [12- ]
  978. 3C 02 0D 00 - enable autocast: Orb of Annihilation (UD destroyer) [10- ]
  979. 3D 02 0D 00 - disable autocast: Orb of Annihilation (UD destroyer) [10- ]
  980. 41 02 0D 00 - Essence of Blight (UD obsidian statue) [10- ]
  981. 42 02 0D 00 - enable autocast: Essence of Blight (UD obsidian statue) [10- ]
  982. 43 02 0D 00 - disable autocast: Essence of Blight (UD obsidian statue) [10- ]
  983. 44 02 0D 00 - Spirit Touch (UD obsidian statue) [10- ]
  984. 45 02 0D 00 - enable autocast: Spirit Touch (UD obsidian statue) [10- ]
  985. 46 02 0D 00 - disable autocast: Spirit Touch (UD obsidian statue) [10- ]
  986. 48 02 0D 00 - enable autocast: Carrion Beetles (UD crypt lord) [10- ]
  987. 49 02 0D 00 - disable autocast: Carrion Beetles (UD crypt lord) [10- ]
  988. 4A 02 0D 00 - Carrion Beetle (UD crypt lord) [10- ]
  989. 4B 02 0D 00 - Impale (UD crypt lord) [12- ]
  990. 4C 02 0D 00 - Locust Swarm (UD crypt lord ultimate) [10- ]
  991. - - - - - -
  992. 51 02 0D 00 - Frenzy (beastmasters quilbeast) [10- ]
  993. 52 02 0D 00 - enable autocast: Frenzy (beastmasters quilbeast) [10- ]
  994. 53 02 0D 00 - disable autocast: Frenzy (beastmasters quilbeast) [10- ]
  995. - - - - - -
  996. 56 02 0D 00 - Change Shop Buyer [12- ]
  997. - - - - - -
  998. 61 02 0D 00 - Black Arrow (Hero: Dark Ranger) [12- ]
  999. 62 02 0D 00 - enable autocast: Black Arrow (Hero: Dark Ranger) [10- ]
  1000. 63 02 0D 00 - disable autocast: Black Arrow (Hero: Dark Ranger) [10- ]
  1001. 64 02 0D 00 - Breath of Fire (Hero: Pandaren Brewmaster) [12- ]
  1002. 65 02 0D 00 - Charm (Hero: Dark Ranger ultimate) [12- ]
  1003. 67 02 0D 00 - Doom (Hero: Pit Lord ultimate) [12- ]
  1004. 69 02 0D 00 - Drunken Haze (Hero: Pandaren Brewmaster) [12- ]
  1005. 6A 02 0D 00 - Storm, Earth and Fire (Hero: Pandaren ultimate) [10- ]
  1006. 6B 02 0D 00 - Forked Lightning (Hero: Naga Sea Witch) [12- ]
  1007. 6C 02 0D 00 - Howl of Terror (Hero: Pit Lord) [10- ]
  1008. 6D 02 0D 00 - Mana Shield (Hero: Naga Sea Witch) [10- ]
  1009. 6E 02 0D 00 - Mana Shield (Hero: Naga Sea Witch) [10- ]
  1010. 70 02 0D 00 - Silence (Hero: Dark Ranger) [11- ]
  1011. 71 02 0D 00 - Stampede (Hero: Beastmaster ultimate) [12- ] [14- ]
  1012. 72 02 0D 00 - Summon Bear (Hero: Beastmaster) [10- ]
  1013. 73 02 0D 00 - Summon Quilbeast (Hero: Beastmaster) [10- ]
  1014. 74 02 0D 00 - Summon Hawk (Hero: Beastmaster) [10- ]
  1015. 75 02 0D 00 - Tornado (Hero: Naga Sea Witch ultimate) [11- ]
  1016. 76 02 0D 00 - Summon Prawn (N Makrura Snapper) [10- ]
  1017. (p1.15) AC 02 0D 00 - Cluster Rockets (Hero: Goblin Tinker) [11- ]
  1018. (p1.15) B0 02 0D 00 - Robo-Goblin (Hero: Goblin Tinker ultimate) [10- ]
  1019. (p1.15) B1 02 0D 00 - Revert to Tinker (Hero: Goblin Tinker) [10- ]
  1020. (p1.15) B2 02 0D 00 - Pocket Factory (Hero: Goblin Tinker) [11- ]
  1021. (p1.17) B6 02 0D 00 - Acid Bomb (Hero: Goblin Alchemist) [12- ]
  1022. (p1.17) B7 02 0D 00 - Chemical Rage (Hero: Goblin Alchemist) [10- ]
  1023. (p1.17) B8 02 0D 00 - Healing Spray (Hero: Goblin Alchemist) [11- ]
  1024. (p1.17) B9 02 0D 00 - Transmute (Hero: Goblin Alchemist) [10- ]
  1025. (p1.17) BB 02 0D 00 - Summon Lava Spawn (Hero: Fire Lord) [10- ]
  1026. (p1.17) BC 02 0D 00 - Soulburn (Hero: Fire Lord) [12- ]
  1027. (p1.17) BD 02 0D 00 - Volcano (Hero: Fire Lord) [11- ]
  1028. (p1.18) BE 02 0D 00 - Incinerate (Hero: Fire Lord) [10- ]
  1029. (p1.18) BF 02 0D 00 - enable autocast: Incinerate (Hero: Fire Lord) [10- ]
  1030. (p1.18) C0 02 0D 00 - disable autocast: Incinerate (Hero: Fire Lord) [10- ]
  1031. The following abilities are present in the world editor but cannot be used
  1032. in the game (and therefore the ItemID remains unknown):
  1033. - Tank Load Pilot (HU) (game crashes)
  1034. - Tank Drop Pilot (HU) (Msg: "no pilot present")
  1035. - Pilot Tank (HU) (Msg: "unit not a tank")
  1036. - Gold2Lumber Exchange (disabled)
  1037. - Lumber2Gold Exchange (disabled)
  1038. ===============================================================================
  1039. 5.0 Object ID's
  1040. ===============================================================================
  1041. Every single object (units, heros, items, buildings, summons, even trees) in a
  1042. replay gets a unique number, the ObjectID. It is used as a reference to this
  1043. object in 'change selection' actions or for denoting target objects.
  1044. Warcraft generates the number probably just-in-time and (more or less)
  1045. upcounting.
  1046. One ObjectID consists of two doubleword numbers. Sometimes these numbers are
  1047. equal (probably for all objects that exist at the start of the game).
  1048. Notes:
  1049. o ObjectIDs are still an unsolved problem in replays.
  1050. (And will maybe never be solved in a usable way.
  1051. Maybe the new action 0x1A introduced with patch 1.14b can be used to get
  1052. some usable information out of the ObjectID's.)
  1053. ===============================================================================
  1054. 6.0 Click Coordinates
  1055. ===============================================================================
  1056. Click coordinates are standard IEEE single precision floats (4 bytes)
  1057. corresponding to the coordinates in World Editor.
  1058. Notes:
  1059. o The center of the map has the coordinates (0,0).
  1060. //FIXME: its rather the center of map coordinate range
  1061. o The range of the coordinates depends on the size of the map and the
  1062. equivalent settings in the World Editor.
  1063. o Maximum range is -16384.000 to 16384.000 (256x256 maps).
  1064. o Buildings can only be placed on a discrete grid.
  1065. The grid step size is 64.00 Units per grid line.
  1066. ===============================================================================
  1067. 7.0 General notes
  1068. ===============================================================================
  1069. o Patch 1.07 represents the retail version of the expansion pack
  1070. 'The Frozen Throne' (TFT). It was immediatlely followed by a patch 1.10 that
  1071. brought both TFT and ROC to the same patch level. Actually both game
  1072. versions seem to use the improved TFT game engine.
  1073. o There are only user inputs in a replay. There are no computer actions, no
  1074. 'training complete' data, no results of fights, no information about death
  1075. of units, etc..
  1076. o Most actions in the replay are right-click actions. The true actions they
  1077. are translated to by the game remain hidden.
  1078. o There are no special actions for build, skill, train etc.
  1079. There are only five basic actions for this task (0x10 - 0x14) that
  1080. differ in the number of arguments provided.
  1081. The true nature of the action is only detectable by the provided ItemID.
  1082. o Build actions that failed due to unsufficient resources are not saved
  1083. in the replay !
  1084. o There is no difference regarding action codes between a train action for a
  1085. single building and a train action for two or more buildings.
  1086. One cannot determine whether a unit is build in all of the selected
  1087. buildings or only in one. It depends on resources and food supply but is
  1088. not denoted in the replay.
  1089. o There are no notifications in the replay, if a player overrides a command
  1090. before it was executed (e.g. by giving the unit a new order while it is on
  1091. the way to execute an ability at a distant location/target).
  1092. Therefore for all actions 0x11-0x14 one cannot be sure whether the assigned
  1093. action was really executed.
  1094. o Changing map colors (friend/foe) is not recorded in replay.
  1095. o Selecting already selected units gives no additional actions in the replay!
  1096. o Day/night changes are not denoted in the replay data.
  1097. o Any field of view changes (e.g. click on minimap, 'space', 'ctrl-c')
  1098. are not saved in the replay.
  1099. o In replays of patch version <= 1.06 only chat messages that activate
  1100. map triggers are saved (action 0x60).
  1101. ===============================================================================
  1102. 8.0 Notes on older Patches
  1103. ===============================================================================
  1104. Pre Patch 1.14b:
  1105. o Action 0x19 was used instead of action 0x1A.
  1106. o Action 0x1B - 0x1E were shifted down by one (0x1A - 0x1D).
  1107. Pre patch 1.13:
  1108. o AbilityFlag (action 0x10-0x14) was only a byte, instead of a word.
  1109. o Actions 0x10 - 0x14 were 1 byte shorter.
  1110. Pre patch 1.07:
  1111. o Chat text messages were not saved
  1112. o Actions 0x10 - 0x14 were 8 bytes shorter.
  1113. o Actions 0x62 used to be 4 bytes shorter.
  1114. o There was *one* action missing between 0x63 and 0x65 (the specific action
  1115. is still unknown). So all following actions were shifted by one.
  1116. Pre patch 1.03:
  1117. o (TODO)
  1118. Frozen Throne Beta Replays:
  1119. o (not investigated)
  1120. ===============================================================================
  1121. 9.0 Credits
  1122. ===============================================================================
  1123. We like to thank the following people for their help on decoding the
  1124. W3G action format (in alphabetical order):
  1125. o Jca for
  1126. - inspiration by publishing w3chart and bwchart
  1127. o Julas for
  1128. - help on changes in patch 1.13, 1.17
  1129. - hint on correct interpretation of 0x19/0x1a select subgroup command
  1130. - many other hints and comments
  1131. o JemHadar for
  1132. - info on changed size of Abilityflags in 1.13
  1133. o Kliegs for
  1134. - hosting a CVS for replay format related documents
  1135. o LeoLeal for
  1136. - investigations on patches 1.17
  1137. o Mike for
  1138. - finding the meaning of action 0x1C
  1139. - finding upshifted actions 0x1B-0x1E in patch 1.14b
  1140. - documenting new action 0x1A in patch 1.14b
  1141. o Pr1v for
  1142. - documenting actions 0x1A and 0x75
  1143. o ShadowFlare for
  1144. - WinMPQ
  1145. - hosting the developer forum
  1146. o Soar
  1147. - hint on additional dword in action 0x62
  1148. - hint on correct interpretation of 0x19/0x1a select subgroup command
  1149. o Ziutek for
  1150. - Total Commander MPQ plugin
  1151. We like to thank the following people for their help on working out the
  1152. APM standard (in alphabetical order again):
  1153. o kackn00b
  1154. o LeoLeal
  1155. o Mike
  1156. o MrO
  1157. o Pr1v
  1158. o Soar
  1159. If we forgot to mention someone here, please let us know.
  1160. We are only human too :D
  1161. ===============================================================================
  1162. 10.0 Document revision history
  1163. ===============================================================================
  1164. o general notes
  1165. + information added
  1166. - information changed
  1167. version 1.00 (2005-04-30)
  1168. -------------------------
  1169. 2005-04-30: o finally tagged this an 1.xx version (yeah!)
  1170. 2005-04-30: - updated credits (did we forget someone?)
  1171. 2005-04-26: - did some additions and fixes on the new heros (numeric IDs)
  1172. (thx LeoLeal, Julas)
  1173. 2005-04-26: + added numeric IDs for autocast Incinerate (patch 1.18)
  1174. 2005-04-26: - huge fix on 0x19/0x1a select subgroup command
  1175. (thanks to Soar and Julas once again)
  1176. version 0.98 (2004-10-02) (internal)
  1177. -------------------------
  1178. 2004-10-02: + added new heros introduced with patch 1.17 (thx Soar)
  1179. 2004-04-20: + added 'Goblin Tinker' abilities
  1180. version 0.97 (2004-01-18)
  1181. -------------------------
  1182. 2004-01-28: - some minor additions and corrections.
  1183. 2004-01-17: + added notes on patch 1.14b in section 8
  1184. 2004-01-17: - changed action 0x1B-0x1E for patch 1.14b
  1185. 2004-01-17: + added new action 0x1A (SelectSubgroup) for patch 1.14b
  1186. version 0.96 (2004-01-02)
  1187. -------------------------
  1188. 2004-01-02: o release candidate 5
  1189. 2004-01-01: - changed APM algorithm for action 0x19 (SelectSubgroup)
  1190. 2004-01-01: + added patch 1.13 related note in action 0x19 (SelectSubgroup)
  1191. 2003-12-27: + added actions 0x1A and 0x75
  1192. 2003-12-25: + added notes on patch 1.13 in section 8
  1193. 2003-12-20: + added some more credits
  1194. 2003-12-18: + added more information on changed AbilityFlags value.
  1195. 2003-12-18: + added new (1.13) action 0x1C
  1196. 2003-12-17: - changed Abilityflags from 'byte' to 'word' for patch 1.13+
  1197. 2003-12-15: - fixed developer forum URL in header
  1198. version 0.95 (2003-12-14)
  1199. -------------------------
  1200. 2003-12-14: o release candidate 4
  1201. 2003-12-14: - various minor tweaks
  1202. 2003-12-06: - replaced term 'command' with term 'action' in many places.
  1203. 2003-12-06: - more differentiated use of the term 'select' in various places.
  1204. 2003-12-06: - renamed action 0x16 from 'Select' to 'Change Selection'.
  1205. 2003-12-06: - fixed various minor typos and grammar mistakes.
  1206. 2003-12-05: - changed APM algorithm for action 0x16
  1207. version 0.94 (2003-12-02)
  1208. -------------------------
  1209. 2003-12-02: o release candidate 3
  1210. 2003-12-02: - killed a lot of trailing spaces
  1211. 2003-11-11: - fixed typos and grammar at various places
  1212. 2003-10-30: + added section and notes about standardized APM
  1213. 2003-09-27: - changed note on Pause action
  1214. 2003-09-27: - changed note on ContinueGame action
  1215. version 0.93 (2003-09-20)
  1216. -------------------------
  1217. o release candidate 2
  1218. o various layout improvements
  1219. + added coordinate information
  1220. + added ObjectID information
  1221. + added ItemID for 'abort divine shield'
  1222. + added ItemID for manual use of 'Spell Steal'
  1223. + added ItemID for 'reveal (Human arcane tower)'
  1224. + added continue game block description
  1225. - fixed parameter of action 0x3E (cheat 'daylightsavings')
  1226. - fixed some errors in description of action 0x50 (ally options)
  1227. - changed section 1 - Introduction
  1228. - changed section 5 - ItemID
  1229. - various minor fixes and updates
  1230. version 0.92 (2003-07-22)
  1231. -------------------------
  1232. o release candidate 1
  1233. + added actions for single player cheats
  1234. + added data dword for action 0x62 (thx Soar)
  1235. + added some additional notes to disclaimer
  1236. + added many/most TFT unitIDs
  1237. - fixed typo with size of action 0x11
  1238. - fixed size of action 0x62 (changed in 1.07)
  1239. - renamed mostly all 'patch 1.10' to 'patch 1.07',
  1240. because first TFT release was 1.07 and the replays had the same structure
  1241. as in 1.10
  1242. o some minor layout changes
  1243. version 0.91 (2003-07-14)
  1244. -------------------------
  1245. o fixed size bug of action 0x11 (thx to A. Chaschev)
  1246. version 0.90 (2003-06-29)
  1247. -------------------------
  1248. o internal beta for release version
  1249. ===============================================================================
  1250. Test this !
  1251. ===============================================================================
  1252. Following are some internal notes for further research (partly german - sorry).
  1253. - more menu options
  1254. - 'CTRL' key option in game options menu
  1255. - 0x14 command - double rightclick ?
  1256. - AbilityFlags weiter untersuchen
  1257. Add this:
  1258. - APM testsuite + logo
  1259. ===============================================================================
  1260. End of File
  1261. ===============================================================================