warscript 0.0.1-dev.bb34489 → 0.0.1-dev.bc4cd10

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 (455) hide show
  1. package/attributes.d.ts +6 -0
  2. package/attributes.lua +17 -1
  3. package/binaryreader.d.ts +1 -0
  4. package/binaryreader.lua +3 -0
  5. package/config.d.ts +5 -0
  6. package/config.lua +10 -0
  7. package/core/dummy.lua +4 -2
  8. package/core/types/effect.d.ts +24 -6
  9. package/core/types/effect.lua +169 -107
  10. package/core/types/frame.d.ts +9 -0
  11. package/core/types/frame.lua +193 -23
  12. package/core/types/handle.lua +11 -9
  13. package/core/types/item.d.ts +1 -0
  14. package/core/types/item.lua +1 -0
  15. package/core/types/player.d.ts +18 -1
  16. package/core/types/player.lua +76 -26
  17. package/core/types/playerCamera.d.ts +2 -0
  18. package/core/types/playerCamera.lua +123 -5
  19. package/core/types/playerColor.lua +4 -3
  20. package/core/types/sound.d.ts +18 -25
  21. package/core/types/sound.lua +113 -33
  22. package/core/types/tileCell.d.ts +11 -1
  23. package/core/types/tileCell.lua +97 -0
  24. package/core/types/timer.d.ts +9 -8
  25. package/core/types/timer.lua +45 -23
  26. package/core/types/unit.d.ts +5 -0
  27. package/core/types/unit.lua +5 -0
  28. package/core/util.d.ts +3 -1
  29. package/core/util.lua +127 -4
  30. package/decl/native.d.ts +1718 -964
  31. package/destroyable.d.ts +1 -0
  32. package/destroyable.lua +9 -0
  33. package/engine/behavior.d.ts +16 -3
  34. package/engine/behavior.lua +233 -73
  35. package/engine/behaviour/ability/always-enabled.d.ts +7 -0
  36. package/engine/behaviour/ability/always-enabled.lua +31 -0
  37. package/engine/behaviour/ability/apply-buff.d.ts +8 -5
  38. package/engine/behaviour/ability/apply-buff.lua +36 -4
  39. package/engine/behaviour/ability/apply-unit-behavior.lua +6 -0
  40. package/engine/behaviour/ability/damage.d.ts +43 -11
  41. package/engine/behaviour/ability/damage.lua +89 -39
  42. package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
  43. package/engine/behaviour/ability/emulate-impact.lua +44 -0
  44. package/engine/behaviour/ability/heal.d.ts +33 -6
  45. package/engine/behaviour/ability/heal.lua +89 -10
  46. package/engine/behaviour/ability/instant-impact.d.ts +2 -2
  47. package/engine/behaviour/ability/instant-impact.lua +4 -19
  48. package/engine/behaviour/ability/on-command-impact.d.ts +9 -0
  49. package/engine/behaviour/ability/on-command-impact.lua +26 -0
  50. package/engine/behaviour/ability/remove-buffs.d.ts +25 -0
  51. package/engine/behaviour/ability/remove-buffs.lua +49 -0
  52. package/engine/behaviour/ability/restore-mana.d.ts +15 -0
  53. package/engine/behaviour/ability/restore-mana.lua +29 -0
  54. package/engine/behaviour/ability.d.ts +30 -7
  55. package/engine/behaviour/ability.lua +162 -43
  56. package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
  57. package/engine/behaviour/unit/stun-immunity.lua +57 -31
  58. package/engine/behaviour/unit.d.ts +46 -2
  59. package/engine/behaviour/unit.lua +290 -6
  60. package/engine/buff.d.ts +166 -57
  61. package/engine/buff.lua +766 -274
  62. package/engine/game-map.d.ts +7 -0
  63. package/engine/game-map.lua +32 -0
  64. package/engine/index.d.ts +2 -1
  65. package/engine/internal/ability.d.ts +27 -14
  66. package/engine/internal/ability.lua +168 -104
  67. package/engine/internal/item/ability.lua +162 -4
  68. package/engine/internal/item/fields.d.ts +12 -0
  69. package/engine/internal/item/fields.lua +33 -0
  70. package/engine/internal/item/owner-cache.d.ts +5 -0
  71. package/engine/internal/item/owner-cache.lua +4 -0
  72. package/engine/internal/item+owner.d.ts +2 -0
  73. package/engine/internal/item+owner.lua +37 -8
  74. package/engine/internal/item.d.ts +34 -18
  75. package/engine/internal/item.lua +308 -102
  76. package/engine/internal/mechanics/ability-duration.lua +1 -1
  77. package/engine/internal/mechanics/cast-ability.lua +6 -3
  78. package/engine/internal/misc/ability-disable-counter.lua +13 -0
  79. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  80. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  81. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  82. package/engine/internal/misc/frame-coordinates.lua +21 -0
  83. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  84. package/engine/internal/misc/get-terrain-z.lua +11 -0
  85. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  86. package/engine/internal/misc/player-local-handle.lua +5 -0
  87. package/engine/internal/misc/unit-ability-level-natives.d.ts +2 -0
  88. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  89. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  90. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  91. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  92. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  93. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  94. package/engine/internal/object-data/evasion-probability.lua +16 -0
  95. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  96. package/engine/internal/object-data/health-bonus.lua +16 -0
  97. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  98. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  99. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  100. package/engine/internal/object-data/mana-bonus.lua +16 -0
  101. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  102. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  103. package/engine/internal/unit/ability.d.ts +45 -1
  104. package/engine/internal/unit/ability.lua +142 -19
  105. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  106. package/engine/internal/unit/add-item-to-slot-init.lua +12 -0
  107. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  108. package/engine/internal/unit/add-item-to-slot.lua +93 -0
  109. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  110. package/engine/internal/unit/allowed-targets.lua +9 -1
  111. package/engine/internal/unit/appearance.d.ts +15 -0
  112. package/engine/internal/unit/appearance.lua +85 -0
  113. package/engine/internal/unit/attributes.d.ts +17 -0
  114. package/engine/internal/unit/attributes.lua +46 -0
  115. package/engine/internal/unit/bonus.d.ts +20 -2
  116. package/engine/internal/unit/bonus.lua +125 -9
  117. package/engine/internal/unit/buff.d.ts +2 -2
  118. package/engine/internal/unit/buff.lua +34 -19
  119. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  120. package/engine/internal/unit/equipment-inventory.lua +233 -0
  121. package/engine/internal/unit/expiration-timer.lua +1 -1
  122. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  123. package/engine/internal/unit/extended-inventory.lua +99 -0
  124. package/engine/internal/unit/fly-height.d.ts +7 -0
  125. package/engine/internal/unit/fly-height.lua +20 -0
  126. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  127. package/engine/internal/unit/ignore-events-items.lua +14 -0
  128. package/engine/internal/unit/interrupts.d.ts +12 -0
  129. package/engine/internal/unit/interrupts.lua +28 -0
  130. package/engine/internal/unit/inventory.d.ts +28 -0
  131. package/engine/internal/unit/inventory.lua +87 -0
  132. package/engine/internal/unit/item-container.d.ts +25 -0
  133. package/engine/internal/unit/item-container.lua +11 -0
  134. package/engine/internal/unit/item-order-events.d.ts +17 -0
  135. package/engine/internal/unit/item-order-events.lua +67 -0
  136. package/engine/internal/unit/item-slot.d.ts +27 -0
  137. package/engine/internal/unit/item-slot.lua +92 -0
  138. package/engine/internal/unit/main-selected.d.ts +13 -0
  139. package/engine/internal/unit/main-selected.lua +36 -0
  140. package/engine/internal/unit/order.d.ts +20 -0
  141. package/engine/internal/unit/order.lua +136 -0
  142. package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
  143. package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
  144. package/engine/internal/unit/range-event.d.ts +12 -0
  145. package/engine/internal/unit/range-event.lua +90 -0
  146. package/engine/internal/unit/scale.d.ts +7 -0
  147. package/engine/internal/unit/scale.lua +20 -0
  148. package/engine/internal/unit+ability.d.ts +2 -1
  149. package/engine/internal/unit+ability.lua +75 -5
  150. package/engine/internal/unit+bonus.lua +3 -3
  151. package/engine/internal/unit+damage.d.ts +11 -11
  152. package/engine/internal/unit+damage.lua +43 -14
  153. package/engine/internal/unit+rally.lua +9 -31
  154. package/engine/internal/unit+spellSteal.lua +1 -2
  155. package/engine/internal/unit+transport.lua +4 -10
  156. package/engine/internal/unit-missile-data.lua +58 -32
  157. package/engine/internal/unit-missile-launch.lua +70 -13
  158. package/engine/internal/unit.d.ts +57 -31
  159. package/engine/internal/unit.lua +466 -308
  160. package/engine/internal/utility.lua +12 -0
  161. package/engine/lightning.d.ts +12 -5
  162. package/engine/lightning.lua +48 -14
  163. package/engine/local-client.d.ts +35 -2
  164. package/engine/local-client.lua +367 -15
  165. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  166. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  167. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  168. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  169. package/engine/object-data/auxiliary/attachment-preset.d.ts +14 -2
  170. package/engine/object-data/auxiliary/attachment-preset.lua +11 -3
  171. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  172. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  173. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  174. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  175. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  176. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  177. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  178. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  179. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  180. package/engine/object-data/auxiliary/item-class.lua +2 -0
  181. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  182. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  183. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  184. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  185. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  186. package/engine/object-data/auxiliary/order-type.lua +2 -0
  187. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  188. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  189. package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
  190. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  191. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  192. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  193. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  194. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  195. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  196. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  197. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  198. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  199. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  200. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  201. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  202. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  203. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  204. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  205. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  206. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  207. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  208. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  209. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  210. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
  211. package/engine/object-data/entry/ability-type/blank-configurable.lua +42 -1
  212. package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
  213. package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
  214. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  215. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  216. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  217. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  218. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  219. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  220. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  221. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  222. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  223. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  224. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  225. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  226. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  227. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  228. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  229. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  230. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  231. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  232. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  233. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  234. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  235. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  236. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  237. package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
  238. package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
  239. package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
  240. package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
  241. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  242. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  243. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  244. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  245. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  246. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  247. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  248. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  249. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  250. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  251. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  252. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  253. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  254. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  255. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  256. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  257. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  258. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  259. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  260. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  261. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  262. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  263. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  264. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  265. package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
  266. package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
  267. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  268. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  269. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  270. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  271. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  272. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  273. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  274. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  275. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  276. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  277. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  278. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  279. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  280. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  281. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  282. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  283. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  284. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  285. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  286. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  287. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  288. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  289. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  290. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  291. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  292. package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
  293. package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
  294. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  295. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  296. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  297. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  298. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  299. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  300. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  301. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  302. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  303. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  304. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  305. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  306. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  307. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  308. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  309. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  310. package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
  311. package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
  312. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  313. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  314. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  315. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  316. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  317. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  318. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  319. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  320. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  321. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  322. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  323. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  324. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  325. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  326. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  327. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  328. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  329. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  330. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  331. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  332. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  333. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  334. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  335. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  336. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  337. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  338. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  339. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  340. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  341. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  342. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  343. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  344. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  345. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  346. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  347. package/engine/object-data/entry/ability-type/web.lua +52 -0
  348. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  349. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  350. package/engine/object-data/entry/ability-type.d.ts +41 -20
  351. package/engine/object-data/entry/ability-type.lua +337 -44
  352. package/engine/object-data/entry/buff-type/applicable.lua +122 -137
  353. package/engine/object-data/entry/buff-type.d.ts +10 -12
  354. package/engine/object-data/entry/buff-type.lua +39 -29
  355. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  356. package/engine/object-data/entry/destructible-type.lua +181 -0
  357. package/engine/object-data/entry/item-type.d.ts +32 -3
  358. package/engine/object-data/entry/item-type.lua +177 -2
  359. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  360. package/engine/object-data/entry/lightning-type.lua +1 -1
  361. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  362. package/engine/object-data/entry/sound-preset.lua +140 -0
  363. package/engine/object-data/entry/unit-type.d.ts +71 -6
  364. package/engine/object-data/entry/unit-type.lua +592 -93
  365. package/engine/object-data/entry/upgrade.d.ts +2 -2
  366. package/engine/object-data/entry/upgrade.lua +4 -4
  367. package/engine/object-data/entry.d.ts +21 -14
  368. package/engine/object-data/entry.lua +68 -32
  369. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  370. package/engine/object-field/ability.d.ts +28 -5
  371. package/engine/object-field/ability.lua +61 -7
  372. package/engine/object-field/item.d.ts +22 -0
  373. package/engine/object-field/item.lua +118 -0
  374. package/engine/object-field/unit.d.ts +72 -3
  375. package/engine/object-field/unit.lua +268 -7
  376. package/engine/object-field.d.ts +26 -7
  377. package/engine/object-field.lua +362 -117
  378. package/engine/random.d.ts +10 -0
  379. package/engine/random.lua +21 -0
  380. package/engine/standard/entries/ability-type.d.ts +3102 -7
  381. package/engine/standard/entries/ability-type.lua +0 -6
  382. package/engine/standard/entries/buff-type.d.ts +48 -0
  383. package/engine/standard/entries/buff-type.lua +46 -0
  384. package/engine/standard/entries/item-type.d.ts +1299 -0
  385. package/engine/standard/entries/item-type.lua +2 -0
  386. package/engine/standard/entries/lightning-type.d.ts +42 -15
  387. package/engine/standard/entries/lightning-type.lua +0 -14
  388. package/engine/standard/entries/sound-preset.d.ts +10 -0
  389. package/engine/standard/entries/sound-preset.lua +10 -0
  390. package/engine/standard/entries/unit-type.d.ts +5 -0
  391. package/engine/standard/entries/unit-type.lua +5 -0
  392. package/engine/standard/fields/ability.d.ts +4 -2
  393. package/engine/standard/fields/ability.lua +4 -2
  394. package/engine/standard/fields/item.d.ts +4 -0
  395. package/engine/standard/fields/item.lua +6 -0
  396. package/engine/standard/fields/unit.d.ts +12 -0
  397. package/engine/standard/fields/unit.lua +20 -0
  398. package/engine/synchronization.d.ts +11 -0
  399. package/engine/synchronization.lua +77 -0
  400. package/engine/text-tag.d.ts +36 -2
  401. package/engine/text-tag.lua +250 -10
  402. package/engine/unit.d.ts +13 -0
  403. package/engine/unit.lua +13 -0
  404. package/event.d.ts +1 -1
  405. package/index.d.ts +1 -0
  406. package/index.lua +1 -0
  407. package/lualib_bundle.lua +8 -3
  408. package/math.d.ts +2 -0
  409. package/math.lua +14 -0
  410. package/net/socket.d.ts +7 -1
  411. package/net/socket.lua +45 -4
  412. package/network.d.ts +1 -0
  413. package/network.lua +28 -3
  414. package/objutil/buff.lua +13 -12
  415. package/objutil/object.lua +1 -1
  416. package/objutil/unit.lua +8 -0
  417. package/operation.d.ts +8 -1
  418. package/operation.lua +38 -18
  419. package/package.json +3 -23
  420. package/patch-lua.d.ts +0 -0
  421. package/patch-lua.lua +25 -0
  422. package/patch-lualib.lua +1 -1
  423. package/property.d.ts +55 -0
  424. package/property.lua +374 -0
  425. package/utility/arrays.d.ts +11 -1
  426. package/utility/arrays.lua +57 -3
  427. package/utility/callback-array.d.ts +17 -0
  428. package/utility/callback-array.lua +61 -0
  429. package/utility/functions.d.ts +8 -0
  430. package/utility/functions.lua +13 -0
  431. package/utility/lazy.d.ts +2 -0
  432. package/utility/lazy.lua +14 -0
  433. package/utility/linked-map.d.ts +35 -0
  434. package/utility/linked-map.lua +107 -0
  435. package/utility/linked-set.d.ts +16 -3
  436. package/utility/linked-set.lua +54 -3
  437. package/utility/lua-maps.d.ts +15 -2
  438. package/utility/lua-maps.lua +53 -2
  439. package/utility/lua-sets.d.ts +2 -0
  440. package/utility/lua-sets.lua +7 -0
  441. package/utility/random.d.ts +102 -0
  442. package/utility/random.lua +273 -0
  443. package/utility/records.lua +20 -1
  444. package/utility/reflection.lua +11 -7
  445. package/utility/types.d.ts +4 -0
  446. package/utility/unordered-map.d.ts +27 -0
  447. package/utility/unordered-map.lua +99 -0
  448. package/core/mapbounds.d.ts +0 -8
  449. package/core/mapbounds.lua +0 -12
  450. package/core/types/order.d.ts +0 -25
  451. package/core/types/order.lua +0 -55
  452. /package/engine/internal/{object-data/armor-increase.d.ts → misc/ability-disable-counter.d.ts} +0 -0
  453. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  454. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  455. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -15,13 +15,32 @@ 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 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
18
36
  local frameClick = BlzFrameClick
19
37
  local frameGetEnable = BlzFrameGetEnable
20
38
  local frameIsVisible = BlzFrameIsVisible
21
39
  local frameSetEnable = BlzFrameSetEnable
22
40
  local frameSetScale = BlzFrameSetScale
23
- local getCameraTargetPositionX = GetCameraTargetPositionX
24
- local getCameraTargetPositionY = GetCameraTargetPositionY
41
+ local getHandleId = GetHandleId
42
+ local getOriginFrame = BlzGetOriginFrame
43
+ local location = Location
25
44
  local ____rawget = _G.rawget
26
45
  local rawset = _G.rawset
27
46
  local invoke = Event.invoke
@@ -62,8 +81,10 @@ local function updateBorders()
62
81
  local width4by3 = (w - h / 600 * 800) / 2
63
82
  local pxtodpi = 0.6 / h
64
83
  BlzFrameSetAbsPoint(leftBorder, FRAMEPOINT_TOPLEFT, -width4by3 * pxtodpi, 0.6)
84
+ BlzFrameSetScale(leftBorder, 1)
65
85
  BlzFrameSetSize(leftBorder, 0.001, 0.6)
66
86
  BlzFrameSetAbsPoint(rightBorder, FRAMEPOINT_TOPRIGHT, (-width4by3 + w) * pxtodpi, 0.6)
87
+ BlzFrameSetScale(rightBorder, 1)
67
88
  BlzFrameSetSize(rightBorder, 0.001, 0.6)
68
89
  end
69
90
  local worldFrame = BlzGetOriginFrame(ORIGIN_FRAME_WORLD_FRAME, 0)
@@ -120,6 +141,80 @@ do
120
141
  FramePoint.BOTTOM = FRAMEPOINT_BOTTOM
121
142
  FramePoint.BOTTOM_RIGHT = FRAMEPOINT_BOTTOMRIGHT
122
143
  end
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
123
218
  ____exports.Frame = __TS__Class()
124
219
  local Frame = ____exports.Frame
125
220
  Frame.name = "Frame"
@@ -152,6 +247,18 @@ function Frame.prototype.getEvent(self, eventType, c)
152
247
  end
153
248
  return self.events[eventId]
154
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
155
262
  function Frame.prototype.hide(self)
156
263
  self.hideCounter = self.hideCounter + 1
157
264
  if self.hideCounter > 0 then
@@ -240,6 +347,7 @@ function Frame.prototype.setTextColor(self, color)
240
347
  end
241
348
  function Frame.prototype.setTooltip(self, tooltip)
242
349
  BlzFrameSetTooltip(self.handle, tooltip.handle)
350
+ tooltipByFrame[self] = tooltip
243
351
  end
244
352
  function Frame.prototype.setMinMaxValue(self, minValue, maxValue)
245
353
  BlzFrameSetMinMaxValue(self.handle, minValue, maxValue)
@@ -267,7 +375,16 @@ function Frame.createSimple(self, name, parent, createContext)
267
375
  ))
268
376
  end
269
377
  function Frame.create(self, name, parent, priority, createContext)
270
- return self:of(BlzCreateFrame(name, parent.handle, priority or 0, createContext or 0))
378
+ if parent == ____exports.Frame.CONSOLE_UI_BACKDROP then
379
+ local helper = ____exports.Frame.CONSOLE_UI_BACKDROP_UI_SCALE_HELPER_CHILD.handle
380
+ BlzFrameSetScale(helper, 1)
381
+ local frame = BlzCreateFrame(name, helper, priority or 0, createContext or 0)
382
+ BlzFrameSetScale(helper, ____exports.Frame.uiScale)
383
+ BlzFrameSetParent(frame, ____exports.Frame.CONSOLE_UI_BACKDROP.handle)
384
+ return self:of(frame)
385
+ else
386
+ return self:of(BlzCreateFrame(name, parent.handle, priority or 0, createContext or 0))
387
+ end
271
388
  end
272
389
  function Frame.createByType(self, typeName, name, parent, inherits, createContext)
273
390
  return self:of(BlzCreateFrameByType(
@@ -288,14 +405,35 @@ function Frame.byOrigin(self, frameType, index)
288
405
  if index == nil then
289
406
  index = 0
290
407
  end
291
- 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)
292
419
  end
293
420
  Frame.GAME_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_GAME_UI)
294
421
  Frame.CONSOLE_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_SIMPLE_UI_PARENT)
295
422
  Frame.CONSOLE_UI_BACKDROP = ____exports.Frame:byName("ConsoleUIBackdrop")
423
+ Frame.CONSOLE_UI_BACKDROP_UI_SCALE_HELPER_CHILD = ____exports.Frame:createByType("FRAME", "ConsoleUIBackdropUIScaleHelperChild", ____exports.Frame.CONSOLE_UI_BACKDROP)
424
+ Frame.CONSOLE_TOP_BAR = ____exports.Frame:byName("ConsoleTopBar")
425
+ Frame.CONSOLE_BOTTOM_BAR = ____exports.Frame:byName("ConsoleBottomBar")
296
426
  Frame.WORLD = ____exports.Frame:byOrigin(ORIGIN_FRAME_WORLD_FRAME)
297
427
  Frame.CHAT = ____exports.Frame:byOrigin(ORIGIN_FRAME_CHAT_MSG)
298
428
  Frame.TIME_OF_DAY_CLOCK = ____exports.Frame.GAME_UI:getChild(5):getChild(0)
429
+ Frame.SIMPLE_FRAME_TEST_CHILD = ____exports.Frame:createByType("SIMPLEFRAME", "SimpleFrameTestParent", ____exports.Frame.CONSOLE_UI)
430
+ __TS__ObjectDefineProperty(
431
+ Frame,
432
+ "uiScale",
433
+ {get = function(self)
434
+ return ____exports.Frame.CONSOLE_BOTTOM_BAR.width / 0.8
435
+ end}
436
+ )
299
437
  __TS__ObjectDefineProperty(
300
438
  Frame,
301
439
  "leftBorder",
@@ -320,27 +458,21 @@ __TS__ObjectDefineProperty(
320
458
  Frame,
321
459
  "minX",
322
460
  {get = function(self)
323
- local w = BlzGetLocalClientWidth()
324
- local h = BlzGetLocalClientHeight()
325
- local width4by3 = (w - h / 600 * 800) / 2
326
- local pxtodpi = 0.6 / h
327
- return -width4by3 * pxtodpi
461
+ local minX = getFrameMinXMaxX()
462
+ return minX
328
463
  end}
329
464
  )
330
465
  __TS__ObjectDefineProperty(
331
466
  Frame,
332
467
  "maxX",
333
468
  {get = function(self)
334
- local w = BlzGetLocalClientWidth()
335
- local h = BlzGetLocalClientHeight()
336
- local width4by3 = (w - h / 600 * 800) / 2
337
- local pxtodpi = 0.6 / h
338
- return (-width4by3 + w) * pxtodpi
469
+ local ____, maxX = getFrameMinXMaxX()
470
+ return maxX
339
471
  end}
340
472
  )
341
473
  Frame.centerX = 0.4
342
- Frame.minY = 0
343
- Frame.maxY = 0.6
474
+ Frame.minY = FRAME_MIN_Y
475
+ Frame.maxY = FRAME_MAX_Y
344
476
  Frame.centerY = 0.3
345
477
  __TS__SetDescriptor(
346
478
  Frame.prototype,
@@ -597,6 +729,30 @@ __TS__SetDescriptor(
597
729
  end},
598
730
  true
599
731
  )
732
+ __TS__SetDescriptor(
733
+ Frame.prototype,
734
+ "mouseEnterLocalEvent",
735
+ {get = function(self)
736
+ local event = __TS__New(Event)
737
+ self:trackMouseLocally()
738
+ mouseEnterLocalEventByFrame[self] = event
739
+ rawset(self, "mouseEnterLocalEvent", event)
740
+ return event
741
+ end},
742
+ true
743
+ )
744
+ __TS__SetDescriptor(
745
+ Frame.prototype,
746
+ "mouseLeaveLocalEvent",
747
+ {get = function(self)
748
+ local event = __TS__New(Event)
749
+ self:trackMouseLocally()
750
+ mouseLeaveLocalEventByFrame[self] = event
751
+ rawset(self, "mouseLeaveLocalEvent", event)
752
+ return event
753
+ end},
754
+ true
755
+ )
600
756
  __TS__SetDescriptor(
601
757
  Frame.prototype,
602
758
  "popupMenuItemChangeEvent",
@@ -699,6 +855,18 @@ __TS__SetDescriptor(
699
855
  end},
700
856
  true
701
857
  )
858
+ __TS__SetDescriptor(
859
+ Frame.prototype,
860
+ "children",
861
+ {get = function(self)
862
+ local children = {}
863
+ for i = 0, self:getChildrenCount() - 1 do
864
+ children[i + 1] = self:getChild(i)
865
+ end
866
+ return children
867
+ end},
868
+ true
869
+ )
702
870
  __TS__ObjectDefineProperty(
703
871
  Frame,
704
872
  "onKeyPress",
@@ -846,16 +1014,19 @@ __TS__ObjectDefineProperty(
846
1014
  local event = __TS__New(Event)
847
1015
  local syncX = 0
848
1016
  local syncY = 0
849
- local syncCamX = getCameraTargetPositionX()
850
- local syncCamY = getCameraTargetPositionY()
1017
+ local syncFrameX = 0
1018
+ local syncFrameY = 0
851
1019
  local lastX = syncX
852
1020
  local lastY = syncY
853
1021
  self.onMouseMove:addListener(function(player, x, y)
854
1022
  if player.isLocal then
855
1023
  syncX = x
856
1024
  syncY = y
857
- syncCamX = getCameraTargetPositionX()
858
- syncCamY = getCameraTargetPositionY()
1025
+ syncFrameX, syncFrameY = worldCoordinatesToFrame(
1026
+ x,
1027
+ y,
1028
+ getTerrainZ(x, y)
1029
+ )
859
1030
  lastX = x
860
1031
  lastY = y
861
1032
  invoke(event, x, y)
@@ -865,9 +1036,8 @@ __TS__ObjectDefineProperty(
865
1036
  if syncX == 0 and syncY == 0 then
866
1037
  return
867
1038
  end
868
- local x = syncX + (getCameraTargetPositionX() - syncCamX)
869
- local y = syncY + (getCameraTargetPositionY() - syncCamY)
870
- 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
871
1041
  lastX = x
872
1042
  lastY = y
873
1043
  invoke(event, x, y)
@@ -2,6 +2,7 @@ local ____lualib = require("lualib_bundle")
2
2
  local __TS__Class = ____lualib.__TS__Class
3
3
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
4
  local __TS__New = ____lualib.__TS__New
5
+ local __TS__Delete = ____lualib.__TS__Delete
5
6
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
6
7
  local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
7
8
  local ____exports = {}
@@ -14,6 +15,8 @@ local ____exception = require("exception")
14
15
  local IllegalStateException = ____exception.IllegalStateException
15
16
  local ____attributes = require("attributes")
16
17
  local AttributesHolder = ____attributes.AttributesHolder
18
+ local ____preconditions = require("utility.preconditions")
19
+ local checkNotNull = ____preconditions.checkNotNull
17
20
  local getHandleId = GetHandleId
18
21
  local onCreateEventByHandleConstructor = {}
19
22
  local onDestroyEventByHandleConstructor = {}
@@ -57,6 +60,9 @@ function Handle.invokeOnCreateEvent(self, clazz, handle)
57
60
  Event.invoke(onCreateEvent, handle)
58
61
  end
59
62
  end
63
+ function Handle.isWrapped(self, handle)
64
+ return self.memoized[getHandleId(handle)] ~= nil
65
+ end
60
66
  function Handle.prototype.__tostring(self)
61
67
  return (self.constructor.name .. "@") .. tostring(getHandleId(self.handle))
62
68
  end
@@ -65,17 +71,12 @@ function Handle.prototype.onDestroy(self, ...)
65
71
  return nil
66
72
  end
67
73
  function Handle.prototype.destroy(self, ...)
74
+ if self[0] == 2 or self[0] == 3 then
75
+ return nil
76
+ end
68
77
  local clazz = self.constructor
69
78
  local id = getHandleId(self.handle)
70
- if not clazz.memoized[id] then
71
- error(
72
- __TS__New(
73
- IllegalStateException,
74
- "Double-destroy run for handle " .. tostring(id)
75
- ),
76
- 0
77
- )
78
- end
79
+ checkNotNull(clazz.memoized[id])
79
80
  self[0] = 2
80
81
  if self.onDestroyEvent then
81
82
  Event.invoke(self.onDestroyEvent)
@@ -88,6 +89,7 @@ function Handle.prototype.destroy(self, ...)
88
89
  0
89
90
  )
90
91
  end
92
+ __TS__Delete(clazz.memoized, id)
91
93
  return nil
92
94
  end
93
95
  function Handle.invokeOnDestroyEvent(self, clazz, handle)
@@ -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