warscript 0.0.1-dev.f48f7bb → 0.0.1-dev.f70428f

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 (186) 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 +1 -3
  6. package/core/types/effect.lua +26 -29
  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.lua +6 -1
  19. package/decl/native.d.ts +846 -790
  20. package/engine/behavior.d.ts +12 -1
  21. package/engine/behavior.lua +172 -70
  22. package/engine/behaviour/ability/apply-buff.d.ts +5 -0
  23. package/engine/behaviour/ability/apply-buff.lua +32 -0
  24. package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
  25. package/engine/behaviour/ability/damage.d.ts +9 -3
  26. package/engine/behaviour/ability/damage.lua +26 -38
  27. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  28. package/engine/behaviour/ability/emulate-impact.lua +18 -3
  29. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  30. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  31. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  32. package/engine/behaviour/ability/restore-mana.lua +6 -6
  33. package/engine/behaviour/ability.d.ts +7 -2
  34. package/engine/behaviour/ability.lua +42 -24
  35. package/engine/behaviour/unit/stun-immunity.d.ts +11 -5
  36. package/engine/behaviour/unit/stun-immunity.lua +53 -28
  37. package/engine/behaviour/unit.d.ts +36 -2
  38. package/engine/behaviour/unit.lua +192 -6
  39. package/engine/buff.d.ts +66 -44
  40. package/engine/buff.lua +330 -225
  41. package/engine/internal/ability.d.ts +7 -1
  42. package/engine/internal/ability.lua +49 -11
  43. package/engine/internal/item/ability.lua +66 -14
  44. package/engine/internal/item+owner.lua +12 -6
  45. package/engine/internal/item.d.ts +20 -19
  46. package/engine/internal/item.lua +191 -74
  47. package/engine/internal/mechanics/ability-duration.lua +1 -1
  48. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  49. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  50. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  51. package/engine/internal/misc/frame-coordinates.lua +21 -0
  52. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  53. package/engine/internal/misc/get-terrain-z.lua +11 -0
  54. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  55. package/engine/internal/misc/player-local-handle.lua +5 -0
  56. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  57. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  58. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  59. package/engine/internal/object-data/evasion-probability.lua +16 -0
  60. package/engine/internal/unit/ability.d.ts +35 -0
  61. package/engine/internal/unit/ability.lua +98 -9
  62. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  63. package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
  64. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  65. package/engine/internal/unit/add-item-to-slot.lua +52 -0
  66. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  67. package/engine/internal/unit/allowed-targets.lua +9 -1
  68. package/engine/internal/unit/bonus.d.ts +2 -0
  69. package/engine/internal/unit/bonus.lua +17 -0
  70. package/engine/internal/unit/fly-height.d.ts +7 -0
  71. package/engine/internal/unit/fly-height.lua +20 -0
  72. package/engine/internal/unit/item.lua +3 -48
  73. package/engine/internal/unit/main-selected.lua +12 -27
  74. package/engine/internal/unit/order.d.ts +20 -0
  75. package/engine/internal/unit/order.lua +136 -0
  76. package/engine/internal/unit/scale.d.ts +7 -0
  77. package/engine/internal/unit/scale.lua +20 -0
  78. package/engine/internal/unit+ability.lua +10 -1
  79. package/engine/internal/unit+damage.d.ts +2 -11
  80. package/engine/internal/unit+damage.lua +10 -14
  81. package/engine/internal/unit+spellSteal.lua +1 -2
  82. package/engine/internal/unit-missile-launch.lua +45 -14
  83. package/engine/internal/unit.d.ts +43 -17
  84. package/engine/internal/unit.lua +340 -165
  85. package/engine/lightning.d.ts +12 -5
  86. package/engine/lightning.lua +48 -14
  87. package/engine/local-client.d.ts +2 -0
  88. package/engine/local-client.lua +30 -0
  89. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  90. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  91. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  92. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  93. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
  94. package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
  95. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  96. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  97. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  98. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  99. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  100. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  101. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  102. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  103. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  104. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  105. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  106. package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
  107. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  108. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  109. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  110. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  111. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  112. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  113. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  114. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  115. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  116. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  117. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  118. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  119. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  120. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  121. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  122. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  123. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  124. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  125. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  126. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  127. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  128. package/engine/object-data/entry/ability-type/web.lua +52 -0
  129. package/engine/object-data/entry/ability-type.d.ts +19 -17
  130. package/engine/object-data/entry/ability-type.lua +85 -24
  131. package/engine/object-data/entry/buff-type/applicable.lua +18 -37
  132. package/engine/object-data/entry/buff-type.d.ts +6 -12
  133. package/engine/object-data/entry/buff-type.lua +13 -29
  134. package/engine/object-data/entry/destructible-type.d.ts +1 -1
  135. package/engine/object-data/entry/item-type.d.ts +1 -1
  136. package/engine/object-data/entry/item-type.lua +4 -4
  137. package/engine/object-data/entry/lightning-type.d.ts +1 -1
  138. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  139. package/engine/object-data/entry/sound-preset.lua +140 -0
  140. package/engine/object-data/entry/unit-type.d.ts +21 -5
  141. package/engine/object-data/entry/unit-type.lua +214 -93
  142. package/engine/object-data/entry/upgrade.d.ts +1 -1
  143. package/engine/object-data/entry/upgrade.lua +4 -4
  144. package/engine/object-data/entry.d.ts +16 -14
  145. package/engine/object-data/entry.lua +60 -32
  146. package/engine/object-field/ability.d.ts +4 -4
  147. package/engine/object-field/ability.lua +7 -6
  148. package/engine/object-field/unit.d.ts +69 -3
  149. package/engine/object-field/unit.lua +264 -7
  150. package/engine/object-field.d.ts +23 -6
  151. package/engine/object-field.lua +309 -126
  152. package/engine/random.d.ts +9 -0
  153. package/engine/random.lua +13 -0
  154. package/engine/standard/entries/buff-type.d.ts +3 -0
  155. package/engine/standard/entries/buff-type.lua +3 -0
  156. package/engine/standard/entries/sound-preset.d.ts +10 -0
  157. package/engine/standard/entries/sound-preset.lua +10 -0
  158. package/engine/standard/fields/unit.d.ts +6 -0
  159. package/engine/standard/fields/unit.lua +11 -0
  160. package/engine/synchronization.d.ts +11 -0
  161. package/engine/synchronization.lua +77 -0
  162. package/engine/text-tag.d.ts +36 -2
  163. package/engine/text-tag.lua +250 -10
  164. package/engine/unit.d.ts +4 -0
  165. package/engine/unit.lua +4 -0
  166. package/net/socket.lua +1 -1
  167. package/objutil/buff.lua +2 -3
  168. package/objutil/unit.lua +8 -0
  169. package/package.json +2 -2
  170. package/patch-lualib.lua +1 -1
  171. package/utility/arrays.d.ts +2 -0
  172. package/utility/arrays.lua +11 -0
  173. package/utility/callback-array.d.ts +17 -0
  174. package/utility/callback-array.lua +61 -0
  175. package/utility/functions.d.ts +8 -0
  176. package/utility/functions.lua +13 -0
  177. package/utility/linked-set.d.ts +2 -0
  178. package/utility/linked-set.lua +22 -1
  179. package/utility/lua-maps.d.ts +15 -2
  180. package/utility/lua-maps.lua +53 -2
  181. package/utility/lua-sets.d.ts +2 -0
  182. package/utility/lua-sets.lua +7 -0
  183. package/utility/reflection.lua +11 -7
  184. package/utility/types.d.ts +3 -0
  185. package/core/types/order.d.ts +0 -25
  186. 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,109 @@ 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 behaviorsByEvent = {}
26
+ local rangeByBehaviorByEvent = {}
27
+ local listenerByBehaviorByEvent = {}
28
+ local eventsByBehavior = {}
12
29
  ____exports.UnitBehavior = __TS__Class()
13
30
  local UnitBehavior = ____exports.UnitBehavior
14
31
  UnitBehavior.name = "UnitBehavior"
15
32
  __TS__ClassExtends(UnitBehavior, Behavior)
16
- function UnitBehavior.prototype.____constructor(self, unit)
17
- Behavior.prototype.____constructor(self, unit)
33
+ function UnitBehavior.prototype.____constructor(self, unit, priority)
34
+ Behavior.prototype.____constructor(self, unit, priority)
35
+ end
36
+ function UnitBehavior.prototype.onDestroy(self)
37
+ local events = eventsByBehavior[self]
38
+ if events ~= nil then
39
+ for event in pairs(events) do
40
+ local ____opt_0 = behaviorsByEvent[event]
41
+ if ____opt_0 ~= nil then
42
+ ____opt_0:remove(self)
43
+ end
44
+ local ____opt_2 = rangeByBehaviorByEvent[event]
45
+ if ____opt_2 ~= nil then
46
+ ____opt_2[self] = nil
47
+ end
48
+ local ____opt_4 = listenerByBehaviorByEvent[event]
49
+ if ____opt_4 ~= nil then
50
+ ____opt_4[self] = nil
51
+ end
52
+ end
53
+ eventsByBehavior[self] = nil
54
+ end
55
+ if self._bonusIdByBonusType ~= nil then
56
+ for bonusType, bonusId in pairs(self._bonusIdByBonusType) do
57
+ removeUnitBonus(self.object, bonusType, bonusId)
58
+ end
59
+ end
60
+ return Behavior.prototype.onDestroy(self)
61
+ end
62
+ function UnitBehavior.prototype.getUnitBonus(self, bonusType)
63
+ local ____opt_6 = self._bonusIdByBonusType
64
+ local bonusId = ____opt_6 and ____opt_6[bonusType]
65
+ return bonusId == nil and 0 or getUnitBonus(self.object, bonusType, bonusId)
66
+ end
67
+ function UnitBehavior.prototype.addOrUpdateOrRemoveUnitBonus(self, bonusType, value)
68
+ local bonusIdByBonusType = self._bonusIdByBonusType
69
+ if bonusIdByBonusType == nil then
70
+ bonusIdByBonusType = {}
71
+ self._bonusIdByBonusType = bonusIdByBonusType
72
+ end
73
+ bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self.object, bonusType, bonusIdByBonusType[bonusType], value)
74
+ end
75
+ function UnitBehavior.prototype.registerInRangeUnitEvent(self, event, extractUnit, range, listener)
76
+ local rangeByBehavior = getOrPut(rangeByBehaviorByEvent, event, mutableLuaMap)
77
+ rangeByBehavior[self] = range
78
+ local listenerByBehavior = getOrPut(listenerByBehaviorByEvent, event, mutableLuaMap)
79
+ listenerByBehavior[self] = listener
80
+ getOrPut(eventsByBehavior, self, mutableLuaSet)[event] = true
81
+ local behaviors = behaviorsByEvent[event]
82
+ if behaviors == nil then
83
+ event:addListener(function(...)
84
+ local behaviors = behaviorsByEvent[event]
85
+ if behaviors ~= nil then
86
+ local unit = extractUnit(...)
87
+ if unit ~= nil then
88
+ for behavior in pairs(behaviors) do
89
+ local range = rangeByBehavior[behavior]
90
+ if range ~= nil and unit:getCollisionDistanceTo(behavior.unit) <= range then
91
+ safeCall(behavior[listenerByBehavior[behavior]], behavior, ...)
92
+ end
93
+ end
94
+ end
95
+ end
96
+ end)
97
+ behaviors = __TS__New(LinkedSet)
98
+ behaviorsByEvent[event] = behaviors
99
+ end
100
+ behaviors:add(self)
101
+ end
102
+ function UnitBehavior.prototype.onImmediateOrder(self, orderId)
103
+ end
104
+ function UnitBehavior.prototype.onTargetOrder(self, orderId, target)
105
+ end
106
+ function UnitBehavior.prototype.onPointOrder(self, orderId, x, y)
18
107
  end
19
108
  function UnitBehavior.prototype.onAutoAttackStart(self, target)
20
109
  end
21
110
  function UnitBehavior.prototype.onAutoAttackFinish(self, target)
22
111
  end
112
+ function UnitBehavior.prototype.onTargetingAutoAttackStart(self, source)
113
+ end
114
+ function UnitBehavior.prototype.onTargetingAutoAttackFinish(self, source)
115
+ end
23
116
  function UnitBehavior.prototype.onDamageDealing(self, target, event)
24
117
  end
25
118
  function UnitBehavior.prototype.onDamageDealt(self, target, event)
@@ -32,6 +125,32 @@ function UnitBehavior.prototype.onAbilityGained(self, ability)
32
125
  end
33
126
  function UnitBehavior.prototype.onAbilityLost(self, ability)
34
127
  end
128
+ function UnitBehavior.prototype.onAbilityChannelingStart(self, ability)
129
+ end
130
+ function UnitBehavior.prototype.onAbilityImpact(self, ability)
131
+ end
132
+ function UnitBehavior.prototype.onAbilityWidgetTargetImpact(self, ability, target)
133
+ end
134
+ function UnitBehavior.prototype.onAbilityUnitTargetImpact(self, ability, target)
135
+ end
136
+ function UnitBehavior.prototype.onAbilityItemTargetImpact(self, ability, target)
137
+ end
138
+ function UnitBehavior.prototype.onAbilityDestructibleTargetImpact(self, ability, target)
139
+ end
140
+ function UnitBehavior.prototype.onAbilityPointTargetImpact(self, ability, x, y)
141
+ end
142
+ function UnitBehavior.prototype.onAbilityNoTargetImpact(self, ability)
143
+ end
144
+ function UnitBehavior.prototype.onAbilityChannelingFinish(self, ability)
145
+ end
146
+ function UnitBehavior.prototype.onAbilityStop(self, ability)
147
+ end
148
+ function UnitBehavior.prototype.onTargetingAbilityChannelingStart(self, ability, source)
149
+ end
150
+ function UnitBehavior.prototype.onTargetingAbilityImpact(self, ability, source)
151
+ end
152
+ function UnitBehavior.prototype.onBuffGained(self, buff)
153
+ end
35
154
  function UnitBehavior.prototype.onItemDropped(self, item)
36
155
  end
37
156
  function UnitBehavior.prototype.onItemPickedUp(self, item)
@@ -40,10 +159,14 @@ function UnitBehavior.prototype.onItemUsed(self, item)
40
159
  end
41
160
  function UnitBehavior.prototype.onItemStacked(self, item)
42
161
  end
162
+ function UnitBehavior.prototype.onItemChargesChanged(self, item)
163
+ end
43
164
  function UnitBehavior.prototype.onKill(self, target)
44
165
  end
45
166
  function UnitBehavior.prototype.onDeath(self, source)
46
167
  end
168
+ function UnitBehavior.prototype.onOwnerChange(self, previousOwner)
169
+ end
47
170
  __TS__SetDescriptor(
48
171
  UnitBehavior.prototype,
49
172
  "unit",
@@ -53,11 +176,28 @@ __TS__SetDescriptor(
53
176
  true
54
177
  );
55
178
  (function(self)
179
+ Unit.onImmediateOrder:addListener(function(source, orderId)
180
+ ____exports.UnitBehavior:forAll(source, "onImmediateOrder", orderId)
181
+ end)
182
+ Unit.onTargetOrder:addListener(function(source, orderId, target)
183
+ ____exports.UnitBehavior:forAll(source, "onTargetOrder", orderId, target)
184
+ end)
185
+ Unit.onPointOrder:addListener(function(source, orderId, x, y)
186
+ ____exports.UnitBehavior:forAll(
187
+ source,
188
+ "onPointOrder",
189
+ orderId,
190
+ x,
191
+ y
192
+ )
193
+ end)
56
194
  Unit.autoAttackStartEvent:addListener(function(source, target)
57
195
  ____exports.UnitBehavior:forAll(source, "onAutoAttackStart", target)
196
+ ____exports.UnitBehavior:forAll(target, "onTargetingAutoAttackStart", source)
58
197
  end)
59
198
  Unit.autoAttackFinishEvent:addListener(function(source, target)
60
199
  ____exports.UnitBehavior:forAll(source, "onAutoAttackFinish", target)
200
+ ____exports.UnitBehavior:forAll(target, "onTargetingAutoAttackFinish", source)
61
201
  end)
62
202
  Unit.onDamaging:addListener(function(source, target, event)
63
203
  if source ~= nil then
@@ -71,11 +211,51 @@ __TS__SetDescriptor(
71
211
  end
72
212
  ____exports.UnitBehavior:forAll(target, "onDamageReceived", source, event)
73
213
  end)
74
- Unit.abilityGainedEvent:addListener(function(source, target)
75
- ____exports.UnitBehavior:forAll(source, "onAbilityGained", target)
214
+ Unit.abilityGainedEvent:addListener(function(source, ability)
215
+ ____exports.UnitBehavior:forAll(source, "onAbilityGained", ability)
216
+ end)
217
+ Unit.abilityLostEvent:addListener(function(source, ability)
218
+ ____exports.UnitBehavior:forAll(source, "onAbilityLost", ability)
219
+ end)
220
+ Unit.abilityChannelingStartEvent:addListener(function(source, ability)
221
+ ____exports.UnitBehavior:forAll(source, "onAbilityChannelingStart", ability)
222
+ end)
223
+ Unit.abilityUnitTargetChannelingStartEvent:addListener(function(source, ability, target)
224
+ ____exports.UnitBehavior:forAll(target, "onTargetingAbilityChannelingStart", ability, source)
76
225
  end)
77
- Unit.abilityLostEvent:addListener(function(source, target)
78
- ____exports.UnitBehavior:forAll(source, "onAbilityLost", target)
226
+ Unit.abilityImpactEvent:addListener(function(source, ability)
227
+ ____exports.UnitBehavior:forAll(source, "onAbilityImpact", ability)
228
+ end)
229
+ Unit.abilityWidgetTargetImpactEvent:addListener(function(source, ability, target)
230
+ ____exports.UnitBehavior:forAll(source, "onAbilityWidgetTargetImpact", ability, target)
231
+ end)
232
+ Unit.abilityUnitTargetImpactEvent:addListener(function(source, ability, target)
233
+ ____exports.UnitBehavior:forAll(source, "onAbilityUnitTargetImpact", ability, target)
234
+ ____exports.UnitBehavior:forAll(target, "onTargetingAbilityImpact", ability, source)
235
+ end)
236
+ Unit.abilityItemTargetImpactEvent:addListener(function(source, ability, target)
237
+ ____exports.UnitBehavior:forAll(source, "onAbilityItemTargetImpact", ability, target)
238
+ end)
239
+ Unit.abilityDestructibleTargetImpactEvent:addListener(function(source, ability, target)
240
+ ____exports.UnitBehavior:forAll(source, "onAbilityDestructibleTargetImpact", ability, target)
241
+ end)
242
+ Unit.abilityPointTargetImpactEvent:addListener(function(source, ability, x, y)
243
+ ____exports.UnitBehavior:forAll(
244
+ source,
245
+ "onAbilityPointTargetImpact",
246
+ ability,
247
+ x,
248
+ y
249
+ )
250
+ end)
251
+ Unit.abilityNoTargetImpactEvent:addListener(function(source, ability)
252
+ ____exports.UnitBehavior:forAll(source, "onAbilityNoTargetImpact", ability)
253
+ end)
254
+ Unit.abilityChannelingFinishEvent:addListener(function(source, ability)
255
+ ____exports.UnitBehavior:forAll(source, "onAbilityChannelingFinish", ability)
256
+ end)
257
+ Unit.abilityStopEvent:addListener(function(source, ability)
258
+ ____exports.UnitBehavior:forAll(source, "onAbilityStop", ability)
79
259
  end)
80
260
  Unit.deathEvent:addListener(function(target, source)
81
261
  if source ~= nil then
@@ -95,6 +275,12 @@ __TS__SetDescriptor(
95
275
  Unit.itemStackedEvent:addListener(function(unit, item)
96
276
  ____exports.UnitBehavior:forAll(unit, "onItemStacked", item)
97
277
  end)
278
+ Unit.itemChargesChangedEvent:addListener(function(unit, item)
279
+ ____exports.UnitBehavior:forAll(unit, "onItemChargesChanged", item)
280
+ end)
281
+ Unit.onOwnerChange:addListener(function(unit, previousOwner)
282
+ ____exports.UnitBehavior:forAll(unit, "onOwnerChange", previousOwner)
283
+ end)
98
284
  end)(UnitBehavior)
99
285
  Unit.destroyEvent:addListener(function(unit)
100
286
  ____exports.UnitBehavior:forAll(unit, "destroy")
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 {};