warscript 0.0.1-dev.c362181 → 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 (401) hide show
  1. package/attributes.d.ts +6 -0
  2. package/attributes.lua +17 -1
  3. package/core/dummy.lua +4 -2
  4. package/core/types/effect.d.ts +12 -4
  5. package/core/types/effect.lua +67 -104
  6. package/core/types/frame.d.ts +16 -2
  7. package/core/types/frame.lua +141 -77
  8. package/core/types/handle.lua +9 -9
  9. package/core/types/item.d.ts +1 -0
  10. package/core/types/item.lua +1 -0
  11. package/core/types/player.d.ts +18 -1
  12. package/core/types/player.lua +76 -26
  13. package/core/types/playerCamera.d.ts +2 -0
  14. package/core/types/playerCamera.lua +123 -5
  15. package/core/types/playerColor.lua +4 -3
  16. package/core/types/sound.d.ts +1 -1
  17. package/core/types/sound.lua +19 -9
  18. package/core/types/tileCell.d.ts +18 -3
  19. package/core/types/tileCell.lua +108 -0
  20. package/core/types/timer.d.ts +9 -8
  21. package/core/types/timer.lua +45 -23
  22. package/core/types/unit.d.ts +5 -0
  23. package/core/types/unit.lua +5 -0
  24. package/core/util.d.ts +3 -1
  25. package/core/util.lua +109 -3
  26. package/decl/native.d.ts +1718 -964
  27. package/destroyable.d.ts +1 -0
  28. package/destroyable.lua +9 -0
  29. package/engine/ability-type-extended-tooltip.d.ts +8 -0
  30. package/engine/ability-type-extended-tooltip.lua +44 -0
  31. package/engine/behavior.d.ts +14 -1
  32. package/engine/behavior.lua +230 -70
  33. package/engine/behaviour/ability/apply-buff.lua +5 -5
  34. package/engine/behaviour/ability/apply-unit-behavior.lua +5 -0
  35. package/engine/behaviour/ability/damage.d.ts +10 -3
  36. package/engine/behaviour/ability/damage.lua +41 -49
  37. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  38. package/engine/behaviour/ability/emulate-impact.lua +23 -7
  39. package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
  40. package/engine/behaviour/ability/on-command-impact.lua +1 -0
  41. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  42. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  43. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  44. package/engine/behaviour/ability/restore-mana.lua +6 -6
  45. package/engine/behaviour/ability.d.ts +16 -6
  46. package/engine/behaviour/ability.lua +69 -21
  47. package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
  48. package/engine/behaviour/unit/stun-immunity.lua +57 -31
  49. package/engine/behaviour/unit.d.ts +40 -3
  50. package/engine/behaviour/unit.lua +270 -6
  51. package/engine/buff.d.ts +114 -58
  52. package/engine/buff.lua +564 -303
  53. package/engine/index.d.ts +2 -1
  54. package/engine/internal/ability.d.ts +14 -1
  55. package/engine/internal/ability.lua +113 -44
  56. package/engine/internal/item/ability.lua +63 -11
  57. package/engine/internal/item/fields.d.ts +12 -0
  58. package/engine/internal/item/fields.lua +33 -0
  59. package/engine/internal/item/owner-cache.d.ts +5 -0
  60. package/engine/internal/item/owner-cache.lua +4 -0
  61. package/engine/internal/item+owner.d.ts +2 -0
  62. package/engine/internal/item+owner.lua +37 -8
  63. package/engine/internal/item.d.ts +32 -16
  64. package/engine/internal/item.lua +257 -82
  65. package/engine/internal/mechanics/ability-duration.lua +1 -1
  66. package/engine/internal/mechanics/cast-ability.lua +6 -3
  67. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  68. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  69. package/engine/internal/misc/frame-coordinates.lua +21 -0
  70. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  71. package/engine/internal/misc/get-terrain-z.lua +11 -0
  72. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  73. package/engine/internal/misc/player-local-handle.lua +5 -0
  74. package/engine/internal/misc/unit-ability-level-natives.d.ts +2 -0
  75. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  76. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  77. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  78. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  79. package/engine/internal/object-data/health-bonus.lua +16 -0
  80. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  81. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  82. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  83. package/engine/internal/object-data/mana-bonus.lua +16 -0
  84. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  85. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  86. package/engine/internal/object-data/returned-melee-damage-factor.d.ts +2 -0
  87. package/engine/internal/object-data/returned-melee-damage-factor.lua +21 -0
  88. package/engine/internal/unit/ability.d.ts +35 -0
  89. package/engine/internal/unit/ability.lua +98 -9
  90. package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
  91. package/engine/internal/unit/add-item-to-slot.lua +53 -12
  92. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  93. package/engine/internal/unit/allowed-targets.lua +9 -1
  94. package/engine/internal/unit/appearance.d.ts +15 -0
  95. package/engine/internal/unit/appearance.lua +85 -0
  96. package/engine/internal/unit/attributes.d.ts +17 -0
  97. package/engine/internal/unit/attributes.lua +46 -0
  98. package/engine/internal/unit/bonus.d.ts +17 -0
  99. package/engine/internal/unit/bonus.lua +113 -8
  100. package/engine/internal/unit/buff.d.ts +2 -2
  101. package/engine/internal/unit/buff.lua +34 -19
  102. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  103. package/engine/internal/unit/equipment-inventory.lua +233 -0
  104. package/engine/internal/unit/expiration-timer.lua +1 -1
  105. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  106. package/engine/internal/unit/extended-inventory.lua +99 -0
  107. package/engine/internal/unit/fly-height.d.ts +7 -0
  108. package/engine/internal/unit/fly-height.lua +20 -0
  109. package/engine/internal/unit/ignore-events-items.lua +10 -1
  110. package/engine/internal/unit/interrupts.d.ts +12 -0
  111. package/engine/internal/unit/interrupts.lua +28 -0
  112. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
  113. package/engine/internal/unit/inventory.lua +87 -0
  114. package/engine/internal/unit/item-container.d.ts +25 -0
  115. package/engine/internal/unit/item-container.lua +11 -0
  116. package/engine/internal/unit/item-order-events.d.ts +17 -0
  117. package/engine/internal/unit/item-order-events.lua +67 -0
  118. package/engine/internal/unit/item-slot.d.ts +27 -0
  119. package/engine/internal/unit/item-slot.lua +92 -0
  120. package/engine/internal/unit/main-selected.lua +12 -27
  121. package/engine/internal/unit/order.d.ts +20 -0
  122. package/engine/internal/unit/order.lua +136 -0
  123. package/engine/internal/unit/range-event.d.ts +12 -0
  124. package/engine/internal/unit/range-event.lua +90 -0
  125. package/engine/internal/unit/scale.d.ts +7 -0
  126. package/engine/internal/unit/scale.lua +20 -0
  127. package/engine/internal/unit+ability.d.ts +2 -1
  128. package/engine/internal/unit+ability.lua +73 -3
  129. package/engine/internal/unit+bonus.lua +3 -3
  130. package/engine/internal/unit+damage.d.ts +11 -11
  131. package/engine/internal/unit+damage.lua +43 -14
  132. package/engine/internal/unit+rally.lua +9 -31
  133. package/engine/internal/unit+spellSteal.lua +1 -2
  134. package/engine/internal/unit-missile-data.lua +58 -32
  135. package/engine/internal/unit-missile-launch.lua +65 -27
  136. package/engine/internal/unit.d.ts +41 -36
  137. package/engine/internal/unit.lua +398 -327
  138. package/engine/local-client.d.ts +28 -0
  139. package/engine/local-client.lua +324 -54
  140. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  141. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  142. package/engine/object-data/auxiliary/attachment-preset.d.ts +14 -2
  143. package/engine/object-data/auxiliary/attachment-preset.lua +11 -3
  144. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  145. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  146. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  147. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  148. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  149. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  150. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  151. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  152. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  153. package/engine/object-data/auxiliary/item-class.lua +2 -0
  154. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  155. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  156. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  157. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  158. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  159. package/engine/object-data/auxiliary/order-type.lua +2 -0
  160. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  161. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  162. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  163. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  164. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  165. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  166. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  167. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  168. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  169. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  170. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  171. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  172. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  173. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  174. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  175. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  176. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  177. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  178. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  179. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.d.ts +23 -0
  180. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.lua +112 -0
  181. package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -0
  182. package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
  183. package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
  184. package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
  185. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  186. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  187. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  188. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  189. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  190. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  191. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  192. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  193. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  194. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  195. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  196. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  197. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  198. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  199. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  200. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  201. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  202. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  203. package/engine/object-data/entry/ability-type/exhume-corpses.d.ts +14 -0
  204. package/engine/object-data/entry/ability-type/exhume-corpses.lua +40 -0
  205. package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
  206. package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
  207. package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
  208. package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
  209. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  210. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  211. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  212. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  213. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  214. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  215. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  216. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  217. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  218. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  219. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  220. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  221. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  222. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  223. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  224. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  225. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  226. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  227. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  228. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  229. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  230. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  231. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  232. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  233. package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
  234. package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
  235. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  236. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  237. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  238. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  239. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  240. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  241. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  242. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  243. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  244. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  245. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  246. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  247. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  248. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  249. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  250. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  251. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  252. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  253. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  254. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  255. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  256. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  257. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  258. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  259. package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
  260. package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
  261. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  262. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  263. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  264. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  265. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  266. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  267. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  268. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  269. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  270. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  271. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  272. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  273. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  274. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  275. package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
  276. package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
  277. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  278. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  279. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  280. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  281. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  282. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  283. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  284. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  285. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  286. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  287. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  288. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  289. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  290. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  291. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  292. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  293. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  294. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  295. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  296. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  297. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  298. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  299. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  300. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  301. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  302. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  303. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  304. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  305. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  306. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  307. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  308. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  309. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  310. package/engine/object-data/entry/ability-type/web.lua +52 -0
  311. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  312. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  313. package/engine/object-data/entry/ability-type.d.ts +40 -15
  314. package/engine/object-data/entry/ability-type.lua +314 -17
  315. package/engine/object-data/entry/buff-type/applicable.lua +113 -104
  316. package/engine/object-data/entry/buff-type.d.ts +10 -12
  317. package/engine/object-data/entry/buff-type.lua +37 -27
  318. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  319. package/engine/object-data/entry/destructible-type.lua +181 -0
  320. package/engine/object-data/entry/item-type.d.ts +18 -3
  321. package/engine/object-data/entry/item-type.lua +84 -0
  322. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  323. package/engine/object-data/entry/lightning-type.lua +1 -1
  324. package/engine/object-data/entry/sound-preset.d.ts +2 -2
  325. package/engine/object-data/entry/unit-type.d.ts +74 -6
  326. package/engine/object-data/entry/unit-type.lua +560 -100
  327. package/engine/object-data/entry/upgrade.d.ts +2 -2
  328. package/engine/object-data/entry.d.ts +6 -1
  329. package/engine/object-data/entry.lua +8 -0
  330. package/engine/object-field/ability.d.ts +4 -4
  331. package/engine/object-field/ability.lua +9 -8
  332. package/engine/object-field/item.d.ts +22 -0
  333. package/engine/object-field/item.lua +118 -0
  334. package/engine/object-field/unit.d.ts +72 -3
  335. package/engine/object-field/unit.lua +268 -7
  336. package/engine/object-field.d.ts +26 -7
  337. package/engine/object-field.lua +360 -119
  338. package/engine/random.d.ts +10 -0
  339. package/engine/random.lua +21 -0
  340. package/engine/standard/entries/ability-type.d.ts +3102 -7
  341. package/engine/standard/entries/ability-type.lua +0 -6
  342. package/engine/standard/entries/buff-type.d.ts +48 -0
  343. package/engine/standard/entries/buff-type.lua +46 -0
  344. package/engine/standard/entries/item-type.d.ts +1299 -0
  345. package/engine/standard/entries/item-type.lua +2 -0
  346. package/engine/standard/entries/lightning-type.d.ts +42 -15
  347. package/engine/standard/entries/lightning-type.lua +0 -14
  348. package/engine/standard/entries/unit-type.d.ts +5 -0
  349. package/engine/standard/entries/unit-type.lua +5 -0
  350. package/engine/standard/fields/ability.d.ts +2 -2
  351. package/engine/standard/fields/ability.lua +2 -2
  352. package/engine/standard/fields/item.d.ts +4 -0
  353. package/engine/standard/fields/item.lua +6 -0
  354. package/engine/standard/fields/unit.d.ts +12 -0
  355. package/engine/standard/fields/unit.lua +20 -0
  356. package/engine/synchronization.d.ts +11 -0
  357. package/engine/synchronization.lua +77 -0
  358. package/engine/text-tag.d.ts +36 -2
  359. package/engine/text-tag.lua +250 -10
  360. package/engine/unit.d.ts +11 -1
  361. package/engine/unit.lua +11 -1
  362. package/event.d.ts +1 -1
  363. package/lualib_bundle.lua +1 -1
  364. package/math.d.ts +2 -0
  365. package/math.lua +14 -0
  366. package/net/socket.lua +1 -1
  367. package/network.lua +25 -1
  368. package/objutil/buff.lua +12 -11
  369. package/objutil/object.lua +1 -1
  370. package/operation.d.ts +8 -1
  371. package/operation.lua +38 -18
  372. package/package.json +3 -23
  373. package/patch-lua.lua +15 -0
  374. package/patch-lualib.lua +1 -1
  375. package/utility/arrays.d.ts +9 -1
  376. package/utility/arrays.lua +28 -0
  377. package/utility/callback-array.d.ts +17 -0
  378. package/utility/callback-array.lua +61 -0
  379. package/utility/functions.d.ts +8 -0
  380. package/utility/functions.lua +13 -0
  381. package/utility/linked-map.d.ts +35 -0
  382. package/utility/linked-map.lua +107 -0
  383. package/utility/linked-set.d.ts +5 -1
  384. package/utility/linked-set.lua +49 -1
  385. package/utility/lua-maps.d.ts +15 -2
  386. package/utility/lua-maps.lua +53 -2
  387. package/utility/lua-sets.d.ts +2 -0
  388. package/utility/lua-sets.lua +7 -0
  389. package/utility/random.d.ts +102 -0
  390. package/utility/random.lua +273 -0
  391. package/utility/records.lua +20 -1
  392. package/utility/types.d.ts +3 -0
  393. package/utility/unordered-map.d.ts +27 -0
  394. package/utility/unordered-map.lua +99 -0
  395. package/core/types/order.d.ts +0 -25
  396. package/core/types/order.lua +0 -55
  397. package/engine/internal/unit/item.lua +0 -78
  398. /package/engine/internal/{object-data/armor-increase.d.ts → misc/damage-metadata-by-target.d.ts} +0 -0
  399. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  400. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  401. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -15,13 +15,34 @@ local Event = ____event.Event
15
15
  local TriggerEvent = ____event.TriggerEvent
16
16
  local ____timer = require("core.types.timer")
17
17
  local Timer = ____timer.Timer
18
+ local ____frame_2Dcoordinates = require("engine.internal.misc.frame-coordinates")
19
+ local FRAME_MAX_Y = ____frame_2Dcoordinates.FRAME_MAX_Y
20
+ local FRAME_MIN_Y = ____frame_2Dcoordinates.FRAME_MIN_Y
21
+ local getFrameMinXMaxX = ____frame_2Dcoordinates.getFrameMinXMaxX
22
+ local ____playerCamera = require("core.types.playerCamera")
23
+ local frameCoordinatesToWorld = ____playerCamera.frameCoordinatesToWorld
24
+ local ____lua_2Dsets = require("utility.lua-sets")
25
+ local mutableLuaSet = ____lua_2Dsets.mutableLuaSet
26
+ local ____socket = require("net.socket")
27
+ local Socket = ____socket.Socket
28
+ local ____lua_2Dmaps = require("utility.lua-maps")
29
+ local getOrPut = ____lua_2Dmaps.getOrPut
30
+ local luaMapInvert = ____lua_2Dmaps.luaMapInvert
31
+ local luaMapOf = ____lua_2Dmaps.luaMapOf
32
+ local mutableLuaMap = ____lua_2Dmaps.mutableLuaMap
18
33
  local frameClick = BlzFrameClick
19
34
  local frameGetEnable = BlzFrameGetEnable
20
35
  local frameIsVisible = BlzFrameIsVisible
21
36
  local frameSetEnable = BlzFrameSetEnable
22
37
  local frameSetScale = BlzFrameSetScale
23
- local getCameraTargetPositionX = GetCameraTargetPositionX
24
- local getCameraTargetPositionY = GetCameraTargetPositionY
38
+ local getHandleId = GetHandleId
39
+ local getLocalClientHeight = BlzGetLocalClientHeight
40
+ local getMouseScreenPosX = BlzGetMouseScreenPosX
41
+ local getMouseScreenPosY = BlzGetMouseScreenPosY
42
+ local getOriginFrame = BlzGetOriginFrame
43
+ local location = Location
44
+ local pixelToFrameX = BlzPixelToFrameX
45
+ local pixelToFrameY = BlzPixelToFrameY
25
46
  local ____rawget = _G.rawget
26
47
  local rawset = _G.rawset
27
48
  local invoke = Event.invoke
@@ -123,6 +144,79 @@ do
123
144
  FramePoint.BOTTOM_RIGHT = FRAMEPOINT_BOTTOMRIGHT
124
145
  end
125
146
  local tooltipByFrame = setmetatable({}, {__mode = "k"})
147
+ local isMouseInsideLocallyByFrame = mutableLuaMap()
148
+ local mouseEnterLocalEventByFrame = mutableLuaMap()
149
+ local mouseLeaveLocalEventByFrame = mutableLuaMap()
150
+ local isLocalMouseTrackingStarted = false
151
+ --- Reused across ticks to avoid per-tick allocations: only the first `leftFrameCount` /
152
+ -- `enteredFrameCount` entries are meaningful, stale entries beyond them are never read and are
153
+ -- kept collectable by the weak values mode.
154
+ local leftFrames = setmetatable({}, {__mode = "v"})
155
+ local enteredFrames = setmetatable({}, {__mode = "v"})
156
+ --- All frames share a single poll which invokes every mouse leave event before any mouse enter
157
+ -- event within the same tick. With a poll per event, the invocation order would depend on the
158
+ -- event creation order instead, breaking listeners relying on the natural "leave the old frame,
159
+ -- then enter the new frame" order.
160
+ local function startLocalMouseTracking()
161
+ if isLocalMouseTrackingStarted then
162
+ return
163
+ end
164
+ isLocalMouseTrackingStarted = true
165
+ Timer.onPeriod[1 / 64]:addListener(function()
166
+ local leftFrameCount = 0
167
+ local enteredFrameCount = 0
168
+ for frame, wasMouseInside in pairs(isMouseInsideLocallyByFrame) do
169
+ local tooltip = tooltipByFrame[frame]
170
+ local isMouseInside = tooltip ~= nil and tooltip.visible
171
+ if isMouseInside ~= wasMouseInside then
172
+ isMouseInsideLocallyByFrame[frame] = isMouseInside
173
+ if isMouseInside then
174
+ enteredFrames[enteredFrameCount + 1] = frame
175
+ enteredFrameCount = enteredFrameCount + 1
176
+ else
177
+ leftFrames[leftFrameCount + 1] = frame
178
+ leftFrameCount = leftFrameCount + 1
179
+ end
180
+ end
181
+ end
182
+ for i = 1, leftFrameCount do
183
+ local event = mouseLeaveLocalEventByFrame[leftFrames[i]]
184
+ if event ~= nil then
185
+ Event.invoke(event)
186
+ end
187
+ end
188
+ for i = 1, enteredFrameCount do
189
+ local event = mouseEnterLocalEventByFrame[enteredFrames[i]]
190
+ if event ~= nil then
191
+ Event.invoke(event)
192
+ end
193
+ end
194
+ end)
195
+ end
196
+ local keyByAsyncInitOriginFrameType = luaMapOf(ORIGIN_FRAME_PORTRAIT_HP_TEXT, "hp", ORIGIN_FRAME_PORTRAIT_MANA_TEXT, "mana")
197
+ local asyncInitOriginFrameTypeByKey = luaMapInvert(keyByAsyncInitOriginFrameType)
198
+ local seenAsyncInitOriginFrameTypes = mutableLuaSet()
199
+ local seenAsyncInitOriginFrameTypesSocket = __TS__New(Socket)
200
+ local seenPlayersByAsyncInitOriginFrameType = mutableLuaMap()
201
+ seenAsyncInitOriginFrameTypesSocket.onMessage:addListener(function(player, key)
202
+ local asyncInitOriginFrameType = asyncInitOriginFrameTypeByKey[key]
203
+ if asyncInitOriginFrameType ~= nil then
204
+ getOrPut(seenPlayersByAsyncInitOriginFrameType, asyncInitOriginFrameType, mutableLuaSet)[player] = true
205
+ end
206
+ end)
207
+ local function haveAllPlayersSeenAsyncInitOriginFrameType(frame)
208
+ local players = seenPlayersByAsyncInitOriginFrameType[frame]
209
+ if players == nil then
210
+ return false
211
+ end
212
+ for ____, player in ipairs(Player.all) do
213
+ if player.isUser and player.isPlaying and not (players[player] ~= nil) then
214
+ return false
215
+ end
216
+ end
217
+ keyByAsyncInitOriginFrameType[frame] = nil
218
+ return true
219
+ end
126
220
  ____exports.Frame = __TS__Class()
127
221
  local Frame = ____exports.Frame
128
222
  Frame.name = "Frame"
@@ -155,6 +249,18 @@ function Frame.prototype.getEvent(self, eventType, c)
155
249
  end
156
250
  return self.events[eventId]
157
251
  end
252
+ function Frame.prototype.trackMouseLocally(self)
253
+ if not (tooltipByFrame[self] ~= nil) then
254
+ ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = self
255
+ local tooltip = ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent == self and ____exports.Frame:createByType("SIMPLEFRAME", "", ____exports.Frame.CONSOLE_UI) or ____exports.Frame:createByType("FRAME", "", ____exports.Frame.GAME_UI)
256
+ ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = ____exports.Frame.CONSOLE_UI
257
+ self:setTooltip(tooltip)
258
+ end
259
+ if not (isMouseInsideLocallyByFrame[self] ~= nil) then
260
+ isMouseInsideLocallyByFrame[self] = false
261
+ startLocalMouseTracking()
262
+ end
263
+ end
158
264
  function Frame.prototype.hide(self)
159
265
  self.hideCounter = self.hideCounter + 1
160
266
  if self.hideCounter > 0 then
@@ -301,7 +407,17 @@ function Frame.byOrigin(self, frameType, index)
301
407
  if index == nil then
302
408
  index = 0
303
409
  end
304
- return self:of(BlzGetOriginFrame(frameType, index))
410
+ local frame = getOriginFrame(frameType, index)
411
+ local asyncInitOriginFrameTypeKey = keyByAsyncInitOriginFrameType[frameType]
412
+ if index == 0 and asyncInitOriginFrameTypeKey ~= nil and not haveAllPlayersSeenAsyncInitOriginFrameType(frameType) then
413
+ if getHandleId(frame) == 0 or seenAsyncInitOriginFrameTypes[frameType] ~= nil then
414
+ location(0, 0)
415
+ else
416
+ seenAsyncInitOriginFrameTypes[frameType] = true
417
+ seenAsyncInitOriginFrameTypesSocket:send(asyncInitOriginFrameTypeKey)
418
+ end
419
+ end
420
+ return self:of(frame)
305
421
  end
306
422
  Frame.GAME_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_GAME_UI)
307
423
  Frame.CONSOLE_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_SIMPLE_UI_PARENT)
@@ -344,27 +460,21 @@ __TS__ObjectDefineProperty(
344
460
  Frame,
345
461
  "minX",
346
462
  {get = function(self)
347
- local w = BlzGetLocalClientWidth()
348
- local h = BlzGetLocalClientHeight()
349
- local width4by3 = (w - h / 600 * 800) / 2
350
- local pxtodpi = 0.6 / h
351
- return -width4by3 * pxtodpi
463
+ local minX = getFrameMinXMaxX()
464
+ return minX
352
465
  end}
353
466
  )
354
467
  __TS__ObjectDefineProperty(
355
468
  Frame,
356
469
  "maxX",
357
470
  {get = function(self)
358
- local w = BlzGetLocalClientWidth()
359
- local h = BlzGetLocalClientHeight()
360
- local width4by3 = (w - h / 600 * 800) / 2
361
- local pxtodpi = 0.6 / h
362
- return (-width4by3 + w) * pxtodpi
471
+ local ____, maxX = getFrameMinXMaxX()
472
+ return maxX
363
473
  end}
364
474
  )
365
475
  Frame.centerX = 0.4
366
- Frame.minY = 0
367
- Frame.maxY = 0.6
476
+ Frame.minY = FRAME_MIN_Y
477
+ Frame.maxY = FRAME_MAX_Y
368
478
  Frame.centerY = 0.3
369
479
  __TS__SetDescriptor(
370
480
  Frame.prototype,
@@ -626,24 +736,8 @@ __TS__SetDescriptor(
626
736
  "mouseEnterLocalEvent",
627
737
  {get = function(self)
628
738
  local event = __TS__New(Event)
629
- if not (tooltipByFrame[self] ~= nil) then
630
- ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = self
631
- local tooltip = ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent == self and ____exports.Frame:createByType("SIMPLEFRAME", "", ____exports.Frame.CONSOLE_UI) or ____exports.Frame:createByType("FRAME", "", ____exports.Frame.GAME_UI)
632
- ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = ____exports.Frame.CONSOLE_UI
633
- self:setTooltip(tooltip)
634
- end
635
- local isMouseInside = false
636
- Timer.onPeriod[1 / 64]:addListener(function()
637
- local tooltip = tooltipByFrame[self]
638
- if tooltip and tooltip.visible then
639
- if not isMouseInside then
640
- isMouseInside = true
641
- Event.invoke(event)
642
- end
643
- else
644
- isMouseInside = false
645
- end
646
- end)
739
+ self:trackMouseLocally()
740
+ mouseEnterLocalEventByFrame[self] = event
647
741
  rawset(self, "mouseEnterLocalEvent", event)
648
742
  return event
649
743
  end},
@@ -654,24 +748,8 @@ __TS__SetDescriptor(
654
748
  "mouseLeaveLocalEvent",
655
749
  {get = function(self)
656
750
  local event = __TS__New(Event)
657
- if not (tooltipByFrame[self] ~= nil) then
658
- ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = self
659
- local tooltip = ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent == self and ____exports.Frame:createByType("SIMPLEFRAME", "", ____exports.Frame.CONSOLE_UI) or ____exports.Frame:createByType("FRAME", "", ____exports.Frame.GAME_UI)
660
- ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = ____exports.Frame.CONSOLE_UI
661
- self:setTooltip(tooltip)
662
- end
663
- local isMouseInside = false
664
- Timer.onPeriod[1 / 64]:addListener(function()
665
- local tooltip = tooltipByFrame[self]
666
- if tooltip and tooltip.visible then
667
- isMouseInside = true
668
- else
669
- if isMouseInside then
670
- isMouseInside = false
671
- Event.invoke(event)
672
- end
673
- end
674
- end)
751
+ self:trackMouseLocally()
752
+ mouseLeaveLocalEventByFrame[self] = event
675
753
  rawset(self, "mouseLeaveLocalEvent", event)
676
754
  return event
677
755
  end},
@@ -912,7 +990,7 @@ __TS__ObjectDefineProperty(
912
990
  )
913
991
  __TS__ObjectDefineProperty(
914
992
  Frame,
915
- "onMouseMove",
993
+ "mouseMoveEvent",
916
994
  {get = function(self)
917
995
  local event = __TS__New(
918
996
  TriggerEvent,
@@ -926,46 +1004,32 @@ __TS__ObjectDefineProperty(
926
1004
  ) end,
927
1005
  function() return Player:of(GetTriggerPlayer()), BlzGetTriggerPlayerMouseX(), BlzGetTriggerPlayerMouseY() end
928
1006
  )
929
- rawset(____exports.Frame, "onMouseMove", event)
1007
+ rawset(____exports.Frame, "mouseMoveEvent", event)
930
1008
  return event
931
1009
  end}
932
1010
  )
933
1011
  __TS__ObjectDefineProperty(
934
1012
  Frame,
935
- "onMouseMoveLocal",
1013
+ "mouseMoveLocalEvent",
936
1014
  {get = function(self)
937
- local invoke = Event.invoke
938
1015
  local event = __TS__New(Event)
939
- local syncX = 0
940
- local syncY = 0
941
- local syncCamX = getCameraTargetPositionX()
942
- local syncCamY = getCameraTargetPositionY()
943
- local lastX = syncX
944
- local lastY = syncY
945
- self.onMouseMove:addListener(function(player, x, y)
946
- if player.isLocal then
947
- syncX = x
948
- syncY = y
949
- syncCamX = getCameraTargetPositionX()
950
- syncCamY = getCameraTargetPositionY()
951
- lastX = x
952
- lastY = y
953
- invoke(event, x, y)
954
- end
955
- end)
1016
+ local lastX = 0
1017
+ local lastY = 0
956
1018
  Timer.onPeriod[1 / 64]:addListener(function()
957
- if syncX == 0 and syncY == 0 then
1019
+ if getLocalClientHeight() == 0 then
958
1020
  return
959
1021
  end
960
- local x = syncX + (getCameraTargetPositionX() - syncCamX)
961
- local y = syncY + (getCameraTargetPositionY() - syncCamY)
962
- if x ~= lastX or y ~= lastY then
1022
+ local x, y, ____, isDefinite = frameCoordinatesToWorld(
1023
+ pixelToFrameX(getMouseScreenPosX()),
1024
+ pixelToFrameY(getMouseScreenPosY())
1025
+ )
1026
+ if isDefinite and (x ~= lastX or y ~= lastY) then
963
1027
  lastX = x
964
1028
  lastY = y
965
1029
  invoke(event, x, y)
966
1030
  end
967
1031
  end)
968
- rawset(____exports.Frame, "onMouseMoveLocal", event)
1032
+ rawset(____exports.Frame, "mouseMoveLocalEvent", event)
969
1033
  return event
970
1034
  end}
971
1035
  )
@@ -15,6 +15,8 @@ local ____exception = require("exception")
15
15
  local IllegalStateException = ____exception.IllegalStateException
16
16
  local ____attributes = require("attributes")
17
17
  local AttributesHolder = ____attributes.AttributesHolder
18
+ local ____preconditions = require("utility.preconditions")
19
+ local checkNotNull = ____preconditions.checkNotNull
18
20
  local getHandleId = GetHandleId
19
21
  local onCreateEventByHandleConstructor = {}
20
22
  local onDestroyEventByHandleConstructor = {}
@@ -58,6 +60,9 @@ function Handle.invokeOnCreateEvent(self, clazz, handle)
58
60
  Event.invoke(onCreateEvent, handle)
59
61
  end
60
62
  end
63
+ function Handle.isWrapped(self, handle)
64
+ return self.memoized[getHandleId(handle)] ~= nil
65
+ end
61
66
  function Handle.prototype.__tostring(self)
62
67
  return (self.constructor.name .. "@") .. tostring(getHandleId(self.handle))
63
68
  end
@@ -66,17 +71,12 @@ function Handle.prototype.onDestroy(self, ...)
66
71
  return nil
67
72
  end
68
73
  function Handle.prototype.destroy(self, ...)
74
+ if self[0] == 2 or self[0] == 3 then
75
+ return nil
76
+ end
69
77
  local clazz = self.constructor
70
78
  local id = getHandleId(self.handle)
71
- if not clazz.memoized[id] then
72
- error(
73
- __TS__New(
74
- IllegalStateException,
75
- "Double-destroy run for handle " .. tostring(id)
76
- ),
77
- 0
78
- )
79
- end
79
+ checkNotNull(clazz.memoized[id])
80
80
  self[0] = 2
81
81
  if self.onDestroyEvent then
82
82
  Event.invoke(self.onDestroyEvent)
@@ -1,4 +1,5 @@
1
1
  /** @noSelfInFile */
2
2
  import { Item } from "../../engine/internal/item";
3
3
  import "../../engine/internal/item+owner";
4
+ import "../../engine/internal/item/fields";
4
5
  export { Item };
@@ -2,5 +2,6 @@ local ____exports = {}
2
2
  local ____item = require("engine.internal.item")
3
3
  local Item = ____item.Item
4
4
  require("engine.internal.item+owner")
5
+ require("engine.internal.item.fields")
5
6
  ____exports.Item = Item
6
7
  return ____exports
@@ -7,6 +7,18 @@ import { UpgradeId } from "../../engine/object-data/entry/upgrade";
7
7
  interface Unit {
8
8
  handle: junit;
9
9
  }
10
+ export declare const enum PlayerAllianceType {
11
+ PASSIVE = 0,
12
+ RESCUABLE = 1,
13
+ HELP_REQUEST = 2,
14
+ HELP_RESPONSE = 3,
15
+ SHARED_XP = 4,
16
+ SHARED_SPELLS = 5,
17
+ SHARED_VISION = 6,
18
+ SHARED_VISION_FORCED = 7,
19
+ SHARED_CONTROL = 8,
20
+ SHARED_ADVANCED_CONTROL = 9
21
+ }
10
22
  export declare class Player extends Handle<jplayer> {
11
23
  static readonly all: Player[];
12
24
  static readonly local: Player;
@@ -16,6 +28,7 @@ export declare class Player extends Handle<jplayer> {
16
28
  static readonly neutralExtra: Player;
17
29
  private static events;
18
30
  readonly id: number;
31
+ readonly slotState: jplayerslotstate;
19
32
  constructor(handle: jplayer);
20
33
  onDestroy(): HandleDestructor;
21
34
  toString(): string;
@@ -33,15 +46,17 @@ export declare class Player extends Handle<jplayer> {
33
46
  get isUser(): boolean;
34
47
  get isPlaying(): boolean;
35
48
  get controller(): jmapcontrol;
36
- get slotState(): jplayerslotstate;
37
49
  clearSelection(): void;
38
50
  selectSingle(unit: Unit): void;
39
51
  select(unit: Unit): void;
40
52
  deselect(unit: Unit): void;
53
+ setRaceSkin(racePreference: jracepreference): void;
41
54
  forceUIKey(key: string): void;
42
55
  forceUICancel(): void;
43
56
  isAllyOf(other: Player): boolean;
44
57
  isEnemyOf(other: Player): boolean;
58
+ setAlliance(other: Player, type: PlayerAllianceType, value: boolean): void;
59
+ getAlliance(other: Player, type: PlayerAllianceType): boolean;
45
60
  setAbilityAvailable(abilityId: number, available: boolean): void;
46
61
  getMaximumUpgradeLevel(upgradeId: UpgradeId): number;
47
62
  setMaximumUpgradeLevel(upgradeId: UpgradeId, maximumLevel: number): void;
@@ -50,6 +65,7 @@ export declare class Player extends Handle<jplayer> {
50
65
  setUpgradeLevel(upgradeId: UpgradeId, level: number): void;
51
66
  private static getEvent;
52
67
  private static getMouseEvent;
68
+ static get allianceChangedEvent(): Readonly<Record<PlayerAllianceType, Event<[Player]>>>;
53
69
  static get onLeave(): Event<[Player]>;
54
70
  static get onMouseDown(): Event<[Player, jmousebuttontype]>;
55
71
  static get onMouseUp(): Event<[Player, jmousebuttontype]>;
@@ -66,6 +82,7 @@ export declare class Player extends Handle<jplayer> {
66
82
  };
67
83
  };
68
84
  static get onChat(): Event<[player: Player, message: string]>;
85
+ static readonly colorChangedEvent: Event<[Player]>;
69
86
  static byId(id: number): Player | undefined;
70
87
  }
71
88
  export {};
@@ -1,7 +1,7 @@
1
1
  local ____lualib = require("lualib_bundle")
2
+ local __TS__New = ____lualib.__TS__New
2
3
  local __TS__Class = ____lualib.__TS__Class
3
4
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
- local __TS__New = ____lualib.__TS__New
5
5
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
6
6
  local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
7
7
  local ____exports = {}
@@ -21,20 +21,43 @@ local ____exception = require("exception")
21
21
  local IllegalStateException = ____exception.IllegalStateException
22
22
  local ____math = require("math")
23
23
  local MAXIMUM_INTEGER = ____math.MAXIMUM_INTEGER
24
+ local ____player_2Dlocal_2Dhandle = require("engine.internal.misc.player-local-handle")
25
+ local PLAYER_LOCAL_HANDLE = ____player_2Dlocal_2Dhandle.PLAYER_LOCAL_HANDLE
26
+ local ____lazy = require("utility.lazy")
27
+ local lazyRecord = ____lazy.lazyRecord
28
+ local getPlayerAlliance = GetPlayerAlliance
24
29
  local getPlayerColor = GetPlayerColor
25
30
  local getPlayerName = GetPlayerName
26
31
  local getPlayerTechCount = GetPlayerTechCount
27
32
  local getPlayerTechMaxAllowed = GetPlayerTechMaxAllowed
33
+ local getTriggerPlayer = GetTriggerPlayer
34
+ local playerNative = _G.Player
35
+ local setPlayerAbilityAvailable = SetPlayerAbilityAvailable
36
+ local setPlayerAlliance = SetPlayerAlliance
37
+ local setPlayerRaceSkin = SetPlayerRaceSkin
28
38
  local setPlayerTechMaxAllowed = SetPlayerTechMaxAllowed
29
39
  local setPlayerTechResearched = SetPlayerTechResearched
30
- local setPlayerAbilityAvailable = SetPlayerAbilityAvailable
31
- local playerNative = _G.Player
40
+ local triggerRegisterPlayerAllianceChange = TriggerRegisterPlayerAllianceChange
41
+ local nativeByPlayerAllianceType = {
42
+ [0] = ALLIANCE_PASSIVE,
43
+ [1] = ALLIANCE_RESCUABLE,
44
+ [2] = ALLIANCE_HELP_REQUEST,
45
+ [3] = ALLIANCE_HELP_RESPONSE,
46
+ [4] = ALLIANCE_SHARED_XP,
47
+ [5] = ALLIANCE_SHARED_SPELLS,
48
+ [6] = ALLIANCE_SHARED_VISION,
49
+ [7] = ALLIANCE_SHARED_VISION_FORCED,
50
+ [8] = ALLIANCE_SHARED_CONTROL,
51
+ [9] = ALLIANCE_SHARED_ADVANCED_CONTROL
52
+ }
53
+ local playerColorChangedEvent = __TS__New(Event)
32
54
  ____exports.Player = __TS__Class()
33
55
  local Player = ____exports.Player
34
56
  Player.name = "Player"
35
57
  __TS__ClassExtends(Player, Handle)
36
58
  function Player.prototype.____constructor(self, handle)
37
59
  Handle.prototype.____constructor(self, handle)
60
+ self.slotState = GetPlayerSlotState(self.handle)
38
61
  self.id = GetPlayerId(handle)
39
62
  end
40
63
  function Player.prototype.onDestroy(self)
@@ -67,6 +90,9 @@ function Player.prototype.deselect(self, unit)
67
90
  SelectUnit(unit.handle, false)
68
91
  end
69
92
  end
93
+ function Player.prototype.setRaceSkin(self, racePreference)
94
+ setPlayerRaceSkin(self.handle, racePreference)
95
+ end
70
96
  function Player.prototype.forceUIKey(self, key)
71
97
  if self.isLocal then
72
98
  ForceUIKey(key)
@@ -83,6 +109,12 @@ end
83
109
  function Player.prototype.isEnemyOf(self, other)
84
110
  return IsPlayerEnemy(self.handle, other.handle)
85
111
  end
112
+ function Player.prototype.setAlliance(self, other, ____type, value)
113
+ setPlayerAlliance(self.handle, other.handle, nativeByPlayerAllianceType[____type], value)
114
+ end
115
+ function Player.prototype.getAlliance(self, other, ____type)
116
+ return getPlayerAlliance(self.handle, other.handle, nativeByPlayerAllianceType[____type])
117
+ end
86
118
  function Player.prototype.setAbilityAvailable(self, abilityId, available)
87
119
  setPlayerAbilityAvailable(self.handle, abilityId, available)
88
120
  end
@@ -122,14 +154,11 @@ function Player.getMouseEvent(self, event, collector)
122
154
  self.events[eventId] = __TS__New(
123
155
  TriggerEvent,
124
156
  function(trigger)
125
- Timer:simple(
126
- 0,
127
- function()
128
- for ____, player in ipairs(____exports.Player.all) do
129
- TriggerRegisterPlayerEvent(trigger, player.handle, event)
130
- end
157
+ Timer:run(function()
158
+ for ____, player in ipairs(____exports.Player.all) do
159
+ TriggerRegisterPlayerEvent(trigger, player.handle, event)
131
160
  end
132
- )
161
+ end)
133
162
  end,
134
163
  collector or (function() return {} end)
135
164
  )
@@ -178,7 +207,7 @@ function Player.getKeyEvent(self, isDown)
178
207
  TriggerAddCondition(
179
208
  trigger,
180
209
  Condition(function()
181
- local player = ____exports.Player:of(GetTriggerPlayer())
210
+ local player = ____exports.Player:of(getTriggerPlayer())
182
211
  local key = BlzGetTriggerPlayerKey()
183
212
  local metaKey = BlzGetTriggerPlayerMetaKey()
184
213
  Event.invoke(event, player, key, metaKey)
@@ -249,7 +278,7 @@ Player.all = (function()
249
278
  end
250
279
  return all
251
280
  end)()
252
- Player["local"] = ____exports.Player:of(GetLocalPlayer())
281
+ Player["local"] = ____exports.Player:of(PLAYER_LOCAL_HANDLE)
253
282
  Player.neutralPassive = ____exports.Player.all[PLAYER_NEUTRAL_PASSIVE + 1]
254
283
  Player.neutralAggressive = ____exports.Player.all[PLAYER_NEUTRAL_AGGRESSIVE + 1]
255
284
  Player.neutralVictim = ____exports.Player.all[bj_PLAYER_NEUTRAL_VICTIM + 1]
@@ -277,6 +306,7 @@ __TS__SetDescriptor(
277
306
  end,
278
307
  set = function(self, color)
279
308
  SetPlayerColor(self.handle, color.handle)
309
+ Event.invoke(playerColorChangedEvent, self)
280
310
  end
281
311
  },
282
312
  true
@@ -339,7 +369,7 @@ __TS__SetDescriptor(
339
369
  Player.prototype,
340
370
  "isUser",
341
371
  {get = function(self)
342
- return GetPlayerController(self.handle) == MAP_CONTROL_USER
372
+ return self.controller == MAP_CONTROL_USER
343
373
  end},
344
374
  true
345
375
  )
@@ -347,7 +377,7 @@ __TS__SetDescriptor(
347
377
  Player.prototype,
348
378
  "isPlaying",
349
379
  {get = function(self)
350
- return GetPlayerSlotState(self.handle) == PLAYER_SLOT_STATE_PLAYING
380
+ return self.slotState == PLAYER_SLOT_STATE_PLAYING
351
381
  end},
352
382
  true
353
383
  )
@@ -355,17 +385,30 @@ __TS__SetDescriptor(
355
385
  Player.prototype,
356
386
  "controller",
357
387
  {get = function(self)
358
- return GetPlayerController(self.handle)
388
+ local controller = GetPlayerController(self.handle)
389
+ rawset(self, "controller", controller)
390
+ return controller
359
391
  end},
360
392
  true
361
393
  )
362
- __TS__SetDescriptor(
363
- Player.prototype,
364
- "slotState",
394
+ __TS__ObjectDefineProperty(
395
+ Player,
396
+ "allianceChangedEvent",
365
397
  {get = function(self)
366
- return GetPlayerSlotState(self.handle)
367
- end},
368
- true
398
+ local event = lazyRecord(function(____type)
399
+ return __TS__New(
400
+ TriggerEvent,
401
+ function(trigger)
402
+ for ____, player in ipairs(____exports.Player.all) do
403
+ triggerRegisterPlayerAllianceChange(trigger, player.handle, nativeByPlayerAllianceType[____type])
404
+ end
405
+ end,
406
+ function() return ____exports.Player:of(getTriggerPlayer()) end
407
+ )
408
+ end)
409
+ rawset(self, "allianceChangedEvent", event)
410
+ return event
411
+ end}
369
412
  )
370
413
  __TS__ObjectDefineProperty(
371
414
  Player,
@@ -373,7 +416,7 @@ __TS__ObjectDefineProperty(
373
416
  {get = function(self)
374
417
  return ____exports.Player:getEvent(
375
418
  EVENT_PLAYER_LEAVE,
376
- function() return ____exports.Player:of(GetTriggerPlayer()) end
419
+ function() return ____exports.Player:of(getTriggerPlayer()) end
377
420
  )
378
421
  end}
379
422
  )
@@ -383,7 +426,7 @@ __TS__ObjectDefineProperty(
383
426
  {get = function(self)
384
427
  return ____exports.Player:getMouseEvent(
385
428
  EVENT_PLAYER_MOUSE_DOWN,
386
- function() return ____exports.Player:of(GetTriggerPlayer()), BlzGetTriggerPlayerMouseButton() end
429
+ function() return ____exports.Player:of(getTriggerPlayer()), BlzGetTriggerPlayerMouseButton() end
387
430
  )
388
431
  end}
389
432
  )
@@ -393,7 +436,7 @@ __TS__ObjectDefineProperty(
393
436
  {get = function(self)
394
437
  return ____exports.Player:getMouseEvent(
395
438
  EVENT_PLAYER_MOUSE_UP,
396
- function() return ____exports.Player:of(GetTriggerPlayer()), BlzGetTriggerPlayerMouseButton() end
439
+ function() return ____exports.Player:of(getTriggerPlayer()), BlzGetTriggerPlayerMouseButton() end
397
440
  )
398
441
  end}
399
442
  )
@@ -403,7 +446,7 @@ __TS__ObjectDefineProperty(
403
446
  {get = function(self)
404
447
  return ____exports.Player:getMouseEvent(
405
448
  EVENT_PLAYER_MOUSE_MOVE,
406
- function() return ____exports.Player:of(GetTriggerPlayer()), vec2(
449
+ function() return ____exports.Player:of(getTriggerPlayer()), vec2(
407
450
  BlzGetTriggerPlayerMouseX(),
408
451
  BlzGetTriggerPlayerMouseY()
409
452
  ) end
@@ -439,10 +482,17 @@ __TS__ObjectDefineProperty(
439
482
  TriggerRegisterPlayerChatEvent(trigger, player.handle, "", false)
440
483
  end
441
484
  end,
442
- function() return ____exports.Player:of(GetTriggerPlayer()), GetEventPlayerChatString() end
485
+ function() return ____exports.Player:of(getTriggerPlayer()), GetEventPlayerChatString() end
443
486
  )
444
487
  rawset(self, "onChat", event)
445
488
  return event
446
489
  end}
447
490
  )
491
+ Player.colorChangedEvent = playerColorChangedEvent
492
+ ____exports.Player.onLeave:addListener(
493
+ 999999,
494
+ function(player)
495
+ rawset(player, "slotState", PLAYER_SLOT_STATE_LEFT)
496
+ end
497
+ )
448
498
  return ____exports
@@ -1,4 +1,5 @@
1
1
  /** @noSelfInFile */
2
+ import type { Unit } from "../../engine/internal/unit";
2
3
  export declare class PlayerCamera {
3
4
  private readonly player;
4
5
  private readonly isLocal;
@@ -28,5 +29,6 @@ export declare class PlayerCamera {
28
29
  get roll(): number;
29
30
  set roll(v: number);
30
31
  reset(): void;
32
+ static isUnitInView(unit: Unit): boolean;
31
33
  static of(player: jplayer): PlayerCamera;
32
34
  }