warscript 0.0.1-dev.b026cc2 → 0.0.1-dev.b1ce140

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 (432) hide show
  1. package/attributes.d.ts +6 -0
  2. package/attributes.lua +17 -1
  3. package/config.d.ts +5 -0
  4. package/config.lua +10 -0
  5. package/core/dummy.lua +4 -2
  6. package/core/types/effect.d.ts +24 -6
  7. package/core/types/effect.lua +169 -107
  8. package/core/types/frame.d.ts +7 -0
  9. package/core/types/frame.lua +189 -23
  10. package/core/types/handle.lua +9 -9
  11. package/core/types/item.d.ts +1 -0
  12. package/core/types/item.lua +1 -0
  13. package/core/types/player.d.ts +18 -1
  14. package/core/types/player.lua +76 -26
  15. package/core/types/playerCamera.d.ts +2 -0
  16. package/core/types/playerCamera.lua +123 -5
  17. package/core/types/playerColor.lua +4 -3
  18. package/core/types/sound.d.ts +18 -25
  19. package/core/types/sound.lua +113 -33
  20. package/core/types/tileCell.d.ts +11 -1
  21. package/core/types/tileCell.lua +97 -0
  22. package/core/types/timer.d.ts +9 -8
  23. package/core/types/timer.lua +45 -23
  24. package/core/types/unit.d.ts +5 -0
  25. package/core/types/unit.lua +5 -0
  26. package/core/util.d.ts +3 -1
  27. package/core/util.lua +127 -4
  28. package/decl/native.d.ts +1718 -964
  29. package/destroyable.d.ts +1 -0
  30. package/destroyable.lua +9 -0
  31. package/engine/behavior.d.ts +16 -3
  32. package/engine/behavior.lua +233 -73
  33. package/engine/behaviour/ability/always-enabled.d.ts +7 -0
  34. package/engine/behaviour/ability/always-enabled.lua +31 -0
  35. package/engine/behaviour/ability/apply-buff.d.ts +8 -5
  36. package/engine/behaviour/ability/apply-buff.lua +36 -4
  37. package/engine/behaviour/ability/apply-unit-behavior.lua +6 -0
  38. package/engine/behaviour/ability/damage.d.ts +13 -3
  39. package/engine/behaviour/ability/damage.lua +41 -49
  40. package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
  41. package/engine/behaviour/ability/emulate-impact.lua +44 -0
  42. package/engine/behaviour/ability/instant-impact.d.ts +2 -2
  43. package/engine/behaviour/ability/instant-impact.lua +4 -19
  44. package/engine/behaviour/ability/on-command-impact.d.ts +9 -0
  45. package/engine/behaviour/ability/on-command-impact.lua +26 -0
  46. package/engine/behaviour/ability/remove-buffs.d.ts +25 -0
  47. package/engine/behaviour/ability/remove-buffs.lua +49 -0
  48. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  49. package/engine/behaviour/ability/restore-mana.lua +6 -6
  50. package/engine/behaviour/ability.d.ts +30 -7
  51. package/engine/behaviour/ability.lua +162 -43
  52. package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
  53. package/engine/behaviour/unit/stun-immunity.lua +57 -31
  54. package/engine/behaviour/unit.d.ts +46 -2
  55. package/engine/behaviour/unit.lua +290 -6
  56. package/engine/buff.d.ts +149 -61
  57. package/engine/buff.lua +700 -304
  58. package/engine/index.d.ts +2 -1
  59. package/engine/internal/ability.d.ts +27 -14
  60. package/engine/internal/ability.lua +168 -104
  61. package/engine/internal/item/ability.lua +162 -4
  62. package/engine/internal/item/fields.d.ts +12 -0
  63. package/engine/internal/item/fields.lua +33 -0
  64. package/engine/internal/item/owner-cache.d.ts +5 -0
  65. package/engine/internal/item/owner-cache.lua +4 -0
  66. package/engine/internal/item+owner.d.ts +2 -0
  67. package/engine/internal/item+owner.lua +37 -8
  68. package/engine/internal/item.d.ts +34 -18
  69. package/engine/internal/item.lua +308 -102
  70. package/engine/internal/mechanics/ability-duration.lua +1 -1
  71. package/engine/internal/mechanics/cast-ability.lua +6 -3
  72. package/engine/internal/misc/ability-disable-counter.lua +13 -0
  73. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  74. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  75. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  76. package/engine/internal/misc/frame-coordinates.lua +21 -0
  77. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  78. package/engine/internal/misc/get-terrain-z.lua +11 -0
  79. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  80. package/engine/internal/misc/player-local-handle.lua +5 -0
  81. package/engine/internal/misc/unit-ability-level-natives.d.ts +2 -0
  82. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  83. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  84. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  85. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  86. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  87. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  88. package/engine/internal/object-data/evasion-probability.lua +16 -0
  89. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  90. package/engine/internal/object-data/health-bonus.lua +16 -0
  91. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  92. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  93. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  94. package/engine/internal/object-data/mana-bonus.lua +16 -0
  95. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  96. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  97. package/engine/internal/unit/ability.d.ts +45 -1
  98. package/engine/internal/unit/ability.lua +142 -19
  99. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  100. package/engine/internal/unit/add-item-to-slot-init.lua +12 -0
  101. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  102. package/engine/internal/unit/add-item-to-slot.lua +93 -0
  103. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  104. package/engine/internal/unit/allowed-targets.lua +9 -1
  105. package/engine/internal/unit/appearance.d.ts +15 -0
  106. package/engine/internal/unit/appearance.lua +85 -0
  107. package/engine/internal/unit/attributes.d.ts +17 -0
  108. package/engine/internal/unit/attributes.lua +46 -0
  109. package/engine/internal/unit/bonus.d.ts +20 -2
  110. package/engine/internal/unit/bonus.lua +125 -9
  111. package/engine/internal/unit/buff.d.ts +2 -2
  112. package/engine/internal/unit/buff.lua +34 -19
  113. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  114. package/engine/internal/unit/equipment-inventory.lua +233 -0
  115. package/engine/internal/unit/expiration-timer.lua +1 -1
  116. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  117. package/engine/internal/unit/extended-inventory.lua +99 -0
  118. package/engine/internal/unit/fly-height.d.ts +7 -0
  119. package/engine/internal/unit/fly-height.lua +20 -0
  120. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  121. package/engine/internal/unit/ignore-events-items.lua +14 -0
  122. package/engine/internal/unit/interrupts.d.ts +12 -0
  123. package/engine/internal/unit/interrupts.lua +28 -0
  124. package/engine/internal/unit/inventory.d.ts +28 -0
  125. package/engine/internal/unit/inventory.lua +87 -0
  126. package/engine/internal/unit/item-container.d.ts +25 -0
  127. package/engine/internal/unit/item-container.lua +11 -0
  128. package/engine/internal/unit/item-order-events.d.ts +17 -0
  129. package/engine/internal/unit/item-order-events.lua +67 -0
  130. package/engine/internal/unit/item-slot.d.ts +27 -0
  131. package/engine/internal/unit/item-slot.lua +92 -0
  132. package/engine/internal/unit/main-selected.d.ts +13 -0
  133. package/engine/internal/unit/main-selected.lua +36 -0
  134. package/engine/internal/unit/order.d.ts +20 -0
  135. package/engine/internal/unit/order.lua +136 -0
  136. package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
  137. package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
  138. package/engine/internal/unit/range-event.d.ts +12 -0
  139. package/engine/internal/unit/range-event.lua +90 -0
  140. package/engine/internal/unit/scale.d.ts +7 -0
  141. package/engine/internal/unit/scale.lua +20 -0
  142. package/engine/internal/unit+ability.d.ts +2 -1
  143. package/engine/internal/unit+ability.lua +75 -5
  144. package/engine/internal/unit+bonus.lua +3 -3
  145. package/engine/internal/unit+damage.d.ts +11 -11
  146. package/engine/internal/unit+damage.lua +43 -14
  147. package/engine/internal/unit+rally.lua +9 -31
  148. package/engine/internal/unit+spellSteal.lua +1 -2
  149. package/engine/internal/unit-missile-data.lua +58 -32
  150. package/engine/internal/unit-missile-launch.lua +70 -13
  151. package/engine/internal/unit.d.ts +57 -31
  152. package/engine/internal/unit.lua +450 -301
  153. package/engine/internal/utility.lua +12 -0
  154. package/engine/lightning.d.ts +12 -5
  155. package/engine/lightning.lua +48 -14
  156. package/engine/local-client.d.ts +35 -2
  157. package/engine/local-client.lua +367 -15
  158. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  159. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  160. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  161. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  162. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
  163. package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
  164. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  165. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  166. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  167. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  168. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  169. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  170. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  171. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  172. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  173. package/engine/object-data/auxiliary/item-class.lua +2 -0
  174. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  175. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  176. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  177. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  178. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  179. package/engine/object-data/auxiliary/order-type.lua +2 -0
  180. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  181. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  182. package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
  183. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  184. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  185. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  186. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  187. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  188. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  189. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  190. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  191. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  192. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  193. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  194. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  195. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  196. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  197. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  198. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  199. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  200. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  201. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  202. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  203. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
  204. package/engine/object-data/entry/ability-type/blank-configurable.lua +42 -1
  205. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  206. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  207. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  208. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  209. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  210. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  211. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  212. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  213. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  214. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  215. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  216. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  217. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  218. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  219. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  220. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  221. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  222. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  223. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  224. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  225. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  226. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  227. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  228. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  229. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  230. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  231. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  232. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  233. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  234. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  235. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  236. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  237. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  238. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  239. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  240. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  241. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  242. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  243. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  244. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  245. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  246. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  247. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  248. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  249. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  250. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  251. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  252. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  253. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  254. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  255. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  256. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  257. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  258. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  259. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  260. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  261. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  262. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  263. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  264. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  265. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  266. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  267. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  268. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  269. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  270. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  271. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  272. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  273. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  274. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  275. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  276. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  277. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  278. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  279. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  280. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  281. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  282. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  283. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  284. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  285. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  286. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  287. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  288. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  289. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  290. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  291. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  292. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  293. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  294. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  295. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  296. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  297. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  298. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  299. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  300. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  301. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  302. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  303. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  304. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  305. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  306. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  307. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  308. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  309. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  310. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  311. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  312. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  313. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  314. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  315. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  316. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  317. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  318. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  319. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  320. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  321. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  322. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  323. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  324. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  325. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  326. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  327. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  328. package/engine/object-data/entry/ability-type/web.lua +52 -0
  329. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  330. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  331. package/engine/object-data/entry/ability-type.d.ts +36 -19
  332. package/engine/object-data/entry/ability-type.lua +314 -40
  333. package/engine/object-data/entry/buff-type/applicable.lua +122 -137
  334. package/engine/object-data/entry/buff-type.d.ts +10 -12
  335. package/engine/object-data/entry/buff-type.lua +39 -29
  336. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  337. package/engine/object-data/entry/destructible-type.lua +181 -0
  338. package/engine/object-data/entry/item-type.d.ts +32 -3
  339. package/engine/object-data/entry/item-type.lua +177 -2
  340. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  341. package/engine/object-data/entry/lightning-type.lua +1 -1
  342. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  343. package/engine/object-data/entry/sound-preset.lua +140 -0
  344. package/engine/object-data/entry/unit-type.d.ts +71 -6
  345. package/engine/object-data/entry/unit-type.lua +592 -93
  346. package/engine/object-data/entry/upgrade.d.ts +2 -2
  347. package/engine/object-data/entry/upgrade.lua +4 -4
  348. package/engine/object-data/entry.d.ts +21 -14
  349. package/engine/object-data/entry.lua +68 -32
  350. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  351. package/engine/object-field/ability.d.ts +28 -5
  352. package/engine/object-field/ability.lua +61 -7
  353. package/engine/object-field/item.d.ts +22 -0
  354. package/engine/object-field/item.lua +118 -0
  355. package/engine/object-field/unit.d.ts +72 -3
  356. package/engine/object-field/unit.lua +268 -7
  357. package/engine/object-field.d.ts +26 -7
  358. package/engine/object-field.lua +362 -117
  359. package/engine/random.d.ts +10 -0
  360. package/engine/random.lua +21 -0
  361. package/engine/standard/entries/ability-type.d.ts +3102 -7
  362. package/engine/standard/entries/ability-type.lua +0 -6
  363. package/engine/standard/entries/buff-type.d.ts +3 -0
  364. package/engine/standard/entries/buff-type.lua +3 -0
  365. package/engine/standard/entries/item-type.d.ts +1299 -0
  366. package/engine/standard/entries/item-type.lua +2 -0
  367. package/engine/standard/entries/lightning-type.d.ts +42 -15
  368. package/engine/standard/entries/lightning-type.lua +0 -14
  369. package/engine/standard/entries/sound-preset.d.ts +10 -0
  370. package/engine/standard/entries/sound-preset.lua +10 -0
  371. package/engine/standard/entries/unit-type.d.ts +5 -0
  372. package/engine/standard/entries/unit-type.lua +5 -0
  373. package/engine/standard/fields/ability.d.ts +4 -2
  374. package/engine/standard/fields/ability.lua +4 -2
  375. package/engine/standard/fields/item.d.ts +4 -0
  376. package/engine/standard/fields/item.lua +6 -0
  377. package/engine/standard/fields/unit.d.ts +12 -0
  378. package/engine/standard/fields/unit.lua +20 -0
  379. package/engine/synchronization.d.ts +11 -0
  380. package/engine/synchronization.lua +77 -0
  381. package/engine/text-tag.d.ts +36 -2
  382. package/engine/text-tag.lua +250 -10
  383. package/engine/unit.d.ts +13 -0
  384. package/engine/unit.lua +13 -0
  385. package/event.d.ts +1 -1
  386. package/index.d.ts +1 -0
  387. package/index.lua +1 -0
  388. package/lualib_bundle.lua +1 -1
  389. package/math.d.ts +2 -0
  390. package/math.lua +14 -0
  391. package/net/socket.d.ts +7 -1
  392. package/net/socket.lua +45 -4
  393. package/network.d.ts +1 -0
  394. package/network.lua +28 -3
  395. package/objutil/buff.lua +13 -12
  396. package/objutil/object.lua +1 -1
  397. package/objutil/unit.lua +8 -0
  398. package/operation.d.ts +8 -1
  399. package/operation.lua +38 -18
  400. package/package.json +3 -23
  401. package/patch-lua.d.ts +0 -0
  402. package/patch-lua.lua +25 -0
  403. package/patch-lualib.lua +1 -1
  404. package/utility/arrays.d.ts +10 -1
  405. package/utility/arrays.lua +45 -3
  406. package/utility/callback-array.d.ts +17 -0
  407. package/utility/callback-array.lua +61 -0
  408. package/utility/functions.d.ts +8 -0
  409. package/utility/functions.lua +13 -0
  410. package/utility/lazy.d.ts +2 -0
  411. package/utility/lazy.lua +14 -0
  412. package/utility/linked-map.d.ts +35 -0
  413. package/utility/linked-map.lua +107 -0
  414. package/utility/linked-set.d.ts +16 -3
  415. package/utility/linked-set.lua +54 -3
  416. package/utility/lua-maps.d.ts +15 -2
  417. package/utility/lua-maps.lua +53 -2
  418. package/utility/lua-sets.d.ts +2 -0
  419. package/utility/lua-sets.lua +7 -0
  420. package/utility/random.d.ts +102 -0
  421. package/utility/random.lua +273 -0
  422. package/utility/records.lua +20 -1
  423. package/utility/reflection.lua +11 -7
  424. package/utility/types.d.ts +4 -0
  425. package/utility/unordered-map.d.ts +27 -0
  426. package/utility/unordered-map.lua +99 -0
  427. package/core/types/order.d.ts +0 -25
  428. package/core/types/order.lua +0 -55
  429. /package/engine/internal/{object-data/armor-increase.d.ts → misc/ability-disable-counter.d.ts} +0 -0
  430. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  431. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  432. /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
@@ -122,6 +141,80 @@ do
122
141
  FramePoint.BOTTOM = FRAMEPOINT_BOTTOM
123
142
  FramePoint.BOTTOM_RIGHT = FRAMEPOINT_BOTTOMRIGHT
124
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
125
218
  ____exports.Frame = __TS__Class()
126
219
  local Frame = ____exports.Frame
127
220
  Frame.name = "Frame"
@@ -154,6 +247,18 @@ function Frame.prototype.getEvent(self, eventType, c)
154
247
  end
155
248
  return self.events[eventId]
156
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
157
262
  function Frame.prototype.hide(self)
158
263
  self.hideCounter = self.hideCounter + 1
159
264
  if self.hideCounter > 0 then
@@ -242,6 +347,7 @@ function Frame.prototype.setTextColor(self, color)
242
347
  end
243
348
  function Frame.prototype.setTooltip(self, tooltip)
244
349
  BlzFrameSetTooltip(self.handle, tooltip.handle)
350
+ tooltipByFrame[self] = tooltip
245
351
  end
246
352
  function Frame.prototype.setMinMaxValue(self, minValue, maxValue)
247
353
  BlzFrameSetMinMaxValue(self.handle, minValue, maxValue)
@@ -269,7 +375,16 @@ function Frame.createSimple(self, name, parent, createContext)
269
375
  ))
270
376
  end
271
377
  function Frame.create(self, name, parent, priority, createContext)
272
- 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
273
388
  end
274
389
  function Frame.createByType(self, typeName, name, parent, inherits, createContext)
275
390
  return self:of(BlzCreateFrameByType(
@@ -290,16 +405,35 @@ function Frame.byOrigin(self, frameType, index)
290
405
  if index == nil then
291
406
  index = 0
292
407
  end
293
- 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)
294
419
  end
295
420
  Frame.GAME_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_GAME_UI)
296
421
  Frame.CONSOLE_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_SIMPLE_UI_PARENT)
297
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)
298
424
  Frame.CONSOLE_TOP_BAR = ____exports.Frame:byName("ConsoleTopBar")
299
425
  Frame.CONSOLE_BOTTOM_BAR = ____exports.Frame:byName("ConsoleBottomBar")
300
426
  Frame.WORLD = ____exports.Frame:byOrigin(ORIGIN_FRAME_WORLD_FRAME)
301
427
  Frame.CHAT = ____exports.Frame:byOrigin(ORIGIN_FRAME_CHAT_MSG)
302
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
+ )
303
437
  __TS__ObjectDefineProperty(
304
438
  Frame,
305
439
  "leftBorder",
@@ -324,27 +458,21 @@ __TS__ObjectDefineProperty(
324
458
  Frame,
325
459
  "minX",
326
460
  {get = function(self)
327
- local w = BlzGetLocalClientWidth()
328
- local h = BlzGetLocalClientHeight()
329
- local width4by3 = (w - h / 600 * 800) / 2
330
- local pxtodpi = 0.6 / h
331
- return -width4by3 * pxtodpi
461
+ local minX = getFrameMinXMaxX()
462
+ return minX
332
463
  end}
333
464
  )
334
465
  __TS__ObjectDefineProperty(
335
466
  Frame,
336
467
  "maxX",
337
468
  {get = function(self)
338
- local w = BlzGetLocalClientWidth()
339
- local h = BlzGetLocalClientHeight()
340
- local width4by3 = (w - h / 600 * 800) / 2
341
- local pxtodpi = 0.6 / h
342
- return (-width4by3 + w) * pxtodpi
469
+ local ____, maxX = getFrameMinXMaxX()
470
+ return maxX
343
471
  end}
344
472
  )
345
473
  Frame.centerX = 0.4
346
- Frame.minY = 0
347
- Frame.maxY = 0.6
474
+ Frame.minY = FRAME_MIN_Y
475
+ Frame.maxY = FRAME_MAX_Y
348
476
  Frame.centerY = 0.3
349
477
  __TS__SetDescriptor(
350
478
  Frame.prototype,
@@ -601,6 +729,30 @@ __TS__SetDescriptor(
601
729
  end},
602
730
  true
603
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
+ )
604
756
  __TS__SetDescriptor(
605
757
  Frame.prototype,
606
758
  "popupMenuItemChangeEvent",
@@ -703,6 +855,18 @@ __TS__SetDescriptor(
703
855
  end},
704
856
  true
705
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
+ )
706
870
  __TS__ObjectDefineProperty(
707
871
  Frame,
708
872
  "onKeyPress",
@@ -850,16 +1014,19 @@ __TS__ObjectDefineProperty(
850
1014
  local event = __TS__New(Event)
851
1015
  local syncX = 0
852
1016
  local syncY = 0
853
- local syncCamX = getCameraTargetPositionX()
854
- local syncCamY = getCameraTargetPositionY()
1017
+ local syncFrameX = 0
1018
+ local syncFrameY = 0
855
1019
  local lastX = syncX
856
1020
  local lastY = syncY
857
1021
  self.onMouseMove:addListener(function(player, x, y)
858
1022
  if player.isLocal then
859
1023
  syncX = x
860
1024
  syncY = y
861
- syncCamX = getCameraTargetPositionX()
862
- syncCamY = getCameraTargetPositionY()
1025
+ syncFrameX, syncFrameY = worldCoordinatesToFrame(
1026
+ x,
1027
+ y,
1028
+ getTerrainZ(x, y)
1029
+ )
863
1030
  lastX = x
864
1031
  lastY = y
865
1032
  invoke(event, x, y)
@@ -869,9 +1036,8 @@ __TS__ObjectDefineProperty(
869
1036
  if syncX == 0 and syncY == 0 then
870
1037
  return
871
1038
  end
872
- local x = syncX + (getCameraTargetPositionX() - syncCamX)
873
- local y = syncY + (getCameraTargetPositionY() - syncCamY)
874
- 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
875
1041
  lastX = x
876
1042
  lastY = y
877
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 {};
@@ -1,7 +1,7 @@
1
1
  local ____lualib = require("lualib_bundle")
2
+ local __TS__New = ____lualib.__TS__New
2
3
  local __TS__Class = ____lualib.__TS__Class
3
4
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
- local __TS__New = ____lualib.__TS__New
5
5
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
6
6
  local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
7
7
  local ____exports = {}
@@ -21,20 +21,43 @@ local ____exception = require("exception")
21
21
  local IllegalStateException = ____exception.IllegalStateException
22
22
  local ____math = require("math")
23
23
  local MAXIMUM_INTEGER = ____math.MAXIMUM_INTEGER
24
+ local ____player_2Dlocal_2Dhandle = require("engine.internal.misc.player-local-handle")
25
+ local PLAYER_LOCAL_HANDLE = ____player_2Dlocal_2Dhandle.PLAYER_LOCAL_HANDLE
26
+ local ____lazy = require("utility.lazy")
27
+ local lazyRecord = ____lazy.lazyRecord
28
+ local getPlayerAlliance = GetPlayerAlliance
24
29
  local getPlayerColor = GetPlayerColor
25
30
  local getPlayerName = GetPlayerName
26
31
  local getPlayerTechCount = GetPlayerTechCount
27
32
  local getPlayerTechMaxAllowed = GetPlayerTechMaxAllowed
33
+ local getTriggerPlayer = GetTriggerPlayer
34
+ local playerNative = _G.Player
35
+ local setPlayerAbilityAvailable = SetPlayerAbilityAvailable
36
+ local setPlayerAlliance = SetPlayerAlliance
37
+ local setPlayerRaceSkin = SetPlayerRaceSkin
28
38
  local setPlayerTechMaxAllowed = SetPlayerTechMaxAllowed
29
39
  local setPlayerTechResearched = SetPlayerTechResearched
30
- local setPlayerAbilityAvailable = SetPlayerAbilityAvailable
31
- local playerNative = _G.Player
40
+ local triggerRegisterPlayerAllianceChange = TriggerRegisterPlayerAllianceChange
41
+ local nativeByPlayerAllianceType = {
42
+ [0] = ALLIANCE_PASSIVE,
43
+ [1] = ALLIANCE_RESCUABLE,
44
+ [2] = ALLIANCE_HELP_REQUEST,
45
+ [3] = ALLIANCE_HELP_RESPONSE,
46
+ [4] = ALLIANCE_SHARED_XP,
47
+ [5] = ALLIANCE_SHARED_SPELLS,
48
+ [6] = ALLIANCE_SHARED_VISION,
49
+ [7] = ALLIANCE_SHARED_VISION_FORCED,
50
+ [8] = ALLIANCE_SHARED_CONTROL,
51
+ [9] = ALLIANCE_SHARED_ADVANCED_CONTROL
52
+ }
53
+ local playerColorChangedEvent = __TS__New(Event)
32
54
  ____exports.Player = __TS__Class()
33
55
  local Player = ____exports.Player
34
56
  Player.name = "Player"
35
57
  __TS__ClassExtends(Player, Handle)
36
58
  function Player.prototype.____constructor(self, handle)
37
59
  Handle.prototype.____constructor(self, handle)
60
+ self.slotState = GetPlayerSlotState(self.handle)
38
61
  self.id = GetPlayerId(handle)
39
62
  end
40
63
  function Player.prototype.onDestroy(self)
@@ -67,6 +90,9 @@ function Player.prototype.deselect(self, unit)
67
90
  SelectUnit(unit.handle, false)
68
91
  end
69
92
  end
93
+ function Player.prototype.setRaceSkin(self, racePreference)
94
+ setPlayerRaceSkin(self.handle, racePreference)
95
+ end
70
96
  function Player.prototype.forceUIKey(self, key)
71
97
  if self.isLocal then
72
98
  ForceUIKey(key)
@@ -83,6 +109,12 @@ end
83
109
  function Player.prototype.isEnemyOf(self, other)
84
110
  return IsPlayerEnemy(self.handle, other.handle)
85
111
  end
112
+ function Player.prototype.setAlliance(self, other, ____type, value)
113
+ setPlayerAlliance(self.handle, other.handle, nativeByPlayerAllianceType[____type], value)
114
+ end
115
+ function Player.prototype.getAlliance(self, other, ____type)
116
+ return getPlayerAlliance(self.handle, other.handle, nativeByPlayerAllianceType[____type])
117
+ end
86
118
  function Player.prototype.setAbilityAvailable(self, abilityId, available)
87
119
  setPlayerAbilityAvailable(self.handle, abilityId, available)
88
120
  end
@@ -122,14 +154,11 @@ function Player.getMouseEvent(self, event, collector)
122
154
  self.events[eventId] = __TS__New(
123
155
  TriggerEvent,
124
156
  function(trigger)
125
- Timer:simple(
126
- 0,
127
- function()
128
- for ____, player in ipairs(____exports.Player.all) do
129
- TriggerRegisterPlayerEvent(trigger, player.handle, event)
130
- end
157
+ Timer:run(function()
158
+ for ____, player in ipairs(____exports.Player.all) do
159
+ TriggerRegisterPlayerEvent(trigger, player.handle, event)
131
160
  end
132
- )
161
+ end)
133
162
  end,
134
163
  collector or (function() return {} end)
135
164
  )
@@ -178,7 +207,7 @@ function Player.getKeyEvent(self, isDown)
178
207
  TriggerAddCondition(
179
208
  trigger,
180
209
  Condition(function()
181
- local player = ____exports.Player:of(GetTriggerPlayer())
210
+ local player = ____exports.Player:of(getTriggerPlayer())
182
211
  local key = BlzGetTriggerPlayerKey()
183
212
  local metaKey = BlzGetTriggerPlayerMetaKey()
184
213
  Event.invoke(event, player, key, metaKey)
@@ -249,7 +278,7 @@ Player.all = (function()
249
278
  end
250
279
  return all
251
280
  end)()
252
- Player["local"] = ____exports.Player:of(GetLocalPlayer())
281
+ Player["local"] = ____exports.Player:of(PLAYER_LOCAL_HANDLE)
253
282
  Player.neutralPassive = ____exports.Player.all[PLAYER_NEUTRAL_PASSIVE + 1]
254
283
  Player.neutralAggressive = ____exports.Player.all[PLAYER_NEUTRAL_AGGRESSIVE + 1]
255
284
  Player.neutralVictim = ____exports.Player.all[bj_PLAYER_NEUTRAL_VICTIM + 1]
@@ -277,6 +306,7 @@ __TS__SetDescriptor(
277
306
  end,
278
307
  set = function(self, color)
279
308
  SetPlayerColor(self.handle, color.handle)
309
+ Event.invoke(playerColorChangedEvent, self)
280
310
  end
281
311
  },
282
312
  true
@@ -339,7 +369,7 @@ __TS__SetDescriptor(
339
369
  Player.prototype,
340
370
  "isUser",
341
371
  {get = function(self)
342
- return GetPlayerController(self.handle) == MAP_CONTROL_USER
372
+ return self.controller == MAP_CONTROL_USER
343
373
  end},
344
374
  true
345
375
  )
@@ -347,7 +377,7 @@ __TS__SetDescriptor(
347
377
  Player.prototype,
348
378
  "isPlaying",
349
379
  {get = function(self)
350
- return GetPlayerSlotState(self.handle) == PLAYER_SLOT_STATE_PLAYING
380
+ return self.slotState == PLAYER_SLOT_STATE_PLAYING
351
381
  end},
352
382
  true
353
383
  )
@@ -355,17 +385,30 @@ __TS__SetDescriptor(
355
385
  Player.prototype,
356
386
  "controller",
357
387
  {get = function(self)
358
- return GetPlayerController(self.handle)
388
+ local controller = GetPlayerController(self.handle)
389
+ rawset(self, "controller", controller)
390
+ return controller
359
391
  end},
360
392
  true
361
393
  )
362
- __TS__SetDescriptor(
363
- Player.prototype,
364
- "slotState",
394
+ __TS__ObjectDefineProperty(
395
+ Player,
396
+ "allianceChangedEvent",
365
397
  {get = function(self)
366
- return GetPlayerSlotState(self.handle)
367
- end},
368
- true
398
+ local event = lazyRecord(function(____type)
399
+ return __TS__New(
400
+ TriggerEvent,
401
+ function(trigger)
402
+ for ____, player in ipairs(____exports.Player.all) do
403
+ triggerRegisterPlayerAllianceChange(trigger, player.handle, nativeByPlayerAllianceType[____type])
404
+ end
405
+ end,
406
+ function() return ____exports.Player:of(getTriggerPlayer()) end
407
+ )
408
+ end)
409
+ rawset(self, "allianceChangedEvent", event)
410
+ return event
411
+ end}
369
412
  )
370
413
  __TS__ObjectDefineProperty(
371
414
  Player,
@@ -373,7 +416,7 @@ __TS__ObjectDefineProperty(
373
416
  {get = function(self)
374
417
  return ____exports.Player:getEvent(
375
418
  EVENT_PLAYER_LEAVE,
376
- function() return ____exports.Player:of(GetTriggerPlayer()) end
419
+ function() return ____exports.Player:of(getTriggerPlayer()) end
377
420
  )
378
421
  end}
379
422
  )
@@ -383,7 +426,7 @@ __TS__ObjectDefineProperty(
383
426
  {get = function(self)
384
427
  return ____exports.Player:getMouseEvent(
385
428
  EVENT_PLAYER_MOUSE_DOWN,
386
- function() return ____exports.Player:of(GetTriggerPlayer()), BlzGetTriggerPlayerMouseButton() end
429
+ function() return ____exports.Player:of(getTriggerPlayer()), BlzGetTriggerPlayerMouseButton() end
387
430
  )
388
431
  end}
389
432
  )
@@ -393,7 +436,7 @@ __TS__ObjectDefineProperty(
393
436
  {get = function(self)
394
437
  return ____exports.Player:getMouseEvent(
395
438
  EVENT_PLAYER_MOUSE_UP,
396
- function() return ____exports.Player:of(GetTriggerPlayer()), BlzGetTriggerPlayerMouseButton() end
439
+ function() return ____exports.Player:of(getTriggerPlayer()), BlzGetTriggerPlayerMouseButton() end
397
440
  )
398
441
  end}
399
442
  )
@@ -403,7 +446,7 @@ __TS__ObjectDefineProperty(
403
446
  {get = function(self)
404
447
  return ____exports.Player:getMouseEvent(
405
448
  EVENT_PLAYER_MOUSE_MOVE,
406
- function() return ____exports.Player:of(GetTriggerPlayer()), vec2(
449
+ function() return ____exports.Player:of(getTriggerPlayer()), vec2(
407
450
  BlzGetTriggerPlayerMouseX(),
408
451
  BlzGetTriggerPlayerMouseY()
409
452
  ) end
@@ -439,10 +482,17 @@ __TS__ObjectDefineProperty(
439
482
  TriggerRegisterPlayerChatEvent(trigger, player.handle, "", false)
440
483
  end
441
484
  end,
442
- function() return ____exports.Player:of(GetTriggerPlayer()), GetEventPlayerChatString() end
485
+ function() return ____exports.Player:of(getTriggerPlayer()), GetEventPlayerChatString() end
443
486
  )
444
487
  rawset(self, "onChat", event)
445
488
  return event
446
489
  end}
447
490
  )
491
+ Player.colorChangedEvent = playerColorChangedEvent
492
+ ____exports.Player.onLeave:addListener(
493
+ 999999,
494
+ function(player)
495
+ rawset(player, "slotState", PLAYER_SLOT_STATE_LEFT)
496
+ end
497
+ )
448
498
  return ____exports
@@ -1,4 +1,5 @@
1
1
  /** @noSelfInFile */
2
+ import type { Unit } from "../../engine/internal/unit";
2
3
  export declare class PlayerCamera {
3
4
  private readonly player;
4
5
  private readonly isLocal;
@@ -28,5 +29,6 @@ export declare class PlayerCamera {
28
29
  get roll(): number;
29
30
  set roll(v: number);
30
31
  reset(): void;
32
+ static isUnitInView(unit: Unit): boolean;
31
33
  static of(player: jplayer): PlayerCamera;
32
34
  }