warscript 0.0.1-dev.6745db1 → 0.0.1-dev.6817452

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 (334) hide show
  1. package/attributes.d.ts +1 -0
  2. package/attributes.lua +9 -0
  3. package/core/dummy.lua +4 -2
  4. package/core/types/effect.d.ts +11 -1
  5. package/core/types/effect.lua +43 -77
  6. package/core/types/frame.d.ts +1 -0
  7. package/core/types/frame.lua +126 -46
  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 +73 -25
  13. package/core/types/playerCamera.lua +44 -0
  14. package/core/types/playerColor.lua +4 -3
  15. package/core/types/sound.d.ts +1 -1
  16. package/core/types/sound.lua +14 -9
  17. package/core/types/tileCell.d.ts +11 -1
  18. package/core/types/tileCell.lua +97 -0
  19. package/core/types/timer.d.ts +3 -2
  20. package/core/types/timer.lua +22 -2
  21. package/core/types/unit.d.ts +5 -0
  22. package/core/types/unit.lua +5 -0
  23. package/core/util.d.ts +3 -1
  24. package/core/util.lua +109 -3
  25. package/decl/native.d.ts +707 -9
  26. package/destroyable.d.ts +1 -0
  27. package/destroyable.lua +9 -0
  28. package/engine/behavior.d.ts +12 -1
  29. package/engine/behavior.lua +199 -65
  30. package/engine/behaviour/ability/apply-buff.lua +4 -4
  31. package/engine/behaviour/ability/apply-unit-behavior.lua +5 -0
  32. package/engine/behaviour/ability/damage.d.ts +4 -0
  33. package/engine/behaviour/ability/damage.lua +19 -15
  34. package/engine/behaviour/ability/emulate-impact.lua +5 -4
  35. package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
  36. package/engine/behaviour/ability/on-command-impact.lua +1 -0
  37. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  38. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  39. package/engine/behaviour/ability.d.ts +13 -6
  40. package/engine/behaviour/ability.lua +56 -1
  41. package/engine/behaviour/unit/stun-immunity.d.ts +9 -5
  42. package/engine/behaviour/unit/stun-immunity.lua +17 -7
  43. package/engine/behaviour/unit.d.ts +16 -5
  44. package/engine/behaviour/unit.lua +127 -22
  45. package/engine/buff.d.ts +73 -27
  46. package/engine/buff.lua +424 -193
  47. package/engine/index.d.ts +2 -1
  48. package/engine/internal/ability.d.ts +7 -1
  49. package/engine/internal/ability.lua +82 -45
  50. package/engine/internal/item/fields.d.ts +12 -0
  51. package/engine/internal/item/fields.lua +33 -0
  52. package/engine/internal/item/owner-cache.d.ts +5 -0
  53. package/engine/internal/item/owner-cache.lua +4 -0
  54. package/engine/internal/item+owner.d.ts +2 -0
  55. package/engine/internal/item+owner.lua +27 -4
  56. package/engine/internal/item.d.ts +27 -14
  57. package/engine/internal/item.lua +180 -82
  58. package/engine/internal/mechanics/cast-ability.lua +6 -3
  59. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  60. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  61. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  62. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  63. package/engine/internal/object-data/health-bonus.lua +16 -0
  64. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  65. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  66. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  67. package/engine/internal/object-data/mana-bonus.lua +16 -0
  68. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  69. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  70. package/engine/internal/unit/ability.d.ts +14 -14
  71. package/engine/internal/unit/ability.lua +86 -47
  72. package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
  73. package/engine/internal/unit/add-item-to-slot.lua +53 -12
  74. package/engine/internal/unit/appearance.d.ts +15 -0
  75. package/engine/internal/unit/appearance.lua +85 -0
  76. package/engine/internal/unit/attributes.d.ts +17 -0
  77. package/engine/internal/unit/attributes.lua +46 -0
  78. package/engine/internal/unit/bonus.d.ts +14 -0
  79. package/engine/internal/unit/bonus.lua +102 -8
  80. package/engine/internal/unit/buff.d.ts +2 -2
  81. package/engine/internal/unit/buff.lua +34 -19
  82. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  83. package/engine/internal/unit/equipment-inventory.lua +233 -0
  84. package/engine/internal/unit/expiration-timer.lua +1 -1
  85. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  86. package/engine/internal/unit/extended-inventory.lua +99 -0
  87. package/engine/internal/unit/fly-height.d.ts +7 -0
  88. package/engine/internal/unit/fly-height.lua +20 -0
  89. package/engine/internal/unit/ignore-events-items.lua +10 -1
  90. package/engine/internal/unit/interrupts.d.ts +12 -0
  91. package/engine/internal/unit/interrupts.lua +28 -0
  92. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
  93. package/engine/internal/unit/inventory.lua +87 -0
  94. package/engine/internal/unit/item-container.d.ts +25 -0
  95. package/engine/internal/unit/item-container.lua +11 -0
  96. package/engine/internal/unit/item-order-events.d.ts +17 -0
  97. package/engine/internal/unit/item-order-events.lua +67 -0
  98. package/engine/internal/unit/item-slot.d.ts +27 -0
  99. package/engine/internal/unit/item-slot.lua +92 -0
  100. package/engine/internal/unit/main-selected.lua +12 -27
  101. package/engine/internal/unit/order.d.ts +3 -3
  102. package/engine/internal/unit/order.lua +10 -10
  103. package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
  104. package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
  105. package/engine/internal/unit/range-event.d.ts +12 -0
  106. package/engine/internal/unit/range-event.lua +90 -0
  107. package/engine/internal/unit/scale.d.ts +7 -0
  108. package/engine/internal/unit/scale.lua +20 -0
  109. package/engine/internal/unit+ability.d.ts +2 -1
  110. package/engine/internal/unit+ability.lua +63 -2
  111. package/engine/internal/unit+bonus.lua +3 -3
  112. package/engine/internal/unit+damage.d.ts +9 -0
  113. package/engine/internal/unit+damage.lua +33 -0
  114. package/engine/internal/unit+rally.lua +9 -31
  115. package/engine/internal/unit-missile-data.lua +58 -32
  116. package/engine/internal/unit-missile-launch.lua +64 -33
  117. package/engine/internal/unit.d.ts +18 -30
  118. package/engine/internal/unit.lua +188 -269
  119. package/engine/local-client.d.ts +28 -0
  120. package/engine/local-client.lua +324 -54
  121. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  122. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  123. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  124. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  125. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  126. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  127. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  128. package/engine/object-data/auxiliary/item-class.lua +2 -0
  129. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  130. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  131. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  132. package/engine/object-data/auxiliary/order-type.lua +2 -0
  133. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  134. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  135. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  136. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  137. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  138. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  139. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  140. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  141. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  142. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  143. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  144. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  145. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  146. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  147. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  148. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  149. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
  150. package/engine/object-data/entry/ability-type/blank-configurable.lua +30 -0
  151. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  152. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  153. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  154. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  155. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  156. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  157. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  158. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  159. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  160. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  161. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  162. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  163. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  164. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  165. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  166. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  167. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  168. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  169. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  170. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  171. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  172. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  173. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  174. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  175. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  176. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  177. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  178. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  179. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  180. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  181. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  182. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  183. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  184. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  185. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  186. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  187. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  188. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  189. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  190. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  191. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  192. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  193. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  194. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  195. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  196. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  197. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  198. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  199. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  200. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  201. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  202. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  203. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  204. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  205. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  206. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  207. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  208. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  209. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  210. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  211. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  212. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  213. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  214. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  215. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  216. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  217. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  218. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  219. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  220. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  221. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  222. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  223. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  224. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  225. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  226. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  227. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  228. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  229. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  230. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  231. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  232. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  233. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  234. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  235. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  236. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  237. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  238. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  239. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  240. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  241. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  242. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  243. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  244. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  245. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  246. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  247. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  248. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  249. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  250. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  251. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  252. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  253. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  254. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  255. package/engine/object-data/entry/ability-type.d.ts +12 -3
  256. package/engine/object-data/entry/ability-type.lua +141 -5
  257. package/engine/object-data/entry/buff-type/applicable.lua +113 -109
  258. package/engine/object-data/entry/buff-type.d.ts +6 -2
  259. package/engine/object-data/entry/buff-type.lua +26 -0
  260. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  261. package/engine/object-data/entry/destructible-type.lua +181 -0
  262. package/engine/object-data/entry/item-type.d.ts +18 -3
  263. package/engine/object-data/entry/item-type.lua +84 -0
  264. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  265. package/engine/object-data/entry/lightning-type.lua +1 -1
  266. package/engine/object-data/entry/sound-preset.d.ts +2 -2
  267. package/engine/object-data/entry/unit-type.d.ts +51 -2
  268. package/engine/object-data/entry/unit-type.lua +415 -37
  269. package/engine/object-data/entry/upgrade.d.ts +2 -2
  270. package/engine/object-data/entry.d.ts +6 -1
  271. package/engine/object-data/entry.lua +8 -0
  272. package/engine/object-field/ability.d.ts +3 -3
  273. package/engine/object-field/ability.lua +9 -8
  274. package/engine/object-field/item.d.ts +22 -0
  275. package/engine/object-field/item.lua +118 -0
  276. package/engine/object-field/unit.d.ts +20 -5
  277. package/engine/object-field/unit.lua +61 -0
  278. package/engine/object-field.d.ts +12 -4
  279. package/engine/object-field.lua +273 -126
  280. package/engine/random.d.ts +10 -0
  281. package/engine/random.lua +21 -0
  282. package/engine/standard/entries/ability-type.d.ts +3102 -7
  283. package/engine/standard/entries/ability-type.lua +0 -6
  284. package/engine/standard/entries/item-type.d.ts +1299 -0
  285. package/engine/standard/entries/item-type.lua +2 -0
  286. package/engine/standard/entries/lightning-type.d.ts +42 -15
  287. package/engine/standard/entries/lightning-type.lua +0 -14
  288. package/engine/standard/entries/unit-type.d.ts +5 -0
  289. package/engine/standard/entries/unit-type.lua +5 -0
  290. package/engine/standard/fields/ability.d.ts +2 -2
  291. package/engine/standard/fields/ability.lua +2 -2
  292. package/engine/standard/fields/item.d.ts +4 -0
  293. package/engine/standard/fields/item.lua +6 -0
  294. package/engine/standard/fields/unit.d.ts +11 -3
  295. package/engine/standard/fields/unit.lua +15 -2
  296. package/engine/synchronization.d.ts +11 -0
  297. package/engine/synchronization.lua +77 -0
  298. package/engine/text-tag.lua +3 -2
  299. package/engine/unit.d.ts +10 -1
  300. package/engine/unit.lua +10 -1
  301. package/event.d.ts +1 -1
  302. package/lualib_bundle.lua +1 -1
  303. package/math.d.ts +2 -0
  304. package/math.lua +14 -0
  305. package/net/socket.lua +1 -1
  306. package/network.lua +25 -1
  307. package/objutil/buff.lua +11 -9
  308. package/objutil/object.lua +1 -1
  309. package/operation.d.ts +8 -1
  310. package/operation.lua +38 -18
  311. package/package.json +3 -23
  312. package/patch-lua.lua +15 -0
  313. package/patch-lualib.lua +1 -1
  314. package/utility/arrays.d.ts +1 -0
  315. package/utility/arrays.lua +8 -0
  316. package/utility/callback-array.d.ts +17 -0
  317. package/utility/callback-array.lua +61 -0
  318. package/utility/linked-map.d.ts +35 -0
  319. package/utility/linked-map.lua +107 -0
  320. package/utility/linked-set.d.ts +4 -1
  321. package/utility/linked-set.lua +46 -1
  322. package/utility/lua-maps.d.ts +11 -2
  323. package/utility/lua-maps.lua +33 -2
  324. package/utility/random.d.ts +102 -0
  325. package/utility/random.lua +273 -0
  326. package/utility/records.lua +20 -1
  327. package/utility/types.d.ts +3 -0
  328. package/utility/unordered-map.d.ts +27 -0
  329. package/utility/unordered-map.lua +99 -0
  330. package/engine/internal/unit/item.lua +0 -78
  331. /package/engine/internal/{object-data/armor-increase.d.ts → misc/unit-ability-level-natives.d.ts} +0 -0
  332. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  333. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  334. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
package/attributes.d.ts CHANGED
@@ -13,5 +13,6 @@ export declare namespace Attribute {
13
13
  export declare class AttributesHolder {
14
14
  readonly get: (<T>(attribute: Attribute<T>) => T | undefined) & LuaExtension<"TableGetMethod">;
15
15
  readonly set: (<T>(attribute: Attribute<T>, value: T | undefined) => void) & LuaExtension<"TableSetMethod">;
16
+ getOrPut<T>(attribute: Attribute<T>, defaultValue: () => T): T;
16
17
  }
17
18
  export {};
package/attributes.lua CHANGED
@@ -20,4 +20,13 @@ local AttributesHolder = ____exports.AttributesHolder
20
20
  AttributesHolder.name = "AttributesHolder"
21
21
  function AttributesHolder.prototype.____constructor(self)
22
22
  end
23
+ function AttributesHolder.prototype.getOrPut(self, attribute, defaultValue)
24
+ local value = self[attribute]
25
+ if value ~= nil then
26
+ return value
27
+ end
28
+ value = defaultValue()
29
+ self[attribute] = value
30
+ return value
31
+ end
23
32
  return ____exports
package/core/dummy.lua CHANGED
@@ -15,6 +15,8 @@ local ____preconditions = require("utility.preconditions")
15
15
  local checkNotNull = ____preconditions.checkNotNull
16
16
  local ____ability = require("engine.internal.ability")
17
17
  local getOrderIdByAbilityTypeId = ____ability.getOrderIdByAbilityTypeId
18
+ local ____unit_2Dability_2Dlevel_2Dnatives = require("engine.internal.misc.unit-ability-level-natives")
19
+ local rawSetUnitAbilityLevel = ____unit_2Dability_2Dlevel_2Dnatives.rawSetUnitAbilityLevel
18
20
  local neutralVictim = Player.neutralVictim.handle
19
21
  ____exports.InstantDummyCaster = __TS__Class()
20
22
  local InstantDummyCaster = ____exports.InstantDummyCaster
@@ -42,7 +44,7 @@ function InstantDummyCaster.prototype.prepare(self, owner, abilityId, level)
42
44
  if type(abilityId) == "number" then
43
45
  UnitAddAbility(dummy, abilityId)
44
46
  if type(level) == "number" then
45
- SetUnitAbilityLevel(dummy, abilityId, level + 1)
47
+ rawSetUnitAbilityLevel(dummy, abilityId, level + 1)
46
48
  else
47
49
  level(UnitAbility:of(
48
50
  checkNotNull(BlzGetUnitAbility(dummy, abilityId)),
@@ -56,7 +58,7 @@ function InstantDummyCaster.prototype.prepare(self, owner, abilityId, level)
56
58
  end
57
59
  if __TS__ArrayIsArray(level) then
58
60
  for i = 1, #abilityId do
59
- SetUnitAbilityLevel(dummy, abilityId[i], level[i] + 1)
61
+ rawSetUnitAbilityLevel(dummy, abilityId[i], level[i] + 1)
60
62
  end
61
63
  else
62
64
  local abilities = {}
@@ -5,7 +5,9 @@ import { PlayerColor } from "./playerColor";
5
5
  declare const enum EffectPropertyKey {
6
6
  COLOR = 100,
7
7
  PITCH = 101,
8
- ROLL = 102
8
+ ROLL = 102,
9
+ BLEND_TIME = 103,
10
+ TIME_SCALE = 104
9
11
  }
10
12
  export type EffectParameters = {
11
13
  readonly delay?: number;
@@ -21,7 +23,15 @@ export declare class Effect extends Handle<jeffect> {
21
23
  private [EffectPropertyKey.COLOR]?;
22
24
  private [EffectPropertyKey.PITCH]?;
23
25
  private [EffectPropertyKey.ROLL]?;
26
+ private [EffectPropertyKey.BLEND_TIME]?;
27
+ private [EffectPropertyKey.TIME_SCALE]?;
24
28
  protected onDestroy(): HandleDestructor;
29
+ setAnimation(animation: string): void;
30
+ queueAnimation(animation: string): void;
31
+ get blendTime(): number;
32
+ set blendTime(blendTime: number);
33
+ get timeScale(): number;
34
+ set timeScale(timeScale: number);
25
35
  get color(): PlayerColor;
26
36
  set color(color: PlayerColor);
27
37
  get scale(): number;
@@ -15,25 +15,22 @@ local ____timer = require("core.types.timer")
15
15
  local Timer = ____timer.Timer
16
16
  local ____unit = require("engine.internal.unit")
17
17
  local Unit = ____unit.Unit
18
- local ____pairs = _G.pairs
19
- local select = _G.select
20
- local mathRad = math.rad
21
18
  local addSpecialEffect = AddSpecialEffect
22
19
  local addSpecialEffectTarget = AddSpecialEffectTarget
23
20
  local destroyEffect = DestroyEffect
21
+ local getLocationZ = GetLocationZ
24
22
  local getSpecialEffectScale = BlzGetSpecialEffectScale
25
- local playSpecialEffect = BlzPlaySpecialEffect
26
- local setSpecialEffectScale = BlzSetSpecialEffectScale
23
+ local moveLocation = MoveLocation
24
+ local queueSpecialEffectAnimation = BlzQueueSpecialEffectAnimation
25
+ local setSpecialEffectAnimation = BlzSetSpecialEffectAnimation
26
+ local setSpecialEffectAnimationBlendTime = BlzSetSpecialEffectAnimationBlendTime
27
+ local setSpecialEffectTimeScale = BlzSetSpecialEffectTimeScale
28
+ local setSpecialEffectColorByPlayer = BlzSetSpecialEffectColorByPlayer
27
29
  local setSpecialEffectPitch = BlzSetSpecialEffectPitch
28
30
  local setSpecialEffectRoll = BlzSetSpecialEffectRoll
29
- local setSpecialEffectColorByPlayer = BlzSetSpecialEffectColorByPlayer
30
- local specialEffectAddSubAnimation = BlzSpecialEffectAddSubAnimation
31
- local specialEffectClearSubAnimations = BlzSpecialEffectClearSubAnimations
32
- local specialEffectRemoveSubAnimation = BlzSpecialEffectRemoveSubAnimation
31
+ local setSpecialEffectScale = BlzSetSpecialEffectScale
33
32
  local setSpecialEffectZ = BlzSetSpecialEffectZ
34
- local getLocationZ = GetLocationZ
35
- local getUnitZ = BlzGetUnitZ
36
- local moveLocation = MoveLocation
33
+ local mathRad = math.rad
37
34
  local location = Location(0, 0)
38
35
  local function setSpecialEffectPitchDegrees(effect, pitch)
39
36
  setSpecialEffectPitch(
@@ -47,71 +44,6 @@ local function setSpecialEffectRollDegrees(effect, roll)
47
44
  -mathRad(roll)
48
45
  )
49
46
  end
50
- local animTypeByAnimationName = {
51
- attack = ANIM_TYPE_ATTACK,
52
- birth = ANIM_TYPE_BIRTH,
53
- death = ANIM_TYPE_DEATH,
54
- decay = ANIM_TYPE_DECAY,
55
- dissipate = ANIM_TYPE_DISSIPATE,
56
- morph = ANIM_TYPE_MORPH,
57
- portrait = ANIM_TYPE_PORTRAIT,
58
- sleep = ANIM_TYPE_SLEEP,
59
- spell = ANIM_TYPE_SPELL,
60
- stand = ANIM_TYPE_STAND,
61
- walk = ANIM_TYPE_WALK
62
- }
63
- local subAnimTypeByAnimationQualifier = {
64
- alternate = SUBANIM_TYPE_ROOTED,
65
- alternateex = SUBANIM_TYPE_ALTERNATE_EX,
66
- chain = SUBANIM_TYPE_CHAINLIGHTNING,
67
- channel = SUBANIM_TYPE_CHANNEL,
68
- complete = SUBANIM_TYPE_COMPLETE,
69
- critical = SUBANIM_TYPE_CRITICAL,
70
- defend = SUBANIM_TYPE_DEFEND,
71
- drain = SUBANIM_TYPE_DRAIN,
72
- eattree = SUBANIM_TYPE_EATTREE,
73
- fast = SUBANIM_TYPE_FAST,
74
- fill = SUBANIM_TYPE_FILL,
75
- flail = SUBANIM_TYPE_FLAIL,
76
- flesh = SUBANIM_TYPE_FLESH,
77
- fifth = SUBANIM_TYPE_FIFTH,
78
- fire = SUBANIM_TYPE_FIRE,
79
- first = SUBANIM_TYPE_FIRST,
80
- five = SUBANIM_TYPE_FIVE,
81
- four = SUBANIM_TYPE_FOUR,
82
- fourth = SUBANIM_TYPE_FOURTH,
83
- gold = SUBANIM_TYPE_GOLD,
84
- hit = SUBANIM_TYPE_HIT,
85
- large = SUBANIM_TYPE_LARGE,
86
- left = SUBANIM_TYPE_LEFT,
87
- light = SUBANIM_TYPE_LIGHT,
88
- looping = SUBANIM_TYPE_LOOPING,
89
- lumber = SUBANIM_TYPE_LUMBER,
90
- medium = SUBANIM_TYPE_MEDIUM,
91
- moderate = SUBANIM_TYPE_MODERATE,
92
- off = SUBANIM_TYPE_OFF,
93
- one = SUBANIM_TYPE_ONE,
94
- puke = SUBANIM_TYPE_PUKE,
95
- ready = SUBANIM_TYPE_READY,
96
- right = SUBANIM_TYPE_RIGHT,
97
- second = SUBANIM_TYPE_SECOND,
98
- severe = SUBANIM_TYPE_SEVERE,
99
- slam = SUBANIM_TYPE_SLAM,
100
- small = SUBANIM_TYPE_SMALL,
101
- spiked = SUBANIM_TYPE_SPIKED,
102
- spin = SUBANIM_TYPE_SPIN,
103
- swim = SUBANIM_TYPE_SWIM,
104
- talk = SUBANIM_TYPE_TALK,
105
- third = SUBANIM_TYPE_THIRD,
106
- three = SUBANIM_TYPE_THREE,
107
- throw = SUBANIM_TYPE_THROW,
108
- two = SUBANIM_TYPE_TWO,
109
- turn = SUBANIM_TYPE_TURN,
110
- victory = SUBANIM_TYPE_VICTORY,
111
- work = SUBANIM_TYPE_WORK,
112
- wounded = SUBANIM_TYPE_WOUNDED,
113
- upgrade = SUBANIM_TYPE_UPGRADE
114
- }
115
47
  local function setSpecialEffectColor(effect, color)
116
48
  local dummyColor = dummyPlayer.color
117
49
  dummyPlayer.color = color
@@ -178,6 +110,12 @@ function Effect.prototype.onDestroy(self)
178
110
  destroyEffect(self.handle)
179
111
  return Handle.prototype.onDestroy(self)
180
112
  end
113
+ function Effect.prototype.setAnimation(self, animation)
114
+ setSpecialEffectAnimation(self.handle, animation)
115
+ end
116
+ function Effect.prototype.queueAnimation(self, animation)
117
+ queueSpecialEffectAnimation(self.handle, animation)
118
+ end
181
119
  function Effect.create(self, modelPath, xOrWidget, yOrAttachmentPoint, parameters)
182
120
  local effect = self:of(addSpecialEffectInternal(modelPath, xOrWidget, yOrAttachmentPoint, parameters))
183
121
  if parameters ~= nil then
@@ -210,6 +148,34 @@ function Effect.flash(self, modelPath, xOrWidget, yOrOrAttachmentPoint, paramete
210
148
  parameters
211
149
  )
212
150
  end
151
+ __TS__SetDescriptor(
152
+ Effect.prototype,
153
+ "blendTime",
154
+ {
155
+ get = function(self)
156
+ return self[103] or 0
157
+ end,
158
+ set = function(self, blendTime)
159
+ setSpecialEffectAnimationBlendTime(self.handle, blendTime)
160
+ self[103] = blendTime
161
+ end
162
+ },
163
+ true
164
+ )
165
+ __TS__SetDescriptor(
166
+ Effect.prototype,
167
+ "timeScale",
168
+ {
169
+ get = function(self)
170
+ return self[104] or 1
171
+ end,
172
+ set = function(self, timeScale)
173
+ setSpecialEffectTimeScale(self.handle, timeScale)
174
+ self[104] = timeScale
175
+ end
176
+ },
177
+ true
178
+ )
213
179
  __TS__SetDescriptor(
214
180
  Effect.prototype,
215
181
  "color",
@@ -80,6 +80,7 @@ export declare class Frame extends Handle<jframehandle> {
80
80
  get onMouseLeave(): FrameEvent;
81
81
  get onMouseUp(): FrameEvent;
82
82
  get onMouseWheel(): FrameEvent<[number]>;
83
+ private trackMouseLocally;
83
84
  get mouseEnterLocalEvent(): Event;
84
85
  get mouseLeaveLocalEvent(): Event;
85
86
  get popupMenuItemChangeEvent(): FrameEvent<[
@@ -19,13 +19,28 @@ local ____frame_2Dcoordinates = require("engine.internal.misc.frame-coordinates"
19
19
  local FRAME_MAX_Y = ____frame_2Dcoordinates.FRAME_MAX_Y
20
20
  local FRAME_MIN_Y = ____frame_2Dcoordinates.FRAME_MIN_Y
21
21
  local getFrameMinXMaxX = ____frame_2Dcoordinates.getFrameMinXMaxX
22
+ local ____playerCamera = require("core.types.playerCamera")
23
+ local frameCoordinatesToWorld = ____playerCamera.frameCoordinatesToWorld
24
+ local worldCoordinatesToFrame = ____playerCamera.worldCoordinatesToFrame
25
+ local ____get_2Dterrain_2Dz = require("engine.internal.misc.get-terrain-z")
26
+ local getTerrainZ = ____get_2Dterrain_2Dz.getTerrainZ
27
+ local ____lua_2Dsets = require("utility.lua-sets")
28
+ local mutableLuaSet = ____lua_2Dsets.mutableLuaSet
29
+ local ____socket = require("net.socket")
30
+ local Socket = ____socket.Socket
31
+ local ____lua_2Dmaps = require("utility.lua-maps")
32
+ local getOrPut = ____lua_2Dmaps.getOrPut
33
+ local luaMapInvert = ____lua_2Dmaps.luaMapInvert
34
+ local luaMapOf = ____lua_2Dmaps.luaMapOf
35
+ local mutableLuaMap = ____lua_2Dmaps.mutableLuaMap
22
36
  local frameClick = BlzFrameClick
23
37
  local frameGetEnable = BlzFrameGetEnable
24
38
  local frameIsVisible = BlzFrameIsVisible
25
39
  local frameSetEnable = BlzFrameSetEnable
26
40
  local frameSetScale = BlzFrameSetScale
27
- local getCameraTargetPositionX = GetCameraTargetPositionX
28
- local getCameraTargetPositionY = GetCameraTargetPositionY
41
+ local getHandleId = GetHandleId
42
+ local getOriginFrame = BlzGetOriginFrame
43
+ local location = Location
29
44
  local ____rawget = _G.rawget
30
45
  local rawset = _G.rawset
31
46
  local invoke = Event.invoke
@@ -127,6 +142,79 @@ do
127
142
  FramePoint.BOTTOM_RIGHT = FRAMEPOINT_BOTTOMRIGHT
128
143
  end
129
144
  local tooltipByFrame = setmetatable({}, {__mode = "k"})
145
+ local isMouseInsideLocallyByFrame = mutableLuaMap()
146
+ local mouseEnterLocalEventByFrame = mutableLuaMap()
147
+ local mouseLeaveLocalEventByFrame = mutableLuaMap()
148
+ local isLocalMouseTrackingStarted = false
149
+ --- Reused across ticks to avoid per-tick allocations: only the first `leftFrameCount` /
150
+ -- `enteredFrameCount` entries are meaningful, stale entries beyond them are never read and are
151
+ -- kept collectable by the weak values mode.
152
+ local leftFrames = setmetatable({}, {__mode = "v"})
153
+ local enteredFrames = setmetatable({}, {__mode = "v"})
154
+ --- All frames share a single poll which invokes every mouse leave event before any mouse enter
155
+ -- event within the same tick. With a poll per event, the invocation order would depend on the
156
+ -- event creation order instead, breaking listeners relying on the natural "leave the old frame,
157
+ -- then enter the new frame" order.
158
+ local function startLocalMouseTracking()
159
+ if isLocalMouseTrackingStarted then
160
+ return
161
+ end
162
+ isLocalMouseTrackingStarted = true
163
+ Timer.onPeriod[1 / 64]:addListener(function()
164
+ local leftFrameCount = 0
165
+ local enteredFrameCount = 0
166
+ for frame, wasMouseInside in pairs(isMouseInsideLocallyByFrame) do
167
+ local tooltip = tooltipByFrame[frame]
168
+ local isMouseInside = tooltip ~= nil and tooltip.visible
169
+ if isMouseInside ~= wasMouseInside then
170
+ isMouseInsideLocallyByFrame[frame] = isMouseInside
171
+ if isMouseInside then
172
+ enteredFrames[enteredFrameCount + 1] = frame
173
+ enteredFrameCount = enteredFrameCount + 1
174
+ else
175
+ leftFrames[leftFrameCount + 1] = frame
176
+ leftFrameCount = leftFrameCount + 1
177
+ end
178
+ end
179
+ end
180
+ for i = 1, leftFrameCount do
181
+ local event = mouseLeaveLocalEventByFrame[leftFrames[i]]
182
+ if event ~= nil then
183
+ Event.invoke(event)
184
+ end
185
+ end
186
+ for i = 1, enteredFrameCount do
187
+ local event = mouseEnterLocalEventByFrame[enteredFrames[i]]
188
+ if event ~= nil then
189
+ Event.invoke(event)
190
+ end
191
+ end
192
+ end)
193
+ end
194
+ local keyByAsyncInitOriginFrameType = luaMapOf(ORIGIN_FRAME_PORTRAIT_HP_TEXT, "hp", ORIGIN_FRAME_PORTRAIT_MANA_TEXT, "mana")
195
+ local asyncInitOriginFrameTypeByKey = luaMapInvert(keyByAsyncInitOriginFrameType)
196
+ local seenAsyncInitOriginFrameTypes = mutableLuaSet()
197
+ local seenAsyncInitOriginFrameTypesSocket = __TS__New(Socket)
198
+ local seenPlayersByAsyncInitOriginFrameType = mutableLuaMap()
199
+ seenAsyncInitOriginFrameTypesSocket.onMessage:addListener(function(player, key)
200
+ local asyncInitOriginFrameType = asyncInitOriginFrameTypeByKey[key]
201
+ if asyncInitOriginFrameType ~= nil then
202
+ getOrPut(seenPlayersByAsyncInitOriginFrameType, asyncInitOriginFrameType, mutableLuaSet)[player] = true
203
+ end
204
+ end)
205
+ local function haveAllPlayersSeenAsyncInitOriginFrameType(frame)
206
+ local players = seenPlayersByAsyncInitOriginFrameType[frame]
207
+ if players == nil then
208
+ return false
209
+ end
210
+ for ____, player in ipairs(Player.all) do
211
+ if player.isUser and player.isPlaying and not (players[player] ~= nil) then
212
+ return false
213
+ end
214
+ end
215
+ keyByAsyncInitOriginFrameType[frame] = nil
216
+ return true
217
+ end
130
218
  ____exports.Frame = __TS__Class()
131
219
  local Frame = ____exports.Frame
132
220
  Frame.name = "Frame"
@@ -159,6 +247,18 @@ function Frame.prototype.getEvent(self, eventType, c)
159
247
  end
160
248
  return self.events[eventId]
161
249
  end
250
+ function Frame.prototype.trackMouseLocally(self)
251
+ if not (tooltipByFrame[self] ~= nil) then
252
+ ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = self
253
+ 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)
254
+ ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = ____exports.Frame.CONSOLE_UI
255
+ self:setTooltip(tooltip)
256
+ end
257
+ if not (isMouseInsideLocallyByFrame[self] ~= nil) then
258
+ isMouseInsideLocallyByFrame[self] = false
259
+ startLocalMouseTracking()
260
+ end
261
+ end
162
262
  function Frame.prototype.hide(self)
163
263
  self.hideCounter = self.hideCounter + 1
164
264
  if self.hideCounter > 0 then
@@ -305,7 +405,17 @@ function Frame.byOrigin(self, frameType, index)
305
405
  if index == nil then
306
406
  index = 0
307
407
  end
308
- return self:of(BlzGetOriginFrame(frameType, index))
408
+ local frame = getOriginFrame(frameType, index)
409
+ local asyncInitOriginFrameTypeKey = keyByAsyncInitOriginFrameType[frameType]
410
+ if index == 0 and asyncInitOriginFrameTypeKey ~= nil and not haveAllPlayersSeenAsyncInitOriginFrameType(frameType) then
411
+ if getHandleId(frame) == 0 or seenAsyncInitOriginFrameTypes[frameType] ~= nil then
412
+ location(0, 0)
413
+ else
414
+ seenAsyncInitOriginFrameTypes[frameType] = true
415
+ seenAsyncInitOriginFrameTypesSocket:send(asyncInitOriginFrameTypeKey)
416
+ end
417
+ end
418
+ return self:of(frame)
309
419
  end
310
420
  Frame.GAME_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_GAME_UI)
311
421
  Frame.CONSOLE_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_SIMPLE_UI_PARENT)
@@ -624,24 +734,8 @@ __TS__SetDescriptor(
624
734
  "mouseEnterLocalEvent",
625
735
  {get = function(self)
626
736
  local event = __TS__New(Event)
627
- if not (tooltipByFrame[self] ~= nil) then
628
- ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = self
629
- 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)
630
- ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = ____exports.Frame.CONSOLE_UI
631
- self:setTooltip(tooltip)
632
- end
633
- local isMouseInside = false
634
- Timer.onPeriod[1 / 64]:addListener(function()
635
- local tooltip = tooltipByFrame[self]
636
- if tooltip and tooltip.visible then
637
- if not isMouseInside then
638
- isMouseInside = true
639
- Event.invoke(event)
640
- end
641
- else
642
- isMouseInside = false
643
- end
644
- end)
737
+ self:trackMouseLocally()
738
+ mouseEnterLocalEventByFrame[self] = event
645
739
  rawset(self, "mouseEnterLocalEvent", event)
646
740
  return event
647
741
  end},
@@ -652,24 +746,8 @@ __TS__SetDescriptor(
652
746
  "mouseLeaveLocalEvent",
653
747
  {get = function(self)
654
748
  local event = __TS__New(Event)
655
- if not (tooltipByFrame[self] ~= nil) then
656
- ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = self
657
- 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)
658
- ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = ____exports.Frame.CONSOLE_UI
659
- self:setTooltip(tooltip)
660
- end
661
- local isMouseInside = false
662
- Timer.onPeriod[1 / 64]:addListener(function()
663
- local tooltip = tooltipByFrame[self]
664
- if tooltip and tooltip.visible then
665
- isMouseInside = true
666
- else
667
- if isMouseInside then
668
- isMouseInside = false
669
- Event.invoke(event)
670
- end
671
- end
672
- end)
749
+ self:trackMouseLocally()
750
+ mouseLeaveLocalEventByFrame[self] = event
673
751
  rawset(self, "mouseLeaveLocalEvent", event)
674
752
  return event
675
753
  end},
@@ -936,16 +1014,19 @@ __TS__ObjectDefineProperty(
936
1014
  local event = __TS__New(Event)
937
1015
  local syncX = 0
938
1016
  local syncY = 0
939
- local syncCamX = getCameraTargetPositionX()
940
- local syncCamY = getCameraTargetPositionY()
1017
+ local syncFrameX = 0
1018
+ local syncFrameY = 0
941
1019
  local lastX = syncX
942
1020
  local lastY = syncY
943
1021
  self.onMouseMove:addListener(function(player, x, y)
944
1022
  if player.isLocal then
945
1023
  syncX = x
946
1024
  syncY = y
947
- syncCamX = getCameraTargetPositionX()
948
- syncCamY = getCameraTargetPositionY()
1025
+ syncFrameX, syncFrameY = worldCoordinatesToFrame(
1026
+ x,
1027
+ y,
1028
+ getTerrainZ(x, y)
1029
+ )
949
1030
  lastX = x
950
1031
  lastY = y
951
1032
  invoke(event, x, y)
@@ -955,9 +1036,8 @@ __TS__ObjectDefineProperty(
955
1036
  if syncX == 0 and syncY == 0 then
956
1037
  return
957
1038
  end
958
- local x = syncX + (getCameraTargetPositionX() - syncCamX)
959
- local y = syncY + (getCameraTargetPositionY() - syncCamY)
960
- if x ~= lastX or y ~= lastY then
1039
+ local x, y, ____, isDefinite = frameCoordinatesToWorld(syncFrameX, syncFrameY)
1040
+ if isDefinite and (x ~= lastX or y ~= lastY) then
961
1041
  lastX = x
962
1042
  lastY = y
963
1043
  invoke(event, x, y)
@@ -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 {};