warscript 0.0.1-dev.c37d12c → 0.0.1-dev.c47d565

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 (498) hide show
  1. package/attributes.d.ts +18 -0
  2. package/attributes.lua +32 -0
  3. package/binaryreader.d.ts +1 -0
  4. package/binaryreader.lua +3 -0
  5. package/config.d.ts +5 -0
  6. package/config.lua +10 -0
  7. package/core/dummy.lua +4 -2
  8. package/core/types/effect.d.ts +24 -6
  9. package/core/types/effect.lua +169 -107
  10. package/core/types/frame.d.ts +24 -3
  11. package/core/types/frame.lua +198 -42
  12. package/core/types/group.d.ts +0 -1
  13. package/core/types/handle.d.ts +2 -1
  14. package/core/types/handle.lua +14 -9
  15. package/core/types/image.d.ts +0 -1
  16. package/core/types/item.d.ts +1 -0
  17. package/core/types/item.lua +1 -0
  18. package/core/types/missile.d.ts +2 -2
  19. package/core/types/missile.lua +8 -2
  20. package/core/types/player.d.ts +18 -1
  21. package/core/types/player.lua +76 -26
  22. package/core/types/playerCamera.d.ts +2 -0
  23. package/core/types/playerCamera.lua +123 -5
  24. package/core/types/playerColor.lua +4 -3
  25. package/core/types/sound.d.ts +18 -25
  26. package/core/types/sound.lua +113 -33
  27. package/core/types/tileCell.d.ts +18 -3
  28. package/core/types/tileCell.lua +108 -0
  29. package/core/types/timer.d.ts +9 -8
  30. package/core/types/timer.lua +45 -23
  31. package/core/types/unit.d.ts +5 -0
  32. package/core/types/unit.lua +13 -0
  33. package/core/util.d.ts +3 -1
  34. package/core/util.lua +127 -4
  35. package/decl/index.d.ts +1 -0
  36. package/decl/native.d.ts +1718 -964
  37. package/destroyable.d.ts +1 -0
  38. package/destroyable.lua +9 -0
  39. package/engine/ability-type-extended-tooltip.d.ts +8 -0
  40. package/engine/ability-type-extended-tooltip.lua +44 -0
  41. package/engine/ability.d.ts +1 -1
  42. package/engine/behavior.d.ts +24 -11
  43. package/engine/behavior.lua +233 -73
  44. package/engine/behaviour/ability/always-enabled.d.ts +7 -0
  45. package/engine/behaviour/ability/always-enabled.lua +31 -0
  46. package/engine/behaviour/ability/apply-buff.d.ts +8 -5
  47. package/engine/behaviour/ability/apply-buff.lua +36 -4
  48. package/engine/behaviour/ability/apply-unit-behavior.d.ts +13 -4
  49. package/engine/behaviour/ability/apply-unit-behavior.lua +37 -9
  50. package/engine/behaviour/ability/damage.d.ts +43 -11
  51. package/engine/behaviour/ability/damage.lua +89 -39
  52. package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
  53. package/engine/behaviour/ability/emulate-impact.lua +44 -0
  54. package/engine/behaviour/ability/heal.d.ts +33 -6
  55. package/engine/behaviour/ability/heal.lua +89 -10
  56. package/engine/behaviour/ability/instant-impact.d.ts +2 -2
  57. package/engine/behaviour/ability/instant-impact.lua +4 -15
  58. package/engine/behaviour/ability/on-command-impact.d.ts +9 -0
  59. package/engine/behaviour/ability/on-command-impact.lua +26 -0
  60. package/engine/behaviour/ability/remove-buffs.d.ts +25 -0
  61. package/engine/behaviour/ability/remove-buffs.lua +49 -0
  62. package/engine/behaviour/ability/restore-mana.d.ts +15 -0
  63. package/engine/behaviour/ability/restore-mana.lua +29 -0
  64. package/engine/behaviour/ability.d.ts +37 -7
  65. package/engine/behaviour/ability.lua +208 -27
  66. package/engine/behaviour/unit/stun-immunity.d.ts +12 -7
  67. package/engine/behaviour/unit/stun-immunity.lua +57 -31
  68. package/engine/behaviour/unit.d.ts +49 -4
  69. package/engine/behaviour/unit.lua +293 -2
  70. package/engine/buff.d.ts +177 -59
  71. package/engine/buff.lua +795 -281
  72. package/engine/game-map.d.ts +7 -0
  73. package/engine/game-map.lua +32 -0
  74. package/engine/index.d.ts +2 -1
  75. package/engine/internal/ability.d.ts +31 -15
  76. package/engine/internal/ability.lua +177 -104
  77. package/engine/internal/item/ability.lua +162 -4
  78. package/engine/internal/item/fields.d.ts +12 -0
  79. package/engine/internal/item/fields.lua +33 -0
  80. package/engine/internal/item/owner-cache.d.ts +5 -0
  81. package/engine/internal/item/owner-cache.lua +4 -0
  82. package/engine/internal/item+owner.d.ts +2 -0
  83. package/engine/internal/item+owner.lua +37 -8
  84. package/engine/internal/item.d.ts +34 -18
  85. package/engine/internal/item.lua +308 -102
  86. package/engine/internal/mechanics/ability-duration.d.ts +1 -3
  87. package/engine/internal/mechanics/ability-duration.lua +3 -1
  88. package/engine/internal/mechanics/cast-ability.lua +89 -0
  89. package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
  90. package/engine/internal/misc/ability-disable-counter.lua +13 -0
  91. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  92. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  93. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  94. package/engine/internal/misc/frame-coordinates.lua +21 -0
  95. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  96. package/engine/internal/misc/get-terrain-z.lua +11 -0
  97. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  98. package/engine/internal/misc/player-local-handle.lua +5 -0
  99. package/engine/internal/misc/unit-ability-level-natives.d.ts +2 -0
  100. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  101. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  102. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  103. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  104. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  105. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  106. package/engine/internal/object-data/evasion-probability.lua +16 -0
  107. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  108. package/engine/internal/object-data/health-bonus.lua +16 -0
  109. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  110. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  111. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  112. package/engine/internal/object-data/mana-bonus.lua +16 -0
  113. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  114. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  115. package/engine/internal/object-data/returned-melee-damage-factor.d.ts +2 -0
  116. package/engine/internal/object-data/returned-melee-damage-factor.lua +21 -0
  117. package/engine/internal/unit/ability.d.ts +45 -1
  118. package/engine/internal/unit/ability.lua +128 -17
  119. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  120. package/engine/internal/unit/add-item-to-slot-init.lua +12 -0
  121. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  122. package/engine/internal/unit/add-item-to-slot.lua +93 -0
  123. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  124. package/engine/internal/unit/allowed-targets.lua +9 -1
  125. package/engine/internal/unit/appearance.d.ts +15 -0
  126. package/engine/internal/unit/appearance.lua +85 -0
  127. package/engine/internal/unit/attributes.d.ts +17 -0
  128. package/engine/internal/unit/attributes.lua +46 -0
  129. package/engine/internal/unit/bonus.d.ts +28 -8
  130. package/engine/internal/unit/bonus.lua +136 -9
  131. package/engine/internal/unit/buff.d.ts +2 -2
  132. package/engine/internal/unit/buff.lua +34 -19
  133. package/engine/internal/unit/detach-missiles.d.ts +7 -0
  134. package/engine/internal/unit/detach-missiles.lua +30 -0
  135. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  136. package/engine/internal/unit/equipment-inventory.lua +233 -0
  137. package/engine/internal/unit/expiration-timer.lua +1 -1
  138. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  139. package/engine/internal/unit/extended-inventory.lua +99 -0
  140. package/engine/internal/unit/fly-height.d.ts +7 -0
  141. package/engine/internal/unit/fly-height.lua +20 -0
  142. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  143. package/engine/internal/unit/ignore-events-items.lua +14 -0
  144. package/engine/internal/unit/interrupts.d.ts +12 -0
  145. package/engine/internal/unit/interrupts.lua +28 -0
  146. package/engine/internal/unit/inventory.d.ts +28 -0
  147. package/engine/internal/unit/inventory.lua +87 -0
  148. package/engine/internal/unit/item-container.d.ts +25 -0
  149. package/engine/internal/unit/item-container.lua +11 -0
  150. package/engine/internal/unit/item-order-events.d.ts +17 -0
  151. package/engine/internal/unit/item-order-events.lua +67 -0
  152. package/engine/internal/unit/item-slot.d.ts +27 -0
  153. package/engine/internal/unit/item-slot.lua +92 -0
  154. package/engine/internal/unit/main-selected.d.ts +13 -0
  155. package/engine/internal/unit/main-selected.lua +36 -0
  156. package/engine/internal/unit/order.d.ts +20 -0
  157. package/engine/internal/unit/order.lua +136 -0
  158. package/engine/internal/unit/range-event.d.ts +12 -0
  159. package/engine/internal/unit/range-event.lua +90 -0
  160. package/engine/internal/unit/scale.d.ts +7 -0
  161. package/engine/internal/unit/scale.lua +20 -0
  162. package/engine/internal/unit+ability.d.ts +2 -1
  163. package/engine/internal/unit+ability.lua +75 -5
  164. package/engine/internal/unit+bonus.lua +3 -3
  165. package/engine/internal/unit+damage.d.ts +11 -11
  166. package/engine/internal/unit+damage.lua +43 -14
  167. package/engine/internal/unit+rally.lua +9 -31
  168. package/engine/internal/unit+spellSteal.lua +1 -2
  169. package/engine/internal/unit+transport.lua +4 -10
  170. package/engine/internal/unit-missile-data.lua +58 -32
  171. package/engine/internal/unit-missile-launch.lua +70 -13
  172. package/engine/internal/unit.d.ts +91 -38
  173. package/engine/internal/unit.lua +669 -351
  174. package/engine/internal/utility.lua +12 -0
  175. package/engine/lightning.d.ts +12 -5
  176. package/engine/lightning.lua +48 -14
  177. package/engine/local-client.d.ts +35 -2
  178. package/engine/local-client.lua +367 -15
  179. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  180. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  181. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  182. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  183. package/engine/object-data/auxiliary/attachment-preset.d.ts +14 -3
  184. package/engine/object-data/auxiliary/attachment-preset.lua +11 -3
  185. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  186. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  187. package/engine/object-data/auxiliary/combat-classification.d.ts +0 -2
  188. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  189. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  190. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  191. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  192. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  193. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  194. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  195. package/engine/object-data/auxiliary/item-class.lua +2 -0
  196. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  197. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  198. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  199. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  200. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  201. package/engine/object-data/auxiliary/order-type.lua +2 -0
  202. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  203. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  204. package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
  205. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  206. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  207. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  208. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  209. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  210. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  211. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  212. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  213. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  214. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  215. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  216. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  217. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  218. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  219. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  220. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  221. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  222. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  223. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  224. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  225. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +0 -1
  226. package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
  227. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.d.ts +23 -0
  228. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.lua +112 -0
  229. package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -1
  230. package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
  231. package/engine/object-data/entry/ability-type/blink.d.ts +10 -0
  232. package/engine/object-data/entry/ability-type/blink.lua +39 -0
  233. package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
  234. package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
  235. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  236. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  237. package/engine/object-data/entry/ability-type/channel.d.ts +0 -1
  238. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  239. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  240. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  241. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  242. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  243. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  244. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  245. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  246. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  247. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  248. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  249. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  250. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  251. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  252. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  253. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  254. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  255. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  256. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  257. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  258. package/engine/object-data/entry/ability-type/exhume-corpses.d.ts +14 -0
  259. package/engine/object-data/entry/ability-type/exhume-corpses.lua +40 -0
  260. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  261. package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
  262. package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
  263. package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
  264. package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
  265. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  266. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  267. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  268. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  269. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  270. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  271. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  272. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  273. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  274. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  275. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  276. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  277. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  278. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  279. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  280. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  281. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  282. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  283. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  284. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  285. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  286. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  287. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  288. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  289. package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
  290. package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
  291. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  292. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  293. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  294. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  295. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  296. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  297. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  298. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  299. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  300. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  301. package/engine/object-data/entry/ability-type/mine.d.ts +10 -0
  302. package/engine/object-data/entry/ability-type/mine.lua +39 -0
  303. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  304. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  305. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  306. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  307. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  308. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  309. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  310. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  311. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  312. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  313. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  314. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  315. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  316. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  317. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  318. package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
  319. package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
  320. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  321. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  322. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  323. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  324. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  325. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  326. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  327. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  328. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  329. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  330. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  331. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  332. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  333. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  334. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  335. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  336. package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
  337. package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
  338. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  339. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  340. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  341. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  342. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  343. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  344. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  345. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  346. package/engine/object-data/entry/ability-type/spirit-touch.d.ts +2 -2
  347. package/engine/object-data/entry/ability-type/spirit-touch.lua +6 -6
  348. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  349. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  350. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  351. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  352. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  353. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  354. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  355. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  356. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  357. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  358. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  359. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  360. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  361. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  362. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  363. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  364. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  365. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  366. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  367. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  368. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  369. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  370. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  371. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  372. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  373. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  374. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  375. package/engine/object-data/entry/ability-type/web.lua +52 -0
  376. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  377. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  378. package/engine/object-data/entry/ability-type.d.ts +48 -21
  379. package/engine/object-data/entry/ability-type.lua +377 -44
  380. package/engine/object-data/entry/buff-type/applicable.d.ts +0 -1
  381. package/engine/object-data/entry/buff-type/applicable.lua +143 -202
  382. package/engine/object-data/entry/buff-type/blank.d.ts +0 -1
  383. package/engine/object-data/entry/buff-type.d.ts +10 -13
  384. package/engine/object-data/entry/buff-type.lua +39 -29
  385. package/engine/object-data/entry/destructible-type.d.ts +32 -3
  386. package/engine/object-data/entry/destructible-type.lua +181 -0
  387. package/engine/object-data/entry/item-type/blank.d.ts +0 -1
  388. package/engine/object-data/entry/item-type.d.ts +32 -4
  389. package/engine/object-data/entry/item-type.lua +177 -2
  390. package/engine/object-data/entry/lightning-type.d.ts +6 -9
  391. package/engine/object-data/entry/lightning-type.lua +1 -1
  392. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  393. package/engine/object-data/entry/sound-preset.lua +140 -0
  394. package/engine/object-data/entry/unit-type.d.ts +121 -6
  395. package/engine/object-data/entry/unit-type.lua +959 -118
  396. package/engine/object-data/entry/upgrade/blank.d.ts +0 -1
  397. package/engine/object-data/entry/upgrade.d.ts +2 -3
  398. package/engine/object-data/entry/upgrade.lua +4 -4
  399. package/engine/object-data/entry.d.ts +23 -17
  400. package/engine/object-data/entry.lua +68 -32
  401. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  402. package/engine/object-field/ability.d.ts +33 -8
  403. package/engine/object-field/ability.lua +63 -3
  404. package/engine/object-field/item.d.ts +22 -0
  405. package/engine/object-field/item.lua +118 -0
  406. package/engine/object-field/unit.d.ts +72 -2
  407. package/engine/object-field/unit.lua +268 -4
  408. package/engine/object-field.d.ts +30 -11
  409. package/engine/object-field.lua +386 -122
  410. package/engine/random.d.ts +11 -0
  411. package/engine/random.lua +30 -0
  412. package/engine/standard/entries/ability-type.d.ts +3102 -7
  413. package/engine/standard/entries/ability-type.lua +0 -6
  414. package/engine/standard/entries/buff-type.d.ts +48 -0
  415. package/engine/standard/entries/buff-type.lua +46 -0
  416. package/engine/standard/entries/item-type.d.ts +1299 -0
  417. package/engine/standard/entries/item-type.lua +2 -0
  418. package/engine/standard/entries/lightning-type.d.ts +42 -15
  419. package/engine/standard/entries/lightning-type.lua +0 -14
  420. package/engine/standard/entries/sound-preset.d.ts +10 -0
  421. package/engine/standard/entries/sound-preset.lua +10 -0
  422. package/engine/standard/entries/unit-type.d.ts +47 -1
  423. package/engine/standard/entries/unit-type.lua +47 -1
  424. package/engine/standard/fields/ability.d.ts +5 -3
  425. package/engine/standard/fields/ability.lua +5 -3
  426. package/engine/standard/fields/item.d.ts +4 -0
  427. package/engine/standard/fields/item.lua +6 -0
  428. package/engine/standard/fields/unit.d.ts +12 -0
  429. package/engine/standard/fields/unit.lua +20 -0
  430. package/engine/synchronization.d.ts +11 -0
  431. package/engine/synchronization.lua +77 -0
  432. package/engine/text-tag.d.ts +36 -2
  433. package/engine/text-tag.lua +250 -10
  434. package/engine/unit.d.ts +14 -0
  435. package/engine/unit.lua +23 -2
  436. package/event.d.ts +3 -4
  437. package/event.lua +9 -5
  438. package/global/vec2.lua +1 -0
  439. package/index.d.ts +1 -0
  440. package/index.lua +1 -0
  441. package/lualib_bundle.lua +147 -43
  442. package/math/vec2.d.ts +2 -9
  443. package/math.d.ts +2 -2
  444. package/math.lua +14 -0
  445. package/net/socket.d.ts +7 -1
  446. package/net/socket.lua +45 -4
  447. package/network.d.ts +1 -0
  448. package/network.lua +28 -3
  449. package/objutil/ability.d.ts +0 -1
  450. package/objutil/buff.d.ts +0 -1
  451. package/objutil/buff.lua +13 -12
  452. package/objutil/object.d.ts +0 -1
  453. package/objutil/object.lua +1 -1
  454. package/objutil/unit.d.ts +0 -1
  455. package/objutil/unit.lua +8 -0
  456. package/operation.d.ts +8 -1
  457. package/operation.lua +38 -18
  458. package/package.json +3 -24
  459. package/patch-lua.d.ts +0 -0
  460. package/patch-lua.lua +25 -0
  461. package/patch-lualib.lua +1 -1
  462. package/property.d.ts +55 -0
  463. package/property.lua +374 -0
  464. package/string.d.ts +30 -0
  465. package/string.lua +14 -0
  466. package/util/stream.d.ts +0 -1
  467. package/utility/arrays.d.ts +20 -6
  468. package/utility/arrays.lua +62 -3
  469. package/utility/bit-set.d.ts +0 -2
  470. package/utility/callback-array.d.ts +17 -0
  471. package/utility/callback-array.lua +61 -0
  472. package/utility/functions.d.ts +8 -0
  473. package/utility/functions.lua +13 -0
  474. package/utility/lazy.d.ts +2 -0
  475. package/utility/lazy.lua +14 -0
  476. package/utility/linked-map.d.ts +35 -0
  477. package/utility/linked-map.lua +107 -0
  478. package/utility/linked-set.d.ts +17 -4
  479. package/utility/linked-set.lua +70 -3
  480. package/utility/lua-maps.d.ts +16 -4
  481. package/utility/lua-maps.lua +53 -2
  482. package/utility/lua-sets.d.ts +3 -2
  483. package/utility/lua-sets.lua +7 -0
  484. package/utility/random.d.ts +102 -0
  485. package/utility/random.lua +273 -0
  486. package/utility/records.lua +20 -1
  487. package/utility/reflection.lua +11 -7
  488. package/utility/types.d.ts +6 -2
  489. package/utility/unordered-map.d.ts +27 -0
  490. package/utility/unordered-map.lua +99 -0
  491. package/core/mapbounds.d.ts +0 -8
  492. package/core/mapbounds.lua +0 -12
  493. package/core/types/order.d.ts +0 -25
  494. package/core/types/order.lua +0 -55
  495. /package/engine/internal/{object-data/armor-increase.d.ts → mechanics/cast-ability.d.ts} +0 -0
  496. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  497. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  498. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -1,31 +1,186 @@
1
1
  local ____lualib = require("lualib_bundle")
2
+ local __TS__New = ____lualib.__TS__New
2
3
  local __TS__Class = ____lualib.__TS__Class
4
+ local __TS__InstanceOf = ____lualib.__TS__InstanceOf
3
5
  local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
4
- local __TS__New = ____lualib.__TS__New
5
6
  local ____exports = {}
7
+ local actualizeTargetingModeState
6
8
  local ____unit = require("core.types.unit")
7
9
  local Unit = ____unit.Unit
8
10
  local ____event = require("event")
11
+ local Event = ____event.Event
9
12
  local TriggerEvent = ____event.TriggerEvent
10
- local loadTOCFile = BlzLoadTOCFile
11
- local getLocalClientWidth = BlzGetLocalClientWidth
13
+ local ____frame = require("core.types.frame")
14
+ local Frame = ____frame.Frame
15
+ local ____player = require("core.types.player")
16
+ local Player = ____player.Player
17
+ local ____timer = require("core.types.timer")
18
+ local Timer = ____timer.Timer
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
25
+ local getHandleId = GetHandleId
12
26
  local getLocalClientHeight = BlzGetLocalClientHeight
13
- local isLocalClientActive = BlzIsLocalClientActive
14
- local getMouseFocusUnit = BlzGetMouseFocusUnit
27
+ local getLocalClientWidth = BlzGetLocalClientWidth
15
28
  local getLocale = BlzGetLocale
16
- local tocPath = "_warscript\\IsHD.toc"
29
+ local getMouseFocusUnit = BlzGetMouseFocusUnit
30
+ local getMouseScreenPosX = BlzGetMouseScreenPosX
31
+ local getMouseScreenPosY = BlzGetMouseScreenPosY
32
+ local frameGetText = BlzFrameGetText
33
+ local getUnitRealField = BlzGetUnitRealField
34
+ local getUnitState = GetUnitState
35
+ local getUnitTypeId = GetUnitTypeId
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
47
+ local tableSort = table.sort
48
+ local hdTocPath = "_warscript\\IsHD.toc"
49
+ local deTocPath = "_warscript\\IsDE.toc"
17
50
  compiletime(function()
18
51
  if currentMap then
19
- local fdfPath = "_warscript\\IsHD.fdf"
20
- currentMap:addFileString("_HD.w3mod\\" .. fdfPath, "\r\n")
21
- 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")
22
58
  end
23
59
  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
99
+ )
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
112
+ local localSelectedUnits = {}
113
+ local indexByLocalSelectedUnit = {}
114
+ local function compareUnitsSelectionPriority(a, b)
115
+ local aHandle = a.handle
116
+ local bHandle = b.handle
117
+ local priorityDelta = getUnitRealField(bHandle, UNIT_RF_PRIORITY) - getUnitRealField(aHandle, UNIT_RF_PRIORITY)
118
+ if priorityDelta ~= 0 then
119
+ return priorityDelta < 0
120
+ end
121
+ local aTypeId = getUnitTypeId(aHandle)
122
+ local bTypeId = getUnitTypeId(bHandle)
123
+ local orderDelta = (isHeroUnitId(aTypeId) and getHandleId(aHandle) or aTypeId) - (isHeroUnitId(bTypeId) and getHandleId(bHandle) or bTypeId)
124
+ return (orderDelta ~= 0 and orderDelta or indexByLocalSelectedUnit[a] - indexByLocalSelectedUnit[b]) < 0
125
+ end
126
+ local mainSelectedUnitChangeEvent
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)
24
133
  ____exports.LocalClient = __TS__Class()
25
134
  local LocalClient = ____exports.LocalClient
26
135
  LocalClient.name = "LocalClient"
27
136
  function LocalClient.prototype.____constructor(self)
28
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
29
184
  LocalClient.locale = getLocale()
30
185
  __TS__ObjectDefineProperty(
31
186
  LocalClient,
@@ -41,6 +196,13 @@ __TS__ObjectDefineProperty(
41
196
  return getLocalClientHeight()
42
197
  end}
43
198
  )
199
+ __TS__ObjectDefineProperty(
200
+ LocalClient,
201
+ "isSD",
202
+ {get = function(self)
203
+ return true
204
+ end}
205
+ )
44
206
  __TS__ObjectDefineProperty(
45
207
  LocalClient,
46
208
  "isHD",
@@ -48,11 +210,18 @@ __TS__ObjectDefineProperty(
48
210
  return false
49
211
  end}
50
212
  )
213
+ __TS__ObjectDefineProperty(
214
+ LocalClient,
215
+ "isDE",
216
+ {get = function(self)
217
+ return false
218
+ end}
219
+ )
51
220
  __TS__ObjectDefineProperty(
52
221
  LocalClient,
53
222
  "graphicsMode",
54
223
  {get = function(self)
55
- return self.isHD and 1 or 0
224
+ return 0
56
225
  end}
57
226
  )
58
227
  __TS__ObjectDefineProperty(
@@ -62,6 +231,41 @@ __TS__ObjectDefineProperty(
62
231
  return isLocalClientActive()
63
232
  end}
64
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
+ )
65
269
  __TS__ObjectDefineProperty(
66
270
  LocalClient,
67
271
  "mouseFocusUnit",
@@ -69,6 +273,33 @@ __TS__ObjectDefineProperty(
69
273
  return Unit:of(getMouseFocusUnit())
70
274
  end}
71
275
  )
276
+ __TS__ObjectDefineProperty(
277
+ LocalClient,
278
+ "mainSelectedUnit",
279
+ {get = function(self)
280
+ return currentMainSelectedUnit
281
+ end}
282
+ )
283
+ __TS__ObjectDefineProperty(
284
+ LocalClient,
285
+ "mainSelectedUnitChangeEvent",
286
+ {get = function(self)
287
+ if mainSelectedUnitChangeEvent == nil then
288
+ mainSelectedUnitChangeEvent = __TS__New(Event)
289
+ end
290
+ return mainSelectedUnitChangeEvent
291
+ end}
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
72
303
  LocalClient.onDisconnect = __TS__New(
73
304
  TriggerEvent,
74
305
  function(trigger)
@@ -76,11 +307,132 @@ LocalClient.onDisconnect = __TS__New(
76
307
  end,
77
308
  function() return end
78
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)
79
430
  warpack.afterMapInit(function()
80
- rawset(
81
- ____exports.LocalClient,
82
- "isHD",
83
- loadTOCFile(tocPath)
84
- )
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))
85
437
  end)
86
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
@@ -0,0 +1,11 @@
1
+ /** @noSelfInFile */
2
+ export declare const enum ArmorType {
3
+ LIGHT = 0,
4
+ MEDIUM = 1,
5
+ HEAVY = 2,
6
+ FORTIFIED = 3,
7
+ NORMAL = 4,
8
+ HERO = 5,
9
+ DIVINE = 6,
10
+ UNARMORED = 7
11
+ }
@@ -0,0 +1,46 @@
1
+ local ____exports = {}
2
+ local ____records = require("utility.records")
3
+ local invertRecord = ____records.invertRecord
4
+ local stringByArmorType = {
5
+ [0] = "small",
6
+ [1] = "medium",
7
+ [2] = "large",
8
+ [3] = "fort",
9
+ [4] = "normal",
10
+ [5] = "hero",
11
+ [6] = "divine",
12
+ [7] = "none"
13
+ }
14
+ local armorTypeByString = invertRecord(stringByArmorType)
15
+ local nativeByArmorType = {
16
+ [0] = DEFENSE_TYPE_LIGHT,
17
+ [1] = DEFENSE_TYPE_MEDIUM,
18
+ [2] = DEFENSE_TYPE_LARGE,
19
+ [3] = DEFENSE_TYPE_FORT,
20
+ [4] = DEFENSE_TYPE_NORMAL,
21
+ [5] = DEFENSE_TYPE_HERO,
22
+ [6] = DEFENSE_TYPE_DIVINE,
23
+ [7] = DEFENSE_TYPE_NONE
24
+ }
25
+ local armorTypeByNative = invertRecord(nativeByArmorType)
26
+ ---
27
+ -- @internal For use by internal systems only.
28
+ ____exports.armorTypeToString = function(armorType)
29
+ return stringByArmorType[armorType]
30
+ end
31
+ ---
32
+ -- @internal For use by internal systems only.
33
+ ____exports.stringToArmorType = function(____string)
34
+ return armorTypeByString[____string] or 7
35
+ end
36
+ ---
37
+ -- @internal For use by internal systems only.
38
+ ____exports.armorTypeToNative = function(armorType)
39
+ return nativeByArmorType[armorType]
40
+ end
41
+ ---
42
+ -- @internal For use by internal systems only.
43
+ ____exports.nativeToArmorType = function(armorType)
44
+ return armorTypeByNative[armorType]
45
+ end
46
+ return ____exports
@@ -1,15 +1,26 @@
1
- /// <reference types="@typescript-to-lua/language-extensions" />
2
1
  /** @noSelfInFile */
3
2
  import { ModelNodeName } from "./model-node-name";
4
3
  import { ModelNodeQualifier } from "./model-node-qualifier";
5
4
  import { Optional } from "../../../utility/types";
5
+ import { EffectParameters } from "../../../core/types/effect";
6
6
  export type AttachmentPreset = {
7
7
  modelPath: string;
8
8
  nodeName: ModelNodeName;
9
9
  nodeQualifiers: ModelNodeQualifier[];
10
10
  };
11
- export type AttachmentPresetInput = Optional<AttachmentPreset, "nodeQualifiers"> | string;
12
- export declare const toAttachmentPreset: (attachmentPresetInput: AttachmentPresetInput) => AttachmentPreset;
11
+ /** Where an effect attaches: a model node, e.g. the chest or the left hand. */
12
+ export type AttachmentPoint = {
13
+ nodeName: ModelNodeName;
14
+ nodeQualifiers: ModelNodeQualifier[];
15
+ };
16
+ export type AttachmentPointInput = Optional<AttachmentPoint, "nodeQualifiers">;
17
+ export declare const attachmentPointToNodeFQN: (attachmentPoint: AttachmentPointInput) => string;
18
+ export type EffectPresetWithParameters = AttachmentPreset & {
19
+ parameters?: EffectParameters;
20
+ };
21
+ export type AttachmentPresetInput<T extends AttachmentPreset = AttachmentPreset> = Optional<T, "nodeName" | "nodeQualifiers"> | string;
22
+ export type EffectPresetWithParametersInput = AttachmentPresetInput<EffectPresetWithParameters>;
23
+ export declare const toEffectPreset: (effectPresetInput: EffectPresetWithParametersInput) => EffectPresetWithParameters;
13
24
  export declare const extractAttachmentPresetInputModelPath: (attachmentPresetInput: AttachmentPresetInput | undefined) => string;
14
25
  export declare const extractAttachmentPresetInputNodeFQN: (attachmentPresetInput: AttachmentPresetInput | undefined) => string;
15
26
  export declare const splitAttachmentNodeFQN: (attachmentNodeFQN: string) => LuaMultiReturn<[attachmentNodeName: ModelNodeName, attachmentNodeQualifiers: ModelNodeQualifier[]]>;
@@ -1,9 +1,17 @@
1
1
  local ____lualib = require("lualib_bundle")
2
+ local __TS__ArrayJoin = ____lualib.__TS__ArrayJoin
2
3
  local __TS__StringSplit = ____lualib.__TS__StringSplit
3
4
  local __TS__ArraySlice = ____lualib.__TS__ArraySlice
4
5
  local ____exports = {}
5
- ____exports.toAttachmentPreset = function(attachmentPresetInput)
6
- return type(attachmentPresetInput) == "string" and ({modelPath = attachmentPresetInput, nodeName = "origin", nodeQualifiers = {}}) or ({modelPath = attachmentPresetInput.modelPath, nodeName = attachmentPresetInput.nodeName, nodeQualifiers = attachmentPresetInput.nodeQualifiers or ({})})
6
+ ____exports.attachmentPointToNodeFQN = function(attachmentPoint) return table.concat(
7
+ {
8
+ attachmentPoint.nodeName,
9
+ table.unpack(attachmentPoint.nodeQualifiers or ({}))
10
+ },
11
+ ","
12
+ ) end
13
+ ____exports.toEffectPreset = function(effectPresetInput)
14
+ return type(effectPresetInput) == "string" and ({modelPath = effectPresetInput, nodeName = "origin", nodeQualifiers = {}}) or ({modelPath = effectPresetInput.modelPath, nodeName = effectPresetInput.nodeName or "origin", nodeQualifiers = effectPresetInput.nodeQualifiers or ({}), parameters = effectPresetInput.parameters})
7
15
  end
8
16
  ____exports.extractAttachmentPresetInputModelPath = function(attachmentPresetInput)
9
17
  return type(attachmentPresetInput) == "string" and attachmentPresetInput or (attachmentPresetInput and attachmentPresetInput.modelPath or "")
@@ -12,7 +20,7 @@ ____exports.extractAttachmentPresetInputNodeFQN = function(attachmentPresetInput
12
20
  if type(attachmentPresetInput) == "string" or attachmentPresetInput == nil then
13
21
  return ""
14
22
  end
15
- return table.concat(
23
+ return __TS__ArrayJoin(
16
24
  {
17
25
  attachmentPresetInput.nodeName,
18
26
  table.unpack(attachmentPresetInput.nodeQualifiers or ({}))
@@ -1,11 +1,10 @@
1
1
  /** @noSelfInFile */
2
2
  export declare const enum AttackType {
3
- NONE = "unknown",
4
- NORMAL = "normal",
5
- PIERCE = "pierce",
6
- SIEGE = "siege",
7
- SPELL = "spells",
8
- CHAOS = "chaos",
9
- MAGIC = "magic",
10
- HERO = "hero"
3
+ SPELL = 0,
4
+ NORMAL = 1,
5
+ PIERCE = 2,
6
+ SIEGE = 3,
7
+ MAGIC = 4,
8
+ CHAOS = 5,
9
+ HERO = 6
11
10
  }
@@ -1,2 +1,44 @@
1
1
  local ____exports = {}
2
+ local ____records = require("utility.records")
3
+ local invertRecord = ____records.invertRecord
4
+ local stringByAttackType = {
5
+ [1] = "normal",
6
+ [2] = "pierce",
7
+ [3] = "siege",
8
+ [0] = "spells",
9
+ [5] = "chaos",
10
+ [4] = "magic",
11
+ [6] = "hero"
12
+ }
13
+ local attackTypeByString = invertRecord(stringByAttackType)
14
+ local nativeByAttackType = {
15
+ [1] = ATTACK_TYPE_MELEE,
16
+ [2] = ATTACK_TYPE_PIERCE,
17
+ [3] = ATTACK_TYPE_SIEGE,
18
+ [0] = ATTACK_TYPE_NORMAL,
19
+ [5] = ATTACK_TYPE_CHAOS,
20
+ [4] = ATTACK_TYPE_MAGIC,
21
+ [6] = ATTACK_TYPE_HERO
22
+ }
23
+ local attackTypeByNative = invertRecord(nativeByAttackType)
24
+ ---
25
+ -- @internal For use by internal systems only.
26
+ ____exports.attackTypeToString = function(attackType)
27
+ return attackType ~= nil and stringByAttackType[attackType] or "unknown"
28
+ end
29
+ ---
30
+ -- @internal For use by internal systems only.
31
+ ____exports.stringToAttackType = function(____string)
32
+ return attackTypeByString[____string]
33
+ end
34
+ ---
35
+ -- @internal For use by internal systems only.
36
+ ____exports.attackTypeToNative = function(attackType)
37
+ return nativeByAttackType[attackType]
38
+ end
39
+ ---
40
+ -- @internal For use by internal systems only.
41
+ ____exports.nativeToAttackType = function(attackType)
42
+ return attackTypeByNative[attackType]
43
+ end
2
44
  return ____exports
@@ -1,5 +1,3 @@
1
- /// <reference types="@warscript/language-extensions" />
2
- /// <reference types="@typescript-to-lua/language-extensions" />
3
1
  /** @noSelfInFile */
4
2
  export declare const enum CombatClassification {
5
3
  NONE = 1,// 2^0
@@ -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
+ }