warscript 0.0.1-dev.32c305a → 0.0.1-dev.352d2b1

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 (93) hide show
  1. package/attributes.d.ts +1 -0
  2. package/attributes.lua +9 -0
  3. package/core/types/frame.lua +24 -21
  4. package/core/types/player.d.ts +15 -0
  5. package/core/types/player.lua +56 -14
  6. package/core/types/playerCamera.d.ts +2 -0
  7. package/core/types/playerCamera.lua +123 -5
  8. package/core/types/tileCell.d.ts +11 -1
  9. package/core/types/tileCell.lua +97 -0
  10. package/core/types/timer.d.ts +3 -1
  11. package/core/types/timer.lua +27 -2
  12. package/decl/native.d.ts +6 -4
  13. package/engine/behavior.d.ts +5 -0
  14. package/engine/behavior.lua +106 -27
  15. package/engine/behaviour/ability/apply-buff.lua +1 -1
  16. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  17. package/engine/behaviour/ability/emulate-impact.lua +2 -1
  18. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  19. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  20. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  21. package/engine/behaviour/ability/restore-mana.lua +6 -6
  22. package/engine/behaviour/ability.lua +7 -16
  23. package/engine/behaviour/unit/stun-immunity.d.ts +7 -3
  24. package/engine/behaviour/unit/stun-immunity.lua +52 -27
  25. package/engine/behaviour/unit.d.ts +19 -2
  26. package/engine/behaviour/unit.lua +83 -7
  27. package/engine/buff.d.ts +12 -5
  28. package/engine/buff.lua +125 -87
  29. package/engine/internal/ability.d.ts +3 -1
  30. package/engine/internal/ability.lua +34 -11
  31. package/engine/internal/item/ability.lua +51 -1
  32. package/engine/internal/item+owner.lua +12 -6
  33. package/engine/internal/item.d.ts +14 -15
  34. package/engine/internal/item.lua +70 -52
  35. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  36. package/engine/internal/misc/frame-coordinates.lua +21 -0
  37. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  38. package/engine/internal/misc/get-terrain-z.lua +11 -0
  39. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  40. package/engine/internal/misc/player-local-handle.lua +5 -0
  41. package/engine/internal/unit/ability.d.ts +35 -5
  42. package/engine/internal/unit/ability.lua +96 -21
  43. package/engine/internal/unit/fly-height.d.ts +7 -0
  44. package/engine/internal/unit/fly-height.lua +20 -0
  45. package/engine/internal/unit/main-selected.lua +12 -27
  46. package/engine/internal/unit/order.d.ts +20 -0
  47. package/engine/internal/unit/order.lua +136 -0
  48. package/engine/internal/unit+ability.lua +10 -1
  49. package/engine/internal/unit-missile-launch.lua +45 -14
  50. package/engine/internal/unit.d.ts +19 -14
  51. package/engine/internal/unit.lua +170 -122
  52. package/engine/local-client.d.ts +2 -0
  53. package/engine/local-client.lua +30 -0
  54. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  55. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  56. package/engine/object-data/entry/ability-type.lua +5 -4
  57. package/engine/object-data/entry/unit-type.d.ts +11 -2
  58. package/engine/object-data/entry/unit-type.lua +59 -1
  59. package/engine/object-field/ability.d.ts +3 -3
  60. package/engine/object-field/ability.lua +7 -6
  61. package/engine/object-field/unit.d.ts +15 -0
  62. package/engine/object-field/unit.lua +47 -0
  63. package/engine/object-field.d.ts +15 -6
  64. package/engine/object-field.lua +219 -124
  65. package/engine/random.d.ts +9 -0
  66. package/engine/random.lua +13 -0
  67. package/engine/standard/fields/unit.d.ts +5 -0
  68. package/engine/standard/fields/unit.lua +9 -0
  69. package/engine/synchronization.d.ts +11 -0
  70. package/engine/synchronization.lua +77 -0
  71. package/engine/text-tag.d.ts +36 -2
  72. package/engine/text-tag.lua +250 -10
  73. package/engine/unit.d.ts +2 -0
  74. package/engine/unit.lua +2 -0
  75. package/net/socket.lua +1 -1
  76. package/objutil/buff.lua +1 -1
  77. package/package.json +2 -2
  78. package/patch-lualib.lua +1 -1
  79. package/utility/arrays.d.ts +1 -0
  80. package/utility/arrays.lua +8 -0
  81. package/utility/callback-array.d.ts +17 -0
  82. package/utility/callback-array.lua +61 -0
  83. package/utility/functions.d.ts +7 -0
  84. package/utility/functions.lua +12 -0
  85. package/utility/linked-set.d.ts +1 -0
  86. package/utility/linked-set.lua +19 -1
  87. package/utility/lua-maps.d.ts +12 -2
  88. package/utility/lua-maps.lua +37 -2
  89. package/utility/lua-sets.d.ts +1 -0
  90. package/utility/lua-sets.lua +4 -0
  91. package/utility/types.d.ts +3 -0
  92. package/core/types/order.d.ts +0 -26
  93. package/core/types/order.lua +0 -65
@@ -232,6 +232,19 @@ ____exports.getOrderIdByAbilityTypeId = function(abilityTypeId)
232
232
  local parentTypeId = availableFields[abilityTypeId]
233
233
  return order2orderId(orders[____type(parentTypeId) == "number" and parentTypeId or abilityTypeId] or "")
234
234
  end
235
+ ---
236
+ -- @internal For use by internal systems only.
237
+ ____exports.abilityTypeHasField = function(abilityTypeId, field)
238
+ field = ____type(field) == "number" and field or getHandleId(field)
239
+ if commonFields[field] then
240
+ return true
241
+ end
242
+ local id = availableFields[abilityTypeId]
243
+ if ____type(id) == "number" then
244
+ id = availableFields[id]
245
+ end
246
+ return not not (id and id[field])
247
+ end
235
248
  ____exports.Ability = __TS__Class()
236
249
  local Ability = ____exports.Ability
237
250
  Ability.name = "Ability"
@@ -247,15 +260,7 @@ function Ability.prototype.getSnapshot(self)
247
260
  return nil
248
261
  end
249
262
  function Ability.prototype.hasField(self, field)
250
- field = ____type(field) == "number" and field or getHandleId(field)
251
- if commonFields[field] then
252
- return true
253
- end
254
- local id = availableFields[self.typeId]
255
- if ____type(id) == "number" then
256
- id = availableFields[id]
257
- end
258
- return not not (id and id[field])
263
+ return ____exports.abilityTypeHasField(self.typeId, field)
259
264
  end
260
265
  function Ability.prototype.getField(self, field, level)
261
266
  local fieldType = match(
@@ -404,16 +409,28 @@ function UnitAbility.prototype.decrementHideCounter(self)
404
409
  unitHideAbility(self.u, self.typeId, false)
405
410
  end
406
411
  function UnitAbility.prototype.incrementDisableCounter(self)
407
- unitDisableAbility(self.u, self.typeId, true, false)
412
+ local unit = self.u
413
+ local typeId = self.typeId
414
+ unitHideAbility(unit, typeId, true)
415
+ unitDisableAbility(unit, typeId, true, false)
408
416
  self.d = (self.d or 0) + 1
409
417
  end
410
418
  function UnitAbility.prototype.decrementDisableCounter(self)
411
- unitDisableAbility(self.u, self.typeId, false, false)
419
+ local unit = self.u
420
+ local typeId = self.typeId
421
+ unitDisableAbility(unit, typeId, false, false)
422
+ unitHideAbility(unit, typeId, true)
412
423
  self.d = (self.d or 0) - 1
413
424
  end
414
425
  function UnitAbility.prototype.interruptCast(self)
415
426
  self.owner:interruptCast(self.typeId)
416
427
  end
428
+ function UnitAbility.prototype.onDestroy(self)
429
+ if self.owner.state ~= 2 then
430
+ self.owner:removeAbility(self.typeId)
431
+ end
432
+ return UnitAbility.____super.prototype.onDestroy(self)
433
+ end
417
434
  __TS__SetDescriptor(
418
435
  UnitAbility.prototype,
419
436
  "isDisabled",
@@ -506,6 +523,12 @@ function ItemAbility.prototype.interruptCast(self)
506
523
  setItemBooleanField(handle, ITEM_BF_ACTIVELY_USED, true)
507
524
  end
508
525
  end
526
+ function ItemAbility.prototype.onDestroy(self)
527
+ if self.owner.state ~= 2 then
528
+ self.owner:removeAbility(self.typeId)
529
+ end
530
+ return ItemAbility.____super.prototype.onDestroy(self)
531
+ end
509
532
  __TS__SetDescriptor(
510
533
  ItemAbility.prototype,
511
534
  "level",
@@ -20,6 +20,7 @@ local ____add_2Ditem_2Dto_2Dslot = require("engine.internal.unit.add-item-to-slo
20
20
  local unitAddItemToSlot = ____add_2Ditem_2Dto_2Dslot.unitAddItemToSlot
21
21
  local isItemOwned = IsItemOwned
22
22
  local isItemPowerup = IsItemPowerup
23
+ local getItemAbility = BlzGetItemAbility
23
24
  local getItemX = GetItemX
24
25
  local getItemY = GetItemY
25
26
  local setAbilityRealLevelField = BlzSetAbilityRealLevelField
@@ -31,6 +32,8 @@ local unitAddItem = UnitAddItem
31
32
  local unitRemoveItem = UnitRemoveItem
32
33
  local unitUseItem = UnitUseItem
33
34
  local unitResetCooldown = UnitResetCooldown
35
+ local unitInventorySize = UnitInventorySize
36
+ local unitItemInSlot = UnitItemInSlot
34
37
  local COOLDOWN_STARTER_ABILITY_TYPE_ID = compiletime(function()
35
38
  if not currentMap then
36
39
  return 0
@@ -65,7 +68,7 @@ ____exports.itemAbilityDummy = assert(CreateUnit(
65
68
  270
66
69
  ))
67
70
  local cooldownStarterItem = UnitAddItemById(____exports.itemAbilityDummy, COOLDOWN_STARTER_ITEM_TYPE_ID)
68
- local cooldownStarterAbility = BlzGetItemAbility(cooldownStarterItem, COOLDOWN_STARTER_ABILITY_TYPE_ID)
71
+ local cooldownStarterAbility = getItemAbility(cooldownStarterItem, COOLDOWN_STARTER_ABILITY_TYPE_ID)
69
72
  ShowUnit(____exports.itemAbilityDummy, false)
70
73
  local function startItemCooldownInternal(handle, cooldown)
71
74
  local cooldownGroup = getItemIntegerField(handle, ITEM_IF_COOLDOWN_GROUP)
@@ -153,4 +156,51 @@ ____exports.doAbilityActionForceDummy = function(handle, owner, action, ...)
153
156
  end
154
157
  return result
155
158
  end
159
+ local depth = 0
160
+ local itemBySlot = {}
161
+ ---
162
+ -- @internal For use by internal systems only.
163
+ ____exports.doUnitAbilityAction = function(unit, abilityTypeId, action, ...)
164
+ local ____depth_0 = depth
165
+ depth = ____depth_0 + 1
166
+ local offset = 6 * ____depth_0
167
+ for slot = 0, unitInventorySize(unit) - 1 do
168
+ local item = unitItemInSlot(unit, slot)
169
+ if getItemAbility(item, abilityTypeId) ~= nil then
170
+ local isAlreadyIgnoredInEvents = ignoreEventsItems[item] ~= nil
171
+ if not isAlreadyIgnoredInEvents then
172
+ ignoreEventsItems[item] = true
173
+ end
174
+ unitRemoveItem(unit, item)
175
+ if not isAlreadyIgnoredInEvents then
176
+ ignoreEventsItems[item] = nil
177
+ end
178
+ itemBySlot[offset + slot] = item
179
+ end
180
+ end
181
+ local result = action(unit, ...)
182
+ for slot = 0, unitInventorySize(unit) - 1 do
183
+ local item = itemBySlot[offset + slot]
184
+ if item ~= nil then
185
+ local isAlreadyIgnoredInEvents = ignoreEventsItems[item] ~= nil
186
+ if not isAlreadyIgnoredInEvents then
187
+ ignoreEventsItems[item] = true
188
+ end
189
+ local isPowerup = isItemPowerup(item)
190
+ if isPowerup then
191
+ setItemBooleanField(item, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, false)
192
+ end
193
+ unitAddItemToSlot(unit, item, slot)
194
+ if isPowerup then
195
+ setItemBooleanField(item, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, true)
196
+ end
197
+ if not isAlreadyIgnoredInEvents then
198
+ ignoreEventsItems[item] = nil
199
+ end
200
+ itemBySlot[offset + slot] = nil
201
+ end
202
+ end
203
+ depth = depth - 1
204
+ return result
205
+ end
156
206
  return ____exports
@@ -6,12 +6,18 @@ local Item = ____item.Item
6
6
  local ____unit = require("engine.internal.unit")
7
7
  local Unit = ____unit.Unit
8
8
  local ownerByItem = setmetatable({}, {__mode = "kv"})
9
- Unit.itemPickedUpEvent:addListener(function(unit, item)
10
- ownerByItem[item] = unit
11
- end)
12
- Unit.itemDroppedEvent:addListener(function(unit, item)
13
- ownerByItem[item] = nil
14
- end)
9
+ Unit.itemPickedUpEvent:addListener(
10
+ 4,
11
+ function(unit, item)
12
+ ownerByItem[item] = unit
13
+ end
14
+ )
15
+ Unit.itemDroppedEvent:addListener(
16
+ 4,
17
+ function(unit, item)
18
+ ownerByItem[item] = nil
19
+ end
20
+ )
15
21
  __TS__ObjectDefineProperty(
16
22
  Item.prototype,
17
23
  "owner",
@@ -8,12 +8,10 @@ import { AbilityTypeId } from "../object-data/entry/ability-type";
8
8
  import type { ItemTypeId } from "../object-data/entry/item-type";
9
9
  type DefenseType = 0 | 1 | 2 | 3 | 4 | 5;
10
10
  declare const enum ItemPropertyKey {
11
- ABILITIES = 100,
12
- LUA_INDEX_BY_ABILITY_TYPE_ID = 101
11
+ ABILITIES = 100
13
12
  }
14
13
  export declare class Item extends Handle<jitem> {
15
14
  private readonly [ItemPropertyKey.ABILITIES];
16
- private readonly [ItemPropertyKey.LUA_INDEX_BY_ABILITY_TYPE_ID];
17
15
  constructor(handle: jitem);
18
16
  protected onDestroy(): HandleDestructor;
19
17
  static create<T extends Item>(this: typeof Item & (new (handle: jitem) => T), id: number, x: number, y: number, skinId?: number): T;
@@ -30,22 +28,22 @@ export declare class Item extends Handle<jitem> {
30
28
  get extendedTooltip(): string;
31
29
  set iconPath(v: string);
32
30
  get iconPath(): string;
33
- set dropOnDeath(v: boolean);
34
- get dropOnDeath(): boolean;
35
- set droppable(v: boolean);
36
- get droppable(): boolean;
37
- set pawnable(v: boolean);
38
- get pawnable(): boolean;
39
- set perishable(v: boolean);
40
- get perishable(): boolean;
41
- set powerup(v: boolean);
42
- get powerup(): boolean;
31
+ set dropsOnDeath(dropsOnDeath: boolean);
32
+ get dropsOnDeath(): boolean;
33
+ set canBeDropped(canBeDropped: boolean);
34
+ get canBeDropped(): boolean;
35
+ set canBeSold(canBeSold: boolean);
36
+ get canBeSold(): boolean;
37
+ set perishes(perishes: boolean);
38
+ get perishes(): boolean;
39
+ set isPowerUp(isPowerUp: boolean);
40
+ get isPowerUp(): boolean;
43
41
  get isAlive(): boolean;
44
42
  get isDead(): boolean;
45
43
  set isInvulnerable(isInvulnerable: boolean);
46
44
  get isInvulnerable(): boolean;
47
- set usable(v: boolean);
48
- get usable(): boolean;
45
+ set isActivelyUsed(isActivelyUsed: boolean);
46
+ get isActivelyUsed(): boolean;
49
47
  set visible(v: boolean);
50
48
  get visible(): boolean;
51
49
  set level(v: number);
@@ -74,6 +72,7 @@ export declare class Item extends Handle<jitem> {
74
72
  set charges(v: number);
75
73
  get charges(): number;
76
74
  consumeCharge(): boolean;
75
+ consumeCharges(count: number): boolean;
77
76
  addAbility(abilityTypeId: AbilityTypeId): ItemAbility | undefined;
78
77
  removeAbility(abilityTypeId: AbilityTypeId): boolean;
79
78
  hasAbility(abilityTypeId: AbilityTypeId): boolean;
@@ -46,9 +46,18 @@ local getItemY = GetItemY
46
46
  local getItemCharges = GetItemCharges
47
47
  local setItemCharges = SetItemCharges
48
48
  local unitRemoveAbility = UnitRemoveAbility
49
+ local unitRemoveItem = UnitRemoveItem
49
50
  local unitUseItem = UnitUseItem
50
51
  local unitUseItemPoint = UnitUseItemPoint
51
52
  local unitUseItemTarget = UnitUseItemTarget
53
+ local setItemDropOnDeath = SetItemDropOnDeath
54
+ local setItemDroppable = SetItemDroppable
55
+ local setItemPawnable = SetItemPawnable
56
+ local isItemPawnable = IsItemPawnable
57
+ local getItemIntegerField = BlzGetItemIntegerField
58
+ local setItemBooleanField = BlzSetItemBooleanField
59
+ local getItemBooleanField = BlzGetItemBooleanField
60
+ local tableRemove = table.remove
52
61
  _G.SetItemCharges = function(whichItem, charges)
53
62
  setItemCharges(whichItem, charges)
54
63
  invoke(
@@ -56,9 +65,6 @@ _G.SetItemCharges = function(whichItem, charges)
56
65
  ____exports.Item:of(whichItem)
57
66
  )
58
67
  end
59
- local getItemIntegerField = BlzGetItemIntegerField
60
- local setItemBooleanField = BlzSetItemBooleanField
61
- local getItemBooleanField = BlzGetItemBooleanField
62
68
  invoke = Event.invoke
63
69
  local enumRect = Rect:create(0, 0, 0, 0).handle
64
70
  ---
@@ -137,15 +143,13 @@ Item.name = "Item"
137
143
  __TS__ClassExtends(Item, Handle)
138
144
  function Item.prototype.____constructor(self, handle)
139
145
  Handle.prototype.____constructor(self, handle)
140
- local abilities = doAbilityAction(handle, getItemAbilities, self)
141
- self[100] = abilities
142
- local luaIndexByAbilityTypeId = {}
143
- for i = 1, #abilities do
144
- luaIndexByAbilityTypeId[abilities[i].typeId] = i
145
- end
146
- self[101] = luaIndexByAbilityTypeId
146
+ self[100] = doAbilityAction(handle, getItemAbilities, self)
147
147
  end
148
148
  function Item.prototype.onDestroy(self)
149
+ local owner = self.owner
150
+ if owner ~= nil then
151
+ unitRemoveItem(owner.handle, self.handle)
152
+ end
149
153
  local abilities = self[100]
150
154
  for i = 1, #abilities do
151
155
  abilities[i]:destroy()
@@ -157,14 +161,17 @@ function Item.create(self, id, x, y, skinId)
157
161
  return self:of(BlzCreateItemWithSkin(id, x, y, skinId or id))
158
162
  end
159
163
  function Item.prototype.consumeCharge(self)
164
+ return self:consumeCharges(1)
165
+ end
166
+ function Item.prototype.consumeCharges(self, count)
160
167
  local handle = self.handle
161
168
  local charges = getItemCharges(handle)
162
- if charges >= 2 then
163
- setItemCharges(handle, charges - 1)
169
+ if charges > count then
170
+ setItemCharges(handle, charges - count)
164
171
  invoke(itemChargesChangeEvent, self)
165
172
  return true
166
173
  end
167
- if charges == 1 then
174
+ if charges == count then
168
175
  if getItemBooleanField(handle, ITEM_BF_PERISHABLE) then
169
176
  self:destroy()
170
177
  return true
@@ -174,6 +181,7 @@ function Item.prototype.consumeCharge(self)
174
181
  invoke(itemChargesChangeEvent, self)
175
182
  return true
176
183
  end
184
+ setItemCharges(handle, 1)
177
185
  local ____doAbilityActionForceDummy_2 = doAbilityActionForceDummy
178
186
  local ____opt_0 = self.owner
179
187
  ____doAbilityActionForceDummy_2(handle, ____opt_0 and ____opt_0.handle, consumeCharge)
@@ -187,33 +195,32 @@ function Item.prototype.addAbility(self, abilityTypeId)
187
195
  if nativeAbility ~= nil then
188
196
  local ability = ItemAbility:of(nativeAbility, abilityTypeId, self)
189
197
  local abilities = self[100]
190
- local luaIndex = #abilities + 1
191
- abilities[luaIndex] = ability
192
- self[101][abilityTypeId] = luaIndex
198
+ abilities[#abilities + 1] = ability
193
199
  return ability
194
200
  end
195
201
  return nil
196
202
  end
197
203
  function Item.prototype.removeAbility(self, abilityTypeId)
198
- local luaIndexByAbilityTypeId = self[101]
199
- local luaIndex = luaIndexByAbilityTypeId[abilityTypeId]
200
- if luaIndex ~= nil and doAbilityAction(self.handle, itemRemoveAbility, abilityTypeId) then
201
- luaIndexByAbilityTypeId[abilityTypeId] = nil
202
- local abilities = self[100]
203
- abilities[luaIndex]:destroy()
204
- local abilityTypeIdsLength = #abilities
205
- for j = luaIndex, abilityTypeIdsLength do
206
- abilities[j] = abilities[j + 1]
204
+ local abilities = self[100]
205
+ for i = 1, #abilities do
206
+ if abilities[i].typeId == abilityTypeId then
207
+ local ability = abilities[i]
208
+ tableRemove(abilities, i)
209
+ ability:destroy()
210
+ return true
207
211
  end
208
212
  end
209
- return false
213
+ return doAbilityAction(self.handle, itemRemoveAbility, abilityTypeId)
210
214
  end
211
215
  function Item.prototype.hasAbility(self, abilityTypeId)
212
- return self[101][abilityTypeId] ~= nil
216
+ return doAbilityAction(self.handle, getItemAbility, abilityTypeId) ~= nil
213
217
  end
214
218
  function Item.prototype.getAbility(self, abilityTypeId)
215
- local ability = self[101][abilityTypeId] ~= nil and doAbilityAction(self.handle, getItemAbility, abilityTypeId)
216
- return ability and ItemAbility:of(ability, abilityTypeId, self) or nil
219
+ return ItemAbility:of(
220
+ doAbilityAction(self.handle, getItemAbility, abilityTypeId),
221
+ abilityTypeId,
222
+ self
223
+ )
217
224
  end
218
225
  function Item.getInRange(self, x, y, range)
219
226
  targetCollection = {}
@@ -325,65 +332,68 @@ __TS__SetDescriptor(
325
332
  )
326
333
  __TS__SetDescriptor(
327
334
  Item.prototype,
328
- "dropOnDeath",
335
+ "dropsOnDeath",
329
336
  {
330
337
  get = function(self)
331
- return BlzGetItemBooleanField(self.handle, ITEM_BF_DROPPED_WHEN_CARRIER_DIES)
338
+ return getItemBooleanField(self.handle, ITEM_BF_DROPPED_WHEN_CARRIER_DIES)
332
339
  end,
333
- set = function(self, v)
334
- SetItemDropOnDeath(self.handle, v)
340
+ set = function(self, dropsOnDeath)
341
+ setItemDropOnDeath(self.handle, dropsOnDeath)
335
342
  end
336
343
  },
337
344
  true
338
345
  )
339
346
  __TS__SetDescriptor(
340
347
  Item.prototype,
341
- "droppable",
348
+ "canBeDropped",
342
349
  {
343
350
  get = function(self)
344
- return BlzGetItemBooleanField(self.handle, ITEM_BF_CAN_BE_DROPPED)
351
+ return getItemBooleanField(self.handle, ITEM_BF_CAN_BE_DROPPED)
345
352
  end,
346
- set = function(self, v)
347
- SetItemDroppable(self.handle, v)
353
+ set = function(self, canBeDropped)
354
+ setItemDroppable(self.handle, canBeDropped)
348
355
  end
349
356
  },
350
357
  true
351
358
  )
352
359
  __TS__SetDescriptor(
353
360
  Item.prototype,
354
- "pawnable",
361
+ "canBeSold",
355
362
  {
356
363
  get = function(self)
357
- return IsItemPawnable(self.handle)
364
+ return isItemPawnable(self.handle)
358
365
  end,
359
- set = function(self, v)
360
- SetItemPawnable(self.handle, v)
366
+ set = function(self, canBeSold)
367
+ setItemPawnable(self.handle, canBeSold)
361
368
  end
362
369
  },
363
370
  true
364
371
  )
365
372
  __TS__SetDescriptor(
366
373
  Item.prototype,
367
- "perishable",
374
+ "perishes",
368
375
  {
369
376
  get = function(self)
370
377
  return getItemBooleanField(self.handle, ITEM_BF_PERISHABLE)
371
378
  end,
372
- set = function(self, v)
373
- BlzSetItemBooleanField(self.handle, ITEM_BF_PERISHABLE, v)
379
+ set = function(self, perishes)
380
+ local handle = self.handle
381
+ local powerUp = isItemPowerup(handle)
382
+ setItemBooleanField(handle, ITEM_BF_PERISHABLE, perishes)
383
+ setItemBooleanField(handle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, powerUp)
374
384
  end
375
385
  },
376
386
  true
377
387
  )
378
388
  __TS__SetDescriptor(
379
389
  Item.prototype,
380
- "powerup",
390
+ "isPowerUp",
381
391
  {
382
392
  get = function(self)
383
393
  return isItemPowerup(self.handle)
384
394
  end,
385
- set = function(self, v)
386
- setItemBooleanField(self.handle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, v)
395
+ set = function(self, isPowerUp)
396
+ setItemBooleanField(self.handle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, isPowerUp)
387
397
  end
388
398
  },
389
399
  true
@@ -419,16 +429,24 @@ __TS__SetDescriptor(
419
429
  )
420
430
  __TS__SetDescriptor(
421
431
  Item.prototype,
422
- "usable",
432
+ "isActivelyUsed",
423
433
  {
424
434
  get = function(self)
425
435
  return getItemBooleanField(self.handle, ITEM_BF_ACTIVELY_USED)
426
436
  end,
427
- set = function(self, v)
437
+ set = function(self, isActivelyUsed)
428
438
  local handle = self.handle
429
- local powerup = isItemPowerup(handle)
430
- setItemBooleanField(handle, ITEM_BF_ACTIVELY_USED, v)
431
- setItemBooleanField(handle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, powerup)
439
+ local powerUp = isItemPowerup(handle)
440
+ local perishes = getItemBooleanField(handle, ITEM_BF_PERISHABLE)
441
+ local dropsOnDeath = getItemBooleanField(handle, ITEM_BF_DROPPED_WHEN_CARRIER_DIES)
442
+ local canBeDropped = getItemBooleanField(handle, ITEM_BF_CAN_BE_DROPPED)
443
+ local canBeSold = isItemPawnable(handle)
444
+ setItemBooleanField(handle, ITEM_BF_ACTIVELY_USED, isActivelyUsed)
445
+ setItemPawnable(handle, canBeSold)
446
+ setItemDroppable(handle, canBeDropped)
447
+ setItemDropOnDeath(handle, dropsOnDeath)
448
+ setItemBooleanField(handle, ITEM_BF_PERISHABLE, perishes)
449
+ setItemBooleanField(handle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, powerUp)
432
450
  end
433
451
  },
434
452
  true
@@ -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
@@ -131,11 +131,6 @@ declare module "../unit" {
131
131
  const abilityNoTargetChannelingStartEvent: DispatchingEvent<[Unit, Ability]>;
132
132
  }
133
133
  }
134
- declare module "../unit" {
135
- namespace Unit {
136
- const abilityImpactEvent: DispatchingEvent<[Unit, Ability]>;
137
- }
138
- }
139
134
  declare module "../unit" {
140
135
  namespace Unit {
141
136
  const abilityChannelingFinishEvent: DispatchingEvent<[Unit, Ability]>;
@@ -155,3 +150,38 @@ declare module "../unit" {
155
150
  };
156
151
  }
157
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
+ }