warscript 0.0.1-dev.f566ce7 → 0.0.1-dev.f594e71

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 (185) hide show
  1. package/core/types/frame.d.ts +1 -0
  2. package/core/types/frame.lua +65 -36
  3. package/core/types/handle.lua +9 -9
  4. package/core/types/player.d.ts +2 -1
  5. package/core/types/player.lua +18 -13
  6. package/core/types/playerColor.lua +4 -3
  7. package/core/types/sound.d.ts +1 -1
  8. package/core/types/sound.lua +13 -8
  9. package/core/types/unit.d.ts +4 -0
  10. package/core/types/unit.lua +4 -0
  11. package/decl/native.d.ts +705 -7
  12. package/engine/behaviour/ability/damage.lua +11 -14
  13. package/engine/behaviour/ability.d.ts +1 -0
  14. package/engine/behaviour/ability.lua +11 -0
  15. package/engine/behaviour/unit.d.ts +1 -0
  16. package/engine/behaviour/unit.lua +1 -0
  17. package/engine/buff.d.ts +12 -10
  18. package/engine/buff.lua +64 -16
  19. package/engine/index.d.ts +2 -1
  20. package/engine/internal/ability.d.ts +4 -0
  21. package/engine/internal/ability.lua +37 -18
  22. package/engine/internal/item+owner.d.ts +1 -0
  23. package/engine/internal/item+owner.lua +7 -0
  24. package/engine/internal/item.d.ts +16 -1
  25. package/engine/internal/item.lua +130 -20
  26. package/engine/internal/unit/ability.lua +15 -3
  27. package/engine/internal/unit/appearance.d.ts +15 -0
  28. package/engine/internal/unit/appearance.lua +85 -0
  29. package/engine/internal/unit/bag.d.ts +18 -0
  30. package/engine/internal/unit/bag.lua +63 -0
  31. package/engine/internal/unit/buff.d.ts +2 -2
  32. package/engine/internal/unit/buff.lua +34 -19
  33. package/engine/internal/unit/equipment.d.ts +36 -0
  34. package/engine/internal/unit/equipment.lua +169 -0
  35. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +3 -3
  36. package/engine/internal/unit/{item.lua → inventory.lua} +25 -26
  37. package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
  38. package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
  39. package/engine/internal/unit+damage.d.ts +9 -0
  40. package/engine/internal/unit+damage.lua +33 -0
  41. package/engine/internal/unit-missile-data.lua +58 -32
  42. package/engine/internal/unit.d.ts +0 -1
  43. package/engine/internal/unit.lua +2 -7
  44. package/engine/local-client.d.ts +20 -0
  45. package/engine/local-client.lua +284 -53
  46. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  47. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  48. package/engine/object-data/auxiliary/equipment-type.d.ts +13 -0
  49. package/engine/object-data/auxiliary/equipment-type.lua +2 -0
  50. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  51. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  52. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  53. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  54. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  55. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  56. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  57. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  58. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  59. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  60. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  61. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  62. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  63. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
  64. package/engine/object-data/entry/ability-type/blank-configurable.lua +30 -0
  65. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  66. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  67. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  68. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  69. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  70. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  71. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  72. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  73. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  74. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  75. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  76. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  77. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  78. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  79. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  80. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  81. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  82. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  83. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  84. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  85. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  86. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  87. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  88. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  89. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  90. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  91. package/engine/object-data/entry/ability-type/healing-modifier.d.ts +9 -0
  92. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  93. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  94. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  95. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  96. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  97. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  98. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  99. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  100. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  101. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  102. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  103. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  104. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  105. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  106. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  107. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  108. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  109. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  110. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  111. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  112. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  113. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  114. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  115. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  116. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  117. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  118. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  119. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  120. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  121. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  122. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  123. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  124. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  125. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  126. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  127. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  128. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  129. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  130. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  131. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  132. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  133. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  134. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  135. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  136. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  137. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  138. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  139. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  140. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  141. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  142. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  143. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  144. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  145. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  146. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  147. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  148. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  149. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  150. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  151. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  152. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  153. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  154. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  155. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  156. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  157. package/engine/object-data/entry/ability-type.d.ts +10 -3
  158. package/engine/object-data/entry/ability-type.lua +53 -0
  159. package/engine/object-data/entry/buff-type.d.ts +6 -2
  160. package/engine/object-data/entry/buff-type.lua +26 -0
  161. package/engine/object-data/entry/destructible-type.d.ts +6 -2
  162. package/engine/object-data/entry/destructible-type.lua +26 -0
  163. package/engine/object-data/entry/item-type.d.ts +12 -3
  164. package/engine/object-data/entry/item-type.lua +52 -0
  165. package/engine/object-data/entry/lightning-type.d.ts +2 -2
  166. package/engine/object-data/entry/sound-preset.d.ts +2 -2
  167. package/engine/object-data/entry/unit-type.d.ts +47 -2
  168. package/engine/object-data/entry/unit-type.lua +383 -49
  169. package/engine/object-data/entry/upgrade.d.ts +2 -2
  170. package/engine/object-data/entry.d.ts +4 -1
  171. package/engine/standard/entries/ability-type.d.ts +3102 -7
  172. package/engine/standard/entries/ability-type.lua +0 -6
  173. package/engine/standard/entries/item-type.d.ts +1299 -0
  174. package/engine/standard/entries/item-type.lua +2 -0
  175. package/engine/standard/entries/unit-type.d.ts +5 -0
  176. package/engine/standard/entries/unit-type.lua +5 -0
  177. package/engine/unit.d.ts +4 -1
  178. package/engine/unit.lua +4 -1
  179. package/event.d.ts +1 -1
  180. package/network.lua +25 -1
  181. package/operation.d.ts +8 -1
  182. package/operation.lua +37 -14
  183. package/package.json +2 -22
  184. package/utility/random.d.ts +102 -0
  185. package/utility/random.lua +273 -0
@@ -0,0 +1,169 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__Class = ____lualib.__TS__Class
3
+ local __TS__New = ____lualib.__TS__New
4
+ local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
5
+ local ____exports = {}
6
+ local ____unit = require("engine.internal.unit")
7
+ local Unit = ____unit.Unit
8
+ local UnitTriggerEvent = ____unit.UnitTriggerEvent
9
+ local ____item = require("engine.internal.item")
10
+ local Item = ____item.Item
11
+ local ____event = require("event")
12
+ local IgnoreEvent = ____event.IgnoreEvent
13
+ local ____dummy = require("objutil.dummy")
14
+ local dummyUnitId = ____dummy.dummyUnitId
15
+ local ____ignore_2Devents_2Ditems = require("engine.internal.unit.ignore-events-items")
16
+ local ignoreEventsItems = ____ignore_2Devents_2Ditems.ignoreEventsItems
17
+ local convertEquipmentType = ConvertEquipmentType
18
+ local convertLoadoutSlot = ConvertLoadoutSlot
19
+ local getEquippedItem = GetEquippedItem
20
+ local getStackingItemSource = BlzGetStackingItemSource
21
+ local getStackingItemTarget = BlzGetStackingItemTarget
22
+ local getStackingItemTargetPreviousCharges = BlzGetStackingItemTargetPreviousCharges
23
+ local getTriggerUnit = GetTriggerUnit
24
+ local getUnequippedItem = GetUnequippedItem
25
+ local getUnitTypeId = GetUnitTypeId
26
+ local unitCanEquipItemOfEquipmentType = UnitCanEquipItemOfEquipmentType
27
+ local unitEquipItem = UnitEquipItem
28
+ local unitHasAnyItemEquiped = UnitHasAnyItemEquiped
29
+ local unitHasItemEquipmentOfType = UnitHasItemEquipmentOfType
30
+ local unitHasItemEquipped = UnitHasItemEquipped
31
+ local unitHasLoadoutSlotEmpty = UnitHasLoadoutSlotEmpty
32
+ local unitItemInEquipmentSlot = UnitItemInEquipmentSlot
33
+ local unitUnequipItem = UnitUnequipItem
34
+ local unitUnequipItemFromSlot = UnitUnequipItemFromSlot
35
+ local ____rawget = _G.rawget
36
+ local rawset = _G.rawset
37
+ local ____type = _G.type
38
+ local EQUIPMENT_SLOT_COUNT = bj_MAX_EQUIPMENT_INVENTORY
39
+ local handleByUnitEquipment = setmetatable({}, {__mode = "k"})
40
+ local function unitEquipmentNext(handle, slot)
41
+ if slot >= EQUIPMENT_SLOT_COUNT then
42
+ return nil, nil
43
+ end
44
+ return slot + 1, Item:of(unitItemInEquipmentSlot(
45
+ handle,
46
+ convertLoadoutSlot(slot)
47
+ ))
48
+ end
49
+ --- A live view indexed by EquipmentSlot. Equip operations let the engine choose the slot.
50
+ ____exports.UnitEquipment = __TS__Class()
51
+ local UnitEquipment = ____exports.UnitEquipment
52
+ UnitEquipment.name = "UnitEquipment"
53
+ function UnitEquipment.prototype.____constructor(self, handle)
54
+ handleByUnitEquipment[self] = handle
55
+ end
56
+ function UnitEquipment.prototype.equip(self, item)
57
+ return unitEquipItem(handleByUnitEquipment[self], item.handle)
58
+ end
59
+ function UnitEquipment.prototype.unequip(self, item)
60
+ unitUnequipItem(handleByUnitEquipment[self], item.handle)
61
+ end
62
+ function UnitEquipment.prototype.unequipSlot(self, slot)
63
+ return Item:of(unitUnequipItemFromSlot(
64
+ handleByUnitEquipment[self],
65
+ convertLoadoutSlot(slot)
66
+ ))
67
+ end
68
+ function UnitEquipment.prototype.has(self, item)
69
+ return unitHasItemEquipped(handleByUnitEquipment[self], item.handle)
70
+ end
71
+ function UnitEquipment.prototype.hasAny(self)
72
+ return unitHasAnyItemEquiped(handleByUnitEquipment[self])
73
+ end
74
+ function UnitEquipment.prototype.isSlotEmpty(self, slot)
75
+ return unitHasLoadoutSlotEmpty(
76
+ handleByUnitEquipment[self],
77
+ convertLoadoutSlot(slot)
78
+ )
79
+ end
80
+ function UnitEquipment.prototype.hasType(self, ____type)
81
+ return unitHasItemEquipmentOfType(
82
+ handleByUnitEquipment[self],
83
+ convertEquipmentType(____type)
84
+ )
85
+ end
86
+ function UnitEquipment.prototype.canEquipType(self, ____type)
87
+ return unitCanEquipItemOfEquipmentType(
88
+ handleByUnitEquipment[self],
89
+ convertEquipmentType(____type)
90
+ )
91
+ end
92
+ function UnitEquipment.prototype.findSlot(self, item)
93
+ local handle = handleByUnitEquipment[self]
94
+ for slot = 0, EQUIPMENT_SLOT_COUNT - 1 do
95
+ if unitItemInEquipmentSlot(
96
+ handle,
97
+ convertLoadoutSlot(slot)
98
+ ) == item.handle then
99
+ return slot
100
+ end
101
+ end
102
+ return nil
103
+ end
104
+ function UnitEquipment.prototype.__index(self, key)
105
+ if ____type(key) == "number" then
106
+ return Item:of(unitItemInEquipmentSlot(
107
+ handleByUnitEquipment[self],
108
+ convertLoadoutSlot(key - 1)
109
+ ))
110
+ end
111
+ return ____rawget(____exports.UnitEquipment.prototype, key)
112
+ end
113
+ function UnitEquipment.prototype.__len(self)
114
+ return EQUIPMENT_SLOT_COUNT
115
+ end
116
+ function UnitEquipment.prototype.__ipairs(self)
117
+ return unitEquipmentNext, handleByUnitEquipment[self], 0
118
+ end
119
+ __TS__ObjectDefineProperty(
120
+ Unit.prototype,
121
+ "equipment",
122
+ {get = function(self)
123
+ local equipment = __TS__New(____exports.UnitEquipment, self.handle)
124
+ rawset(self, "equipment", equipment)
125
+ return equipment
126
+ end}
127
+ )
128
+ rawset(
129
+ Unit,
130
+ "itemEquippedEvent",
131
+ __TS__New(
132
+ UnitTriggerEvent,
133
+ EVENT_PLAYER_UNIT_EQUIP_ITEM,
134
+ function()
135
+ local unit = getTriggerUnit()
136
+ local item = getEquippedItem()
137
+ if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
138
+ return Unit:of(unit), Item:of(item)
139
+ end
140
+ return IgnoreEvent
141
+ end
142
+ )
143
+ )
144
+ rawset(
145
+ Unit,
146
+ "itemUnequippedEvent",
147
+ __TS__New(
148
+ UnitTriggerEvent,
149
+ EVENT_PLAYER_UNIT_UNEQUIP_ITEM,
150
+ function()
151
+ local unit = getTriggerUnit()
152
+ local item = getUnequippedItem()
153
+ if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
154
+ return Unit:of(unit), Item:of(item)
155
+ end
156
+ return IgnoreEvent
157
+ end
158
+ )
159
+ )
160
+ rawset(
161
+ Unit,
162
+ "itemStackedEvent",
163
+ __TS__New(
164
+ UnitTriggerEvent,
165
+ EVENT_PLAYER_UNIT_STACK_ITEM,
166
+ function() return Unit:of(getTriggerUnit()), Item:of(getStackingItemTarget()), Item:of(getStackingItemSource()), getStackingItemTargetPreviousCharges() end
167
+ )
168
+ )
169
+ return ____exports
@@ -1,6 +1,6 @@
1
1
  /** @noSelfInFile */
2
2
  import { Item } from "../item";
3
- export interface UnitItems extends ReadonlyArray<Item | undefined> {
3
+ export interface UnitInventory extends ReadonlyArray<Item | undefined> {
4
4
  readonly length: 0 | 1 | 2 | 3 | 4 | 5 | 6;
5
5
  [0]: Item | undefined;
6
6
  [1]: Item | undefined;
@@ -9,7 +9,7 @@ export interface UnitItems extends ReadonlyArray<Item | undefined> {
9
9
  [4]: Item | undefined;
10
10
  [5]: Item | undefined;
11
11
  }
12
- export declare class UnitItems {
12
+ export declare class UnitInventory {
13
13
  constructor(handle: junit);
14
14
  findSlot(item: Item): 0 | 1 | 2 | 3 | 4 | 5 | undefined;
15
15
  protected __newindex(slot: number, item: Item | undefined): void;
@@ -19,6 +19,6 @@ export declare class UnitItems {
19
19
  }
20
20
  declare module "../unit" {
21
21
  interface Unit {
22
- readonly items: UnitItems;
22
+ readonly inventory: UnitInventory;
23
23
  }
24
24
  }
@@ -18,25 +18,24 @@ local setItemBooleanField = BlzSetItemBooleanField
18
18
  local unitInventorySize = UnitInventorySize
19
19
  local unitItemInSlot = UnitItemInSlot
20
20
  local unitRemoveItemFromSlot = UnitRemoveItemFromSlot
21
- local handleByUnitItems = setmetatable({}, {__mode = "k"})
22
- local function unitItemsNext(handle, index)
23
- local slot = index & 7
24
- if index >> 3 == slot then
21
+ local handleByUnitInventory = setmetatable({}, {__mode = "k"})
22
+ local function unitInventoryNext(handle, slot)
23
+ if slot >= unitInventorySize(handle) then
25
24
  return nil, nil
26
25
  end
27
- return index + 1, Item:of(unitItemInSlot(handle, slot))
26
+ return slot + 1, Item:of(unitItemInSlot(handle, slot))
28
27
  end
29
- ____exports.UnitItems = __TS__Class()
30
- local UnitItems = ____exports.UnitItems
31
- UnitItems.name = "UnitItems"
32
- function UnitItems.prototype.____constructor(self, handle)
33
- handleByUnitItems[self] = handle
28
+ ____exports.UnitInventory = __TS__Class()
29
+ local UnitInventory = ____exports.UnitInventory
30
+ UnitInventory.name = "UnitInventory"
31
+ function UnitInventory.prototype.____constructor(self, handle)
32
+ handleByUnitInventory[self] = handle
34
33
  end
35
- function UnitItems.prototype.findSlot(self, item)
36
- return findUnitItemSlot(handleByUnitItems[self], item.handle)
34
+ function UnitInventory.prototype.findSlot(self, item)
35
+ return findUnitItemSlot(handleByUnitInventory[self], item.handle)
37
36
  end
38
- function UnitItems.prototype.__newindex(self, slot, item)
39
- local handle = handleByUnitItems[self]
37
+ function UnitInventory.prototype.__newindex(self, slot, item)
38
+ local handle = handleByUnitInventory[self]
40
39
  if slot < 1 or slot > unitInventorySize(handle) then
41
40
  return
42
41
  end
@@ -53,26 +52,26 @@ function UnitItems.prototype.__newindex(self, slot, item)
53
52
  end
54
53
  end
55
54
  end
56
- function UnitItems.prototype.__index(self, key)
55
+ function UnitInventory.prototype.__index(self, key)
57
56
  if ____type(key) == "number" then
58
- return Item:of(unitItemInSlot(handleByUnitItems[self], key - 1))
57
+ return Item:of(unitItemInSlot(handleByUnitInventory[self], key - 1))
59
58
  end
60
- return rawget(____exports.UnitItems.prototype, key)
59
+ return rawget(____exports.UnitInventory.prototype, key)
61
60
  end
62
- function UnitItems.prototype.__len(self)
63
- return unitInventorySize(handleByUnitItems[self])
61
+ function UnitInventory.prototype.__len(self)
62
+ return unitInventorySize(handleByUnitInventory[self])
64
63
  end
65
- function UnitItems.prototype.__ipairs(self)
66
- local handle = handleByUnitItems[self]
67
- return unitItemsNext, handle, unitInventorySize(handle) << 3
64
+ function UnitInventory.prototype.__ipairs(self)
65
+ local handle = handleByUnitInventory[self]
66
+ return unitInventoryNext, handle, 0
68
67
  end
69
68
  __TS__ObjectDefineProperty(
70
69
  Unit.prototype,
71
- "items",
70
+ "inventory",
72
71
  {get = function(self)
73
- local items = __TS__New(____exports.UnitItems, self.handle)
74
- rawset(self, "items", items)
75
- return items
72
+ local inventory = __TS__New(____exports.UnitInventory, self.handle)
73
+ rawset(self, "inventory", inventory)
74
+ return inventory
76
75
  end}
77
76
  )
78
77
  return ____exports
@@ -0,0 +1,2 @@
1
+ /** @noSelfInFile */
2
+ export {};
@@ -0,0 +1,11 @@
1
+ local ____exports = {}
2
+ ---
3
+ -- @internal For use by internal systems only.
4
+ ____exports.compiletimePseudoPassiveAbilityTypeIds = {}
5
+ ---
6
+ -- @internal For use by internal systems only.
7
+ ____exports.pseudoPassiveAbilityTypeIds = postcompile(function() return ____exports.compiletimePseudoPassiveAbilityTypeIds end)
8
+ ---
9
+ -- @internal For use by internal systems only.
10
+ ____exports.pseudoPassiveAbilityOrderTypeStringId = "channel"
11
+ return ____exports
@@ -1,6 +1,8 @@
1
1
  /** @noSelfInFile */
2
+ import "./unit/allowed-targets";
2
3
  import { Widget } from "../../core/types/widget";
3
4
  import { AttackType } from "../object-data/auxiliary/attack-type";
5
+ import { CombatClassifications } from "../object-data/auxiliary/combat-classification";
4
6
  export type DamageType = jdamagetype;
5
7
  export declare namespace DamageType {
6
8
  const UNKNOWN: jdamagetype;
@@ -56,5 +58,12 @@ export declare namespace WeaponType {
56
58
  declare module "./unit" {
57
59
  interface Unit {
58
60
  damageTarget(target: Widget, amount: number, attack?: boolean, ranged?: boolean, attackType?: AttackType, damageType?: DamageType, weaponType?: WeaponType, metadata?: unknown): boolean;
61
+ /**
62
+ * Deals amount to each allowed unit in collision range of (x, y).
63
+ * A positive maximumDamage caps the total requested damage, shared equally
64
+ * between the targets. Zero or omitted means unlimited; damage mitigation
65
+ * and damage-event modifiers are applied afterward by damageTarget.
66
+ */
67
+ damageArea(x: number, y: number, range: number, allowedTargetCombatClassifications: CombatClassifications, amount: number, maximumDamage?: number, attack?: boolean, ranged?: boolean, attackType?: AttackType, damageType?: DamageType, weaponType?: WeaponType, metadata?: unknown): void;
59
68
  }
60
69
  }
@@ -3,6 +3,7 @@ local __TS__InstanceOf = ____lualib.__TS__InstanceOf
3
3
  local ____exports = {}
4
4
  local ____unit = require("engine.internal.unit")
5
5
  local Unit = ____unit.Unit
6
+ require("engine.internal.unit.allowed-targets")
6
7
  local ____player = require("core.types.player")
7
8
  local Player = ____player.Player
8
9
  local ____dummy = require("objutil.dummy")
@@ -11,6 +12,8 @@ local ____attack_2Dtype = require("engine.object-data.auxiliary.attack-type")
11
12
  local attackTypeToNative = ____attack_2Dtype.attackTypeToNative
12
13
  local ____damage_2Dmetadata_2Dby_2Dtarget = require("engine.internal.misc.damage-metadata-by-target")
13
14
  local damageMetadataByTarget = ____damage_2Dmetadata_2Dby_2Dtarget.damageMetadataByTarget
15
+ local ____math = require("math")
16
+ local min = ____math.min
14
17
  local createUnit = CreateUnit
15
18
  local getOwningPlayer = GetOwningPlayer
16
19
  local showUnit = ShowUnit
@@ -116,4 +119,34 @@ Unit.prototype.damageTarget = function(self, target, amount, attack, ranged, att
116
119
  weaponType
117
120
  )
118
121
  end
122
+ Unit.prototype.damageArea = function(self, x, y, range, allowedTargetCombatClassifications, amount, maximumDamage, attack, ranged, attackType, damageType, weaponType, metadata)
123
+ if maximumDamage == nil then
124
+ maximumDamage = 0
125
+ end
126
+ local targets = Unit.getAllowedTargetsInCollisionRange(
127
+ self,
128
+ allowedTargetCombatClassifications,
129
+ x,
130
+ y,
131
+ range
132
+ )
133
+ if #targets == 0 then
134
+ return
135
+ end
136
+ if maximumDamage > 0 then
137
+ amount = min(amount, maximumDamage / #targets)
138
+ end
139
+ for ____, target in ipairs(targets) do
140
+ self:damageTarget(
141
+ target,
142
+ amount,
143
+ attack,
144
+ ranged,
145
+ attackType,
146
+ damageType,
147
+ weaponType,
148
+ metadata
149
+ )
150
+ end
151
+ end
119
152
  return ____exports
@@ -44,58 +44,84 @@ ____exports.MISSILE_DATA_BY_UNIT_TYPE_ID = (function()
44
44
  UnitType:getAll(),
45
45
  function(unitType) return unitType.id end,
46
46
  function(unitType)
47
- local ____ = unitType.missileImpactOffsetZSD
48
- local ____ = unitType.missileImpactOffsetZHD
49
47
  return {
50
48
  [0] = unitType.missileImpactOffsetZSD ~= ____exports.DEFAULT_MISSILE_IMPACT_OFFSET_Z and unitType.missileImpactOffsetZSD or nil,
51
49
  [1] = unitType.missileImpactOffsetZHD ~= unitType.missileImpactOffsetZSD and unitType.missileImpactOffsetZHD or nil,
52
- [2] = unitType.missileLaunchOffsetX ~= ____exports.DEFAULT_MISSILE_LAUNCH_OFFSET_X and unitType.missileLaunchOffsetX or nil,
53
- [3] = unitType.missileLaunchOffsetY ~= ____exports.DEFAULT_MISSILE_LAUNCH_OFFSET_Y and unitType.missileLaunchOffsetY or nil,
54
- [4] = unitType.missileLaunchOffsetZSD ~= ____exports.DEFAULT_MISSILE_LAUNCH_OFFSET_Z and unitType.missileLaunchOffsetZSD or nil,
55
- [5] = unitType.missileLaunchOffsetZHD ~= unitType.missileLaunchOffsetZSD and unitType.missileLaunchOffsetZHD or nil,
56
- [6] = unitType.missileLaunchVisualOffsetXSD ~= ____exports.DEFAULT_MISSILE_LAUNCH_VISUAL_OFFSET_X and unitType.missileLaunchVisualOffsetXSD or nil,
57
- [7] = unitType.missileLaunchVisualOffsetXHD ~= unitType.missileLaunchVisualOffsetXSD and unitType.missileLaunchVisualOffsetXHD or nil,
58
- [8] = unitType.missileLaunchVisualOffsetYSD ~= ____exports.DEFAULT_MISSILE_LAUNCH_VISUAL_OFFSET_Y and unitType.missileLaunchVisualOffsetYSD or nil,
59
- [9] = unitType.missileLaunchVisualOffsetYHD ~= unitType.missileLaunchVisualOffsetYSD and unitType.missileLaunchVisualOffsetYHD or nil
50
+ [2] = unitType.missileImpactOffsetZDE ~= unitType.missileImpactOffsetZSD and unitType.missileImpactOffsetZDE or nil,
51
+ [3] = unitType.missileLaunchOffsetX ~= ____exports.DEFAULT_MISSILE_LAUNCH_OFFSET_X and unitType.missileLaunchOffsetX or nil,
52
+ [4] = unitType.missileLaunchOffsetY ~= ____exports.DEFAULT_MISSILE_LAUNCH_OFFSET_Y and unitType.missileLaunchOffsetY or nil,
53
+ [5] = unitType.missileLaunchOffsetZSD ~= ____exports.DEFAULT_MISSILE_LAUNCH_OFFSET_Z and unitType.missileLaunchOffsetZSD or nil,
54
+ [6] = unitType.missileLaunchOffsetZHD ~= unitType.missileLaunchOffsetZSD and unitType.missileLaunchOffsetZHD or nil,
55
+ [7] = unitType.missileLaunchOffsetZDE ~= unitType.missileLaunchOffsetZSD and unitType.missileLaunchOffsetZDE or nil,
56
+ [8] = unitType.missileLaunchVisualOffsetXSD ~= ____exports.DEFAULT_MISSILE_LAUNCH_VISUAL_OFFSET_X and unitType.missileLaunchVisualOffsetXSD or nil,
57
+ [9] = unitType.missileLaunchVisualOffsetXHD ~= unitType.missileLaunchVisualOffsetXSD and unitType.missileLaunchVisualOffsetXHD or nil,
58
+ [10] = unitType.missileLaunchVisualOffsetXDE ~= unitType.missileLaunchVisualOffsetXSD and unitType.missileLaunchVisualOffsetXDE or nil,
59
+ [11] = unitType.missileLaunchVisualOffsetYSD ~= ____exports.DEFAULT_MISSILE_LAUNCH_VISUAL_OFFSET_Y and unitType.missileLaunchVisualOffsetYSD or nil,
60
+ [12] = unitType.missileLaunchVisualOffsetYHD ~= unitType.missileLaunchVisualOffsetYSD and unitType.missileLaunchVisualOffsetYHD or nil,
61
+ [13] = unitType.missileLaunchVisualOffsetYDE ~= unitType.missileLaunchVisualOffsetYSD and unitType.missileLaunchVisualOffsetYDE or nil
60
62
  }
61
63
  end
62
64
  )
63
65
  end),
64
66
  function(data)
65
- local ____setmetatable_6 = setmetatable
66
- local ____LocalClient_isHD_0
67
+ local ____setmetatable_10 = setmetatable
68
+ local ____LocalClient_isHD_1
67
69
  if LocalClient.isHD then
68
- ____LocalClient_isHD_0 = data[1] or data[0]
70
+ ____LocalClient_isHD_1 = data[1] or data[0]
69
71
  else
70
- ____LocalClient_isHD_0 = data[0]
72
+ local ____LocalClient_isDE_0
73
+ if LocalClient.isDE then
74
+ ____LocalClient_isDE_0 = data[2] or data[0]
75
+ else
76
+ ____LocalClient_isDE_0 = data[0]
77
+ end
78
+ ____LocalClient_isHD_1 = ____LocalClient_isDE_0
71
79
  end
72
- local ____data__2_4 = data[2]
73
- local ____data__3_5 = data[3]
74
- local ____LocalClient_isHD_1
80
+ local ____data__3_8 = data[3]
81
+ local ____data__4_9 = data[4]
82
+ local ____LocalClient_isHD_3
75
83
  if LocalClient.isHD then
76
- ____LocalClient_isHD_1 = data[5] or data[4]
84
+ ____LocalClient_isHD_3 = data[6] or data[5]
77
85
  else
78
- ____LocalClient_isHD_1 = data[4]
86
+ local ____LocalClient_isDE_2
87
+ if LocalClient.isDE then
88
+ ____LocalClient_isDE_2 = data[7] or data[5]
89
+ else
90
+ ____LocalClient_isDE_2 = data[5]
91
+ end
92
+ ____LocalClient_isHD_3 = ____LocalClient_isDE_2
79
93
  end
80
- local ____LocalClient_isHD_2
94
+ local ____LocalClient_isHD_5
81
95
  if LocalClient.isHD then
82
- ____LocalClient_isHD_2 = data[7] or data[6]
96
+ ____LocalClient_isHD_5 = data[9] or data[8]
83
97
  else
84
- ____LocalClient_isHD_2 = data[6]
98
+ local ____LocalClient_isDE_4
99
+ if LocalClient.isDE then
100
+ ____LocalClient_isDE_4 = data[10] or data[8]
101
+ else
102
+ ____LocalClient_isDE_4 = data[8]
103
+ end
104
+ ____LocalClient_isHD_5 = ____LocalClient_isDE_4
85
105
  end
86
- local ____LocalClient_isHD_3
106
+ local ____LocalClient_isHD_7
87
107
  if LocalClient.isHD then
88
- ____LocalClient_isHD_3 = data[9] or data[8]
108
+ ____LocalClient_isHD_7 = data[12] or data[11]
89
109
  else
90
- ____LocalClient_isHD_3 = data[8]
110
+ local ____LocalClient_isDE_6
111
+ if LocalClient.isDE then
112
+ ____LocalClient_isDE_6 = data[13] or data[11]
113
+ else
114
+ ____LocalClient_isDE_6 = data[11]
115
+ end
116
+ ____LocalClient_isHD_7 = ____LocalClient_isDE_6
91
117
  end
92
- return ____setmetatable_6({
93
- impactOffsetZ = ____LocalClient_isHD_0,
94
- launchOffsetX = ____data__2_4,
95
- launchOffsetY = ____data__3_5,
96
- launchOffsetZ = ____LocalClient_isHD_1,
97
- launchVisualOffsetX = ____LocalClient_isHD_2,
98
- launchVisualOffsetY = ____LocalClient_isHD_3
118
+ return ____setmetatable_10({
119
+ impactOffsetZ = ____LocalClient_isHD_1,
120
+ launchOffsetX = ____data__3_8,
121
+ launchOffsetY = ____data__4_9,
122
+ launchOffsetZ = ____LocalClient_isHD_3,
123
+ launchVisualOffsetX = ____LocalClient_isHD_5,
124
+ launchVisualOffsetY = ____LocalClient_isHD_7
99
125
  }, METATABLE)
100
126
  end
101
127
  ),
@@ -348,7 +348,6 @@ export declare class Unit extends Handle<junit> {
348
348
  static itemDroppedEvent: UnitTriggerEvent<[Item]>;
349
349
  static itemPickedUpEvent: UnitTriggerEvent<[Item]>;
350
350
  static itemUsedEvent: UnitTriggerEvent<[Item]>;
351
- static itemStackedEvent: UnitTriggerEvent<[target: Item, source: Item]>;
352
351
  static get itemChargesChangedEvent(): Event<[unit: Unit, item: Item]>;
353
352
  static get itemUseOrderEvent(): Event<[unit: Unit, item: Item]>;
354
353
  static get itemMoveOrderEvent(): Event<[
@@ -2664,11 +2664,6 @@ Unit.itemUsedEvent = __TS__New(
2664
2664
  return IgnoreEvent
2665
2665
  end
2666
2666
  )
2667
- Unit.itemStackedEvent = __TS__New(
2668
- ____exports.UnitTriggerEvent,
2669
- EVENT_PLAYER_UNIT_STACK_ITEM,
2670
- function() return ____exports.Unit:of(getTriggerUnit()), Item:of(BlzGetStackingItemTarget()), Item:of(BlzGetStackingItemSource()) end
2671
- )
2672
2667
  __TS__ObjectDefineProperty(
2673
2668
  Unit,
2674
2669
  "itemChargesChangedEvent",
@@ -2692,7 +2687,7 @@ __TS__ObjectDefineProperty(
2692
2687
  for order = orderId("useslot0"), orderId("useslot5") do
2693
2688
  local slot = order - orderId("useslot0")
2694
2689
  local function listener(unit)
2695
- local item = unit.items[slot + 1]
2690
+ local item = unit.inventory[slot + 1]
2696
2691
  if item ~= nil then
2697
2692
  invoke(event, unit, item)
2698
2693
  end
@@ -2713,7 +2708,7 @@ __TS__ObjectDefineProperty(
2713
2708
  for order = orderId("moveslot0"), orderId("moveslot5") do
2714
2709
  local slotTo = order - orderId("moveslot0")
2715
2710
  self.onTargetOrder[order]:addListener(function(unit, item)
2716
- local slotFrom = unit.items:findSlot(item)
2711
+ local slotFrom = unit.inventory:findSlot(item)
2717
2712
  if slotFrom ~= nil then
2718
2713
  invoke(
2719
2714
  event,
@@ -9,12 +9,32 @@ export declare class LocalClient {
9
9
  static readonly locale: string;
10
10
  static get width(): number;
11
11
  static get height(): number;
12
+ static get isSD(): boolean;
12
13
  static get isHD(): boolean;
14
+ static get isDE(): boolean;
13
15
  static get graphicsMode(): GraphicsMode;
14
16
  static get isActive(): boolean;
15
17
  static get isMinimized(): boolean;
16
18
  static pingMinimap(x: number, y: number, duration: number, ...parameters: [] | [red: number, green: number, blue: number, flashy?: boolean] | [color: Color, flashy?: boolean]): void;
19
+ /** Local input state; do not use to branch synchronized game logic. */
20
+ static isKeyPressed(key: joskeytype): boolean;
21
+ /** Local input state. Uses the same modifier mask as Player key events. */
22
+ static isMetaKeyPressed(key: oskeymeta): boolean;
23
+ /** Local input state. */
24
+ static isMouseButtonPressed(button: jmousebuttontype): boolean;
25
+ static get mouseScreenX(): number;
26
+ static get mouseScreenY(): number;
27
+ static screenToFrameX(x: number): number;
28
+ static screenToFrameY(y: number): number;
29
+ static frameToScreenX(x: number): number;
30
+ static frameToScreenY(y: number): number;
31
+ static get mouseFrameX(): number;
32
+ static get mouseFrameY(): number;
17
33
  static get mouseFocusUnit(): Async<Unit> | undefined;
34
+ /**
35
+ * Local selection sampled every 1/64 second. Undefined before the first tick and while
36
+ * a group selection's buttons are not registered yet (see `selectionLayoutSocket`).
37
+ */
18
38
  static get mainSelectedUnit(): Async<Unit> | undefined;
19
39
  static get mainSelectedUnitChangeEvent(): Event<[
20
40
  previousMainSelectedUnit: Unit | undefined,