warscript 0.0.1-dev.eda504c → 0.0.1-dev.edf7fad

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 (104) hide show
  1. package/core/types/frame.lua +47 -1
  2. package/core/types/player.d.ts +16 -0
  3. package/core/types/player.lua +57 -14
  4. package/core/types/sound.lua +1 -1
  5. package/core/types/tileCell.d.ts +2 -1
  6. package/core/types/tileCell.lua +5 -0
  7. package/destroyable.d.ts +1 -0
  8. package/destroyable.lua +9 -0
  9. package/engine/behavior.d.ts +10 -2
  10. package/engine/behavior.lua +157 -76
  11. package/engine/behaviour/ability/apply-buff.lua +4 -4
  12. package/engine/behaviour/ability/damage.d.ts +3 -0
  13. package/engine/behaviour/ability/damage.lua +8 -2
  14. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  15. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  16. package/engine/behaviour/ability.d.ts +11 -6
  17. package/engine/behaviour/ability.lua +31 -1
  18. package/engine/behaviour/unit/stun-immunity.d.ts +7 -5
  19. package/engine/behaviour/unit/stun-immunity.lua +6 -5
  20. package/engine/behaviour/unit.d.ts +7 -3
  21. package/engine/behaviour/unit.lua +101 -24
  22. package/engine/buff.d.ts +65 -18
  23. package/engine/buff.lua +356 -152
  24. package/engine/internal/mechanics/cast-ability.lua +6 -3
  25. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  26. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  27. package/engine/internal/object-data/health-bonus.lua +16 -0
  28. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  29. package/engine/internal/object-data/mana-bonus.lua +16 -0
  30. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  31. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  32. package/engine/internal/unit/attributes.d.ts +17 -0
  33. package/engine/internal/unit/attributes.lua +46 -0
  34. package/engine/internal/unit/bonus.d.ts +6 -0
  35. package/engine/internal/unit/bonus.lua +33 -3
  36. package/engine/internal/unit/fly-height.d.ts +7 -0
  37. package/engine/internal/unit/fly-height.lua +20 -0
  38. package/engine/internal/unit/interrupts.d.ts +12 -0
  39. package/engine/internal/unit/interrupts.lua +28 -0
  40. package/engine/internal/unit/main-selected.lua +12 -27
  41. package/engine/internal/unit/range-event.d.ts +12 -0
  42. package/engine/internal/unit/range-event.lua +90 -0
  43. package/engine/internal/unit/scale.d.ts +7 -0
  44. package/engine/internal/unit/scale.lua +20 -0
  45. package/engine/internal/unit+bonus.lua +3 -3
  46. package/engine/internal/unit-missile-launch.lua +16 -6
  47. package/engine/internal/unit.d.ts +13 -19
  48. package/engine/internal/unit.lua +140 -173
  49. package/engine/local-client.d.ts +7 -0
  50. package/engine/local-client.lua +79 -1
  51. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  52. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  53. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  54. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
  55. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  56. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  57. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  58. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  59. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  60. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  61. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  62. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  63. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  64. package/engine/object-data/entry/ability-type.d.ts +2 -0
  65. package/engine/object-data/entry/ability-type.lua +84 -4
  66. package/engine/object-data/entry/buff-type/applicable.lua +113 -109
  67. package/engine/object-data/entry/destructible-type.d.ts +27 -1
  68. package/engine/object-data/entry/destructible-type.lua +155 -0
  69. package/engine/object-data/entry/unit-type.d.ts +4 -0
  70. package/engine/object-data/entry/unit-type.lua +76 -32
  71. package/engine/object-field/ability.lua +2 -2
  72. package/engine/object-field/unit.d.ts +20 -5
  73. package/engine/object-field/unit.lua +61 -0
  74. package/engine/object-field.d.ts +10 -2
  75. package/engine/object-field.lua +268 -123
  76. package/engine/random.d.ts +1 -0
  77. package/engine/random.lua +8 -0
  78. package/engine/standard/fields/ability.d.ts +2 -2
  79. package/engine/standard/fields/ability.lua +2 -2
  80. package/engine/standard/fields/unit.d.ts +11 -3
  81. package/engine/standard/fields/unit.lua +15 -2
  82. package/engine/synchronization.d.ts +11 -0
  83. package/engine/synchronization.lua +77 -0
  84. package/engine/text-tag.lua +2 -1
  85. package/engine/unit.d.ts +5 -0
  86. package/engine/unit.lua +5 -0
  87. package/lualib_bundle.lua +1 -1
  88. package/math.d.ts +2 -0
  89. package/math.lua +14 -0
  90. package/net/socket.lua +1 -1
  91. package/objutil/buff.lua +9 -7
  92. package/objutil/object.lua +1 -1
  93. package/operation.lua +1 -4
  94. package/package.json +5 -5
  95. package/patch-lua.lua +15 -0
  96. package/utility/linked-map.d.ts +34 -0
  97. package/utility/linked-map.lua +101 -0
  98. package/utility/linked-set.d.ts +3 -1
  99. package/utility/linked-set.lua +38 -0
  100. package/utility/records.lua +20 -1
  101. /package/engine/internal/object-data/{armor-increase.d.ts → armor-bonus.d.ts} +0 -0
  102. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  103. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  104. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -1,8 +1,9 @@
1
1
  local ____lualib = require("lualib_bundle")
2
2
  local __TS__ArrayMap = ____lualib.__TS__ArrayMap
3
+ local __TS__New = ____lualib.__TS__New
3
4
  local __TS__Class = ____lualib.__TS__Class
5
+ local __TS__InstanceOf = ____lualib.__TS__InstanceOf
4
6
  local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
5
- local __TS__New = ____lualib.__TS__New
6
7
  local ____exports = {}
7
8
  local ____unit = require("core.types.unit")
8
9
  local Unit = ____unit.Unit
@@ -15,6 +16,10 @@ local ____player = require("core.types.player")
15
16
  local Player = ____player.Player
16
17
  local ____timer = require("core.types.timer")
17
18
  local Timer = ____timer.Timer
19
+ local ____color = require("core.types.color")
20
+ local Color = ____color.Color
21
+ local ____arrays = require("utility.arrays")
22
+ local array = ____arrays.array
18
23
  local loadTOCFile = BlzLoadTOCFile
19
24
  local getLocalClientWidth = BlzGetLocalClientWidth
20
25
  local getLocalClientHeight = BlzGetLocalClientHeight
@@ -25,6 +30,8 @@ local getMouseFocusUnit = BlzGetMouseFocusUnit
25
30
  local getUnitRealField = BlzGetUnitRealField
26
31
  local getUnitTypeId = GetUnitTypeId
27
32
  local getLocale = BlzGetLocale
33
+ local pingMinimap = PingMinimap
34
+ local pingMinimapEx = PingMinimapEx
28
35
  local tableSort = table.sort
29
36
  local tocPath = "_warscript\\IsHD.toc"
30
37
  compiletime(function()
@@ -57,11 +64,40 @@ local function compareUnitsSelectionPriority(a, b)
57
64
  end
58
65
  local mainSelectedUnitChangeEvent
59
66
  local previousMainSelectedUnit
67
+ local isInTargetingMode = false
68
+ local targetingModeEnterEvent = __TS__New(Event)
69
+ local targetingModeLeaveEvent = __TS__New(Event)
70
+ local targetingModeStateChangeEvent = __TS__New(Event)
60
71
  ____exports.LocalClient = __TS__Class()
61
72
  local LocalClient = ____exports.LocalClient
62
73
  LocalClient.name = "LocalClient"
63
74
  function LocalClient.prototype.____constructor(self)
64
75
  end
76
+ function LocalClient.pingMinimap(self, x, y, duration, redOrColor, greenOrFlashy, blue, flashy)
77
+ if redOrColor == nil then
78
+ pingMinimap(x, y, duration)
79
+ elseif __TS__InstanceOf(redOrColor, Color) then
80
+ pingMinimapEx(
81
+ x,
82
+ y,
83
+ duration,
84
+ redOrColor.r,
85
+ redOrColor.g,
86
+ redOrColor.b,
87
+ greenOrFlashy or false
88
+ )
89
+ else
90
+ pingMinimapEx(
91
+ x,
92
+ y,
93
+ duration,
94
+ redOrColor,
95
+ greenOrFlashy,
96
+ blue,
97
+ flashy or false
98
+ )
99
+ end
100
+ end
65
101
  LocalClient.locale = getLocale()
66
102
  __TS__ObjectDefineProperty(
67
103
  LocalClient,
@@ -98,6 +134,13 @@ __TS__ObjectDefineProperty(
98
134
  return isLocalClientActive()
99
135
  end}
100
136
  )
137
+ __TS__ObjectDefineProperty(
138
+ LocalClient,
139
+ "isMinimized",
140
+ {get = function(self)
141
+ return getLocalClientHeight() == 0
142
+ end}
143
+ )
101
144
  __TS__ObjectDefineProperty(
102
145
  LocalClient,
103
146
  "mouseFocusUnit",
@@ -151,6 +194,16 @@ __TS__ObjectDefineProperty(
151
194
  return mainSelectedUnitChangeEvent
152
195
  end}
153
196
  )
197
+ __TS__ObjectDefineProperty(
198
+ LocalClient,
199
+ "isInTargetingMode",
200
+ {get = function(self)
201
+ return isInTargetingMode
202
+ end}
203
+ )
204
+ LocalClient.targetingModeEnterEvent = targetingModeEnterEvent
205
+ LocalClient.targetingModeLeaveEvent = targetingModeLeaveEvent
206
+ LocalClient.targetingModeStateChangeEvent = targetingModeStateChangeEvent
154
207
  LocalClient.onDisconnect = __TS__New(
155
208
  TriggerEvent,
156
209
  function(trigger)
@@ -158,6 +211,31 @@ LocalClient.onDisconnect = __TS__New(
158
211
  end,
159
212
  function() return end
160
213
  )
214
+ local commandButtons = array(
215
+ 12,
216
+ function(i) return Frame:byOrigin(ORIGIN_FRAME_COMMAND_BUTTON, i) end
217
+ )
218
+ local function isTargetingModeActive()
219
+ for i = 0, 10 do
220
+ if commandButtons[i + 1].visible then
221
+ return false
222
+ end
223
+ end
224
+ return commandButtons[12].visible
225
+ end
226
+ Timer.onPeriod[1 / 64]:addListener(function()
227
+ if isTargetingModeActive() then
228
+ if not isInTargetingMode then
229
+ isInTargetingMode = true
230
+ Event.invoke(targetingModeEnterEvent)
231
+ Event.invoke(targetingModeStateChangeEvent)
232
+ end
233
+ elseif isInTargetingMode then
234
+ isInTargetingMode = false
235
+ Event.invoke(targetingModeLeaveEvent)
236
+ Event.invoke(targetingModeStateChangeEvent)
237
+ end
238
+ end)
161
239
  warpack.afterMapInit(function()
162
240
  rawset(
163
241
  ____exports.LocalClient,
@@ -0,0 +1,8 @@
1
+ /** @noSelfInFile */
2
+ export declare const enum HealthRegenerationType {
3
+ NONE = 0,
4
+ ALWAYS = 1,
5
+ BLIGHT = 2,
6
+ DAY = 3,
7
+ NIGHT = 4
8
+ }
@@ -0,0 +1,2 @@
1
+ local ____exports = {}
2
+ return ____exports
@@ -1,5 +1,5 @@
1
1
  local ____exports = {}
2
- ____exports.UnitAttribute = UnitAttribute or ({})
2
+ ____exports.UnitAttribute = ____exports.UnitAttribute or ({})
3
3
  ____exports.UnitAttribute.STRENGTH = 1
4
4
  ____exports.UnitAttribute[____exports.UnitAttribute.STRENGTH] = "STRENGTH"
5
5
  ____exports.UnitAttribute.INTELLIGENCE = 2
@@ -1,8 +1,8 @@
1
1
  /** @noSelfInFile */
2
2
  import { AbilityType, AbilityTypeId } from "../ability-type";
3
3
  import { ObjectDataEntryLevelFieldValueSupplier } from "../../entry";
4
- export declare class ArmorIncreaseAbilityType extends AbilityType {
4
+ export declare class ArmorBonusAbilityType extends AbilityType {
5
5
  static readonly BASE_ID: AbilityTypeId;
6
- get armorIncrease(): number[];
7
- set armorIncrease(armorIncrease: ObjectDataEntryLevelFieldValueSupplier<number>);
6
+ get armorBonus(): number[];
7
+ set armorBonus(armorBonus: ObjectDataEntryLevelFieldValueSupplier<number>);
8
8
  }
@@ -5,20 +5,20 @@ local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
5
5
  local ____exports = {}
6
6
  local ____ability_2Dtype = require("engine.object-data.entry.ability-type")
7
7
  local AbilityType = ____ability_2Dtype.AbilityType
8
- ____exports.ArmorIncreaseAbilityType = __TS__Class()
9
- local ArmorIncreaseAbilityType = ____exports.ArmorIncreaseAbilityType
10
- ArmorIncreaseAbilityType.name = "ArmorIncreaseAbilityType"
11
- __TS__ClassExtends(ArmorIncreaseAbilityType, AbilityType)
12
- ArmorIncreaseAbilityType.BASE_ID = fourCC("AId1")
8
+ ____exports.ArmorBonusAbilityType = __TS__Class()
9
+ local ArmorBonusAbilityType = ____exports.ArmorBonusAbilityType
10
+ ArmorBonusAbilityType.name = "ArmorBonusAbilityType"
11
+ __TS__ClassExtends(ArmorBonusAbilityType, AbilityType)
12
+ ArmorBonusAbilityType.BASE_ID = fourCC("AId1")
13
13
  __TS__SetDescriptor(
14
- ArmorIncreaseAbilityType.prototype,
15
- "armorIncrease",
14
+ ArmorBonusAbilityType.prototype,
15
+ "armorBonus",
16
16
  {
17
17
  get = function(self)
18
18
  return self:getNumberLevelField("Idef")
19
19
  end,
20
- set = function(self, armorIncrease)
21
- self:setNumberLevelField("Idef", armorIncrease)
20
+ set = function(self, armorBonus)
21
+ self:setNumberLevelField("Idef", armorBonus)
22
22
  end
23
23
  },
24
24
  true
@@ -0,0 +1,8 @@
1
+ /** @noSelfInFile */
2
+ import { AbilityType, AbilityTypeId } from "../ability-type";
3
+ import { ObjectDataEntryLevelFieldValueSupplier } from "../../entry";
4
+ export declare class HealthBonusAbilityType extends AbilityType {
5
+ static readonly BASE_ID: AbilityTypeId;
6
+ get healthBonus(): number[];
7
+ set healthBonus(healthBonus: ObjectDataEntryLevelFieldValueSupplier<number>);
8
+ }
@@ -0,0 +1,26 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__Class = ____lualib.__TS__Class
3
+ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
+ local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
5
+ local ____exports = {}
6
+ local ____ability_2Dtype = require("engine.object-data.entry.ability-type")
7
+ local AbilityType = ____ability_2Dtype.AbilityType
8
+ ____exports.HealthBonusAbilityType = __TS__Class()
9
+ local HealthBonusAbilityType = ____exports.HealthBonusAbilityType
10
+ HealthBonusAbilityType.name = "HealthBonusAbilityType"
11
+ __TS__ClassExtends(HealthBonusAbilityType, AbilityType)
12
+ HealthBonusAbilityType.BASE_ID = fourCC("AIlf")
13
+ __TS__SetDescriptor(
14
+ HealthBonusAbilityType.prototype,
15
+ "healthBonus",
16
+ {
17
+ get = function(self)
18
+ return self:getNumberLevelField("Ilif")
19
+ end,
20
+ set = function(self, healthBonus)
21
+ self:setNumberLevelField("Ilif", healthBonus)
22
+ end
23
+ },
24
+ true
25
+ )
26
+ return ____exports
@@ -0,0 +1,8 @@
1
+ /** @noSelfInFile */
2
+ import { AbilityType, AbilityTypeId } from "../ability-type";
3
+ import { ObjectDataEntryLevelFieldValueSupplier } from "../../entry";
4
+ export declare class ManaBonusAbilityType extends AbilityType {
5
+ static readonly BASE_ID: AbilityTypeId;
6
+ get manaBonus(): number[];
7
+ set manaBonus(manaBonus: ObjectDataEntryLevelFieldValueSupplier<number>);
8
+ }
@@ -0,0 +1,26 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__Class = ____lualib.__TS__Class
3
+ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
+ local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
5
+ local ____exports = {}
6
+ local ____ability_2Dtype = require("engine.object-data.entry.ability-type")
7
+ local AbilityType = ____ability_2Dtype.AbilityType
8
+ ____exports.ManaBonusAbilityType = __TS__Class()
9
+ local ManaBonusAbilityType = ____exports.ManaBonusAbilityType
10
+ ManaBonusAbilityType.name = "ManaBonusAbilityType"
11
+ __TS__ClassExtends(ManaBonusAbilityType, AbilityType)
12
+ ManaBonusAbilityType.BASE_ID = fourCC("AImb")
13
+ __TS__SetDescriptor(
14
+ ManaBonusAbilityType.prototype,
15
+ "manaBonus",
16
+ {
17
+ get = function(self)
18
+ return self:getNumberLevelField("Iman")
19
+ end,
20
+ set = function(self, manaBonus)
21
+ self:setNumberLevelField("Iman", manaBonus)
22
+ end
23
+ },
24
+ true
25
+ )
26
+ return ____exports
@@ -0,0 +1,8 @@
1
+ /** @noSelfInFile */
2
+ import { AbilityType, AbilityTypeId } from "../ability-type";
3
+ import { ObjectDataEntryLevelFieldValueSupplier } from "../../entry";
4
+ export declare class ManaRegenerationAbilityType extends AbilityType {
5
+ static readonly BASE_ID: AbilityTypeId;
6
+ get manaRegenerationRateIncreaseFactor(): number[];
7
+ set manaRegenerationRateIncreaseFactor(manaRegenerationRateIncreaseFactor: ObjectDataEntryLevelFieldValueSupplier<number>);
8
+ }
@@ -0,0 +1,26 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__Class = ____lualib.__TS__Class
3
+ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
+ local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
5
+ local ____exports = {}
6
+ local ____ability_2Dtype = require("engine.object-data.entry.ability-type")
7
+ local AbilityType = ____ability_2Dtype.AbilityType
8
+ ____exports.ManaRegenerationAbilityType = __TS__Class()
9
+ local ManaRegenerationAbilityType = ____exports.ManaRegenerationAbilityType
10
+ ManaRegenerationAbilityType.name = "ManaRegenerationAbilityType"
11
+ __TS__ClassExtends(ManaRegenerationAbilityType, AbilityType)
12
+ ManaRegenerationAbilityType.BASE_ID = fourCC("AIrn")
13
+ __TS__SetDescriptor(
14
+ ManaRegenerationAbilityType.prototype,
15
+ "manaRegenerationRateIncreaseFactor",
16
+ {
17
+ get = function(self)
18
+ return self:getNumberLevelField("Imrp")
19
+ end,
20
+ set = function(self, manaRegenerationRateIncreaseFactor)
21
+ self:setNumberLevelField("Imrp", manaRegenerationRateIncreaseFactor)
22
+ end
23
+ },
24
+ true
25
+ )
26
+ return ____exports
@@ -0,0 +1,8 @@
1
+ /** @noSelfInFile */
2
+ import { AbilityType, AbilityTypeId } from "../ability-type";
3
+ import { ObjectDataEntryLevelFieldValueSupplier } from "../../entry";
4
+ export declare class ReincarnationAbilityType extends AbilityType {
5
+ static readonly BASE_ID: AbilityTypeId;
6
+ get reincarnationDelay(): number[];
7
+ set reincarnationDelay(reincarnationDelay: ObjectDataEntryLevelFieldValueSupplier<number>);
8
+ }
@@ -0,0 +1,26 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__Class = ____lualib.__TS__Class
3
+ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
+ local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
5
+ local ____exports = {}
6
+ local ____ability_2Dtype = require("engine.object-data.entry.ability-type")
7
+ local AbilityType = ____ability_2Dtype.AbilityType
8
+ ____exports.ReincarnationAbilityType = __TS__Class()
9
+ local ReincarnationAbilityType = ____exports.ReincarnationAbilityType
10
+ ReincarnationAbilityType.name = "ReincarnationAbilityType"
11
+ __TS__ClassExtends(ReincarnationAbilityType, AbilityType)
12
+ ReincarnationAbilityType.BASE_ID = fourCC("AOre")
13
+ __TS__SetDescriptor(
14
+ ReincarnationAbilityType.prototype,
15
+ "reincarnationDelay",
16
+ {
17
+ get = function(self)
18
+ return self:getNumberLevelField("Ore1")
19
+ end,
20
+ set = function(self, reincarnationDelay)
21
+ self:setNumberLevelField("Ore1", reincarnationDelay)
22
+ end
23
+ },
24
+ true
25
+ )
26
+ return ____exports
@@ -67,6 +67,8 @@ export declare abstract class AbilityType extends ObjectDataEntry<AbilityTypeId>
67
67
  set specialAttachmentPreset(specialAttachmentPreset: AttachmentPresetInput | undefined);
68
68
  get targetCastingEffectPresets(): EffectPresetWithParameters[];
69
69
  set targetCastingEffectPresets(targetCastingEffectPresets: AttachmentPresetInput[]);
70
+ get targetChannelingEffectPresets(): EffectPresetWithParameters[];
71
+ set targetChannelingEffectPresets(targetChannelingEffectPresets: EffectPresetWithParametersInput[]);
70
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
74
  get targetEffectPresetsSD(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
@@ -45,6 +45,7 @@ local isButtonVisibleFalseAbilityTypes = {}
45
45
  local casterCastingEffectPresetsByAbilityTypeId = {}
46
46
  local casterChannelingEffectPresetsByAbilityTypeId = {}
47
47
  local targetCastingEffectPresetsByAbilityTypeId = {}
48
+ local targetChannelingEffectPresetsByAbilityTypeId = {}
48
49
  local targetEffectSoundPresetByAbilityTypeId = {}
49
50
  ____exports.AbilityType = __TS__Class()
50
51
  local AbilityType = ____exports.AbilityType
@@ -378,6 +379,19 @@ __TS__SetDescriptor(
378
379
  },
379
380
  true
380
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)
391
+ end
392
+ },
393
+ true
394
+ )
381
395
  __TS__SetDescriptor(
382
396
  AbilityType.prototype,
383
397
  "targetEffectPresets",
@@ -1099,18 +1113,84 @@ local function handleAbilityChannelingStartEvent(caster, ability)
1099
1113
  end
1100
1114
  casterChannelingEffectsByCaster[caster] = effects
1101
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
1102
1169
  local function handleAbilityStopChannelingEvent(caster)
1103
- local effects = casterChannelingEffectsByCaster[caster]
1104
- if effects ~= nil then
1105
- for i = 1, #effects do
1106
- effects[i]:destroy()
1170
+ local casterEffects = casterChannelingEffectsByCaster[caster]
1171
+ if casterEffects ~= nil then
1172
+ for i = 1, #casterEffects do
1173
+ casterEffects[i]:destroy()
1107
1174
  end
1108
1175
  casterChannelingEffectsByCaster[caster] = nil
1109
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
1110
1184
  end
1111
1185
  for abilityTypeId in pairs(casterChannelingEffectModelPathsByAbilityTypeId) do
1112
1186
  Unit.abilityChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityChannelingStartEvent)
1113
1187
  Unit.abilityChannelingFinishEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1114
1188
  Unit.abilityStopEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1115
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
1116
1196
  return ____exports