warscript 0.0.1-dev.4381d09 → 0.0.1-dev.43d3477

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