warscript 0.0.1-dev.3af578d → 0.0.1-dev.3b93f8c

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 (215) hide show
  1. package/attributes.d.ts +6 -0
  2. package/attributes.lua +17 -1
  3. package/core/types/effect.d.ts +1 -3
  4. package/core/types/effect.lua +26 -29
  5. package/core/types/frame.lua +71 -22
  6. package/core/types/player.d.ts +16 -0
  7. package/core/types/player.lua +60 -15
  8. package/core/types/playerCamera.d.ts +2 -0
  9. package/core/types/playerCamera.lua +123 -5
  10. package/core/types/sound.d.ts +17 -25
  11. package/core/types/sound.lua +92 -47
  12. package/core/types/tileCell.d.ts +11 -1
  13. package/core/types/tileCell.lua +97 -0
  14. package/core/types/timer.d.ts +9 -8
  15. package/core/types/timer.lua +45 -23
  16. package/core/util.lua +6 -1
  17. package/decl/native.d.ts +846 -790
  18. package/destroyable.d.ts +1 -0
  19. package/destroyable.lua +9 -0
  20. package/engine/behavior.d.ts +14 -1
  21. package/engine/behavior.lua +230 -70
  22. package/engine/behaviour/ability/apply-buff.lua +5 -5
  23. package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
  24. package/engine/behaviour/ability/damage.d.ts +12 -3
  25. package/engine/behaviour/ability/damage.lua +33 -39
  26. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  27. package/engine/behaviour/ability/emulate-impact.lua +18 -3
  28. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  29. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  30. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  31. package/engine/behaviour/ability/restore-mana.lua +6 -6
  32. package/engine/behaviour/ability.d.ts +15 -6
  33. package/engine/behaviour/ability.lua +56 -21
  34. package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
  35. package/engine/behaviour/unit/stun-immunity.lua +57 -31
  36. package/engine/behaviour/unit.d.ts +40 -2
  37. package/engine/behaviour/unit.lua +269 -6
  38. package/engine/buff.d.ts +71 -21
  39. package/engine/buff.lua +392 -172
  40. package/engine/internal/ability.d.ts +7 -1
  41. package/engine/internal/ability.lua +49 -9
  42. package/engine/internal/item/ability.lua +63 -11
  43. package/engine/internal/item+owner.lua +12 -6
  44. package/engine/internal/item.d.ts +18 -17
  45. package/engine/internal/item.lua +135 -49
  46. package/engine/internal/mechanics/ability-duration.lua +1 -1
  47. package/engine/internal/mechanics/cast-ability.lua +6 -3
  48. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  49. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  50. package/engine/internal/misc/frame-coordinates.lua +21 -0
  51. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  52. package/engine/internal/misc/get-terrain-z.lua +11 -0
  53. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  54. package/engine/internal/misc/player-local-handle.lua +5 -0
  55. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  56. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  57. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  58. package/engine/internal/object-data/health-bonus.lua +16 -0
  59. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  60. package/engine/internal/object-data/mana-bonus.lua +16 -0
  61. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  62. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  63. package/engine/internal/unit/ability.d.ts +35 -0
  64. package/engine/internal/unit/ability.lua +98 -9
  65. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  66. package/engine/internal/unit/allowed-targets.lua +9 -1
  67. package/engine/internal/unit/attributes.d.ts +17 -0
  68. package/engine/internal/unit/attributes.lua +46 -0
  69. package/engine/internal/unit/bonus.d.ts +6 -0
  70. package/engine/internal/unit/bonus.lua +33 -3
  71. package/engine/internal/unit/fly-height.d.ts +7 -0
  72. package/engine/internal/unit/fly-height.lua +20 -0
  73. package/engine/internal/unit/interrupts.d.ts +12 -0
  74. package/engine/internal/unit/interrupts.lua +28 -0
  75. package/engine/internal/unit/item.lua +1 -1
  76. package/engine/internal/unit/main-selected.lua +12 -27
  77. package/engine/internal/unit/order.d.ts +20 -0
  78. package/engine/internal/unit/order.lua +136 -0
  79. package/engine/internal/unit/range-event.d.ts +12 -0
  80. package/engine/internal/unit/range-event.lua +90 -0
  81. package/engine/internal/unit/scale.d.ts +7 -0
  82. package/engine/internal/unit/scale.lua +20 -0
  83. package/engine/internal/unit+ability.lua +10 -1
  84. package/engine/internal/unit+bonus.lua +3 -3
  85. package/engine/internal/unit+damage.d.ts +2 -11
  86. package/engine/internal/unit+damage.lua +10 -14
  87. package/engine/internal/unit+spellSteal.lua +1 -2
  88. package/engine/internal/unit-missile-launch.lua +52 -14
  89. package/engine/internal/unit.d.ts +43 -25
  90. package/engine/internal/unit.lua +384 -260
  91. package/engine/local-client.d.ts +2 -0
  92. package/engine/local-client.lua +30 -0
  93. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  94. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  95. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
  96. package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
  97. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  98. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  99. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  100. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  101. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  102. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  103. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  104. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  105. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  106. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  107. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  108. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
  109. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  110. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  111. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  112. package/engine/object-data/entry/ability-type/blank-configurable.lua +0 -9
  113. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  114. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  115. package/engine/object-data/entry/ability-type/curse.lua +2 -2
  116. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  117. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  118. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  119. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  120. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  121. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  122. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  123. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  124. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  125. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  126. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  127. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  128. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  129. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  130. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  131. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  132. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  133. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  134. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  135. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  136. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  137. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  138. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  139. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  140. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  141. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  142. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  143. package/engine/object-data/entry/ability-type/web.lua +52 -0
  144. package/engine/object-data/entry/ability-type.d.ts +21 -17
  145. package/engine/object-data/entry/ability-type.lua +169 -28
  146. package/engine/object-data/entry/buff-type/applicable.lua +115 -106
  147. package/engine/object-data/entry/buff-type.d.ts +6 -12
  148. package/engine/object-data/entry/buff-type.lua +13 -29
  149. package/engine/object-data/entry/destructible-type.d.ts +28 -2
  150. package/engine/object-data/entry/destructible-type.lua +155 -0
  151. package/engine/object-data/entry/item-type.d.ts +1 -1
  152. package/engine/object-data/entry/item-type.lua +4 -4
  153. package/engine/object-data/entry/lightning-type.d.ts +1 -1
  154. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  155. package/engine/object-data/entry/sound-preset.lua +140 -0
  156. package/engine/object-data/entry/unit-type.d.ts +18 -5
  157. package/engine/object-data/entry/unit-type.lua +208 -96
  158. package/engine/object-data/entry/upgrade.d.ts +1 -1
  159. package/engine/object-data/entry/upgrade.lua +4 -4
  160. package/engine/object-data/entry.d.ts +16 -14
  161. package/engine/object-data/entry.lua +60 -32
  162. package/engine/object-field/ability.d.ts +4 -4
  163. package/engine/object-field/ability.lua +9 -8
  164. package/engine/object-field/unit.d.ts +72 -3
  165. package/engine/object-field/unit.lua +268 -7
  166. package/engine/object-field.d.ts +26 -7
  167. package/engine/object-field.lua +360 -119
  168. package/engine/random.d.ts +10 -0
  169. package/engine/random.lua +21 -0
  170. package/engine/standard/entries/buff-type.d.ts +3 -0
  171. package/engine/standard/entries/buff-type.lua +3 -0
  172. package/engine/standard/entries/sound-preset.d.ts +10 -0
  173. package/engine/standard/entries/sound-preset.lua +10 -0
  174. package/engine/standard/fields/ability.d.ts +2 -2
  175. package/engine/standard/fields/ability.lua +2 -2
  176. package/engine/standard/fields/unit.d.ts +12 -0
  177. package/engine/standard/fields/unit.lua +20 -0
  178. package/engine/synchronization.d.ts +11 -0
  179. package/engine/synchronization.lua +77 -0
  180. package/engine/text-tag.d.ts +36 -2
  181. package/engine/text-tag.lua +250 -10
  182. package/engine/unit.d.ts +6 -0
  183. package/engine/unit.lua +6 -0
  184. package/lualib_bundle.lua +118 -47
  185. package/net/socket.lua +1 -1
  186. package/objutil/buff.lua +11 -10
  187. package/objutil/object.lua +1 -1
  188. package/objutil/unit.lua +8 -0
  189. package/operation.lua +23 -17
  190. package/package.json +5 -5
  191. package/patch-lua.lua +15 -0
  192. package/patch-lualib.lua +1 -1
  193. package/utility/arrays.d.ts +2 -0
  194. package/utility/arrays.lua +11 -0
  195. package/utility/callback-array.d.ts +17 -0
  196. package/utility/callback-array.lua +61 -0
  197. package/utility/functions.d.ts +8 -0
  198. package/utility/functions.lua +13 -0
  199. package/utility/linked-map.d.ts +34 -0
  200. package/utility/linked-map.lua +101 -0
  201. package/utility/linked-set.d.ts +4 -1
  202. package/utility/linked-set.lua +43 -1
  203. package/utility/lua-maps.d.ts +15 -2
  204. package/utility/lua-maps.lua +53 -2
  205. package/utility/lua-sets.d.ts +2 -0
  206. package/utility/lua-sets.lua +7 -0
  207. package/utility/records.lua +20 -1
  208. package/utility/reflection.lua +11 -7
  209. package/utility/types.d.ts +3 -0
  210. package/core/types/order.d.ts +0 -25
  211. package/core/types/order.lua +0 -55
  212. /package/engine/internal/{object-data/armor-increase.d.ts → misc/damage-metadata-by-target.d.ts} +0 -0
  213. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  214. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  215. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -2,6 +2,7 @@ local ____lualib = require("lualib_bundle")
2
2
  local __TS__Class = ____lualib.__TS__Class
3
3
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
4
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
5
+ local __TS__InstanceOf = ____lualib.__TS__InstanceOf
5
6
  local ____exports = {}
6
7
  local ____unit = require("engine.internal.unit")
7
8
  local Unit = ____unit.Unit
@@ -19,7 +20,7 @@ local mapIndexed = ____arrays.mapIndexed
19
20
  local ____attachment_2Dpreset = require("engine.object-data.auxiliary.attachment-preset")
20
21
  local extractAttachmentPresetInputModelPath = ____attachment_2Dpreset.extractAttachmentPresetInputModelPath
21
22
  local extractAttachmentPresetInputNodeFQN = ____attachment_2Dpreset.extractAttachmentPresetInputNodeFQN
22
- local toAttachmentPreset = ____attachment_2Dpreset.toAttachmentPreset
23
+ local toEffectPreset = ____attachment_2Dpreset.toEffectPreset
23
24
  local ____combat_2Dclassification = require("engine.object-data.auxiliary.combat-classification")
24
25
  local combatClassificationsToStringArray = ____combat_2Dclassification.combatClassificationsToStringArray
25
26
  local stringArrayToCombatClassifications = ____combat_2Dclassification.stringArrayToCombatClassifications
@@ -33,11 +34,19 @@ local ____object_2Ddata_2Dentry_2Did_2Dgenerator = require("engine.object-data.u
33
34
  local abilityTypeIdGenerator = ____object_2Ddata_2Dentry_2Did_2Dgenerator.abilityTypeIdGenerator
34
35
  local ____upgrade = require("engine.object-data.entry.upgrade")
35
36
  local Upgrade = ____upgrade.Upgrade
37
+ local ____sound = require("core.types.sound")
38
+ local isSoundLabelCustom = ____sound.isSoundLabelCustom
39
+ local Sound3D = ____sound.Sound3D
40
+ local SoundSettings = ____sound.SoundSettings
41
+ local ____lua_2Dsets = require("utility.lua-sets")
42
+ local luaSetOf = ____lua_2Dsets.luaSetOf
36
43
  local castAnimationFQNByAbilityTypeId = {}
37
44
  local isButtonVisibleFalseAbilityTypes = {}
38
45
  local casterCastingEffectPresetsByAbilityTypeId = {}
39
46
  local casterChannelingEffectPresetsByAbilityTypeId = {}
40
47
  local targetCastingEffectPresetsByAbilityTypeId = {}
48
+ local targetChannelingEffectPresetsByAbilityTypeId = {}
49
+ local targetEffectSoundPresetByAbilityTypeId = {}
41
50
  ____exports.AbilityType = __TS__Class()
42
51
  local AbilityType = ____exports.AbilityType
43
52
  AbilityType.name = "AbilityType"
@@ -113,7 +122,7 @@ __TS__SetDescriptor(
113
122
  return casterCastingEffectPresetsByAbilityTypeId[self.id] or ({})
114
123
  end,
115
124
  set = function(self, casterCastingEffectPresets)
116
- casterCastingEffectPresetsByAbilityTypeId[self.id] = map(casterCastingEffectPresets, toAttachmentPreset)
125
+ casterCastingEffectPresetsByAbilityTypeId[self.id] = map(casterCastingEffectPresets, toEffectPreset)
117
126
  end
118
127
  },
119
128
  true
@@ -126,7 +135,7 @@ __TS__SetDescriptor(
126
135
  return casterChannelingEffectPresetsByAbilityTypeId[self.id] or ({})
127
136
  end,
128
137
  set = function(self, casterChannelingEffectPresets)
129
- casterChannelingEffectPresetsByAbilityTypeId[self.id] = map(casterChannelingEffectPresets, toAttachmentPreset)
138
+ casterChannelingEffectPresetsByAbilityTypeId[self.id] = map(casterChannelingEffectPresets, toEffectPreset)
130
139
  end
131
140
  },
132
141
  true
@@ -271,10 +280,10 @@ __TS__SetDescriptor(
271
280
  "lightningTypeIds",
272
281
  {
273
282
  get = function(self)
274
- return self:getObjectDataEntryIdsField("alig")
283
+ return self:getObjectDataEntryNumericIdsField("alig")
275
284
  end,
276
285
  set = function(self, lightningTypeIds)
277
- self:setObjectDataEntryIdsField("alig", lightningTypeIds)
286
+ self:setObjectDataEntryNumericIdsField("alig", lightningTypeIds)
278
287
  end
279
288
  },
280
289
  true
@@ -365,7 +374,20 @@ __TS__SetDescriptor(
365
374
  return targetCastingEffectPresetsByAbilityTypeId[self.id] or ({})
366
375
  end,
367
376
  set = function(self, targetCastingEffectPresets)
368
- targetCastingEffectPresetsByAbilityTypeId[self.id] = map(targetCastingEffectPresets, toAttachmentPreset)
377
+ targetCastingEffectPresetsByAbilityTypeId[self.id] = map(targetCastingEffectPresets, toEffectPreset)
378
+ end
379
+ },
380
+ true
381
+ )
382
+ __TS__SetDescriptor(
383
+ AbilityType.prototype,
384
+ "targetChannelingEffectPresets",
385
+ {
386
+ get = function(self)
387
+ return targetChannelingEffectPresetsByAbilityTypeId[self.id] or ({})
388
+ end,
389
+ set = function(self, targetChannelingEffectPresets)
390
+ targetChannelingEffectPresetsByAbilityTypeId[self.id] = map(targetChannelingEffectPresets, toEffectPreset)
369
391
  end
370
392
  },
371
393
  true
@@ -508,7 +530,7 @@ __TS__SetDescriptor(
508
530
  "techTreeDependencies",
509
531
  {
510
532
  get = function(self)
511
- local techTreeDependencyIds = self:getObjectDataEntryIdsField("areq")
533
+ local techTreeDependencyIds = self:getObjectDataEntryNumericIdsField("areq")
512
534
  local techTreeDependencyInternalLevels = self:getNumbersField("arqa")
513
535
  return mapIndexed(
514
536
  techTreeDependencyIds,
@@ -528,7 +550,7 @@ __TS__SetDescriptor(
528
550
  map(techTreeDependencies, extractTechTreeDependencyInputLevel),
529
551
  function(techTreeDependencyLevel) return techTreeDependencyLevel + 1 end
530
552
  )
531
- self:setObjectDataEntryIdsField("areq", techTreeDependencyIds)
553
+ self:setObjectDataEntryNumericIdsField("areq", techTreeDependencyIds)
532
554
  self:setNumbersField("arqa", techTreeDependencyInternalLevels)
533
555
  end
534
556
  },
@@ -718,26 +740,40 @@ __TS__SetDescriptor(
718
740
  )
719
741
  __TS__SetDescriptor(
720
742
  AbilityType.prototype,
721
- "soundPresetName",
743
+ "casterEffectSoundPresetId",
722
744
  {
723
745
  get = function(self)
724
- return self:getStringField("aefs")
746
+ local casterEffectSoundPresetId = self:getStringField("aefs")
747
+ return casterEffectSoundPresetId ~= "" and casterEffectSoundPresetId or nil
725
748
  end,
726
- set = function(self, soundPresetName)
727
- self:setStringField("aefs", soundPresetName)
749
+ set = function(self, casterEffectSoundPresetId)
750
+ self:setStringField("aefs", casterEffectSoundPresetId or "")
728
751
  end
729
752
  },
730
753
  true
731
754
  )
732
755
  __TS__SetDescriptor(
733
756
  AbilityType.prototype,
734
- "loopingSoundPresetName",
757
+ "casterEffectLoopingSoundPresetId",
735
758
  {
736
759
  get = function(self)
737
760
  return self:getStringField("aefl")
738
761
  end,
739
- set = function(self, loopingSoundPresetName)
740
- self:setStringField("aefl", loopingSoundPresetName)
762
+ set = function(self, casterEffectLoopingSoundPresetId)
763
+ self:setStringField("aefl", casterEffectLoopingSoundPresetId)
764
+ end
765
+ },
766
+ true
767
+ )
768
+ __TS__SetDescriptor(
769
+ AbilityType.prototype,
770
+ "targetEffectSoundPresetId",
771
+ {
772
+ get = function(self)
773
+ return targetEffectSoundPresetByAbilityTypeId[self.id]
774
+ end,
775
+ set = function(self, targetEffectSoundPresetId)
776
+ targetEffectSoundPresetByAbilityTypeId[self.id] = targetEffectSoundPresetId
741
777
  end
742
778
  },
743
779
  true
@@ -796,10 +832,10 @@ __TS__SetDescriptor(
796
832
  "buffTypeIds",
797
833
  {
798
834
  get = function(self)
799
- return self:getObjectDataEntryIdsLevelField("abuf")
835
+ return self:getObjectDataEntryNumericIdsLevelField("abuf")
800
836
  end,
801
837
  set = function(self, buffTypeIds)
802
- self:setObjectDataEntryIdsLevelField("abuf", buffTypeIds)
838
+ self:setObjectDataEntryNumericIdsLevelField("abuf", buffTypeIds)
803
839
  end
804
840
  },
805
841
  true
@@ -848,10 +884,10 @@ __TS__SetDescriptor(
848
884
  "effectBuffTypeIds",
849
885
  {
850
886
  get = function(self)
851
- return self:getObjectDataEntryIdsLevelField("aeff")
887
+ return self:getObjectDataEntryNumericIdsLevelField("aeff")
852
888
  end,
853
889
  set = function(self, effectBuffTypeIds)
854
- self:setObjectDataEntryIdsLevelField("aeff", effectBuffTypeIds)
890
+ self:setObjectDataEntryNumericIdsLevelField("aeff", effectBuffTypeIds)
855
891
  end
856
892
  },
857
893
  true
@@ -959,13 +995,38 @@ for abilityTypeId, animationFQN in pairs(postcompile(function() return castAnima
959
995
  4,
960
996
  function(caster, ability)
961
997
  if ability:getField(ABILITY_RLF_CASTING_TIME) ~= 0 then
962
- Timer:run(function()
963
- caster:playAnimation(animationFQN)
964
- end)
998
+ Timer:run(caster, "playAnimation", animationFQN)
965
999
  end
966
1000
  end
967
1001
  )
968
1002
  end
1003
+ for abilityTypeId, soundPresetId in pairs(postcompile(function() return targetEffectSoundPresetByAbilityTypeId end)) do
1004
+ if soundPresetId ~= nil then
1005
+ Unit.abilityWidgetTargetChannelingStartEvent[abilityTypeId]:addListener(
1006
+ 4,
1007
+ function(caster, ability, target)
1008
+ if __TS__InstanceOf(target, Unit) then
1009
+ Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, target)
1010
+ else
1011
+ Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, target.x, target.y)
1012
+ end
1013
+ end
1014
+ )
1015
+ Unit.abilityPointTargetChannelingStartEvent[abilityTypeId]:addListener(
1016
+ 4,
1017
+ function(caster, ability, x, y)
1018
+ Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, x, y)
1019
+ end
1020
+ )
1021
+ end
1022
+ end
1023
+ local unsupportedEffectSoundAbilityTypeIds = luaSetOf(fourCC("AAns"))
1024
+ Unit.abilityChannelingStartEvent:addListener(function(caster, ability)
1025
+ local soundPresetId = ability:getField(ABILITY_SF_EFFECT_SOUND)
1026
+ if isSoundLabelCustom(soundPresetId) or soundPresetId ~= "" and unsupportedEffectSoundAbilityTypeIds[ability.parentTypeId] ~= nil then
1027
+ Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, caster)
1028
+ end
1029
+ end)
969
1030
  local casterCastingEffectModelPathsByAbilityTypeId = postcompile(function()
970
1031
  return mapValues(
971
1032
  casterCastingEffectPresetsByAbilityTypeId,
@@ -978,10 +1039,17 @@ local casterCastingEffectAttachmentPointsByAbilityTypeId = postcompile(function(
978
1039
  function(casterCastingEffectPresets) return map(casterCastingEffectPresets, extractAttachmentPresetInputNodeFQN) end
979
1040
  )
980
1041
  end)
1042
+ local casterCastingEffectParametersByAbilityTypeId = postcompile(function()
1043
+ return mapValues(
1044
+ casterCastingEffectPresetsByAbilityTypeId,
1045
+ function(casterCastingEffectPresets) return map(casterCastingEffectPresets, "parameters") end
1046
+ )
1047
+ end)
981
1048
  local casterCastingEffectsByCaster = {}
982
1049
  local function handleAbilityCastingStartEvent(caster, ability)
983
1050
  local effectModelPaths = casterCastingEffectModelPathsByAbilityTypeId[ability.typeId]
984
1051
  local attachmentPoints = casterCastingEffectAttachmentPointsByAbilityTypeId[ability.typeId]
1052
+ local parameters = casterCastingEffectParametersByAbilityTypeId[ability.typeId]
985
1053
  local effects = {}
986
1054
  if effectModelPaths ~= nil then
987
1055
  for i = 1, #effectModelPaths do
@@ -990,7 +1058,7 @@ local function handleAbilityCastingStartEvent(caster, ability)
990
1058
  if attachmentPoint == nil or attachmentPoint == "" then
991
1059
  attachmentPoint = "origin"
992
1060
  end
993
- effects[i] = Effect:createTarget(effectModelPath, caster, attachmentPoint)
1061
+ effects[i] = Effect:create(effectModelPath, caster, attachmentPoint, parameters and parameters[i])
994
1062
  end
995
1063
  end
996
1064
  casterCastingEffectsByCaster[caster] = effects
@@ -1021,10 +1089,17 @@ local casterChannelingEffectAttachmentPointsByAbilityTypeId = postcompile(functi
1021
1089
  function(casterChannelingEffectPresets) return map(casterChannelingEffectPresets, extractAttachmentPresetInputNodeFQN) end
1022
1090
  )
1023
1091
  end)
1092
+ local casterChannelingEffectParametersByAbilityTypeId = postcompile(function()
1093
+ return mapValues(
1094
+ casterChannelingEffectPresetsByAbilityTypeId,
1095
+ function(casterChannelingEffectPresets) return map(casterChannelingEffectPresets, "parameters") end
1096
+ )
1097
+ end)
1024
1098
  local casterChannelingEffectsByCaster = {}
1025
1099
  local function handleAbilityChannelingStartEvent(caster, ability)
1026
1100
  local effectModelPaths = casterChannelingEffectModelPathsByAbilityTypeId[ability.typeId]
1027
1101
  local attachmentPoints = casterChannelingEffectAttachmentPointsByAbilityTypeId[ability.typeId]
1102
+ local parameters = casterChannelingEffectParametersByAbilityTypeId[ability.typeId]
1028
1103
  local effects = {}
1029
1104
  if effectModelPaths ~= nil then
1030
1105
  for i = 1, #effectModelPaths do
@@ -1033,23 +1108,89 @@ local function handleAbilityChannelingStartEvent(caster, ability)
1033
1108
  if attachmentPoint == nil or attachmentPoint == "" then
1034
1109
  attachmentPoint = "origin"
1035
1110
  end
1036
- effects[i] = Effect:createTarget(effectModelPath, caster, attachmentPoint)
1111
+ effects[i] = Effect:create(effectModelPath, caster, attachmentPoint, parameters and parameters[i])
1037
1112
  end
1038
1113
  end
1039
1114
  casterChannelingEffectsByCaster[caster] = effects
1040
1115
  end
1116
+ local targetChannelingEffectModelPathsByAbilityTypeId = postcompile(function()
1117
+ return mapValues(
1118
+ targetChannelingEffectPresetsByAbilityTypeId,
1119
+ function(targetChannelingEffectPresets) return map(targetChannelingEffectPresets, extractAttachmentPresetInputModelPath) end
1120
+ )
1121
+ end)
1122
+ local targetChannelingEffectAttachmentPointsByAbilityTypeId = postcompile(function()
1123
+ return mapValues(
1124
+ targetChannelingEffectPresetsByAbilityTypeId,
1125
+ function(targetChannelingEffectPresets) return map(targetChannelingEffectPresets, extractAttachmentPresetInputNodeFQN) end
1126
+ )
1127
+ end)
1128
+ local targetChannelingEffectParametersByAbilityTypeId = postcompile(function()
1129
+ return mapValues(
1130
+ targetChannelingEffectPresetsByAbilityTypeId,
1131
+ function(targetChannelingEffectPresets) return map(targetChannelingEffectPresets, "parameters") end
1132
+ )
1133
+ end)
1134
+ local targetChannelingEffectsByCaster = {}
1135
+ local function handleAbilityWidgetTargetChannelingStartEvent(caster, ability, target)
1136
+ local effectModelPaths = targetChannelingEffectModelPathsByAbilityTypeId[ability.typeId]
1137
+ local attachmentPoints = targetChannelingEffectAttachmentPointsByAbilityTypeId[ability.typeId]
1138
+ local parameters = targetChannelingEffectParametersByAbilityTypeId[ability.typeId]
1139
+ local effects = {}
1140
+ if effectModelPaths ~= nil then
1141
+ for i = 1, #effectModelPaths do
1142
+ local effectModelPath = effectModelPaths[i]
1143
+ local attachmentPoint = attachmentPoints and attachmentPoints[i]
1144
+ if attachmentPoint == nil or attachmentPoint == "" then
1145
+ attachmentPoint = "origin"
1146
+ end
1147
+ effects[i] = Effect:create(effectModelPath, target, attachmentPoint, parameters and parameters[i])
1148
+ end
1149
+ end
1150
+ targetChannelingEffectsByCaster[caster] = effects
1151
+ end
1152
+ local function handleAbilityPointTargetChannelingStartEvent(caster, ability, x, y)
1153
+ local effectModelPaths = targetChannelingEffectModelPathsByAbilityTypeId[ability.typeId]
1154
+ local attachmentPoints = targetChannelingEffectAttachmentPointsByAbilityTypeId[ability.typeId]
1155
+ local parameters = targetChannelingEffectParametersByAbilityTypeId[ability.typeId]
1156
+ local effects = {}
1157
+ if effectModelPaths ~= nil then
1158
+ for i = 1, #effectModelPaths do
1159
+ local effectModelPath = effectModelPaths[i]
1160
+ local attachmentPoint = attachmentPoints and attachmentPoints[i]
1161
+ if attachmentPoint == nil or attachmentPoint == "" then
1162
+ attachmentPoint = "origin"
1163
+ end
1164
+ effects[i] = Effect:create(effectModelPath, x, y, parameters and parameters[i])
1165
+ end
1166
+ end
1167
+ targetChannelingEffectsByCaster[caster] = effects
1168
+ end
1041
1169
  local function handleAbilityStopChannelingEvent(caster)
1042
- local effects = casterChannelingEffectsByCaster[caster]
1043
- if effects ~= nil then
1044
- for i = 1, #effects do
1045
- effects[i]:destroy()
1170
+ local casterEffects = casterChannelingEffectsByCaster[caster]
1171
+ if casterEffects ~= nil then
1172
+ for i = 1, #casterEffects do
1173
+ casterEffects[i]:destroy()
1046
1174
  end
1047
1175
  casterChannelingEffectsByCaster[caster] = nil
1048
1176
  end
1177
+ local targetEffects = targetChannelingEffectsByCaster[caster]
1178
+ if targetEffects ~= nil then
1179
+ for i = 1, #targetEffects do
1180
+ targetEffects[i]:destroy()
1181
+ end
1182
+ targetChannelingEffectsByCaster[caster] = nil
1183
+ end
1049
1184
  end
1050
1185
  for abilityTypeId in pairs(casterChannelingEffectModelPathsByAbilityTypeId) do
1051
1186
  Unit.abilityChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityChannelingStartEvent)
1052
1187
  Unit.abilityChannelingFinishEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1053
1188
  Unit.abilityStopEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1054
1189
  end
1190
+ for abilityTypeId in pairs(targetChannelingEffectModelPathsByAbilityTypeId) do
1191
+ Unit.abilityWidgetTargetChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityWidgetTargetChannelingStartEvent)
1192
+ Unit.abilityPointTargetChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityPointTargetChannelingStartEvent)
1193
+ Unit.abilityChannelingFinishEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1194
+ Unit.abilityStopEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1195
+ end
1055
1196
  return ____exports
@@ -65,118 +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.soundPresetName = ""
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[852189] = 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.buffTypeIds = {applicableBuffType.id, applicableBuffType.id}
125
- applicatorAbilityTypeIdByApplicatorType[852173] = applicatorAbilityType.id
126
- end
127
- if applicableBuffType.polarity == 1 or applicableBuffType.polarity == nil then
128
- local applicatorAbilityType = prepareAbilityType(BerserkAbilityType, applicableBuffType)
129
- applicatorAbilityType.attackSpeedIncreaseFactor = 0
130
- applicatorAbilityType.movementSpeedIncreaseFactor = 0
131
- applicatorAbilityType.buffTypeIds = {applicableBuffType.id}
132
- if applicatorAbilityType.levelCount > 1 then
133
- 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}
134
169
  end
135
- applicatorAbilityTypeIdByApplicatorType[852100] = applicatorAbilityType.id
170
+ )
171
+ applicatorUpgradeIds[#applicatorUpgradeIds + 1] = applicatorUpgrade.id
172
+ for ____, applicatorAbilityTypeId in ipairs(applicatorAbilityTypeIds) do
173
+ applicatorUpgradeIdByApplicatorAbilityTypeId[applicatorAbilityTypeId] = applicatorUpgrade.id
136
174
  end
137
175
  end
138
- if applicableBuffType.polarity == 0 or applicableBuffType.polarity == nil then
139
- local applicatorAbilityType = prepareAbilityType(PermanentImmolationAbilityType, applicableBuffType)
140
- applicatorAbilityType.levelCount = 1
141
- applicatorAbilityType.damagePerInterval = 0
142
- applicatorAbilityType.castRange = 0
143
- applicatorAbilityType.buffDuration = MAXIMUM_INTEGER
144
- applicatorAbilityType.heroBuffDuration = MAXIMUM_INTEGER
145
- applicatorAbilityType.allowedTargetCombatClassifications = combatClassificationsOf(1)
146
- applicatorAbilityType.buffTypeIds = {applicableBuffType.id}
147
- applicatorAbilityTypeIdByApplicatorType[0] = applicatorAbilityType.id
148
- end
149
- applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId[applicableBuffType.id] = applicatorAbilityTypeIdByApplicatorType
150
- end
151
- local applicatorUpgradeIds = {}
152
- local applicatorUpgradeIdByApplicatorAbilityTypeId = {}
153
- for ____, multilevelPhysicalPositiveApplicatorAbilityTypesChunk in ipairs(chunked(multilevelPhysicalPositiveApplicatorAbilityTypes, 4)) do
154
- local maxLevelCount = max(map(multilevelPhysicalPositiveApplicatorAbilityTypesChunk, "levelCount"))
155
- local applicatorAbilityTypeIds = map(multilevelPhysicalPositiveApplicatorAbilityTypesChunk, "id")
156
- local applicatorUpgrade = BlankUpgrade:create()
157
- applicatorUpgrade.isInternal = true
158
- applicatorUpgrade.levelCount = maxLevelCount - 1
159
- applicatorUpgrade.effects = map(
160
- applicatorAbilityTypeIds,
161
- function(applicatorAbilityTypeId)
162
- return {type = "rlev", bonusBase = 1, bonusIncrement = 1, abilityTypeId = applicatorAbilityTypeId}
163
- end
164
- )
165
- applicatorUpgradeIds[#applicatorUpgradeIds + 1] = applicatorUpgrade.id
166
- for ____, applicatorAbilityTypeId in ipairs(applicatorAbilityTypeIds) do
167
- 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)}
168
183
  end
169
- end
170
- for ____, unitType in ipairs(UnitType:getAll()) do
171
- local ____array_0 = __TS__SparseArrayNew(table.unpack(unitType.affectingUpgradeIds))
172
- __TS__SparseArrayPush(
173
- ____array_0,
174
- table.unpack(applicatorUpgradeIds)
175
- )
176
- unitType.affectingUpgradeIds = {__TS__SparseArraySpread(____array_0)}
177
- end
178
- return {applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId, applicatorUpgradeIdByApplicatorAbilityTypeId}
179
- end))
184
+ return {applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId, applicatorUpgradeIdByApplicatorAbilityTypeId}
185
+ end),
186
+ 1,
187
+ 2
188
+ )
180
189
  local EVASION_ABILITY_TYPE_IDS = postcompile(function()
181
190
  return AbilityType:getAllIdsByBaseIds(map({
182
191
  "AEev",
@@ -222,7 +231,7 @@ Unit.abilityCastingStartEvent[SEARING_ARROWS_DUMMY_ABILITY_TYPE_ID]:addListener(
222
231
  ---
223
232
  -- @internal For use by internal systems only.
224
233
  ____exports.internalApplyBuff = function(unit, applicableBuffTypeId, polarity, resistanceType, level, duration, spellStealPriority, learnLevelMinimum, missProbability)
225
- local applicatorType = polarity == 1 and (resistanceType == 1 and 852101 or 852100) or (polarity == 2 and (resistanceType == 1 and 852189 or 852173) or 0)
234
+ local applicatorType = polarity == 1 and (resistanceType == 1 and 852101 or 852100) or (polarity == 2 and (resistanceType == 1 and 852190 or 852173) or 0)
226
235
  local ____opt_1 = applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId[applicableBuffTypeId]
227
236
  local applicatorAbilityTypeId = ____opt_1 and ____opt_1[applicatorType]
228
237
  if applicatorAbilityTypeId == nil then
@@ -274,7 +283,7 @@ ____exports.internalApplyBuff = function(unit, applicableBuffTypeId, polarity, r
274
283
  ability:setField(ABILITY_RLF_DURATION_HERO, level, actualDuration)
275
284
  ability:setField(ABILITY_IF_PRIORITY, spellStealPriority or 0)
276
285
  ability:setField(ABILITY_IF_REQUIRED_LEVEL, learnLevelMinimum or 6)
277
- if missProbability ~= nil and applicatorType == 852189 then
286
+ if missProbability ~= nil and applicatorType == 852190 then
278
287
  ability:setField(ABILITY_RLF_CHANCE_TO_MISS_CRS, missProbability)
279
288
  end
280
289
  end,
@@ -3,12 +3,16 @@ import { TupleOf } from "../../../utility/types";
3
3
  import { AttachmentPreset, AttachmentPresetInput } from "../auxiliary/attachment-preset";
4
4
  import { Race } from "../auxiliary/race";
5
5
  import { SoundPresetName } from "../auxiliary/sound-preset-name";
6
- import { ObjectDataEntry, ObjectDataEntryId } from "../entry";
6
+ import { ObjectDataEntry, ObjectDataEntryConstructor, ObjectDataEntryId } from "../entry";
7
7
  import { LightningTypeId } from "./lightning-type";
8
- export type BuffTypeId = ObjectDataEntryId & {
8
+ export type BuffTypeId = ObjectDataEntryId & number & {
9
9
  readonly __buffTypeId: unique symbol;
10
10
  };
11
+ export type StandardBuffTypeId = BuffTypeId & {
12
+ readonly __standardBuffTypeId: unique symbol;
13
+ };
11
14
  export declare abstract class BuffType<Id extends BuffTypeId = BuffTypeId> extends ObjectDataEntry<Id> {
15
+ static readonly [id: StandardBuffTypeId]: ObjectDataEntryConstructor<BuffType>;
12
16
  private static readonly idGenerator;
13
17
  protected static generateId(): number;
14
18
  protected static getObjectData(map: WarMap): WarObjects;
@@ -51,13 +55,3 @@ export declare abstract class BuffType<Id extends BuffTypeId = BuffTypeId> exten
51
55
  get tooltipExtendedText(): string;
52
56
  set tooltipExtendedText(tooltipText: string);
53
57
  }
54
- declare const AvatarBuffType_base: typeof BuffType;
55
- export declare class AvatarBuffType extends AvatarBuffType_base {
56
- }
57
- declare const DevotionAuraBuffType_base: typeof BuffType;
58
- export declare class DevotionAuraBuffType extends DevotionAuraBuffType_base {
59
- }
60
- declare const DivineShieldBuffType_base: typeof BuffType;
61
- export declare class DivineShieldBuffType extends DivineShieldBuffType_base {
62
- }
63
- export {};