warscript 0.0.1-dev.2100d8f → 0.0.1-dev.221cca4

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 (272) hide show
  1. package/core/types/effect.d.ts +11 -1
  2. package/core/types/effect.lua +43 -77
  3. package/core/types/frame.d.ts +1 -0
  4. package/core/types/frame.lua +112 -37
  5. package/core/types/handle.lua +9 -9
  6. package/core/types/item.d.ts +1 -0
  7. package/core/types/item.lua +1 -0
  8. package/core/types/player.d.ts +2 -1
  9. package/core/types/player.lua +18 -13
  10. package/core/types/playerColor.lua +4 -3
  11. package/core/types/sound.d.ts +1 -1
  12. package/core/types/sound.lua +14 -9
  13. package/core/types/unit.d.ts +5 -0
  14. package/core/types/unit.lua +5 -0
  15. package/core/util.d.ts +3 -1
  16. package/core/util.lua +109 -3
  17. package/decl/native.d.ts +705 -7
  18. package/engine/behaviour/ability/damage.d.ts +4 -0
  19. package/engine/behaviour/ability/damage.lua +19 -15
  20. package/engine/behaviour/ability/emulate-impact.lua +5 -4
  21. package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
  22. package/engine/behaviour/ability/on-command-impact.lua +1 -0
  23. package/engine/behaviour/ability.d.ts +10 -5
  24. package/engine/behaviour/ability.lua +40 -0
  25. package/engine/behaviour/unit.d.ts +1 -0
  26. package/engine/behaviour/unit.lua +1 -0
  27. package/engine/buff.d.ts +61 -27
  28. package/engine/buff.lua +304 -133
  29. package/engine/index.d.ts +2 -1
  30. package/engine/internal/ability.d.ts +4 -0
  31. package/engine/internal/ability.lua +52 -33
  32. package/engine/internal/item/fields.d.ts +12 -0
  33. package/engine/internal/item/fields.lua +33 -0
  34. package/engine/internal/item/owner-cache.d.ts +5 -0
  35. package/engine/internal/item/owner-cache.lua +4 -0
  36. package/engine/internal/item+owner.d.ts +2 -0
  37. package/engine/internal/item+owner.lua +27 -4
  38. package/engine/internal/item.d.ts +20 -5
  39. package/engine/internal/item.lua +146 -57
  40. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  41. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  42. package/engine/internal/object-data/health-bonus.lua +16 -0
  43. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  44. package/engine/internal/object-data/health-regeneration-rate-increase.lua +21 -0
  45. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  46. package/engine/internal/object-data/mana-bonus.lua +16 -0
  47. package/engine/internal/unit/ability.lua +15 -3
  48. package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
  49. package/engine/internal/unit/add-item-to-slot.lua +53 -12
  50. package/engine/internal/unit/appearance.d.ts +15 -0
  51. package/engine/internal/unit/appearance.lua +85 -0
  52. package/engine/internal/unit/bonus.d.ts +6 -0
  53. package/engine/internal/unit/bonus.lua +33 -3
  54. package/engine/internal/unit/buff.d.ts +2 -2
  55. package/engine/internal/unit/buff.lua +34 -19
  56. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  57. package/engine/internal/unit/equipment-inventory.lua +233 -0
  58. package/engine/internal/unit/expiration-timer.lua +1 -1
  59. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  60. package/engine/internal/unit/extended-inventory.lua +99 -0
  61. package/engine/internal/unit/ignore-events-items.lua +10 -1
  62. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
  63. package/engine/internal/unit/inventory.lua +87 -0
  64. package/engine/internal/unit/item-container.d.ts +25 -0
  65. package/engine/internal/unit/item-container.lua +11 -0
  66. package/engine/internal/unit/item-order-events.d.ts +17 -0
  67. package/engine/internal/unit/item-order-events.lua +67 -0
  68. package/engine/internal/unit/item-slot.d.ts +27 -0
  69. package/engine/internal/unit/item-slot.lua +92 -0
  70. package/engine/internal/unit/order.d.ts +3 -3
  71. package/engine/internal/unit/order.lua +10 -10
  72. package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
  73. package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
  74. package/engine/internal/unit/range-event.d.ts +12 -0
  75. package/engine/internal/unit/range-event.lua +90 -0
  76. package/engine/internal/unit+ability.lua +2 -2
  77. package/engine/internal/unit+bonus.lua +3 -3
  78. package/engine/internal/unit+damage.d.ts +9 -0
  79. package/engine/internal/unit+damage.lua +33 -0
  80. package/engine/internal/unit+rally.lua +9 -31
  81. package/engine/internal/unit-missile-data.lua +58 -32
  82. package/engine/internal/unit-missile-launch.lua +13 -13
  83. package/engine/internal/unit.d.ts +2 -10
  84. package/engine/internal/unit.lua +81 -126
  85. package/engine/local-client.d.ts +26 -0
  86. package/engine/local-client.lua +294 -54
  87. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  88. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  89. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  90. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  91. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  92. package/engine/object-data/auxiliary/item-class.lua +2 -0
  93. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  94. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  95. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  96. package/engine/object-data/auxiliary/order-type.lua +2 -0
  97. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  98. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  99. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  100. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  101. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  102. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  103. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  104. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  105. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  106. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  107. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  108. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  109. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  110. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  111. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  112. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  113. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
  114. package/engine/object-data/entry/ability-type/blank-configurable.lua +30 -0
  115. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  116. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  117. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  118. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  119. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  120. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  121. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  122. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  123. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  124. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  125. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  126. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  127. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  128. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  129. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  130. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  131. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  132. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  133. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  134. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  135. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  136. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  137. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  138. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  139. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  140. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  141. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  142. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  143. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  144. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  145. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  146. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  147. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  148. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  149. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  150. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  151. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  152. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  153. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  154. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  155. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  156. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  157. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  158. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  159. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  160. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  161. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  162. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  163. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  164. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  165. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  166. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  167. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  168. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  169. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  170. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  171. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  172. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  173. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  174. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  175. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  176. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  177. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  178. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  179. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  180. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  181. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  182. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  183. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  184. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  185. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  186. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  187. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  188. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  189. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  190. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  191. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  192. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  193. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  194. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  195. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  196. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  197. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  198. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  199. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  200. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  201. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  202. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  203. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  204. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  205. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  206. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  207. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  208. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  209. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  210. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  211. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  212. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  213. package/engine/object-data/entry/ability-type.d.ts +12 -3
  214. package/engine/object-data/entry/ability-type.lua +137 -4
  215. package/engine/object-data/entry/buff-type/applicable.lua +113 -109
  216. package/engine/object-data/entry/buff-type.d.ts +6 -2
  217. package/engine/object-data/entry/buff-type.lua +26 -0
  218. package/engine/object-data/entry/destructible-type.d.ts +6 -2
  219. package/engine/object-data/entry/destructible-type.lua +26 -0
  220. package/engine/object-data/entry/item-type.d.ts +18 -3
  221. package/engine/object-data/entry/item-type.lua +84 -0
  222. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  223. package/engine/object-data/entry/lightning-type.lua +1 -1
  224. package/engine/object-data/entry/sound-preset.d.ts +2 -2
  225. package/engine/object-data/entry/unit-type.d.ts +47 -2
  226. package/engine/object-data/entry/unit-type.lua +383 -49
  227. package/engine/object-data/entry/upgrade.d.ts +2 -2
  228. package/engine/object-data/entry.d.ts +6 -1
  229. package/engine/object-data/entry.lua +8 -0
  230. package/engine/object-field/ability.lua +2 -2
  231. package/engine/object-field/item.d.ts +22 -0
  232. package/engine/object-field/item.lua +118 -0
  233. package/engine/object-field.d.ts +1 -1
  234. package/engine/object-field.lua +9 -7
  235. package/engine/random.d.ts +1 -0
  236. package/engine/random.lua +8 -0
  237. package/engine/standard/entries/ability-type.d.ts +3102 -7
  238. package/engine/standard/entries/ability-type.lua +0 -6
  239. package/engine/standard/entries/item-type.d.ts +1299 -0
  240. package/engine/standard/entries/item-type.lua +2 -0
  241. package/engine/standard/entries/lightning-type.d.ts +42 -15
  242. package/engine/standard/entries/lightning-type.lua +0 -14
  243. package/engine/standard/entries/unit-type.d.ts +5 -0
  244. package/engine/standard/entries/unit-type.lua +5 -0
  245. package/engine/standard/fields/item.d.ts +4 -0
  246. package/engine/standard/fields/item.lua +6 -0
  247. package/engine/unit.d.ts +6 -1
  248. package/engine/unit.lua +6 -1
  249. package/event.d.ts +1 -1
  250. package/lualib_bundle.lua +1 -1
  251. package/math.d.ts +2 -0
  252. package/math.lua +14 -0
  253. package/network.lua +25 -1
  254. package/objutil/buff.lua +1 -1
  255. package/objutil/object.lua +1 -1
  256. package/operation.d.ts +8 -1
  257. package/operation.lua +38 -18
  258. package/package.json +3 -23
  259. package/patch-lua.lua +15 -0
  260. package/utility/linked-map.d.ts +11 -2
  261. package/utility/linked-map.lua +41 -0
  262. package/utility/linked-set.d.ts +3 -1
  263. package/utility/linked-set.lua +23 -0
  264. package/utility/random.d.ts +102 -0
  265. package/utility/random.lua +273 -0
  266. package/utility/unordered-map.d.ts +27 -0
  267. package/utility/unordered-map.lua +99 -0
  268. package/engine/internal/unit/item.lua +0 -78
  269. /package/engine/internal/object-data/{armor-increase.d.ts → armor-bonus.d.ts} +0 -0
  270. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  271. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  272. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -139,6 +139,7 @@ export declare class Unit extends Handle<junit> {
139
139
  private _fields?;
140
140
  private getEvent;
141
141
  constructor(handle: junit);
142
+ private saveData;
142
143
  protected onDestroy(): HandleDestructor;
143
144
  addAttackHandler(condition: AttackHandlerCondition, action: AttackHandlerAction): AttackHandler;
144
145
  removeAttackHandler(handler: AttackHandler): boolean;
@@ -291,7 +292,6 @@ export declare class Unit extends Handle<junit> {
291
292
  set waygateDestination(v: Vec2);
292
293
  get waygateDestination(): Vec2;
293
294
  get abilities(): ReadonlyArray<UnitAbility>;
294
- get onUnitInRange(): Record<number, Event<[Unit]>>;
295
295
  get onManaEqual(): Record<number, Event<[Unit, number]>>;
296
296
  get manaEvent(): Record<Operator, Record<number, Event<[Unit]>>>;
297
297
  get targetAcquiredEvent(): Event;
@@ -321,7 +321,7 @@ export declare class Unit extends Handle<junit> {
321
321
  static readonly constructionStartEvent: UnitTriggerEvent<[]>;
322
322
  static readonly onUpgradeFinish: UnitTriggerEvent<[]>;
323
323
  static readonly onSpellEffect: EventDispatcher<[Unit, number], [Unit]>;
324
- static readonly onTargetCast: EventDispatcher<[Unit, number, Item | Unit | Destructable], [Unit, Item | Unit | Destructable]>;
324
+ static readonly onTargetCast: EventDispatcher<[Unit, number, Destructable | Unit | Item], [Unit, Destructable | Unit | Item]>;
325
325
  static readonly onCastPrepare: AbilityEventDispatcher<[]>;
326
326
  static readonly onCast: AbilityEventDispatcher<[]>;
327
327
  static readonly onPointCastPrepare: AbilityEventDispatcher<[number, number]>;
@@ -348,15 +348,7 @@ 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
- static get itemUseOrderEvent(): Event<[unit: Unit, item: Item]>;
354
- static get itemMoveOrderEvent(): Event<[
355
- unit: Unit,
356
- item: Item,
357
- slotFrom: 0 | 1 | 2 | 3 | 4 | 5,
358
- slotTo: 0 | 1 | 2 | 3 | 4 | 5
359
- ]>;
360
352
  static get onCreate(): EventDispatcher<[Unit], [Unit]>;
361
353
  static get destroyEvent(): EventDispatcher<[Unit], [Unit]>;
362
354
  getField(field: junitintegerfield | junitrealfield): number;
@@ -47,12 +47,10 @@ local checkNotNull = ____preconditions.checkNotNull
47
47
  local ____constants = require("engine.constants")
48
48
  local HEALTH_REGENERATION_RATE_BONUS_PER_STRENGTH_POINT = ____constants.HEALTH_REGENERATION_RATE_BONUS_PER_STRENGTH_POINT
49
49
  local MANA_REGENERATION_RATE_BONUS_PER_INTELLIGENCE_POINT = ____constants.MANA_REGENERATION_RATE_BONUS_PER_INTELLIGENCE_POINT
50
- local ____arrays = require("utility.arrays")
51
- local forEach = ____arrays.forEach
52
- local ____math = require("math")
53
- local min = ____math.min
54
50
  local ____ignore_2Devents_2Ditems = require("engine.internal.unit.ignore-events-items")
55
- local ignoreEventsItems = ____ignore_2Devents_2Ditems.ignoreEventsItems
51
+ local isItemIgnoredInEvents = ____ignore_2Devents_2Ditems.isItemIgnoredInEvents
52
+ local ____owner_2Dcache = require("engine.internal.item.owner-cache")
53
+ local ownerByItem = ____owner_2Dcache.ownerByItem
56
54
  local ____attack_2Dtype = require("engine.object-data.auxiliary.attack-type")
57
55
  local attackTypeToNative = ____attack_2Dtype.attackTypeToNative
58
56
  local nativeToAttackType = ____attack_2Dtype.nativeToAttackType
@@ -383,15 +381,27 @@ local modifiers = {
383
381
  end,
384
382
  armor = function(unit, value)
385
383
  if UnitAddAbility(unit, armorBonusAbilityId) then
386
- assert(UnitMakeAbilityPermanent(unit, true, armorBonusAbilityId))
384
+ assert(
385
+ UnitMakeAbilityPermanent(unit, true, armorBonusAbilityId),
386
+ "armor bonus ability must be made permanent",
387
+ unit
388
+ )
387
389
  end
388
- local ability = assert(BlzGetUnitAbility(unit, armorBonusAbilityId))
389
- assert(BlzSetAbilityRealLevelField(
390
- ability,
391
- armorBonusField,
392
- 0,
393
- BlzGetAbilityRealLevelField(ability, armorBonusField, 0) + value
394
- ))
390
+ local ability = assert(
391
+ BlzGetUnitAbility(unit, armorBonusAbilityId),
392
+ "armor bonus ability must be existing",
393
+ unit
394
+ )
395
+ assert(
396
+ BlzSetAbilityRealLevelField(
397
+ ability,
398
+ armorBonusField,
399
+ 0,
400
+ BlzGetAbilityRealLevelField(ability, armorBonusField, 0) + value
401
+ ),
402
+ "armor bonus ability field must be set",
403
+ unit
404
+ )
395
405
  end
396
406
  }
397
407
  local getters = {
@@ -580,8 +590,6 @@ __TS__SetDescriptor(
580
590
  },
581
591
  true
582
592
  )
583
- local unitInventorySize = UnitInventorySize
584
- local unitItemInSlot = UnitItemInSlot
585
593
  local getItemAbility = BlzGetItemAbility
586
594
  local getUnitAbility = BlzGetUnitAbility
587
595
  local getUnitAbilityByIndex = BlzGetUnitAbilityByIndex
@@ -599,8 +607,8 @@ local function retrieveAbility(unit, ability, abilityId)
599
607
  ____exports.Unit:of(unit)
600
608
  )
601
609
  end
602
- for i = 0, unitInventorySize(unit) - 1 do
603
- local item = unitItemInSlot(unit, i)
610
+ for i = 0, UnitInventorySize(unit) - 1 do
611
+ local item = UnitItemInSlot(unit, i)
604
612
  if getItemAbility(item, abilityId) == ability then
605
613
  return ItemAbility:of(
606
614
  ability,
@@ -645,13 +653,17 @@ local fieldSetters = {
645
653
  }
646
654
  local dummies = {}
647
655
  for ____, player in ipairs(Player.all) do
648
- local dummy = assert(createUnit(
649
- player.handle,
650
- dummyUnitId,
651
- 0,
652
- 0,
653
- 270
654
- ))
656
+ local dummy = assert(
657
+ createUnit(
658
+ player.handle,
659
+ dummyUnitId,
660
+ 0,
661
+ 0,
662
+ 270
663
+ ),
664
+ "dummy must be created",
665
+ player
666
+ )
655
667
  ShowUnit(dummy, false)
656
668
  dummies[player] = dummy
657
669
  end
@@ -694,16 +706,28 @@ function Unit.prototype.____constructor(self, handle)
694
706
  nextSyncId = ____nextSyncId_1 + 1
695
707
  self.syncId = ____nextSyncId_1
696
708
  self._owner = Player:of(getOwningPlayer(handle))
697
- assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
698
- assert(unitAddAbility(handle, morphDetectAbilityId))
709
+ assert(
710
+ unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId),
711
+ "leave detection ability must be added",
712
+ self
713
+ )
714
+ assert(
715
+ unitAddAbility(handle, morphDetectAbilityId),
716
+ "morph detection ability must be added",
717
+ self
718
+ )
699
719
  if unitAddAbility(
700
720
  handle,
701
721
  fourCC("Amrf")
702
722
  ) then
703
- assert(unitRemoveAbility(
704
- handle,
705
- fourCC("Amrf")
706
- ))
723
+ assert(
724
+ unitRemoveAbility(
725
+ handle,
726
+ fourCC("Amrf")
727
+ ),
728
+ "fly ability must be removed after addition",
729
+ self
730
+ )
707
731
  end
708
732
  unitBySyncId[self.syncId] = self
709
733
  local ____ = self.abilities
@@ -724,13 +748,15 @@ function Unit.prototype.getEvent(self, jevent, collector)
724
748
  end
725
749
  return event
726
750
  end
751
+ function Unit.prototype.saveData(self)
752
+ local handle = self.handle
753
+ self[108] = self[108] or getUnitX(handle)
754
+ self[109] = self[109] or getUnitY(handle)
755
+ self._owner = self._owner or Player:of(getOwningPlayer(handle))
756
+ end
727
757
  function Unit.prototype.onDestroy(self)
728
758
  local handle = self.handle
729
- self[108] = getUnitX(handle)
730
- self[109] = getUnitY(handle)
731
- if not self._owner then
732
- self._owner = Player:of(getOwningPlayer(handle))
733
- end
759
+ self:saveData()
734
760
  local abilities = self.abilities
735
761
  for ____, ability in ipairs(abilities) do
736
762
  ability:destroy()
@@ -748,7 +774,9 @@ function Unit.prototype.onDestroy(self)
748
774
  end
749
775
  local eventsToDestroy = self._eventsToDestroy
750
776
  if eventsToDestroy ~= nil then
751
- forEach(eventsToDestroy, "destroy")
777
+ for ____, event in ipairs(eventsToDestroy) do
778
+ event:destroy()
779
+ end
752
780
  end
753
781
  if getUnitAbilityLevel(handle, leaveDetectAbilityId) > 0 then
754
782
  unitRemoveAbility(handle, leaveDetectAbilityId)
@@ -766,7 +794,11 @@ function Unit.prototype.addAttackHandler(self, condition, action)
766
794
  self._attackHandlers = handlers
767
795
  if #handlers == 1 then
768
796
  local handle = self.handle
769
- assert(unitAddAbility(handle, attackHandlerAbilityId) and UnitMakeAbilityPermanent(handle, true, attackHandlerAbilityId))
797
+ assert(
798
+ unitAddAbility(handle, attackHandlerAbilityId) and UnitMakeAbilityPermanent(handle, true, attackHandlerAbilityId),
799
+ "attack handler ability must be added",
800
+ self
801
+ )
770
802
  end
771
803
  return handler
772
804
  end
@@ -925,7 +957,7 @@ function Unit.prototype.dropItemSlot(self, item, slot)
925
957
  return UnitDropItemSlot(self.handle, item.handle, slot)
926
958
  end
927
959
  function Unit.prototype.itemInSlot(self, slot)
928
- return Item:of(unitItemInSlot(self.handle, slot))
960
+ return Item:of(UnitItemInSlot(self.handle, slot))
929
961
  end
930
962
  function Unit.prototype.addAbility(self, abilityId)
931
963
  local ability = UnitAbility:of(
@@ -1283,7 +1315,7 @@ __TS__SetDescriptor(
1283
1315
  Unit.prototype,
1284
1316
  "isStunned",
1285
1317
  {get = function(self)
1286
- return getUnitCurrentOrder(self.handle) == orderId("stunned")
1318
+ return getUnitCurrentOrder(self.handle) == 851973
1287
1319
  end},
1288
1320
  true
1289
1321
  )
@@ -1845,7 +1877,7 @@ __TS__SetDescriptor(
1845
1877
  Unit.prototype,
1846
1878
  "pathingCollisionRange",
1847
1879
  {get = function(self)
1848
- return 16 * (min(
1880
+ return 16 * (math.min(
1849
1881
  getUnitCollisionSize(self.handle) // 16,
1850
1882
  3
1851
1883
  ) + 1)
@@ -1955,30 +1987,6 @@ __TS__SetDescriptor(
1955
1987
  end},
1956
1988
  true
1957
1989
  )
1958
- __TS__SetDescriptor(
1959
- Unit.prototype,
1960
- "onUnitInRange",
1961
- {get = function(self)
1962
- local handle = self.handle
1963
- local onUnitInRange = setmetatable(
1964
- {},
1965
- {__index = function(self, value)
1966
- local event = __TS__New(
1967
- TriggerEvent,
1968
- function(trigger)
1969
- TriggerRegisterUnitInRangeSimple(trigger, value, handle)
1970
- end,
1971
- function() return ____exports.Unit:of(handle) end
1972
- )
1973
- rawset(self, value, event)
1974
- return event
1975
- end}
1976
- )
1977
- rawset(self, "onUnitInRange", onUnitInRange)
1978
- return onUnitInRange
1979
- end},
1980
- true
1981
- )
1982
1990
  __TS__SetDescriptor(
1983
1991
  Unit.prototype,
1984
1992
  "onManaEqual",
@@ -2136,7 +2144,7 @@ Unit.onResurrect = __TS__New(
2136
2144
  ____exports.Unit.deathEvent:addListener(function(unit)
2137
2145
  dead[unit] = true
2138
2146
  end)
2139
- ____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
2147
+ ____exports.Unit.onImmediateOrder[852056]:addListener(function(unit)
2140
2148
  if dead[unit] and not IsUnitType(unit.handle, UNIT_TYPE_DEAD) then
2141
2149
  dead[unit] = false
2142
2150
  invoke(event, unit)
@@ -2153,7 +2161,7 @@ Unit.morphEvent = __TS__New(
2153
2161
  invoke(event, unit)
2154
2162
  end
2155
2163
  end
2156
- ____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
2164
+ ____exports.Unit.onImmediateOrder[852056]:addListener(function(unit)
2157
2165
  if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
2158
2166
  Timer:run(ifNotLeft, unit)
2159
2167
  end
@@ -2620,7 +2628,7 @@ Unit.itemDroppedEvent = __TS__New(
2620
2628
  function()
2621
2629
  local unit = getTriggerUnit()
2622
2630
  local item = getManipulatedItem()
2623
- if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2631
+ if getUnitTypeId(unit) ~= dummyUnitId and not isItemIgnoredInEvents(item) then
2624
2632
  return ____exports.Unit:of(unit), Item:of(item)
2625
2633
  end
2626
2634
  return IgnoreEvent
@@ -2632,10 +2640,10 @@ Unit.itemPickedUpEvent = __TS__New(
2632
2640
  function()
2633
2641
  local unitHandle = getTriggerUnit()
2634
2642
  local itemHandle = getManipulatedItem()
2635
- if getUnitTypeId(unitHandle) ~= dummyUnitId and not (ignoreEventsItems[itemHandle] ~= nil) then
2643
+ if getUnitTypeId(unitHandle) ~= dummyUnitId and not isItemIgnoredInEvents(itemHandle) then
2636
2644
  local unit = ____exports.Unit:of(unitHandle)
2637
2645
  local item = Item:of(itemHandle)
2638
- if item.owner ~= unit then
2646
+ if ownerByItem[item] ~= unit then
2639
2647
  return unit, item
2640
2648
  end
2641
2649
  end
@@ -2648,17 +2656,12 @@ Unit.itemUsedEvent = __TS__New(
2648
2656
  function()
2649
2657
  local unit = getTriggerUnit()
2650
2658
  local item = getManipulatedItem()
2651
- if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
2659
+ if getUnitTypeId(unit) ~= dummyUnitId and not isItemIgnoredInEvents(item) then
2652
2660
  return ____exports.Unit:of(unit), Item:of(item)
2653
2661
  end
2654
2662
  return IgnoreEvent
2655
2663
  end
2656
2664
  )
2657
- Unit.itemStackedEvent = __TS__New(
2658
- ____exports.UnitTriggerEvent,
2659
- EVENT_PLAYER_UNIT_STACK_ITEM,
2660
- function() return ____exports.Unit:of(getTriggerUnit()), Item:of(BlzGetStackingItemTarget()), Item:of(BlzGetStackingItemSource()) end
2661
- )
2662
2665
  __TS__ObjectDefineProperty(
2663
2666
  Unit,
2664
2667
  "itemChargesChangedEvent",
@@ -2674,51 +2677,6 @@ __TS__ObjectDefineProperty(
2674
2677
  return event
2675
2678
  end}
2676
2679
  )
2677
- __TS__ObjectDefineProperty(
2678
- Unit,
2679
- "itemUseOrderEvent",
2680
- {get = function(self)
2681
- local event = __TS__New(Event)
2682
- for order = orderId("useslot0"), orderId("useslot5") do
2683
- local slot = order - orderId("useslot0")
2684
- local function listener(unit)
2685
- local item = unit.items[slot + 1]
2686
- if item ~= nil then
2687
- invoke(event, unit, item)
2688
- end
2689
- end
2690
- self.onImmediateOrder[order]:addListener(listener)
2691
- self.onTargetOrder[order]:addListener(listener)
2692
- self.onPointOrder[order]:addListener(listener)
2693
- end
2694
- rawset(self, "itemUseOrderEvent", event)
2695
- return event
2696
- end}
2697
- )
2698
- __TS__ObjectDefineProperty(
2699
- Unit,
2700
- "itemMoveOrderEvent",
2701
- {get = function(self)
2702
- local event = __TS__New(Event)
2703
- for order = orderId("moveslot0"), orderId("moveslot5") do
2704
- local slotTo = order - orderId("moveslot0")
2705
- self.onTargetOrder[order]:addListener(function(unit, item)
2706
- local slotFrom = unit.items:findSlot(item)
2707
- if slotFrom ~= nil then
2708
- invoke(
2709
- event,
2710
- unit,
2711
- item,
2712
- slotFrom,
2713
- slotTo
2714
- )
2715
- end
2716
- end)
2717
- end
2718
- rawset(self, "itemMoveOrderEvent", event)
2719
- return event
2720
- end}
2721
- )
2722
2680
  __TS__ObjectDefineProperty(
2723
2681
  Unit,
2724
2682
  "onCreate",
@@ -2765,11 +2723,7 @@ Unit.synchronize = synchronizer(
2765
2723
  function(____, id) return fourCC(id) end
2766
2724
  )
2767
2725
  end)
2768
- for ____, leaveOrderId in ipairs({
2769
- orderId("undefend"),
2770
- orderId("magicundefense"),
2771
- orderId("unimmolation")
2772
- }) do
2726
+ for ____, leaveOrderId in ipairs({852056, 852479, 852178}) do
2773
2727
  ____exports.Unit.onImmediateOrder[leaveOrderId]:addListener(function(unit)
2774
2728
  local handle = unit.handle
2775
2729
  for i = 1, #leaveAbilityIds do
@@ -2777,7 +2731,8 @@ Unit.synchronize = synchronizer(
2777
2731
  return
2778
2732
  end
2779
2733
  end
2780
- unit:destroy()
2734
+ unit:saveData()
2735
+ Timer:run(unit, "destroy")
2781
2736
  end)
2782
2737
  end
2783
2738
  end)(Unit)
@@ -9,15 +9,41 @@ 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;
17
+ static get isMinimized(): boolean;
15
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;
16
33
  static get mouseFocusUnit(): Async<Unit> | undefined;
34
+ /**
35
+ * Local selection sampled every 1/64 second; undefined before the first tick. Among
36
+ * several selected units, the one the portrait shows, identified by its health and
37
+ * mana; units with identical values cannot be told apart.
38
+ */
17
39
  static get mainSelectedUnit(): Async<Unit> | undefined;
18
40
  static get mainSelectedUnitChangeEvent(): Event<[
19
41
  previousMainSelectedUnit: Unit | undefined,
20
42
  newMainSelectedUnit: Unit | undefined
21
43
  ]>;
44
+ static get isInTargetingMode(): boolean;
45
+ static readonly targetingModeEnterEvent: Event<[]>;
46
+ static readonly targetingModeLeaveEvent: Event<[]>;
47
+ static readonly targetingModeStateChangeEvent: Event<[]>;
22
48
  static readonly onDisconnect: TriggerEvent<[]>;
23
49
  }