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
@@ -2,22 +2,34 @@
2
2
  import { Handle, HandleDestructor } from "../../core/types/handle";
3
3
  import { Color } from "../../core/types/color";
4
4
  import { Event } from "../../event";
5
+ import { PlayerColor } from "../../core/types/playerColor";
6
+ import { EquipmentType } from "../object-data/auxiliary/equipment-type";
7
+ import { ItemTag } from "../object-data/auxiliary/item-tag";
5
8
  import { ReadonlyRect } from "../../core/types/rect";
6
9
  import { ItemAbility } from "./ability";
7
10
  import { AbilityTypeId } from "../object-data/entry/ability-type";
11
+ import type { ItemTypeId } from "../object-data/entry/item-type";
8
12
  type DefenseType = 0 | 1 | 2 | 3 | 4 | 5;
9
- export declare const addAndGetAbility: (handle: jitem, abilityTypeId: AbilityTypeId) => jability | null;
10
13
  declare const enum ItemPropertyKey {
11
14
  ABILITIES = 100,
12
- LUA_INDEX_BY_ABILITY_TYPE_ID = 101
15
+ DEATH_TRIGGER = 101,
16
+ COLOR = 102
13
17
  }
14
18
  export declare class Item extends Handle<jitem> {
15
19
  private readonly [ItemPropertyKey.ABILITIES];
16
- private readonly [ItemPropertyKey.LUA_INDEX_BY_ABILITY_TYPE_ID];
20
+ private readonly [ItemPropertyKey.DEATH_TRIGGER];
21
+ private [ItemPropertyKey.COLOR]?;
17
22
  constructor(handle: jitem);
18
23
  protected onDestroy(): HandleDestructor;
19
24
  static create<T extends Item>(this: typeof Item & (new (handle: jitem) => T), id: number, x: number, y: number, skinId?: number): T;
20
- get typeId(): number;
25
+ get isEquipped(): boolean;
26
+ get isInBag(): boolean;
27
+ get equipmentType(): EquipmentType;
28
+ get tag(): ItemTag;
29
+ get color(): PlayerColor;
30
+ set color(color: PlayerColor);
31
+ static getRandomTypeId(level: number, equipmentType?: EquipmentType, tag?: ItemTag, itemType?: jitemtype): ItemTypeId | undefined;
32
+ get typeId(): ItemTypeId;
21
33
  set skinId(v: number);
22
34
  get skinId(): number;
23
35
  set name(v: string);
@@ -30,22 +42,18 @@ export declare class Item extends Handle<jitem> {
30
42
  get extendedTooltip(): string;
31
43
  set iconPath(v: string);
32
44
  get iconPath(): string;
33
- set dropOnDeath(v: boolean);
34
- get dropOnDeath(): boolean;
35
- set droppable(v: boolean);
36
- get droppable(): boolean;
37
- set pawnable(v: boolean);
38
- get pawnable(): boolean;
39
- set perishable(v: boolean);
40
- get perishable(): boolean;
41
- set powerup(v: boolean);
42
- get powerup(): boolean;
45
+ set dropsOnDeath(dropsOnDeath: boolean);
46
+ get dropsOnDeath(): boolean;
47
+ set canBeDropped(canBeDropped: boolean);
48
+ get canBeDropped(): boolean;
49
+ set perishes(perishes: boolean);
50
+ get perishes(): boolean;
51
+ set isPowerUp(isPowerUp: boolean);
52
+ get isPowerUp(): boolean;
43
53
  get isAlive(): boolean;
44
54
  get isDead(): boolean;
45
55
  set isInvulnerable(isInvulnerable: boolean);
46
56
  get isInvulnerable(): boolean;
47
- set usable(v: boolean);
48
- get usable(): boolean;
49
57
  set visible(v: boolean);
50
58
  get visible(): boolean;
51
59
  set level(v: number);
@@ -73,14 +81,18 @@ export declare class Item extends Handle<jitem> {
73
81
  set position(v: Vec2);
74
82
  set charges(v: number);
75
83
  get charges(): number;
84
+ consumeCharge(): boolean;
85
+ consumeCharges(count: number): boolean;
76
86
  addAbility(abilityTypeId: AbilityTypeId): ItemAbility | undefined;
77
87
  removeAbility(abilityTypeId: AbilityTypeId): boolean;
78
88
  hasAbility(abilityTypeId: AbilityTypeId): boolean;
79
89
  getAbility(abilityTypeId: AbilityTypeId): ItemAbility | undefined;
80
90
  get abilities(): readonly ItemAbility[];
81
- static getInRange(pos: Vec2, range: number): Item[];
91
+ static getInRange(x: number, y: number, range: number): Item[];
82
92
  static getInRect(rect: ReadonlyRect): Item[];
83
93
  static get onCreate(): Event<[Item]>;
84
- static get onDestroy(): Event<[Item]>;
94
+ static get destroyEvent(): Event<[Item]>;
95
+ static readonly deathEvent: Event<[Item]>;
96
+ static readonly chargesChangedEvent: Event<[Item]>;
85
97
  }
86
98
  export {};
@@ -1,33 +1,96 @@
1
1
  local ____lualib = require("lualib_bundle")
2
+ local __TS__New = ____lualib.__TS__New
2
3
  local __TS__Class = ____lualib.__TS__Class
3
4
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
5
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
5
6
  local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
6
7
  local __TS__Delete = ____lualib.__TS__Delete
7
8
  local ____exports = {}
9
+ local invoke
8
10
  local ____handle = require("core.types.handle")
9
11
  local Handle = ____handle.Handle
10
12
  local ____color = require("core.types.color")
11
13
  local Color = ____color.Color
14
+ local ____event = require("event")
15
+ local Event = ____event.Event
16
+ local ____playerColor = require("core.types.playerColor")
17
+ local PlayerColor = ____playerColor.PlayerColor
12
18
  local ____rect = require("core.types.rect")
13
19
  local Rect = ____rect.Rect
14
20
  local ____ability = require("engine.internal.ability")
15
21
  local ItemAbility = ____ability.ItemAbility
16
22
  local ____ability = require("engine.internal.item.ability")
17
23
  local doAbilityAction = ____ability.doAbilityAction
18
- local itemAddAbility = BlzItemAddAbility
19
- local itemRemoveAbility = BlzItemRemoveAbility
24
+ local doAbilityActionForceDummy = ____ability.doAbilityActionForceDummy
25
+ local itemAbilityDummy = ____ability.itemAbilityDummy
26
+ local ____dummy_2Ditem = require("engine.internal.object-data.dummy-item")
27
+ local DUMMY_ITEM_ID = ____dummy_2Ditem.DUMMY_ITEM_ID
28
+ local ____add_2Ditem_2Dto_2Dslot = require("engine.internal.unit.add-item-to-slot")
29
+ local SLOT_FILLER_ITEM_TYPE_ID = ____add_2Ditem_2Dto_2Dslot.SLOT_FILLER_ITEM_TYPE_ID
30
+ local ____vec2 = require("math.vec2")
31
+ local distance = ____vec2.distance
32
+ local ____timer = require("core.types.timer")
33
+ local Timer = ____timer.Timer
34
+ local chooseRandomItemExWithFilter = ChooseRandomItemExWithFilter
35
+ local condition = Condition
36
+ local convertEquipmentType = ConvertEquipmentType
37
+ local convertItemTag = ConvertItemTag
38
+ local createTrigger = CreateTrigger
39
+ local destroyTrigger = DestroyTrigger
40
+ local enumItemsInRect = EnumItemsInRect
41
+ local getAbilityId = BlzGetAbilityId
42
+ local getEnumItem = GetEnumItem
43
+ local getHandleId = GetHandleId
20
44
  local getItemAbility = BlzGetItemAbility
21
- local isItemPowerup = IsItemPowerup
22
45
  local getItemAbilityByIndex = BlzGetItemAbilityByIndex
23
- local getAbilityId = BlzGetAbilityId
46
+ local getItemBooleanField = BlzGetItemBooleanField
47
+ local getItemCharges = GetItemCharges
48
+ local getItemEquipmentType = GetItemEquipmentType
49
+ local getItemIntegerField = BlzGetItemIntegerField
50
+ local getItemTag = GetItemTag
51
+ local getItemTypeId = GetItemTypeId
52
+ local getItemX = GetItemX
53
+ local getItemY = GetItemY
54
+ local getManipulatedItem = GetManipulatedItem
55
+ local getTriggerWidget = GetTriggerWidget
24
56
  local getWidgetLife = GetWidgetLife
57
+ local isItemEquipped = IsItemEquipped
58
+ local isItemInBag = IsItemInBag
59
+ local isItemPawnable = IsItemPawnable
60
+ local isItemPowerup = IsItemPowerup
61
+ local itemAddAbility = BlzItemAddAbility
62
+ local itemRemoveAbility = BlzItemRemoveAbility
63
+ local loadItemHandle = LoadItemHandle
25
64
  local removeItem = RemoveItem
26
- local getHandleId = GetHandleId
27
- local getItemIntegerField = BlzGetItemIntegerField
65
+ local saveWidgetHandle = SaveWidgetHandle
28
66
  local setItemBooleanField = BlzSetItemBooleanField
29
- local getItemBooleanField = BlzGetItemBooleanField
67
+ local setItemCharges = SetItemCharges
68
+ local setItemColor = SetItemColor
69
+ local setItemDropOnDeath = SetItemDropOnDeath
70
+ local setItemDroppable = SetItemDroppable
71
+ local setItemPawnable = SetItemPawnable
72
+ local setRect = SetRect
73
+ local triggerAddCondition = TriggerAddCondition
74
+ local triggerRegisterDeathEvent = TriggerRegisterDeathEvent
75
+ local unitRemoveAbility = UnitRemoveAbility
76
+ local unitRemoveItem = UnitRemoveItem
77
+ local unitUseItem = UnitUseItem
78
+ local unitUseItemPoint = UnitUseItemPoint
79
+ local unitUseItemTarget = UnitUseItemTarget
80
+ local tableRemove = table.remove
81
+ local itemChargesChangeEvent = __TS__New(Event)
82
+ local itemDeathEvent = __TS__New(Event)
83
+ _G.SetItemCharges = function(whichItem, charges)
84
+ setItemCharges(whichItem, charges)
85
+ invoke(
86
+ itemChargesChangeEvent,
87
+ ____exports.Item:of(whichItem)
88
+ )
89
+ end
90
+ invoke = Event.invoke
30
91
  local enumRect = Rect:create(0, 0, 0, 0).handle
92
+ ---
93
+ -- @internal For use by internal systems only.
31
94
  ____exports.addAndGetAbility = function(handle, abilityTypeId)
32
95
  if itemAddAbility(handle, abilityTypeId) then
33
96
  return getItemAbility(handle, abilityTypeId)
@@ -53,93 +116,244 @@ local function getItemAbilities(handle, item)
53
116
  end
54
117
  return abilities
55
118
  end
119
+ local function consumeCharge(handle)
120
+ do
121
+ local i = 0
122
+ local ability = getItemAbilityByIndex(handle, i)
123
+ while ability ~= nil do
124
+ unitRemoveAbility(
125
+ itemAbilityDummy,
126
+ getAbilityId(ability)
127
+ )
128
+ do
129
+ i = i + 1
130
+ ability = getItemAbilityByIndex(handle, i)
131
+ end
132
+ end
133
+ end
134
+ return unitUseItem(itemAbilityDummy, handle) or unitUseItemPoint(itemAbilityDummy, handle, 0, 0) or unitUseItemTarget(itemAbilityDummy, handle, itemAbilityDummy)
135
+ end
136
+ local targetCollection
137
+ local targetCollectionNextIndex
138
+ local centerX
139
+ local centerY
140
+ local enumRange
141
+ local function collectIntoTarget()
142
+ local item = getEnumItem()
143
+ local typeId = getItemTypeId(item)
144
+ if typeId ~= DUMMY_ITEM_ID and typeId ~= SLOT_FILLER_ITEM_TYPE_ID then
145
+ targetCollection[targetCollectionNextIndex] = ____exports.Item:of(item)
146
+ targetCollectionNextIndex = targetCollectionNextIndex + 1
147
+ end
148
+ end
149
+ local function collectIntoTargetRange()
150
+ local item = getEnumItem()
151
+ local typeId = getItemTypeId(item)
152
+ if distance(
153
+ getItemX(item),
154
+ getItemY(item),
155
+ centerX,
156
+ centerY
157
+ ) <= enumRange and typeId ~= DUMMY_ITEM_ID and typeId ~= SLOT_FILLER_ITEM_TYPE_ID then
158
+ targetCollection[targetCollectionNextIndex] = ____exports.Item:of(item)
159
+ targetCollectionNextIndex = targetCollectionNextIndex + 1
160
+ end
161
+ end
162
+ local hashtable = InitHashtable()
163
+ local deathTriggerCondition = condition(function()
164
+ saveWidgetHandle(
165
+ hashtable,
166
+ 1,
167
+ 1,
168
+ getTriggerWidget()
169
+ )
170
+ local item = ____exports.Item:of(loadItemHandle(hashtable, 1, 1))
171
+ if item ~= nil then
172
+ invoke(itemDeathEvent, item)
173
+ end
174
+ end)
175
+ itemDeathEvent:addListener(
176
+ 999999,
177
+ function(item)
178
+ Timer:run(item, "destroy")
179
+ end
180
+ )
56
181
  ____exports.Item = __TS__Class()
57
182
  local Item = ____exports.Item
58
183
  Item.name = "Item"
59
184
  __TS__ClassExtends(Item, Handle)
60
185
  function Item.prototype.____constructor(self, handle)
61
186
  Handle.prototype.____constructor(self, handle)
62
- local abilities = doAbilityAction(handle, getItemAbilities, self)
63
- self[100] = abilities
64
- local luaIndexByAbilityTypeId = {}
65
- for i = 1, #abilities do
66
- luaIndexByAbilityTypeId[abilities[i].typeId] = i
67
- end
68
- self[101] = luaIndexByAbilityTypeId
187
+ self[100] = doAbilityAction(handle, getItemAbilities, self)
188
+ local deathTrigger = createTrigger()
189
+ triggerRegisterDeathEvent(deathTrigger, handle)
190
+ triggerAddCondition(deathTrigger, deathTriggerCondition)
191
+ self[101] = deathTrigger
69
192
  end
70
193
  function Item.prototype.onDestroy(self)
194
+ local owner = self.owner
195
+ if owner ~= nil then
196
+ unitRemoveItem(owner.handle, self.handle)
197
+ end
71
198
  local abilities = self[100]
72
199
  for i = 1, #abilities do
73
200
  abilities[i]:destroy()
74
201
  end
75
202
  removeItem(self.handle)
203
+ destroyTrigger(self[101])
76
204
  return Handle.prototype.onDestroy(self)
77
205
  end
78
206
  function Item.create(self, id, x, y, skinId)
79
207
  return self:of(BlzCreateItemWithSkin(id, x, y, skinId or id))
80
208
  end
209
+ function Item.getRandomTypeId(self, level, equipmentType, tag, itemType)
210
+ if equipmentType == nil then
211
+ equipmentType = 9
212
+ end
213
+ if tag == nil then
214
+ tag = 8
215
+ end
216
+ if itemType == nil then
217
+ itemType = ITEM_TYPE_ANY
218
+ end
219
+ local id = chooseRandomItemExWithFilter(
220
+ itemType,
221
+ level,
222
+ convertEquipmentType(equipmentType),
223
+ convertItemTag(tag)
224
+ )
225
+ return id ~= 0 and id or nil
226
+ end
227
+ function Item.prototype.consumeCharge(self)
228
+ return self:consumeCharges(1)
229
+ end
230
+ function Item.prototype.consumeCharges(self, count)
231
+ local handle = self.handle
232
+ local charges = getItemCharges(handle)
233
+ if charges > count then
234
+ setItemCharges(handle, charges - count)
235
+ invoke(itemChargesChangeEvent, self)
236
+ return true
237
+ end
238
+ if charges == count then
239
+ if getItemBooleanField(handle, ITEM_BF_PERISHABLE) then
240
+ self:destroy()
241
+ return true
242
+ end
243
+ if not getItemBooleanField(handle, ITEM_BF_ACTIVELY_USED) then
244
+ setItemCharges(handle, 0)
245
+ invoke(itemChargesChangeEvent, self)
246
+ return true
247
+ end
248
+ setItemCharges(handle, 1)
249
+ local ____doAbilityActionForceDummy_2 = doAbilityActionForceDummy
250
+ local ____opt_0 = self.owner
251
+ ____doAbilityActionForceDummy_2(handle, ____opt_0 and ____opt_0.handle, consumeCharge)
252
+ invoke(itemChargesChangeEvent, self)
253
+ return true
254
+ end
255
+ return false
256
+ end
81
257
  function Item.prototype.addAbility(self, abilityTypeId)
82
258
  local nativeAbility = doAbilityAction(self.handle, ____exports.addAndGetAbility, abilityTypeId)
83
259
  if nativeAbility ~= nil then
84
260
  local ability = ItemAbility:of(nativeAbility, abilityTypeId, self)
85
261
  local abilities = self[100]
86
- local luaIndex = #abilities + 1
87
- abilities[luaIndex] = ability
88
- self[101][abilityTypeId] = luaIndex
262
+ abilities[#abilities + 1] = ability
89
263
  return ability
90
264
  end
91
265
  return nil
92
266
  end
93
267
  function Item.prototype.removeAbility(self, abilityTypeId)
94
- local luaIndexByAbilityTypeId = self[101]
95
- local luaIndex = luaIndexByAbilityTypeId[abilityTypeId]
96
- if luaIndex ~= nil and doAbilityAction(self.handle, itemRemoveAbility, abilityTypeId) then
97
- luaIndexByAbilityTypeId[abilityTypeId] = nil
98
- local abilities = self[100]
99
- abilities[luaIndex]:destroy()
100
- local abilityTypeIdsLength = #abilities
101
- for j = luaIndex, abilityTypeIdsLength do
102
- abilities[j] = abilities[j + 1]
268
+ local abilities = self[100]
269
+ for i = 1, #abilities do
270
+ if abilities[i].typeId == abilityTypeId then
271
+ local ability = abilities[i]
272
+ tableRemove(abilities, i)
273
+ ability:destroy()
274
+ return true
103
275
  end
104
276
  end
105
- return false
277
+ return doAbilityAction(self.handle, itemRemoveAbility, abilityTypeId)
106
278
  end
107
279
  function Item.prototype.hasAbility(self, abilityTypeId)
108
- return self[101][abilityTypeId] ~= nil
280
+ return doAbilityAction(self.handle, getItemAbility, abilityTypeId) ~= nil
109
281
  end
110
282
  function Item.prototype.getAbility(self, abilityTypeId)
111
- local ability = self[101][abilityTypeId] ~= nil and doAbilityAction(self.handle, getItemAbility, abilityTypeId)
112
- return ability and ItemAbility:of(ability, abilityTypeId, self) or nil
113
- end
114
- function Item.getInRange(self, pos, range)
115
- local collection = {}
116
- SetRect(
117
- enumRect,
118
- pos.x - range,
119
- pos.y - range,
120
- pos.x + range,
121
- pos.y + range
283
+ return ItemAbility:of(
284
+ doAbilityAction(self.handle, getItemAbility, abilityTypeId),
285
+ abilityTypeId,
286
+ self
122
287
  )
123
- EnumItemsInRect(
288
+ end
289
+ function Item.getInRange(self, x, y, range)
290
+ targetCollection = {}
291
+ targetCollectionNextIndex = 1
292
+ centerX = x
293
+ centerY = y
294
+ enumRange = range
295
+ setRect(
124
296
  enumRect,
125
- nil,
126
- function()
127
- collection[#collection + 1] = self:of(GetEnumItem())
128
- end
297
+ x - range,
298
+ y - range,
299
+ x + range,
300
+ y + range
129
301
  )
130
- return collection
302
+ enumItemsInRect(enumRect, nil, collectIntoTargetRange)
303
+ return targetCollection
131
304
  end
132
305
  function Item.getInRect(self, rect)
133
- local collection = {}
134
- EnumItemsInRect(
135
- rect.handle,
136
- nil,
137
- function()
138
- collection[#collection + 1] = self:of(GetEnumItem())
139
- end
140
- )
141
- return collection
306
+ targetCollection = {}
307
+ targetCollectionNextIndex = 1
308
+ enumItemsInRect(rect.handle, nil, collectIntoTarget)
309
+ return targetCollection
142
310
  end
311
+ __TS__SetDescriptor(
312
+ Item.prototype,
313
+ "isEquipped",
314
+ {get = function(self)
315
+ return isItemEquipped(self.handle)
316
+ end},
317
+ true
318
+ )
319
+ __TS__SetDescriptor(
320
+ Item.prototype,
321
+ "isInBag",
322
+ {get = function(self)
323
+ return isItemInBag(self.handle)
324
+ end},
325
+ true
326
+ )
327
+ __TS__SetDescriptor(
328
+ Item.prototype,
329
+ "equipmentType",
330
+ {get = function(self)
331
+ return getHandleId(getItemEquipmentType(self.handle))
332
+ end},
333
+ true
334
+ )
335
+ __TS__SetDescriptor(
336
+ Item.prototype,
337
+ "tag",
338
+ {get = function(self)
339
+ return getHandleId(getItemTag(self.handle))
340
+ end},
341
+ true
342
+ )
343
+ __TS__SetDescriptor(
344
+ Item.prototype,
345
+ "color",
346
+ {
347
+ get = function(self)
348
+ return self[102] or PlayerColor.red
349
+ end,
350
+ set = function(self, color)
351
+ setItemColor(self.handle, color.handle)
352
+ self[102] = color
353
+ end
354
+ },
355
+ true
356
+ )
143
357
  __TS__SetDescriptor(
144
358
  Item.prototype,
145
359
  "typeId",
@@ -228,65 +442,55 @@ __TS__SetDescriptor(
228
442
  )
229
443
  __TS__SetDescriptor(
230
444
  Item.prototype,
231
- "dropOnDeath",
445
+ "dropsOnDeath",
232
446
  {
233
447
  get = function(self)
234
- return BlzGetItemBooleanField(self.handle, ITEM_BF_DROPPED_WHEN_CARRIER_DIES)
448
+ return getItemBooleanField(self.handle, ITEM_BF_DROPPED_WHEN_CARRIER_DIES)
235
449
  end,
236
- set = function(self, v)
237
- SetItemDropOnDeath(self.handle, v)
450
+ set = function(self, dropsOnDeath)
451
+ setItemDropOnDeath(self.handle, dropsOnDeath)
238
452
  end
239
453
  },
240
454
  true
241
455
  )
242
456
  __TS__SetDescriptor(
243
457
  Item.prototype,
244
- "droppable",
458
+ "canBeDropped",
245
459
  {
246
460
  get = function(self)
247
- return BlzGetItemBooleanField(self.handle, ITEM_BF_CAN_BE_DROPPED)
461
+ return getItemBooleanField(self.handle, ITEM_BF_CAN_BE_DROPPED)
248
462
  end,
249
- set = function(self, v)
250
- SetItemDroppable(self.handle, v)
251
- end
252
- },
253
- true
254
- )
255
- __TS__SetDescriptor(
256
- Item.prototype,
257
- "pawnable",
258
- {
259
- get = function(self)
260
- return IsItemPawnable(self.handle)
261
- end,
262
- set = function(self, v)
263
- SetItemPawnable(self.handle, v)
463
+ set = function(self, canBeDropped)
464
+ setItemDroppable(self.handle, canBeDropped)
264
465
  end
265
466
  },
266
467
  true
267
468
  )
268
469
  __TS__SetDescriptor(
269
470
  Item.prototype,
270
- "perishable",
471
+ "perishes",
271
472
  {
272
473
  get = function(self)
273
- return BlzGetItemBooleanField(self.handle, ITEM_BF_PERISHABLE)
474
+ return getItemBooleanField(self.handle, ITEM_BF_PERISHABLE)
274
475
  end,
275
- set = function(self, v)
276
- BlzSetItemBooleanField(self.handle, ITEM_BF_PERISHABLE, v)
476
+ set = function(self, perishes)
477
+ local handle = self.handle
478
+ local powerUp = isItemPowerup(handle)
479
+ setItemBooleanField(handle, ITEM_BF_PERISHABLE, perishes)
480
+ setItemBooleanField(handle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, powerUp)
277
481
  end
278
482
  },
279
483
  true
280
484
  )
281
485
  __TS__SetDescriptor(
282
486
  Item.prototype,
283
- "powerup",
487
+ "isPowerUp",
284
488
  {
285
489
  get = function(self)
286
490
  return isItemPowerup(self.handle)
287
491
  end,
288
- set = function(self, v)
289
- setItemBooleanField(self.handle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, v)
492
+ set = function(self, isPowerUp)
493
+ setItemBooleanField(self.handle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, isPowerUp)
290
494
  end
291
495
  },
292
496
  true
@@ -320,22 +524,6 @@ __TS__SetDescriptor(
320
524
  },
321
525
  true
322
526
  )
323
- __TS__SetDescriptor(
324
- Item.prototype,
325
- "usable",
326
- {
327
- get = function(self)
328
- return getItemBooleanField(self.handle, ITEM_BF_ACTIVELY_USED)
329
- end,
330
- set = function(self, v)
331
- local handle = self.handle
332
- local powerup = isItemPowerup(handle)
333
- setItemBooleanField(handle, ITEM_BF_ACTIVELY_USED, v)
334
- setItemBooleanField(handle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, powerup)
335
- end
336
- },
337
- true
338
- )
339
527
  __TS__SetDescriptor(
340
528
  Item.prototype,
341
529
  "visible",
@@ -526,10 +714,11 @@ __TS__SetDescriptor(
526
714
  "charges",
527
715
  {
528
716
  get = function(self)
529
- return GetItemCharges(self.handle)
717
+ return getItemCharges(self.handle)
530
718
  end,
531
719
  set = function(self, v)
532
- SetItemCharges(self.handle, v)
720
+ setItemCharges(self.handle, v)
721
+ invoke(itemChargesChangeEvent, self)
533
722
  end
534
723
  },
535
724
  true
@@ -551,12 +740,13 @@ __TS__ObjectDefineProperty(
551
740
  )
552
741
  __TS__ObjectDefineProperty(
553
742
  Item,
554
- "onDestroy",
743
+ "destroyEvent",
555
744
  {get = function(self)
556
745
  return self.onDestroyEvent
557
746
  end}
558
747
  )
559
- local getManipulatedItem = GetManipulatedItem
748
+ Item.deathEvent = itemDeathEvent
749
+ Item.chargesChangedEvent = itemChargesChangeEvent
560
750
  local trigger = CreateTrigger()
561
751
  TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_PICKUP_ITEM)
562
752
  TriggerAddAction(
@@ -8,6 +8,6 @@ local DURATION_NORMAL_ABILITY_FLOAT_LEVEL_FIELD = ____ability.DURATION_NORMAL_AB
8
8
  -- @internal For use by internal systems only.
9
9
  ____exports.getAbilityDuration = function(ability, target)
10
10
  local level = ability.level
11
- return target ~= nil and target:hasClassification(UnitClassification.RESISTANT) and DURATION_HERO_ABILITY_FLOAT_LEVEL_FIELD:getValue(ability, level) or DURATION_NORMAL_ABILITY_FLOAT_LEVEL_FIELD:getValue(ability, level)
11
+ return target ~= nil and (target.isHero or target:getField(UNIT_IF_LEVEL) >= 6 or target:hasClassification(UnitClassification.RESISTANT)) and DURATION_HERO_ABILITY_FLOAT_LEVEL_FIELD:getValue(ability, level) or DURATION_NORMAL_ABILITY_FLOAT_LEVEL_FIELD:getValue(ability, level)
12
12
  end
13
13
  return ____exports
@@ -74,9 +74,12 @@ ____exports.castAbility = function(nativeUnit, abilityTypeId, prepareAbility, ..
74
74
  unitRemoveAbility(nativeUnit, INVENTORY_ABILITY_TYPE_ID)
75
75
  if latestInventoryAbilityTypeId ~= 0 then
76
76
  unitAddAbility(nativeUnit, latestInventoryAbilityTypeId)
77
- for slot, nativeItem in pairs(nativeItemBySlot) do
78
- unitAddItem(nativeUnit, nativeItem)
79
- unitDropItemSlot(nativeUnit, nativeItem, slot)
77
+ for slot = 0, inventorySize - 1 do
78
+ local nativeItem = nativeItemBySlot[slot]
79
+ if nativeItem ~= nil then
80
+ unitAddItem(nativeUnit, nativeItem)
81
+ unitDropItemSlot(nativeUnit, nativeItem, slot)
82
+ end
80
83
  end
81
84
  end
82
85
  end
@@ -0,0 +1,13 @@
1
+ local ____exports = {}
2
+ local disableAbility = BlzUnitDisableAbility
3
+ ---
4
+ -- @internal For use by internal systems only.
5
+ ____exports.increaseAbilityDisableCounter = function(unit, abilityTypeId, times)
6
+ for _ = 1, times do
7
+ disableAbility(unit, abilityTypeId, true, false)
8
+ end
9
+ for _ = times, -1 do
10
+ disableAbility(unit, abilityTypeId, false, false)
11
+ end
12
+ end
13
+ 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.damageMetadataByTarget = setmetatable({}, {__mode = "k"})
5
+ return ____exports
@@ -0,0 +1,2 @@
1
+ /** @noSelfInFile */
2
+ export {};