warscript 0.0.1-dev.9cbb1ff → 0.0.1-dev.9e6f20e

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 (184) hide show
  1. package/attributes.d.ts +6 -0
  2. package/attributes.lua +17 -1
  3. package/core/types/frame.d.ts +1 -0
  4. package/core/types/frame.lua +136 -58
  5. package/core/types/handle.lua +6 -9
  6. package/core/types/item.d.ts +1 -0
  7. package/core/types/item.lua +1 -0
  8. package/core/types/player.d.ts +17 -1
  9. package/core/types/player.lua +70 -24
  10. package/core/types/playerCamera.d.ts +2 -0
  11. package/core/types/playerCamera.lua +123 -5
  12. package/core/types/sound.lua +1 -1
  13. package/core/types/tileCell.d.ts +11 -1
  14. package/core/types/tileCell.lua +97 -0
  15. package/core/types/timer.d.ts +3 -1
  16. package/core/types/timer.lua +27 -2
  17. package/decl/native.d.ts +846 -790
  18. package/destroyable.d.ts +1 -0
  19. package/destroyable.lua +9 -0
  20. package/engine/behavior.d.ts +14 -1
  21. package/engine/behavior.lua +230 -70
  22. package/engine/behaviour/ability/apply-buff.lua +5 -5
  23. package/engine/behaviour/ability/damage.d.ts +9 -3
  24. package/engine/behaviour/ability/damage.lua +31 -37
  25. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  26. package/engine/behaviour/ability/emulate-impact.lua +16 -7
  27. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  28. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  29. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  30. package/engine/behaviour/ability/restore-mana.lua +6 -6
  31. package/engine/behaviour/ability.d.ts +11 -6
  32. package/engine/behaviour/ability.lua +38 -17
  33. package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
  34. package/engine/behaviour/unit/stun-immunity.lua +57 -31
  35. package/engine/behaviour/unit.d.ts +39 -3
  36. package/engine/behaviour/unit.lua +269 -6
  37. package/engine/buff.d.ts +67 -22
  38. package/engine/buff.lua +371 -182
  39. package/engine/internal/ability.d.ts +7 -1
  40. package/engine/internal/ability.lua +64 -24
  41. package/engine/internal/item/ability.lua +63 -11
  42. package/engine/internal/item/fields.d.ts +12 -0
  43. package/engine/internal/item/fields.lua +33 -0
  44. package/engine/internal/item+owner.lua +12 -6
  45. package/engine/internal/item.d.ts +16 -16
  46. package/engine/internal/item.lua +152 -69
  47. package/engine/internal/mechanics/cast-ability.lua +6 -3
  48. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  49. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  50. package/engine/internal/misc/frame-coordinates.lua +21 -0
  51. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  52. package/engine/internal/misc/get-terrain-z.lua +11 -0
  53. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  54. package/engine/internal/misc/player-local-handle.lua +5 -0
  55. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  56. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  57. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  58. package/engine/internal/object-data/health-bonus.lua +16 -0
  59. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  60. package/engine/internal/object-data/mana-bonus.lua +16 -0
  61. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  62. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  63. package/engine/internal/unit/ability.d.ts +35 -0
  64. package/engine/internal/unit/ability.lua +113 -12
  65. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  66. package/engine/internal/unit/allowed-targets.lua +9 -1
  67. package/engine/internal/unit/attributes.d.ts +17 -0
  68. package/engine/internal/unit/attributes.lua +46 -0
  69. package/engine/internal/unit/bonus.d.ts +6 -0
  70. package/engine/internal/unit/bonus.lua +33 -3
  71. package/engine/internal/unit/buff.d.ts +2 -2
  72. package/engine/internal/unit/buff.lua +32 -17
  73. package/engine/internal/unit/fly-height.d.ts +7 -0
  74. package/engine/internal/unit/fly-height.lua +20 -0
  75. package/engine/internal/unit/interrupts.d.ts +12 -0
  76. package/engine/internal/unit/interrupts.lua +28 -0
  77. package/engine/internal/unit/main-selected.lua +12 -27
  78. package/engine/internal/unit/order.d.ts +20 -0
  79. package/engine/internal/unit/order.lua +136 -0
  80. package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
  81. package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
  82. package/engine/internal/unit/range-event.d.ts +12 -0
  83. package/engine/internal/unit/range-event.lua +90 -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+bonus.lua +3 -3
  88. package/engine/internal/unit+damage.d.ts +2 -11
  89. package/engine/internal/unit+damage.lua +10 -14
  90. package/engine/internal/unit+spellSteal.lua +1 -2
  91. package/engine/internal/unit-missile-launch.lua +52 -14
  92. package/engine/internal/unit.d.ts +34 -27
  93. package/engine/internal/unit.lua +365 -273
  94. package/engine/local-client.d.ts +7 -0
  95. package/engine/local-client.lua +86 -1
  96. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  97. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  98. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  99. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  100. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  101. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  102. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  103. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
  104. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  105. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
  106. package/engine/object-data/entry/ability-type/blank-configurable.lua +30 -0
  107. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  108. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  109. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  110. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  111. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  112. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  113. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  114. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  115. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  116. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  117. package/engine/object-data/entry/ability-type.d.ts +2 -0
  118. package/engine/object-data/entry/ability-type.lua +89 -8
  119. package/engine/object-data/entry/buff-type/applicable.lua +113 -109
  120. package/engine/object-data/entry/destructible-type.d.ts +27 -1
  121. package/engine/object-data/entry/destructible-type.lua +155 -0
  122. package/engine/object-data/entry/unit-type.d.ts +17 -4
  123. package/engine/object-data/entry/unit-type.lua +189 -83
  124. package/engine/object-field/ability.d.ts +4 -4
  125. package/engine/object-field/ability.lua +9 -8
  126. package/engine/object-field/item.d.ts +22 -0
  127. package/engine/object-field/item.lua +118 -0
  128. package/engine/object-field/unit.d.ts +72 -3
  129. package/engine/object-field/unit.lua +268 -7
  130. package/engine/object-field.d.ts +18 -7
  131. package/engine/object-field.lua +294 -135
  132. package/engine/random.d.ts +10 -0
  133. package/engine/random.lua +21 -0
  134. package/engine/standard/fields/ability.d.ts +2 -2
  135. package/engine/standard/fields/ability.lua +2 -2
  136. package/engine/standard/fields/item.d.ts +4 -0
  137. package/engine/standard/fields/item.lua +6 -0
  138. package/engine/standard/fields/unit.d.ts +12 -0
  139. package/engine/standard/fields/unit.lua +20 -0
  140. package/engine/synchronization.d.ts +11 -0
  141. package/engine/synchronization.lua +77 -0
  142. package/engine/text-tag.d.ts +36 -2
  143. package/engine/text-tag.lua +250 -10
  144. package/engine/unit.d.ts +6 -0
  145. package/engine/unit.lua +6 -0
  146. package/event.d.ts +1 -1
  147. package/lualib_bundle.lua +1 -1
  148. package/math.d.ts +2 -0
  149. package/math.lua +14 -0
  150. package/net/socket.lua +1 -1
  151. package/network.lua +25 -1
  152. package/objutil/buff.lua +11 -10
  153. package/objutil/object.lua +1 -1
  154. package/operation.d.ts +8 -1
  155. package/operation.lua +38 -18
  156. package/package.json +5 -5
  157. package/patch-lua.lua +15 -0
  158. package/patch-lualib.lua +1 -1
  159. package/utility/arrays.d.ts +2 -0
  160. package/utility/arrays.lua +11 -0
  161. package/utility/callback-array.d.ts +17 -0
  162. package/utility/callback-array.lua +61 -0
  163. package/utility/functions.d.ts +8 -0
  164. package/utility/functions.lua +13 -0
  165. package/utility/linked-map.d.ts +35 -0
  166. package/utility/linked-map.lua +107 -0
  167. package/utility/linked-set.d.ts +4 -1
  168. package/utility/linked-set.lua +46 -1
  169. package/utility/lua-maps.d.ts +12 -2
  170. package/utility/lua-maps.lua +37 -2
  171. package/utility/lua-sets.d.ts +1 -0
  172. package/utility/lua-sets.lua +4 -0
  173. package/utility/random.d.ts +102 -0
  174. package/utility/random.lua +273 -0
  175. package/utility/records.lua +20 -1
  176. package/utility/types.d.ts +3 -0
  177. package/utility/unordered-map.d.ts +27 -0
  178. package/utility/unordered-map.lua +99 -0
  179. package/core/types/order.d.ts +0 -25
  180. package/core/types/order.lua +0 -55
  181. /package/engine/internal/{object-data/armor-increase.d.ts → misc/damage-metadata-by-target.d.ts} +0 -0
  182. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  183. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  184. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -1,26 +1,39 @@
1
1
  local ____lualib = require("lualib_bundle")
2
+ local __TS__New = ____lualib.__TS__New
2
3
  local __TS__Class = ____lualib.__TS__Class
3
4
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
5
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
5
6
  local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
6
7
  local __TS__Delete = ____lualib.__TS__Delete
7
8
  local ____exports = {}
9
+ local invoke
8
10
  local ____handle = require("core.types.handle")
9
11
  local Handle = ____handle.Handle
10
12
  local ____color = require("core.types.color")
11
13
  local Color = ____color.Color
14
+ local ____event = require("event")
15
+ local Event = ____event.Event
12
16
  local ____rect = require("core.types.rect")
13
17
  local Rect = ____rect.Rect
14
18
  local ____ability = require("engine.internal.ability")
15
19
  local ItemAbility = ____ability.ItemAbility
16
20
  local ____ability = require("engine.internal.item.ability")
17
21
  local doAbilityAction = ____ability.doAbilityAction
22
+ local doAbilityActionForceDummy = ____ability.doAbilityActionForceDummy
23
+ local itemAbilityDummy = ____ability.itemAbilityDummy
18
24
  local ____dummy_2Ditem = require("engine.internal.object-data.dummy-item")
19
25
  local DUMMY_ITEM_ID = ____dummy_2Ditem.DUMMY_ITEM_ID
20
26
  local ____add_2Ditem_2Dto_2Dslot = require("engine.internal.unit.add-item-to-slot")
21
27
  local SLOT_FILLER_ITEM_TYPE_ID = ____add_2Ditem_2Dto_2Dslot.SLOT_FILLER_ITEM_TYPE_ID
22
28
  local ____vec2 = require("math.vec2")
23
29
  local distance = ____vec2.distance
30
+ local ____timer = require("core.types.timer")
31
+ local Timer = ____timer.Timer
32
+ local createTrigger = CreateTrigger
33
+ local triggerAddCondition = TriggerAddCondition
34
+ local triggerRegisterDeathEvent = TriggerRegisterDeathEvent
35
+ local condition = Condition
36
+ local destroyTrigger = DestroyTrigger
24
37
  local itemAddAbility = BlzItemAddAbility
25
38
  local itemRemoveAbility = BlzItemRemoveAbility
26
39
  local getItemAbility = BlzGetItemAbility
@@ -36,10 +49,35 @@ local getEnumItem = GetEnumItem
36
49
  local getItemTypeId = GetItemTypeId
37
50
  local getItemX = GetItemX
38
51
  local getItemY = GetItemY
52
+ local getItemCharges = GetItemCharges
53
+ local setItemCharges = SetItemCharges
54
+ local unitRemoveAbility = UnitRemoveAbility
55
+ local unitRemoveItem = UnitRemoveItem
56
+ local unitUseItem = UnitUseItem
57
+ local unitUseItemPoint = UnitUseItemPoint
58
+ local unitUseItemTarget = UnitUseItemTarget
59
+ local setItemDropOnDeath = SetItemDropOnDeath
60
+ local setItemDroppable = SetItemDroppable
39
61
  local getItemIntegerField = BlzGetItemIntegerField
40
62
  local setItemBooleanField = BlzSetItemBooleanField
41
63
  local getItemBooleanField = BlzGetItemBooleanField
64
+ local getTriggerWidget = GetTriggerWidget
65
+ local saveWidgetHandle = SaveWidgetHandle
66
+ local loadItemHandle = LoadItemHandle
67
+ local tableRemove = table.remove
68
+ local itemChargesChangeEvent = __TS__New(Event)
69
+ local itemDeathEvent = __TS__New(Event)
70
+ _G.SetItemCharges = function(whichItem, charges)
71
+ setItemCharges(whichItem, charges)
72
+ invoke(
73
+ itemChargesChangeEvent,
74
+ ____exports.Item:of(whichItem)
75
+ )
76
+ end
77
+ invoke = Event.invoke
42
78
  local enumRect = Rect:create(0, 0, 0, 0).handle
79
+ ---
80
+ -- @internal For use by internal systems only.
43
81
  ____exports.addAndGetAbility = function(handle, abilityTypeId)
44
82
  if itemAddAbility(handle, abilityTypeId) then
45
83
  return getItemAbility(handle, abilityTypeId)
@@ -65,6 +103,23 @@ local function getItemAbilities(handle, item)
65
103
  end
66
104
  return abilities
67
105
  end
106
+ local function consumeCharge(handle)
107
+ do
108
+ local i = 0
109
+ local ability = getItemAbilityByIndex(handle, i)
110
+ while ability ~= nil do
111
+ unitRemoveAbility(
112
+ itemAbilityDummy,
113
+ getAbilityId(ability)
114
+ )
115
+ do
116
+ i = i + 1
117
+ ability = getItemAbilityByIndex(handle, i)
118
+ end
119
+ end
120
+ end
121
+ return unitUseItem(itemAbilityDummy, handle) or unitUseItemPoint(itemAbilityDummy, handle, 0, 0) or unitUseItemTarget(itemAbilityDummy, handle, itemAbilityDummy)
122
+ end
68
123
  local targetCollection
69
124
  local targetCollectionNextIndex
70
125
  local centerX
@@ -91,63 +146,114 @@ local function collectIntoTargetRange()
91
146
  targetCollectionNextIndex = targetCollectionNextIndex + 1
92
147
  end
93
148
  end
149
+ local hashtable = InitHashtable()
150
+ local deathTriggerCondition = condition(function()
151
+ saveWidgetHandle(
152
+ hashtable,
153
+ 1,
154
+ 1,
155
+ getTriggerWidget()
156
+ )
157
+ local item = ____exports.Item:of(loadItemHandle(hashtable, 1, 1))
158
+ if item ~= nil then
159
+ invoke(itemDeathEvent, item)
160
+ end
161
+ end)
162
+ itemDeathEvent:addListener(
163
+ 999999,
164
+ function(item)
165
+ Timer:run(item, "destroy")
166
+ end
167
+ )
94
168
  ____exports.Item = __TS__Class()
95
169
  local Item = ____exports.Item
96
170
  Item.name = "Item"
97
171
  __TS__ClassExtends(Item, Handle)
98
172
  function Item.prototype.____constructor(self, handle)
99
173
  Handle.prototype.____constructor(self, handle)
100
- local abilities = doAbilityAction(handle, getItemAbilities, self)
101
- self[100] = abilities
102
- local luaIndexByAbilityTypeId = {}
103
- for i = 1, #abilities do
104
- luaIndexByAbilityTypeId[abilities[i].typeId] = i
105
- end
106
- self[101] = luaIndexByAbilityTypeId
174
+ self[100] = doAbilityAction(handle, getItemAbilities, self)
175
+ local deathTrigger = createTrigger()
176
+ triggerRegisterDeathEvent(deathTrigger, handle)
177
+ triggerAddCondition(deathTrigger, deathTriggerCondition)
178
+ self[101] = deathTrigger
107
179
  end
108
180
  function Item.prototype.onDestroy(self)
181
+ local owner = self.owner
182
+ if owner ~= nil then
183
+ unitRemoveItem(owner.handle, self.handle)
184
+ end
109
185
  local abilities = self[100]
110
186
  for i = 1, #abilities do
111
187
  abilities[i]:destroy()
112
188
  end
113
189
  removeItem(self.handle)
190
+ destroyTrigger(self[101])
114
191
  return Handle.prototype.onDestroy(self)
115
192
  end
116
193
  function Item.create(self, id, x, y, skinId)
117
194
  return self:of(BlzCreateItemWithSkin(id, x, y, skinId or id))
118
195
  end
196
+ function Item.prototype.consumeCharge(self)
197
+ return self:consumeCharges(1)
198
+ end
199
+ function Item.prototype.consumeCharges(self, count)
200
+ local handle = self.handle
201
+ local charges = getItemCharges(handle)
202
+ if charges > count then
203
+ setItemCharges(handle, charges - count)
204
+ invoke(itemChargesChangeEvent, self)
205
+ return true
206
+ end
207
+ if charges == count then
208
+ if getItemBooleanField(handle, ITEM_BF_PERISHABLE) then
209
+ self:destroy()
210
+ return true
211
+ end
212
+ if not getItemBooleanField(handle, ITEM_BF_ACTIVELY_USED) then
213
+ setItemCharges(handle, 0)
214
+ invoke(itemChargesChangeEvent, self)
215
+ return true
216
+ end
217
+ setItemCharges(handle, 1)
218
+ local ____doAbilityActionForceDummy_2 = doAbilityActionForceDummy
219
+ local ____opt_0 = self.owner
220
+ ____doAbilityActionForceDummy_2(handle, ____opt_0 and ____opt_0.handle, consumeCharge)
221
+ invoke(itemChargesChangeEvent, self)
222
+ return true
223
+ end
224
+ return false
225
+ end
119
226
  function Item.prototype.addAbility(self, abilityTypeId)
120
227
  local nativeAbility = doAbilityAction(self.handle, ____exports.addAndGetAbility, abilityTypeId)
121
228
  if nativeAbility ~= nil then
122
229
  local ability = ItemAbility:of(nativeAbility, abilityTypeId, self)
123
230
  local abilities = self[100]
124
- local luaIndex = #abilities + 1
125
- abilities[luaIndex] = ability
126
- self[101][abilityTypeId] = luaIndex
231
+ abilities[#abilities + 1] = ability
127
232
  return ability
128
233
  end
129
234
  return nil
130
235
  end
131
236
  function Item.prototype.removeAbility(self, abilityTypeId)
132
- local luaIndexByAbilityTypeId = self[101]
133
- local luaIndex = luaIndexByAbilityTypeId[abilityTypeId]
134
- if luaIndex ~= nil and doAbilityAction(self.handle, itemRemoveAbility, abilityTypeId) then
135
- luaIndexByAbilityTypeId[abilityTypeId] = nil
136
- local abilities = self[100]
137
- abilities[luaIndex]:destroy()
138
- local abilityTypeIdsLength = #abilities
139
- for j = luaIndex, abilityTypeIdsLength do
140
- abilities[j] = abilities[j + 1]
237
+ local abilities = self[100]
238
+ for i = 1, #abilities do
239
+ if abilities[i].typeId == abilityTypeId then
240
+ local ability = abilities[i]
241
+ tableRemove(abilities, i)
242
+ ability:destroy()
243
+ return true
141
244
  end
142
245
  end
143
- return false
246
+ return doAbilityAction(self.handle, itemRemoveAbility, abilityTypeId)
144
247
  end
145
248
  function Item.prototype.hasAbility(self, abilityTypeId)
146
- return self[101][abilityTypeId] ~= nil
249
+ return doAbilityAction(self.handle, getItemAbility, abilityTypeId) ~= nil
147
250
  end
148
251
  function Item.prototype.getAbility(self, abilityTypeId)
149
- local ability = self[101][abilityTypeId] ~= nil and doAbilityAction(self.handle, getItemAbility, abilityTypeId)
150
- return ability and ItemAbility:of(ability, abilityTypeId, self) or nil
252
+ return ItemAbility:of(
253
+ doAbilityAction(self.handle, getItemAbility, abilityTypeId),
254
+ abilityTypeId,
255
+ self
256
+ )
151
257
  end
152
258
  function Item.getInRange(self, x, y, range)
153
259
  targetCollection = {}
@@ -259,65 +365,55 @@ __TS__SetDescriptor(
259
365
  )
260
366
  __TS__SetDescriptor(
261
367
  Item.prototype,
262
- "dropOnDeath",
368
+ "dropsOnDeath",
263
369
  {
264
370
  get = function(self)
265
- return BlzGetItemBooleanField(self.handle, ITEM_BF_DROPPED_WHEN_CARRIER_DIES)
371
+ return getItemBooleanField(self.handle, ITEM_BF_DROPPED_WHEN_CARRIER_DIES)
266
372
  end,
267
- set = function(self, v)
268
- SetItemDropOnDeath(self.handle, v)
373
+ set = function(self, dropsOnDeath)
374
+ setItemDropOnDeath(self.handle, dropsOnDeath)
269
375
  end
270
376
  },
271
377
  true
272
378
  )
273
379
  __TS__SetDescriptor(
274
380
  Item.prototype,
275
- "droppable",
381
+ "canBeDropped",
276
382
  {
277
383
  get = function(self)
278
- return BlzGetItemBooleanField(self.handle, ITEM_BF_CAN_BE_DROPPED)
384
+ return getItemBooleanField(self.handle, ITEM_BF_CAN_BE_DROPPED)
279
385
  end,
280
- set = function(self, v)
281
- SetItemDroppable(self.handle, v)
282
- end
283
- },
284
- true
285
- )
286
- __TS__SetDescriptor(
287
- Item.prototype,
288
- "pawnable",
289
- {
290
- get = function(self)
291
- return IsItemPawnable(self.handle)
292
- end,
293
- set = function(self, v)
294
- SetItemPawnable(self.handle, v)
386
+ set = function(self, canBeDropped)
387
+ setItemDroppable(self.handle, canBeDropped)
295
388
  end
296
389
  },
297
390
  true
298
391
  )
299
392
  __TS__SetDescriptor(
300
393
  Item.prototype,
301
- "perishable",
394
+ "perishes",
302
395
  {
303
396
  get = function(self)
304
- return BlzGetItemBooleanField(self.handle, ITEM_BF_PERISHABLE)
397
+ return getItemBooleanField(self.handle, ITEM_BF_PERISHABLE)
305
398
  end,
306
- set = function(self, v)
307
- BlzSetItemBooleanField(self.handle, ITEM_BF_PERISHABLE, v)
399
+ set = function(self, perishes)
400
+ local handle = self.handle
401
+ local powerUp = isItemPowerup(handle)
402
+ setItemBooleanField(handle, ITEM_BF_PERISHABLE, perishes)
403
+ setItemBooleanField(handle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, powerUp)
308
404
  end
309
405
  },
310
406
  true
311
407
  )
312
408
  __TS__SetDescriptor(
313
409
  Item.prototype,
314
- "powerup",
410
+ "isPowerUp",
315
411
  {
316
412
  get = function(self)
317
413
  return isItemPowerup(self.handle)
318
414
  end,
319
- set = function(self, v)
320
- setItemBooleanField(self.handle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, v)
415
+ set = function(self, isPowerUp)
416
+ setItemBooleanField(self.handle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, isPowerUp)
321
417
  end
322
418
  },
323
419
  true
@@ -351,22 +447,6 @@ __TS__SetDescriptor(
351
447
  },
352
448
  true
353
449
  )
354
- __TS__SetDescriptor(
355
- Item.prototype,
356
- "usable",
357
- {
358
- get = function(self)
359
- return getItemBooleanField(self.handle, ITEM_BF_ACTIVELY_USED)
360
- end,
361
- set = function(self, v)
362
- local handle = self.handle
363
- local powerup = isItemPowerup(handle)
364
- setItemBooleanField(handle, ITEM_BF_ACTIVELY_USED, v)
365
- setItemBooleanField(handle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, powerup)
366
- end
367
- },
368
- true
369
- )
370
450
  __TS__SetDescriptor(
371
451
  Item.prototype,
372
452
  "visible",
@@ -557,10 +637,11 @@ __TS__SetDescriptor(
557
637
  "charges",
558
638
  {
559
639
  get = function(self)
560
- return GetItemCharges(self.handle)
640
+ return getItemCharges(self.handle)
561
641
  end,
562
642
  set = function(self, v)
563
- SetItemCharges(self.handle, v)
643
+ setItemCharges(self.handle, v)
644
+ invoke(itemChargesChangeEvent, self)
564
645
  end
565
646
  },
566
647
  true
@@ -587,6 +668,8 @@ __TS__ObjectDefineProperty(
587
668
  return self.onDestroyEvent
588
669
  end}
589
670
  )
671
+ Item.deathEvent = itemDeathEvent
672
+ Item.chargesChangedEvent = itemChargesChangeEvent
590
673
  local getManipulatedItem = GetManipulatedItem
591
674
  local trigger = CreateTrigger()
592
675
  TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_PICKUP_ITEM)
@@ -74,9 +74,12 @@ ____exports.castAbility = function(nativeUnit, abilityTypeId, prepareAbility, ..
74
74
  unitRemoveAbility(nativeUnit, INVENTORY_ABILITY_TYPE_ID)
75
75
  if latestInventoryAbilityTypeId ~= 0 then
76
76
  unitAddAbility(nativeUnit, latestInventoryAbilityTypeId)
77
- for slot, nativeItem in pairs(nativeItemBySlot) do
78
- unitAddItem(nativeUnit, nativeItem)
79
- unitDropItemSlot(nativeUnit, nativeItem, slot)
77
+ for slot = 0, inventorySize - 1 do
78
+ local nativeItem = nativeItemBySlot[slot]
79
+ if nativeItem ~= nil then
80
+ unitAddItem(nativeUnit, nativeItem)
81
+ unitDropItemSlot(nativeUnit, nativeItem, slot)
82
+ end
80
83
  end
81
84
  end
82
85
  end
@@ -0,0 +1,5 @@
1
+ local ____exports = {}
2
+ ---
3
+ -- @internal For use by internal systems only.
4
+ ____exports.damageMetadataByTarget = setmetatable({}, {__mode = "k"})
5
+ return ____exports
@@ -0,0 +1,2 @@
1
+ /** @noSelfInFile */
2
+ export {};
@@ -0,0 +1,21 @@
1
+ local ____exports = {}
2
+ local getLocalClientWidth = BlzGetLocalClientWidth
3
+ local getLocalClientHeight = BlzGetLocalClientHeight
4
+ ---
5
+ -- @internal For use by internal systems only.
6
+ ____exports.getFrameMinXMaxX = function()
7
+ local w = getLocalClientWidth()
8
+ local h = getLocalClientHeight()
9
+ local width4by3 = (w - h / 600 * 800) / 2
10
+ local pxtodpi = 0.6 / h
11
+ local minX = -width4by3 * pxtodpi
12
+ local maxX = minX + w * pxtodpi
13
+ return minX, maxX
14
+ end
15
+ ---
16
+ -- @internal For use by internal systems only.
17
+ ____exports.FRAME_MIN_Y = 0
18
+ ---
19
+ -- @internal For use by internal systems only.
20
+ ____exports.FRAME_MAX_Y = 0.6
21
+ return ____exports
@@ -0,0 +1,2 @@
1
+ /** @noSelfInFile */
2
+ export {};
@@ -0,0 +1,11 @@
1
+ local ____exports = {}
2
+ local getLocationZ = GetLocationZ
3
+ local moveLocation = MoveLocation
4
+ local location = Location(0, 0)
5
+ ---
6
+ -- @internal For use by internal systems only.
7
+ ____exports.getTerrainZ = function(x, y)
8
+ moveLocation(location, x, y)
9
+ return getLocationZ(location)
10
+ end
11
+ return ____exports
@@ -0,0 +1,2 @@
1
+ /** @noSelfInFile */
2
+ export {};
@@ -0,0 +1,5 @@
1
+ local ____exports = {}
2
+ ---
3
+ -- @internal For use by internal systems only.
4
+ ____exports.PLAYER_LOCAL_HANDLE = GetLocalPlayer()
5
+ return ____exports
@@ -0,0 +1,2 @@
1
+ /** @noSelfInFile */
2
+ export {};
@@ -1,6 +1,6 @@
1
1
  local ____exports = {}
2
- local ____attribute_2Dincrease = require("engine.object-data.entry.ability-type.attribute-increase")
3
- local AttributeBonusAbilityType = ____attribute_2Dincrease.AttributeBonusAbilityType
2
+ local ____attribute_2Dbonus = require("engine.object-data.entry.ability-type.attribute-bonus")
3
+ local AttributeBonusAbilityType = ____attribute_2Dbonus.AttributeBonusAbilityType
4
4
  ---
5
5
  -- @internal For use by internal systems.
6
6
  ____exports.ATTRIBUTE_BONUS_DUMMY_ABILITY_TYPE_ID = compiletime(function()
@@ -0,0 +1,2 @@
1
+ /** @noSelfInFile */
2
+ export {};
@@ -0,0 +1,16 @@
1
+ local ____exports = {}
2
+ local ____health_2Dbonus = require("engine.object-data.entry.ability-type.health-bonus")
3
+ local HealthBonusAbilityType = ____health_2Dbonus.HealthBonusAbilityType
4
+ ---
5
+ -- @internal For use by internal systems only.
6
+ ____exports.HEALTH_BONUS_DUMMY_ABILITY_TYPE_ID = compiletime(function()
7
+ local abilityType = HealthBonusAbilityType:create()
8
+ abilityType.isInternal = true
9
+ abilityType.isButtonVisible = false
10
+ abilityType.healthBonus = 0
11
+ return abilityType.id
12
+ end)
13
+ ---
14
+ -- @internal For use by internal systems only.
15
+ ____exports.HEALTH_BONUS_DUMMY_ABILITY_FIELD = ABILITY_ILF_MAX_LIFE_GAINED
16
+ return ____exports
@@ -0,0 +1,2 @@
1
+ /** @noSelfInFile */
2
+ export {};
@@ -0,0 +1,16 @@
1
+ local ____exports = {}
2
+ local ____mana_2Dbonus = require("engine.object-data.entry.ability-type.mana-bonus")
3
+ local ManaBonusAbilityType = ____mana_2Dbonus.ManaBonusAbilityType
4
+ ---
5
+ -- @internal For use by internal systems only.
6
+ ____exports.MANA_BONUS_DUMMY_ABILITY_TYPE_ID = compiletime(function()
7
+ local abilityType = ManaBonusAbilityType:create()
8
+ abilityType.isInternal = true
9
+ abilityType.isButtonVisible = false
10
+ abilityType.manaBonus = 0
11
+ return abilityType.id
12
+ end)
13
+ ---
14
+ -- @internal For use by internal systems only.
15
+ ____exports.MANA_BONUS_DUMMY_ABILITY_FIELD = ABILITY_ILF_MAX_MANA_GAINED
16
+ return ____exports
@@ -0,0 +1,2 @@
1
+ /** @noSelfInFile */
2
+ export {};
@@ -0,0 +1,16 @@
1
+ local ____exports = {}
2
+ local ____mana_2Dregeneration = require("engine.object-data.entry.ability-type.mana-regeneration")
3
+ local ManaRegenerationAbilityType = ____mana_2Dregeneration.ManaRegenerationAbilityType
4
+ ---
5
+ -- @internal For use by internal systems.
6
+ ____exports.MANA_REGENERATION_RATE_INCREASE_FACTOR_DUMMY_ABILITY_TYPE_ID = compiletime(function()
7
+ local abilityType = ManaRegenerationAbilityType:create()
8
+ abilityType.isInternal = true
9
+ abilityType.isButtonVisible = false
10
+ abilityType.manaRegenerationRateIncreaseFactor = 4
11
+ return abilityType.id
12
+ end)
13
+ ---
14
+ -- @internal For use by internal systems.
15
+ ____exports.MANA_REGENERATION_RATE_INCREASE_FACTOR_ABILITY_FIELD = ABILITY_RLF_MANA_REGENERATION_BONUS_AS_FRACTION_OF_NORMAL
16
+ return ____exports
@@ -150,3 +150,38 @@ declare module "../unit" {
150
150
  };
151
151
  }
152
152
  }
153
+ declare module "../unit" {
154
+ namespace Unit {
155
+ const abilityImpactEvent: DispatchingEvent<[Unit, Ability]>;
156
+ }
157
+ }
158
+ declare module "../unit" {
159
+ namespace Unit {
160
+ const abilityWidgetTargetImpactEvent: DispatchingEvent<[Unit, Ability, Widget]>;
161
+ }
162
+ }
163
+ declare module "../unit" {
164
+ namespace Unit {
165
+ const abilityUnitTargetImpactEvent: DispatchingEvent<[Unit, Ability, Unit]>;
166
+ }
167
+ }
168
+ declare module "../unit" {
169
+ namespace Unit {
170
+ const abilityItemTargetImpactEvent: DispatchingEvent<[Unit, Ability, Item]>;
171
+ }
172
+ }
173
+ declare module "../unit" {
174
+ namespace Unit {
175
+ const abilityDestructibleTargetImpactEvent: DispatchingEvent<[Unit, Ability, Destructable]>;
176
+ }
177
+ }
178
+ declare module "../unit" {
179
+ namespace Unit {
180
+ const abilityPointTargetImpactEvent: DispatchingEvent<[Unit, Ability, number, number]>;
181
+ }
182
+ }
183
+ declare module "../unit" {
184
+ namespace Unit {
185
+ const abilityNoTargetImpactEvent: DispatchingEvent<[Unit, Ability]>;
186
+ }
187
+ }