warscript 0.0.1-dev.91da42b → 0.0.1-dev.9381e62

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 (301) hide show
  1. package/core/dummy.lua +4 -2
  2. package/core/types/effect.d.ts +11 -1
  3. package/core/types/effect.lua +43 -77
  4. package/core/types/frame.d.ts +1 -0
  5. package/core/types/frame.lua +112 -37
  6. package/core/types/handle.lua +9 -9
  7. package/core/types/item.d.ts +1 -0
  8. package/core/types/item.lua +1 -0
  9. package/core/types/player.d.ts +2 -1
  10. package/core/types/player.lua +18 -13
  11. package/core/types/playerColor.lua +4 -3
  12. package/core/types/sound.d.ts +1 -1
  13. package/core/types/sound.lua +14 -9
  14. package/core/types/unit.d.ts +5 -0
  15. package/core/types/unit.lua +5 -0
  16. package/core/util.d.ts +3 -1
  17. package/core/util.lua +109 -3
  18. package/decl/native.d.ts +705 -7
  19. package/engine/behaviour/ability/apply-unit-behavior.lua +5 -0
  20. package/engine/behaviour/ability/damage.d.ts +4 -0
  21. package/engine/behaviour/ability/damage.lua +19 -15
  22. package/engine/behaviour/ability/emulate-impact.lua +5 -4
  23. package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
  24. package/engine/behaviour/ability/on-command-impact.lua +1 -0
  25. package/engine/behaviour/ability.d.ts +11 -5
  26. package/engine/behaviour/ability.lua +54 -0
  27. package/engine/behaviour/unit/stun-immunity.d.ts +1 -1
  28. package/engine/behaviour/unit/stun-immunity.lua +5 -4
  29. package/engine/behaviour/unit.d.ts +1 -0
  30. package/engine/behaviour/unit.lua +14 -3
  31. package/engine/buff.d.ts +61 -25
  32. package/engine/buff.lua +330 -156
  33. package/engine/index.d.ts +2 -1
  34. package/engine/internal/ability.d.ts +4 -0
  35. package/engine/internal/ability.lua +56 -36
  36. package/engine/internal/item/fields.d.ts +12 -0
  37. package/engine/internal/item/fields.lua +33 -0
  38. package/engine/internal/item/owner-cache.d.ts +5 -0
  39. package/engine/internal/item/owner-cache.lua +4 -0
  40. package/engine/internal/item+owner.d.ts +2 -0
  41. package/engine/internal/item+owner.lua +27 -4
  42. package/engine/internal/item.d.ts +20 -5
  43. package/engine/internal/item.lua +146 -57
  44. package/engine/internal/mechanics/cast-ability.lua +6 -3
  45. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  46. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  47. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  48. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  49. package/engine/internal/object-data/health-bonus.lua +16 -0
  50. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  51. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  52. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  53. package/engine/internal/object-data/mana-bonus.lua +16 -0
  54. package/engine/internal/unit/ability.lua +15 -3
  55. package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
  56. package/engine/internal/unit/add-item-to-slot.lua +53 -12
  57. package/engine/internal/unit/appearance.d.ts +15 -0
  58. package/engine/internal/unit/appearance.lua +85 -0
  59. package/engine/internal/unit/bonus.d.ts +12 -0
  60. package/engine/internal/unit/bonus.lua +92 -8
  61. package/engine/internal/unit/buff.d.ts +2 -2
  62. package/engine/internal/unit/buff.lua +34 -19
  63. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  64. package/engine/internal/unit/equipment-inventory.lua +233 -0
  65. package/engine/internal/unit/expiration-timer.lua +1 -1
  66. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  67. package/engine/internal/unit/extended-inventory.lua +99 -0
  68. package/engine/internal/unit/ignore-events-items.lua +10 -1
  69. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
  70. package/engine/internal/unit/inventory.lua +87 -0
  71. package/engine/internal/unit/item-container.d.ts +25 -0
  72. package/engine/internal/unit/item-container.lua +11 -0
  73. package/engine/internal/unit/item-order-events.d.ts +17 -0
  74. package/engine/internal/unit/item-order-events.lua +67 -0
  75. package/engine/internal/unit/item-slot.d.ts +27 -0
  76. package/engine/internal/unit/item-slot.lua +92 -0
  77. package/engine/internal/unit/order.d.ts +3 -3
  78. package/engine/internal/unit/order.lua +10 -10
  79. package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
  80. package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
  81. package/engine/internal/unit/range-event.d.ts +12 -0
  82. package/engine/internal/unit/range-event.lua +90 -0
  83. package/engine/internal/unit+ability.d.ts +2 -1
  84. package/engine/internal/unit+ability.lua +63 -2
  85. package/engine/internal/unit+bonus.lua +3 -3
  86. package/engine/internal/unit+damage.d.ts +9 -0
  87. package/engine/internal/unit+damage.lua +33 -0
  88. package/engine/internal/unit+rally.lua +9 -31
  89. package/engine/internal/unit-missile-data.lua +58 -32
  90. package/engine/internal/unit-missile-launch.lua +13 -13
  91. package/engine/internal/unit.d.ts +2 -10
  92. package/engine/internal/unit.lua +92 -133
  93. package/engine/local-client.d.ts +26 -0
  94. package/engine/local-client.lua +294 -54
  95. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -0
  96. package/engine/object-data/auxiliary/attachment-preset.lua +7 -0
  97. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  98. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  99. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  100. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  101. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  102. package/engine/object-data/auxiliary/item-class.lua +2 -0
  103. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  104. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  105. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  106. package/engine/object-data/auxiliary/order-type.lua +2 -0
  107. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  108. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  109. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  110. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  111. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  112. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  113. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  114. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  115. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  116. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  117. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  118. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  119. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  120. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  121. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  122. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  123. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
  124. package/engine/object-data/entry/ability-type/blank-configurable.lua +30 -0
  125. package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
  126. package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
  127. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  128. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  129. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  130. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  131. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  132. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  133. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  134. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  135. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  136. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  137. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  138. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  139. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  140. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  141. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  142. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  143. package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
  144. package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
  145. package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
  146. package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
  147. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  148. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  149. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  150. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  151. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  152. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  153. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  154. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  155. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  156. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  157. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  158. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  159. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  160. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  161. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  162. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  163. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  164. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  165. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  166. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  167. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  168. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  169. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  170. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  171. package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
  172. package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
  173. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  174. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  175. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  176. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  177. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  178. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  179. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  180. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  181. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  182. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  183. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  184. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  185. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  186. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  187. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  188. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  189. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  190. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  191. package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
  192. package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
  193. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  194. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  195. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  196. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  197. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  198. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  199. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  200. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  201. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  202. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  203. package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
  204. package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
  205. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  206. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  207. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  208. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  209. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  210. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  211. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  212. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  213. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  214. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  215. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  216. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  217. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  218. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  219. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  220. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  221. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  222. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  223. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  224. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  225. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  226. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  227. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  228. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  229. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  230. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  231. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  232. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  233. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  234. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  235. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  236. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  237. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  238. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  239. package/engine/object-data/entry/ability-type.d.ts +25 -6
  240. package/engine/object-data/entry/ability-type.lua +244 -8
  241. package/engine/object-data/entry/buff-type/applicable.lua +113 -109
  242. package/engine/object-data/entry/buff-type.d.ts +6 -2
  243. package/engine/object-data/entry/buff-type.lua +26 -0
  244. package/engine/object-data/entry/destructible-type.d.ts +6 -2
  245. package/engine/object-data/entry/destructible-type.lua +26 -0
  246. package/engine/object-data/entry/item-type.d.ts +18 -3
  247. package/engine/object-data/entry/item-type.lua +84 -0
  248. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  249. package/engine/object-data/entry/lightning-type.lua +1 -1
  250. package/engine/object-data/entry/sound-preset.d.ts +2 -2
  251. package/engine/object-data/entry/unit-type.d.ts +47 -2
  252. package/engine/object-data/entry/unit-type.lua +383 -49
  253. package/engine/object-data/entry/upgrade.d.ts +2 -2
  254. package/engine/object-data/entry.d.ts +6 -1
  255. package/engine/object-data/entry.lua +8 -0
  256. package/engine/object-field/ability.lua +2 -2
  257. package/engine/object-field/item.d.ts +22 -0
  258. package/engine/object-field/item.lua +118 -0
  259. package/engine/object-field.d.ts +1 -1
  260. package/engine/object-field.lua +9 -7
  261. package/engine/random.d.ts +1 -0
  262. package/engine/random.lua +8 -0
  263. package/engine/standard/entries/ability-type.d.ts +3102 -7
  264. package/engine/standard/entries/ability-type.lua +0 -6
  265. package/engine/standard/entries/buff-type.d.ts +45 -0
  266. package/engine/standard/entries/buff-type.lua +43 -0
  267. package/engine/standard/entries/item-type.d.ts +1299 -0
  268. package/engine/standard/entries/item-type.lua +2 -0
  269. package/engine/standard/entries/lightning-type.d.ts +42 -15
  270. package/engine/standard/entries/lightning-type.lua +0 -14
  271. package/engine/standard/entries/unit-type.d.ts +5 -0
  272. package/engine/standard/entries/unit-type.lua +5 -0
  273. package/engine/standard/fields/item.d.ts +4 -0
  274. package/engine/standard/fields/item.lua +6 -0
  275. package/engine/unit.d.ts +6 -1
  276. package/engine/unit.lua +6 -1
  277. package/event.d.ts +1 -1
  278. package/lualib_bundle.lua +1 -1
  279. package/math.d.ts +2 -0
  280. package/math.lua +14 -0
  281. package/network.lua +25 -1
  282. package/objutil/buff.lua +10 -8
  283. package/objutil/object.lua +1 -1
  284. package/operation.d.ts +8 -1
  285. package/operation.lua +38 -18
  286. package/package.json +3 -23
  287. package/patch-lua.lua +15 -0
  288. package/utility/linked-map.d.ts +35 -0
  289. package/utility/linked-map.lua +107 -0
  290. package/utility/linked-set.d.ts +3 -1
  291. package/utility/linked-set.lua +27 -0
  292. package/utility/random.d.ts +102 -0
  293. package/utility/random.lua +273 -0
  294. package/utility/records.lua +20 -1
  295. package/utility/unordered-map.d.ts +27 -0
  296. package/utility/unordered-map.lua +99 -0
  297. package/engine/internal/unit/item.lua +0 -78
  298. /package/engine/internal/{object-data/armor-increase.d.ts → misc/unit-ability-level-natives.d.ts} +0 -0
  299. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  300. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  301. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -3,17 +3,18 @@ import "../../internal/unit/ability";
3
3
  import { TupleOf } from "../../../utility/types";
4
4
  import { AnimationName } from "../auxiliary/animation-name";
5
5
  import { AnimationQualifier } from "../auxiliary/animation-qualifier";
6
- import { AttachmentPresetInput, EffectPresetWithParameters, EffectPresetWithParametersInput } from "../auxiliary/attachment-preset";
6
+ import { AttachmentPoint, AttachmentPointInput, AttachmentPresetInput, EffectPresetWithParameters, EffectPresetWithParametersInput } from "../auxiliary/attachment-preset";
7
7
  import { CombatClassifications } from "../auxiliary/combat-classification";
8
8
  import { Race } from "../auxiliary/race";
9
9
  import { TechTreeDependency, TechTreeDependencyInput } from "../auxiliary/tech-tree-dependency";
10
- import { ObjectDataEntry, ObjectDataEntryId, ObjectDataEntryLevelFieldValueSupplier } from "../entry";
10
+ import { ObjectDataEntry, CustomObjectDataEntryId, ObjectDataEntryLevelFieldValueSupplier } from "../entry";
11
11
  import { BuffTypeId } from "./buff-type";
12
12
  import { LightningTypeId } from "./lightning-type";
13
13
  import { SoundPresetId } from "./sound-preset";
14
- export type AbilityTypeId = ObjectDataEntryId & number & {
14
+ import { StandardAbilityTypeId } from "../../standard/entries/ability-type";
15
+ export type AbilityTypeId = (CustomObjectDataEntryId & number & {
15
16
  readonly __abilityTypeId: unique symbol;
16
- };
17
+ }) | StandardAbilityTypeId;
17
18
  export declare abstract class AbilityType extends ObjectDataEntry<AbilityTypeId> {
18
19
  private static readonly idGenerator;
19
20
  protected static generateId(): number;
@@ -41,6 +42,8 @@ export declare abstract class AbilityType extends ObjectDataEntry<AbilityTypeId>
41
42
  set iconPathSD(iconPathSD: string);
42
43
  get iconPathHD(): string;
43
44
  set iconPathHD(iconPathHD: string);
45
+ get iconPathDE(): string;
46
+ set iconPathDE(iconPathDE: string);
44
47
  get isButtonVisible(): boolean;
45
48
  set isButtonVisible(isButtonVisible: boolean);
46
49
  get isMissileHoming(): boolean;
@@ -59,20 +62,36 @@ export declare abstract class AbilityType extends ObjectDataEntry<AbilityTypeId>
59
62
  set missileModelPathSD(missileModelPathSD: string);
60
63
  get missileModelPathHD(): string;
61
64
  set missileModelPathHD(missileModelPathHD: string);
65
+ get missileModelPathDE(): string;
66
+ set missileModelPathDE(missileModelPathDE: string);
62
67
  get missileMovementArc(): number;
63
68
  set missileMovementArc(missileMovementArc: number);
64
69
  get missileMovementSpeed(): number;
65
70
  set missileMovementSpeed(missileMovementSpeed: number);
66
- get specialAttachmentPreset(): EffectPresetWithParameters | undefined;
67
- set specialAttachmentPreset(specialAttachmentPreset: AttachmentPresetInput | undefined);
71
+ /** Model paths of the special art (`asat`); Flame Strike, for one, uses three. */
72
+ get specialEffectModelPaths(): string[];
73
+ set specialEffectModelPaths(specialEffectModelPaths: string[]);
74
+ /** Where the special art attaches (`aspt`), shared by all its models. */
75
+ get specialEffectAttachmentPoint(): AttachmentPoint;
76
+ set specialEffectAttachmentPoint(specialEffectAttachmentPoint: AttachmentPointInput);
68
77
  get targetCastingEffectPresets(): EffectPresetWithParameters[];
69
78
  set targetCastingEffectPresets(targetCastingEffectPresets: AttachmentPresetInput[]);
79
+ get targetChannelingEffectPresets(): EffectPresetWithParameters[];
80
+ set targetChannelingEffectPresets(targetChannelingEffectPresets: EffectPresetWithParametersInput[]);
81
+ get targetChannelingEffectPresetsSD(): EffectPresetWithParameters[];
82
+ set targetChannelingEffectPresetsSD(targetChannelingEffectPresetsSD: EffectPresetWithParametersInput[]);
83
+ get targetChannelingEffectPresetsHD(): EffectPresetWithParameters[];
84
+ set targetChannelingEffectPresetsHD(targetChannelingEffectPresetsHD: EffectPresetWithParametersInput[]);
85
+ get targetChannelingEffectPresetsDE(): EffectPresetWithParameters[];
86
+ set targetChannelingEffectPresetsDE(targetChannelingEffectPresetsDE: EffectPresetWithParametersInput[]);
70
87
  get targetEffectPresets(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
71
88
  set targetEffectPresets(targetEffectPresets: TupleOf<AttachmentPresetInput, 0 | 1 | 2 | 3 | 4 | 5 | 6>);
72
89
  get targetEffectPresetsSD(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
73
90
  set targetEffectPresetsSD(targetEffectPresetsSD: TupleOf<AttachmentPresetInput, 0 | 1 | 2 | 3 | 4 | 5 | 6>);
74
91
  get targetEffectPresetsHD(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
75
92
  set targetEffectPresetsHD(targetEffectPresetsHD: TupleOf<AttachmentPresetInput, 0 | 1 | 2 | 3 | 4 | 5 | 6>);
93
+ get targetEffectPresetsDE(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
94
+ set targetEffectPresetsDE(targetEffectPresetsDE: TupleOf<AttachmentPresetInput, 0 | 1 | 2 | 3 | 4 | 5 | 6>);
76
95
  get turnOffButtonPositionX(): number;
77
96
  set turnOffButtonPositionX(buttonPositionX: number);
78
97
  get turnOffButtonPositionY(): number;
@@ -3,6 +3,7 @@ local __TS__Class = ____lualib.__TS__Class
3
3
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
4
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
5
5
  local __TS__InstanceOf = ____lualib.__TS__InstanceOf
6
+ local __TS__ArraySome = ____lualib.__TS__ArraySome
6
7
  local ____exports = {}
7
8
  local ____unit = require("engine.internal.unit")
8
9
  local Unit = ____unit.Unit
@@ -18,8 +19,10 @@ local array = ____arrays.array
18
19
  local map = ____arrays.map
19
20
  local mapIndexed = ____arrays.mapIndexed
20
21
  local ____attachment_2Dpreset = require("engine.object-data.auxiliary.attachment-preset")
22
+ local attachmentPointToNodeFQN = ____attachment_2Dpreset.attachmentPointToNodeFQN
21
23
  local extractAttachmentPresetInputModelPath = ____attachment_2Dpreset.extractAttachmentPresetInputModelPath
22
24
  local extractAttachmentPresetInputNodeFQN = ____attachment_2Dpreset.extractAttachmentPresetInputNodeFQN
25
+ local splitAttachmentNodeFQN = ____attachment_2Dpreset.splitAttachmentNodeFQN
23
26
  local toEffectPreset = ____attachment_2Dpreset.toEffectPreset
24
27
  local ____combat_2Dclassification = require("engine.object-data.auxiliary.combat-classification")
25
28
  local combatClassificationsToStringArray = ____combat_2Dclassification.combatClassificationsToStringArray
@@ -40,11 +43,17 @@ local Sound3D = ____sound.Sound3D
40
43
  local SoundSettings = ____sound.SoundSettings
41
44
  local ____lua_2Dsets = require("utility.lua-sets")
42
45
  local luaSetOf = ____lua_2Dsets.luaSetOf
46
+ local ____local_2Dclient = require("engine.local-client")
47
+ local LocalClient = ____local_2Dclient.LocalClient
43
48
  local castAnimationFQNByAbilityTypeId = {}
44
49
  local isButtonVisibleFalseAbilityTypes = {}
45
50
  local casterCastingEffectPresetsByAbilityTypeId = {}
46
51
  local casterChannelingEffectPresetsByAbilityTypeId = {}
47
52
  local targetCastingEffectPresetsByAbilityTypeId = {}
53
+ local targetChannelingEffectPresetsByAbilityTypeId = {}
54
+ local targetChannelingEffectPresetsSDByAbilityTypeId = {}
55
+ local targetChannelingEffectPresetsHDByAbilityTypeId = {}
56
+ local targetChannelingEffectPresetsDEByAbilityTypeId = {}
48
57
  local targetEffectSoundPresetByAbilityTypeId = {}
49
58
  ____exports.AbilityType = __TS__Class()
50
59
  local AbilityType = ____exports.AbilityType
@@ -204,6 +213,19 @@ __TS__SetDescriptor(
204
213
  },
205
214
  true
206
215
  )
216
+ __TS__SetDescriptor(
217
+ AbilityType.prototype,
218
+ "iconPathDE",
219
+ {
220
+ get = function(self)
221
+ return self:getStringField("aart:de")
222
+ end,
223
+ set = function(self, iconPathDE)
224
+ self:setStringField("aart:de", iconPathDE)
225
+ end
226
+ },
227
+ true
228
+ )
207
229
  __TS__SetDescriptor(
208
230
  AbilityType.prototype,
209
231
  "isButtonVisible",
@@ -326,6 +348,19 @@ __TS__SetDescriptor(
326
348
  },
327
349
  true
328
350
  )
351
+ __TS__SetDescriptor(
352
+ AbilityType.prototype,
353
+ "missileModelPathDE",
354
+ {
355
+ get = function(self)
356
+ return self:getStringField("amat:de")
357
+ end,
358
+ set = function(self, missileModelPathDE)
359
+ self:setStringField("amat:de", missileModelPathDE)
360
+ end
361
+ },
362
+ true
363
+ )
329
364
  __TS__SetDescriptor(
330
365
  AbilityType.prototype,
331
366
  "missileMovementArc",
@@ -354,13 +389,30 @@ __TS__SetDescriptor(
354
389
  )
355
390
  __TS__SetDescriptor(
356
391
  AbilityType.prototype,
357
- "specialAttachmentPreset",
392
+ "specialEffectModelPaths",
393
+ {
394
+ get = function(self)
395
+ return self:getStringsField("asat")
396
+ end,
397
+ set = function(self, specialEffectModelPaths)
398
+ self:setStringsField("asat", specialEffectModelPaths)
399
+ end
400
+ },
401
+ true
402
+ )
403
+ __TS__SetDescriptor(
404
+ AbilityType.prototype,
405
+ "specialEffectAttachmentPoint",
358
406
  {
359
407
  get = function(self)
360
- return self:getAttachmentPresetField("asat", "aspt")
408
+ local nodeName, nodeQualifiers = splitAttachmentNodeFQN(self:getStringField("aspt"))
409
+ return {nodeName = nodeName, nodeQualifiers = nodeQualifiers}
361
410
  end,
362
- set = function(self, specialAttachmentPreset)
363
- self:setAttachmentPresetField("asat", "aspt", specialAttachmentPreset)
411
+ set = function(self, specialEffectAttachmentPoint)
412
+ self:setStringField(
413
+ "aspt",
414
+ attachmentPointToNodeFQN(specialEffectAttachmentPoint)
415
+ )
364
416
  end
365
417
  },
366
418
  true
@@ -378,6 +430,58 @@ __TS__SetDescriptor(
378
430
  },
379
431
  true
380
432
  )
433
+ __TS__SetDescriptor(
434
+ AbilityType.prototype,
435
+ "targetChannelingEffectPresets",
436
+ {
437
+ get = function(self)
438
+ return targetChannelingEffectPresetsByAbilityTypeId[self.id] or ({})
439
+ end,
440
+ set = function(self, targetChannelingEffectPresets)
441
+ targetChannelingEffectPresetsByAbilityTypeId[self.id] = map(targetChannelingEffectPresets, toEffectPreset)
442
+ end
443
+ },
444
+ true
445
+ )
446
+ __TS__SetDescriptor(
447
+ AbilityType.prototype,
448
+ "targetChannelingEffectPresetsSD",
449
+ {
450
+ get = function(self)
451
+ return targetChannelingEffectPresetsSDByAbilityTypeId[self.id] or self.targetChannelingEffectPresets
452
+ end,
453
+ set = function(self, targetChannelingEffectPresetsSD)
454
+ targetChannelingEffectPresetsSDByAbilityTypeId[self.id] = map(targetChannelingEffectPresetsSD, toEffectPreset)
455
+ end
456
+ },
457
+ true
458
+ )
459
+ __TS__SetDescriptor(
460
+ AbilityType.prototype,
461
+ "targetChannelingEffectPresetsHD",
462
+ {
463
+ get = function(self)
464
+ return targetChannelingEffectPresetsHDByAbilityTypeId[self.id] or self.targetChannelingEffectPresets
465
+ end,
466
+ set = function(self, targetChannelingEffectPresetsHD)
467
+ targetChannelingEffectPresetsHDByAbilityTypeId[self.id] = map(targetChannelingEffectPresetsHD, toEffectPreset)
468
+ end
469
+ },
470
+ true
471
+ )
472
+ __TS__SetDescriptor(
473
+ AbilityType.prototype,
474
+ "targetChannelingEffectPresetsDE",
475
+ {
476
+ get = function(self)
477
+ return targetChannelingEffectPresetsDEByAbilityTypeId[self.id] or self.targetChannelingEffectPresets
478
+ end,
479
+ set = function(self, targetChannelingEffectPresetsDE)
480
+ targetChannelingEffectPresetsDEByAbilityTypeId[self.id] = map(targetChannelingEffectPresetsDE, toEffectPreset)
481
+ end
482
+ },
483
+ true
484
+ )
381
485
  __TS__SetDescriptor(
382
486
  AbilityType.prototype,
383
487
  "targetEffectPresets",
@@ -459,6 +563,33 @@ __TS__SetDescriptor(
459
563
  },
460
564
  true
461
565
  )
566
+ __TS__SetDescriptor(
567
+ AbilityType.prototype,
568
+ "targetEffectPresetsDE",
569
+ {
570
+ get = function(self)
571
+ return self:getAttachmentPresetListField(
572
+ "atat:de",
573
+ array(
574
+ 6,
575
+ function(i) return ("ata" .. tostring(i)) .. ":de" end
576
+ )
577
+ )
578
+ end,
579
+ set = function(self, targetEffectPresetsDE)
580
+ self:setAttachmentPresetListField(
581
+ "atat:de",
582
+ array(
583
+ 6,
584
+ function(i) return ("ata" .. tostring(i)) .. ":de" end
585
+ ),
586
+ "atac:de",
587
+ targetEffectPresetsDE
588
+ )
589
+ end
590
+ },
591
+ true
592
+ )
462
593
  __TS__SetDescriptor(
463
594
  AbilityType.prototype,
464
595
  "turnOffButtonPositionX",
@@ -1099,18 +1230,123 @@ local function handleAbilityChannelingStartEvent(caster, ability)
1099
1230
  end
1100
1231
  casterChannelingEffectsByCaster[caster] = effects
1101
1232
  end
1233
+ local targetChannelingEffectsDataByAbilityTypeId = postcompile(function()
1234
+ local function toData(presets)
1235
+ if presets == nil then
1236
+ return nil
1237
+ end
1238
+ local attachmentPoints = map(presets, extractAttachmentPresetInputNodeFQN)
1239
+ local parameters = map(presets, "parameters")
1240
+ return {
1241
+ modelPaths = map(presets, extractAttachmentPresetInputModelPath),
1242
+ attachmentPoints = __TS__ArraySome(
1243
+ attachmentPoints,
1244
+ function(____, attachmentPoint) return attachmentPoint ~= "" end
1245
+ ) and attachmentPoints or nil,
1246
+ parameters = __TS__ArraySome(
1247
+ presets,
1248
+ function(____, preset) return preset.parameters ~= nil end
1249
+ ) and parameters or nil
1250
+ }
1251
+ end
1252
+ local abilityTypeIds = {}
1253
+ for ____, presetsByAbilityTypeId in ipairs({targetChannelingEffectPresetsByAbilityTypeId, targetChannelingEffectPresetsSDByAbilityTypeId, targetChannelingEffectPresetsHDByAbilityTypeId, targetChannelingEffectPresetsDEByAbilityTypeId}) do
1254
+ for abilityTypeId in pairs(presetsByAbilityTypeId) do
1255
+ abilityTypeIds[abilityTypeId] = true
1256
+ end
1257
+ end
1258
+ local result = {}
1259
+ for abilityTypeId in pairs(abilityTypeIds) do
1260
+ local presets = targetChannelingEffectPresetsByAbilityTypeId[abilityTypeId]
1261
+ local presetsSD = targetChannelingEffectPresetsSDByAbilityTypeId[abilityTypeId]
1262
+ local presetsHD = targetChannelingEffectPresetsHDByAbilityTypeId[abilityTypeId]
1263
+ local presetsDE = targetChannelingEffectPresetsDEByAbilityTypeId[abilityTypeId]
1264
+ local ____math_max_8 = math.max
1265
+ local ____opt_0 = presetsSD or presets
1266
+ local ____temp_6 = ____opt_0 and #____opt_0 or 0
1267
+ local ____opt_2 = presetsHD or presets
1268
+ local ____temp_7 = ____opt_2 and #____opt_2 or 0
1269
+ local ____opt_4 = presetsDE or presets
1270
+ result[abilityTypeId] = {
1271
+ effectCount = ____math_max_8(____temp_6, ____temp_7, ____opt_4 and #____opt_4 or 0),
1272
+ data = toData(presets),
1273
+ dataSD = toData(presetsSD),
1274
+ dataHD = toData(presetsHD),
1275
+ dataDE = toData(presetsDE)
1276
+ }
1277
+ end
1278
+ return result
1279
+ end)
1280
+ local targetChannelingEffectsByCaster = {}
1281
+ local function createTargetChannelingEffects(caster, abilityTypeId, xOrWidget, y)
1282
+ local effectsData = targetChannelingEffectsDataByAbilityTypeId[abilityTypeId]
1283
+ if effectsData == nil then
1284
+ return
1285
+ end
1286
+ local graphicsMode = LocalClient.graphicsMode
1287
+ local ____temp_10
1288
+ if graphicsMode == 0 then
1289
+ ____temp_10 = effectsData.dataSD
1290
+ else
1291
+ local ____temp_9
1292
+ if graphicsMode == 1 then
1293
+ ____temp_9 = effectsData.dataHD
1294
+ else
1295
+ ____temp_9 = effectsData.dataDE
1296
+ end
1297
+ ____temp_10 = ____temp_9
1298
+ end
1299
+ local data = ____temp_10 or effectsData.data
1300
+ local modelPaths = data and data.modelPaths
1301
+ local attachmentPoints = data and data.attachmentPoints
1302
+ local parameters = data and data.parameters
1303
+ local effects = {}
1304
+ for i = 1, effectsData.effectCount do
1305
+ local effectModelPath = modelPaths and modelPaths[i] or ""
1306
+ local effectParameters = parameters and parameters[i]
1307
+ if type(xOrWidget) == "number" then
1308
+ effects[i] = Effect:create(effectModelPath, xOrWidget, y, effectParameters)
1309
+ else
1310
+ local attachmentPoint = attachmentPoints and attachmentPoints[i]
1311
+ if attachmentPoint == nil or attachmentPoint == "" then
1312
+ attachmentPoint = "origin"
1313
+ end
1314
+ effects[i] = Effect:create(effectModelPath, xOrWidget, attachmentPoint, effectParameters)
1315
+ end
1316
+ end
1317
+ targetChannelingEffectsByCaster[caster] = effects
1318
+ end
1319
+ local function handleAbilityWidgetTargetChannelingStartEvent(caster, ability, target)
1320
+ createTargetChannelingEffects(caster, ability.typeId, target)
1321
+ end
1322
+ local function handleAbilityPointTargetChannelingStartEvent(caster, ability, x, y)
1323
+ createTargetChannelingEffects(caster, ability.typeId, x, y)
1324
+ end
1102
1325
  local function handleAbilityStopChannelingEvent(caster)
1103
- local effects = casterChannelingEffectsByCaster[caster]
1104
- if effects ~= nil then
1105
- for i = 1, #effects do
1106
- effects[i]:destroy()
1326
+ local casterEffects = casterChannelingEffectsByCaster[caster]
1327
+ if casterEffects ~= nil then
1328
+ for i = 1, #casterEffects do
1329
+ casterEffects[i]:destroy()
1107
1330
  end
1108
1331
  casterChannelingEffectsByCaster[caster] = nil
1109
1332
  end
1333
+ local targetEffects = targetChannelingEffectsByCaster[caster]
1334
+ if targetEffects ~= nil then
1335
+ for i = 1, #targetEffects do
1336
+ targetEffects[i]:destroy()
1337
+ end
1338
+ targetChannelingEffectsByCaster[caster] = nil
1339
+ end
1110
1340
  end
1111
1341
  for abilityTypeId in pairs(casterChannelingEffectModelPathsByAbilityTypeId) do
1112
1342
  Unit.abilityChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityChannelingStartEvent)
1113
1343
  Unit.abilityChannelingFinishEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1114
1344
  Unit.abilityStopEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1115
1345
  end
1346
+ for abilityTypeId in pairs(targetChannelingEffectsDataByAbilityTypeId) do
1347
+ Unit.abilityWidgetTargetChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityWidgetTargetChannelingStartEvent)
1348
+ Unit.abilityPointTargetChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityPointTargetChannelingStartEvent)
1349
+ Unit.abilityChannelingFinishEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1350
+ Unit.abilityStopEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1351
+ end
1116
1352
  return ____exports
@@ -65,123 +65,127 @@ function ApplicableBuffType.wrap(self, other)
65
65
  return __TS__New(____exports.ApplicableBuffType, other.object)
66
66
  end
67
67
  ApplicableBuffType.BASE_ID = fourCC("BHbz")
68
- local applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId, applicatorUpgradeIdByApplicatorAbilityTypeId = table.unpack(postcompile(function()
69
- local function prepareAbilityType(abilityTypeConstructor, applicableBuffType)
70
- local abilityType = abilityTypeConstructor:create()
71
- abilityType.isInternal = true
72
- abilityType.levelCount = applicableBuffType.levelCount
73
- abilityType.buttonPositionX = 0
74
- abilityType.buttonPositionY = -11
75
- abilityType.casterAttachmentPresets = {}
76
- abilityType.targetEffectPresets = {}
77
- abilityType.casterEffectSoundPresetId = nil
78
- abilityType.learnLevelMinimum = 6
79
- abilityType.race = "other"
80
- abilityType.shouldCheckTechTreeDependencies = false
81
- abilityType.techTreeDependencies = {}
82
- abilityType.allowedTargetCombatClassifications = combatClassificationsOf(
83
- 4,
84
- 2,
85
- 2097152,
86
- 8,
87
- 1048576,
88
- 16
89
- )
90
- abilityType.areaOfEffect = 0
91
- abilityType.castRange = 999999
92
- abilityType.cooldown = 0
93
- abilityType.manaCost = 0
94
- abilityType.buffDuration = 0
95
- abilityType.heroBuffDuration = 0
96
- return abilityType
97
- end
98
- local multilevelPhysicalPositiveApplicatorAbilityTypes = {}
99
- local applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId = {}
100
- for applicableBuffType in pairs(compiletimeApplicableBuffTypes) do
101
- local applicatorAbilityTypeIdByApplicatorType = {}
102
- if applicableBuffType.resistanceType == 1 or applicableBuffType.resistanceType == nil then
103
- if applicableBuffType.polarity == 2 or applicableBuffType.polarity == nil then
104
- local applicatorAbilityType = prepareAbilityType(CurseAbilityType, applicableBuffType)
105
- applicatorAbilityType.missProbability = 0
106
- applicatorAbilityType.buffTypeIds = {applicableBuffType.id}
107
- applicatorAbilityTypeIdByApplicatorType[852190] = applicatorAbilityType.id
68
+ local applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId, applicatorUpgradeIdByApplicatorAbilityTypeId = table.unpack(
69
+ postcompile(function()
70
+ local function prepareAbilityType(abilityTypeConstructor, applicableBuffType)
71
+ local abilityType = abilityTypeConstructor:create()
72
+ abilityType.isInternal = true
73
+ abilityType.levelCount = applicableBuffType.levelCount
74
+ abilityType.buttonPositionX = 0
75
+ abilityType.buttonPositionY = -11
76
+ abilityType.casterAttachmentPresets = {}
77
+ abilityType.targetEffectPresets = {}
78
+ abilityType.casterEffectSoundPresetId = nil
79
+ abilityType.learnLevelMinimum = 6
80
+ abilityType.race = "other"
81
+ abilityType.shouldCheckTechTreeDependencies = false
82
+ abilityType.techTreeDependencies = {}
83
+ abilityType.allowedTargetCombatClassifications = combatClassificationsOf(
84
+ 4,
85
+ 2,
86
+ 2097152,
87
+ 8,
88
+ 1048576,
89
+ 16
90
+ )
91
+ abilityType.areaOfEffect = 0
92
+ abilityType.castRange = 999999
93
+ abilityType.cooldown = 0
94
+ abilityType.manaCost = 0
95
+ abilityType.buffDuration = 0
96
+ abilityType.heroBuffDuration = 0
97
+ return abilityType
98
+ end
99
+ local multilevelPhysicalPositiveApplicatorAbilityTypes = {}
100
+ local applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId = {}
101
+ for applicableBuffType in pairs(compiletimeApplicableBuffTypes) do
102
+ local applicatorAbilityTypeIdByApplicatorType = {}
103
+ if applicableBuffType.resistanceType == 1 or applicableBuffType.resistanceType == nil then
104
+ if applicableBuffType.polarity == 2 or applicableBuffType.polarity == nil then
105
+ local applicatorAbilityType = prepareAbilityType(CurseAbilityType, applicableBuffType)
106
+ applicatorAbilityType.missProbability = 0
107
+ applicatorAbilityType.buffTypeIds = {applicableBuffType.id}
108
+ applicatorAbilityTypeIdByApplicatorType[852190] = applicatorAbilityType.id
109
+ end
110
+ if applicableBuffType.polarity == 1 or applicableBuffType.polarity == nil then
111
+ local applicatorAbilityType = prepareAbilityType(BloodLustAbilityType, applicableBuffType)
112
+ applicatorAbilityType.attackSpeedIncreaseFactor = 0
113
+ applicatorAbilityType.movementSpeedIncreaseFactor = 0
114
+ applicatorAbilityType.scaleIncrease = 0
115
+ applicatorAbilityType.buffTypeIds = {applicableBuffType.id}
116
+ applicatorAbilityTypeIdByApplicatorType[852101] = applicatorAbilityType.id
117
+ end
108
118
  end
109
- if applicableBuffType.polarity == 1 or applicableBuffType.polarity == nil then
110
- local applicatorAbilityType = prepareAbilityType(BloodLustAbilityType, applicableBuffType)
111
- applicatorAbilityType.attackSpeedIncreaseFactor = 0
112
- applicatorAbilityType.movementSpeedIncreaseFactor = 0
113
- applicatorAbilityType.scaleIncrease = 0
119
+ if applicableBuffType.resistanceType == 2 or applicableBuffType.resistanceType == nil then
120
+ if applicableBuffType.polarity == 2 or applicableBuffType.polarity == nil then
121
+ local applicatorAbilityType = prepareAbilityType(SlowPoisonAbilityType, applicableBuffType)
122
+ applicatorAbilityType.damagePerSecond = 0
123
+ applicatorAbilityType.movementSpeedDecreaseFactor = 0
124
+ applicatorAbilityType.attackSpeedDecreaseFactor = 0
125
+ applicatorAbilityType.isDamageStacking = false
126
+ applicatorAbilityType.isMovementSpeedFactorStacking = false
127
+ applicatorAbilityType.isAttackSpeedFactorStacking = false
128
+ applicatorAbilityType.isAbleToKill = false
129
+ applicatorAbilityType.buffTypeIds = {applicableBuffType.id, applicableBuffType.id}
130
+ applicatorAbilityTypeIdByApplicatorType[852173] = applicatorAbilityType.id
131
+ end
132
+ if applicableBuffType.polarity == 1 or applicableBuffType.polarity == nil then
133
+ local applicatorAbilityType = prepareAbilityType(BerserkAbilityType, applicableBuffType)
134
+ applicatorAbilityType.attackSpeedIncreaseFactor = 0
135
+ applicatorAbilityType.movementSpeedIncreaseFactor = 0
136
+ applicatorAbilityType.receivedDamageIncreaseFactor = 0
137
+ applicatorAbilityType.buffTypeIds = {applicableBuffType.id}
138
+ if applicatorAbilityType.levelCount > 1 then
139
+ multilevelPhysicalPositiveApplicatorAbilityTypes[#multilevelPhysicalPositiveApplicatorAbilityTypes + 1] = applicatorAbilityType
140
+ end
141
+ applicatorAbilityTypeIdByApplicatorType[852100] = applicatorAbilityType.id
142
+ end
143
+ end
144
+ if applicableBuffType.polarity == 0 or applicableBuffType.polarity == nil then
145
+ local applicatorAbilityType = prepareAbilityType(PermanentImmolationAbilityType, applicableBuffType)
146
+ applicatorAbilityType.levelCount = 1
147
+ applicatorAbilityType.damagePerInterval = 0
148
+ applicatorAbilityType.castRange = 0
149
+ applicatorAbilityType.buffDuration = MAXIMUM_INTEGER
150
+ applicatorAbilityType.heroBuffDuration = MAXIMUM_INTEGER
151
+ applicatorAbilityType.allowedTargetCombatClassifications = combatClassificationsOf(1)
114
152
  applicatorAbilityType.buffTypeIds = {applicableBuffType.id}
115
- applicatorAbilityTypeIdByApplicatorType[852101] = applicatorAbilityType.id
153
+ applicatorAbilityTypeIdByApplicatorType[0] = applicatorAbilityType.id
116
154
  end
155
+ applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId[applicableBuffType.id] = applicatorAbilityTypeIdByApplicatorType
117
156
  end
118
- if applicableBuffType.resistanceType == 2 or applicableBuffType.resistanceType == nil then
119
- if applicableBuffType.polarity == 2 or applicableBuffType.polarity == nil then
120
- local applicatorAbilityType = prepareAbilityType(SlowPoisonAbilityType, applicableBuffType)
121
- applicatorAbilityType.damagePerSecond = 0
122
- applicatorAbilityType.movementSpeedDecreaseFactor = 0
123
- applicatorAbilityType.attackSpeedDecreaseFactor = 0
124
- applicatorAbilityType.isDamageStacking = false
125
- applicatorAbilityType.isMovementSpeedFactorStacking = false
126
- applicatorAbilityType.isAttackSpeedFactorStacking = false
127
- applicatorAbilityType.isAbleToKill = false
128
- applicatorAbilityType.buffTypeIds = {applicableBuffType.id, applicableBuffType.id}
129
- applicatorAbilityTypeIdByApplicatorType[852173] = applicatorAbilityType.id
130
- end
131
- if applicableBuffType.polarity == 1 or applicableBuffType.polarity == nil then
132
- local applicatorAbilityType = prepareAbilityType(BerserkAbilityType, applicableBuffType)
133
- applicatorAbilityType.attackSpeedIncreaseFactor = 0
134
- applicatorAbilityType.movementSpeedIncreaseFactor = 0
135
- applicatorAbilityType.receivedDamageIncreaseFactor = 0
136
- applicatorAbilityType.buffTypeIds = {applicableBuffType.id}
137
- if applicatorAbilityType.levelCount > 1 then
138
- multilevelPhysicalPositiveApplicatorAbilityTypes[#multilevelPhysicalPositiveApplicatorAbilityTypes + 1] = applicatorAbilityType
157
+ local applicatorUpgradeIds = {}
158
+ local applicatorUpgradeIdByApplicatorAbilityTypeId = {}
159
+ for ____, multilevelPhysicalPositiveApplicatorAbilityTypesChunk in ipairs(chunked(multilevelPhysicalPositiveApplicatorAbilityTypes, 4)) do
160
+ local maxLevelCount = max(map(multilevelPhysicalPositiveApplicatorAbilityTypesChunk, "levelCount"))
161
+ local applicatorAbilityTypeIds = map(multilevelPhysicalPositiveApplicatorAbilityTypesChunk, "id")
162
+ local applicatorUpgrade = BlankUpgrade:create()
163
+ applicatorUpgrade.isInternal = true
164
+ applicatorUpgrade.levelCount = maxLevelCount - 1
165
+ applicatorUpgrade.effects = map(
166
+ applicatorAbilityTypeIds,
167
+ function(applicatorAbilityTypeId)
168
+ return {type = "rlev", bonusBase = 1, bonusIncrement = 1, abilityTypeId = applicatorAbilityTypeId}
139
169
  end
140
- applicatorAbilityTypeIdByApplicatorType[852100] = applicatorAbilityType.id
170
+ )
171
+ applicatorUpgradeIds[#applicatorUpgradeIds + 1] = applicatorUpgrade.id
172
+ for ____, applicatorAbilityTypeId in ipairs(applicatorAbilityTypeIds) do
173
+ applicatorUpgradeIdByApplicatorAbilityTypeId[applicatorAbilityTypeId] = applicatorUpgrade.id
141
174
  end
142
175
  end
143
- if applicableBuffType.polarity == 0 or applicableBuffType.polarity == nil then
144
- local applicatorAbilityType = prepareAbilityType(PermanentImmolationAbilityType, applicableBuffType)
145
- applicatorAbilityType.levelCount = 1
146
- applicatorAbilityType.damagePerInterval = 0
147
- applicatorAbilityType.castRange = 0
148
- applicatorAbilityType.buffDuration = MAXIMUM_INTEGER
149
- applicatorAbilityType.heroBuffDuration = MAXIMUM_INTEGER
150
- applicatorAbilityType.allowedTargetCombatClassifications = combatClassificationsOf(1)
151
- applicatorAbilityType.buffTypeIds = {applicableBuffType.id}
152
- applicatorAbilityTypeIdByApplicatorType[0] = applicatorAbilityType.id
153
- end
154
- applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId[applicableBuffType.id] = applicatorAbilityTypeIdByApplicatorType
155
- end
156
- local applicatorUpgradeIds = {}
157
- local applicatorUpgradeIdByApplicatorAbilityTypeId = {}
158
- for ____, multilevelPhysicalPositiveApplicatorAbilityTypesChunk in ipairs(chunked(multilevelPhysicalPositiveApplicatorAbilityTypes, 4)) do
159
- local maxLevelCount = max(map(multilevelPhysicalPositiveApplicatorAbilityTypesChunk, "levelCount"))
160
- local applicatorAbilityTypeIds = map(multilevelPhysicalPositiveApplicatorAbilityTypesChunk, "id")
161
- local applicatorUpgrade = BlankUpgrade:create()
162
- applicatorUpgrade.isInternal = true
163
- applicatorUpgrade.levelCount = maxLevelCount - 1
164
- applicatorUpgrade.effects = map(
165
- applicatorAbilityTypeIds,
166
- function(applicatorAbilityTypeId)
167
- return {type = "rlev", bonusBase = 1, bonusIncrement = 1, abilityTypeId = applicatorAbilityTypeId}
168
- end
169
- )
170
- applicatorUpgradeIds[#applicatorUpgradeIds + 1] = applicatorUpgrade.id
171
- for ____, applicatorAbilityTypeId in ipairs(applicatorAbilityTypeIds) do
172
- applicatorUpgradeIdByApplicatorAbilityTypeId[applicatorAbilityTypeId] = applicatorUpgrade.id
176
+ for ____, unitType in ipairs(UnitType:getAll()) do
177
+ local ____array_0 = __TS__SparseArrayNew(table.unpack(unitType.affectingUpgradeIds))
178
+ __TS__SparseArrayPush(
179
+ ____array_0,
180
+ table.unpack(applicatorUpgradeIds)
181
+ )
182
+ unitType.affectingUpgradeIds = {__TS__SparseArraySpread(____array_0)}
173
183
  end
174
- end
175
- for ____, unitType in ipairs(UnitType:getAll()) do
176
- local ____array_0 = __TS__SparseArrayNew(table.unpack(unitType.affectingUpgradeIds))
177
- __TS__SparseArrayPush(
178
- ____array_0,
179
- table.unpack(applicatorUpgradeIds)
180
- )
181
- unitType.affectingUpgradeIds = {__TS__SparseArraySpread(____array_0)}
182
- end
183
- return {applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId, applicatorUpgradeIdByApplicatorAbilityTypeId}
184
- end))
184
+ return {applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId, applicatorUpgradeIdByApplicatorAbilityTypeId}
185
+ end),
186
+ 1,
187
+ 2
188
+ )
185
189
  local EVASION_ABILITY_TYPE_IDS = postcompile(function()
186
190
  return AbilityType:getAllIdsByBaseIds(map({
187
191
  "AEev",