warscript 0.0.1-dev.d750e38 → 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 (413) hide show
  1. package/attributes.d.ts +6 -0
  2. package/attributes.lua +17 -1
  3. package/config.d.ts +5 -0
  4. package/config.lua +10 -0
  5. package/core/dummy.lua +4 -2
  6. package/core/types/effect.d.ts +12 -4
  7. package/core/types/effect.lua +67 -104
  8. package/core/types/frame.d.ts +1 -0
  9. package/core/types/frame.lua +136 -58
  10. package/core/types/handle.lua +9 -9
  11. package/core/types/item.d.ts +1 -0
  12. package/core/types/item.lua +1 -0
  13. package/core/types/player.d.ts +18 -1
  14. package/core/types/player.lua +76 -26
  15. package/core/types/playerCamera.d.ts +2 -0
  16. package/core/types/playerCamera.lua +123 -5
  17. package/core/types/playerColor.lua +4 -3
  18. package/core/types/sound.d.ts +18 -25
  19. package/core/types/sound.lua +113 -33
  20. package/core/types/tileCell.d.ts +11 -1
  21. package/core/types/tileCell.lua +97 -0
  22. package/core/types/timer.d.ts +9 -8
  23. package/core/types/timer.lua +45 -23
  24. package/core/types/unit.d.ts +5 -0
  25. package/core/types/unit.lua +5 -0
  26. package/core/util.d.ts +3 -1
  27. package/core/util.lua +115 -4
  28. package/decl/native.d.ts +1718 -964
  29. package/destroyable.d.ts +1 -0
  30. package/destroyable.lua +9 -0
  31. package/engine/behavior.d.ts +14 -1
  32. package/engine/behavior.lua +230 -70
  33. package/engine/behaviour/ability/apply-buff.d.ts +5 -0
  34. package/engine/behaviour/ability/apply-buff.lua +36 -4
  35. package/engine/behaviour/ability/apply-unit-behavior.lua +6 -0
  36. package/engine/behaviour/ability/damage.d.ts +13 -3
  37. package/engine/behaviour/ability/damage.lua +41 -49
  38. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  39. package/engine/behaviour/ability/emulate-impact.lua +23 -7
  40. package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
  41. package/engine/behaviour/ability/on-command-impact.lua +1 -0
  42. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  43. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  44. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  45. package/engine/behaviour/ability/restore-mana.lua +6 -6
  46. package/engine/behaviour/ability.d.ts +17 -5
  47. package/engine/behaviour/ability.lua +97 -24
  48. package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
  49. package/engine/behaviour/unit/stun-immunity.lua +57 -31
  50. package/engine/behaviour/unit.d.ts +41 -2
  51. package/engine/behaviour/unit.lua +270 -6
  52. package/engine/buff.d.ts +121 -59
  53. package/engine/buff.lua +605 -301
  54. package/engine/index.d.ts +2 -1
  55. package/engine/internal/ability.d.ts +11 -1
  56. package/engine/internal/ability.lua +104 -44
  57. package/engine/internal/item/ability.lua +63 -11
  58. package/engine/internal/item/fields.d.ts +12 -0
  59. package/engine/internal/item/fields.lua +33 -0
  60. package/engine/internal/item/owner-cache.d.ts +5 -0
  61. package/engine/internal/item/owner-cache.lua +4 -0
  62. package/engine/internal/item+owner.d.ts +2 -0
  63. package/engine/internal/item+owner.lua +37 -8
  64. package/engine/internal/item.d.ts +34 -18
  65. package/engine/internal/item.lua +308 -102
  66. package/engine/internal/mechanics/ability-duration.lua +1 -1
  67. package/engine/internal/mechanics/cast-ability.lua +6 -3
  68. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  69. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  70. package/engine/internal/misc/frame-coordinates.lua +21 -0
  71. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  72. package/engine/internal/misc/get-terrain-z.lua +11 -0
  73. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  74. package/engine/internal/misc/player-local-handle.lua +5 -0
  75. package/engine/internal/misc/unit-ability-level-natives.d.ts +2 -0
  76. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  77. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  78. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  79. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  80. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  81. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  82. package/engine/internal/object-data/evasion-probability.lua +16 -0
  83. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  84. package/engine/internal/object-data/health-bonus.lua +16 -0
  85. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  86. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  87. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  88. package/engine/internal/object-data/mana-bonus.lua +16 -0
  89. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  90. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  91. package/engine/internal/unit/ability.d.ts +35 -0
  92. package/engine/internal/unit/ability.lua +113 -12
  93. package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
  94. package/engine/internal/unit/add-item-to-slot.lua +57 -14
  95. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  96. package/engine/internal/unit/allowed-targets.lua +9 -1
  97. package/engine/internal/unit/appearance.d.ts +15 -0
  98. package/engine/internal/unit/appearance.lua +85 -0
  99. package/engine/internal/unit/attributes.d.ts +17 -0
  100. package/engine/internal/unit/attributes.lua +46 -0
  101. package/engine/internal/unit/bonus.d.ts +16 -0
  102. package/engine/internal/unit/bonus.lua +119 -8
  103. package/engine/internal/unit/buff.d.ts +2 -2
  104. package/engine/internal/unit/buff.lua +34 -19
  105. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  106. package/engine/internal/unit/equipment-inventory.lua +233 -0
  107. package/engine/internal/unit/expiration-timer.lua +1 -1
  108. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  109. package/engine/internal/unit/extended-inventory.lua +99 -0
  110. package/engine/internal/unit/fly-height.d.ts +7 -0
  111. package/engine/internal/unit/fly-height.lua +20 -0
  112. package/engine/internal/unit/ignore-events-items.lua +10 -1
  113. package/engine/internal/unit/interrupts.d.ts +12 -0
  114. package/engine/internal/unit/interrupts.lua +28 -0
  115. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
  116. package/engine/internal/unit/inventory.lua +87 -0
  117. package/engine/internal/unit/item-container.d.ts +25 -0
  118. package/engine/internal/unit/item-container.lua +11 -0
  119. package/engine/internal/unit/item-order-events.d.ts +17 -0
  120. package/engine/internal/unit/item-order-events.lua +67 -0
  121. package/engine/internal/unit/item-slot.d.ts +27 -0
  122. package/engine/internal/unit/item-slot.lua +92 -0
  123. package/engine/internal/unit/main-selected.lua +12 -27
  124. package/engine/internal/unit/order.d.ts +20 -0
  125. package/engine/internal/unit/order.lua +136 -0
  126. package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
  127. package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
  128. package/engine/internal/unit/range-event.d.ts +12 -0
  129. package/engine/internal/unit/range-event.lua +90 -0
  130. package/engine/internal/unit/scale.d.ts +7 -0
  131. package/engine/internal/unit/scale.lua +20 -0
  132. package/engine/internal/unit+ability.d.ts +2 -1
  133. package/engine/internal/unit+ability.lua +73 -3
  134. package/engine/internal/unit+bonus.lua +3 -3
  135. package/engine/internal/unit+damage.d.ts +11 -11
  136. package/engine/internal/unit+damage.lua +43 -14
  137. package/engine/internal/unit+rally.lua +9 -31
  138. package/engine/internal/unit+spellSteal.lua +1 -2
  139. package/engine/internal/unit-missile-data.lua +58 -32
  140. package/engine/internal/unit-missile-launch.lua +65 -27
  141. package/engine/internal/unit.d.ts +43 -33
  142. package/engine/internal/unit.lua +391 -323
  143. package/engine/lightning.d.ts +4 -3
  144. package/engine/lightning.lua +22 -15
  145. package/engine/local-client.d.ts +28 -0
  146. package/engine/local-client.lua +324 -54
  147. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  148. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  149. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  150. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  151. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
  152. package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
  153. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  154. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  155. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  156. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  157. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  158. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  159. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  160. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  161. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  162. package/engine/object-data/auxiliary/item-class.lua +2 -0
  163. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  164. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  165. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  166. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  167. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  168. package/engine/object-data/auxiliary/order-type.lua +2 -0
  169. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  170. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  171. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  172. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  173. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  174. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  175. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  176. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  177. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  178. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  179. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  180. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  181. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  182. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  183. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  184. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  185. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  186. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  187. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  188. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  189. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  190. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  191. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
  192. package/engine/object-data/entry/ability-type/blank-configurable.lua +42 -1
  193. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  194. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  195. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  196. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  197. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  198. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  199. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  200. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  201. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  202. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  203. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  204. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  205. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  206. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  207. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  208. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  209. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  210. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  211. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  212. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  213. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  214. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  215. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  216. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  217. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  218. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  219. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  220. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  221. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  222. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  223. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  224. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  225. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  226. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  227. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  228. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  229. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  230. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  231. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  232. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  233. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  234. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  235. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  236. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  237. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  238. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  239. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  240. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  241. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  242. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  243. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  244. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  245. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  246. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  247. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  248. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  249. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  250. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  251. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  252. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  253. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  254. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  255. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  256. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  257. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  258. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  259. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  260. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  261. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  262. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  263. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  264. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  265. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  266. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  267. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  268. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  269. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  270. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  271. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  272. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  273. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  274. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  275. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  276. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  277. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  278. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  279. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  280. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  281. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  282. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  283. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  284. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  285. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  286. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  287. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  288. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  289. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  290. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  291. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  292. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  293. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  294. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  295. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  296. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  297. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  298. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  299. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  300. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  301. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  302. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  303. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  304. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  305. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  306. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  307. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  308. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  309. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  310. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  311. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  312. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  313. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  314. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  315. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  316. package/engine/object-data/entry/ability-type/web.lua +52 -0
  317. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  318. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  319. package/engine/object-data/entry/ability-type.d.ts +36 -19
  320. package/engine/object-data/entry/ability-type.lua +307 -29
  321. package/engine/object-data/entry/buff-type/applicable.lua +122 -137
  322. package/engine/object-data/entry/buff-type.d.ts +10 -12
  323. package/engine/object-data/entry/buff-type.lua +39 -29
  324. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  325. package/engine/object-data/entry/destructible-type.lua +181 -0
  326. package/engine/object-data/entry/item-type.d.ts +18 -3
  327. package/engine/object-data/entry/item-type.lua +88 -4
  328. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  329. package/engine/object-data/entry/lightning-type.lua +1 -1
  330. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  331. package/engine/object-data/entry/sound-preset.lua +140 -0
  332. package/engine/object-data/entry/unit-type.d.ts +71 -6
  333. package/engine/object-data/entry/unit-type.lua +592 -93
  334. package/engine/object-data/entry/upgrade.d.ts +2 -2
  335. package/engine/object-data/entry/upgrade.lua +4 -4
  336. package/engine/object-data/entry.d.ts +21 -14
  337. package/engine/object-data/entry.lua +68 -32
  338. package/engine/object-field/ability.d.ts +4 -4
  339. package/engine/object-field/ability.lua +9 -8
  340. package/engine/object-field/item.d.ts +22 -0
  341. package/engine/object-field/item.lua +118 -0
  342. package/engine/object-field/unit.d.ts +72 -3
  343. package/engine/object-field/unit.lua +268 -7
  344. package/engine/object-field.d.ts +26 -7
  345. package/engine/object-field.lua +360 -119
  346. package/engine/random.d.ts +10 -0
  347. package/engine/random.lua +21 -0
  348. package/engine/standard/entries/ability-type.d.ts +3102 -7
  349. package/engine/standard/entries/ability-type.lua +0 -6
  350. package/engine/standard/entries/buff-type.d.ts +3 -0
  351. package/engine/standard/entries/buff-type.lua +3 -0
  352. package/engine/standard/entries/item-type.d.ts +1299 -0
  353. package/engine/standard/entries/item-type.lua +2 -0
  354. package/engine/standard/entries/lightning-type.d.ts +42 -15
  355. package/engine/standard/entries/lightning-type.lua +0 -14
  356. package/engine/standard/entries/sound-preset.d.ts +10 -0
  357. package/engine/standard/entries/sound-preset.lua +10 -0
  358. package/engine/standard/entries/unit-type.d.ts +5 -0
  359. package/engine/standard/entries/unit-type.lua +5 -0
  360. package/engine/standard/fields/ability.d.ts +2 -2
  361. package/engine/standard/fields/ability.lua +2 -2
  362. package/engine/standard/fields/item.d.ts +4 -0
  363. package/engine/standard/fields/item.lua +6 -0
  364. package/engine/standard/fields/unit.d.ts +12 -0
  365. package/engine/standard/fields/unit.lua +20 -0
  366. package/engine/synchronization.d.ts +11 -0
  367. package/engine/synchronization.lua +77 -0
  368. package/engine/text-tag.d.ts +36 -2
  369. package/engine/text-tag.lua +250 -10
  370. package/engine/unit.d.ts +11 -1
  371. package/engine/unit.lua +11 -1
  372. package/event.d.ts +1 -1
  373. package/lualib_bundle.lua +1 -1
  374. package/math.d.ts +2 -0
  375. package/math.lua +14 -0
  376. package/net/socket.lua +1 -1
  377. package/network.lua +25 -1
  378. package/objutil/buff.lua +12 -11
  379. package/objutil/object.lua +1 -1
  380. package/objutil/unit.lua +8 -0
  381. package/operation.d.ts +8 -1
  382. package/operation.lua +38 -18
  383. package/package.json +3 -23
  384. package/patch-lua.lua +15 -0
  385. package/patch-lualib.lua +1 -1
  386. package/utility/arrays.d.ts +2 -0
  387. package/utility/arrays.lua +11 -0
  388. package/utility/callback-array.d.ts +17 -0
  389. package/utility/callback-array.lua +61 -0
  390. package/utility/functions.d.ts +8 -0
  391. package/utility/functions.lua +13 -0
  392. package/utility/linked-map.d.ts +35 -0
  393. package/utility/linked-map.lua +107 -0
  394. package/utility/linked-set.d.ts +5 -1
  395. package/utility/linked-set.lua +49 -1
  396. package/utility/lua-maps.d.ts +15 -2
  397. package/utility/lua-maps.lua +53 -2
  398. package/utility/lua-sets.d.ts +2 -0
  399. package/utility/lua-sets.lua +7 -0
  400. package/utility/random.d.ts +102 -0
  401. package/utility/random.lua +273 -0
  402. package/utility/records.lua +20 -1
  403. package/utility/reflection.lua +11 -7
  404. package/utility/types.d.ts +3 -0
  405. package/utility/unordered-map.d.ts +27 -0
  406. package/utility/unordered-map.lua +99 -0
  407. package/core/types/order.d.ts +0 -25
  408. package/core/types/order.lua +0 -55
  409. package/engine/internal/unit/item.lua +0 -78
  410. /package/engine/internal/{object-data/armor-increase.d.ts → misc/damage-metadata-by-target.d.ts} +0 -0
  411. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  412. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  413. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -1,7 +1,7 @@
1
1
  /** @noSelfInFile */
2
2
  import { LightningTypeId } from "./object-data/entry/lightning-type";
3
- import { Handle, HandleDestructor } from "../core/types/handle";
4
3
  import { Unit } from "../core/types/unit";
4
+ import { AbstractDestroyable, Destructor } from "../destroyable";
5
5
  declare const enum LightningPropertyKey {
6
6
  CHECK_VISIBILITY = 100,
7
7
  SOURCE_UNIT = 101,
@@ -16,7 +16,8 @@ declare const enum LightningPropertyKey {
16
16
  FADING = 110
17
17
  }
18
18
  export type LightningConstructor<T extends Lightning> = typeof Lightning & (new (handle: jlightning, typeId: LightningTypeId) => T);
19
- export declare class Lightning extends Handle<jlightning> {
19
+ export declare class Lightning extends AbstractDestroyable {
20
+ readonly handle: jlightning;
20
21
  readonly typeId: LightningTypeId;
21
22
  private [LightningPropertyKey.CHECK_VISIBILITY]?;
22
23
  private [LightningPropertyKey.SOURCE_UNIT]?;
@@ -30,7 +31,7 @@ export declare class Lightning extends Handle<jlightning> {
30
31
  private [LightningPropertyKey.DURATION]?;
31
32
  private [LightningPropertyKey.FADING]?;
32
33
  constructor(handle: jlightning, typeId: LightningTypeId);
33
- protected onDestroy(): HandleDestructor;
34
+ protected onDestroy(): Destructor;
34
35
  static create<T extends Lightning>(this: LightningConstructor<T>, typeId: LightningTypeId, ...parameters: [
35
36
  ...checkVisibility: [boolean] | [],
36
37
  ...sourceAndTarget: [sourceX: number, sourceY: number, targetX: number, targetY: number] | [
@@ -1,17 +1,16 @@
1
1
  local ____lualib = require("lualib_bundle")
2
2
  local __TS__Class = ____lualib.__TS__Class
3
3
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
+ local __TS__New = ____lualib.__TS__New
4
5
  local ____exports = {}
5
- local ____handle = require("core.types.handle")
6
- local Handle = ____handle.Handle
7
6
  local ____timer = require("core.types.timer")
8
7
  local Timer = ____timer.Timer
9
8
  local ____functions = require("utility.functions")
10
9
  local forwardByN = ____functions.forwardByN
11
10
  local ____unit_2Dmissile_2Ddata = require("engine.internal.unit-missile-data")
12
11
  local MISSILE_DATA_BY_UNIT_TYPE_ID = ____unit_2Dmissile_2Ddata.MISSILE_DATA_BY_UNIT_TYPE_ID
13
- local ____math = require("math")
14
- local ceil = ____math.ceil
12
+ local ____destroyable = require("destroyable")
13
+ local AbstractDestroyable = ____destroyable.AbstractDestroyable
15
14
  local ____type = _G.type
16
15
  local select = _G.select
17
16
  local cos = math.cos
@@ -43,9 +42,10 @@ local temporaryLightningsCount = 0
43
42
  ____exports.Lightning = __TS__Class()
44
43
  local Lightning = ____exports.Lightning
45
44
  Lightning.name = "Lightning"
46
- __TS__ClassExtends(Lightning, Handle)
45
+ __TS__ClassExtends(Lightning, AbstractDestroyable)
47
46
  function Lightning.prototype.____constructor(self, handle, typeId)
48
- Handle.prototype.____constructor(self, handle)
47
+ AbstractDestroyable.prototype.____constructor(self)
48
+ self.handle = handle
49
49
  self.typeId = typeId
50
50
  end
51
51
  function Lightning.prototype.onDestroy(self)
@@ -53,7 +53,7 @@ function Lightning.prototype.onDestroy(self)
53
53
  unitToPointLightnings[self] = nil
54
54
  pointToUnitLightnings[self] = nil
55
55
  destroyLightning(self.handle)
56
- return Handle.prototype.onDestroy(self)
56
+ return AbstractDestroyable.prototype.onDestroy(self)
57
57
  end
58
58
  function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, sourceYOrTargetXOrTargetUnit, sourceZOrTargetXOrTargetUnitOrTargetY, targetXOrTargetUnitOrTargetYOrTargetZ, targetY, targetZ)
59
59
  if type(checkVisibility) ~= "boolean" then
@@ -69,7 +69,8 @@ function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, so
69
69
  )
70
70
  end
71
71
  if targetZ ~= nil then
72
- return self:of(
72
+ return __TS__New(
73
+ self,
73
74
  addLightningEx(
74
75
  util.id2s(typeId),
75
76
  checkVisibility,
@@ -86,7 +87,8 @@ function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, so
86
87
  if targetXOrTargetUnitOrTargetYOrTargetZ ~= nil then
87
88
  if ____type(targetXOrTargetUnitOrTargetYOrTargetZ) == "number" then
88
89
  if ____type(sourceXOrSourceUnit) == "number" then
89
- return self:of(
90
+ return __TS__New(
91
+ self,
90
92
  addLightning(
91
93
  util.id2s(typeId),
92
94
  checkVisibility,
@@ -99,7 +101,8 @@ function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, so
99
101
  )
100
102
  end
101
103
  local unit = sourceXOrSourceUnit.handle
102
- local lightning = self:of(
104
+ local lightning = __TS__New(
105
+ self,
103
106
  addLightningEx(
104
107
  util.id2s(typeId),
105
108
  checkVisibility,
@@ -124,7 +127,8 @@ function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, so
124
127
  return lightning
125
128
  end
126
129
  local unit = targetXOrTargetUnitOrTargetYOrTargetZ.handle
127
- local lightning = self:of(
130
+ local lightning = __TS__New(
131
+ self,
128
132
  addLightningEx(
129
133
  util.id2s(typeId),
130
134
  checkVisibility,
@@ -153,7 +157,8 @@ function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, so
153
157
  local unit = sourceXOrSourceUnit.handle
154
158
  moveLocation(location, sourceYOrTargetXOrTargetUnit, sourceZOrTargetXOrTargetUnitOrTargetY)
155
159
  local z = getLocationZ(location)
156
- local lightning = self:of(
160
+ local lightning = __TS__New(
161
+ self,
157
162
  addLightningEx(
158
163
  util.id2s(typeId),
159
164
  checkVisibility,
@@ -180,7 +185,8 @@ function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, so
180
185
  local unit = sourceZOrTargetXOrTargetUnitOrTargetY.handle
181
186
  moveLocation(location, sourceXOrSourceUnit, sourceYOrTargetXOrTargetUnit)
182
187
  local z = getLocationZ(location)
183
- local lightning = self:of(
188
+ local lightning = __TS__New(
189
+ self,
184
190
  addLightningEx(
185
191
  util.id2s(typeId),
186
192
  checkVisibility,
@@ -206,7 +212,8 @@ function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, so
206
212
  end
207
213
  local sourceUnit = sourceXOrSourceUnit.handle
208
214
  local targetUnit = sourceYOrTargetXOrTargetUnit.handle
209
- local lightning = self:of(
215
+ local lightning = __TS__New(
216
+ self,
210
217
  addLightningEx(
211
218
  util.id2s(typeId),
212
219
  checkVisibility,
@@ -319,7 +326,7 @@ Timer.onPeriod[UPDATE_PERIOD]:addListener(function()
319
326
  getLightningColorR(handle),
320
327
  getLightningColorG(handle),
321
328
  getLightningColorB(handle),
322
- ceil(getLightningColorA(handle) * (1 - UPDATE_PERIOD / duration))
329
+ getLightningColorA(handle) * (1 - UPDATE_PERIOD / duration)
323
330
  )
324
331
  end
325
332
  lightning[109] = duration - UPDATE_PERIOD
@@ -3,19 +3,47 @@ import { Unit } from "../core/types/unit";
3
3
  import { Async } from "../core/types/async";
4
4
  import { Event, TriggerEvent } from "../event";
5
5
  import { GraphicsMode } from "./index";
6
+ import { Color } from "../core/types/color";
6
7
  export declare class LocalClient {
7
8
  private constructor();
8
9
  static readonly locale: string;
9
10
  static get width(): number;
10
11
  static get height(): number;
12
+ static get isSD(): boolean;
11
13
  static get isHD(): boolean;
14
+ static get isDE(): boolean;
12
15
  static get graphicsMode(): GraphicsMode;
13
16
  static get isActive(): boolean;
17
+ static get isMinimized(): boolean;
18
+ static pingMinimap(x: number, y: number, duration: number, ...parameters: [] | [red: number, green: number, blue: number, flashy?: boolean] | [color: Color, flashy?: boolean]): void;
19
+ /** Local input state; do not use to branch synchronized game logic. */
20
+ static isKeyPressed(key: joskeytype): boolean;
21
+ /** Local input state. Uses the same modifier mask as Player key events. */
22
+ static isMetaKeyPressed(key: oskeymeta): boolean;
23
+ /** Local input state. */
24
+ static isMouseButtonPressed(button: jmousebuttontype): boolean;
25
+ static get mouseScreenX(): number;
26
+ static get mouseScreenY(): number;
27
+ static screenToFrameX(x: number): number;
28
+ static screenToFrameY(y: number): number;
29
+ static frameToScreenX(x: number): number;
30
+ static frameToScreenY(y: number): number;
31
+ static get mouseFrameX(): number;
32
+ static get mouseFrameY(): number;
14
33
  static get mouseFocusUnit(): Async<Unit> | undefined;
34
+ /**
35
+ * Local selection sampled every 1/64 second; undefined before the first tick. Among
36
+ * several selected units, the one the portrait shows, identified by its health and
37
+ * mana; units with identical values cannot be told apart.
38
+ */
15
39
  static get mainSelectedUnit(): Async<Unit> | undefined;
16
40
  static get mainSelectedUnitChangeEvent(): Event<[
17
41
  previousMainSelectedUnit: Unit | undefined,
18
42
  newMainSelectedUnit: Unit | undefined
19
43
  ]>;
44
+ static get isInTargetingMode(): boolean;
45
+ static readonly targetingModeEnterEvent: Event<[]>;
46
+ static readonly targetingModeLeaveEvent: Event<[]>;
47
+ static readonly targetingModeStateChangeEvent: Event<[]>;
20
48
  static readonly onDisconnect: TriggerEvent<[]>;
21
49
  }
@@ -1,9 +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
+ local __TS__InstanceOf = ____lualib.__TS__InstanceOf
4
5
  local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
5
- local __TS__New = ____lualib.__TS__New
6
6
  local ____exports = {}
7
+ local actualizeTargetingModeState
7
8
  local ____unit = require("core.types.unit")
8
9
  local Unit = ____unit.Unit
9
10
  local ____event = require("event")
@@ -15,32 +16,99 @@ local ____player = require("core.types.player")
15
16
  local Player = ____player.Player
16
17
  local ____timer = require("core.types.timer")
17
18
  local Timer = ____timer.Timer
18
- local loadTOCFile = BlzLoadTOCFile
19
- local getLocalClientWidth = BlzGetLocalClientWidth
20
- local getLocalClientHeight = BlzGetLocalClientHeight
21
- local isLocalClientActive = BlzIsLocalClientActive
22
- local isHeroUnitId = IsHeroUnitId
19
+ local ____color = require("core.types.color")
20
+ local Color = ____color.Color
21
+ local ____arrays = require("utility.arrays")
22
+ local array = ____arrays.array
23
+ local frameToPixelX = BlzFrameToPixelX
24
+ local frameToPixelY = BlzFrameToPixelY
23
25
  local getHandleId = GetHandleId
26
+ local getLocalClientHeight = BlzGetLocalClientHeight
27
+ local getLocalClientWidth = BlzGetLocalClientWidth
28
+ local getLocale = BlzGetLocale
24
29
  local getMouseFocusUnit = BlzGetMouseFocusUnit
30
+ local getMouseScreenPosX = BlzGetMouseScreenPosX
31
+ local getMouseScreenPosY = BlzGetMouseScreenPosY
32
+ local frameGetText = BlzFrameGetText
25
33
  local getUnitRealField = BlzGetUnitRealField
34
+ local getUnitState = GetUnitState
26
35
  local getUnitTypeId = GetUnitTypeId
27
- 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
42
+ local pingMinimap = PingMinimap
43
+ local pingMinimapEx = PingMinimapEx
44
+ local pixelToFrameX = BlzPixelToFrameX
45
+ local pixelToFrameY = BlzPixelToFrameY
46
+ local setFrameVisible = BlzFrameSetVisible
28
47
  local tableSort = table.sort
29
- local tocPath = "_warscript\\IsHD.toc"
48
+ local hdTocPath = "_warscript\\IsHD.toc"
49
+ local deTocPath = "_warscript\\IsDE.toc"
30
50
  compiletime(function()
31
51
  if currentMap then
32
- local fdfPath = "_warscript\\IsHD.fdf"
33
- currentMap:addFileString("_HD.w3mod\\" .. fdfPath, "\r\n")
34
- 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")
35
58
  end
36
59
  end)
37
- local selectionButtons
38
- Timer:run(function()
39
- selectionButtons = __TS__ArrayMap(
40
- Frame:byName("SimpleInfoPanelUnitDetail").parent:getChild(5):getChild(0).children,
41
- 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
42
99
  )
43
- 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
44
112
  local localSelectedUnits = {}
45
113
  local indexByLocalSelectedUnit = {}
46
114
  local function compareUnitsSelectionPriority(a, b)
@@ -57,11 +125,62 @@ local function compareUnitsSelectionPriority(a, b)
57
125
  end
58
126
  local mainSelectedUnitChangeEvent
59
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)
60
133
  ____exports.LocalClient = __TS__Class()
61
134
  local LocalClient = ____exports.LocalClient
62
135
  LocalClient.name = "LocalClient"
63
136
  function LocalClient.prototype.____constructor(self)
64
137
  end
138
+ function LocalClient.pingMinimap(self, x, y, duration, redOrColor, greenOrFlashy, blue, flashy)
139
+ if redOrColor == nil then
140
+ pingMinimap(x, y, duration)
141
+ elseif __TS__InstanceOf(redOrColor, Color) then
142
+ pingMinimapEx(
143
+ x,
144
+ y,
145
+ duration,
146
+ redOrColor.r,
147
+ redOrColor.g,
148
+ redOrColor.b,
149
+ greenOrFlashy or false
150
+ )
151
+ else
152
+ pingMinimapEx(
153
+ x,
154
+ y,
155
+ duration,
156
+ redOrColor,
157
+ greenOrFlashy,
158
+ blue,
159
+ flashy or false
160
+ )
161
+ end
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
65
184
  LocalClient.locale = getLocale()
66
185
  __TS__ObjectDefineProperty(
67
186
  LocalClient,
@@ -77,6 +196,13 @@ __TS__ObjectDefineProperty(
77
196
  return getLocalClientHeight()
78
197
  end}
79
198
  )
199
+ __TS__ObjectDefineProperty(
200
+ LocalClient,
201
+ "isSD",
202
+ {get = function(self)
203
+ return true
204
+ end}
205
+ )
80
206
  __TS__ObjectDefineProperty(
81
207
  LocalClient,
82
208
  "isHD",
@@ -84,11 +210,18 @@ __TS__ObjectDefineProperty(
84
210
  return false
85
211
  end}
86
212
  )
213
+ __TS__ObjectDefineProperty(
214
+ LocalClient,
215
+ "isDE",
216
+ {get = function(self)
217
+ return false
218
+ end}
219
+ )
87
220
  __TS__ObjectDefineProperty(
88
221
  LocalClient,
89
222
  "graphicsMode",
90
223
  {get = function(self)
91
- return self.isHD and 1 or 0
224
+ return 0
92
225
  end}
93
226
  )
94
227
  __TS__ObjectDefineProperty(
@@ -98,6 +231,41 @@ __TS__ObjectDefineProperty(
98
231
  return isLocalClientActive()
99
232
  end}
100
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
+ )
101
269
  __TS__ObjectDefineProperty(
102
270
  LocalClient,
103
271
  "mouseFocusUnit",
@@ -109,33 +277,7 @@ __TS__ObjectDefineProperty(
109
277
  LocalClient,
110
278
  "mainSelectedUnit",
111
279
  {get = function(self)
112
- Unit:getSelectionOf(Player["local"], localSelectedUnits)
113
- for i = 1, #localSelectedUnits do
114
- indexByLocalSelectedUnit[localSelectedUnits[i]] = i
115
- end
116
- tableSort(localSelectedUnits, compareUnitsSelectionPriority)
117
- local mainSelectedUnitIndex
118
- if selectionButtons and #localSelectedUnits > 1 then
119
- local maxButtonWidth = 0
120
- for i = 0, #selectionButtons - 1 do
121
- local width = selectionButtons[i + 1].width
122
- if width > maxButtonWidth then
123
- maxButtonWidth = width
124
- mainSelectedUnitIndex = i
125
- end
126
- end
127
- end
128
- local mainSelectedUnit = localSelectedUnits[(mainSelectedUnitIndex or 0) + 1]
129
- for i = 1, #localSelectedUnits do
130
- indexByLocalSelectedUnit[localSelectedUnits[i]] = nil
131
- localSelectedUnits[i] = nil
132
- end
133
- if mainSelectedUnitChangeEvent ~= nil and mainSelectedUnit ~= previousMainSelectedUnit then
134
- local previousPreviousMainSelectedUnit = previousMainSelectedUnit
135
- previousMainSelectedUnit = mainSelectedUnit
136
- Event.invoke(mainSelectedUnitChangeEvent, previousPreviousMainSelectedUnit, previousMainSelectedUnit)
137
- end
138
- return mainSelectedUnit
280
+ return currentMainSelectedUnit
139
281
  end}
140
282
  )
141
283
  __TS__ObjectDefineProperty(
@@ -144,13 +286,20 @@ __TS__ObjectDefineProperty(
144
286
  {get = function(self)
145
287
  if mainSelectedUnitChangeEvent == nil then
146
288
  mainSelectedUnitChangeEvent = __TS__New(Event)
147
- Timer.onPeriod[1 / 64]:addListener(function()
148
- local _ = ____exports.LocalClient.mainSelectedUnit
149
- end)
150
289
  end
151
290
  return mainSelectedUnitChangeEvent
152
291
  end}
153
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
154
303
  LocalClient.onDisconnect = __TS__New(
155
304
  TriggerEvent,
156
305
  function(trigger)
@@ -158,11 +307,132 @@ LocalClient.onDisconnect = __TS__New(
158
307
  end,
159
308
  function() return end
160
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)
161
430
  warpack.afterMapInit(function()
162
- rawset(
163
- ____exports.LocalClient,
164
- "isHD",
165
- loadTOCFile(tocPath)
166
- )
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))
167
437
  end)
168
438
  return ____exports
@@ -12,3 +12,4 @@ export declare const enum AnimationName {
12
12
  STAND = "stand",
13
13
  WALK = "walk"
14
14
  }
15
+ export declare const isAnimationName: (value: string) => value is AnimationName;
@@ -1,2 +1,18 @@
1
1
  local ____exports = {}
2
+ local animationNames = {
3
+ attack = true,
4
+ birth = true,
5
+ death = true,
6
+ decay = true,
7
+ dissipate = true,
8
+ morph = true,
9
+ portrait = true,
10
+ sleep = true,
11
+ spell = true,
12
+ stand = true,
13
+ walk = true
14
+ }
15
+ ____exports.isAnimationName = function(value)
16
+ return animationNames[value] ~= nil
17
+ end
2
18
  return ____exports