warscript 0.0.1-dev.c37d12c → 0.0.1-dev.c47d565

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 (498) hide show
  1. package/attributes.d.ts +18 -0
  2. package/attributes.lua +32 -0
  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 -3
  11. package/core/types/frame.lua +198 -42
  12. package/core/types/group.d.ts +0 -1
  13. package/core/types/handle.d.ts +2 -1
  14. package/core/types/handle.lua +14 -9
  15. package/core/types/image.d.ts +0 -1
  16. package/core/types/item.d.ts +1 -0
  17. package/core/types/item.lua +1 -0
  18. package/core/types/missile.d.ts +2 -2
  19. package/core/types/missile.lua +8 -2
  20. package/core/types/player.d.ts +18 -1
  21. package/core/types/player.lua +76 -26
  22. package/core/types/playerCamera.d.ts +2 -0
  23. package/core/types/playerCamera.lua +123 -5
  24. package/core/types/playerColor.lua +4 -3
  25. package/core/types/sound.d.ts +18 -25
  26. package/core/types/sound.lua +113 -33
  27. package/core/types/tileCell.d.ts +18 -3
  28. package/core/types/tileCell.lua +108 -0
  29. package/core/types/timer.d.ts +9 -8
  30. package/core/types/timer.lua +45 -23
  31. package/core/types/unit.d.ts +5 -0
  32. package/core/types/unit.lua +13 -0
  33. package/core/util.d.ts +3 -1
  34. package/core/util.lua +127 -4
  35. package/decl/index.d.ts +1 -0
  36. package/decl/native.d.ts +1718 -964
  37. package/destroyable.d.ts +1 -0
  38. package/destroyable.lua +9 -0
  39. package/engine/ability-type-extended-tooltip.d.ts +8 -0
  40. package/engine/ability-type-extended-tooltip.lua +44 -0
  41. package/engine/ability.d.ts +1 -1
  42. package/engine/behavior.d.ts +24 -11
  43. package/engine/behavior.lua +233 -73
  44. package/engine/behaviour/ability/always-enabled.d.ts +7 -0
  45. package/engine/behaviour/ability/always-enabled.lua +31 -0
  46. package/engine/behaviour/ability/apply-buff.d.ts +8 -5
  47. package/engine/behaviour/ability/apply-buff.lua +36 -4
  48. package/engine/behaviour/ability/apply-unit-behavior.d.ts +13 -4
  49. package/engine/behaviour/ability/apply-unit-behavior.lua +37 -9
  50. package/engine/behaviour/ability/damage.d.ts +43 -11
  51. package/engine/behaviour/ability/damage.lua +89 -39
  52. package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
  53. package/engine/behaviour/ability/emulate-impact.lua +44 -0
  54. package/engine/behaviour/ability/heal.d.ts +33 -6
  55. package/engine/behaviour/ability/heal.lua +89 -10
  56. package/engine/behaviour/ability/instant-impact.d.ts +2 -2
  57. package/engine/behaviour/ability/instant-impact.lua +4 -15
  58. package/engine/behaviour/ability/on-command-impact.d.ts +9 -0
  59. package/engine/behaviour/ability/on-command-impact.lua +26 -0
  60. package/engine/behaviour/ability/remove-buffs.d.ts +25 -0
  61. package/engine/behaviour/ability/remove-buffs.lua +49 -0
  62. package/engine/behaviour/ability/restore-mana.d.ts +15 -0
  63. package/engine/behaviour/ability/restore-mana.lua +29 -0
  64. package/engine/behaviour/ability.d.ts +37 -7
  65. package/engine/behaviour/ability.lua +208 -27
  66. package/engine/behaviour/unit/stun-immunity.d.ts +12 -7
  67. package/engine/behaviour/unit/stun-immunity.lua +57 -31
  68. package/engine/behaviour/unit.d.ts +49 -4
  69. package/engine/behaviour/unit.lua +293 -2
  70. package/engine/buff.d.ts +177 -59
  71. package/engine/buff.lua +795 -281
  72. package/engine/game-map.d.ts +7 -0
  73. package/engine/game-map.lua +32 -0
  74. package/engine/index.d.ts +2 -1
  75. package/engine/internal/ability.d.ts +31 -15
  76. package/engine/internal/ability.lua +177 -104
  77. package/engine/internal/item/ability.lua +162 -4
  78. package/engine/internal/item/fields.d.ts +12 -0
  79. package/engine/internal/item/fields.lua +33 -0
  80. package/engine/internal/item/owner-cache.d.ts +5 -0
  81. package/engine/internal/item/owner-cache.lua +4 -0
  82. package/engine/internal/item+owner.d.ts +2 -0
  83. package/engine/internal/item+owner.lua +37 -8
  84. package/engine/internal/item.d.ts +34 -18
  85. package/engine/internal/item.lua +308 -102
  86. package/engine/internal/mechanics/ability-duration.d.ts +1 -3
  87. package/engine/internal/mechanics/ability-duration.lua +3 -1
  88. package/engine/internal/mechanics/cast-ability.lua +89 -0
  89. package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
  90. package/engine/internal/misc/ability-disable-counter.lua +13 -0
  91. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  92. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  93. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  94. package/engine/internal/misc/frame-coordinates.lua +21 -0
  95. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  96. package/engine/internal/misc/get-terrain-z.lua +11 -0
  97. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  98. package/engine/internal/misc/player-local-handle.lua +5 -0
  99. package/engine/internal/misc/unit-ability-level-natives.d.ts +2 -0
  100. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  101. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  102. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  103. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  104. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  105. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  106. package/engine/internal/object-data/evasion-probability.lua +16 -0
  107. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  108. package/engine/internal/object-data/health-bonus.lua +16 -0
  109. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  110. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  111. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  112. package/engine/internal/object-data/mana-bonus.lua +16 -0
  113. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  114. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  115. package/engine/internal/object-data/returned-melee-damage-factor.d.ts +2 -0
  116. package/engine/internal/object-data/returned-melee-damage-factor.lua +21 -0
  117. package/engine/internal/unit/ability.d.ts +45 -1
  118. package/engine/internal/unit/ability.lua +128 -17
  119. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  120. package/engine/internal/unit/add-item-to-slot-init.lua +12 -0
  121. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  122. package/engine/internal/unit/add-item-to-slot.lua +93 -0
  123. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  124. package/engine/internal/unit/allowed-targets.lua +9 -1
  125. package/engine/internal/unit/appearance.d.ts +15 -0
  126. package/engine/internal/unit/appearance.lua +85 -0
  127. package/engine/internal/unit/attributes.d.ts +17 -0
  128. package/engine/internal/unit/attributes.lua +46 -0
  129. package/engine/internal/unit/bonus.d.ts +28 -8
  130. package/engine/internal/unit/bonus.lua +136 -9
  131. package/engine/internal/unit/buff.d.ts +2 -2
  132. package/engine/internal/unit/buff.lua +34 -19
  133. package/engine/internal/unit/detach-missiles.d.ts +7 -0
  134. package/engine/internal/unit/detach-missiles.lua +30 -0
  135. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  136. package/engine/internal/unit/equipment-inventory.lua +233 -0
  137. package/engine/internal/unit/expiration-timer.lua +1 -1
  138. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  139. package/engine/internal/unit/extended-inventory.lua +99 -0
  140. package/engine/internal/unit/fly-height.d.ts +7 -0
  141. package/engine/internal/unit/fly-height.lua +20 -0
  142. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  143. package/engine/internal/unit/ignore-events-items.lua +14 -0
  144. package/engine/internal/unit/interrupts.d.ts +12 -0
  145. package/engine/internal/unit/interrupts.lua +28 -0
  146. package/engine/internal/unit/inventory.d.ts +28 -0
  147. package/engine/internal/unit/inventory.lua +87 -0
  148. package/engine/internal/unit/item-container.d.ts +25 -0
  149. package/engine/internal/unit/item-container.lua +11 -0
  150. package/engine/internal/unit/item-order-events.d.ts +17 -0
  151. package/engine/internal/unit/item-order-events.lua +67 -0
  152. package/engine/internal/unit/item-slot.d.ts +27 -0
  153. package/engine/internal/unit/item-slot.lua +92 -0
  154. package/engine/internal/unit/main-selected.d.ts +13 -0
  155. package/engine/internal/unit/main-selected.lua +36 -0
  156. package/engine/internal/unit/order.d.ts +20 -0
  157. package/engine/internal/unit/order.lua +136 -0
  158. package/engine/internal/unit/range-event.d.ts +12 -0
  159. package/engine/internal/unit/range-event.lua +90 -0
  160. package/engine/internal/unit/scale.d.ts +7 -0
  161. package/engine/internal/unit/scale.lua +20 -0
  162. package/engine/internal/unit+ability.d.ts +2 -1
  163. package/engine/internal/unit+ability.lua +75 -5
  164. package/engine/internal/unit+bonus.lua +3 -3
  165. package/engine/internal/unit+damage.d.ts +11 -11
  166. package/engine/internal/unit+damage.lua +43 -14
  167. package/engine/internal/unit+rally.lua +9 -31
  168. package/engine/internal/unit+spellSteal.lua +1 -2
  169. package/engine/internal/unit+transport.lua +4 -10
  170. package/engine/internal/unit-missile-data.lua +58 -32
  171. package/engine/internal/unit-missile-launch.lua +70 -13
  172. package/engine/internal/unit.d.ts +91 -38
  173. package/engine/internal/unit.lua +669 -351
  174. package/engine/internal/utility.lua +12 -0
  175. package/engine/lightning.d.ts +12 -5
  176. package/engine/lightning.lua +48 -14
  177. package/engine/local-client.d.ts +35 -2
  178. package/engine/local-client.lua +367 -15
  179. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  180. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  181. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  182. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  183. package/engine/object-data/auxiliary/attachment-preset.d.ts +14 -3
  184. package/engine/object-data/auxiliary/attachment-preset.lua +11 -3
  185. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  186. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  187. package/engine/object-data/auxiliary/combat-classification.d.ts +0 -2
  188. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  189. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  190. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  191. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  192. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  193. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  194. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  195. package/engine/object-data/auxiliary/item-class.lua +2 -0
  196. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  197. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  198. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  199. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  200. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  201. package/engine/object-data/auxiliary/order-type.lua +2 -0
  202. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  203. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  204. package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
  205. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  206. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  207. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  208. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  209. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  210. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  211. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  212. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  213. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  214. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  215. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  216. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  217. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  218. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  219. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  220. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  221. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  222. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  223. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  224. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  225. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +0 -1
  226. package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
  227. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.d.ts +23 -0
  228. package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.lua +112 -0
  229. package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -1
  230. package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
  231. package/engine/object-data/entry/ability-type/blink.d.ts +10 -0
  232. package/engine/object-data/entry/ability-type/blink.lua +39 -0
  233. package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
  234. package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
  235. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  236. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  237. package/engine/object-data/entry/ability-type/channel.d.ts +0 -1
  238. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  239. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  240. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  241. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  242. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  243. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  244. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  245. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  246. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  247. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  248. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  249. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  250. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  251. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  252. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  253. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  254. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  255. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  256. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  257. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  258. package/engine/object-data/entry/ability-type/exhume-corpses.d.ts +14 -0
  259. package/engine/object-data/entry/ability-type/exhume-corpses.lua +40 -0
  260. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  261. package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
  262. package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
  263. package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
  264. package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
  265. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  266. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  267. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  268. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  269. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  270. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  271. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  272. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  273. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  274. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  275. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  276. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  277. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  278. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  279. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  280. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  281. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  282. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  283. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  284. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  285. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  286. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  287. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  288. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  289. package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
  290. package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
  291. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  292. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  293. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  294. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  295. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  296. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  297. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  298. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  299. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  300. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  301. package/engine/object-data/entry/ability-type/mine.d.ts +10 -0
  302. package/engine/object-data/entry/ability-type/mine.lua +39 -0
  303. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  304. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  305. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  306. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  307. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  308. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  309. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  310. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  311. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  312. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  313. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  314. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  315. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  316. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  317. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  318. package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
  319. package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
  320. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  321. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  322. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  323. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  324. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  325. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  326. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  327. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  328. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  329. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  330. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  331. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  332. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  333. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  334. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  335. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  336. package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
  337. package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
  338. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  339. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  340. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  341. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  342. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  343. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  344. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  345. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  346. package/engine/object-data/entry/ability-type/spirit-touch.d.ts +2 -2
  347. package/engine/object-data/entry/ability-type/spirit-touch.lua +6 -6
  348. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  349. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  350. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  351. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  352. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  353. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  354. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  355. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  356. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  357. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  358. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  359. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  360. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  361. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  362. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  363. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  364. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  365. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  366. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  367. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  368. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  369. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  370. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  371. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  372. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  373. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  374. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  375. package/engine/object-data/entry/ability-type/web.lua +52 -0
  376. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  377. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  378. package/engine/object-data/entry/ability-type.d.ts +48 -21
  379. package/engine/object-data/entry/ability-type.lua +377 -44
  380. package/engine/object-data/entry/buff-type/applicable.d.ts +0 -1
  381. package/engine/object-data/entry/buff-type/applicable.lua +143 -202
  382. package/engine/object-data/entry/buff-type/blank.d.ts +0 -1
  383. package/engine/object-data/entry/buff-type.d.ts +10 -13
  384. package/engine/object-data/entry/buff-type.lua +39 -29
  385. package/engine/object-data/entry/destructible-type.d.ts +32 -3
  386. package/engine/object-data/entry/destructible-type.lua +181 -0
  387. package/engine/object-data/entry/item-type/blank.d.ts +0 -1
  388. package/engine/object-data/entry/item-type.d.ts +32 -4
  389. package/engine/object-data/entry/item-type.lua +177 -2
  390. package/engine/object-data/entry/lightning-type.d.ts +6 -9
  391. package/engine/object-data/entry/lightning-type.lua +1 -1
  392. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  393. package/engine/object-data/entry/sound-preset.lua +140 -0
  394. package/engine/object-data/entry/unit-type.d.ts +121 -6
  395. package/engine/object-data/entry/unit-type.lua +959 -118
  396. package/engine/object-data/entry/upgrade/blank.d.ts +0 -1
  397. package/engine/object-data/entry/upgrade.d.ts +2 -3
  398. package/engine/object-data/entry/upgrade.lua +4 -4
  399. package/engine/object-data/entry.d.ts +23 -17
  400. package/engine/object-data/entry.lua +68 -32
  401. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  402. package/engine/object-field/ability.d.ts +33 -8
  403. package/engine/object-field/ability.lua +63 -3
  404. package/engine/object-field/item.d.ts +22 -0
  405. package/engine/object-field/item.lua +118 -0
  406. package/engine/object-field/unit.d.ts +72 -2
  407. package/engine/object-field/unit.lua +268 -4
  408. package/engine/object-field.d.ts +30 -11
  409. package/engine/object-field.lua +386 -122
  410. package/engine/random.d.ts +11 -0
  411. package/engine/random.lua +30 -0
  412. package/engine/standard/entries/ability-type.d.ts +3102 -7
  413. package/engine/standard/entries/ability-type.lua +0 -6
  414. package/engine/standard/entries/buff-type.d.ts +48 -0
  415. package/engine/standard/entries/buff-type.lua +46 -0
  416. package/engine/standard/entries/item-type.d.ts +1299 -0
  417. package/engine/standard/entries/item-type.lua +2 -0
  418. package/engine/standard/entries/lightning-type.d.ts +42 -15
  419. package/engine/standard/entries/lightning-type.lua +0 -14
  420. package/engine/standard/entries/sound-preset.d.ts +10 -0
  421. package/engine/standard/entries/sound-preset.lua +10 -0
  422. package/engine/standard/entries/unit-type.d.ts +47 -1
  423. package/engine/standard/entries/unit-type.lua +47 -1
  424. package/engine/standard/fields/ability.d.ts +5 -3
  425. package/engine/standard/fields/ability.lua +5 -3
  426. package/engine/standard/fields/item.d.ts +4 -0
  427. package/engine/standard/fields/item.lua +6 -0
  428. package/engine/standard/fields/unit.d.ts +12 -0
  429. package/engine/standard/fields/unit.lua +20 -0
  430. package/engine/synchronization.d.ts +11 -0
  431. package/engine/synchronization.lua +77 -0
  432. package/engine/text-tag.d.ts +36 -2
  433. package/engine/text-tag.lua +250 -10
  434. package/engine/unit.d.ts +14 -0
  435. package/engine/unit.lua +23 -2
  436. package/event.d.ts +3 -4
  437. package/event.lua +9 -5
  438. package/global/vec2.lua +1 -0
  439. package/index.d.ts +1 -0
  440. package/index.lua +1 -0
  441. package/lualib_bundle.lua +147 -43
  442. package/math/vec2.d.ts +2 -9
  443. package/math.d.ts +2 -2
  444. package/math.lua +14 -0
  445. package/net/socket.d.ts +7 -1
  446. package/net/socket.lua +45 -4
  447. package/network.d.ts +1 -0
  448. package/network.lua +28 -3
  449. package/objutil/ability.d.ts +0 -1
  450. package/objutil/buff.d.ts +0 -1
  451. package/objutil/buff.lua +13 -12
  452. package/objutil/object.d.ts +0 -1
  453. package/objutil/object.lua +1 -1
  454. package/objutil/unit.d.ts +0 -1
  455. package/objutil/unit.lua +8 -0
  456. package/operation.d.ts +8 -1
  457. package/operation.lua +38 -18
  458. package/package.json +3 -24
  459. package/patch-lua.d.ts +0 -0
  460. package/patch-lua.lua +25 -0
  461. package/patch-lualib.lua +1 -1
  462. package/property.d.ts +55 -0
  463. package/property.lua +374 -0
  464. package/string.d.ts +30 -0
  465. package/string.lua +14 -0
  466. package/util/stream.d.ts +0 -1
  467. package/utility/arrays.d.ts +20 -6
  468. package/utility/arrays.lua +62 -3
  469. package/utility/bit-set.d.ts +0 -2
  470. package/utility/callback-array.d.ts +17 -0
  471. package/utility/callback-array.lua +61 -0
  472. package/utility/functions.d.ts +8 -0
  473. package/utility/functions.lua +13 -0
  474. package/utility/lazy.d.ts +2 -0
  475. package/utility/lazy.lua +14 -0
  476. package/utility/linked-map.d.ts +35 -0
  477. package/utility/linked-map.lua +107 -0
  478. package/utility/linked-set.d.ts +17 -4
  479. package/utility/linked-set.lua +70 -3
  480. package/utility/lua-maps.d.ts +16 -4
  481. package/utility/lua-maps.lua +53 -2
  482. package/utility/lua-sets.d.ts +3 -2
  483. package/utility/lua-sets.lua +7 -0
  484. package/utility/random.d.ts +102 -0
  485. package/utility/random.lua +273 -0
  486. package/utility/records.lua +20 -1
  487. package/utility/reflection.lua +11 -7
  488. package/utility/types.d.ts +6 -2
  489. package/utility/unordered-map.d.ts +27 -0
  490. package/utility/unordered-map.lua +99 -0
  491. package/core/mapbounds.d.ts +0 -8
  492. package/core/mapbounds.lua +0 -12
  493. package/core/types/order.d.ts +0 -25
  494. package/core/types/order.lua +0 -55
  495. /package/engine/internal/{object-data/armor-increase.d.ts → mechanics/cast-ability.d.ts} +0 -0
  496. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  497. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  498. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -1,4 +1,3 @@
1
- /// <reference types="warpack-types/warpack" />
2
1
  /** @noSelfInFile */
3
2
  import { Upgrade, UpgradeId } from "../upgrade";
4
3
  export declare class BlankUpgrade extends Upgrade {
@@ -1,10 +1,9 @@
1
- /// <reference types="warpack-types/warpack" />
2
1
  /** @noSelfInFile */
3
2
  import { TupleOf } from "../../../utility/types";
4
3
  import { TechTreeDependency, TechTreeDependencyInput } from "../auxiliary/tech-tree-dependency";
5
- import { ObjectDataEntry, ObjectDataEntryId, ObjectDataEntryLevelFieldValueSupplier } from "../entry";
4
+ import { ObjectDataEntry, CustomObjectDataEntryId, ObjectDataEntryLevelFieldValueSupplier } from "../entry";
6
5
  import { AbilityTypeId } from "./ability-type";
7
- export type UpgradeId = ObjectDataEntryId & {
6
+ export type UpgradeId = CustomObjectDataEntryId & number & {
8
7
  readonly __upgradeId: unique symbol;
9
8
  };
10
9
  export declare const enum UpgradeEffectType {
@@ -32,7 +32,7 @@ function Upgrade.prototype.getEffect(self, i)
32
32
  type = effectType,
33
33
  bonusBase = self:getNumberField("gba" .. tostring(i)),
34
34
  bonusIncrement = self:getNumberField("gmo" .. tostring(i)),
35
- abilityTypeId = self:getObjectDataEntryIdField("gco" .. tostring(i))
35
+ abilityTypeId = self:getObjectDataEntryNumericIdField("gco" .. tostring(i))
36
36
  }
37
37
  end
38
38
  return nil
@@ -51,7 +51,7 @@ function Upgrade.prototype.setEffect(self, i, effect)
51
51
  effect and effect.bonusIncrement or 0
52
52
  )
53
53
  if (effect and effect.abilityTypeId) ~= nil then
54
- self:setObjectDataEntryIdField(
54
+ self:setObjectDataEntryNumericIdField(
55
55
  "gco" .. tostring(i),
56
56
  effect and effect.abilityTypeId
57
57
  )
@@ -145,7 +145,7 @@ __TS__SetDescriptor(
145
145
  "techTreeDependencies",
146
146
  {
147
147
  get = function(self)
148
- local techTreeDependencyIds = self:getObjectDataEntryIdsLevelField("greq")
148
+ local techTreeDependencyIds = self:getObjectDataEntryNumericIdsLevelField("greq")
149
149
  local techTreeDependencyInternalLevels = self:getNumbersLevelField("grqc")
150
150
  return mapIndexed(
151
151
  techTreeDependencyIds,
@@ -177,7 +177,7 @@ __TS__SetDescriptor(
177
177
  function(level) return level + 1 end
178
178
  )
179
179
  end
180
- self:setObjectDataEntryIdsLevelField("greq", techTreeDependencyIds)
180
+ self:setObjectDataEntryNumericIdsLevelField("greq", techTreeDependencyIds)
181
181
  self:setNumbersLevelField("grqc", techTreeDependencyInternalLevels)
182
182
  end
183
183
  },
@@ -1,17 +1,20 @@
1
- /// <reference types="warpack-types/warpack" />
2
1
  /** @noSelfInFile */
3
2
  import { AttachmentPreset, AttachmentPresetInput } from "./auxiliary/attachment-preset";
4
3
  import { MutableKeys } from "../../utility/types";
5
- export type ObjectDataEntryId = number & {
4
+ import { StandardAbilityTypeId } from "../standard/entries/ability-type";
5
+ import { StandardItemTypeId } from "../standard/entries/item-type";
6
+ import { StandardLightningTypeId } from "../standard/entries/lightning-type";
7
+ export type CustomObjectDataEntryId = (number | string) & {
6
8
  readonly __objectDataEntryId: unique symbol;
7
9
  };
10
+ export type ObjectDataEntryId = CustomObjectDataEntryId | StandardAbilityTypeId | StandardItemTypeId | StandardLightningTypeId;
8
11
  export type ObjectDataEntryIdType<T extends ObjectDataEntry> = T extends ObjectDataEntry<infer Id> ? Id : never;
9
12
  export type ObjectDataEntryConstructor<T extends ObjectDataEntry> = OmitConstructor<typeof ObjectDataEntry> & (new (object: WarObject) => T);
10
13
  export type ObjectDataEntryAbstractConstructor<T extends ObjectDataEntry> = OmitConstructor<typeof ObjectDataEntry> & (abstract new (object: WarObject) => T);
11
14
  export type ObjectDataEntryProperties<T extends ObjectDataEntry> = Partial<T[MutableKeys<T>]>;
12
15
  export type ObjectDataEntryLevelFieldValueSupplier<ValueType extends string | number | boolean | undefined | Record<string, any>, InputValueType = ValueType> = ValueType | readonly ValueType[] | ((level: number, currentValue: InputValueType) => ValueType);
13
- export declare const extractObjectDataEntryLevelFieldValue: <ValueType extends string | number | boolean | Record<string, any> | undefined, InputValueType = ValueType>(supplier: ObjectDataEntryLevelFieldValueSupplier<ValueType, InputValueType>, level: number, currentValue: InputValueType) => ValueType;
14
- export declare const extractObjectDataEntryLevelArrayFieldValue: <T extends string | number | boolean | Record<string, any> | undefined, S extends T[]>(supplier: ObjectDataEntryLevelFieldValueSupplier<S, S>, level: number, currentValue: S) => S;
16
+ export declare const extractObjectDataEntryLevelFieldValue: <ValueType extends string | number | boolean | undefined | Record<string, any>, InputValueType = ValueType>(supplier: ObjectDataEntryLevelFieldValueSupplier<ValueType, InputValueType>, level: number, currentValue: InputValueType) => ValueType;
17
+ export declare const extractObjectDataEntryLevelArrayFieldValue: <T extends string | number | boolean | undefined | Record<string, any>, S extends T[]>(supplier: ObjectDataEntryLevelFieldValueSupplier<S>, level: number, currentValue: S) => S;
15
18
  export declare abstract class ObjectDataEntry<Id extends ObjectDataEntryId = ObjectDataEntryId> {
16
19
  protected readonly object: WarObject;
17
20
  static readonly BASE_ID: ObjectDataEntryId;
@@ -19,14 +22,16 @@ export declare abstract class ObjectDataEntry<Id extends ObjectDataEntryId = Obj
19
22
  private readonly levelFieldParametersByField;
20
23
  private readonly maxAffectedLevelByField;
21
24
  private _isInternal;
25
+ private get type();
22
26
  get isInternal(): boolean;
23
- protected static generateId(): number;
27
+ static get idType(): "number" | "string";
28
+ protected static generateId(): number | string;
24
29
  protected static getObjectData(map: WarMap): WarObjects;
25
- static getAllIdsByBaseIds<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>, baseIds: number | number[]): ObjectDataEntryIdType<T>[];
26
- static create<T extends ObjectDataEntry>(this: ObjectDataEntryConstructor<T>, ...args: [id?: number, properties?: ObjectDataEntryProperties<T>] | [properties: ObjectDataEntryProperties<T>]): T;
27
- static getAllByBaseIds<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>, baseIds: number | number[]): T[];
30
+ static getAllIdsByBaseIds<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>, baseIds: number | number[] | string | string[]): ObjectDataEntryIdType<T>[];
31
+ static create<T extends ObjectDataEntry>(this: ObjectDataEntryConstructor<T>, ...args: [id?: number | string, properties?: ObjectDataEntryProperties<T>] | [properties: ObjectDataEntryProperties<T>]): T;
32
+ static getAllByBaseIds<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>, baseIds: number | number[] | string | string[]): T[];
28
33
  static getAll<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>): T[];
29
- static of<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>, id: number): T | undefined;
34
+ static of<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>, id: number | string): T | undefined;
30
35
  constructor(object: WarObject);
31
36
  get id(): Id;
32
37
  get baseId(): Id;
@@ -37,14 +42,15 @@ export declare abstract class ObjectDataEntry<Id extends ObjectDataEntryId = Obj
37
42
  setFieldValue<This extends this, Args extends any[]>(this: This, field: {
38
43
  setValue(entry: This, ...args: Args): boolean;
39
44
  }, ...args: Args): void;
45
+ copyFrom(id: Id): void;
40
46
  protected getBooleanField(field: string): boolean;
41
47
  protected setBooleanField(field: string, value: boolean): void;
42
48
  protected getNumberField(field: string): number;
43
49
  protected setNumberField(field: string, value: number): void;
44
50
  protected getStringField(field: string): string;
45
51
  protected setStringField(field: string, value: string): void;
46
- protected getObjectDataEntryIdField<Id extends ObjectDataEntryId>(field: string): Id;
47
- protected setObjectDataEntryIdField<Id extends ObjectDataEntryId>(field: string, value: Id): void;
52
+ protected getObjectDataEntryNumericIdField<Id extends ObjectDataEntryId & number>(field: string): Id;
53
+ protected setObjectDataEntryNumericIdField<Id extends ObjectDataEntryId & number>(field: string, value: Id): void;
48
54
  protected getAttachmentPresetField(modelPathField: string, nodeFQNField: string): AttachmentPreset | undefined;
49
55
  protected setAttachmentPresetField(modelPathField: string, nodeFQNField: string, attachmentPreset: AttachmentPresetInput | undefined): void;
50
56
  protected getBooleansField(field: string): boolean[];
@@ -53,8 +59,8 @@ export declare abstract class ObjectDataEntry<Id extends ObjectDataEntryId = Obj
53
59
  protected setNumbersField(field: string, values: number[]): void;
54
60
  protected getStringsField(field: string): string[];
55
61
  protected setStringsField(field: string, values: string[]): void;
56
- protected getObjectDataEntryIdsField<Id extends ObjectDataEntryId>(field: string): Id[];
57
- protected setObjectDataEntryIdsField<Id extends ObjectDataEntryId>(field: string, values: Id[]): void;
62
+ protected getObjectDataEntryNumericIdsField<Id extends ObjectDataEntryId & number>(field: string): Id[];
63
+ protected setObjectDataEntryNumericIdsField<Id extends ObjectDataEntryId & number>(field: string, values: Id[]): void;
58
64
  protected getAttachmentPresetListField(modelPathListField: string, nodeFQNFields: string[]): AttachmentPreset[];
59
65
  protected setAttachmentPresetListField(modelPathListField: string, nodeFQNFields: string[], lengthField: string, attachmentPresets: AttachmentPresetInput[]): void;
60
66
  protected setFlagLevelFieldValue(fieldId: string, flag: 1 | 2 | 4 | 8 | 16, supplier: ObjectDataEntryLevelFieldValueSupplier<boolean>): void;
@@ -65,16 +71,16 @@ export declare abstract class ObjectDataEntry<Id extends ObjectDataEntryId = Obj
65
71
  protected setNumberLevelField(field: string, values: ObjectDataEntryLevelFieldValueSupplier<number>): void;
66
72
  protected getStringLevelField(field: string): string[];
67
73
  protected setStringLevelField(field: string, values: ObjectDataEntryLevelFieldValueSupplier<string>): void;
68
- protected getObjectDataEntryIdLevelField<Id extends ObjectDataEntryId>(field: string): Id[];
69
- protected setObjectDataEntryIdLevelField<Id extends ObjectDataEntryId>(field: string, values: ObjectDataEntryLevelFieldValueSupplier<Id>): void;
74
+ protected getObjectDataEntryNumericIdLevelField<Id extends ObjectDataEntryId & number>(field: string): Id[];
75
+ protected setObjectDataEntryNumericIdLevelField<Id extends ObjectDataEntryId & number>(field: string, values: ObjectDataEntryLevelFieldValueSupplier<Id>): void;
70
76
  protected getBooleansLevelField(field: string): boolean[][];
71
77
  protected setBooleansLevelField(field: string, values: ObjectDataEntryLevelFieldValueSupplier<boolean[]>): void;
72
78
  protected getNumbersLevelField(field: string): number[][];
73
79
  protected setNumbersLevelField(field: string, values: ObjectDataEntryLevelFieldValueSupplier<number[]>): void;
74
80
  protected getStringsLevelField(field: string): string[][];
75
81
  protected setStringsLevelField(field: string, values: ObjectDataEntryLevelFieldValueSupplier<string[]>): void;
76
- protected getObjectDataEntryIdsLevelField<T extends ObjectDataEntryId>(field: string): T[][];
77
- protected setObjectDataEntryIdsLevelField<T extends ObjectDataEntryId>(field: string, values: ObjectDataEntryLevelFieldValueSupplier<T[]>): void;
82
+ protected getObjectDataEntryNumericIdsLevelField<T extends ObjectDataEntryId & number>(field: string): T[][];
83
+ protected setObjectDataEntryNumericIdsLevelField<T extends ObjectDataEntryId & number>(field: string, values: ObjectDataEntryLevelFieldValueSupplier<T[]>): void;
78
84
  private getLevelField;
79
85
  private setLevelField;
80
86
  }
@@ -7,10 +7,11 @@ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
7
7
  local __TS__InstanceOf = ____lualib.__TS__InstanceOf
8
8
  local __TS__ArrayMap = ____lualib.__TS__ArrayMap
9
9
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
10
+ local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
10
11
  local __TS__StringSplit = ____lualib.__TS__StringSplit
11
12
  local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
12
13
  local ____exports = {}
13
- local booleanToData, dataToBoolean, numberToData, dataToNumber, stringToData, dataToString, objectDataEntryIdToData, dataToObjectDataEntryId, booleansToData, dataToBooleans, numbersToData, dataToNumbers, stringsToData, dataToStrings, objectDataEntryIdsToData, dataToObjectDataEntryIds, isDataNotBlank
14
+ local booleanToData, dataToBoolean, numberToData, dataToNumber, stringToData, dataToString, objectDataEntryNumericIdToData, dataToObjectDataEntryNumericId, objectDataEntryIdToData, dataToObjectDataEntryId, booleansToData, dataToBooleans, numbersToData, dataToNumbers, stringsToData, dataToStrings, objectDataEntryNumericIdsToData, dataToObjectDataEntryNumericIds, isDataNotBlank
14
15
  local ____attachment_2Dpreset = require("engine.object-data.auxiliary.attachment-preset")
15
16
  local extractAttachmentPresetInputModelPath = ____attachment_2Dpreset.extractAttachmentPresetInputModelPath
16
17
  local extractAttachmentPresetInputNodeFQN = ____attachment_2Dpreset.extractAttachmentPresetInputNodeFQN
@@ -124,7 +125,7 @@ function ObjectDataEntry.getAllByBaseIds(self, baseIds)
124
125
  local constructor = self
125
126
  for id, object in pairs(constructor:getObjectData(currentMap).all) do
126
127
  if dataBaseIds[object.parentId or id] ~= nil then
127
- local objectDataEntry = self:of(dataToObjectDataEntryId(id))
128
+ local objectDataEntry = self:of(dataToObjectDataEntryId(id, self.idType))
128
129
  if objectDataEntry ~= nil and not objectDataEntry.isInternal then
129
130
  result[#result + 1] = objectDataEntry
130
131
  end
@@ -139,7 +140,7 @@ function ObjectDataEntry.getAll(self)
139
140
  local constructor = self
140
141
  local result = {}
141
142
  for id in pairs(constructor:getObjectData(currentMap).all) do
142
- local objectDataEntry = self:of(dataToObjectDataEntryId(id))
143
+ local objectDataEntry = self:of(dataToObjectDataEntryId(id, self.idType))
143
144
  if objectDataEntry ~= nil and not objectDataEntry.isInternal then
144
145
  result[#result + 1] = objectDataEntry
145
146
  end
@@ -156,9 +157,9 @@ function ObjectDataEntry.of(self, id)
156
157
  if object == nil then
157
158
  return nil
158
159
  end
159
- local objectDataEntry = objectDataEntryByObjectDataEntryId[dataToObjectDataEntryId(object.id)]
160
+ local objectDataEntry = objectDataEntryByObjectDataEntryId[dataToObjectDataEntryId(object.id, self.idType)]
160
161
  if objectDataEntry == nil then
161
- if not constructor.IS_SYNTHETIC and (self.BASE_ID == 0 or dataToObjectDataEntryId(object.parentId) == self.BASE_ID) then
162
+ if not constructor.IS_SYNTHETIC and (self.BASE_ID == 0 or dataToObjectDataEntryId(object.parentId, self.idType) == self.BASE_ID) then
162
163
  local AbstractObjectDataEntryView = __TS__Class()
163
164
  AbstractObjectDataEntryView.name = "AbstractObjectDataEntryView"
164
165
  __TS__ClassExtends(AbstractObjectDataEntryView, constructor)
@@ -180,6 +181,14 @@ end
180
181
  function ObjectDataEntry.prototype.setFieldValue(self, field, ...)
181
182
  check(field:setValue(self, ...))
182
183
  end
184
+ function ObjectDataEntry.prototype.copyFrom(self, id)
185
+ local that = self.type:of(id)
186
+ if that == nil then
187
+ return
188
+ end
189
+ for ____, field in ipairs(self.object.all) do
190
+ end
191
+ end
183
192
  function ObjectDataEntry.prototype.getBooleanField(self, field)
184
193
  return dataToBoolean(self.object:getField(field))
185
194
  end
@@ -231,13 +240,13 @@ function ObjectDataEntry.prototype.setStringField(self, field, value)
231
240
  stringToData(value)
232
241
  )
233
242
  end
234
- function ObjectDataEntry.prototype.getObjectDataEntryIdField(self, field)
235
- return dataToObjectDataEntryId(self.object:getField(field))
243
+ function ObjectDataEntry.prototype.getObjectDataEntryNumericIdField(self, field)
244
+ return dataToObjectDataEntryNumericId(self.object:getField(field))
236
245
  end
237
- function ObjectDataEntry.prototype.setObjectDataEntryIdField(self, field, value)
246
+ function ObjectDataEntry.prototype.setObjectDataEntryNumericIdField(self, field, value)
238
247
  self.object:setField(
239
248
  field,
240
- objectDataEntryIdToData(value)
249
+ objectDataEntryNumericIdToData(value)
241
250
  )
242
251
  end
243
252
  function ObjectDataEntry.prototype.getAttachmentPresetField(self, modelPathField, nodeFQNField)
@@ -285,13 +294,13 @@ function ObjectDataEntry.prototype.setStringsField(self, field, values)
285
294
  stringsToData(values)
286
295
  )
287
296
  end
288
- function ObjectDataEntry.prototype.getObjectDataEntryIdsField(self, field)
289
- return dataToObjectDataEntryIds(self.object:getField(field))
297
+ function ObjectDataEntry.prototype.getObjectDataEntryNumericIdsField(self, field)
298
+ return dataToObjectDataEntryNumericIds(self.object:getField(field))
290
299
  end
291
- function ObjectDataEntry.prototype.setObjectDataEntryIdsField(self, field, values)
300
+ function ObjectDataEntry.prototype.setObjectDataEntryNumericIdsField(self, field, values)
292
301
  self.object:setField(
293
302
  field,
294
- objectDataEntryIdsToData(values)
303
+ objectDataEntryNumericIdsToData(values)
295
304
  )
296
305
  end
297
306
  function ObjectDataEntry.prototype.getAttachmentPresetListField(self, modelPathListField, nodeFQNFields)
@@ -369,16 +378,16 @@ function ObjectDataEntry.prototype.setStringLevelField(self, field, values)
369
378
  stringToData
370
379
  )
371
380
  end
372
- function ObjectDataEntry.prototype.getObjectDataEntryIdLevelField(self, field)
373
- return self:getLevelField(field, dataToObjectDataEntryId)
381
+ function ObjectDataEntry.prototype.getObjectDataEntryNumericIdLevelField(self, field)
382
+ return self:getLevelField(field, dataToObjectDataEntryNumericId)
374
383
  end
375
- function ObjectDataEntry.prototype.setObjectDataEntryIdLevelField(self, field, values)
384
+ function ObjectDataEntry.prototype.setObjectDataEntryNumericIdLevelField(self, field, values)
376
385
  self:setLevelField(
377
386
  field,
378
387
  values,
379
388
  ____exports.extractObjectDataEntryLevelFieldValue,
380
- dataToObjectDataEntryId,
381
- objectDataEntryIdToData
389
+ dataToObjectDataEntryNumericId,
390
+ objectDataEntryNumericIdToData
382
391
  )
383
392
  end
384
393
  function ObjectDataEntry.prototype.getBooleansLevelField(self, field)
@@ -417,23 +426,26 @@ function ObjectDataEntry.prototype.setStringsLevelField(self, field, values)
417
426
  stringsToData
418
427
  )
419
428
  end
420
- function ObjectDataEntry.prototype.getObjectDataEntryIdsLevelField(self, field)
421
- return self:getLevelField(field, dataToObjectDataEntryIds)
429
+ function ObjectDataEntry.prototype.getObjectDataEntryNumericIdsLevelField(self, field)
430
+ return self:getLevelField(field, dataToObjectDataEntryNumericIds)
422
431
  end
423
- function ObjectDataEntry.prototype.setObjectDataEntryIdsLevelField(self, field, values)
432
+ function ObjectDataEntry.prototype.setObjectDataEntryNumericIdsLevelField(self, field, values)
424
433
  self:setLevelField(
425
434
  field,
426
435
  values,
427
436
  ____exports.extractObjectDataEntryLevelArrayFieldValue,
428
- dataToObjectDataEntryIds,
429
- objectDataEntryIdsToData
437
+ dataToObjectDataEntryNumericIds,
438
+ objectDataEntryNumericIdsToData
430
439
  )
431
440
  end
432
441
  function ObjectDataEntry.prototype.getLevelField(self, field, dataToValue)
433
442
  local values = {}
434
443
  local object = self.object
435
444
  for level = 1, tonumber(object:getField("levels")) or 1 do
436
- values[level] = dataToValue(object:getField((field .. "+") .. tostring(level)))
445
+ values[level] = dataToValue(
446
+ object:getField((field .. "+") .. tostring(level)),
447
+ "number"
448
+ )
437
449
  end
438
450
  return values
439
451
  end
@@ -473,6 +485,14 @@ function ObjectDataEntry.prototype.setLevelField(self, field, supplier, extracto
473
485
  end
474
486
  ObjectDataEntry.BASE_ID = 0
475
487
  ObjectDataEntry.IS_SYNTHETIC = false
488
+ __TS__SetDescriptor(
489
+ ObjectDataEntry.prototype,
490
+ "type",
491
+ {get = function(self)
492
+ return self.constructor
493
+ end},
494
+ true
495
+ )
476
496
  __TS__SetDescriptor(
477
497
  ObjectDataEntry.prototype,
478
498
  "isInternal",
@@ -491,11 +511,18 @@ __TS__SetDescriptor(
491
511
  },
492
512
  true
493
513
  )
514
+ __TS__ObjectDefineProperty(
515
+ ObjectDataEntry,
516
+ "idType",
517
+ {get = function(self)
518
+ return type(self.BASE_ID) == "number" and "number" or "string"
519
+ end}
520
+ )
494
521
  __TS__SetDescriptor(
495
522
  ObjectDataEntry.prototype,
496
523
  "id",
497
524
  {get = function(self)
498
- return dataToObjectDataEntryId(self.object.id)
525
+ return dataToObjectDataEntryId(self.object.id, self.type.idType)
499
526
  end},
500
527
  true
501
528
  )
@@ -503,7 +530,7 @@ __TS__SetDescriptor(
503
530
  ObjectDataEntry.prototype,
504
531
  "baseId",
505
532
  {get = function(self)
506
- return dataToObjectDataEntryId(self.object.parentId or self.object.id)
533
+ return dataToObjectDataEntryId(self.object.parentId or self.object.id, self.type.idType)
507
534
  end},
508
535
  true
509
536
  )
@@ -533,10 +560,10 @@ end
533
560
  dataToString = function(data)
534
561
  return tostring(data or "")
535
562
  end
536
- objectDataEntryIdToData = function(value)
563
+ objectDataEntryNumericIdToData = function(value)
537
564
  return value == 0 and "" or string.pack(">I4", value)
538
565
  end
539
- dataToObjectDataEntryId = function(data)
566
+ dataToObjectDataEntryNumericId = function(data)
540
567
  local dataString = dataToString(data)
541
568
  if isDataNotBlank(nil, dataString) then
542
569
  return (string.unpack(">I4", dataString))
@@ -544,6 +571,15 @@ dataToObjectDataEntryId = function(data)
544
571
  return 0
545
572
  end
546
573
  end
574
+ objectDataEntryIdToData = function(value)
575
+ return type(value) == "number" and objectDataEntryNumericIdToData(value) or value
576
+ end
577
+ dataToObjectDataEntryId = function(data, ____type)
578
+ if ____type == "number" then
579
+ return dataToObjectDataEntryNumericId(data)
580
+ end
581
+ return dataToString(data)
582
+ end
547
583
  booleansToData = function(value)
548
584
  return table.concat(
549
585
  __TS__ArrayMap(
@@ -607,16 +643,16 @@ dataToStrings = function(data)
607
643
  function(____, data) return dataToString(data) end
608
644
  )
609
645
  end
610
- objectDataEntryIdsToData = function(value)
646
+ objectDataEntryNumericIdsToData = function(value)
611
647
  return table.concat(
612
648
  __TS__ArrayMap(
613
649
  value,
614
- function(____, objectDataEntryId) return objectDataEntryIdToData(objectDataEntryId) end
650
+ function(____, objectDataEntryId) return objectDataEntryNumericIdToData(objectDataEntryId) end
615
651
  ),
616
652
  ","
617
653
  )
618
654
  end
619
- dataToObjectDataEntryIds = function(data)
655
+ dataToObjectDataEntryNumericIds = function(data)
620
656
  return __TS__ArrayMap(
621
657
  __TS__ArrayFilter(
622
658
  __TS__StringSplit(
@@ -625,7 +661,7 @@ dataToObjectDataEntryIds = function(data)
625
661
  ),
626
662
  isDataNotBlank
627
663
  ),
628
- function(____, data) return dataToObjectDataEntryId(data) end
664
+ function(____, data) return dataToObjectDataEntryNumericId(data) end
629
665
  )
630
666
  end
631
667
  isDataNotBlank = function(self, data)
@@ -1,5 +1,6 @@
1
1
  local ____lualib = require("lualib_bundle")
2
2
  local __TS__Class = ____lualib.__TS__Class
3
+ local __TS__New = ____lualib.__TS__New
3
4
  local ____exports = {}
4
5
  local ____preconditions = require("utility.preconditions")
5
6
  local checkNotNull = ____preconditions.checkNotNull
@@ -60,4 +61,10 @@ function ObjectDataEntryIdGenerator.prototype.next(self)
60
61
  self.id = id
61
62
  return id
62
63
  end
64
+ ---
65
+ -- @internal For use by internal systems only.
66
+ ____exports.abilityTypeIdGenerator = __TS__New(
67
+ ____exports.ObjectDataEntryIdGenerator,
68
+ fourCC("A000")
69
+ )
63
70
  return ____exports
@@ -1,14 +1,18 @@
1
1
  /** @noSelfInFile */
2
- import { Ability } from "../internal/ability";
2
+ import { Ability, jabilityfield } from "../internal/ability";
3
3
  import { ObjectArrayField, ObjectField, ObjectFieldValueChangeEvent, ObjectLevelField, ObjectLevelFieldValueChangeEvent, ReadonlyObjectFieldType, ReadonlyObjectLevelFieldType } from "../object-field";
4
4
  import { AbilityType, AbilityTypeId } from "../object-data/entry/ability-type";
5
5
  import { ObjectDataEntryId } from "../object-data/entry";
6
6
  import { LightningTypeId } from "../object-data/entry/lightning-type";
7
7
  import { CombatClassifications } from "../object-data/auxiliary/combat-classification";
8
8
  import { UnitTypeId } from "../object-data/entry/unit-type";
9
- export declare abstract class AbilityField<ValueType extends number | string | boolean = number | string | boolean, NativeFieldType = unknown> extends ObjectField<AbilityType, Ability, ValueType, NativeFieldType> {
9
+ import { BuffResistanceType } from "../object-data/auxiliary/buff-resistance-type";
10
+ import { BuffPolarity } from "../object-data/auxiliary/buff-polarity";
11
+ import { ReadonlyNonEmptyLinkedSet } from "../../utility/linked-set";
12
+ export declare abstract class AbilityField<ValueType extends number | string | boolean = number | string | boolean, NativeFieldType extends jabilityfield = jabilityfield> extends ObjectField<AbilityType, Ability, ValueType, NativeFieldType> {
10
13
  protected get instanceClass(): typeof Ability;
11
14
  protected getObjectDataEntryId(instance: Ability): AbilityTypeId;
15
+ protected hasNativeFieldValue(abilityTypeId: AbilityTypeId): boolean;
12
16
  static get valueChangeEvent(): ObjectFieldValueChangeEvent<ReadonlyObjectFieldType<AbilityField>>;
13
17
  }
14
18
  export declare class AbilityBooleanField extends AbilityField<boolean, jabilitybooleanfield> {
@@ -18,7 +22,7 @@ export declare class AbilityBooleanField extends AbilityField<boolean, jabilityb
18
22
  protected setNativeFieldValue(instance: Ability, value: boolean): boolean;
19
23
  static get valueChangeEvent(): ObjectFieldValueChangeEvent<AbilityBooleanField>;
20
24
  }
21
- export declare abstract class AbilityNumberField<NativeFieldType = unknown> extends AbilityField<number, NativeFieldType> {
25
+ export declare abstract class AbilityNumberField<NativeFieldType extends jabilityfield = jabilityfield> extends AbilityField<number, NativeFieldType> {
22
26
  protected get defaultValue(): number;
23
27
  static get valueChangeEvent(): ObjectFieldValueChangeEvent<AbilityNumberField>;
24
28
  }
@@ -41,9 +45,10 @@ export declare class AbilityStringField extends AbilityField<string, jabilitystr
41
45
  protected setNativeFieldValue(instance: Ability, value: string): boolean;
42
46
  static get valueChangeEvent(): ObjectFieldValueChangeEvent<AbilityStringField>;
43
47
  }
44
- export declare abstract class AbilityArrayField<ValueType extends number | string | boolean = number | string | boolean, NativeFieldType = unknown> extends ObjectArrayField<AbilityType, Ability, ValueType, NativeFieldType> {
48
+ export declare abstract class AbilityArrayField<ValueType extends number | string | boolean = number | string | boolean, NativeFieldType extends jabilityfield = jabilityfield> extends ObjectArrayField<AbilityType, Ability, ValueType, NativeFieldType> {
45
49
  protected get instanceClass(): typeof Ability;
46
50
  protected getObjectDataEntryId(instance: Ability): AbilityTypeId;
51
+ protected hasNativeFieldValue(abilityTypeId: AbilityTypeId): boolean;
47
52
  }
48
53
  export declare class AbilityStringArrayField extends AbilityArrayField<string, jabilitystringlevelfield> {
49
54
  protected get defaultValue(): string;
@@ -59,10 +64,11 @@ export declare abstract class AbilityObjectDataEntryIdArrayField<T extends Objec
59
64
  }
60
65
  export declare class AbilityLightningTypeIdArrayField extends AbilityObjectDataEntryIdArrayField<LightningTypeId> {
61
66
  }
62
- export declare abstract class AbilityLevelField<ValueType extends number | string | boolean = number | string | boolean, InputValueType extends ValueType = never, NativeFieldType = unknown> extends ObjectLevelField<AbilityType, Ability, ValueType, InputValueType, NativeFieldType> {
67
+ export declare abstract class AbilityLevelField<ValueType extends number | string | boolean = number | string | boolean, InputValueType extends ValueType = never, NativeFieldType extends jabilityfield = jabilityfield> extends ObjectLevelField<AbilityType, Ability, ValueType, InputValueType, NativeFieldType> {
63
68
  protected get instanceClass(): typeof Ability;
64
69
  protected getLevelCount(entry: AbilityType | Ability): number;
65
70
  protected getObjectDataEntryId(instance: Ability): AbilityTypeId;
71
+ protected hasNativeFieldValue(abilityTypeId: AbilityTypeId): boolean;
66
72
  static get valueChangeEvent(): ObjectLevelFieldValueChangeEvent<ReadonlyObjectLevelFieldType<AbilityLevelField>>;
67
73
  }
68
74
  export declare class AbilityBooleanLevelField extends AbilityLevelField<boolean, boolean, jabilityintegerlevelfield> {
@@ -72,7 +78,7 @@ export declare class AbilityBooleanLevelField extends AbilityLevelField<boolean,
72
78
  protected setNativeFieldValue(instance: Ability, level: number, value: boolean): boolean;
73
79
  static get valueChangeEvent(): ObjectLevelFieldValueChangeEvent<AbilityBooleanLevelField>;
74
80
  }
75
- export declare abstract class AbilityNumberLevelField<NativeFieldType = unknown> extends AbilityLevelField<number, number, NativeFieldType> {
81
+ export declare abstract class AbilityNumberLevelField<NativeFieldType extends jabilityfield = jabilityfield> extends AbilityLevelField<number, number, NativeFieldType> {
76
82
  protected get defaultValue(): number;
77
83
  static get valueChangeEvent(): ObjectLevelFieldValueChangeEvent<AbilityNumberLevelField>;
78
84
  }
@@ -105,11 +111,30 @@ export declare class AbilityAbilityTypeIdLevelField extends AbilityObjectDataEnt
105
111
  }
106
112
  export declare class AbilityUnitTypeIdLevelField extends AbilityObjectDataEntryIdLevelField<UnitTypeId> {
107
113
  }
114
+ export declare abstract class AbilityEnumLevelField<T extends number> extends AbilityLevelField<T, T, jabilityintegerlevelfield> {
115
+ protected abstract values: ReadonlyNonEmptyLinkedSet<T>;
116
+ protected get defaultValue(): T;
117
+ protected getNativeFieldById(id: number): jabilityintegerlevelfield;
118
+ protected getNativeFieldValue(instance: Ability, level: number): T;
119
+ protected setNativeFieldValue(instance: Ability, level: number, value: T): boolean;
120
+ static get valueChangeEvent(): ObjectLevelFieldValueChangeEvent<AbilityEnumLevelField<number>>;
121
+ }
122
+ export declare class AbilityBuffPolarityLevelField extends AbilityEnumLevelField<BuffPolarity> {
123
+ protected values: ReadonlyNonEmptyLinkedSet<BuffPolarity>;
124
+ }
125
+ export declare class AbilityBuffResistanceTypeLevelField extends AbilityEnumLevelField<BuffResistanceType> {
126
+ protected values: ReadonlyNonEmptyLinkedSet<BuffResistanceType>;
127
+ }
108
128
  export declare class AbilityCombatClassificationsLevelField extends AbilityLevelField<CombatClassifications, CombatClassifications, jabilityintegerlevelfield> {
109
129
  protected get defaultValue(): CombatClassifications;
110
130
  protected getNativeFieldById(id: number): jabilityintegerlevelfield;
111
131
  protected getNativeFieldValue(instance: Ability, level: number): CombatClassifications;
112
132
  protected setNativeFieldValue(instance: Ability, level: number, value: CombatClassifications): boolean;
113
133
  }
114
- export type AbilityDependentValue<ValueType extends boolean | number | string> = ValueType | AbilityField<ValueType> | AbilityLevelField<ValueType> | ((ability: Ability) => ValueType);
115
- export declare const resolveCurrentAbilityDependentValue: <ValueType extends string | number | boolean>(ability: Ability, value: AbilityDependentValue<ValueType>) => ValueType;
134
+ export type ReadonlySubscribableAbilityDependentValue<ValueType extends boolean | number | string> = ValueType | ReadonlyObjectFieldType<AbilityField<ValueType>> | ReadonlyObjectLevelFieldType<AbilityLevelField<ValueType>>;
135
+ export type SubscribableAbilityDependentValue<ValueType extends boolean | number | string> = ValueType | AbilityField<ValueType> | AbilityLevelField<ValueType>;
136
+ export type AbilityDependentValue<ValueType extends boolean | number | string> = SubscribableAbilityDependentValue<ValueType> | ((ability: Ability) => ValueType);
137
+ export declare const resolveCurrentAbilityDependentValue: {
138
+ <ValueType extends boolean | number | string>(ability: Ability, value: AbilityDependentValue<ValueType>): ValueType;
139
+ <ValueType extends boolean | number | string>(ability: Ability, value?: AbilityDependentValue<ValueType>): ValueType | undefined;
140
+ };
@@ -7,12 +7,15 @@ local __TS__InstanceOf = ____lualib.__TS__InstanceOf
7
7
  local ____exports = {}
8
8
  local ____ability = require("engine.internal.ability")
9
9
  local Ability = ____ability.Ability
10
+ local abilityTypeHasField = ____ability.abilityTypeHasField
10
11
  local ____object_2Dfield = require("engine.object-field")
11
12
  local ObjectArrayField = ____object_2Dfield.ObjectArrayField
12
13
  local ObjectField = ____object_2Dfield.ObjectField
13
14
  local ObjectLevelField = ____object_2Dfield.ObjectLevelField
14
15
  local ____ability_2Dtype = require("engine.object-data.entry.ability-type")
15
16
  local AbilityType = ____ability_2Dtype.AbilityType
17
+ local ____linked_2Dset = require("utility.linked-set")
18
+ local nonEmptyLinkedSetOf = ____linked_2Dset.nonEmptyLinkedSetOf
16
19
  local convertAbilityBooleanField = _G.ConvertAbilityBooleanField
17
20
  local convertAbilityIntegerField = _G.ConvertAbilityIntegerField
18
21
  local convertAbilityRealField = _G.ConvertAbilityRealField
@@ -27,6 +30,9 @@ __TS__ClassExtends(AbilityField, ObjectField)
27
30
  function AbilityField.prototype.getObjectDataEntryId(self, instance)
28
31
  return instance.typeId
29
32
  end
33
+ function AbilityField.prototype.hasNativeFieldValue(self, abilityTypeId)
34
+ return abilityTypeHasField(abilityTypeId, self.nativeField)
35
+ end
30
36
  __TS__SetDescriptor(
31
37
  AbilityField.prototype,
32
38
  "instanceClass",
@@ -192,6 +198,9 @@ __TS__ClassExtends(AbilityArrayField, ObjectArrayField)
192
198
  function AbilityArrayField.prototype.getObjectDataEntryId(self, instance)
193
199
  return instance.typeId
194
200
  end
201
+ function AbilityArrayField.prototype.hasNativeFieldValue(self, abilityTypeId)
202
+ return abilityTypeHasField(abilityTypeId, self.nativeField)
203
+ end
195
204
  __TS__SetDescriptor(
196
205
  AbilityArrayField.prototype,
197
206
  "instanceClass",
@@ -256,11 +265,14 @@ local AbilityLevelField = ____exports.AbilityLevelField
256
265
  AbilityLevelField.name = "AbilityLevelField"
257
266
  __TS__ClassExtends(AbilityLevelField, ObjectLevelField)
258
267
  function AbilityLevelField.prototype.getLevelCount(self, entry)
259
- return __TS__InstanceOf(entry, Ability) and #entry.levels or entry.levelCount
268
+ return entry.levelCount
260
269
  end
261
270
  function AbilityLevelField.prototype.getObjectDataEntryId(self, instance)
262
271
  return instance.typeId
263
272
  end
273
+ function AbilityLevelField.prototype.hasNativeFieldValue(self, abilityTypeId)
274
+ return abilityTypeHasField(abilityTypeId, self.nativeField)
275
+ end
264
276
  __TS__SetDescriptor(
265
277
  AbilityLevelField.prototype,
266
278
  "instanceClass",
@@ -425,6 +437,54 @@ ____exports.AbilityUnitTypeIdLevelField = __TS__Class()
425
437
  local AbilityUnitTypeIdLevelField = ____exports.AbilityUnitTypeIdLevelField
426
438
  AbilityUnitTypeIdLevelField.name = "AbilityUnitTypeIdLevelField"
427
439
  __TS__ClassExtends(AbilityUnitTypeIdLevelField, ____exports.AbilityObjectDataEntryIdLevelField)
440
+ ____exports.AbilityEnumLevelField = __TS__Class()
441
+ local AbilityEnumLevelField = ____exports.AbilityEnumLevelField
442
+ AbilityEnumLevelField.name = "AbilityEnumLevelField"
443
+ __TS__ClassExtends(AbilityEnumLevelField, ____exports.AbilityLevelField)
444
+ function AbilityEnumLevelField.prototype.getNativeFieldById(self, id)
445
+ return convertAbilityIntegerLevelField(id)
446
+ end
447
+ function AbilityEnumLevelField.prototype.getNativeFieldValue(self, instance, level)
448
+ local value = instance:getField(self.nativeField, level)
449
+ if self.values:contains(value) then
450
+ return value
451
+ end
452
+ return self.values:first()
453
+ end
454
+ function AbilityEnumLevelField.prototype.setNativeFieldValue(self, instance, level, value)
455
+ return instance:setField(self.nativeField, level, value)
456
+ end
457
+ __TS__SetDescriptor(
458
+ AbilityEnumLevelField.prototype,
459
+ "defaultValue",
460
+ {get = function(self)
461
+ return self.values:first()
462
+ end},
463
+ true
464
+ )
465
+ __TS__ObjectDefineProperty(
466
+ AbilityEnumLevelField,
467
+ "valueChangeEvent",
468
+ {get = function(self)
469
+ return self:getOrCreateValueChangeEvent()
470
+ end}
471
+ )
472
+ ____exports.AbilityBuffPolarityLevelField = __TS__Class()
473
+ local AbilityBuffPolarityLevelField = ____exports.AbilityBuffPolarityLevelField
474
+ AbilityBuffPolarityLevelField.name = "AbilityBuffPolarityLevelField"
475
+ __TS__ClassExtends(AbilityBuffPolarityLevelField, ____exports.AbilityEnumLevelField)
476
+ function AbilityBuffPolarityLevelField.prototype.____constructor(self, ...)
477
+ AbilityBuffPolarityLevelField.____super.prototype.____constructor(self, ...)
478
+ self.values = nonEmptyLinkedSetOf(0, 1, 2)
479
+ end
480
+ ____exports.AbilityBuffResistanceTypeLevelField = __TS__Class()
481
+ local AbilityBuffResistanceTypeLevelField = ____exports.AbilityBuffResistanceTypeLevelField
482
+ AbilityBuffResistanceTypeLevelField.name = "AbilityBuffResistanceTypeLevelField"
483
+ __TS__ClassExtends(AbilityBuffResistanceTypeLevelField, ____exports.AbilityEnumLevelField)
484
+ function AbilityBuffResistanceTypeLevelField.prototype.____constructor(self, ...)
485
+ AbilityBuffResistanceTypeLevelField.____super.prototype.____constructor(self, ...)
486
+ self.values = nonEmptyLinkedSetOf(1, 2, 3)
487
+ end
428
488
  local allowedTargetCombatClassificationsByLevelByAbilityTypeId = postcompile(function()
429
489
  local allowedTargetCombatClassificationsByLevelByAbilityTypeId = {}
430
490
  for ____, abilityType in ipairs(AbilityType:getAll()) do
@@ -459,9 +519,9 @@ __TS__SetDescriptor(
459
519
  )
460
520
  ____exports.resolveCurrentAbilityDependentValue = function(ability, value)
461
521
  if __TS__InstanceOf(value, ____exports.AbilityField) then
462
- return value:getValue(ability)
522
+ return value:getValue(ability, true)
463
523
  elseif __TS__InstanceOf(value, ____exports.AbilityLevelField) then
464
- return value:getValue(ability, ability.level)
524
+ return value:getValue(ability, ability.level, true)
465
525
  elseif type(value) == "function" then
466
526
  return value(ability)
467
527
  else