warscript 0.0.1-dev.748f04c → 0.0.1-dev.75599b0

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 (219) 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.d.ts +1 -0
  6. package/core/types/frame.lua +136 -58
  7. package/core/types/handle.lua +6 -9
  8. package/core/types/item.d.ts +1 -0
  9. package/core/types/item.lua +1 -0
  10. package/core/types/player.d.ts +17 -1
  11. package/core/types/player.lua +70 -24
  12. package/core/types/playerCamera.d.ts +2 -0
  13. package/core/types/playerCamera.lua +123 -5
  14. package/core/types/sound.d.ts +17 -25
  15. package/core/types/sound.lua +92 -47
  16. package/core/types/tileCell.d.ts +11 -1
  17. package/core/types/tileCell.lua +97 -0
  18. package/core/types/timer.d.ts +9 -8
  19. package/core/types/timer.lua +45 -23
  20. package/core/util.lua +6 -1
  21. package/decl/native.d.ts +846 -790
  22. package/destroyable.d.ts +1 -0
  23. package/destroyable.lua +9 -0
  24. package/engine/behavior.d.ts +14 -1
  25. package/engine/behavior.lua +230 -70
  26. package/engine/behaviour/ability/apply-buff.lua +5 -5
  27. package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
  28. package/engine/behaviour/ability/damage.d.ts +12 -3
  29. package/engine/behaviour/ability/damage.lua +33 -39
  30. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  31. package/engine/behaviour/ability/emulate-impact.lua +23 -7
  32. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  33. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  34. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  35. package/engine/behaviour/ability/restore-mana.lua +6 -6
  36. package/engine/behaviour/ability.d.ts +15 -6
  37. package/engine/behaviour/ability.lua +56 -21
  38. package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
  39. package/engine/behaviour/unit/stun-immunity.lua +57 -31
  40. package/engine/behaviour/unit.d.ts +40 -2
  41. package/engine/behaviour/unit.lua +269 -6
  42. package/engine/buff.d.ts +71 -21
  43. package/engine/buff.lua +392 -172
  44. package/engine/internal/ability.d.ts +7 -1
  45. package/engine/internal/ability.lua +64 -24
  46. package/engine/internal/item/ability.lua +63 -11
  47. package/engine/internal/item/fields.d.ts +12 -0
  48. package/engine/internal/item/fields.lua +33 -0
  49. package/engine/internal/item+owner.lua +12 -6
  50. package/engine/internal/item.d.ts +16 -16
  51. package/engine/internal/item.lua +152 -69
  52. package/engine/internal/mechanics/ability-duration.lua +1 -1
  53. package/engine/internal/mechanics/cast-ability.lua +6 -3
  54. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  55. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  56. package/engine/internal/misc/frame-coordinates.lua +21 -0
  57. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  58. package/engine/internal/misc/get-terrain-z.lua +11 -0
  59. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  60. package/engine/internal/misc/player-local-handle.lua +5 -0
  61. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  62. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  63. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  64. package/engine/internal/object-data/health-bonus.lua +16 -0
  65. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  66. package/engine/internal/object-data/mana-bonus.lua +16 -0
  67. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  68. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  69. package/engine/internal/unit/ability.d.ts +35 -0
  70. package/engine/internal/unit/ability.lua +110 -11
  71. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  72. package/engine/internal/unit/allowed-targets.lua +9 -1
  73. package/engine/internal/unit/attributes.d.ts +17 -0
  74. package/engine/internal/unit/attributes.lua +46 -0
  75. package/engine/internal/unit/bonus.d.ts +6 -0
  76. package/engine/internal/unit/bonus.lua +33 -3
  77. package/engine/internal/unit/fly-height.d.ts +7 -0
  78. package/engine/internal/unit/fly-height.lua +20 -0
  79. package/engine/internal/unit/interrupts.d.ts +12 -0
  80. package/engine/internal/unit/interrupts.lua +28 -0
  81. package/engine/internal/unit/main-selected.lua +12 -27
  82. package/engine/internal/unit/order.d.ts +20 -0
  83. package/engine/internal/unit/order.lua +136 -0
  84. package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
  85. package/engine/internal/unit/pseudo-passive-abilities.lua +8 -0
  86. package/engine/internal/unit/range-event.d.ts +12 -0
  87. package/engine/internal/unit/range-event.lua +90 -0
  88. package/engine/internal/unit/scale.d.ts +7 -0
  89. package/engine/internal/unit/scale.lua +20 -0
  90. package/engine/internal/unit+ability.lua +10 -1
  91. package/engine/internal/unit+bonus.lua +3 -3
  92. package/engine/internal/unit+damage.d.ts +2 -11
  93. package/engine/internal/unit+damage.lua +10 -14
  94. package/engine/internal/unit+spellSteal.lua +1 -2
  95. package/engine/internal/unit-missile-launch.lua +52 -14
  96. package/engine/internal/unit.d.ts +43 -25
  97. package/engine/internal/unit.lua +384 -260
  98. package/engine/local-client.d.ts +7 -0
  99. package/engine/local-client.lua +86 -1
  100. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  101. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  102. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
  103. package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
  104. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  105. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  106. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  107. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  108. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  109. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  110. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  111. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  112. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  113. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  114. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
  115. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  116. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  117. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  118. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
  119. package/engine/object-data/entry/ability-type/blank-configurable.lua +28 -9
  120. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  121. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  122. package/engine/object-data/entry/ability-type/curse.lua +2 -2
  123. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  124. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  125. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  126. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  127. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  128. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  129. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  130. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  131. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  132. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  133. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  134. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  135. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  136. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  137. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  138. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  139. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  140. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  141. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  142. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  143. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  144. package/engine/object-data/entry/ability-type/web.lua +52 -0
  145. package/engine/object-data/entry/ability-type.d.ts +15 -11
  146. package/engine/object-data/entry/ability-type.lua +153 -13
  147. package/engine/object-data/entry/buff-type/applicable.lua +113 -104
  148. package/engine/object-data/entry/buff-type.d.ts +5 -11
  149. package/engine/object-data/entry/buff-type.lua +11 -27
  150. package/engine/object-data/entry/destructible-type.d.ts +27 -1
  151. package/engine/object-data/entry/destructible-type.lua +155 -0
  152. package/engine/object-data/entry/sound-preset.d.ts +17 -0
  153. package/engine/object-data/entry/sound-preset.lua +104 -0
  154. package/engine/object-data/entry/unit-type.d.ts +17 -4
  155. package/engine/object-data/entry/unit-type.lua +200 -88
  156. package/engine/object-field/ability.d.ts +4 -4
  157. package/engine/object-field/ability.lua +9 -8
  158. package/engine/object-field/item.d.ts +22 -0
  159. package/engine/object-field/item.lua +118 -0
  160. package/engine/object-field/unit.d.ts +72 -3
  161. package/engine/object-field/unit.lua +268 -7
  162. package/engine/object-field.d.ts +26 -7
  163. package/engine/object-field.lua +360 -119
  164. package/engine/random.d.ts +10 -0
  165. package/engine/random.lua +21 -0
  166. package/engine/standard/entries/buff-type.d.ts +3 -0
  167. package/engine/standard/entries/buff-type.lua +3 -0
  168. package/engine/standard/fields/ability.d.ts +2 -2
  169. package/engine/standard/fields/ability.lua +2 -2
  170. package/engine/standard/fields/item.d.ts +4 -0
  171. package/engine/standard/fields/item.lua +6 -0
  172. package/engine/standard/fields/unit.d.ts +12 -0
  173. package/engine/standard/fields/unit.lua +20 -0
  174. package/engine/synchronization.d.ts +11 -0
  175. package/engine/synchronization.lua +77 -0
  176. package/engine/text-tag.d.ts +36 -2
  177. package/engine/text-tag.lua +250 -10
  178. package/engine/unit.d.ts +6 -0
  179. package/engine/unit.lua +6 -0
  180. package/event.d.ts +1 -1
  181. package/lualib_bundle.lua +1 -1
  182. package/math.d.ts +2 -0
  183. package/math.lua +14 -0
  184. package/net/socket.lua +1 -1
  185. package/network.lua +25 -1
  186. package/objutil/buff.lua +11 -10
  187. package/objutil/object.lua +1 -1
  188. package/objutil/unit.lua +2 -2
  189. package/operation.d.ts +8 -1
  190. package/operation.lua +38 -18
  191. package/package.json +5 -5
  192. package/patch-lua.lua +15 -0
  193. package/patch-lualib.lua +1 -1
  194. package/utility/arrays.d.ts +2 -0
  195. package/utility/arrays.lua +11 -0
  196. package/utility/callback-array.d.ts +17 -0
  197. package/utility/callback-array.lua +61 -0
  198. package/utility/functions.d.ts +8 -0
  199. package/utility/functions.lua +13 -0
  200. package/utility/linked-map.d.ts +35 -0
  201. package/utility/linked-map.lua +107 -0
  202. package/utility/linked-set.d.ts +5 -1
  203. package/utility/linked-set.lua +49 -1
  204. package/utility/lua-maps.d.ts +15 -2
  205. package/utility/lua-maps.lua +53 -2
  206. package/utility/lua-sets.d.ts +2 -0
  207. package/utility/lua-sets.lua +7 -0
  208. package/utility/random.d.ts +102 -0
  209. package/utility/random.lua +273 -0
  210. package/utility/records.lua +20 -1
  211. package/utility/types.d.ts +3 -0
  212. package/utility/unordered-map.d.ts +27 -0
  213. package/utility/unordered-map.lua +99 -0
  214. package/core/types/order.d.ts +0 -25
  215. package/core/types/order.lua +0 -55
  216. /package/engine/internal/{object-data/armor-increase.d.ts → misc/damage-metadata-by-target.d.ts} +0 -0
  217. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  218. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  219. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -3,7 +3,7 @@ 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 { AttachmentPreset, AttachmentPresetInput } from "../auxiliary/attachment-preset";
6
+ import { 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";
@@ -27,11 +27,11 @@ export declare abstract class AbilityType extends ObjectDataEntry<AbilityTypeId>
27
27
  set buttonPositionX(buttonPositionX: number);
28
28
  get buttonPositionY(): number;
29
29
  set buttonPositionY(buttonPositionY: number);
30
- get casterCastingEffectPresets(): AttachmentPreset[];
31
- set casterCastingEffectPresets(casterCastingEffectPresets: AttachmentPresetInput[]);
32
- get casterChannelingEffectPresets(): AttachmentPreset[];
33
- set casterChannelingEffectPresets(casterChannelingEffectPresets: AttachmentPresetInput[]);
34
- get casterAttachmentPresets(): TupleOf<AttachmentPreset, 0 | 1 | 2>;
30
+ get casterCastingEffectPresets(): EffectPresetWithParameters[];
31
+ set casterCastingEffectPresets(casterCastingEffectPresets: EffectPresetWithParametersInput[]);
32
+ get casterChannelingEffectPresets(): EffectPresetWithParameters[];
33
+ set casterChannelingEffectPresets(casterChannelingEffectPresets: EffectPresetWithParametersInput[]);
34
+ get casterAttachmentPresets(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2>;
35
35
  set casterAttachmentPresets(casterAttachmentPresets: TupleOf<AttachmentPresetInput, 0 | 1 | 2>);
36
36
  get effectModelPaths(): string[];
37
37
  set effectModelPaths(effectModelPaths: string[]);
@@ -63,15 +63,17 @@ export declare abstract class AbilityType extends ObjectDataEntry<AbilityTypeId>
63
63
  set missileMovementArc(missileMovementArc: number);
64
64
  get missileMovementSpeed(): number;
65
65
  set missileMovementSpeed(missileMovementSpeed: number);
66
- get specialAttachmentPreset(): AttachmentPreset | undefined;
66
+ get specialAttachmentPreset(): EffectPresetWithParameters | undefined;
67
67
  set specialAttachmentPreset(specialAttachmentPreset: AttachmentPresetInput | undefined);
68
- get targetCastingEffectPresets(): AttachmentPreset[];
68
+ get targetCastingEffectPresets(): EffectPresetWithParameters[];
69
69
  set targetCastingEffectPresets(targetCastingEffectPresets: AttachmentPresetInput[]);
70
- get targetEffectPresets(): TupleOf<AttachmentPreset, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
70
+ get targetChannelingEffectPresets(): EffectPresetWithParameters[];
71
+ set targetChannelingEffectPresets(targetChannelingEffectPresets: EffectPresetWithParametersInput[]);
72
+ get targetEffectPresets(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
71
73
  set targetEffectPresets(targetEffectPresets: TupleOf<AttachmentPresetInput, 0 | 1 | 2 | 3 | 4 | 5 | 6>);
72
- get targetEffectPresetsSD(): TupleOf<AttachmentPreset, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
74
+ get targetEffectPresetsSD(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
73
75
  set targetEffectPresetsSD(targetEffectPresetsSD: TupleOf<AttachmentPresetInput, 0 | 1 | 2 | 3 | 4 | 5 | 6>);
74
- get targetEffectPresetsHD(): TupleOf<AttachmentPreset, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
76
+ get targetEffectPresetsHD(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
75
77
  set targetEffectPresetsHD(targetEffectPresetsHD: TupleOf<AttachmentPresetInput, 0 | 1 | 2 | 3 | 4 | 5 | 6>);
76
78
  get turnOffButtonPositionX(): number;
77
79
  set turnOffButtonPositionX(buttonPositionX: number);
@@ -115,6 +117,8 @@ export declare abstract class AbilityType extends ObjectDataEntry<AbilityTypeId>
115
117
  set casterEffectSoundPresetId(casterEffectSoundPresetId: SoundPresetId | undefined);
116
118
  get casterEffectLoopingSoundPresetId(): SoundPresetId;
117
119
  set casterEffectLoopingSoundPresetId(casterEffectLoopingSoundPresetId: SoundPresetId);
120
+ get targetEffectSoundPresetId(): SoundPresetId | undefined;
121
+ set targetEffectSoundPresetId(targetEffectSoundPresetId: SoundPresetId | undefined);
118
122
  get allowedTargetCombatClassifications(): CombatClassifications[];
119
123
  set allowedTargetCombatClassifications(allowedTargetCombatClassifications: ObjectDataEntryLevelFieldValueSupplier<CombatClassifications>);
120
124
  get areaOfEffect(): number[];
@@ -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
@@ -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
@@ -743,6 +765,19 @@ __TS__SetDescriptor(
743
765
  },
744
766
  true
745
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
777
+ end
778
+ },
779
+ true
780
+ )
746
781
  __TS__SetDescriptor(
747
782
  AbilityType.prototype,
748
783
  "allowedTargetCombatClassifications",
@@ -960,13 +995,38 @@ for abilityTypeId, animationFQN in pairs(postcompile(function() return castAnima
960
995
  4,
961
996
  function(caster, ability)
962
997
  if ability:getField(ABILITY_RLF_CASTING_TIME) ~= 0 then
963
- Timer:run(function()
964
- caster:playAnimation(animationFQN)
965
- end)
998
+ Timer:run(caster, "playAnimation", animationFQN)
966
999
  end
967
1000
  end
968
1001
  )
969
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)
970
1030
  local casterCastingEffectModelPathsByAbilityTypeId = postcompile(function()
971
1031
  return mapValues(
972
1032
  casterCastingEffectPresetsByAbilityTypeId,
@@ -979,10 +1039,17 @@ local casterCastingEffectAttachmentPointsByAbilityTypeId = postcompile(function(
979
1039
  function(casterCastingEffectPresets) return map(casterCastingEffectPresets, extractAttachmentPresetInputNodeFQN) end
980
1040
  )
981
1041
  end)
1042
+ local casterCastingEffectParametersByAbilityTypeId = postcompile(function()
1043
+ return mapValues(
1044
+ casterCastingEffectPresetsByAbilityTypeId,
1045
+ function(casterCastingEffectPresets) return map(casterCastingEffectPresets, "parameters") end
1046
+ )
1047
+ end)
982
1048
  local casterCastingEffectsByCaster = {}
983
1049
  local function handleAbilityCastingStartEvent(caster, ability)
984
1050
  local effectModelPaths = casterCastingEffectModelPathsByAbilityTypeId[ability.typeId]
985
1051
  local attachmentPoints = casterCastingEffectAttachmentPointsByAbilityTypeId[ability.typeId]
1052
+ local parameters = casterCastingEffectParametersByAbilityTypeId[ability.typeId]
986
1053
  local effects = {}
987
1054
  if effectModelPaths ~= nil then
988
1055
  for i = 1, #effectModelPaths do
@@ -991,7 +1058,7 @@ local function handleAbilityCastingStartEvent(caster, ability)
991
1058
  if attachmentPoint == nil or attachmentPoint == "" then
992
1059
  attachmentPoint = "origin"
993
1060
  end
994
- effects[i] = Effect:createTarget(effectModelPath, caster, attachmentPoint)
1061
+ effects[i] = Effect:create(effectModelPath, caster, attachmentPoint, parameters and parameters[i])
995
1062
  end
996
1063
  end
997
1064
  casterCastingEffectsByCaster[caster] = effects
@@ -1022,10 +1089,17 @@ local casterChannelingEffectAttachmentPointsByAbilityTypeId = postcompile(functi
1022
1089
  function(casterChannelingEffectPresets) return map(casterChannelingEffectPresets, extractAttachmentPresetInputNodeFQN) end
1023
1090
  )
1024
1091
  end)
1092
+ local casterChannelingEffectParametersByAbilityTypeId = postcompile(function()
1093
+ return mapValues(
1094
+ casterChannelingEffectPresetsByAbilityTypeId,
1095
+ function(casterChannelingEffectPresets) return map(casterChannelingEffectPresets, "parameters") end
1096
+ )
1097
+ end)
1025
1098
  local casterChannelingEffectsByCaster = {}
1026
1099
  local function handleAbilityChannelingStartEvent(caster, ability)
1027
1100
  local effectModelPaths = casterChannelingEffectModelPathsByAbilityTypeId[ability.typeId]
1028
1101
  local attachmentPoints = casterChannelingEffectAttachmentPointsByAbilityTypeId[ability.typeId]
1102
+ local parameters = casterChannelingEffectParametersByAbilityTypeId[ability.typeId]
1029
1103
  local effects = {}
1030
1104
  if effectModelPaths ~= nil then
1031
1105
  for i = 1, #effectModelPaths do
@@ -1034,23 +1108,89 @@ local function handleAbilityChannelingStartEvent(caster, ability)
1034
1108
  if attachmentPoint == nil or attachmentPoint == "" then
1035
1109
  attachmentPoint = "origin"
1036
1110
  end
1037
- effects[i] = Effect:createTarget(effectModelPath, caster, attachmentPoint)
1111
+ effects[i] = Effect:create(effectModelPath, caster, attachmentPoint, parameters and parameters[i])
1038
1112
  end
1039
1113
  end
1040
1114
  casterChannelingEffectsByCaster[caster] = effects
1041
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
1042
1169
  local function handleAbilityStopChannelingEvent(caster)
1043
- local effects = casterChannelingEffectsByCaster[caster]
1044
- if effects ~= nil then
1045
- for i = 1, #effects do
1046
- effects[i]:destroy()
1170
+ local casterEffects = casterChannelingEffectsByCaster[caster]
1171
+ if casterEffects ~= nil then
1172
+ for i = 1, #casterEffects do
1173
+ casterEffects[i]:destroy()
1047
1174
  end
1048
1175
  casterChannelingEffectsByCaster[caster] = nil
1049
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
1050
1184
  end
1051
1185
  for abilityTypeId in pairs(casterChannelingEffectModelPathsByAbilityTypeId) do
1052
1186
  Unit.abilityChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityChannelingStartEvent)
1053
1187
  Unit.abilityChannelingFinishEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1054
1188
  Unit.abilityStopEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1055
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
1056
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.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.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",
@@ -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
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 {};
@@ -6,6 +6,8 @@ local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
6
6
  local ____exports = {}
7
7
  local ____arrays = require("utility.arrays")
8
8
  local array = ____arrays.array
9
+ local ____reflection = require("utility.reflection")
10
+ local implementReadonlyNumberIndexSupplier = ____reflection.implementReadonlyNumberIndexSupplier
9
11
  local ____entry = require("engine.object-data.entry")
10
12
  local ObjectDataEntry = ____entry.ObjectDataEntry
11
13
  local ____object_2Ddata_2Dentry_2Did_2Dgenerator = require("engine.object-data.utility.object-data-entry-id-generator")
@@ -285,32 +287,14 @@ __TS__SetDescriptor(
285
287
  },
286
288
  true
287
289
  )
288
- local function makeBaseBuffType(id)
289
- local BaseBuffType = __TS__Class()
290
- BaseBuffType.name = "BaseBuffType"
291
- __TS__ClassExtends(BaseBuffType, ____exports.BuffType)
292
- BaseBuffType.BASE_ID = id
293
- return BaseBuffType
294
- end
295
- ____exports.AvatarBuffType = __TS__Class()
296
- local AvatarBuffType = ____exports.AvatarBuffType
297
- AvatarBuffType.name = "AvatarBuffType"
298
- __TS__ClassExtends(
299
- AvatarBuffType,
300
- makeBaseBuffType(fourCC("BHav"))
301
- )
302
- ____exports.DevotionAuraBuffType = __TS__Class()
303
- local DevotionAuraBuffType = ____exports.DevotionAuraBuffType
304
- DevotionAuraBuffType.name = "DevotionAuraBuffType"
305
- __TS__ClassExtends(
306
- DevotionAuraBuffType,
307
- makeBaseBuffType(fourCC("BHad"))
308
- )
309
- ____exports.DivineShieldBuffType = __TS__Class()
310
- local DivineShieldBuffType = ____exports.DivineShieldBuffType
311
- DivineShieldBuffType.name = "DivineShieldBuffType"
312
- __TS__ClassExtends(
313
- DivineShieldBuffType,
314
- makeBaseBuffType(fourCC("BHds"))
290
+ implementReadonlyNumberIndexSupplier(
291
+ ____exports.BuffType,
292
+ function(id)
293
+ local ____class_0 = __TS__Class()
294
+ ____class_0.name = ____class_0.name
295
+ __TS__ClassExtends(____class_0, ____exports.BuffType)
296
+ ____class_0.BASE_ID = id
297
+ return ____class_0
298
+ end
315
299
  )
316
300
  return ____exports