warscript 0.0.1-dev.0a43a35 → 0.0.1-dev.0aa6f08

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 (457) hide show
  1. package/attributes.d.ts +6 -0
  2. package/attributes.lua +17 -1
  3. package/binaryreader.d.ts +1 -0
  4. package/binaryreader.lua +3 -0
  5. package/config.d.ts +5 -0
  6. package/config.lua +10 -0
  7. package/core/dummy.lua +4 -2
  8. package/core/types/effect.d.ts +24 -6
  9. package/core/types/effect.lua +169 -107
  10. package/core/types/frame.d.ts +24 -2
  11. package/core/types/frame.lua +198 -42
  12. package/core/types/handle.lua +9 -9
  13. package/core/types/item.d.ts +1 -0
  14. package/core/types/item.lua +1 -0
  15. package/core/types/player.d.ts +18 -1
  16. package/core/types/player.lua +76 -26
  17. package/core/types/playerCamera.d.ts +2 -0
  18. package/core/types/playerCamera.lua +123 -5
  19. package/core/types/playerColor.lua +4 -3
  20. package/core/types/sound.d.ts +18 -25
  21. package/core/types/sound.lua +113 -33
  22. package/core/types/tileCell.d.ts +18 -3
  23. package/core/types/tileCell.lua +108 -0
  24. package/core/types/timer.d.ts +9 -8
  25. package/core/types/timer.lua +45 -23
  26. package/core/types/unit.d.ts +5 -0
  27. package/core/types/unit.lua +5 -0
  28. package/core/util.d.ts +3 -1
  29. package/core/util.lua +127 -4
  30. package/decl/native.d.ts +1718 -964
  31. package/destroyable.d.ts +1 -0
  32. package/destroyable.lua +9 -0
  33. package/engine/behavior.d.ts +16 -3
  34. package/engine/behavior.lua +233 -73
  35. package/engine/behaviour/ability/always-enabled.d.ts +7 -0
  36. package/engine/behaviour/ability/always-enabled.lua +31 -0
  37. package/engine/behaviour/ability/apply-buff.d.ts +8 -5
  38. package/engine/behaviour/ability/apply-buff.lua +36 -4
  39. package/engine/behaviour/ability/apply-unit-behavior.lua +6 -0
  40. package/engine/behaviour/ability/damage.d.ts +43 -11
  41. package/engine/behaviour/ability/damage.lua +89 -39
  42. package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
  43. package/engine/behaviour/ability/emulate-impact.lua +44 -0
  44. package/engine/behaviour/ability/heal.d.ts +33 -6
  45. package/engine/behaviour/ability/heal.lua +89 -10
  46. package/engine/behaviour/ability/instant-impact.d.ts +2 -2
  47. package/engine/behaviour/ability/instant-impact.lua +4 -19
  48. package/engine/behaviour/ability/on-command-impact.d.ts +9 -0
  49. package/engine/behaviour/ability/on-command-impact.lua +26 -0
  50. package/engine/behaviour/ability/remove-buffs.d.ts +25 -0
  51. package/engine/behaviour/ability/remove-buffs.lua +49 -0
  52. package/engine/behaviour/ability/restore-mana.d.ts +15 -0
  53. package/engine/behaviour/ability/restore-mana.lua +29 -0
  54. package/engine/behaviour/ability.d.ts +30 -7
  55. package/engine/behaviour/ability.lua +162 -43
  56. package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
  57. package/engine/behaviour/unit/stun-immunity.lua +57 -31
  58. package/engine/behaviour/unit.d.ts +46 -2
  59. package/engine/behaviour/unit.lua +290 -6
  60. package/engine/buff.d.ts +166 -57
  61. package/engine/buff.lua +766 -274
  62. package/engine/game-map.d.ts +7 -0
  63. package/engine/game-map.lua +32 -0
  64. package/engine/index.d.ts +2 -1
  65. package/engine/internal/ability.d.ts +30 -14
  66. package/engine/internal/ability.lua +177 -104
  67. package/engine/internal/item/ability.lua +162 -4
  68. package/engine/internal/item/fields.d.ts +12 -0
  69. package/engine/internal/item/fields.lua +33 -0
  70. package/engine/internal/item/owner-cache.d.ts +5 -0
  71. package/engine/internal/item/owner-cache.lua +4 -0
  72. package/engine/internal/item+owner.d.ts +2 -0
  73. package/engine/internal/item+owner.lua +37 -8
  74. package/engine/internal/item.d.ts +34 -18
  75. package/engine/internal/item.lua +308 -102
  76. package/engine/internal/mechanics/ability-duration.lua +1 -1
  77. package/engine/internal/mechanics/cast-ability.lua +6 -3
  78. package/engine/internal/misc/ability-disable-counter.lua +13 -0
  79. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  80. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  81. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  82. package/engine/internal/misc/frame-coordinates.lua +21 -0
  83. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  84. package/engine/internal/misc/get-terrain-z.lua +11 -0
  85. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  86. package/engine/internal/misc/player-local-handle.lua +5 -0
  87. package/engine/internal/misc/unit-ability-level-natives.d.ts +2 -0
  88. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  89. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  90. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  91. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  92. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  93. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  94. package/engine/internal/object-data/evasion-probability.lua +16 -0
  95. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  96. package/engine/internal/object-data/health-bonus.lua +16 -0
  97. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  98. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  99. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  100. package/engine/internal/object-data/mana-bonus.lua +16 -0
  101. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  102. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  103. package/engine/internal/unit/ability.d.ts +45 -1
  104. package/engine/internal/unit/ability.lua +142 -19
  105. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  106. package/engine/internal/unit/add-item-to-slot-init.lua +12 -0
  107. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  108. package/engine/internal/unit/add-item-to-slot.lua +93 -0
  109. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  110. package/engine/internal/unit/allowed-targets.lua +9 -1
  111. package/engine/internal/unit/appearance.d.ts +15 -0
  112. package/engine/internal/unit/appearance.lua +85 -0
  113. package/engine/internal/unit/attributes.d.ts +17 -0
  114. package/engine/internal/unit/attributes.lua +46 -0
  115. package/engine/internal/unit/bonus.d.ts +20 -2
  116. package/engine/internal/unit/bonus.lua +125 -9
  117. package/engine/internal/unit/buff.d.ts +2 -2
  118. package/engine/internal/unit/buff.lua +34 -19
  119. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  120. package/engine/internal/unit/equipment-inventory.lua +233 -0
  121. package/engine/internal/unit/expiration-timer.lua +1 -1
  122. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  123. package/engine/internal/unit/extended-inventory.lua +99 -0
  124. package/engine/internal/unit/fly-height.d.ts +7 -0
  125. package/engine/internal/unit/fly-height.lua +20 -0
  126. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  127. package/engine/internal/unit/ignore-events-items.lua +14 -0
  128. package/engine/internal/unit/interrupts.d.ts +12 -0
  129. package/engine/internal/unit/interrupts.lua +28 -0
  130. package/engine/internal/unit/inventory.d.ts +28 -0
  131. package/engine/internal/unit/inventory.lua +87 -0
  132. package/engine/internal/unit/item-container.d.ts +25 -0
  133. package/engine/internal/unit/item-container.lua +11 -0
  134. package/engine/internal/unit/item-order-events.d.ts +17 -0
  135. package/engine/internal/unit/item-order-events.lua +67 -0
  136. package/engine/internal/unit/item-slot.d.ts +27 -0
  137. package/engine/internal/unit/item-slot.lua +92 -0
  138. package/engine/internal/unit/main-selected.d.ts +13 -0
  139. package/engine/internal/unit/main-selected.lua +36 -0
  140. package/engine/internal/unit/order.d.ts +20 -0
  141. package/engine/internal/unit/order.lua +136 -0
  142. package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
  143. package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
  144. package/engine/internal/unit/range-event.d.ts +12 -0
  145. package/engine/internal/unit/range-event.lua +90 -0
  146. package/engine/internal/unit/scale.d.ts +7 -0
  147. package/engine/internal/unit/scale.lua +20 -0
  148. package/engine/internal/unit+ability.d.ts +2 -1
  149. package/engine/internal/unit+ability.lua +75 -5
  150. package/engine/internal/unit+bonus.lua +3 -3
  151. package/engine/internal/unit+damage.d.ts +11 -11
  152. package/engine/internal/unit+damage.lua +43 -14
  153. package/engine/internal/unit+rally.lua +9 -31
  154. package/engine/internal/unit+spellSteal.lua +1 -2
  155. package/engine/internal/unit+transport.lua +4 -10
  156. package/engine/internal/unit-missile-data.lua +58 -32
  157. package/engine/internal/unit-missile-launch.lua +70 -13
  158. package/engine/internal/unit.d.ts +58 -32
  159. package/engine/internal/unit.lua +468 -310
  160. package/engine/internal/utility.lua +12 -0
  161. package/engine/lightning.d.ts +12 -5
  162. package/engine/lightning.lua +48 -14
  163. package/engine/local-client.d.ts +35 -2
  164. package/engine/local-client.lua +367 -15
  165. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  166. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  167. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  168. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  169. package/engine/object-data/auxiliary/attachment-preset.d.ts +14 -2
  170. package/engine/object-data/auxiliary/attachment-preset.lua +11 -3
  171. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  172. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  173. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  174. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  175. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  176. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  177. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  178. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  179. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  180. package/engine/object-data/auxiliary/item-class.lua +2 -0
  181. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  182. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  183. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  184. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  185. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  186. package/engine/object-data/auxiliary/order-type.lua +2 -0
  187. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  188. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  189. package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
  190. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  191. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  192. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  193. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  194. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  195. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  196. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  197. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  198. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  199. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  200. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  201. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  202. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  203. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  204. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  205. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  206. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  207. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  208. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  209. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  210. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
  211. package/engine/object-data/entry/ability-type/blank-configurable.lua +42 -1
  212. package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -0
  213. package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
  214. package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
  215. package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
  216. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  217. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  218. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  219. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  220. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  221. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  222. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  223. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  224. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  225. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  226. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  227. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  228. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  229. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  230. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  231. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  232. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  233. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  234. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  235. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  236. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  237. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  238. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  239. package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
  240. package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
  241. package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
  242. package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
  243. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  244. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  245. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  246. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  247. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  248. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  249. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  250. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  251. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  252. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  253. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  254. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  255. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  256. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  257. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  258. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  259. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  260. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  261. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  262. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  263. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  264. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  265. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  266. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  267. package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
  268. package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
  269. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  270. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  271. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  272. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  273. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  274. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  275. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  276. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  277. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  278. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  279. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  280. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  281. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  282. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  283. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  284. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  285. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  286. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  287. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  288. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  289. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  290. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  291. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  292. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  293. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  294. package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
  295. package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
  296. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  297. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  298. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  299. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  300. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  301. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  302. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  303. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  304. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  305. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  306. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  307. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  308. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  309. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  310. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  311. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  312. package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
  313. package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
  314. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  315. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  316. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  317. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  318. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  319. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  320. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  321. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  322. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  323. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  324. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  325. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  326. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  327. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  328. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  329. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  330. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  331. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  332. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  333. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  334. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  335. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  336. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  337. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  338. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  339. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  340. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  341. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  342. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  343. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  344. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  345. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  346. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  347. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  348. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  349. package/engine/object-data/entry/ability-type/web.lua +52 -0
  350. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  351. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  352. package/engine/object-data/entry/ability-type.d.ts +41 -20
  353. package/engine/object-data/entry/ability-type.lua +337 -44
  354. package/engine/object-data/entry/buff-type/applicable.lua +122 -137
  355. package/engine/object-data/entry/buff-type.d.ts +10 -12
  356. package/engine/object-data/entry/buff-type.lua +39 -29
  357. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  358. package/engine/object-data/entry/destructible-type.lua +181 -0
  359. package/engine/object-data/entry/item-type.d.ts +32 -3
  360. package/engine/object-data/entry/item-type.lua +177 -2
  361. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  362. package/engine/object-data/entry/lightning-type.lua +1 -1
  363. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  364. package/engine/object-data/entry/sound-preset.lua +140 -0
  365. package/engine/object-data/entry/unit-type.d.ts +71 -6
  366. package/engine/object-data/entry/unit-type.lua +592 -93
  367. package/engine/object-data/entry/upgrade.d.ts +2 -2
  368. package/engine/object-data/entry/upgrade.lua +4 -4
  369. package/engine/object-data/entry.d.ts +21 -14
  370. package/engine/object-data/entry.lua +68 -32
  371. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  372. package/engine/object-field/ability.d.ts +28 -5
  373. package/engine/object-field/ability.lua +61 -7
  374. package/engine/object-field/item.d.ts +22 -0
  375. package/engine/object-field/item.lua +118 -0
  376. package/engine/object-field/unit.d.ts +72 -3
  377. package/engine/object-field/unit.lua +268 -7
  378. package/engine/object-field.d.ts +26 -7
  379. package/engine/object-field.lua +362 -117
  380. package/engine/random.d.ts +10 -0
  381. package/engine/random.lua +21 -0
  382. package/engine/standard/entries/ability-type.d.ts +3102 -7
  383. package/engine/standard/entries/ability-type.lua +0 -6
  384. package/engine/standard/entries/buff-type.d.ts +48 -0
  385. package/engine/standard/entries/buff-type.lua +46 -0
  386. package/engine/standard/entries/item-type.d.ts +1299 -0
  387. package/engine/standard/entries/item-type.lua +2 -0
  388. package/engine/standard/entries/lightning-type.d.ts +42 -15
  389. package/engine/standard/entries/lightning-type.lua +0 -14
  390. package/engine/standard/entries/sound-preset.d.ts +10 -0
  391. package/engine/standard/entries/sound-preset.lua +10 -0
  392. package/engine/standard/entries/unit-type.d.ts +5 -0
  393. package/engine/standard/entries/unit-type.lua +5 -0
  394. package/engine/standard/fields/ability.d.ts +4 -2
  395. package/engine/standard/fields/ability.lua +4 -2
  396. package/engine/standard/fields/item.d.ts +4 -0
  397. package/engine/standard/fields/item.lua +6 -0
  398. package/engine/standard/fields/unit.d.ts +12 -0
  399. package/engine/standard/fields/unit.lua +20 -0
  400. package/engine/synchronization.d.ts +11 -0
  401. package/engine/synchronization.lua +77 -0
  402. package/engine/text-tag.d.ts +36 -2
  403. package/engine/text-tag.lua +250 -10
  404. package/engine/unit.d.ts +13 -0
  405. package/engine/unit.lua +13 -0
  406. package/event.d.ts +1 -1
  407. package/index.d.ts +1 -0
  408. package/index.lua +1 -0
  409. package/lualib_bundle.lua +8 -3
  410. package/math.d.ts +2 -0
  411. package/math.lua +14 -0
  412. package/net/socket.d.ts +7 -1
  413. package/net/socket.lua +45 -4
  414. package/network.d.ts +1 -0
  415. package/network.lua +28 -3
  416. package/objutil/buff.lua +13 -12
  417. package/objutil/object.lua +1 -1
  418. package/objutil/unit.lua +8 -0
  419. package/operation.d.ts +8 -1
  420. package/operation.lua +38 -18
  421. package/package.json +3 -23
  422. package/patch-lua.d.ts +0 -0
  423. package/patch-lua.lua +25 -0
  424. package/patch-lualib.lua +1 -1
  425. package/property.d.ts +55 -0
  426. package/property.lua +374 -0
  427. package/utility/arrays.d.ts +17 -2
  428. package/utility/arrays.lua +62 -3
  429. package/utility/callback-array.d.ts +17 -0
  430. package/utility/callback-array.lua +61 -0
  431. package/utility/functions.d.ts +8 -0
  432. package/utility/functions.lua +13 -0
  433. package/utility/lazy.d.ts +2 -0
  434. package/utility/lazy.lua +14 -0
  435. package/utility/linked-map.d.ts +35 -0
  436. package/utility/linked-map.lua +107 -0
  437. package/utility/linked-set.d.ts +16 -3
  438. package/utility/linked-set.lua +54 -3
  439. package/utility/lua-maps.d.ts +15 -2
  440. package/utility/lua-maps.lua +53 -2
  441. package/utility/lua-sets.d.ts +2 -0
  442. package/utility/lua-sets.lua +7 -0
  443. package/utility/random.d.ts +102 -0
  444. package/utility/random.lua +273 -0
  445. package/utility/records.lua +20 -1
  446. package/utility/reflection.lua +11 -7
  447. package/utility/types.d.ts +4 -0
  448. package/utility/unordered-map.d.ts +27 -0
  449. package/utility/unordered-map.lua +99 -0
  450. package/core/mapbounds.d.ts +0 -8
  451. package/core/mapbounds.lua +0 -12
  452. package/core/types/order.d.ts +0 -25
  453. package/core/types/order.lua +0 -55
  454. /package/engine/internal/{object-data/armor-increase.d.ts → misc/ability-disable-counter.d.ts} +0 -0
  455. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  456. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  457. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
package/property.lua ADDED
@@ -0,0 +1,374 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__Class = ____lualib.__TS__Class
3
+ local __TS__New = ____lualib.__TS__New
4
+ local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
5
+ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
6
+ local ____exports = {}
7
+ local savePropertyValues
8
+ local ____binaryreader = require("binaryreader")
9
+ local BinaryReader = ____binaryreader.BinaryReader
10
+ local ____binarywriter = require("binarywriter")
11
+ local BinaryWriter = ____binarywriter.BinaryWriter
12
+ local ____player = require("core.types.player")
13
+ local Player = ____player.Player
14
+ local ____timer = require("core.types.timer")
15
+ local Timer = ____timer.Timer
16
+ local ____event = require("event")
17
+ local Event = ____event.Event
18
+ local file = require("file")
19
+ local ____network = require("network")
20
+ local synchronize = ____network.synchronize
21
+ local base64 = require("utility.base64")
22
+ local lzw = require("utility.lzw")
23
+ local ____preconditions = require("utility.preconditions")
24
+ local ____require = ____preconditions.require
25
+ local invoke = Event.invoke
26
+ ____exports.PersistentPropertiesConfig = __TS__Class()
27
+ local PersistentPropertiesConfig = ____exports.PersistentPropertiesConfig
28
+ PersistentPropertiesConfig.name = "PersistentPropertiesConfig"
29
+ function PersistentPropertiesConfig.prototype.____constructor(self)
30
+ end
31
+ PersistentPropertiesConfig.defaultFileName = ""
32
+ ____exports.Property = __TS__Class()
33
+ local Property = ____exports.Property
34
+ Property.name = "Property"
35
+ function Property.prototype.____constructor(self, defaultValue)
36
+ self.valueChangeEvent = __TS__New(Event)
37
+ self[0] = defaultValue
38
+ self[1] = defaultValue
39
+ end
40
+ function Property.prototype.reset(self)
41
+ if self[2] then
42
+ self[2] = nil
43
+ local defaultValue = self[0]
44
+ local oldValue = self[1]
45
+ if defaultValue ~= oldValue then
46
+ self[1] = defaultValue
47
+ invoke(self.valueChangeEvent, defaultValue, oldValue)
48
+ end
49
+ return true
50
+ end
51
+ return false
52
+ end
53
+ function Property.prototype.set(self, value)
54
+ self[2] = true
55
+ local oldValue = self[1]
56
+ self[1] = value
57
+ if value ~= oldValue then
58
+ invoke(self.valueChangeEvent, value, oldValue)
59
+ return true
60
+ end
61
+ return false
62
+ end
63
+ function Property.prototype.get(self)
64
+ return self[1]
65
+ end
66
+ __TS__SetDescriptor(
67
+ Property.prototype,
68
+ "defaultValue",
69
+ {
70
+ get = function(self)
71
+ return self[0]
72
+ end,
73
+ set = function(self, defaultValue)
74
+ local oldDefaultValue = self[0]
75
+ if defaultValue ~= oldDefaultValue then
76
+ self[0] = defaultValue
77
+ if not self[2] then
78
+ self[1] = defaultValue
79
+ invoke(self.valueChangeEvent, defaultValue, oldDefaultValue)
80
+ end
81
+ end
82
+ end
83
+ },
84
+ true
85
+ )
86
+ __TS__SetDescriptor(
87
+ Property.prototype,
88
+ "value",
89
+ {
90
+ get = function(self)
91
+ return self:get()
92
+ end,
93
+ set = function(self, value)
94
+ self:set(value)
95
+ end
96
+ },
97
+ true
98
+ )
99
+ __TS__SetDescriptor(
100
+ Property.prototype,
101
+ "isChanged",
102
+ {get = function(self)
103
+ return self[2] == true
104
+ end},
105
+ true
106
+ )
107
+ ____exports.PlayerProperty = __TS__Class()
108
+ local PlayerProperty = ____exports.PlayerProperty
109
+ PlayerProperty.name = "PlayerProperty"
110
+ function PlayerProperty.prototype.____constructor(self, defaultValue)
111
+ self.valueChangeEvent = __TS__New(Event)
112
+ self[0] = defaultValue
113
+ self[1] = {}
114
+ self[2] = {}
115
+ end
116
+ function PlayerProperty.prototype.isChanged(self, player)
117
+ return self[2][player] ~= nil
118
+ end
119
+ function PlayerProperty.prototype.reset(self, player)
120
+ if self[2][player] ~= nil then
121
+ self[2][player] = nil
122
+ local initialValue = self[0]
123
+ local oldValue = self[1][player]
124
+ self[1][player] = nil
125
+ if initialValue ~= oldValue then
126
+ invoke(self.valueChangeEvent, player, initialValue, oldValue)
127
+ end
128
+ return true
129
+ end
130
+ return false
131
+ end
132
+ function PlayerProperty.prototype.set(self, player, value)
133
+ self[2][player] = true
134
+ local oldValue = self[1][player]
135
+ self[1][player] = value
136
+ if value ~= oldValue then
137
+ invoke(self.valueChangeEvent, player, value, oldValue)
138
+ return true
139
+ end
140
+ return false
141
+ end
142
+ function PlayerProperty.prototype.get(self, player)
143
+ local ____table_PlayerPropertyPropertyKey_IS_CHANGED_BY_PLAYER_has_result_0
144
+ if self[2][player] ~= nil then
145
+ ____table_PlayerPropertyPropertyKey_IS_CHANGED_BY_PLAYER_has_result_0 = self[1][player]
146
+ else
147
+ ____table_PlayerPropertyPropertyKey_IS_CHANGED_BY_PLAYER_has_result_0 = self[0]
148
+ end
149
+ return ____table_PlayerPropertyPropertyKey_IS_CHANGED_BY_PLAYER_has_result_0
150
+ end
151
+ local NULL_VALUE = {}
152
+ local loadedValueById
153
+ local loadedValueByIdByPlayer = {}
154
+ local localValueById = {}
155
+ local persistentPropertyById = {}
156
+ local persistentPlayerPropertyById = {}
157
+ ____exports.PersistentProperty = __TS__Class()
158
+ local PersistentProperty = ____exports.PersistentProperty
159
+ PersistentProperty.name = "PersistentProperty"
160
+ __TS__ClassExtends(PersistentProperty, ____exports.Property)
161
+ function PersistentProperty.prototype.____constructor(self, id, defaultValue, valueChangeEventListener)
162
+ PersistentProperty.____super.prototype.____constructor(self, defaultValue)
163
+ self.id = id
164
+ ____require(not (persistentPropertyById[id] ~= nil) and not (persistentPlayerPropertyById[id] ~= nil))
165
+ persistentPropertyById[id] = self
166
+ if valueChangeEventListener ~= nil then
167
+ self.valueChangeEvent:addListener(valueChangeEventListener)
168
+ end
169
+ local value = loadedValueById and loadedValueById[id]
170
+ if value ~= nil then
171
+ local ____self_set_4 = self.set
172
+ local ____temp_3
173
+ if value == NULL_VALUE then
174
+ ____temp_3 = nil
175
+ else
176
+ ____temp_3 = value
177
+ end
178
+ ____self_set_4(self, ____temp_3)
179
+ end
180
+ end
181
+ function PersistentProperty.prototype.reset(self)
182
+ if PersistentProperty.____super.prototype.reset(self) then
183
+ localValueById[self.id] = nil
184
+ savePropertyValues()
185
+ return true
186
+ end
187
+ return false
188
+ end
189
+ function PersistentProperty.prototype.set(self, value)
190
+ if PersistentProperty.____super.prototype.set(self, value) then
191
+ localValueById[self.id] = value == nil and NULL_VALUE or value
192
+ savePropertyValues()
193
+ return true
194
+ end
195
+ return false
196
+ end
197
+ ____exports.PersistentPlayerProperty = __TS__Class()
198
+ local PersistentPlayerProperty = ____exports.PersistentPlayerProperty
199
+ PersistentPlayerProperty.name = "PersistentPlayerProperty"
200
+ __TS__ClassExtends(PersistentPlayerProperty, ____exports.PlayerProperty)
201
+ function PersistentPlayerProperty.prototype.____constructor(self, id, initialValue, valueChangeEventListener)
202
+ PersistentPlayerProperty.____super.prototype.____constructor(self, initialValue)
203
+ self.id = id
204
+ ____require(not (persistentPropertyById[id] ~= nil) and not (persistentPlayerPropertyById[id] ~= nil))
205
+ persistentPlayerPropertyById[id] = self
206
+ if valueChangeEventListener ~= nil then
207
+ self.valueChangeEvent:addListener(valueChangeEventListener)
208
+ end
209
+ for ____, player in ipairs(Player.all) do
210
+ local ____opt_5 = loadedValueByIdByPlayer and loadedValueByIdByPlayer[player]
211
+ local value = ____opt_5 and ____opt_5[id]
212
+ if value ~= nil then
213
+ local ____self_set_10 = self.set
214
+ local ____temp_9
215
+ if value == NULL_VALUE then
216
+ ____temp_9 = nil
217
+ else
218
+ ____temp_9 = value
219
+ end
220
+ ____self_set_10(self, player, ____temp_9)
221
+ end
222
+ end
223
+ end
224
+ function PersistentPlayerProperty.prototype.reset(self, player)
225
+ if PersistentPlayerProperty.____super.prototype.reset(self, player) then
226
+ if player.isLocal then
227
+ localValueById[self.id] = nil
228
+ end
229
+ savePropertyValues(player)
230
+ return true
231
+ end
232
+ return false
233
+ end
234
+ function PersistentPlayerProperty.prototype.set(self, player, value)
235
+ if PersistentPlayerProperty.____super.prototype.set(self, player, value) then
236
+ if player.isLocal then
237
+ localValueById[self.id] = value
238
+ end
239
+ savePropertyValues(player)
240
+ return true
241
+ end
242
+ return false
243
+ end
244
+ savePropertyValues = function(player)
245
+ if player ~= nil and not player.isLocal or loadedValueById == nil or loadedValueByIdByPlayer[Player["local"]] == nil then
246
+ return
247
+ end
248
+ local writer = __TS__New(BinaryWriter)
249
+ writer:writeUInt32(0)
250
+ local size = 0
251
+ for ____ in pairs(localValueById) do
252
+ size = size + 1
253
+ end
254
+ writer:writeUInt32(size)
255
+ for id, value in pairs(localValueById) do
256
+ writer:writeInt32(id)
257
+ if value == NULL_VALUE then
258
+ writer:writeUInt8(0)
259
+ elseif value == false then
260
+ writer:writeUInt8(1)
261
+ elseif value == true then
262
+ writer:writeUInt8(2)
263
+ elseif type(value) == "number" then
264
+ if math.type(value) == "integer" then
265
+ writer:writeUInt8(3)
266
+ writer:writeInt32(value)
267
+ else
268
+ writer:writeUInt8(4)
269
+ writer:writeFloat(value)
270
+ end
271
+ else
272
+ writer:writeUInt8(5)
273
+ writer:writeUInt32(#value)
274
+ writer:writeBytes(value)
275
+ end
276
+ end
277
+ file.write(
278
+ ____exports.PersistentPropertiesConfig.defaultFileName,
279
+ base64.encode(lzw.compress(tostring(writer)))
280
+ )
281
+ end
282
+ local function loadPropertyValues(fileData, player)
283
+ do
284
+ local function ____catch(_)
285
+ return true, {}
286
+ end
287
+ local ____try, ____hasReturned, ____returnValue = pcall(function()
288
+ local valueById = {}
289
+ local reader = __TS__New(
290
+ BinaryReader,
291
+ lzw.decompress(base64.decode(fileData))
292
+ )
293
+ reader:readUInt32()
294
+ local size = reader:readUInt32()
295
+ for _ = 1, size do
296
+ local id = reader:readInt32()
297
+ local dataType = reader:readUInt8()
298
+ if dataType == 0 then
299
+ valueById[id] = NULL_VALUE
300
+ elseif dataType == 1 then
301
+ valueById[id] = false
302
+ elseif dataType == 2 then
303
+ valueById[id] = true
304
+ elseif dataType == 3 then
305
+ valueById[id] = reader:readInt32()
306
+ elseif dataType == 4 then
307
+ valueById[id] = reader:readFloat()
308
+ elseif dataType == 5 then
309
+ valueById[id] = reader:readBytes(reader:readUInt32())
310
+ end
311
+ end
312
+ for id, value in pairs(valueById) do
313
+ local persistentProperty = persistentPropertyById[id]
314
+ if persistentProperty ~= nil then
315
+ if not persistentProperty.isChanged then
316
+ local ____persistentProperty_set_12 = persistentProperty.set
317
+ local ____temp_11
318
+ if value == NULL_VALUE then
319
+ ____temp_11 = nil
320
+ else
321
+ ____temp_11 = value
322
+ end
323
+ ____persistentProperty_set_12(persistentProperty, ____temp_11)
324
+ end
325
+ elseif player ~= nil then
326
+ local persistentPlayerProperty = persistentPlayerPropertyById[id]
327
+ if persistentPlayerProperty ~= nil then
328
+ if not persistentPlayerProperty:isChanged(player) then
329
+ local ____persistentPlayerProperty_set_15 = persistentPlayerProperty.set
330
+ local ____player_14 = player
331
+ local ____temp_13
332
+ if value == NULL_VALUE then
333
+ ____temp_13 = nil
334
+ else
335
+ ____temp_13 = value
336
+ end
337
+ ____persistentPlayerProperty_set_15(persistentPlayerProperty, ____player_14, ____temp_13)
338
+ end
339
+ elseif player.isLocal then
340
+ localValueById[id] = value
341
+ end
342
+ else
343
+ localValueById[id] = value
344
+ end
345
+ end
346
+ return true, valueById
347
+ end)
348
+ if not ____try then
349
+ ____hasReturned, ____returnValue = ____catch(____hasReturned)
350
+ end
351
+ if ____hasReturned then
352
+ return ____returnValue
353
+ end
354
+ end
355
+ end
356
+ Timer:run(function()
357
+ local data = file.read(____exports.PersistentPropertiesConfig.defaultFileName) or ""
358
+ loadedValueById = loadPropertyValues(data)
359
+ for ____, player in ipairs(Player.all) do
360
+ local ____self_16 = synchronize(player, data)
361
+ ____self_16["then"](
362
+ ____self_16,
363
+ function(____, synchronizedData)
364
+ loadedValueByIdByPlayer[player] = loadPropertyValues(synchronizedData, player)
365
+ savePropertyValues(player)
366
+ end,
367
+ function()
368
+ loadedValueByIdByPlayer[player] = {}
369
+ savePropertyValues(player)
370
+ end
371
+ )
372
+ end
373
+ end)
374
+ return ____exports
@@ -1,10 +1,16 @@
1
1
  /** @noSelfInFile */
2
- import { TupleOf } from "./types";
2
+ import { NonEmptyArray, ReadonlyNonEmptyArray, TupleOf } from "./types";
3
3
  export declare const emptyArray: <T>() => readonly T[];
4
+ /** Checks for any element with `next` instead of computing the length. */
5
+ export declare const isNonEmptyArray: {
6
+ <T>(array: T[]): array is NonEmptyArray<T>;
7
+ <T>(array: readonly T[]): array is ReadonlyNonEmptyArray<T>;
8
+ };
4
9
  export declare const joinToString: <T>(array: readonly T[], separator: string, transform?: (element: T) => string) => string;
5
10
  export declare const arrayOfNotNull: <T>(...elements: readonly (T | undefined | null)[]) => T[];
6
11
  export declare const array: <T, N extends number>(length: N, initialize: (index: number) => T) => TupleOf<T, N>;
7
12
  export declare const toLuaSet: <T extends AnyNotNil>(array: readonly T[]) => LuaSet<T>;
13
+ export declare const contains: <T>(array: readonly T[], element: T) => boolean;
8
14
  export declare const forEach: <T, Args extends any[]>(array: readonly T[], consumerOrKey: ((value: T, ...args: Args) => void) | KeysOfType<T, (this: T, ...args: Args) => void>, ...args: Args) => void;
9
15
  export declare const all: {
10
16
  <T>(array: readonly T[], transform: (value: T) => boolean): boolean;
@@ -22,6 +28,7 @@ export declare const mapToLuaSet: {
22
28
  <T, R extends AnyNotNil>(array: readonly T[], transform: (value: T) => R): LuaSet<R>;
23
29
  <T, K extends KeysOfType<T, AnyNotNil>>(array: readonly T[], key: K): LuaSet<T[K] extends AnyNotNil ? T[K] : never>;
24
30
  };
31
+ export declare const flatten: <T>(array: readonly (readonly T[])[]) => T[];
25
32
  export declare const flatMap: {
26
33
  <T, R>(array: readonly T[], transform: (value: T) => readonly R[]): R[];
27
34
  <T, K extends KeysOfType<T, readonly any[]>>(array: readonly T[], key: K): (T[K] extends readonly (infer R)[] ? R : never)[];
@@ -32,15 +39,23 @@ export declare const flatMapToLuaSet: {
32
39
  };
33
40
  export declare const mapIndexed: <T, R>(array: readonly T[], transform: (index: number, value: T) => R) => R[];
34
41
  export declare const associate: <T, K extends AnyNotNil, V>(array: readonly T[], keySelector: (value: T) => K, valueSelector: (value: T) => V) => LuaMap<K, V>;
35
- export declare const associateBy: <K extends AnyNotNil, V>(array: readonly V[], keySelector: (value: V) => K) => LuaMap<K, V>;
42
+ export declare const associateBy: {
43
+ <K extends AnyNotNil, V>(array: readonly V[], keySelector: (value: V) => K): LuaMap<K, V>;
44
+ <K extends KeysOfType<V, AnyNotNil>, V>(array: readonly V[], keySelector: K): LuaMap<V[K] extends AnyNotNil ? V[K] : never, V>;
45
+ };
36
46
  export declare const associateByIndexed: <K extends AnyNotNil, V>(array: readonly V[], keySelector: (index: number, value: V) => K) => LuaMap<K, V>;
37
47
  export declare const associateWith: <K extends AnyNotNil, V>(array: readonly K[], valueSelector: (value: K) => V) => LuaMap<K, V>;
38
48
  export declare const associateWithIndexed: <K extends AnyNotNil, V>(array: readonly K[], valueSelector: (index: number, value: K) => V) => LuaMap<K, V>;
39
49
  export declare const filter: <T>(array: readonly T[], predicate: (value: T) => boolean) => T[];
50
+ export declare const filterNot: <T>(array: readonly T[], predicate: (value: T) => boolean) => T[];
40
51
  export declare const average: (array: readonly number[]) => number;
41
52
  export declare const sum: (array: readonly number[]) => number;
42
53
  export declare const product: (array: readonly number[]) => number;
43
54
  export declare const max: (array: readonly number[]) => number;
55
+ export declare const maxBy: {
56
+ <T, Args extends any[]>(array: readonly T[], selector: (value: T, ...args: Args) => number, ...args: Args): T | undefined;
57
+ <T, K extends KeysOfType<T, number>>(array: readonly T[], key: K): T | undefined;
58
+ };
44
59
  export declare const intersperse: <T>(array: readonly T[], delimiter: T) => T[];
45
60
  export declare const zip: <T, R, V>(array: readonly T[], otherArray: readonly R[], transform: (value: T, otherValue: R) => V) => V[];
46
61
  export declare const chunked: <T>(array: readonly T[], size: number) => T[][];
@@ -3,8 +3,11 @@ local __TS__New = ____lualib.__TS__New
3
3
  local ____exports = {}
4
4
  local ____exception = require("exception")
5
5
  local IllegalArgumentException = ____exception.IllegalArgumentException
6
+ local ____functions = require("utility.functions")
7
+ local identity = ____functions.identity
6
8
  local mathMax = math.max
7
9
  local mathMin = math.min
10
+ local next = _G.next
8
11
  local select = _G.select
9
12
  local tableConcat = table.concat
10
13
  local tableSort = table.sort
@@ -12,6 +15,10 @@ local EMPTY_ARRAY = {}
12
15
  ____exports.emptyArray = function()
13
16
  return EMPTY_ARRAY
14
17
  end
18
+ --- Checks for any element with `next` instead of computing the length.
19
+ ____exports.isNonEmptyArray = function(array)
20
+ return (next(array)) ~= nil
21
+ end
15
22
  ____exports.joinToString = function(array, separator, transform)
16
23
  if transform == nil then
17
24
  transform = tostring
@@ -47,6 +54,14 @@ ____exports.toLuaSet = function(array)
47
54
  end
48
55
  return result
49
56
  end
57
+ ____exports.contains = function(array, element)
58
+ for i = 1, #array do
59
+ if array[i] == element then
60
+ return true
61
+ end
62
+ end
63
+ return false
64
+ end
50
65
  ____exports.forEach = function(array, consumerOrKey, ...)
51
66
  if type(consumerOrKey) == "function" then
52
67
  for i = 1, #array do
@@ -120,6 +135,7 @@ ____exports.mapToLuaSet = function(array, transform)
120
135
  end
121
136
  return result
122
137
  end
138
+ ____exports.flatten = function(array) return ____exports.flatMap(array, identity) end
123
139
  ____exports.flatMap = function(array, transform)
124
140
  local result = {}
125
141
  local k = 1
@@ -178,9 +194,16 @@ ____exports.associate = function(array, keySelector, valueSelector)
178
194
  end
179
195
  ____exports.associateBy = function(array, keySelector)
180
196
  local result = {}
181
- for i = 1, #array do
182
- local value = array[i]
183
- result[keySelector(value)] = value
197
+ if type(keySelector) == "function" then
198
+ for i = 1, #array do
199
+ local value = array[i]
200
+ result[keySelector(value)] = value
201
+ end
202
+ else
203
+ for i = 1, #array do
204
+ local value = array[i]
205
+ result[value[keySelector]] = value
206
+ end
184
207
  end
185
208
  return result
186
209
  end
@@ -220,6 +243,18 @@ ____exports.filter = function(array, predicate)
220
243
  end
221
244
  return result
222
245
  end
246
+ ____exports.filterNot = function(array, predicate)
247
+ local result = {}
248
+ local j = 1
249
+ for i = 1, #array do
250
+ local value = array[i]
251
+ if not predicate(value) then
252
+ result[j] = value
253
+ j = j + 1
254
+ end
255
+ end
256
+ return result
257
+ end
223
258
  ____exports.average = function(array)
224
259
  local sum = 0
225
260
  local count = #array
@@ -251,6 +286,30 @@ ____exports.max = function(array)
251
286
  end
252
287
  return mathMax(table.unpack(array))
253
288
  end
289
+ ____exports.maxBy = function(array, selector, ...)
290
+ local result = nil
291
+ local maxValue = -math.huge
292
+ if type(selector) == "function" then
293
+ for i = 1, #array do
294
+ local element = array[i]
295
+ local value = selector(element, ...)
296
+ if value > maxValue then
297
+ result = element
298
+ maxValue = value
299
+ end
300
+ end
301
+ else
302
+ for i = 1, #array do
303
+ local element = array[i]
304
+ local value = element[selector]
305
+ if value > maxValue then
306
+ result = element
307
+ maxValue = value
308
+ end
309
+ end
310
+ end
311
+ return result
312
+ end
254
313
  ____exports.intersperse = function(array, delimiter)
255
314
  local result = {}
256
315
  local length = #array
@@ -0,0 +1,17 @@
1
+ /** @noSelfInFile */
2
+ type Callback = {
3
+ readonly __callback: unique symbol;
4
+ };
5
+ export type CallbackId = number & {
6
+ readonly __callbackId: unique symbol;
7
+ };
8
+ export type CallbackArray = {
9
+ readonly __callbackArray: unique symbol;
10
+ } & Callback[];
11
+ export declare const callbackArray: () => CallbackArray;
12
+ export declare function addCallback<Args extends any[]>(this: void, array: CallbackArray, callback: (...args: Args) => unknown, ...args: Args): CallbackId;
13
+ export declare function clearCallbacks(this: void, array: CallbackArray): void;
14
+ export declare function consumeCallback(this: void, array: CallbackArray, id: CallbackId): void;
15
+ export declare function consumeCallbacks(this: void, array: CallbackArray): void;
16
+ export declare function invokeCallbacks(this: void, array: CallbackArray): void;
17
+ export {};
@@ -0,0 +1,61 @@
1
+ local ____exports = {}
2
+ local safeCall, tableUnpack
3
+ function ____exports.invokeCallbacks(array)
4
+ local length = array[1] or 2
5
+ local i = 2
6
+ while i ~= length do
7
+ local callback = array[i]
8
+ i = i + 1
9
+ local argsCount = array[i]
10
+ i = i + 1
11
+ safeCall(
12
+ callback,
13
+ tableUnpack(array, i, i + argsCount - 1)
14
+ )
15
+ i = i + argsCount
16
+ end
17
+ end
18
+ safeCall = warpack.safeCall
19
+ local select = _G.select
20
+ local tableMove = table.move
21
+ tableUnpack = table.unpack
22
+ ____exports.callbackArray = function() return {} end
23
+ local function doNothing()
24
+ end
25
+ function ____exports.addCallback(array, callback, ...)
26
+ local id = array[1] or 2
27
+ local i = id
28
+ array[i] = callback
29
+ local argsCount = select("#", ...)
30
+ i = i + 1
31
+ array[i] = argsCount
32
+ for j = 1, argsCount do
33
+ i = i + 1
34
+ array[i] = (select(j, ...))
35
+ end
36
+ array[1] = i + 1
37
+ return id
38
+ end
39
+ function ____exports.clearCallbacks(array)
40
+ local length = array[1] or 2
41
+ tableMove(array, length, length + length - 2, 1)
42
+ end
43
+ function ____exports.consumeCallback(array, id)
44
+ local callback = array[id]
45
+ array[id] = doNothing
46
+ id = id + 1
47
+ local argsCount = array[id]
48
+ id = id + 1
49
+ safeCall(
50
+ callback,
51
+ tableUnpack(array, id, id + argsCount - 1)
52
+ )
53
+ end
54
+ function ____exports.consumeCallbacks(array)
55
+ local length = array[1] or 2
56
+ ____exports.invokeCallbacks(array)
57
+ local newLength = array[1] or 2
58
+ tableMove(array, length, length + newLength - 3, 2)
59
+ array[1] = newLength - length + 2
60
+ end
61
+ return ____exports
@@ -3,3 +3,11 @@ export declare const apply: {
3
3
  <T, ConsumerParameters extends any[]>(object: T, consumer: (value: T, ...parameters: ConsumerParameters) => void, ...parameters: ConsumerParameters): T;
4
4
  <T, ConsumerParameters extends any[], K extends KeysOfType<T, (...parameters: ConsumerParameters) => void>>(object: T, key: K, ...parameters: ConsumerParameters): T;
5
5
  };
6
+ export declare const identity: <T>(value: T) => T;
7
+ export declare const firstArgument: <T>(value: T) => T;
8
+ export declare const secondArgument: <T>(_: unknown, value: T) => T;
9
+ export declare const thirdArgument: <T>(_first: unknown, _second: unknown, value: T) => T;
10
+ export declare const increment: (value: number) => number;
11
+ export declare const or: (lhs: boolean, rhs: boolean) => boolean;
12
+ export type Transform<T, R> = (<T, R>(value: T) => R) | KeysOfType<T, R>;
13
+ export declare const transform: <T, R>(object: T, transform: Transform<T, R>) => R;
@@ -87,4 +87,17 @@ ____exports.apply = function(object, transform, ...)
87
87
  end
88
88
  return object
89
89
  end
90
+ ____exports.identity = function(value) return value end
91
+ ____exports.firstArgument = ____exports.identity
92
+ ____exports.secondArgument = function(_, value) return value end
93
+ ____exports.thirdArgument = function(_first, _second, value) return value end
94
+ ____exports.increment = function(value) return value + 1 end
95
+ ____exports["or"] = function(lhs, rhs) return lhs or rhs end
96
+ ____exports.transform = function(object, transform)
97
+ if type(transform) == "function" then
98
+ return transform(object)
99
+ else
100
+ return object[transform]
101
+ end
102
+ end
90
103
  return ____exports
@@ -0,0 +1,2 @@
1
+ /** @noSelfInFile */
2
+ export declare const lazyRecord: <K extends keyof any, V>(initializer: (key: K) => V) => Readonly<Record<K, V>>;
@@ -0,0 +1,14 @@
1
+ local ____exports = {}
2
+ local rawset = _G.rawset
3
+ local setmetatable = _G.setmetatable
4
+ ____exports.lazyRecord = function(initializer)
5
+ return setmetatable(
6
+ {},
7
+ {__index = function(self, key)
8
+ local value = initializer(key)
9
+ rawset(self, key, value)
10
+ return value
11
+ end}
12
+ )
13
+ end
14
+ return ____exports