warscript 0.0.1-dev.d6e2c10 → 0.0.1-dev.d77b529

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/core/dummy.lua +4 -2
  2. package/core/types/effect.d.ts +11 -1
  3. package/core/types/effect.lua +43 -77
  4. package/core/types/frame.d.ts +1 -0
  5. package/core/types/frame.lua +112 -37
  6. package/core/types/handle.lua +9 -9
  7. package/core/types/item.d.ts +1 -0
  8. package/core/types/item.lua +1 -0
  9. package/core/types/player.d.ts +2 -1
  10. package/core/types/player.lua +18 -13
  11. package/core/types/playerColor.lua +4 -3
  12. package/core/types/sound.d.ts +1 -1
  13. package/core/types/sound.lua +14 -9
  14. package/core/types/unit.d.ts +5 -0
  15. package/core/types/unit.lua +5 -0
  16. package/core/util.d.ts +3 -1
  17. package/core/util.lua +109 -3
  18. package/decl/native.d.ts +705 -7
  19. package/engine/behavior.d.ts +4 -2
  20. package/engine/behavior.lua +69 -11
  21. package/engine/behaviour/ability/apply-unit-behavior.lua +5 -0
  22. package/engine/behaviour/ability/damage.d.ts +4 -0
  23. package/engine/behaviour/ability/damage.lua +19 -15
  24. package/engine/behaviour/ability/emulate-impact.lua +5 -4
  25. package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
  26. package/engine/behaviour/ability/on-command-impact.lua +1 -0
  27. package/engine/behaviour/ability.d.ts +11 -5
  28. package/engine/behaviour/ability.lua +54 -0
  29. package/engine/behaviour/unit/stun-immunity.d.ts +1 -1
  30. package/engine/behaviour/unit/stun-immunity.lua +5 -4
  31. package/engine/behaviour/unit.d.ts +1 -0
  32. package/engine/behaviour/unit.lua +14 -3
  33. package/engine/buff.d.ts +64 -25
  34. package/engine/buff.lua +345 -156
  35. package/engine/index.d.ts +2 -1
  36. package/engine/internal/ability.d.ts +4 -0
  37. package/engine/internal/ability.lua +56 -36
  38. package/engine/internal/item/fields.d.ts +12 -0
  39. package/engine/internal/item/fields.lua +33 -0
  40. package/engine/internal/item/owner-cache.d.ts +5 -0
  41. package/engine/internal/item/owner-cache.lua +4 -0
  42. package/engine/internal/item+owner.d.ts +2 -0
  43. package/engine/internal/item+owner.lua +27 -4
  44. package/engine/internal/item.d.ts +20 -5
  45. package/engine/internal/item.lua +146 -57
  46. package/engine/internal/mechanics/cast-ability.lua +6 -3
  47. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  48. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  49. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  50. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  51. package/engine/internal/object-data/health-bonus.lua +16 -0
  52. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  53. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  54. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  55. package/engine/internal/object-data/mana-bonus.lua +16 -0
  56. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  57. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  58. package/engine/internal/unit/ability.lua +15 -3
  59. package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
  60. package/engine/internal/unit/add-item-to-slot.lua +53 -12
  61. package/engine/internal/unit/appearance.d.ts +15 -0
  62. package/engine/internal/unit/appearance.lua +85 -0
  63. package/engine/internal/unit/attributes.d.ts +17 -0
  64. package/engine/internal/unit/attributes.lua +46 -0
  65. package/engine/internal/unit/bonus.d.ts +14 -0
  66. package/engine/internal/unit/bonus.lua +102 -8
  67. package/engine/internal/unit/buff.d.ts +2 -2
  68. package/engine/internal/unit/buff.lua +34 -19
  69. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  70. package/engine/internal/unit/equipment-inventory.lua +233 -0
  71. package/engine/internal/unit/expiration-timer.lua +1 -1
  72. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  73. package/engine/internal/unit/extended-inventory.lua +99 -0
  74. package/engine/internal/unit/fly-height.lua +3 -3
  75. package/engine/internal/unit/ignore-events-items.lua +10 -1
  76. package/engine/internal/unit/interrupts.d.ts +12 -0
  77. package/engine/internal/unit/interrupts.lua +28 -0
  78. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
  79. package/engine/internal/unit/inventory.lua +87 -0
  80. package/engine/internal/unit/item-container.d.ts +25 -0
  81. package/engine/internal/unit/item-container.lua +11 -0
  82. package/engine/internal/unit/item-order-events.d.ts +17 -0
  83. package/engine/internal/unit/item-order-events.lua +67 -0
  84. package/engine/internal/unit/item-slot.d.ts +27 -0
  85. package/engine/internal/unit/item-slot.lua +92 -0
  86. package/engine/internal/unit/order.d.ts +3 -3
  87. package/engine/internal/unit/order.lua +10 -10
  88. package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
  89. package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
  90. package/engine/internal/unit/range-event.d.ts +12 -0
  91. package/engine/internal/unit/range-event.lua +90 -0
  92. package/engine/internal/unit/scale.lua +3 -3
  93. package/engine/internal/unit+ability.d.ts +2 -1
  94. package/engine/internal/unit+ability.lua +63 -2
  95. package/engine/internal/unit+bonus.lua +3 -3
  96. package/engine/internal/unit+damage.d.ts +9 -0
  97. package/engine/internal/unit+damage.lua +33 -0
  98. package/engine/internal/unit+rally.lua +9 -31
  99. package/engine/internal/unit-missile-data.lua +58 -32
  100. package/engine/internal/unit-missile-launch.lua +25 -18
  101. package/engine/internal/unit.d.ts +3 -18
  102. package/engine/internal/unit.lua +97 -195
  103. package/engine/local-client.d.ts +27 -1
  104. package/engine/local-client.lua +298 -58
  105. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  106. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  107. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  108. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  109. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  110. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  111. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  112. package/engine/object-data/auxiliary/item-class.lua +2 -0
  113. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  114. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  115. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  116. package/engine/object-data/auxiliary/order-type.lua +2 -0
  117. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  118. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  119. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  120. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  121. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  122. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  123. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  124. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  125. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  126. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  127. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  128. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  129. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  130. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  131. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  132. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  133. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
  134. package/engine/object-data/entry/ability-type/blank-configurable.lua +30 -0
  135. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  136. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  137. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  138. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  139. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  140. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  141. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  142. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  143. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  144. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  145. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  146. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  147. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  148. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  149. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  150. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  151. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  152. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  153. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  154. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  155. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  156. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  157. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  158. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  159. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  160. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  161. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  162. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  163. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  164. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  165. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  166. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  167. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  168. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  169. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  170. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  171. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  172. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  173. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  174. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  175. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  176. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  177. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  178. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  179. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  180. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  181. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  182. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  183. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  184. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  185. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  186. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  187. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  188. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  189. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  190. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  191. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  192. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  193. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  194. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  195. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  196. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  197. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  198. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  199. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  200. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  201. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  202. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  203. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  204. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  205. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  206. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  207. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  208. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  209. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  210. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  211. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  212. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  213. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  214. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  215. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  216. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  217. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  218. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  219. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  220. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  221. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  222. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  223. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  224. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  225. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  226. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  227. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  228. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  229. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  230. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  231. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  232. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  233. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  234. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  235. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  236. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  237. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  238. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  239. package/engine/object-data/entry/ability-type.d.ts +18 -3
  240. package/engine/object-data/entry/ability-type.lua +222 -5
  241. package/engine/object-data/entry/buff-type/applicable.lua +113 -109
  242. package/engine/object-data/entry/buff-type.d.ts +6 -2
  243. package/engine/object-data/entry/buff-type.lua +26 -0
  244. package/engine/object-data/entry/destructible-type.d.ts +16 -2
  245. package/engine/object-data/entry/destructible-type.lua +91 -0
  246. package/engine/object-data/entry/item-type.d.ts +18 -3
  247. package/engine/object-data/entry/item-type.lua +84 -0
  248. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  249. package/engine/object-data/entry/lightning-type.lua +1 -1
  250. package/engine/object-data/entry/sound-preset.d.ts +2 -2
  251. package/engine/object-data/entry/unit-type.d.ts +47 -2
  252. package/engine/object-data/entry/unit-type.lua +383 -49
  253. package/engine/object-data/entry/upgrade.d.ts +2 -2
  254. package/engine/object-data/entry.d.ts +6 -1
  255. package/engine/object-data/entry.lua +8 -0
  256. package/engine/object-field/ability.lua +2 -2
  257. package/engine/object-field/item.d.ts +22 -0
  258. package/engine/object-field/item.lua +118 -0
  259. package/engine/object-field/unit.d.ts +7 -4
  260. package/engine/object-field/unit.lua +4 -0
  261. package/engine/object-field.d.ts +3 -1
  262. package/engine/object-field.lua +177 -119
  263. package/engine/random.d.ts +1 -0
  264. package/engine/random.lua +8 -0
  265. package/engine/standard/entries/ability-type.d.ts +3102 -7
  266. package/engine/standard/entries/ability-type.lua +0 -6
  267. package/engine/standard/entries/item-type.d.ts +1299 -0
  268. package/engine/standard/entries/item-type.lua +2 -0
  269. package/engine/standard/entries/lightning-type.d.ts +42 -15
  270. package/engine/standard/entries/lightning-type.lua +0 -14
  271. package/engine/standard/entries/unit-type.d.ts +5 -0
  272. package/engine/standard/entries/unit-type.lua +5 -0
  273. package/engine/standard/fields/item.d.ts +4 -0
  274. package/engine/standard/fields/item.lua +6 -0
  275. package/engine/standard/fields/unit.d.ts +11 -5
  276. package/engine/standard/fields/unit.lua +13 -4
  277. package/engine/unit.d.ts +8 -1
  278. package/engine/unit.lua +8 -1
  279. package/event.d.ts +1 -1
  280. package/lualib_bundle.lua +1 -1
  281. package/math.d.ts +2 -0
  282. package/math.lua +14 -0
  283. package/network.lua +25 -1
  284. package/objutil/buff.lua +10 -8
  285. package/objutil/object.lua +1 -1
  286. package/operation.d.ts +8 -1
  287. package/operation.lua +38 -18
  288. package/package.json +3 -23
  289. package/patch-lua.lua +15 -0
  290. package/utility/linked-map.d.ts +35 -0
  291. package/utility/linked-map.lua +107 -0
  292. package/utility/linked-set.d.ts +3 -1
  293. package/utility/linked-set.lua +27 -0
  294. package/utility/random.d.ts +102 -0
  295. package/utility/random.lua +273 -0
  296. package/utility/records.lua +20 -1
  297. package/utility/unordered-map.d.ts +27 -0
  298. package/utility/unordered-map.lua +99 -0
  299. package/engine/internal/unit/item.lua +0 -78
  300. /package/engine/internal/{object-data/armor-increase.d.ts → misc/unit-ability-level-natives.d.ts} +0 -0
  301. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  302. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  303. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -1,10 +1,10 @@
1
1
  local ____lualib = require("lualib_bundle")
2
- local __TS__ArrayMap = ____lualib.__TS__ArrayMap
2
+ local __TS__New = ____lualib.__TS__New
3
3
  local __TS__Class = ____lualib.__TS__Class
4
4
  local __TS__InstanceOf = ____lualib.__TS__InstanceOf
5
5
  local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
6
- local __TS__New = ____lualib.__TS__New
7
6
  local ____exports = {}
7
+ local actualizeTargetingModeState
8
8
  local ____unit = require("core.types.unit")
9
9
  local Unit = ____unit.Unit
10
10
  local ____event = require("event")
@@ -18,34 +18,97 @@ local ____timer = require("core.types.timer")
18
18
  local Timer = ____timer.Timer
19
19
  local ____color = require("core.types.color")
20
20
  local Color = ____color.Color
21
- local loadTOCFile = BlzLoadTOCFile
22
- local getLocalClientWidth = BlzGetLocalClientWidth
23
- local getLocalClientHeight = BlzGetLocalClientHeight
24
- local isLocalClientActive = BlzIsLocalClientActive
25
- local isHeroUnitId = IsHeroUnitId
21
+ local ____arrays = require("utility.arrays")
22
+ local array = ____arrays.array
23
+ local frameToPixelX = BlzFrameToPixelX
24
+ local frameToPixelY = BlzFrameToPixelY
26
25
  local getHandleId = GetHandleId
26
+ local getLocalClientHeight = BlzGetLocalClientHeight
27
+ local getLocalClientWidth = BlzGetLocalClientWidth
28
+ local getLocale = BlzGetLocale
27
29
  local getMouseFocusUnit = BlzGetMouseFocusUnit
30
+ local getMouseScreenPosX = BlzGetMouseScreenPosX
31
+ local getMouseScreenPosY = BlzGetMouseScreenPosY
32
+ local frameGetText = BlzFrameGetText
28
33
  local getUnitRealField = BlzGetUnitRealField
34
+ local getUnitState = GetUnitState
29
35
  local getUnitTypeId = GetUnitTypeId
30
- local getLocale = BlzGetLocale
36
+ local isHeroUnitId = IsHeroUnitId
37
+ local isKeyPressed = BlzIsKeyPressed
38
+ local isLocalClientActive = BlzIsLocalClientActive
39
+ local isMetaKeyPressed = BlzIsMetaKeyPressed
40
+ local isMouseButtonPressed = BlzIsMouseButtonPressed
41
+ local loadTOCFile = BlzLoadTOCFile
31
42
  local pingMinimap = PingMinimap
32
43
  local pingMinimapEx = PingMinimapEx
44
+ local pixelToFrameX = BlzPixelToFrameX
45
+ local pixelToFrameY = BlzPixelToFrameY
46
+ local setFrameVisible = BlzFrameSetVisible
33
47
  local tableSort = table.sort
34
- local tocPath = "_warscript\\IsHD.toc"
48
+ local hdTocPath = "_warscript\\IsHD.toc"
49
+ local deTocPath = "_warscript\\IsDE.toc"
35
50
  compiletime(function()
36
51
  if currentMap then
37
- local fdfPath = "_warscript\\IsHD.fdf"
38
- currentMap:addFileString("_HD.w3mod\\" .. fdfPath, "\r\n")
39
- currentMap:addFileString("_HD.w3mod\\" .. tocPath, fdfPath .. "\r\n")
52
+ local hdFdfPath = "_warscript\\IsHD.fdf"
53
+ currentMap:addFileString("_HD.w3mod\\" .. hdFdfPath, "\r\n")
54
+ currentMap:addFileString("_HD.w3mod\\" .. hdTocPath, hdFdfPath .. "\r\n")
55
+ local deFdfPath = "_warscript\\IsDE.fdf"
56
+ currentMap:addFileString("_DE.w3mod\\" .. deFdfPath, "\r\n")
57
+ currentMap:addFileString("_DE.w3mod\\" .. deTocPath, deFdfPath .. "\r\n")
40
58
  end
41
59
  end)
42
- local selectionButtons
43
- Timer:run(function()
44
- selectionButtons = __TS__ArrayMap(
45
- Frame:byName("SimpleInfoPanelUnitDetail").parent:getChild(5):getChild(0).children,
46
- function(____, frame) return frame:getChild(1) end
60
+ --- The portrait's health and mana texts show the focused unit's current and maximum values
61
+ -- as "current / maximum". Once they exist, these origin frames live for the whole game, so
62
+ -- the polling may read them every tick; the group panel's buttons, by contrast, are rebuilt
63
+ -- at any selection change and a retained button handle crashes the game on the first native
64
+ -- called with it. The frames are not there at map load, though, and appear at different
65
+ -- times on different clients: `Frame.byOrigin` returns undefined until then and balances
66
+ -- the handle allocation across clients, so it is asked again once a second.
67
+ local portraitHpText
68
+ local portraitManaText
69
+ local function actualizePortraitFrames()
70
+ portraitHpText = Frame:byOrigin(ORIGIN_FRAME_PORTRAIT_HP_TEXT)
71
+ portraitManaText = Frame:byOrigin(ORIGIN_FRAME_PORTRAIT_MANA_TEXT)
72
+ end
73
+ --- Finds "current / maximum" in the text, which may also carry color codes and other
74
+ -- decoration; returns -1 for both when there is no such pair.
75
+ local function parsePortraitValues(frame)
76
+ if frame == nil then
77
+ return -1, -1
78
+ end
79
+ local text = frameGetText(frame.handle)
80
+ local current, maximum = string.match(text, "(%d+)%s*/%s*(%d+)")
81
+ if current == nil or maximum == nil then
82
+ return -1, -1
83
+ end
84
+ return tonumber(current), tonumber(maximum)
85
+ end
86
+ --- Whether a unit value can be what the portrait shows as `shown`; the rounding rule is unknown.
87
+ local function matchesPortraitValue(value, shown)
88
+ return math.abs(value - shown) < 1
89
+ end
90
+ --- Whether the unit's health matches what the portrait shows; the health text is required.
91
+ local function matchesPortraitHealth(unit, hp, maxHp)
92
+ local handle = unit.handle
93
+ return maxHp >= 0 and matchesPortraitValue(
94
+ getUnitState(handle, UNIT_STATE_LIFE),
95
+ hp
96
+ ) and matchesPortraitValue(
97
+ getUnitState(handle, UNIT_STATE_MAX_LIFE),
98
+ maxHp
47
99
  )
48
- end)
100
+ end
101
+ --- Whether the unit has mana and it matches what the portrait shows. The mana text is not
102
+ -- redrawn for a unit without mana (it keeps the previously focused unit's values), so a
103
+ -- mana match is evidence for a unit, but a mismatch is no evidence against one without mana.
104
+ local function matchesPortraitMana(unit, mana, maxMana)
105
+ local handle = unit.handle
106
+ local unitMaxMana = getUnitState(handle, UNIT_STATE_MAX_MANA)
107
+ return maxMana >= 0 and unitMaxMana > 0 and matchesPortraitValue(
108
+ getUnitState(handle, UNIT_STATE_MANA),
109
+ mana
110
+ ) and matchesPortraitValue(unitMaxMana, maxMana)
111
+ end
49
112
  local localSelectedUnits = {}
50
113
  local indexByLocalSelectedUnit = {}
51
114
  local function compareUnitsSelectionPriority(a, b)
@@ -62,12 +125,17 @@ local function compareUnitsSelectionPriority(a, b)
62
125
  end
63
126
  local mainSelectedUnitChangeEvent
64
127
  local previousMainSelectedUnit
128
+ local currentMainSelectedUnit
129
+ local lastTargetingModeState = false
130
+ local targetingModeEnterEvent = __TS__New(Event)
131
+ local targetingModeLeaveEvent = __TS__New(Event)
132
+ local targetingModeStateChangeEvent = __TS__New(Event)
65
133
  ____exports.LocalClient = __TS__Class()
66
134
  local LocalClient = ____exports.LocalClient
67
135
  LocalClient.name = "LocalClient"
68
136
  function LocalClient.prototype.____constructor(self)
69
137
  end
70
- function LocalClient.pingMinimap(self, x, y, duration, redOrColor, greenOrExtraEffects, blue, extraEffects)
138
+ function LocalClient.pingMinimap(self, x, y, duration, redOrColor, greenOrFlashy, blue, flashy)
71
139
  if redOrColor == nil then
72
140
  pingMinimap(x, y, duration)
73
141
  elseif __TS__InstanceOf(redOrColor, Color) then
@@ -78,7 +146,7 @@ function LocalClient.pingMinimap(self, x, y, duration, redOrColor, greenOrExtraE
78
146
  redOrColor.r,
79
147
  redOrColor.g,
80
148
  redOrColor.b,
81
- greenOrExtraEffects or false
149
+ greenOrFlashy or false
82
150
  )
83
151
  else
84
152
  pingMinimapEx(
@@ -86,12 +154,33 @@ function LocalClient.pingMinimap(self, x, y, duration, redOrColor, greenOrExtraE
86
154
  y,
87
155
  duration,
88
156
  redOrColor,
89
- greenOrExtraEffects,
157
+ greenOrFlashy,
90
158
  blue,
91
- extraEffects or false
159
+ flashy or false
92
160
  )
93
161
  end
94
162
  end
163
+ function LocalClient.isKeyPressed(self, key)
164
+ return isKeyPressed(key)
165
+ end
166
+ function LocalClient.isMetaKeyPressed(self, key)
167
+ return isMetaKeyPressed(key)
168
+ end
169
+ function LocalClient.isMouseButtonPressed(self, button)
170
+ return isMouseButtonPressed(button)
171
+ end
172
+ function LocalClient.screenToFrameX(self, x)
173
+ return pixelToFrameX(x)
174
+ end
175
+ function LocalClient.screenToFrameY(self, y)
176
+ return pixelToFrameY(y)
177
+ end
178
+ function LocalClient.frameToScreenX(self, x)
179
+ return frameToPixelX(x)
180
+ end
181
+ function LocalClient.frameToScreenY(self, y)
182
+ return frameToPixelY(y)
183
+ end
95
184
  LocalClient.locale = getLocale()
96
185
  __TS__ObjectDefineProperty(
97
186
  LocalClient,
@@ -107,6 +196,13 @@ __TS__ObjectDefineProperty(
107
196
  return getLocalClientHeight()
108
197
  end}
109
198
  )
199
+ __TS__ObjectDefineProperty(
200
+ LocalClient,
201
+ "isSD",
202
+ {get = function(self)
203
+ return true
204
+ end}
205
+ )
110
206
  __TS__ObjectDefineProperty(
111
207
  LocalClient,
112
208
  "isHD",
@@ -114,11 +210,18 @@ __TS__ObjectDefineProperty(
114
210
  return false
115
211
  end}
116
212
  )
213
+ __TS__ObjectDefineProperty(
214
+ LocalClient,
215
+ "isDE",
216
+ {get = function(self)
217
+ return false
218
+ end}
219
+ )
117
220
  __TS__ObjectDefineProperty(
118
221
  LocalClient,
119
222
  "graphicsMode",
120
223
  {get = function(self)
121
- return self.isHD and 1 or 0
224
+ return 0
122
225
  end}
123
226
  )
124
227
  __TS__ObjectDefineProperty(
@@ -128,6 +231,41 @@ __TS__ObjectDefineProperty(
128
231
  return isLocalClientActive()
129
232
  end}
130
233
  )
234
+ __TS__ObjectDefineProperty(
235
+ LocalClient,
236
+ "isMinimized",
237
+ {get = function(self)
238
+ return getLocalClientHeight() == 0
239
+ end}
240
+ )
241
+ __TS__ObjectDefineProperty(
242
+ LocalClient,
243
+ "mouseScreenX",
244
+ {get = function(self)
245
+ return getMouseScreenPosX()
246
+ end}
247
+ )
248
+ __TS__ObjectDefineProperty(
249
+ LocalClient,
250
+ "mouseScreenY",
251
+ {get = function(self)
252
+ return getMouseScreenPosY()
253
+ end}
254
+ )
255
+ __TS__ObjectDefineProperty(
256
+ LocalClient,
257
+ "mouseFrameX",
258
+ {get = function(self)
259
+ return pixelToFrameX(getMouseScreenPosX())
260
+ end}
261
+ )
262
+ __TS__ObjectDefineProperty(
263
+ LocalClient,
264
+ "mouseFrameY",
265
+ {get = function(self)
266
+ return pixelToFrameY(getMouseScreenPosY())
267
+ end}
268
+ )
131
269
  __TS__ObjectDefineProperty(
132
270
  LocalClient,
133
271
  "mouseFocusUnit",
@@ -139,33 +277,7 @@ __TS__ObjectDefineProperty(
139
277
  LocalClient,
140
278
  "mainSelectedUnit",
141
279
  {get = function(self)
142
- Unit:getSelectionOf(Player["local"], localSelectedUnits)
143
- for i = 1, #localSelectedUnits do
144
- indexByLocalSelectedUnit[localSelectedUnits[i]] = i
145
- end
146
- tableSort(localSelectedUnits, compareUnitsSelectionPriority)
147
- local mainSelectedUnitIndex
148
- if selectionButtons and #localSelectedUnits > 1 then
149
- local maxButtonWidth = 0
150
- for i = 0, #selectionButtons - 1 do
151
- local width = selectionButtons[i + 1].width
152
- if width > maxButtonWidth then
153
- maxButtonWidth = width
154
- mainSelectedUnitIndex = i
155
- end
156
- end
157
- end
158
- local mainSelectedUnit = localSelectedUnits[(mainSelectedUnitIndex or 0) + 1]
159
- for i = 1, #localSelectedUnits do
160
- indexByLocalSelectedUnit[localSelectedUnits[i]] = nil
161
- localSelectedUnits[i] = nil
162
- end
163
- if mainSelectedUnitChangeEvent ~= nil and mainSelectedUnit ~= previousMainSelectedUnit then
164
- local previousPreviousMainSelectedUnit = previousMainSelectedUnit
165
- previousMainSelectedUnit = mainSelectedUnit
166
- Event.invoke(mainSelectedUnitChangeEvent, previousPreviousMainSelectedUnit, previousMainSelectedUnit)
167
- end
168
- return mainSelectedUnit
280
+ return currentMainSelectedUnit
169
281
  end}
170
282
  )
171
283
  __TS__ObjectDefineProperty(
@@ -174,13 +286,20 @@ __TS__ObjectDefineProperty(
174
286
  {get = function(self)
175
287
  if mainSelectedUnitChangeEvent == nil then
176
288
  mainSelectedUnitChangeEvent = __TS__New(Event)
177
- Timer.onPeriod[1 / 64]:addListener(function()
178
- local _ = ____exports.LocalClient.mainSelectedUnit
179
- end)
180
289
  end
181
290
  return mainSelectedUnitChangeEvent
182
291
  end}
183
292
  )
293
+ __TS__ObjectDefineProperty(
294
+ LocalClient,
295
+ "isInTargetingMode",
296
+ {get = function(self)
297
+ return actualizeTargetingModeState()
298
+ end}
299
+ )
300
+ LocalClient.targetingModeEnterEvent = targetingModeEnterEvent
301
+ LocalClient.targetingModeLeaveEvent = targetingModeLeaveEvent
302
+ LocalClient.targetingModeStateChangeEvent = targetingModeStateChangeEvent
184
303
  LocalClient.onDisconnect = __TS__New(
185
304
  TriggerEvent,
186
305
  function(trigger)
@@ -188,11 +307,132 @@ LocalClient.onDisconnect = __TS__New(
188
307
  end,
189
308
  function() return end
190
309
  )
310
+ local function actualizeMainSelectedUnit()
311
+ Unit:getSelectionOf(Player["local"], localSelectedUnits)
312
+ local selectionCount = #localSelectedUnits
313
+ for i = 1, selectionCount do
314
+ indexByLocalSelectedUnit[localSelectedUnits[i]] = i
315
+ end
316
+ tableSort(localSelectedUnits, compareUnitsSelectionPriority)
317
+ local mainSelectedUnit
318
+ if selectionCount <= 1 then
319
+ mainSelectedUnit = localSelectedUnits[1]
320
+ else
321
+ local hp, maxHp = parsePortraitValues(portraitHpText)
322
+ local mana, maxMana = parsePortraitValues(portraitManaText)
323
+ if maxHp >= 0 then
324
+ local healthMatch
325
+ for i = 1, selectionCount do
326
+ local unit = localSelectedUnits[i]
327
+ if matchesPortraitHealth(unit, hp, maxHp) then
328
+ if matchesPortraitMana(unit, mana, maxMana) then
329
+ mainSelectedUnit = unit
330
+ break
331
+ end
332
+ if healthMatch == nil then
333
+ healthMatch = unit
334
+ end
335
+ end
336
+ end
337
+ if mainSelectedUnit == nil then
338
+ mainSelectedUnit = healthMatch
339
+ end
340
+ end
341
+ if mainSelectedUnit == nil and previousMainSelectedUnit ~= nil then
342
+ for i = 1, selectionCount do
343
+ if localSelectedUnits[i] == previousMainSelectedUnit then
344
+ mainSelectedUnit = previousMainSelectedUnit
345
+ break
346
+ end
347
+ end
348
+ end
349
+ if mainSelectedUnit == nil then
350
+ mainSelectedUnit = localSelectedUnits[1]
351
+ end
352
+ end
353
+ for i = 1, selectionCount do
354
+ indexByLocalSelectedUnit[localSelectedUnits[i]] = nil
355
+ localSelectedUnits[i] = nil
356
+ end
357
+ currentMainSelectedUnit = mainSelectedUnit
358
+ if mainSelectedUnitChangeEvent ~= nil and mainSelectedUnit ~= previousMainSelectedUnit then
359
+ local previousPreviousMainSelectedUnit = previousMainSelectedUnit
360
+ previousMainSelectedUnit = mainSelectedUnit
361
+ Event.invoke(mainSelectedUnitChangeEvent, previousPreviousMainSelectedUnit, previousMainSelectedUnit)
362
+ end
363
+ end
364
+ local commandButtons = array(
365
+ 12,
366
+ function(i) return Frame:byOrigin(ORIGIN_FRAME_COMMAND_BUTTON, i) end
367
+ )
368
+ local commandButtonContainers = array(
369
+ 12,
370
+ function(i) return Frame:byName("CommandButton_" .. tostring(i)) end
371
+ )
372
+ local function getTargetingModeState()
373
+ for ____, container in ipairs(commandButtonContainers) do
374
+ if container.hideCounter > 0 then
375
+ setFrameVisible(container.handle, true)
376
+ end
377
+ end
378
+ local targeting = false
379
+ local failed = false
380
+ local failure
381
+ do
382
+ local function ____catch(____error)
383
+ failed = true
384
+ failure = ____error
385
+ end
386
+ local ____try, ____hasReturned = pcall(function()
387
+ targeting = commandButtons[12].visible
388
+ for i = 0, 10 do
389
+ if commandButtons[i + 1].visible then
390
+ targeting = false
391
+ break
392
+ end
393
+ end
394
+ end)
395
+ if not ____try then
396
+ ____catch(____hasReturned)
397
+ end
398
+ end
399
+ for ____, container in ipairs(commandButtonContainers) do
400
+ if container.hideCounter > 0 then
401
+ setFrameVisible(container.handle, false)
402
+ end
403
+ end
404
+ if failed then
405
+ error(failure, 0)
406
+ end
407
+ return targeting
408
+ end
409
+ actualizeTargetingModeState = function()
410
+ if getTargetingModeState() then
411
+ if not lastTargetingModeState then
412
+ lastTargetingModeState = true
413
+ Event.invoke(targetingModeEnterEvent)
414
+ Event.invoke(targetingModeStateChangeEvent)
415
+ end
416
+ return true
417
+ end
418
+ if lastTargetingModeState then
419
+ lastTargetingModeState = false
420
+ Event.invoke(targetingModeLeaveEvent)
421
+ Event.invoke(targetingModeStateChangeEvent)
422
+ end
423
+ return false
424
+ end
425
+ Timer.onPeriod[1]:addListener(actualizePortraitFrames)
426
+ Timer.onPeriod[1 / 64]:addListener(function()
427
+ actualizeMainSelectedUnit()
428
+ actualizeTargetingModeState()
429
+ end)
191
430
  warpack.afterMapInit(function()
192
- rawset(
193
- ____exports.LocalClient,
194
- "isHD",
195
- loadTOCFile(tocPath)
196
- )
431
+ local isDE = loadTOCFile(deTocPath)
432
+ local isHD = not isDE and loadTOCFile(hdTocPath)
433
+ rawset(____exports.LocalClient, "isDE", isDE)
434
+ rawset(____exports.LocalClient, "isHD", isHD)
435
+ rawset(____exports.LocalClient, "isSD", not isDE and not isHD)
436
+ rawset(____exports.LocalClient, "graphicsMode", isDE and 2 or (isHD and 1 or 0))
197
437
  end)
198
438
  return ____exports
@@ -0,0 +1,12 @@
1
+ /** @noSelfInFile */
2
+ export declare const enum EquipmentSlot {
3
+ HEAD = 0,
4
+ CHEST = 1,
5
+ GLOVES = 2,
6
+ BOOTS = 3,
7
+ RING = 4,
8
+ ALTERNATE_RING = 5,
9
+ PRIMARY = 6,
10
+ OFFHAND = 7,
11
+ TRINKET = 8
12
+ }
@@ -0,0 +1,2 @@
1
+ local ____exports = {}
2
+ return ____exports
@@ -0,0 +1,12 @@
1
+ /** @noSelfInFile */
2
+ export declare const enum EquipmentType {
3
+ NONE = 0,
4
+ HEAD = 1,
5
+ CHEST = 2,
6
+ GLOVES = 3,
7
+ BOOTS = 4,
8
+ RING = 5,
9
+ PRIMARY = 6,
10
+ OFFHAND = 7,
11
+ TRINKET = 8
12
+ }
@@ -0,0 +1,26 @@
1
+ local ____exports = {}
2
+ local ____records = require("utility.records")
3
+ local invertRecord = ____records.invertRecord
4
+ local stringByEquipmentType = {
5
+ [0] = "None",
6
+ [1] = "Head",
7
+ [2] = "Chest",
8
+ [3] = "Gloves",
9
+ [4] = "Boots",
10
+ [5] = "Ring",
11
+ [6] = "Primary",
12
+ [7] = "Offhand",
13
+ [8] = "Trinket"
14
+ }
15
+ local equipmentTypeByString = invertRecord(stringByEquipmentType)
16
+ ---
17
+ -- @internal For use by internal systems only.
18
+ ____exports.equipmentTypeToString = function(equipmentType)
19
+ return stringByEquipmentType[equipmentType]
20
+ end
21
+ ---
22
+ -- @internal For use by internal systems only.
23
+ ____exports.stringToEquipmentType = function(____string)
24
+ return equipmentTypeByString[____string] or 0
25
+ end
26
+ return ____exports
@@ -0,0 +1,8 @@
1
+ /** @noSelfInFile */
2
+ export declare const enum HealthRegenerationType {
3
+ NONE = 0,
4
+ ALWAYS = 1,
5
+ BLIGHT = 2,
6
+ DAY = 3,
7
+ NIGHT = 4
8
+ }
@@ -0,0 +1,2 @@
1
+ local ____exports = {}
2
+ return ____exports
@@ -0,0 +1,11 @@
1
+ /** @noSelfInFile */
2
+ export declare const enum ItemClass {
3
+ PERMANENT = "Permanent",
4
+ CHARGED = "Charged",
5
+ POWER_UP = "PowerUp",
6
+ ARTIFACT = "Artifact",
7
+ PURCHASABLE = "Purchasable",
8
+ CAMPAIGN = "Campaign",
9
+ MISCELLANEOUS = "Miscellaneous",
10
+ EQUIPMENT = "Equipment"
11
+ }
@@ -0,0 +1,2 @@
1
+ local ____exports = {}
2
+ return ____exports
@@ -0,0 +1,12 @@
1
+ /** @noSelfInFile */
2
+ export declare const enum ItemTag {
3
+ UNDEFINED = 0,
4
+ DROPPABLE = 1,
5
+ QUEST_REWARD = 2,
6
+ BOSS_DROP = 3,
7
+ SECRET = 4,
8
+ PUZZLE = 5,
9
+ WORLD = 6,
10
+ SHOP = 7,
11
+ ANY = 8
12
+ }
@@ -0,0 +1,2 @@
1
+ local ____exports = {}
2
+ return ____exports