warscript 0.0.1-dev.724bf08 → 0.0.1-dev.72f8823

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 (196) hide show
  1. package/attributes.d.ts +6 -0
  2. package/attributes.lua +17 -1
  3. package/config.d.ts +5 -0
  4. package/config.lua +10 -0
  5. package/core/types/effect.d.ts +2 -3
  6. package/core/types/effect.lua +95 -48
  7. package/core/types/frame.lua +24 -21
  8. package/core/types/player.d.ts +15 -0
  9. package/core/types/player.lua +56 -14
  10. package/core/types/playerCamera.d.ts +2 -0
  11. package/core/types/playerCamera.lua +123 -5
  12. package/core/types/sound.d.ts +17 -24
  13. package/core/types/sound.lua +99 -24
  14. package/core/types/tileCell.d.ts +11 -1
  15. package/core/types/tileCell.lua +97 -0
  16. package/core/types/timer.d.ts +9 -8
  17. package/core/types/timer.lua +45 -23
  18. package/core/util.d.ts +1 -1
  19. package/core/util.lua +12 -1
  20. package/decl/native.d.ts +846 -790
  21. package/engine/behavior.d.ts +12 -1
  22. package/engine/behavior.lua +172 -70
  23. package/engine/behaviour/ability/always-enabled.d.ts +7 -0
  24. package/engine/behaviour/ability/always-enabled.lua +31 -0
  25. package/engine/behaviour/ability/apply-buff.d.ts +5 -0
  26. package/engine/behaviour/ability/apply-buff.lua +32 -0
  27. package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
  28. package/engine/behaviour/ability/damage.d.ts +9 -3
  29. package/engine/behaviour/ability/damage.lua +26 -38
  30. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  31. package/engine/behaviour/ability/emulate-impact.lua +22 -9
  32. package/engine/behaviour/ability/on-command-impact.lua +7 -0
  33. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  34. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  35. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  36. package/engine/behaviour/ability/restore-mana.lua +6 -6
  37. package/engine/behaviour/ability.d.ts +13 -3
  38. package/engine/behaviour/ability.lua +78 -24
  39. package/engine/behaviour/unit/stun-immunity.d.ts +11 -5
  40. package/engine/behaviour/unit/stun-immunity.lua +53 -28
  41. package/engine/behaviour/unit.d.ts +38 -2
  42. package/engine/behaviour/unit.lua +216 -6
  43. package/engine/buff.d.ts +66 -44
  44. package/engine/buff.lua +330 -225
  45. package/engine/internal/ability.d.ts +18 -2
  46. package/engine/internal/ability.lua +116 -11
  47. package/engine/internal/item/ability.lua +162 -4
  48. package/engine/internal/item+owner.lua +12 -6
  49. package/engine/internal/item.d.ts +20 -19
  50. package/engine/internal/item.lua +191 -74
  51. package/engine/internal/mechanics/ability-duration.lua +1 -1
  52. package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
  53. package/engine/internal/misc/ability-disable-counter.lua +13 -0
  54. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  55. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  56. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  57. package/engine/internal/misc/frame-coordinates.lua +21 -0
  58. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  59. package/engine/internal/misc/get-terrain-z.lua +11 -0
  60. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  61. package/engine/internal/misc/player-local-handle.lua +5 -0
  62. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  63. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  64. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  65. package/engine/internal/object-data/evasion-probability.lua +16 -0
  66. package/engine/internal/unit/ability.d.ts +35 -0
  67. package/engine/internal/unit/ability.lua +98 -9
  68. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  69. package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
  70. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  71. package/engine/internal/unit/add-item-to-slot.lua +52 -0
  72. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  73. package/engine/internal/unit/allowed-targets.lua +9 -1
  74. package/engine/internal/unit/bonus.d.ts +2 -0
  75. package/engine/internal/unit/bonus.lua +17 -0
  76. package/engine/internal/unit/fly-height.d.ts +7 -0
  77. package/engine/internal/unit/fly-height.lua +20 -0
  78. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  79. package/engine/internal/unit/ignore-events-items.lua +5 -0
  80. package/engine/internal/unit/item.lua +6 -12
  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/scale.d.ts +7 -0
  85. package/engine/internal/unit/scale.lua +20 -0
  86. package/engine/internal/unit+ability.lua +10 -1
  87. package/engine/internal/unit+damage.d.ts +2 -11
  88. package/engine/internal/unit+damage.lua +10 -14
  89. package/engine/internal/unit+spellSteal.lua +1 -2
  90. package/engine/internal/unit-missile-launch.lua +45 -14
  91. package/engine/internal/unit.d.ts +45 -18
  92. package/engine/internal/unit.lua +391 -175
  93. package/engine/internal/utility.lua +12 -0
  94. package/engine/lightning.d.ts +12 -5
  95. package/engine/lightning.lua +48 -14
  96. package/engine/local-client.d.ts +2 -0
  97. package/engine/local-client.lua +30 -0
  98. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  99. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  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/movement-type.d.ts +7 -7
  107. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  108. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  109. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  110. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  111. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  112. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  113. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  114. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  115. package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
  116. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  117. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  118. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  119. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  120. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  121. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  122. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  123. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  124. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  125. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  126. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  127. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  128. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  129. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  130. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  131. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  132. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  133. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  134. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  135. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  136. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  137. package/engine/object-data/entry/ability-type/web.lua +52 -0
  138. package/engine/object-data/entry/ability-type.d.ts +19 -17
  139. package/engine/object-data/entry/ability-type.lua +93 -36
  140. package/engine/object-data/entry/buff-type/applicable.lua +18 -37
  141. package/engine/object-data/entry/buff-type.d.ts +6 -12
  142. package/engine/object-data/entry/buff-type.lua +13 -29
  143. package/engine/object-data/entry/destructible-type.d.ts +1 -1
  144. package/engine/object-data/entry/item-type.d.ts +3 -1
  145. package/engine/object-data/entry/item-type.lua +15 -2
  146. package/engine/object-data/entry/lightning-type.d.ts +1 -1
  147. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  148. package/engine/object-data/entry/sound-preset.lua +140 -0
  149. package/engine/object-data/entry/unit-type.d.ts +21 -5
  150. package/engine/object-data/entry/unit-type.lua +214 -93
  151. package/engine/object-data/entry/upgrade.d.ts +1 -1
  152. package/engine/object-data/entry/upgrade.lua +4 -4
  153. package/engine/object-data/entry.d.ts +16 -14
  154. package/engine/object-data/entry.lua +60 -32
  155. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  156. package/engine/object-field/ability.d.ts +8 -5
  157. package/engine/object-field/ability.lua +8 -4
  158. package/engine/object-field/unit.d.ts +69 -3
  159. package/engine/object-field/unit.lua +264 -7
  160. package/engine/object-field.d.ts +23 -6
  161. package/engine/object-field.lua +311 -124
  162. package/engine/random.d.ts +9 -0
  163. package/engine/random.lua +13 -0
  164. package/engine/standard/entries/buff-type.d.ts +3 -0
  165. package/engine/standard/entries/buff-type.lua +3 -0
  166. package/engine/standard/entries/sound-preset.d.ts +10 -0
  167. package/engine/standard/entries/sound-preset.lua +10 -0
  168. package/engine/standard/fields/unit.d.ts +6 -0
  169. package/engine/standard/fields/unit.lua +11 -0
  170. package/engine/synchronization.d.ts +11 -0
  171. package/engine/synchronization.lua +77 -0
  172. package/engine/text-tag.d.ts +36 -2
  173. package/engine/text-tag.lua +250 -10
  174. package/engine/unit.d.ts +4 -0
  175. package/engine/unit.lua +4 -0
  176. package/net/socket.lua +1 -1
  177. package/objutil/buff.lua +2 -3
  178. package/objutil/unit.lua +8 -0
  179. package/package.json +2 -2
  180. package/patch-lualib.lua +1 -1
  181. package/utility/arrays.d.ts +2 -0
  182. package/utility/arrays.lua +11 -0
  183. package/utility/callback-array.d.ts +17 -0
  184. package/utility/callback-array.lua +61 -0
  185. package/utility/functions.d.ts +8 -0
  186. package/utility/functions.lua +13 -0
  187. package/utility/linked-set.d.ts +2 -0
  188. package/utility/linked-set.lua +22 -1
  189. package/utility/lua-maps.d.ts +15 -2
  190. package/utility/lua-maps.lua +53 -2
  191. package/utility/lua-sets.d.ts +2 -0
  192. package/utility/lua-sets.lua +7 -0
  193. package/utility/reflection.lua +11 -7
  194. package/utility/types.d.ts +3 -0
  195. package/core/types/order.d.ts +0 -25
  196. package/core/types/order.lua +0 -55
@@ -1,6 +1,7 @@
1
1
  local ____lualib = require("lualib_bundle")
2
2
  local __TS__Class = ____lualib.__TS__Class
3
3
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
+ local __TS__New = ____lualib.__TS__New
4
5
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
5
6
  local ____exports = {}
6
7
  local ____behavior = require("engine.behavior")
@@ -9,17 +10,110 @@ local ____unit = require("engine.internal.unit")
9
10
  local Unit = ____unit.Unit
10
11
  require("engine.internal.unit+ability")
11
12
  require("engine.internal.unit-missile-launch")
13
+ local ____linked_2Dset = require("utility.linked-set")
14
+ local LinkedSet = ____linked_2Dset.LinkedSet
15
+ local ____lua_2Dmaps = require("utility.lua-maps")
16
+ local getOrPut = ____lua_2Dmaps.getOrPut
17
+ local mutableLuaMap = ____lua_2Dmaps.mutableLuaMap
18
+ local ____lua_2Dsets = require("utility.lua-sets")
19
+ local mutableLuaSet = ____lua_2Dsets.mutableLuaSet
20
+ local ____bonus = require("engine.internal.unit.bonus")
21
+ local addOrUpdateOrRemoveUnitBonus = ____bonus.addOrUpdateOrRemoveUnitBonus
22
+ local getUnitBonus = ____bonus.getUnitBonus
23
+ local removeUnitBonus = ____bonus.removeUnitBonus
24
+ local safeCall = warpack.safeCall
25
+ local createBehaviorFunctionsByUnitTypeId = {}
26
+ local behaviorsByEvent = {}
27
+ local rangeByBehaviorByEvent = {}
28
+ local listenerByBehaviorByEvent = {}
29
+ local eventsByBehavior = {}
12
30
  ____exports.UnitBehavior = __TS__Class()
13
31
  local UnitBehavior = ____exports.UnitBehavior
14
32
  UnitBehavior.name = "UnitBehavior"
15
33
  __TS__ClassExtends(UnitBehavior, Behavior)
16
- function UnitBehavior.prototype.____constructor(self, unit)
17
- Behavior.prototype.____constructor(self, unit)
34
+ function UnitBehavior.prototype.____constructor(self, unit, priority)
35
+ Behavior.prototype.____constructor(self, unit, priority)
36
+ end
37
+ function UnitBehavior.prototype.onDestroy(self)
38
+ local events = eventsByBehavior[self]
39
+ if events ~= nil then
40
+ for event in pairs(events) do
41
+ local ____opt_0 = behaviorsByEvent[event]
42
+ if ____opt_0 ~= nil then
43
+ ____opt_0:remove(self)
44
+ end
45
+ local ____opt_2 = rangeByBehaviorByEvent[event]
46
+ if ____opt_2 ~= nil then
47
+ ____opt_2[self] = nil
48
+ end
49
+ local ____opt_4 = listenerByBehaviorByEvent[event]
50
+ if ____opt_4 ~= nil then
51
+ ____opt_4[self] = nil
52
+ end
53
+ end
54
+ eventsByBehavior[self] = nil
55
+ end
56
+ if self._bonusIdByBonusType ~= nil then
57
+ for bonusType, bonusId in pairs(self._bonusIdByBonusType) do
58
+ removeUnitBonus(self.object, bonusType, bonusId)
59
+ end
60
+ end
61
+ return Behavior.prototype.onDestroy(self)
62
+ end
63
+ function UnitBehavior.prototype.getUnitBonus(self, bonusType)
64
+ local ____opt_6 = self._bonusIdByBonusType
65
+ local bonusId = ____opt_6 and ____opt_6[bonusType]
66
+ return bonusId == nil and 0 or getUnitBonus(self.object, bonusType, bonusId)
67
+ end
68
+ function UnitBehavior.prototype.addOrUpdateOrRemoveUnitBonus(self, bonusType, value)
69
+ local bonusIdByBonusType = self._bonusIdByBonusType
70
+ if bonusIdByBonusType == nil then
71
+ bonusIdByBonusType = {}
72
+ self._bonusIdByBonusType = bonusIdByBonusType
73
+ end
74
+ bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self.object, bonusType, bonusIdByBonusType[bonusType], value)
75
+ end
76
+ function UnitBehavior.prototype.registerInRangeUnitEvent(self, event, extractUnit, range, listener)
77
+ local rangeByBehavior = getOrPut(rangeByBehaviorByEvent, event, mutableLuaMap)
78
+ rangeByBehavior[self] = range
79
+ local listenerByBehavior = getOrPut(listenerByBehaviorByEvent, event, mutableLuaMap)
80
+ listenerByBehavior[self] = listener
81
+ getOrPut(eventsByBehavior, self, mutableLuaSet)[event] = true
82
+ local behaviors = behaviorsByEvent[event]
83
+ if behaviors == nil then
84
+ event:addListener(function(...)
85
+ local behaviors = behaviorsByEvent[event]
86
+ if behaviors ~= nil then
87
+ local unit = extractUnit(...)
88
+ if unit ~= nil then
89
+ for behavior in pairs(behaviors) do
90
+ local range = rangeByBehavior[behavior]
91
+ if range ~= nil and unit:getCollisionDistanceTo(behavior.unit) <= range then
92
+ safeCall(behavior[listenerByBehavior[behavior]], behavior, ...)
93
+ end
94
+ end
95
+ end
96
+ end
97
+ end)
98
+ behaviors = __TS__New(LinkedSet)
99
+ behaviorsByEvent[event] = behaviors
100
+ end
101
+ behaviors:add(self)
102
+ end
103
+ function UnitBehavior.prototype.onImmediateOrder(self, orderId)
104
+ end
105
+ function UnitBehavior.prototype.onTargetOrder(self, orderId, target)
106
+ end
107
+ function UnitBehavior.prototype.onPointOrder(self, orderId, x, y)
18
108
  end
19
109
  function UnitBehavior.prototype.onAutoAttackStart(self, target)
20
110
  end
21
111
  function UnitBehavior.prototype.onAutoAttackFinish(self, target)
22
112
  end
113
+ function UnitBehavior.prototype.onTargetingAutoAttackStart(self, source)
114
+ end
115
+ function UnitBehavior.prototype.onTargetingAutoAttackFinish(self, source)
116
+ end
23
117
  function UnitBehavior.prototype.onDamageDealing(self, target, event)
24
118
  end
25
119
  function UnitBehavior.prototype.onDamageDealt(self, target, event)
@@ -32,6 +126,32 @@ function UnitBehavior.prototype.onAbilityGained(self, ability)
32
126
  end
33
127
  function UnitBehavior.prototype.onAbilityLost(self, ability)
34
128
  end
129
+ function UnitBehavior.prototype.onAbilityChannelingStart(self, ability)
130
+ end
131
+ function UnitBehavior.prototype.onAbilityImpact(self, ability)
132
+ end
133
+ function UnitBehavior.prototype.onAbilityWidgetTargetImpact(self, ability, target)
134
+ end
135
+ function UnitBehavior.prototype.onAbilityUnitTargetImpact(self, ability, target)
136
+ end
137
+ function UnitBehavior.prototype.onAbilityItemTargetImpact(self, ability, target)
138
+ end
139
+ function UnitBehavior.prototype.onAbilityDestructibleTargetImpact(self, ability, target)
140
+ end
141
+ function UnitBehavior.prototype.onAbilityPointTargetImpact(self, ability, x, y)
142
+ end
143
+ function UnitBehavior.prototype.onAbilityNoTargetImpact(self, ability)
144
+ end
145
+ function UnitBehavior.prototype.onAbilityChannelingFinish(self, ability)
146
+ end
147
+ function UnitBehavior.prototype.onAbilityStop(self, ability)
148
+ end
149
+ function UnitBehavior.prototype.onTargetingAbilityChannelingStart(self, ability, source)
150
+ end
151
+ function UnitBehavior.prototype.onTargetingAbilityImpact(self, ability, source)
152
+ end
153
+ function UnitBehavior.prototype.onBuffGained(self, buff)
154
+ end
35
155
  function UnitBehavior.prototype.onItemDropped(self, item)
36
156
  end
37
157
  function UnitBehavior.prototype.onItemPickedUp(self, item)
@@ -40,10 +160,29 @@ function UnitBehavior.prototype.onItemUsed(self, item)
40
160
  end
41
161
  function UnitBehavior.prototype.onItemStacked(self, item)
42
162
  end
163
+ function UnitBehavior.prototype.onItemChargesChanged(self, item)
164
+ end
43
165
  function UnitBehavior.prototype.onKill(self, target)
44
166
  end
45
167
  function UnitBehavior.prototype.onDeath(self, source)
46
168
  end
169
+ function UnitBehavior.prototype.onOwnerChange(self, previousOwner)
170
+ end
171
+ function UnitBehavior.bindUnitType(self, unitTypeId, ...)
172
+ local args = {...}
173
+ local createBehaviorFunctions = createBehaviorFunctionsByUnitTypeId[unitTypeId]
174
+ if createBehaviorFunctions == nil then
175
+ createBehaviorFunctions = {}
176
+ createBehaviorFunctionsByUnitTypeId[unitTypeId] = createBehaviorFunctions
177
+ end
178
+ createBehaviorFunctions[#createBehaviorFunctions + 1] = function(unit)
179
+ return __TS__New(
180
+ self,
181
+ unit,
182
+ table.unpack(args)
183
+ )
184
+ end
185
+ end
47
186
  __TS__SetDescriptor(
48
187
  UnitBehavior.prototype,
49
188
  "unit",
@@ -53,11 +192,28 @@ __TS__SetDescriptor(
53
192
  true
54
193
  );
55
194
  (function(self)
195
+ Unit.onImmediateOrder:addListener(function(source, orderId)
196
+ ____exports.UnitBehavior:forAll(source, "onImmediateOrder", orderId)
197
+ end)
198
+ Unit.onTargetOrder:addListener(function(source, orderId, target)
199
+ ____exports.UnitBehavior:forAll(source, "onTargetOrder", orderId, target)
200
+ end)
201
+ Unit.onPointOrder:addListener(function(source, orderId, x, y)
202
+ ____exports.UnitBehavior:forAll(
203
+ source,
204
+ "onPointOrder",
205
+ orderId,
206
+ x,
207
+ y
208
+ )
209
+ end)
56
210
  Unit.autoAttackStartEvent:addListener(function(source, target)
57
211
  ____exports.UnitBehavior:forAll(source, "onAutoAttackStart", target)
212
+ ____exports.UnitBehavior:forAll(target, "onTargetingAutoAttackStart", source)
58
213
  end)
59
214
  Unit.autoAttackFinishEvent:addListener(function(source, target)
60
215
  ____exports.UnitBehavior:forAll(source, "onAutoAttackFinish", target)
216
+ ____exports.UnitBehavior:forAll(target, "onTargetingAutoAttackFinish", source)
61
217
  end)
62
218
  Unit.onDamaging:addListener(function(source, target, event)
63
219
  if source ~= nil then
@@ -71,11 +227,51 @@ __TS__SetDescriptor(
71
227
  end
72
228
  ____exports.UnitBehavior:forAll(target, "onDamageReceived", source, event)
73
229
  end)
74
- Unit.abilityGainedEvent:addListener(function(source, target)
75
- ____exports.UnitBehavior:forAll(source, "onAbilityGained", target)
230
+ Unit.abilityGainedEvent:addListener(function(source, ability)
231
+ ____exports.UnitBehavior:forAll(source, "onAbilityGained", ability)
232
+ end)
233
+ Unit.abilityLostEvent:addListener(function(source, ability)
234
+ ____exports.UnitBehavior:forAll(source, "onAbilityLost", ability)
235
+ end)
236
+ Unit.abilityChannelingStartEvent:addListener(function(source, ability)
237
+ ____exports.UnitBehavior:forAll(source, "onAbilityChannelingStart", ability)
238
+ end)
239
+ Unit.abilityUnitTargetChannelingStartEvent:addListener(function(source, ability, target)
240
+ ____exports.UnitBehavior:forAll(target, "onTargetingAbilityChannelingStart", ability, source)
241
+ end)
242
+ Unit.abilityImpactEvent:addListener(function(source, ability)
243
+ ____exports.UnitBehavior:forAll(source, "onAbilityImpact", ability)
76
244
  end)
77
- Unit.abilityLostEvent:addListener(function(source, target)
78
- ____exports.UnitBehavior:forAll(source, "onAbilityLost", target)
245
+ Unit.abilityWidgetTargetImpactEvent:addListener(function(source, ability, target)
246
+ ____exports.UnitBehavior:forAll(source, "onAbilityWidgetTargetImpact", ability, target)
247
+ end)
248
+ Unit.abilityUnitTargetImpactEvent:addListener(function(source, ability, target)
249
+ ____exports.UnitBehavior:forAll(source, "onAbilityUnitTargetImpact", ability, target)
250
+ ____exports.UnitBehavior:forAll(target, "onTargetingAbilityImpact", ability, source)
251
+ end)
252
+ Unit.abilityItemTargetImpactEvent:addListener(function(source, ability, target)
253
+ ____exports.UnitBehavior:forAll(source, "onAbilityItemTargetImpact", ability, target)
254
+ end)
255
+ Unit.abilityDestructibleTargetImpactEvent:addListener(function(source, ability, target)
256
+ ____exports.UnitBehavior:forAll(source, "onAbilityDestructibleTargetImpact", ability, target)
257
+ end)
258
+ Unit.abilityPointTargetImpactEvent:addListener(function(source, ability, x, y)
259
+ ____exports.UnitBehavior:forAll(
260
+ source,
261
+ "onAbilityPointTargetImpact",
262
+ ability,
263
+ x,
264
+ y
265
+ )
266
+ end)
267
+ Unit.abilityNoTargetImpactEvent:addListener(function(source, ability)
268
+ ____exports.UnitBehavior:forAll(source, "onAbilityNoTargetImpact", ability)
269
+ end)
270
+ Unit.abilityChannelingFinishEvent:addListener(function(source, ability)
271
+ ____exports.UnitBehavior:forAll(source, "onAbilityChannelingFinish", ability)
272
+ end)
273
+ Unit.abilityStopEvent:addListener(function(source, ability)
274
+ ____exports.UnitBehavior:forAll(source, "onAbilityStop", ability)
79
275
  end)
80
276
  Unit.deathEvent:addListener(function(target, source)
81
277
  if source ~= nil then
@@ -95,7 +291,21 @@ __TS__SetDescriptor(
95
291
  Unit.itemStackedEvent:addListener(function(unit, item)
96
292
  ____exports.UnitBehavior:forAll(unit, "onItemStacked", item)
97
293
  end)
294
+ Unit.itemChargesChangedEvent:addListener(function(unit, item)
295
+ ____exports.UnitBehavior:forAll(unit, "onItemChargesChanged", item)
296
+ end)
297
+ Unit.onOwnerChange:addListener(function(unit, previousOwner)
298
+ ____exports.UnitBehavior:forAll(unit, "onOwnerChange", previousOwner)
299
+ end)
98
300
  end)(UnitBehavior)
301
+ Unit.onCreate:addListener(function(unit)
302
+ local createBehaviorFunctions = createBehaviorFunctionsByUnitTypeId[unit.typeId]
303
+ if createBehaviorFunctions ~= nil then
304
+ for ____, createBehavior in ipairs(createBehaviorFunctions) do
305
+ createBehavior(unit)
306
+ end
307
+ end
308
+ end)
99
309
  Unit.destroyEvent:addListener(function(unit)
100
310
  ____exports.UnitBehavior:forAll(unit, "destroy")
101
311
  end)
package/engine/buff.d.ts CHANGED
@@ -12,6 +12,7 @@ import { EffectParameters } from "../core/types/effect";
12
12
  import { UnitBehavior } from "./behaviour/unit";
13
13
  import type { Widget } from "../core/types/widget";
14
14
  import { Destructor } from "../destroyable";
15
+ import { Event } from "../event";
15
16
  export type BuffConstructor<T extends Buff<any> = Buff<any>, Args extends any[] = any> = OmitConstructor<typeof Buff<any>> & (new (...args: Args) => T);
16
17
  type EnumParameterValueType<T extends number> = T | AbilityEnumLevelField<T>;
17
18
  type NumberParameterValueType = number | AbilityNumberField | AbilityNumberLevelField;
@@ -55,12 +56,15 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
55
56
  armorIncreaseFactor?: NumberParameterValueType;
56
57
  attackSpeedIncreaseFactor?: NumberParameterValueType;
57
58
  movementSpeedIncreaseFactor?: NumberParameterValueType;
59
+ evasionProbability?: NumberParameterValueType;
60
+ missProbability?: NumberParameterValueType;
58
61
  damageFactor?: NumberParameterValueType;
59
62
  receivedDamageFactor?: NumberParameterValueType;
60
63
  receivedMagicDamageFactor?: NumberParameterValueType;
61
64
  durationIncreaseOnAutoAttack?: NumberParameterValueType;
62
65
  maximumRemainingDuration?: NumberParameterValueType;
63
66
  maximumDuration?: NumberParameterValueType;
67
+ turnsIntoGhost?: BooleanParameterValueType;
64
68
  stuns?: BooleanParameterValueType;
65
69
  ignoresStunImmunity?: BooleanParameterValueType;
66
70
  providesStunImmunity?: BooleanParameterValueType;
@@ -75,49 +79,55 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
75
79
  healingOnExpiration?: NumberParameterValueType;
76
80
  killsOnExpiration?: BooleanParameterValueType;
77
81
  explodesOnExpiration?: BooleanParameterValueType;
82
+ abilityCooldownFactor?: NumberParameterValueType;
78
83
  uniqueGroup?: BuffUniqueGroup;
79
84
  } : BuffParameters & (T extends Buff<infer AdditionalParameters> ? AdditionalParameters : object);
80
85
  declare const enum BuffPropertyKey {
81
- UNIT = 100,
82
- SOURCE = 101,
83
- DURATION = 102,
84
- UNIQUE_GROUP = 103,
85
- EFFECT_MODEL_PATH = 104,
86
- SPECIAL_EFFECT_MODEL_PATH = 105,
87
- DURATION_INCREASE_ON_AUTO_ATTACK = 106,
88
- MAXIMUM_DURATION = 107,
89
- MAXIMUM_REMAINING_DURATION = 108,
90
- DAMAGE_OVER_DURATION = 109,
91
- DAMAGE_PER_INTERVAL = 110,
92
- DAMAGE_INTERVAL = 111,
93
- REMAINING_DAMAGE_OVER_DURATION = 112,
94
- DAMAGE_INTERVAL_TIMER = 113,
95
- HEALING_OVER_DURATION = 114,
96
- HEALING_PER_INTERVAL = 115,
97
- HEALING_INTERVAL = 116,
98
- REMAINING_HEALING_OVER_DURATION = 117,
99
- HEALING_INTERVAL_TIMER = 118,
100
- DAMAGE_ON_EXPIRATION = 119,
101
- HEALING_ON_EXPIRATION = 120,
102
- DAMAGE_UPON_DEATH_ALLOWED_TARGET_CLASSIFICATIONS = 121,
103
- DAMAGE_UPON_DEATH = 122,
104
- DAMAGE_UPON_DEATH_RANGE = 123,
105
- MEDIUM_DAMAGE_UPON_DEATH = 124,
106
- MEDIUM_DAMAGE_UPON_DEATH_RANGE = 125,
107
- SMALL_DAMAGE_UPON_DEATH = 126,
108
- SMALL_DAMAGE_UPON_DEATH_RANGE = 127,
109
- AUTO_ATTACK_COUNT = 128,
110
- MAXIMUM_AUTO_ATTACK_COUNT = 129,
111
- DAMAGE_DEALT_EVENT_COUNT = 130,
112
- MAXIMUM_DAMAGE_DEALT_EVENT_COUNT = 131,
113
- DAMAGE_RECEIVED_EVENT_COUNT = 132,
114
- MAXIMUM_DAMAGE_RECEIVED_EVENT_COUNT = 133,
115
- STUNS = 134,
116
- IGNORES_STUN_IMMUNITY = 135,
117
- DISABLES_AUTO_ATTACK = 136,
118
- PROVIDES_INVULNERABILITY = 137,
119
- KILLS_ON_EXPIRATION = 138,
120
- EXPLODES_ON_EXPIRATION = 139
86
+ STATE = 100,
87
+ UNIT = 101,
88
+ SOURCE = 102,
89
+ DURATION = 103,
90
+ UNIQUE_GROUP = 104,
91
+ EFFECT_MODEL_PATH = 105,
92
+ SPECIAL_EFFECT_MODEL_PATH = 106,
93
+ DURATION_INCREASE_ON_AUTO_ATTACK = 107,
94
+ MAXIMUM_DURATION = 108,
95
+ MAXIMUM_REMAINING_DURATION = 109,
96
+ DAMAGE_OVER_DURATION = 110,
97
+ DAMAGE_PER_INTERVAL = 111,
98
+ DAMAGE_INTERVAL = 112,
99
+ REMAINING_DAMAGE_OVER_DURATION = 113,
100
+ DAMAGE_INTERVAL_TIMER = 114,
101
+ HEALING_OVER_DURATION = 115,
102
+ HEALING_PER_INTERVAL = 116,
103
+ HEALING_INTERVAL = 117,
104
+ REMAINING_HEALING_OVER_DURATION = 118,
105
+ HEALING_INTERVAL_TIMER = 119,
106
+ DAMAGE_ON_EXPIRATION = 120,
107
+ HEALING_ON_EXPIRATION = 121,
108
+ DAMAGE_UPON_DEATH_ALLOWED_TARGET_CLASSIFICATIONS = 122,
109
+ DAMAGE_UPON_DEATH = 123,
110
+ DAMAGE_UPON_DEATH_RANGE = 124,
111
+ MEDIUM_DAMAGE_UPON_DEATH = 125,
112
+ MEDIUM_DAMAGE_UPON_DEATH_RANGE = 126,
113
+ SMALL_DAMAGE_UPON_DEATH = 127,
114
+ SMALL_DAMAGE_UPON_DEATH_RANGE = 128,
115
+ AUTO_ATTACK_COUNT = 129,
116
+ MAXIMUM_AUTO_ATTACK_COUNT = 130,
117
+ DAMAGE_DEALT_EVENT_COUNT = 131,
118
+ MAXIMUM_DAMAGE_DEALT_EVENT_COUNT = 132,
119
+ DAMAGE_RECEIVED_EVENT_COUNT = 133,
120
+ MAXIMUM_DAMAGE_RECEIVED_EVENT_COUNT = 134,
121
+ TURNS_INTO_GHOST = 135,
122
+ STUNS = 136,
123
+ IGNORES_STUN_IMMUNITY = 137,
124
+ DISABLES_AUTO_ATTACK = 138,
125
+ PROVIDES_INVULNERABILITY = 139,
126
+ KILLS_ON_EXPIRATION = 140,
127
+ EXPLODES_ON_EXPIRATION = 141,
128
+ MISS_PROBABILITY = 142,
129
+ ABILITY_COOLDOWN_FACTOR = 143,
130
+ ABILITY_COOLDOWN_MODIFIER = 144
121
131
  }
122
132
  export declare const enum BuffTypeIdSelectionPolicy {
123
133
  LEAST_DURATION = 0
@@ -131,13 +141,14 @@ export type BuffConstructorParameters<AdditionalParameters extends BuffAdditiona
131
141
  polarity: BuffPolarityParameterType,
132
142
  resistanceType: BuffResistanceTypeParameterType,
133
143
  ...abilityOrParameters: [
134
- ability: Ability,
144
+ ability?: Ability,
135
145
  parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>
136
146
  ] | [parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>]
137
147
  ];
138
148
  export declare class Buff<AdditionalParameters extends Prohibit<Record<string, any>, keyof BuffParameters> = object> extends UnitBehavior {
139
149
  private _unit;
140
150
  protected readonly __additionalParametersBrand?: AdditionalParameters;
151
+ private [BuffPropertyKey.STATE];
141
152
  private [BuffPropertyKey.UNIT];
142
153
  private [BuffPropertyKey.SOURCE]?;
143
154
  private [BuffPropertyKey.DURATION];
@@ -172,12 +183,15 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
172
183
  private [BuffPropertyKey.DAMAGE_DEALT_EVENT_COUNT]?;
173
184
  private [BuffPropertyKey.MAXIMUM_DAMAGE_RECEIVED_EVENT_COUNT]?;
174
185
  private [BuffPropertyKey.DAMAGE_RECEIVED_EVENT_COUNT]?;
186
+ private [BuffPropertyKey.TURNS_INTO_GHOST]?;
175
187
  private [BuffPropertyKey.STUNS]?;
176
188
  private [BuffPropertyKey.IGNORES_STUN_IMMUNITY]?;
177
189
  private [BuffPropertyKey.DISABLES_AUTO_ATTACK]?;
178
190
  private [BuffPropertyKey.PROVIDES_INVULNERABILITY]?;
179
191
  private [BuffPropertyKey.KILLS_ON_EXPIRATION]?;
180
192
  private [BuffPropertyKey.EXPLODES_ON_EXPIRATION]?;
193
+ private [BuffPropertyKey.ABILITY_COOLDOWN_FACTOR]?;
194
+ private [BuffPropertyKey.ABILITY_COOLDOWN_MODIFIER]?;
181
195
  protected static readonly defaultParameters: BuffParameters;
182
196
  get source(): Unit;
183
197
  readonly typeId: ApplicableBuffTypeId;
@@ -191,11 +205,9 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
191
205
  private readonly _level?;
192
206
  private readonly _spellStealPriority?;
193
207
  private readonly _learnLevelMinimum?;
194
- private _bonusIdByBonusType?;
208
+ private readonly [BuffPropertyKey.MISS_PROBABILITY]?;
195
209
  private readonly _abilityTypeIds?;
196
210
  private _behaviors?;
197
- private getUnitBonus;
198
- private addOrUpdateOrRemoveUnitBonus;
199
211
  constructor(target: Unit, ...parameters: BuffConstructorParameters<AdditionalParameters>);
200
212
  get level(): number;
201
213
  get remainingDamageOverDuration(): number;
@@ -224,6 +236,8 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
224
236
  set receivedDamageFactor(receivedDamageFactor: number);
225
237
  get armorIncrease(): number;
226
238
  set armorIncrease(armorIncrease: number);
239
+ get turnsIntoGhost(): boolean;
240
+ set turnsIntoGhost(turnsIntoGhost: boolean);
227
241
  get stuns(): boolean;
228
242
  set stuns(stuns: boolean);
229
243
  get ignoresStunImmunity(): boolean;
@@ -248,9 +262,15 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
248
262
  set attackSpeedIncreaseFactor(attackSpeedIncreaseFactor: number);
249
263
  get movementSpeedIncreaseFactor(): number;
250
264
  set movementSpeedIncreaseFactor(movementSpeedIncreaseFactor: number);
265
+ get evasionProbability(): number;
266
+ set evasionProbability(evasionProbability: number);
251
267
  get duration(): number;
252
268
  get remainingDuration(): number;
253
269
  set remainingDuration(remainingDuration: number);
270
+ get abilityCooldownFactor(): number;
271
+ set abilityCooldownFactor(abilityCooldownFactor: number);
272
+ onAbilityGained(ability: Ability): void;
273
+ onAbilityLost(ability: Ability): void;
254
274
  flashEffect(...parameters: [
255
275
  ...widgetOrXY: [] | [Widget] | [x: number, x: number],
256
276
  ...parametersOrDuration: [] | [EffectParameters] | [number]
@@ -264,5 +284,7 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
264
284
  onDeath(source: Unit | undefined): void;
265
285
  onDamageDealt(target: Unit, event: DamageEvent): void;
266
286
  onDamageReceived(source: Unit | undefined, event: DamageEvent): void;
287
+ static readonly createdEvent: Event<[Buff<object>]>;
288
+ static readonly beingDestroyedEvent: Event<[Buff<object>]>;
267
289
  }
268
290
  export {};