warscript 0.0.1-dev.e1acea3 → 0.0.1-dev.e27e5b1

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 (281) hide show
  1. package/attributes.d.ts +6 -0
  2. package/attributes.lua +17 -1
  3. package/config.d.ts +5 -0
  4. package/config.lua +10 -0
  5. package/core/types/effect.d.ts +2 -3
  6. package/core/types/effect.lua +95 -48
  7. package/core/types/frame.d.ts +1 -0
  8. package/core/types/frame.lua +136 -58
  9. package/core/types/handle.lua +6 -9
  10. package/core/types/item.d.ts +1 -0
  11. package/core/types/item.lua +1 -0
  12. package/core/types/player.d.ts +18 -1
  13. package/core/types/player.lua +76 -26
  14. package/core/types/playerCamera.d.ts +2 -0
  15. package/core/types/playerCamera.lua +123 -5
  16. package/core/types/playerColor.lua +4 -3
  17. package/core/types/sound.d.ts +18 -25
  18. package/core/types/sound.lua +113 -33
  19. package/core/types/tileCell.d.ts +11 -1
  20. package/core/types/tileCell.lua +97 -0
  21. package/core/types/timer.d.ts +9 -8
  22. package/core/types/timer.lua +45 -23
  23. package/core/types/unit.d.ts +4 -0
  24. package/core/types/unit.lua +4 -0
  25. package/core/util.d.ts +1 -1
  26. package/core/util.lua +12 -1
  27. package/decl/native.d.ts +1718 -964
  28. package/destroyable.d.ts +1 -0
  29. package/destroyable.lua +9 -0
  30. package/engine/behavior.d.ts +14 -1
  31. package/engine/behavior.lua +230 -70
  32. package/engine/behaviour/ability/always-enabled.d.ts +7 -0
  33. package/engine/behaviour/ability/always-enabled.lua +31 -0
  34. package/engine/behaviour/ability/apply-buff.d.ts +5 -0
  35. package/engine/behaviour/ability/apply-buff.lua +36 -4
  36. package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
  37. package/engine/behaviour/ability/damage.d.ts +12 -3
  38. package/engine/behaviour/ability/damage.lua +33 -39
  39. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  40. package/engine/behaviour/ability/emulate-impact.lua +21 -6
  41. package/engine/behaviour/ability/on-command-impact.lua +7 -0
  42. package/engine/behaviour/ability/remove-buffs.d.ts +13 -1
  43. package/engine/behaviour/ability/remove-buffs.lua +29 -2
  44. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  45. package/engine/behaviour/ability/restore-mana.lua +6 -6
  46. package/engine/behaviour/ability.d.ts +23 -6
  47. package/engine/behaviour/ability.lua +115 -22
  48. package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
  49. package/engine/behaviour/unit/stun-immunity.lua +57 -31
  50. package/engine/behaviour/unit.d.ts +41 -2
  51. package/engine/behaviour/unit.lua +270 -6
  52. package/engine/buff.d.ts +113 -53
  53. package/engine/buff.lua +544 -288
  54. package/engine/internal/ability.d.ts +22 -2
  55. package/engine/internal/ability.lua +151 -27
  56. package/engine/internal/item/ability.lua +162 -4
  57. package/engine/internal/item/fields.d.ts +12 -0
  58. package/engine/internal/item/fields.lua +33 -0
  59. package/engine/internal/item+owner.d.ts +1 -0
  60. package/engine/internal/item+owner.lua +19 -6
  61. package/engine/internal/item.d.ts +30 -18
  62. package/engine/internal/item.lua +292 -102
  63. package/engine/internal/mechanics/ability-duration.lua +1 -1
  64. package/engine/internal/mechanics/cast-ability.lua +6 -3
  65. package/engine/internal/misc/ability-disable-counter.lua +13 -0
  66. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  67. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  68. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  69. package/engine/internal/misc/frame-coordinates.lua +21 -0
  70. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  71. package/engine/internal/misc/get-terrain-z.lua +11 -0
  72. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  73. package/engine/internal/misc/player-local-handle.lua +5 -0
  74. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  75. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  76. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  77. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  78. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  79. package/engine/internal/object-data/evasion-probability.lua +16 -0
  80. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  81. package/engine/internal/object-data/health-bonus.lua +16 -0
  82. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  83. package/engine/internal/object-data/mana-bonus.lua +16 -0
  84. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  85. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  86. package/engine/internal/unit/ability.d.ts +35 -0
  87. package/engine/internal/unit/ability.lua +113 -12
  88. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  89. package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
  90. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  91. package/engine/internal/unit/add-item-to-slot.lua +52 -0
  92. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  93. package/engine/internal/unit/allowed-targets.lua +9 -1
  94. package/engine/internal/unit/appearance.d.ts +15 -0
  95. package/engine/internal/unit/appearance.lua +85 -0
  96. package/engine/internal/unit/attributes.d.ts +17 -0
  97. package/engine/internal/unit/attributes.lua +46 -0
  98. package/engine/internal/unit/bag.d.ts +18 -0
  99. package/engine/internal/unit/bag.lua +63 -0
  100. package/engine/internal/unit/bonus.d.ts +8 -0
  101. package/engine/internal/unit/bonus.lua +50 -3
  102. package/engine/internal/unit/buff.d.ts +2 -2
  103. package/engine/internal/unit/buff.lua +32 -17
  104. package/engine/internal/unit/equipment.d.ts +36 -0
  105. package/engine/internal/unit/equipment.lua +169 -0
  106. package/engine/internal/unit/fly-height.d.ts +7 -0
  107. package/engine/internal/unit/fly-height.lua +20 -0
  108. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  109. package/engine/internal/unit/ignore-events-items.lua +5 -0
  110. package/engine/internal/unit/interrupts.d.ts +12 -0
  111. package/engine/internal/unit/interrupts.lua +28 -0
  112. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +3 -3
  113. package/engine/internal/unit/inventory.lua +77 -0
  114. package/engine/internal/unit/main-selected.lua +12 -27
  115. package/engine/internal/unit/order.d.ts +20 -0
  116. package/engine/internal/unit/order.lua +136 -0
  117. package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
  118. package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
  119. package/engine/internal/unit/range-event.d.ts +12 -0
  120. package/engine/internal/unit/range-event.lua +90 -0
  121. package/engine/internal/unit/scale.d.ts +7 -0
  122. package/engine/internal/unit/scale.lua +20 -0
  123. package/engine/internal/unit+ability.lua +10 -1
  124. package/engine/internal/unit+bonus.lua +3 -3
  125. package/engine/internal/unit+damage.d.ts +2 -11
  126. package/engine/internal/unit+damage.lua +10 -14
  127. package/engine/internal/unit+spellSteal.lua +1 -2
  128. package/engine/internal/unit-missile-launch.lua +52 -14
  129. package/engine/internal/unit.d.ts +45 -26
  130. package/engine/internal/unit.lua +443 -274
  131. package/engine/internal/utility.lua +12 -0
  132. package/engine/lightning.d.ts +12 -5
  133. package/engine/lightning.lua +48 -14
  134. package/engine/local-client.d.ts +21 -0
  135. package/engine/local-client.lua +150 -7
  136. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  137. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  138. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  139. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  140. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
  141. package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
  142. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  143. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  144. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  145. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  146. package/engine/object-data/auxiliary/equipment-type.d.ts +13 -0
  147. package/engine/object-data/auxiliary/equipment-type.lua +2 -0
  148. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  149. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  150. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  151. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  152. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  153. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  154. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  155. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  156. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  157. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  158. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  159. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
  160. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  161. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  162. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  163. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
  164. package/engine/object-data/entry/ability-type/blank-configurable.lua +42 -1
  165. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  166. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  167. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  168. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  169. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  170. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  171. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  172. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  173. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  174. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  175. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  176. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  177. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  178. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  179. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  180. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  181. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  182. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  183. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  184. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  185. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  186. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  187. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  188. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  189. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  190. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  191. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  192. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  193. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  194. package/engine/object-data/entry/ability-type/web.lua +52 -0
  195. package/engine/object-data/entry/ability-type.d.ts +21 -17
  196. package/engine/object-data/entry/ability-type.lua +177 -40
  197. package/engine/object-data/entry/buff-type/applicable.lua +122 -137
  198. package/engine/object-data/entry/buff-type.d.ts +6 -12
  199. package/engine/object-data/entry/buff-type.lua +13 -29
  200. package/engine/object-data/entry/destructible-type.d.ts +28 -2
  201. package/engine/object-data/entry/destructible-type.lua +155 -0
  202. package/engine/object-data/entry/item-type.d.ts +3 -1
  203. package/engine/object-data/entry/item-type.lua +15 -2
  204. package/engine/object-data/entry/lightning-type.d.ts +1 -1
  205. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  206. package/engine/object-data/entry/sound-preset.lua +140 -0
  207. package/engine/object-data/entry/unit-type.d.ts +25 -5
  208. package/engine/object-data/entry/unit-type.lua +258 -93
  209. package/engine/object-data/entry/upgrade.d.ts +1 -1
  210. package/engine/object-data/entry/upgrade.lua +4 -4
  211. package/engine/object-data/entry.d.ts +16 -14
  212. package/engine/object-data/entry.lua +60 -32
  213. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  214. package/engine/object-field/ability.d.ts +12 -6
  215. package/engine/object-field/ability.lua +10 -6
  216. package/engine/object-field/item.d.ts +22 -0
  217. package/engine/object-field/item.lua +118 -0
  218. package/engine/object-field/unit.d.ts +72 -3
  219. package/engine/object-field/unit.lua +268 -7
  220. package/engine/object-field.d.ts +26 -7
  221. package/engine/object-field.lua +362 -117
  222. package/engine/random.d.ts +10 -0
  223. package/engine/random.lua +21 -0
  224. package/engine/standard/entries/buff-type.d.ts +3 -0
  225. package/engine/standard/entries/buff-type.lua +3 -0
  226. package/engine/standard/entries/sound-preset.d.ts +10 -0
  227. package/engine/standard/entries/sound-preset.lua +10 -0
  228. package/engine/standard/fields/ability.d.ts +4 -2
  229. package/engine/standard/fields/ability.lua +4 -2
  230. package/engine/standard/fields/item.d.ts +4 -0
  231. package/engine/standard/fields/item.lua +6 -0
  232. package/engine/standard/fields/unit.d.ts +12 -0
  233. package/engine/standard/fields/unit.lua +20 -0
  234. package/engine/synchronization.d.ts +11 -0
  235. package/engine/synchronization.lua +77 -0
  236. package/engine/text-tag.d.ts +36 -2
  237. package/engine/text-tag.lua +250 -10
  238. package/engine/unit.d.ts +11 -1
  239. package/engine/unit.lua +11 -1
  240. package/event.d.ts +1 -1
  241. package/lualib_bundle.lua +1 -1
  242. package/math.d.ts +2 -0
  243. package/math.lua +14 -0
  244. package/net/socket.lua +1 -1
  245. package/network.lua +25 -1
  246. package/objutil/buff.lua +11 -10
  247. package/objutil/object.lua +1 -1
  248. package/objutil/unit.lua +8 -0
  249. package/operation.d.ts +8 -1
  250. package/operation.lua +38 -18
  251. package/package.json +5 -5
  252. package/patch-lua.lua +15 -0
  253. package/patch-lualib.lua +1 -1
  254. package/utility/arrays.d.ts +2 -0
  255. package/utility/arrays.lua +11 -0
  256. package/utility/callback-array.d.ts +17 -0
  257. package/utility/callback-array.lua +61 -0
  258. package/utility/functions.d.ts +8 -0
  259. package/utility/functions.lua +13 -0
  260. package/utility/linked-map.d.ts +35 -0
  261. package/utility/linked-map.lua +107 -0
  262. package/utility/linked-set.d.ts +5 -1
  263. package/utility/linked-set.lua +49 -1
  264. package/utility/lua-maps.d.ts +15 -2
  265. package/utility/lua-maps.lua +53 -2
  266. package/utility/lua-sets.d.ts +2 -0
  267. package/utility/lua-sets.lua +7 -0
  268. package/utility/random.d.ts +102 -0
  269. package/utility/random.lua +273 -0
  270. package/utility/records.lua +20 -1
  271. package/utility/reflection.lua +11 -7
  272. package/utility/types.d.ts +3 -0
  273. package/utility/unordered-map.d.ts +27 -0
  274. package/utility/unordered-map.lua +99 -0
  275. package/core/types/order.d.ts +0 -25
  276. package/core/types/order.lua +0 -55
  277. package/engine/internal/unit/item.lua +0 -84
  278. /package/engine/internal/{object-data/armor-increase.d.ts → misc/ability-disable-counter.d.ts} +0 -0
  279. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  280. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  281. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -0,0 +1,18 @@
1
+ /** @noSelfInFile */
2
+ import { Item } from "../item";
3
+ export interface UnitBag extends ReadonlyArray<Item | undefined> {
4
+ }
5
+ /** A live, zero-based view of a unit's bag. The engine does not expose bag-slot assignment. */
6
+ export declare class UnitBag {
7
+ constructor(handle: junit);
8
+ has(item: Item): boolean;
9
+ findSlot(item: Item): number | undefined;
10
+ protected __index(key: string | number): unknown;
11
+ protected __len(): number;
12
+ protected __ipairs(): LuaIterator<LuaMultiReturn<[number, Item | undefined]>, junit>;
13
+ }
14
+ declare module "../unit" {
15
+ interface Unit {
16
+ readonly bag: UnitBag;
17
+ }
18
+ }
@@ -0,0 +1,63 @@
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 ____item = require("engine.internal.item")
7
+ local Item = ____item.Item
8
+ local ____unit = require("engine.internal.unit")
9
+ local Unit = ____unit.Unit
10
+ local unitExtendedInventorySize = UnitExtendedInventorySize
11
+ local unitHasItemBagged = UnitHasItemBagged
12
+ local unitItemInBagSlot = UnitItemInBagSlot
13
+ local ____rawget = _G.rawget
14
+ local rawset = _G.rawset
15
+ local ____type = _G.type
16
+ local handleByUnitBag = setmetatable({}, {__mode = "k"})
17
+ local function unitBagNext(handle, slot)
18
+ if slot >= unitExtendedInventorySize(handle) then
19
+ return nil, nil
20
+ end
21
+ return slot + 1, Item:of(unitItemInBagSlot(handle, slot))
22
+ end
23
+ --- A live, zero-based view of a unit's bag. The engine does not expose bag-slot assignment.
24
+ ____exports.UnitBag = __TS__Class()
25
+ local UnitBag = ____exports.UnitBag
26
+ UnitBag.name = "UnitBag"
27
+ function UnitBag.prototype.____constructor(self, handle)
28
+ handleByUnitBag[self] = handle
29
+ end
30
+ function UnitBag.prototype.has(self, item)
31
+ return unitHasItemBagged(handleByUnitBag[self], item.handle)
32
+ end
33
+ function UnitBag.prototype.findSlot(self, item)
34
+ local handle = handleByUnitBag[self]
35
+ for slot = 0, unitExtendedInventorySize(handle) - 1 do
36
+ if unitItemInBagSlot(handle, slot) == item.handle then
37
+ return slot
38
+ end
39
+ end
40
+ return nil
41
+ end
42
+ function UnitBag.prototype.__index(self, key)
43
+ if ____type(key) == "number" then
44
+ return Item:of(unitItemInBagSlot(handleByUnitBag[self], key - 1))
45
+ end
46
+ return ____rawget(____exports.UnitBag.prototype, key)
47
+ end
48
+ function UnitBag.prototype.__len(self)
49
+ return unitExtendedInventorySize(handleByUnitBag[self])
50
+ end
51
+ function UnitBag.prototype.__ipairs(self)
52
+ return unitBagNext, handleByUnitBag[self], 0
53
+ end
54
+ __TS__ObjectDefineProperty(
55
+ Unit.prototype,
56
+ "bag",
57
+ {get = function(self)
58
+ local bag = __TS__New(____exports.UnitBag, self.handle)
59
+ rawset(self, "bag", bag)
60
+ return bag
61
+ end}
62
+ )
63
+ return ____exports
@@ -5,12 +5,16 @@ export type UnitBonusId<Brand extends string = any> = number & {
5
5
  readonly __unitBonusId: unique symbol;
6
6
  readonly __unitBonusIdBrand: Brand;
7
7
  };
8
+ export type UnitMaxHealthBonusId = UnitBonusId<"maxHealth">;
9
+ export type UnitMaxManaBonusId = UnitBonusId<"maxMana">;
8
10
  export type UnitArmorBonusId = UnitBonusId<"armor">;
9
11
  export type UnitAttackSpeedFactorBonusId = UnitBonusId<"attackSpeedFactor">;
10
12
  export type UnitMovementSpeedFactorBonusId = UnitBonusId<"movementSpeedFactor">;
11
13
  export type UnitAutoAttackDamageBonusId = UnitBonusId<"autoAttackDamage">;
12
14
  export type UnitDamageFactorBonusId = UnitBonusId<"damageFactor">;
13
15
  export type UnitReceivedDamageFactorBonusId = UnitBonusId<"receivedDamageFactor">;
16
+ export type UnitEvasionProbabilityBonusId = UnitBonusId<"evasionProbability">;
17
+ export type UnitManaRegenerationRateFactorBonusId = UnitBonusId<"manaRegenerationRateFactor">;
14
18
  export type UnitBonusType<Id extends UnitBonusId = UnitBonusId> = ({
15
19
  abilityTypeId: AbilityTypeId;
16
20
  field: jabilityintegerlevelfield;
@@ -28,12 +32,16 @@ export type UnitBonusType<Id extends UnitBonusId = UnitBonusId> = ({
28
32
  readonly __unitBonusTypeId?: Id;
29
33
  };
30
34
  export declare namespace UnitBonusType {
35
+ const HEALTH: UnitBonusType<UnitMaxHealthBonusId>;
36
+ const MANA: UnitBonusType<UnitMaxManaBonusId>;
31
37
  const ARMOR: UnitBonusType<UnitArmorBonusId>;
32
38
  const ATTACK_SPEED_FACTOR: UnitBonusType<UnitAttackSpeedFactorBonusId>;
33
39
  const MOVEMENT_SPEED_FACTOR: UnitBonusType<UnitAttackSpeedFactorBonusId>;
34
40
  const AUTO_ATTACK_DAMAGE: UnitBonusType<UnitAutoAttackDamageBonusId>;
35
41
  const DAMAGE_FACTOR: UnitBonusType<UnitReceivedDamageFactorBonusId>;
36
42
  const RECEIVED_DAMAGE_FACTOR: UnitBonusType<UnitReceivedDamageFactorBonusId>;
43
+ const EVASION_PROBABILITY: UnitBonusType<UnitEvasionProbabilityBonusId>;
44
+ const MANA_REGENERATION_RATE_FACTOR: UnitBonusType<UnitManaRegenerationRateFactorBonusId>;
37
45
  }
38
46
  export declare const addUnitBonus: <Id extends UnitBonusId>(unit: Unit, bonusType: UnitBonusType<Id>, value: number) => Id;
39
47
  export declare const removeUnitBonus: <Id extends UnitBonusId>(unit: Unit, bonusType: UnitBonusType<Id>, id: Id) => boolean;
@@ -1,9 +1,9 @@
1
1
  local ____exports = {}
2
2
  local ____unit = require("engine.internal.unit")
3
3
  local Unit = ____unit.Unit
4
- local ____armor_2Dincrease = require("engine.internal.object-data.armor-increase")
5
- local ARMOR_BONUS_DUMMY_ABILITY_FIELD = ____armor_2Dincrease.ARMOR_BONUS_DUMMY_ABILITY_FIELD
6
- local ARMOR_BONUS_DUMMY_ABILITY_TYPE_ID = ____armor_2Dincrease.ARMOR_BONUS_DUMMY_ABILITY_TYPE_ID
4
+ local ____armor_2Dbonus = require("engine.internal.object-data.armor-bonus")
5
+ local ARMOR_BONUS_DUMMY_ABILITY_FIELD = ____armor_2Dbonus.ARMOR_BONUS_DUMMY_ABILITY_FIELD
6
+ local ARMOR_BONUS_DUMMY_ABILITY_TYPE_ID = ____armor_2Dbonus.ARMOR_BONUS_DUMMY_ABILITY_TYPE_ID
7
7
  local ____utility = require("engine.internal.utility")
8
8
  local addInternalAbility = ____utility.addInternalAbility
9
9
  local ____arrays = require("utility.arrays")
@@ -21,11 +21,44 @@ local AUTO_ATTACK_DAMAGE_INCREASE_DUMMY_ABILITY_TYPE_ID = ____auto_2Dattack_2Dda
21
21
  local ____movement_2Dspeed_2Dincrease_2Dfactor = require("engine.internal.object-data.movement-speed-increase-factor")
22
22
  local MOVEMENT_SPEED_INCREASE_FACTOR_ABILITY_FIELD = ____movement_2Dspeed_2Dincrease_2Dfactor.MOVEMENT_SPEED_INCREASE_FACTOR_ABILITY_FIELD
23
23
  local MOVEMENT_SPEED_INCREASE_FACTOR_DUMMY_ABILITY_TYPE_ID = ____movement_2Dspeed_2Dincrease_2Dfactor.MOVEMENT_SPEED_INCREASE_FACTOR_DUMMY_ABILITY_TYPE_ID
24
+ local ____evasion_2Dprobability = require("engine.internal.object-data.evasion-probability")
25
+ local EVASION_PROBABILITY_ABILITY_FIELD = ____evasion_2Dprobability.EVASION_PROBABILITY_ABILITY_FIELD
26
+ local EVASION_PROBABILITY_DUMMY_ABILITY_TYPE_ID = ____evasion_2Dprobability.EVASION_PROBABILITY_DUMMY_ABILITY_TYPE_ID
27
+ local ____health_2Dbonus = require("engine.internal.object-data.health-bonus")
28
+ local HEALTH_BONUS_DUMMY_ABILITY_FIELD = ____health_2Dbonus.HEALTH_BONUS_DUMMY_ABILITY_FIELD
29
+ local HEALTH_BONUS_DUMMY_ABILITY_TYPE_ID = ____health_2Dbonus.HEALTH_BONUS_DUMMY_ABILITY_TYPE_ID
30
+ local ____mana_2Dbonus = require("engine.internal.object-data.mana-bonus")
31
+ local MANA_BONUS_DUMMY_ABILITY_FIELD = ____mana_2Dbonus.MANA_BONUS_DUMMY_ABILITY_FIELD
32
+ local MANA_BONUS_DUMMY_ABILITY_TYPE_ID = ____mana_2Dbonus.MANA_BONUS_DUMMY_ABILITY_TYPE_ID
33
+ local ____mana_2Dregeneration_2Drate_2Dincrease_2Dfactor = require("engine.internal.object-data.mana-regeneration-rate-increase-factor")
34
+ local MANA_REGENERATION_RATE_INCREASE_FACTOR_ABILITY_FIELD = ____mana_2Dregeneration_2Drate_2Dincrease_2Dfactor.MANA_REGENERATION_RATE_INCREASE_FACTOR_ABILITY_FIELD
35
+ local MANA_REGENERATION_RATE_INCREASE_FACTOR_DUMMY_ABILITY_TYPE_ID = ____mana_2Dregeneration_2Drate_2Dincrease_2Dfactor.MANA_REGENERATION_RATE_INCREASE_FACTOR_DUMMY_ABILITY_TYPE_ID
24
36
  local damageFactorByUnit = {}
25
37
  local receivedDamageFactorByUnit = {}
38
+ local function atLeastOnceProbability(array)
39
+ local oppositeEventProbability = 1
40
+ for i = 1, #array do
41
+ oppositeEventProbability = oppositeEventProbability * (1 - array[i])
42
+ end
43
+ return 1 - oppositeEventProbability
44
+ end
26
45
  ____exports.UnitBonusType = {}
27
46
  local UnitBonusType = ____exports.UnitBonusType
28
47
  do
48
+ UnitBonusType.HEALTH = {
49
+ abilityTypeId = HEALTH_BONUS_DUMMY_ABILITY_TYPE_ID,
50
+ field = HEALTH_BONUS_DUMMY_ABILITY_FIELD,
51
+ integer = true,
52
+ reduce = sum,
53
+ initialValue = 0
54
+ }
55
+ UnitBonusType.MANA = {
56
+ abilityTypeId = MANA_BONUS_DUMMY_ABILITY_TYPE_ID,
57
+ field = MANA_BONUS_DUMMY_ABILITY_FIELD,
58
+ integer = true,
59
+ reduce = sum,
60
+ initialValue = 0
61
+ }
29
62
  UnitBonusType.ARMOR = {
30
63
  abilityTypeId = ARMOR_BONUS_DUMMY_ABILITY_TYPE_ID,
31
64
  field = ARMOR_BONUS_DUMMY_ABILITY_FIELD,
@@ -56,6 +89,20 @@ do
56
89
  }
57
90
  UnitBonusType.DAMAGE_FACTOR = {reduce = product, valueByUnit = damageFactorByUnit, initialValue = 1}
58
91
  UnitBonusType.RECEIVED_DAMAGE_FACTOR = {reduce = product, valueByUnit = receivedDamageFactorByUnit, initialValue = 1}
92
+ UnitBonusType.EVASION_PROBABILITY = {
93
+ abilityTypeId = EVASION_PROBABILITY_DUMMY_ABILITY_TYPE_ID,
94
+ field = EVASION_PROBABILITY_ABILITY_FIELD,
95
+ integer = false,
96
+ reduce = atLeastOnceProbability,
97
+ initialValue = 0
98
+ }
99
+ UnitBonusType.MANA_REGENERATION_RATE_FACTOR = {
100
+ abilityTypeId = MANA_REGENERATION_RATE_INCREASE_FACTOR_DUMMY_ABILITY_TYPE_ID,
101
+ field = MANA_REGENERATION_RATE_INCREASE_FACTOR_ABILITY_FIELD,
102
+ integer = false,
103
+ reduce = sum,
104
+ initialValue = 0
105
+ }
59
106
  end
60
107
  local bonusesByUnitByBonusType = {}
61
108
  local nextId = 1
@@ -32,7 +32,7 @@ declare module "../unit" {
32
32
  * @param includeAuras Whether to remove aura buffs. Default `true`.
33
33
  * @param autoDispel Unknown. Default `false`.
34
34
  */
35
- removeBuffs(polarity?: BuffPolarity, resistanceType?: BuffResistanceType, includeExpirationTimers?: boolean, includeAuras?: boolean, autoDispel?: boolean): void;
36
- removeBuffs(buffTypeIds: number[]): void;
35
+ removeBuffs(polarity?: BuffPolarity, resistanceType?: BuffResistanceType, includeExpirationTimers?: boolean, includeAuras?: boolean, autoDispel?: boolean): number;
36
+ removeBuffs(buffTypeIds: number[]): number;
37
37
  }
38
38
  }
@@ -1,7 +1,3 @@
1
- local ____lualib = require("lualib_bundle")
2
- local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew
3
- local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush
4
- local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread
5
1
  local ____exports = {}
6
2
  local ____buff = require("engine.buff")
7
3
  local checkBuff = ____buff.checkBuff
@@ -46,36 +42,55 @@ Unit.prototype.countBuffs = function(self, polarity, resistanceType, includeExpi
46
42
  )
47
43
  end
48
44
  Unit.prototype.removeBuffs = function(self, polarityOrBuffTypeIds, resistanceType, includeExpirationTimers, includeAuras, autoDispel)
45
+ local handle = self.handle
46
+ local cnt
49
47
  if type(polarityOrBuffTypeIds) == "table" then
50
- local handle = self.handle
48
+ cnt = 0
51
49
  for i = 1, #polarityOrBuffTypeIds do
52
- unitRemoveAbility(handle, polarityOrBuffTypeIds[i])
50
+ cnt = cnt + (unitRemoveAbility(handle, polarityOrBuffTypeIds[i]) and 1 or 0)
53
51
  end
54
52
  else
55
- local ____array_3 = __TS__SparseArrayNew(
56
- self.handle,
57
- (polarityOrBuffTypeIds or 3) & 1 ~= 0,
58
- (polarityOrBuffTypeIds or 3) & 2 ~= 0,
59
- (resistanceType or 0) & 1 ~= 0,
60
- (resistanceType or 0) & 2 ~= 0
61
- )
53
+ local positive = (polarityOrBuffTypeIds or 3) & 1 ~= 0
54
+ local negative = (polarityOrBuffTypeIds or 3) & 2 ~= 0
55
+ local magic = (resistanceType or 0) & 1 ~= 0
56
+ local physical = (resistanceType or 0) & 2 ~= 0
62
57
  local ____includeExpirationTimers_0 = includeExpirationTimers
63
58
  if ____includeExpirationTimers_0 == nil then
64
59
  ____includeExpirationTimers_0 = true
65
60
  end
66
- __TS__SparseArrayPush(____array_3, ____includeExpirationTimers_0)
61
+ includeExpirationTimers = ____includeExpirationTimers_0
67
62
  local ____includeAuras_1 = includeAuras
68
63
  if ____includeAuras_1 == nil then
69
64
  ____includeAuras_1 = true
70
65
  end
71
- __TS__SparseArrayPush(____array_3, ____includeAuras_1)
66
+ includeAuras = ____includeAuras_1
72
67
  local ____autoDispel_2 = autoDispel
73
68
  if ____autoDispel_2 == nil then
74
69
  ____autoDispel_2 = false
75
70
  end
76
- __TS__SparseArrayPush(____array_3, ____autoDispel_2)
77
- unitRemoveBuffsEx(__TS__SparseArraySpread(____array_3))
71
+ autoDispel = ____autoDispel_2
72
+ cnt = unitCountBuffsEx(
73
+ handle,
74
+ positive,
75
+ negative,
76
+ magic,
77
+ physical,
78
+ includeExpirationTimers,
79
+ includeAuras,
80
+ autoDispel
81
+ )
82
+ unitRemoveBuffsEx(
83
+ handle,
84
+ positive,
85
+ negative,
86
+ magic,
87
+ physical,
88
+ includeExpirationTimers,
89
+ includeAuras,
90
+ autoDispel
91
+ )
78
92
  end
79
93
  checkBuffs(self)
94
+ return cnt
80
95
  end
81
96
  return ____exports
@@ -0,0 +1,36 @@
1
+ /** @noSelfInFile */
2
+ import { Item } from "../item";
3
+ import { EquipmentSlot } from "../../object-data/auxiliary/equipment-slot";
4
+ import { EquipmentType } from "../../object-data/auxiliary/equipment-type";
5
+ export interface UnitEquipment extends ReadonlyArray<Item | undefined> {
6
+ }
7
+ /** A live view indexed by EquipmentSlot. Equip operations let the engine choose the slot. */
8
+ export declare class UnitEquipment {
9
+ constructor(handle: junit);
10
+ equip(item: Item): boolean;
11
+ unequip(item: Item): void;
12
+ unequipSlot(slot: EquipmentSlot): Item | undefined;
13
+ has(item: Item): boolean;
14
+ hasAny(): boolean;
15
+ isSlotEmpty(slot: EquipmentSlot): boolean;
16
+ hasType(type: EquipmentType): boolean;
17
+ canEquipType(type: EquipmentType): boolean;
18
+ findSlot(item: Item): EquipmentSlot | undefined;
19
+ protected __index(key: string | number): unknown;
20
+ protected __len(): number;
21
+ protected __ipairs(): LuaIterator<LuaMultiReturn<[number, Item | undefined]>, junit>;
22
+ }
23
+ declare module "../unit" {
24
+ interface Unit {
25
+ readonly equipment: UnitEquipment;
26
+ }
27
+ namespace Unit {
28
+ const itemEquippedEvent: UnitTriggerEvent<[item: Item]>;
29
+ const itemUnequippedEvent: UnitTriggerEvent<[item: Item]>;
30
+ let itemStackedEvent: UnitTriggerEvent<[
31
+ target: Item,
32
+ source: Item,
33
+ previousTargetCharges: number
34
+ ]>;
35
+ }
36
+ }
@@ -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
@@ -0,0 +1,7 @@
1
+ /** @noSelfInFile */
2
+ declare module "../unit" {
3
+ interface Unit {
4
+ flyHeight: number;
5
+ }
6
+ }
7
+ export {};
@@ -0,0 +1,20 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
3
+ local ____exports = {}
4
+ local ____unit = require("engine.internal.unit")
5
+ local Unit = ____unit.Unit
6
+ local ____unit = require("engine.standard.fields.unit")
7
+ local FLY_HEIGHT_UNIT_FIELD = ____unit.FLY_HEIGHT_UNIT_FIELD
8
+ __TS__ObjectDefineProperty(
9
+ Unit.prototype,
10
+ "flyHeight",
11
+ {
12
+ get = function(self)
13
+ return FLY_HEIGHT_UNIT_FIELD:getValue(self)
14
+ end,
15
+ set = function(self, value)
16
+ FLY_HEIGHT_UNIT_FIELD:setValue(self, value)
17
+ end
18
+ }
19
+ )
20
+ 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.ignoreEventsItems = {}
5
+ return ____exports
@@ -0,0 +1,12 @@
1
+ /** @noSelfInFile */
2
+ declare module "../unit" {
3
+ interface Unit {
4
+ interruptAttack(this: Unit): void;
5
+ }
6
+ }
7
+ declare module "../unit" {
8
+ interface Unit {
9
+ interruptMovement(this: Unit): void;
10
+ }
11
+ }
12
+ export {};
@@ -0,0 +1,28 @@
1
+ local ____exports = {}
2
+ local ____unit = require("engine.internal.unit")
3
+ local Unit = ____unit.Unit
4
+ local ____unit_2Dmissile_2Dlaunch = require("engine.internal.unit-missile-launch")
5
+ local resetAutoAttackTimer = ____unit_2Dmissile_2Dlaunch.resetAutoAttackTimer
6
+ local unitDisableAbility = BlzUnitDisableAbility
7
+ local unitInterruptAttack = BlzUnitInterruptAttack
8
+ Unit.prototype.interruptAttack = function(self)
9
+ unitInterruptAttack(self.handle)
10
+ resetAutoAttackTimer(self)
11
+ end
12
+ Unit.prototype.interruptMovement = function(self)
13
+ local handle = self.handle
14
+ unitDisableAbility(
15
+ handle,
16
+ fourCC("Amov"),
17
+ true,
18
+ false
19
+ )
20
+ unitDisableAbility(
21
+ handle,
22
+ fourCC("Amov"),
23
+ false,
24
+ false
25
+ )
26
+ resetAutoAttackTimer(self)
27
+ end
28
+ 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
  }
@@ -0,0 +1,77 @@
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 ____item = require("engine.internal.item")
7
+ local Item = ____item.Item
8
+ local ____unit = require("engine.internal.unit")
9
+ local Unit = ____unit.Unit
10
+ local ____utility = require("engine.internal.utility")
11
+ local findUnitItemSlot = ____utility.findUnitItemSlot
12
+ local ____add_2Ditem_2Dto_2Dslot = require("engine.internal.unit.add-item-to-slot")
13
+ local unitAddItemToSlot = ____add_2Ditem_2Dto_2Dslot.unitAddItemToSlot
14
+ local rawset = _G.rawset
15
+ local ____type = _G.type
16
+ local isItemPowerup = IsItemPowerup
17
+ local setItemBooleanField = BlzSetItemBooleanField
18
+ local unitInventorySize = UnitInventorySize
19
+ local unitItemInSlot = UnitItemInSlot
20
+ local unitRemoveItemFromSlot = UnitRemoveItemFromSlot
21
+ local handleByUnitInventory = setmetatable({}, {__mode = "k"})
22
+ local function unitInventoryNext(handle, slot)
23
+ if slot >= unitInventorySize(handle) then
24
+ return nil, nil
25
+ end
26
+ return slot + 1, Item:of(unitItemInSlot(handle, slot))
27
+ end
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
33
+ end
34
+ function UnitInventory.prototype.findSlot(self, item)
35
+ return findUnitItemSlot(handleByUnitInventory[self], item.handle)
36
+ end
37
+ function UnitInventory.prototype.__newindex(self, slot, item)
38
+ local handle = handleByUnitInventory[self]
39
+ if slot < 1 or slot > unitInventorySize(handle) then
40
+ return
41
+ end
42
+ unitRemoveItemFromSlot(handle, slot - 1)
43
+ if item ~= nil then
44
+ local itemHandle = item.handle
45
+ local isPowerup = isItemPowerup(itemHandle)
46
+ if isPowerup then
47
+ setItemBooleanField(itemHandle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, false)
48
+ end
49
+ unitAddItemToSlot(handle, itemHandle, slot - 1)
50
+ if isPowerup then
51
+ setItemBooleanField(itemHandle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, true)
52
+ end
53
+ end
54
+ end
55
+ function UnitInventory.prototype.__index(self, key)
56
+ if ____type(key) == "number" then
57
+ return Item:of(unitItemInSlot(handleByUnitInventory[self], key - 1))
58
+ end
59
+ return rawget(____exports.UnitInventory.prototype, key)
60
+ end
61
+ function UnitInventory.prototype.__len(self)
62
+ return unitInventorySize(handleByUnitInventory[self])
63
+ end
64
+ function UnitInventory.prototype.__ipairs(self)
65
+ local handle = handleByUnitInventory[self]
66
+ return unitInventoryNext, handle, 0
67
+ end
68
+ __TS__ObjectDefineProperty(
69
+ Unit.prototype,
70
+ "inventory",
71
+ {get = function(self)
72
+ local inventory = __TS__New(____exports.UnitInventory, self.handle)
73
+ rawset(self, "inventory", inventory)
74
+ return inventory
75
+ end}
76
+ )
77
+ return ____exports