warscript 0.0.1-dev.83957b1 → 0.0.1-dev.8466737

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 (372) 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 +16 -2
  7. package/core/types/frame.lua +141 -77
  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 +76 -26
  13. package/core/types/playerCamera.d.ts +2 -0
  14. package/core/types/playerCamera.lua +123 -5
  15. package/core/types/playerColor.lua +4 -3
  16. package/core/types/sound.d.ts +1 -1
  17. package/core/types/sound.lua +14 -9
  18. package/core/types/tileCell.d.ts +18 -3
  19. package/core/types/tileCell.lua +108 -0
  20. package/core/types/timer.d.ts +3 -1
  21. package/core/types/timer.lua +27 -2
  22. package/core/types/unit.d.ts +5 -0
  23. package/core/types/unit.lua +5 -0
  24. package/core/util.d.ts +3 -1
  25. package/core/util.lua +109 -3
  26. package/decl/native.d.ts +711 -11
  27. package/destroyable.d.ts +1 -0
  28. package/destroyable.lua +9 -0
  29. package/engine/behavior.d.ts +14 -1
  30. package/engine/behavior.lua +230 -70
  31. package/engine/behaviour/ability/apply-buff.lua +5 -5
  32. package/engine/behaviour/ability/apply-unit-behavior.lua +5 -0
  33. package/engine/behaviour/ability/damage.d.ts +4 -0
  34. package/engine/behaviour/ability/damage.lua +19 -15
  35. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  36. package/engine/behaviour/ability/emulate-impact.lua +7 -5
  37. package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
  38. package/engine/behaviour/ability/on-command-impact.lua +1 -0
  39. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  40. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  41. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  42. package/engine/behaviour/ability/restore-mana.lua +6 -6
  43. package/engine/behaviour/ability.d.ts +13 -6
  44. package/engine/behaviour/ability.lua +62 -16
  45. package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
  46. package/engine/behaviour/unit/stun-immunity.lua +57 -31
  47. package/engine/behaviour/unit.d.ts +27 -5
  48. package/engine/behaviour/unit.lua +181 -27
  49. package/engine/buff.d.ts +75 -28
  50. package/engine/buff.lua +433 -196
  51. package/engine/index.d.ts +2 -1
  52. package/engine/internal/ability.d.ts +10 -1
  53. package/engine/internal/ability.lua +99 -47
  54. package/engine/internal/item/ability.lua +51 -1
  55. package/engine/internal/item/fields.d.ts +12 -0
  56. package/engine/internal/item/fields.lua +33 -0
  57. package/engine/internal/item/owner-cache.d.ts +5 -0
  58. package/engine/internal/item/owner-cache.lua +4 -0
  59. package/engine/internal/item+owner.d.ts +2 -0
  60. package/engine/internal/item+owner.lua +37 -8
  61. package/engine/internal/item.d.ts +27 -14
  62. package/engine/internal/item.lua +185 -82
  63. package/engine/internal/mechanics/cast-ability.lua +6 -3
  64. package/engine/internal/misc/frame-coordinates.lua +21 -0
  65. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  66. package/engine/internal/misc/get-terrain-z.lua +11 -0
  67. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  68. package/engine/internal/misc/player-local-handle.lua +5 -0
  69. package/engine/internal/misc/unit-ability-level-natives.d.ts +2 -0
  70. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  71. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  72. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  73. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  74. package/engine/internal/object-data/health-bonus.lua +16 -0
  75. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  76. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  77. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  78. package/engine/internal/object-data/mana-bonus.lua +16 -0
  79. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  80. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  81. package/engine/internal/unit/ability.d.ts +35 -5
  82. package/engine/internal/unit/ability.lua +111 -24
  83. package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
  84. package/engine/internal/unit/add-item-to-slot.lua +53 -12
  85. package/engine/internal/unit/appearance.d.ts +15 -0
  86. package/engine/internal/unit/appearance.lua +85 -0
  87. package/engine/internal/unit/attributes.d.ts +17 -0
  88. package/engine/internal/unit/attributes.lua +46 -0
  89. package/engine/internal/unit/bonus.d.ts +14 -0
  90. package/engine/internal/unit/bonus.lua +102 -8
  91. package/engine/internal/unit/buff.d.ts +2 -2
  92. package/engine/internal/unit/buff.lua +34 -19
  93. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  94. package/engine/internal/unit/equipment-inventory.lua +233 -0
  95. package/engine/internal/unit/expiration-timer.lua +1 -1
  96. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  97. package/engine/internal/unit/extended-inventory.lua +99 -0
  98. package/engine/internal/unit/fly-height.d.ts +7 -0
  99. package/engine/internal/unit/fly-height.lua +20 -0
  100. package/engine/internal/unit/ignore-events-items.lua +10 -1
  101. package/engine/internal/unit/interrupts.d.ts +12 -0
  102. package/engine/internal/unit/interrupts.lua +28 -0
  103. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
  104. package/engine/internal/unit/inventory.lua +87 -0
  105. package/engine/internal/unit/item-container.d.ts +25 -0
  106. package/engine/internal/unit/item-container.lua +11 -0
  107. package/engine/internal/unit/item-order-events.d.ts +17 -0
  108. package/engine/internal/unit/item-order-events.lua +67 -0
  109. package/engine/internal/unit/item-slot.d.ts +27 -0
  110. package/engine/internal/unit/item-slot.lua +92 -0
  111. package/engine/internal/unit/main-selected.lua +12 -27
  112. package/engine/internal/unit/order.d.ts +20 -0
  113. package/engine/internal/unit/order.lua +136 -0
  114. package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
  115. package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
  116. package/engine/internal/unit/range-event.d.ts +12 -0
  117. package/engine/internal/unit/range-event.lua +90 -0
  118. package/engine/internal/unit/scale.d.ts +7 -0
  119. package/engine/internal/unit/scale.lua +20 -0
  120. package/engine/internal/unit+ability.d.ts +2 -1
  121. package/engine/internal/unit+ability.lua +73 -3
  122. package/engine/internal/unit+bonus.lua +3 -3
  123. package/engine/internal/unit+damage.d.ts +9 -0
  124. package/engine/internal/unit+damage.lua +33 -0
  125. package/engine/internal/unit+rally.lua +9 -31
  126. package/engine/internal/unit-missile-data.lua +58 -32
  127. package/engine/internal/unit-missile-launch.lua +65 -27
  128. package/engine/internal/unit.d.ts +21 -33
  129. package/engine/internal/unit.lua +254 -312
  130. package/engine/local-client.d.ts +28 -0
  131. package/engine/local-client.lua +324 -54
  132. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  133. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  134. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -0
  135. package/engine/object-data/auxiliary/attachment-preset.lua +7 -0
  136. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  137. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  138. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  139. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  140. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  141. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  142. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  143. package/engine/object-data/auxiliary/item-class.lua +2 -0
  144. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  145. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  146. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  147. package/engine/object-data/auxiliary/order-type.lua +2 -0
  148. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  149. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  150. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  151. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  152. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  153. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  154. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  155. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  156. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  157. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  158. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  159. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  160. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  161. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  162. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  163. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  164. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
  165. package/engine/object-data/entry/ability-type/blank-configurable.lua +30 -0
  166. package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -0
  167. package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
  168. package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
  169. package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
  170. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  171. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  172. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  173. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  174. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  175. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  176. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  177. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  178. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  179. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  180. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  181. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  182. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  183. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  184. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  185. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  186. package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
  187. package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
  188. package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
  189. package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
  190. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  191. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  192. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  193. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  194. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  195. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  196. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  197. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  198. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  199. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  200. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  201. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  202. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  203. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  204. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  205. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  206. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  207. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  208. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  209. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  210. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  211. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  212. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  213. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  214. package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
  215. package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
  216. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  217. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  218. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  219. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  220. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  221. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  222. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  223. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  224. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  225. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  226. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  227. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  228. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  229. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  230. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  231. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  232. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  233. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  234. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  235. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  236. package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
  237. package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
  238. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  239. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  240. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  241. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  242. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  243. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  244. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  245. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  246. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  247. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  248. package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
  249. package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
  250. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  251. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  252. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  253. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  254. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  255. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  256. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  257. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  258. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  259. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  260. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  261. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  262. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  263. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  264. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  265. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  266. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  267. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  268. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  269. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  270. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  271. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  272. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  273. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  274. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  275. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  276. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  277. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  278. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  279. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  280. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  281. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  282. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  283. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  284. package/engine/object-data/entry/ability-type.d.ts +25 -6
  285. package/engine/object-data/entry/ability-type.lua +249 -12
  286. package/engine/object-data/entry/buff-type/applicable.lua +113 -109
  287. package/engine/object-data/entry/buff-type.d.ts +6 -2
  288. package/engine/object-data/entry/buff-type.lua +26 -0
  289. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  290. package/engine/object-data/entry/destructible-type.lua +181 -0
  291. package/engine/object-data/entry/item-type.d.ts +18 -3
  292. package/engine/object-data/entry/item-type.lua +84 -0
  293. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  294. package/engine/object-data/entry/lightning-type.lua +1 -1
  295. package/engine/object-data/entry/sound-preset.d.ts +2 -2
  296. package/engine/object-data/entry/unit-type.d.ts +62 -4
  297. package/engine/object-data/entry/unit-type.lua +474 -38
  298. package/engine/object-data/entry/upgrade.d.ts +2 -2
  299. package/engine/object-data/entry.d.ts +6 -1
  300. package/engine/object-data/entry.lua +8 -0
  301. package/engine/object-field/ability.d.ts +3 -3
  302. package/engine/object-field/ability.lua +9 -8
  303. package/engine/object-field/item.d.ts +22 -0
  304. package/engine/object-field/item.lua +118 -0
  305. package/engine/object-field/unit.d.ts +31 -5
  306. package/engine/object-field/unit.lua +95 -0
  307. package/engine/object-field.d.ts +14 -4
  308. package/engine/object-field.lua +286 -132
  309. package/engine/random.d.ts +10 -0
  310. package/engine/random.lua +21 -0
  311. package/engine/standard/entries/ability-type.d.ts +3102 -7
  312. package/engine/standard/entries/ability-type.lua +0 -6
  313. package/engine/standard/entries/buff-type.d.ts +45 -0
  314. package/engine/standard/entries/buff-type.lua +43 -0
  315. package/engine/standard/entries/item-type.d.ts +1299 -0
  316. package/engine/standard/entries/item-type.lua +2 -0
  317. package/engine/standard/entries/lightning-type.d.ts +42 -15
  318. package/engine/standard/entries/lightning-type.lua +0 -14
  319. package/engine/standard/entries/unit-type.d.ts +5 -0
  320. package/engine/standard/entries/unit-type.lua +5 -0
  321. package/engine/standard/fields/ability.d.ts +2 -2
  322. package/engine/standard/fields/ability.lua +2 -2
  323. package/engine/standard/fields/item.d.ts +4 -0
  324. package/engine/standard/fields/item.lua +6 -0
  325. package/engine/standard/fields/unit.d.ts +12 -0
  326. package/engine/standard/fields/unit.lua +20 -0
  327. package/engine/synchronization.d.ts +11 -0
  328. package/engine/synchronization.lua +77 -0
  329. package/engine/text-tag.d.ts +36 -2
  330. package/engine/text-tag.lua +250 -10
  331. package/engine/unit.d.ts +11 -1
  332. package/engine/unit.lua +11 -1
  333. package/event.d.ts +1 -1
  334. package/lualib_bundle.lua +1 -1
  335. package/math.d.ts +2 -0
  336. package/math.lua +14 -0
  337. package/net/socket.lua +1 -1
  338. package/network.lua +25 -1
  339. package/objutil/buff.lua +11 -9
  340. package/objutil/object.lua +1 -1
  341. package/operation.d.ts +8 -1
  342. package/operation.lua +38 -18
  343. package/package.json +3 -23
  344. package/patch-lua.lua +15 -0
  345. package/patch-lualib.lua +1 -1
  346. package/utility/arrays.d.ts +8 -1
  347. package/utility/arrays.lua +25 -0
  348. package/utility/callback-array.d.ts +17 -0
  349. package/utility/callback-array.lua +61 -0
  350. package/utility/functions.d.ts +7 -0
  351. package/utility/functions.lua +12 -0
  352. package/utility/linked-map.d.ts +35 -0
  353. package/utility/linked-map.lua +107 -0
  354. package/utility/linked-set.d.ts +4 -1
  355. package/utility/linked-set.lua +46 -1
  356. package/utility/lua-maps.d.ts +12 -2
  357. package/utility/lua-maps.lua +37 -2
  358. package/utility/lua-sets.d.ts +1 -0
  359. package/utility/lua-sets.lua +4 -0
  360. package/utility/random.d.ts +102 -0
  361. package/utility/random.lua +273 -0
  362. package/utility/records.lua +20 -1
  363. package/utility/types.d.ts +3 -0
  364. package/utility/unordered-map.d.ts +27 -0
  365. package/utility/unordered-map.lua +99 -0
  366. package/core/types/order.d.ts +0 -26
  367. package/core/types/order.lua +0 -65
  368. package/engine/internal/unit/item.lua +0 -78
  369. /package/engine/internal/{object-data/armor-increase.d.ts → misc/frame-coordinates.d.ts} +0 -0
  370. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  371. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  372. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -23,8 +23,12 @@ local ObjectDataEntryIdGenerator = ____object_2Ddata_2Dentry_2Did_2Dgenerator.Ob
23
23
  local ____linked_2Dset = require("utility.linked-set")
24
24
  local mutableLinkedSet = ____linked_2Dset.mutableLinkedSet
25
25
  local ____lua_2Dmaps = require("utility.lua-maps")
26
+ local emptyLuaMap = ____lua_2Dmaps.emptyLuaMap
26
27
  local getOrPut = ____lua_2Dmaps.getOrPut
28
+ local mutableLuaMap = ____lua_2Dmaps.mutableLuaMap
27
29
  local mutableWeakLuaMap = ____lua_2Dmaps.mutableWeakLuaMap
30
+ local ____arrays = require("utility.arrays")
31
+ local emptyArray = ____arrays.emptyArray
28
32
  local compiletimeDefaultValueByObjectDataEntryIdByObjectFieldId = {}
29
33
  local defaultValueByObjectDataEntryIdByObjectFieldId = postcompile(function() return compiletimeDefaultValueByObjectDataEntryIdByObjectFieldId end)
30
34
  local objectFieldById = {}
@@ -36,7 +40,7 @@ local ObjectFieldBase = __TS__Class()
36
40
  ObjectFieldBase.name = "ObjectFieldBase"
37
41
  function ObjectFieldBase.prototype.____constructor(self, id, isGlobal)
38
42
  if isGlobal == nil then
39
- isGlobal = true
43
+ isGlobal = false
40
44
  end
41
45
  self.isGlobal = isGlobal
42
46
  self.valueByInstance = setmetatable({}, {__mode = "k"})
@@ -55,9 +59,9 @@ end
55
59
  function ObjectFieldBase.prototype.supports(self, instance)
56
60
  return __TS__InstanceOf(instance, self.instanceClass)
57
61
  end
58
- function ObjectFieldBase.prototype.hasValue(self, instance)
62
+ function ObjectFieldBase.prototype.hasValue(self, objectDataEntryId)
59
63
  local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
60
- return self.isGlobal or defaultValueByObjectDataEntryId ~= nil and defaultValueByObjectDataEntryId[self:getObjectDataEntryId(instance)] ~= nil or self:hasNativeFieldValue(instance)
64
+ return self.isGlobal or defaultValueByObjectDataEntryId ~= nil and defaultValueByObjectDataEntryId[objectDataEntryId] ~= nil or self:hasNativeFieldValue(objectDataEntryId)
61
65
  end
62
66
  function ObjectFieldBase.create(self, id, isGlobal)
63
67
  return __TS__New(
@@ -96,7 +100,7 @@ function ObjectField.prototype.getValue(self, entry, includeModifiers)
96
100
  end
97
101
  return self.defaultValue
98
102
  end
99
- if includeModifiers == false then
103
+ if not includeModifiers then
100
104
  local originalValueByInstance = self.originalValueByInstance
101
105
  if originalValueByInstance ~= nil then
102
106
  local originalValue = originalValueByInstance[entry]
@@ -120,6 +124,7 @@ function ObjectField.prototype.setValue(self, entry, value)
120
124
  defaultValueByObjectDataEntryId[entry.id] = value
121
125
  return true
122
126
  end
127
+ local previousOriginalValue
123
128
  local modifiersByInstance = self.modifiersByInstance
124
129
  if modifiersByInstance ~= nil then
125
130
  local modifiers = modifiersByInstance[entry]
@@ -129,11 +134,40 @@ function ObjectField.prototype.setValue(self, entry, value)
129
134
  originalValueByInstance = mutableWeakLuaMap()
130
135
  self.originalValueByInstance = originalValueByInstance
131
136
  end
137
+ previousOriginalValue = originalValueByInstance[entry]
138
+ if value == previousOriginalValue then
139
+ return true
140
+ end
132
141
  originalValueByInstance[entry] = value
133
- value = self:calculateActualValue(entry)
142
+ value = (self:calculateActualValue(entry))
134
143
  end
135
144
  end
136
- return self:setActualValue(entry, value)
145
+ local previousValue = self:setActualValue(entry, value)
146
+ if previousValue == nil then
147
+ return false
148
+ end
149
+ if previousOriginalValue ~= nil or value ~= previousValue then
150
+ local ____self_invokeValueChangeEvent_2 = self.invokeValueChangeEvent
151
+ local ____entry_1 = entry
152
+ local ____previousOriginalValue_0 = previousOriginalValue
153
+ if ____previousOriginalValue_0 == nil then
154
+ ____previousOriginalValue_0 = previousValue
155
+ end
156
+ ____self_invokeValueChangeEvent_2(
157
+ self,
158
+ ____entry_1,
159
+ self,
160
+ ____previousOriginalValue_0,
161
+ value
162
+ )
163
+ end
164
+ return true
165
+ end
166
+ function ObjectField.prototype.updateActualValue(self, instance)
167
+ local actualValue, hasModifiers = self:calculateActualValue(instance)
168
+ if hasModifiers then
169
+ self:setActualValue(instance, actualValue)
170
+ end
137
171
  end
138
172
  function ObjectField.prototype.applyModifier(self, instance, modifier)
139
173
  local modifiersByInstance = self.modifiersByInstance
@@ -147,11 +181,14 @@ function ObjectField.prototype.applyModifier(self, instance, modifier)
147
181
  originalValueByInstance = mutableWeakLuaMap()
148
182
  self.originalValueByInstance = originalValueByInstance
149
183
  end
150
- originalValueByInstance[instance] = self:getActualValue(instance)
151
- self:setActualValue(
152
- instance,
153
- self:calculateActualValue(instance)
154
- )
184
+ local ____originalValueByInstance_4 = originalValueByInstance
185
+ local ____instance_5 = instance
186
+ local ____originalValueByInstance_instance_3 = originalValueByInstance[instance]
187
+ if ____originalValueByInstance_instance_3 == nil then
188
+ ____originalValueByInstance_instance_3 = self:getActualValue(instance)
189
+ end
190
+ ____originalValueByInstance_4[____instance_5] = ____originalValueByInstance_instance_3
191
+ self:setActualValue(instance, (self:calculateActualValue(instance)))
155
192
  end
156
193
  end
157
194
  function ObjectField.prototype.removeModifier(self, instance, modifier)
@@ -159,10 +196,7 @@ function ObjectField.prototype.removeModifier(self, instance, modifier)
159
196
  if modifiersByInstance ~= nil then
160
197
  local modifiers = modifiersByInstance[instance]
161
198
  if modifiers ~= nil and modifiers:remove(modifier) then
162
- self:setActualValue(
163
- instance,
164
- self:calculateActualValue(instance)
165
- )
199
+ self:setActualValue(instance, (self:calculateActualValue(instance)))
166
200
  return true
167
201
  end
168
202
  end
@@ -190,70 +224,70 @@ function ObjectField.prototype.trySetValue(self, entry, value)
190
224
  end
191
225
  function ObjectField.prototype.getActualValue(self, instance)
192
226
  local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
193
- if defaultValueByObjectDataEntryId ~= nil then
194
- local defaultValue = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(instance)]
195
- if defaultValue ~= nil then
196
- local ____self_valueByInstance_instance_0 = self.valueByInstance[instance]
197
- if ____self_valueByInstance_instance_0 == nil then
198
- ____self_valueByInstance_instance_0 = defaultValue
227
+ if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
228
+ local defaultValue = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(instance)]
229
+ if defaultValue ~= nil or self.isGlobal then
230
+ local ____self_valueByInstance_instance_6 = self.valueByInstance[instance]
231
+ if ____self_valueByInstance_instance_6 == nil then
232
+ ____self_valueByInstance_instance_6 = defaultValue
199
233
  end
200
- return ____self_valueByInstance_instance_0
234
+ local ____self_valueByInstance_instance_6_7 = ____self_valueByInstance_instance_6
235
+ if ____self_valueByInstance_instance_6_7 == nil then
236
+ ____self_valueByInstance_instance_6_7 = self.defaultValue
237
+ end
238
+ return ____self_valueByInstance_instance_6_7
201
239
  end
202
240
  end
203
- local ____temp_1 = self:getNativeFieldValue(instance)
204
- if ____temp_1 == nil then
205
- ____temp_1 = self.defaultValue
241
+ local ____temp_8 = self:getNativeFieldValue(instance)
242
+ if ____temp_8 == nil then
243
+ ____temp_8 = self.defaultValue
206
244
  end
207
- return ____temp_1
245
+ return ____temp_8
208
246
  end
209
247
  function ObjectField.prototype.setActualValue(self, instance, value)
210
248
  local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
211
- if defaultValueByObjectDataEntryId ~= nil then
212
- local defaultValue = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(instance)]
249
+ local objectDataEntryId = self:getObjectDataEntryId(instance)
250
+ if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
251
+ local defaultValue = (defaultValueByObjectDataEntryId or emptyLuaMap())[objectDataEntryId]
213
252
  if defaultValue ~= nil or self.isGlobal then
214
- local ____self_valueByInstance_instance_2 = self.valueByInstance[instance]
215
- if ____self_valueByInstance_instance_2 == nil then
216
- ____self_valueByInstance_instance_2 = defaultValue
253
+ local ____self_valueByInstance_instance_9 = self.valueByInstance[instance]
254
+ if ____self_valueByInstance_instance_9 == nil then
255
+ ____self_valueByInstance_instance_9 = defaultValue
217
256
  end
218
- local ____self_valueByInstance_instance_2_3 = ____self_valueByInstance_instance_2
219
- if ____self_valueByInstance_instance_2_3 == nil then
220
- ____self_valueByInstance_instance_2_3 = self.defaultValue
257
+ local ____self_valueByInstance_instance_9_10 = ____self_valueByInstance_instance_9
258
+ if ____self_valueByInstance_instance_9_10 == nil then
259
+ ____self_valueByInstance_instance_9_10 = self.defaultValue
221
260
  end
222
- local previousValue = ____self_valueByInstance_instance_2_3
223
- if value ~= previousValue then
224
- self.valueByInstance[instance] = value
225
- self:invokeValueChangeEvent(instance, self, previousValue, value)
226
- end
227
- return true
261
+ local previousValue = ____self_valueByInstance_instance_9_10
262
+ self.valueByInstance[instance] = value
263
+ return previousValue
228
264
  end
229
265
  end
230
- if not self:hasNativeFieldValue(instance) then
231
- return false
266
+ if not self:hasNativeFieldValue(objectDataEntryId) then
267
+ return nil
232
268
  end
233
269
  local previousValue = self:getNativeFieldValue(instance)
234
- if value ~= previousValue then
235
- if not self:setNativeFieldValue(instance, value) then
236
- return false
237
- end
238
- self:invokeValueChangeEvent(instance, self, previousValue, value)
270
+ if value ~= previousValue and not self:setNativeFieldValue(instance, value) then
271
+ return nil
239
272
  end
240
- return true
273
+ return previousValue
241
274
  end
242
275
  function ObjectField.prototype.calculateActualValue(self, instance)
243
- local ____opt_4 = self.originalValueByInstance
244
- local originalValue = ____opt_4 and ____opt_4[instance]
245
- local ____opt_6 = self.modifiersByInstance
246
- local modifiers = ____opt_6 and ____opt_6[instance]
276
+ local ____opt_11 = self.originalValueByInstance
277
+ local originalValue = ____opt_11 and ____opt_11[instance]
278
+ local ____opt_13 = self.modifiersByInstance
279
+ local modifiers = ____opt_13 and ____opt_13[instance]
247
280
  if originalValue ~= nil then
248
281
  local value = originalValue
249
282
  if modifiers ~= nil then
250
283
  for modifier in pairs(modifiers) do
251
284
  value = modifier(instance, value, originalValue)
252
285
  end
286
+ return value, true
253
287
  end
254
- return value
288
+ return value, false
255
289
  end
256
- return self.defaultValue
290
+ return self.defaultValue, false
257
291
  end
258
292
  function ObjectField.prototype.invokeValueChangeEvent(self, ...)
259
293
  self:invokeValueChangeEventRecursive(
@@ -308,37 +342,37 @@ function ObjectArrayField.prototype.getValue(self, entry, index)
308
342
  if defaultValueByObjectDataEntryId ~= nil then
309
343
  local value = defaultValueByObjectDataEntryId[entry.id]
310
344
  if value ~= nil then
311
- local ____temp_9
345
+ local ____temp_16
312
346
  if index == nil then
313
- ____temp_9 = value
347
+ ____temp_16 = value
314
348
  else
315
- local ____value_index_8 = value[index + 1]
316
- if ____value_index_8 == nil then
317
- ____value_index_8 = self.defaultValue
349
+ local ____value_index_15 = value[index + 1]
350
+ if ____value_index_15 == nil then
351
+ ____value_index_15 = self.defaultValue
318
352
  end
319
- ____temp_9 = ____value_index_8
353
+ ____temp_16 = ____value_index_15
320
354
  end
321
- return ____temp_9
355
+ return ____temp_16
322
356
  end
323
357
  end
324
358
  return index == nil and ({}) or self.defaultValue
325
359
  end
326
360
  local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
327
- if defaultValueByObjectDataEntryId ~= nil then
328
- local defaultValue = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
329
- if defaultValue ~= nil then
330
- local value = self.valueByInstance[entry] or defaultValue
331
- local ____temp_11
361
+ if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
362
+ local defaultValue = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(entry)]
363
+ if defaultValue ~= nil or self.isGlobal then
364
+ local value = self.valueByInstance[entry] or defaultValue or emptyArray()
365
+ local ____temp_18
332
366
  if index == nil then
333
- ____temp_11 = value
367
+ ____temp_18 = value
334
368
  else
335
- local ____value_index_10 = value[index + 1]
336
- if ____value_index_10 == nil then
337
- ____value_index_10 = self.defaultValue
369
+ local ____value_index_17 = value[index + 1]
370
+ if ____value_index_17 == nil then
371
+ ____value_index_17 = self.defaultValue
338
372
  end
339
- ____temp_11 = ____value_index_10
373
+ ____temp_18 = ____value_index_17
340
374
  end
341
- return ____temp_11
375
+ return ____temp_18
342
376
  end
343
377
  end
344
378
  if index ~= nil then
@@ -369,12 +403,12 @@ ____exports.ObjectLevelField = __TS__Class()
369
403
  local ObjectLevelField = ____exports.ObjectLevelField
370
404
  ObjectLevelField.name = "ObjectLevelField"
371
405
  __TS__ClassExtends(ObjectLevelField, ObjectFieldBase)
372
- function ObjectLevelField.prototype.getValue(self, entry, level)
406
+ function ObjectLevelField.prototype.getValue(self, entry, level, includeModifiers)
373
407
  if level == nil then
374
408
  local result = {}
375
409
  local levelCount = self:getLevelCount(entry)
376
410
  for i = 0, levelCount - 1 do
377
- result[i + 1] = self:getValue(entry, i)
411
+ result[i + 1] = self:getValue(entry, i, includeModifiers)
378
412
  end
379
413
  return result
380
414
  end
@@ -383,36 +417,24 @@ function ObjectLevelField.prototype.getValue(self, entry, level)
383
417
  if defaultValueByObjectDataEntryId ~= nil then
384
418
  local valueByLevel = defaultValueByObjectDataEntryId[entry.id]
385
419
  if valueByLevel ~= nil then
386
- local ____valueByLevel_index_12 = valueByLevel[level + 1]
387
- if ____valueByLevel_index_12 == nil then
388
- ____valueByLevel_index_12 = self.defaultValue
420
+ local ____valueByLevel_index_19 = valueByLevel[level + 1]
421
+ if ____valueByLevel_index_19 == nil then
422
+ ____valueByLevel_index_19 = self.defaultValue
389
423
  end
390
- return ____valueByLevel_index_12
424
+ return ____valueByLevel_index_19
391
425
  end
392
426
  end
393
427
  return self.defaultValue
394
428
  end
395
- local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
396
- if defaultValueByObjectDataEntryId ~= nil then
397
- local defaultValueByLevel = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
398
- if defaultValueByLevel ~= nil then
399
- local ____opt_13 = self.valueByInstance[entry]
400
- local ____temp_15 = ____opt_13 and ____opt_13[level + 1]
401
- if ____temp_15 == nil then
402
- ____temp_15 = defaultValueByLevel[level + 1]
403
- end
404
- local ____temp_15_16 = ____temp_15
405
- if ____temp_15_16 == nil then
406
- ____temp_15_16 = self.defaultValue
407
- end
408
- return ____temp_15_16
429
+ if not includeModifiers then
430
+ local ____opt_22 = self.originalValueByLevelByInstance
431
+ local ____opt_20 = ____opt_22 and ____opt_22[entry]
432
+ local originalValue = ____opt_20 and ____opt_20[level]
433
+ if originalValue ~= nil then
434
+ return originalValue
409
435
  end
410
436
  end
411
- local ____temp_17 = self:getNativeFieldValue(entry, level)
412
- if ____temp_17 == nil then
413
- ____temp_17 = self.defaultValue
414
- end
415
- return ____temp_17
437
+ return self:getActualValue(entry, level)
416
438
  end
417
439
  function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
418
440
  if value == nil then
@@ -452,55 +474,114 @@ function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
452
474
  valueByLevel[level + 1] = value
453
475
  return true
454
476
  end
455
- local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
456
- if defaultValueByObjectDataEntryId ~= nil then
457
- local defaultValueByLevel = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
458
- if defaultValueByLevel ~= nil then
459
- local valueByLevel = self.valueByInstance[entry]
460
- if valueByLevel == nil then
461
- valueByLevel = {}
462
- self.valueByInstance[entry] = valueByLevel
463
- end
464
- local ____valueByLevel_index_18 = valueByLevel[level + 1]
465
- if ____valueByLevel_index_18 == nil then
466
- ____valueByLevel_index_18 = defaultValueByLevel[level + 1]
467
- end
468
- local ____valueByLevel_index_18_19 = ____valueByLevel_index_18
469
- if ____valueByLevel_index_18_19 == nil then
470
- ____valueByLevel_index_18_19 = self.defaultValue
477
+ local previousOriginalValue
478
+ local modifiersByInstance = self.modifiersByInstance
479
+ if modifiersByInstance ~= nil then
480
+ local modifiers = modifiersByInstance[entry]
481
+ if modifiers ~= nil and modifiers.size ~= 0 then
482
+ local originalValueByLevelByInstance = self.originalValueByLevelByInstance
483
+ if originalValueByLevelByInstance == nil then
484
+ originalValueByLevelByInstance = mutableWeakLuaMap()
485
+ self.originalValueByLevelByInstance = originalValueByLevelByInstance
471
486
  end
472
- local previousValue = ____valueByLevel_index_18_19
473
- if value ~= previousValue then
474
- valueByLevel[level + 1] = value
475
- self:invokeValueChangeEvent(
476
- entry,
477
- self,
478
- level,
479
- previousValue,
480
- value
481
- )
487
+ local originalValueByLevel = getOrPut(originalValueByLevelByInstance, entry, mutableLuaMap)
488
+ previousOriginalValue = originalValueByLevel[level]
489
+ if value == previousOriginalValue then
490
+ return true
482
491
  end
483
- return true
492
+ originalValueByLevel[level] = value
493
+ value = self:calculateActualValue(entry, level)
484
494
  end
485
495
  end
486
- if not self:hasNativeFieldValue(entry) then
496
+ local previousValue = self:setActualValue(entry, level, value)
497
+ if previousValue == nil then
487
498
  return false
488
499
  end
489
- local previousValue = self:getNativeFieldValue(entry, level)
490
- if value ~= previousValue then
491
- if not self:setNativeFieldValue(entry, level, value) then
492
- return false
500
+ if previousOriginalValue ~= nil or value ~= previousValue then
501
+ local ____self_invokeValueChangeEvent_26 = self.invokeValueChangeEvent
502
+ local ____entry_25 = entry
503
+ local ____previousOriginalValue_24 = previousOriginalValue
504
+ if ____previousOriginalValue_24 == nil then
505
+ ____previousOriginalValue_24 = previousValue
493
506
  end
494
- self:invokeValueChangeEvent(
495
- entry,
507
+ ____self_invokeValueChangeEvent_26(
508
+ self,
509
+ ____entry_25,
496
510
  self,
497
511
  level,
498
- previousValue,
512
+ ____previousOriginalValue_24,
499
513
  value
500
514
  )
501
515
  end
502
516
  return true
503
517
  end
518
+ function ObjectLevelField.prototype.updateActualValue(self, instance, level)
519
+ local modifiersByInstance = self.modifiersByInstance
520
+ if modifiersByInstance == nil then
521
+ return
522
+ end
523
+ local modifiers = modifiersByInstance[instance]
524
+ if modifiers == nil or modifiers.size == 0 then
525
+ return
526
+ end
527
+ if level == nil then
528
+ for i = 0, self:getLevelCount(instance) - 1 do
529
+ self:updateActualValue(instance, i)
530
+ end
531
+ return
532
+ end
533
+ self:setActualValue(
534
+ instance,
535
+ level,
536
+ self:calculateActualValue(instance, level)
537
+ )
538
+ end
539
+ function ObjectLevelField.prototype.applyModifier(self, instance, modifier)
540
+ local modifiersByInstance = self.modifiersByInstance
541
+ if modifiersByInstance == nil then
542
+ modifiersByInstance = mutableWeakLuaMap()
543
+ self.modifiersByInstance = modifiersByInstance
544
+ end
545
+ if getOrPut(modifiersByInstance, instance, mutableLinkedSet):add(modifier) then
546
+ local originalValueByLevelByInstance = self.originalValueByLevelByInstance
547
+ if originalValueByLevelByInstance == nil then
548
+ originalValueByLevelByInstance = mutableWeakLuaMap()
549
+ self.originalValueByLevelByInstance = originalValueByLevelByInstance
550
+ end
551
+ local originalValueByLevel = getOrPut(originalValueByLevelByInstance, instance, mutableLuaMap)
552
+ local levelCount = self:getLevelCount(instance)
553
+ for level = 0, levelCount - 1 do
554
+ local ____originalValueByLevel_level_27 = originalValueByLevel[level]
555
+ if ____originalValueByLevel_level_27 == nil then
556
+ ____originalValueByLevel_level_27 = self:getActualValue(instance, level)
557
+ end
558
+ originalValueByLevel[level] = ____originalValueByLevel_level_27
559
+ self:setActualValue(
560
+ instance,
561
+ level,
562
+ self:calculateActualValue(instance, level)
563
+ )
564
+ end
565
+ end
566
+ end
567
+ function ObjectLevelField.prototype.removeModifier(self, instance, modifier)
568
+ local modifiersByInstance = self.modifiersByInstance
569
+ if modifiersByInstance ~= nil then
570
+ local modifiers = modifiersByInstance[instance]
571
+ if modifiers ~= nil and modifiers:remove(modifier) then
572
+ local levelCount = self:getLevelCount(instance)
573
+ for level = 0, levelCount - 1 do
574
+ self:setActualValue(
575
+ instance,
576
+ level,
577
+ self:calculateActualValue(instance, level)
578
+ )
579
+ end
580
+ return true
581
+ end
582
+ end
583
+ return false
584
+ end
504
585
  function ObjectLevelField.prototype.trySetValue(self, entry, levelOrValue, value)
505
586
  if value ~= nil then
506
587
  if __TS__TypeOf(value) ~= __TS__TypeOf(self.defaultValue) then
@@ -516,6 +597,79 @@ function ObjectLevelField.prototype.trySetValue(self, entry, levelOrValue, value
516
597
  end
517
598
  return self:setValue(entry, levelOrValue)
518
599
  end
600
+ function ObjectLevelField.prototype.getActualValue(self, instance, level)
601
+ local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
602
+ if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
603
+ local defaultValueByLevel = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(instance)]
604
+ if defaultValueByLevel ~= nil or self.isGlobal then
605
+ local ____opt_28 = self.valueByInstance[instance]
606
+ local ____temp_30 = ____opt_28 and ____opt_28[level + 1]
607
+ if ____temp_30 == nil then
608
+ ____temp_30 = (defaultValueByLevel or emptyArray())[level + 1]
609
+ end
610
+ local ____temp_30_31 = ____temp_30
611
+ if ____temp_30_31 == nil then
612
+ ____temp_30_31 = self.defaultValue
613
+ end
614
+ return ____temp_30_31
615
+ end
616
+ end
617
+ local ____temp_32 = self:getNativeFieldValue(instance, level)
618
+ if ____temp_32 == nil then
619
+ ____temp_32 = self.defaultValue
620
+ end
621
+ return ____temp_32
622
+ end
623
+ function ObjectLevelField.prototype.setActualValue(self, instance, level, value)
624
+ local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
625
+ local objectDataEntryId = self:getObjectDataEntryId(instance)
626
+ if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
627
+ local defaultValueByLevel = (defaultValueByObjectDataEntryId or emptyLuaMap())[objectDataEntryId]
628
+ if defaultValueByLevel ~= nil or self.isGlobal then
629
+ local valueByLevel = self.valueByInstance[instance]
630
+ if valueByLevel == nil then
631
+ valueByLevel = {}
632
+ self.valueByInstance[instance] = valueByLevel
633
+ end
634
+ local ____valueByLevel_index_33 = valueByLevel[level + 1]
635
+ if ____valueByLevel_index_33 == nil then
636
+ ____valueByLevel_index_33 = (defaultValueByLevel or emptyArray())[level + 1]
637
+ end
638
+ local ____valueByLevel_index_33_34 = ____valueByLevel_index_33
639
+ if ____valueByLevel_index_33_34 == nil then
640
+ ____valueByLevel_index_33_34 = self.defaultValue
641
+ end
642
+ local previousValue = ____valueByLevel_index_33_34
643
+ valueByLevel[level + 1] = value
644
+ return previousValue
645
+ end
646
+ end
647
+ if not self:hasNativeFieldValue(objectDataEntryId) then
648
+ return nil
649
+ end
650
+ local previousValue = self:getNativeFieldValue(instance, level)
651
+ if value ~= previousValue and not self:setNativeFieldValue(instance, level, value) then
652
+ return nil
653
+ end
654
+ return previousValue
655
+ end
656
+ function ObjectLevelField.prototype.calculateActualValue(self, instance, level)
657
+ local ____opt_37 = self.originalValueByLevelByInstance
658
+ local ____opt_35 = ____opt_37 and ____opt_37[instance]
659
+ local originalValue = ____opt_35 and ____opt_35[level]
660
+ local ____opt_39 = self.modifiersByInstance
661
+ local modifiers = ____opt_39 and ____opt_39[instance]
662
+ if originalValue ~= nil then
663
+ local value = originalValue
664
+ if modifiers ~= nil then
665
+ for modifier in pairs(modifiers) do
666
+ value = modifier(instance, level, value, originalValue)
667
+ end
668
+ end
669
+ return value
670
+ end
671
+ return self.defaultValue
672
+ end
519
673
  function ObjectLevelField.prototype.invokeValueChangeEvent(self, ...)
520
674
  self:invokeValueChangeEventRecursive(
521
675
  getClass(self),
@@ -1,4 +1,5 @@
1
1
  /** @noSelfInFile */
2
+ import { ReadonlyNonEmptyArray } from "../utility/types";
2
3
  export declare const randomAngle: () => number;
3
4
  export declare const randomInteger: {
4
5
  (upperBound?: number): number;
@@ -9,3 +10,12 @@ export declare const randomFloat: {
9
10
  (lowerBound: number, upperBound: number): number;
10
11
  };
11
12
  export declare const randomXY: (centerX: number, centerY: number, range: number) => LuaMultiReturn<[x: number, y: number]>;
13
+ export declare const randomElement: {
14
+ <T>(array: ReadonlyNonEmptyArray<T>): T;
15
+ <T>(array: ReadonlyArray<T>): T | undefined;
16
+ };
17
+ export declare const random: {
18
+ <T>(element: T, ...elements: T[]): T;
19
+ <T>(...elements: T[]): T | undefined;
20
+ };
21
+ export declare const shuffle: (array: unknown[]) => void;
package/engine/random.lua CHANGED
@@ -4,6 +4,7 @@ local MAXIMUM_INTEGER = ____math.MAXIMUM_INTEGER
4
4
  local PI = ____math.PI
5
5
  local getRandomInt = GetRandomInt
6
6
  local getRandomReal = GetRandomReal
7
+ local select = _G.select
7
8
  local cos = math.cos
8
9
  local sin = math.sin
9
10
  local sqrt = math.sqrt
@@ -15,4 +16,24 @@ ____exports.randomXY = function(centerX, centerY, range)
15
16
  local t = getRandomReal(0, 1) * 2 * PI
16
17
  return centerX + r * cos(t), centerY + r * sin(t)
17
18
  end
19
+ ____exports.randomElement = function(array)
20
+ return array[getRandomInt(1, #array)]
21
+ end
22
+ ____exports.random = function(...)
23
+ return (select(
24
+ getRandomInt(
25
+ 1,
26
+ select("#", ...)
27
+ ),
28
+ ...
29
+ ))
30
+ end
31
+ ____exports.shuffle = function(array)
32
+ for i = #array - 1, 1, -1 do
33
+ local j = getRandomInt(0, i)
34
+ local value = array[i + 1]
35
+ array[i + 1] = array[j + 1]
36
+ array[j + 1] = value
37
+ end
38
+ end
18
39
  return ____exports